I did an in-place upgrade to Windows 10 from Windows 8.1 Pro a while back. Shortly after that, I went to the Hyper-V Manager to start a couple of the VM's I've put together over time. One of them refused to start, citing a failure to load an AVHDX file. Some Google results suggested deleting the saved state, but that VM had no saved state. Upgrading the configuration version did nothing. All useful changes to the VM's settings failed because of the inability to load the virtual hard disk. I tried deleting the checkpoints (which seemed to be the locus of the problem), but got the same error.
None of the Things On The Internet that I could find worked. Since it wasn't a super important VM, I just deleted it and reinstalled it fresh from the ISO I still had.
Various technical articles, IT-related tutorials, software information, and development journals
Wednesday, August 31, 2016
Tuesday, August 30, 2016
ADMX support definitions can reference other support definitions
I just did some science on the "Limit the maximum network bandwidth for BITS background transfers" policy setting to see if the real Group Policy Editor actually resolves references to support definitions from other support definitions. I filtered the policies for ones that support Windows XP SP2 (which is only attached to that policy setting via a referenced support definition), and that one showed up. Therefore, the Group Policy Editor can handle cases like these.
I'll have to change Policy Plus's AdmxBundle class to try to fold referenced definitions into containing ones. Alternatively, I could adjust the support definition class to be able to hold a list of mentioned definitions, then the component that actually cares about support would be responsible for avoiding infinite loops or stack overflows.
I'll have to change Policy Plus's AdmxBundle class to try to fold referenced definitions into containing ones. Alternatively, I could adjust the support definition class to be able to hold a list of mentioned definitions, then the component that actually cares about support would be responsible for avoiding infinite loops or stack overflows.
Monday, August 29, 2016
Removing domain user profiles from a Windows machine
Local accounts can easily be removed in the appropriate section of the Control Panel. How to remove domain profiles, though, is not nearly so obvious. This is how to completely remove an arbitrary user profile:
- Open the System control panel section (not the Metro one)
- Open the "advanced system settings"
- On the Advanced tab, click the Settings button in the User Profiles group
- Select the target profile and click Delete
The dialog will take a while to load. I think Windows goes through the contents of each profile to calculate its size, which is an expensive operation. It's a little bizarre, in my opinion, that there are two versions of this dialog, only one of which is useful in any way. Typing "user profiles" into the Start menu's search box will produce one that's missing almost all the profiles.
Searching for "user profiles" brings you the left version, while going through the System control page produces the right one.
Sunday, August 28, 2016
Policy Plus - Details
Today I made a handful of small information-displaying forms, one for each type of policy object. These forms contain internal information from the ADMX files, like display code, unique ID, or source file. The unique ID is particularly useful because, for categories and policies, it can be used in the Find by ID window. The other info is just nice to have, it saves you from having to poke through the ADMX files to find something.
I also added a context menu to the categories tree and the category listing in the main form. It currently contains only Open or Edit (for categories and policies, respectively), plus Details, which produces the appropriate details form.
While testing, I found that the ADMX files occasionally contained support definitions defined in terms of other support definitions. I'm pretty sure the real Group Policy Editor ignores those, so I had to Support Details window display such entries as their ID (as opposed to crashing).
The changes are live on GitHub.
Next, I'll see about adding an inspection window for policies' Registry values.
I also added a context menu to the categories tree and the category listing in the main form. It currently contains only Open or Edit (for categories and policies, respectively), plus Details, which produces the appropriate details form.
While testing, I found that the ADMX files occasionally contained support definitions defined in terms of other support definitions. I'm pretty sure the real Group Policy Editor ignores those, so I had to Support Details window display such entries as their ID (as opposed to crashing).
The changes are live on GitHub.
Next, I'll see about adding an inspection window for policies' Registry values.
Saturday, August 27, 2016
Running PowerShell on Ubuntu
A while ago, Microsoft open-sourced PowerShell and made it cross-platform. You can download the appropriate installation package on the Releases page of that GitHub repository. For instance, if you want to install it on Ubuntu 14.04, you would download the DEB file and run these commands:
sudo apt-get install libunwind8 libicu52
sudo dpkg -i powershell_6.0.0-alpha.9-1ubuntu1.14.04.1_amd64.deb
Oh, and in case you're wondering, you can totally run it in Bash on Ubuntu on Windows 10.
sudo apt-get install libunwind8 libicu52
sudo dpkg -i powershell_6.0.0-alpha.9-1ubuntu1.14.04.1_amd64.deb
Oh, and in case you're wondering, you can totally run it in Bash on Ubuntu on Windows 10.
![]() |
It's a little confused about the cursor position, but it runs! |
Friday, August 26, 2016
Artificial Intelligence Stack Exchange is up and running
About three weeks ago, the Artifical Intelligence Stack Exchange site proposal launched into private beta. We've had a good amount of activity since then, and though there is still a little disagreement about scope, we're working through it. Four days ago, Stack Exchange gave us the green light to continue into public beta! This phase will last for at least a few months, after which we'll become a full, graduated, visually-styled site on the network.
You can visit the site at ai.stackexchange.com.
You can visit the site at ai.stackexchange.com.
Thursday, August 25, 2016
Markeen - Smart profiling with splitters
Yesterday, I saw that a lot of the exposure of platform inner tiles to air was allowed by the original levels. Since the profiler wasn't aware of the level-splitting infoplane bars, it thought those things were really supposed to be together. So today, I wrote a routine that breaks a given level apart into the visible regions. (To test it, I added a new subcommand - "explode" - that splits every level into its regions.) That routine is used before profiling each level, and it has improved output quality at least a little.
I continued trying to improve the erasure routine. It now tries several times to erase a 5x5 centered on each failed tile, but that still doesn't do the trick. I experimented with switching fill orders after the initial pass, but got no noticeable improvement. I tried changing the scoring mathematics again, but just got worse levels no matter which way I adjusted the base (originally 2) of a certain exponentiation.
Since a smart filling pattern is probably an important thing I should do, I refactored the probabilistic single tile placer out of the inner loop into a lambda so it can be called from different places easily. I have an idea here that might dramatically improve output quality.
Finally, I added a seed-setting feature, so the user can optionally provide a /seed=314 switch to specify the RNG's starting value. I tested it and Markeen can now regenerate a level set when given the same seed.
Time for more pictures!
I continued trying to improve the erasure routine. It now tries several times to erase a 5x5 centered on each failed tile, but that still doesn't do the trick. I experimented with switching fill orders after the initial pass, but got no noticeable improvement. I tried changing the scoring mathematics again, but just got worse levels no matter which way I adjusted the base (originally 2) of a certain exponentiation.
Since a smart filling pattern is probably an important thing I should do, I refactored the probabilistic single tile placer out of the inner loop into a lambda so it can be called from different places easily. I have an idea here that might dramatically improve output quality.
Finally, I added a seed-setting feature, so the user can optionally provide a /seed=314 switch to specify the RNG's starting value. I tested it and Markeen can now regenerate a level set when given the same seed.
Time for more pictures!
Subscribe to:
Posts (Atom)