Welp, 1.0.3 was a total fubar. Loaded it at work and it hung straight away. Fixed the hanging issue, put more diagnostics. Hopefully I’ll get closer and closer to making it work just right.
So I’ve updated yet another version of the PersistentWindows app, but this update is literally nothing but better logging, so that I can figure out what’s going on in various instances. I would love the logging output to help isolate the root cause and then I could move on to the convenience features.
Also, I’ve publish the code on CodePlex if anyone would like to contribute or are just generally interested.
I would love to make a video on this, but man it’s hard being a Dad, a Husband and a workaholic. I’ve missed this month, but maybe during my Thanksgiving break I can squeeze out a random coding video.
Made a few changes that you can find in the release notes. What’s pretty awesome is that I posted this app as a solution in StackExchange’s Super user and it was well received by the OP. Enough, in fact where not only did he mark it as a solution, he also wanted to contribute in resolving the other edge case issues. So I’ll eventually plop on CodePlex and hopefully solve one of the world’s tiny problems 🙂
So I’ve been using the utility at work and it sometimes works and sometimes doesn’t. I’ve noticed a few issues
- Occasional race conditions occur when the monitor changes so I’ve improve the logic on resolution detection.
- I’ve also modified the little GUI to provide a bit more informative feedback.
- Improved the handler on maximized windows
Finally, I’ve also noticed that sometimes it doesn’t move a few windows and I was spinning the wheel a while to figure out why. Turns out those processes were running in admin, so if you want those restored, you have to run the utility as admin as well.
Slowly and surely, I’ll continue to improve the product.
Good night world!
It is lean and nasty…. but it does the job. I’ve already got a few ideas to make it more convenient, but Diablo 3 calls my name.
Check it out @ http://www.ninjacrab.com/persistent-windows/
So, I’m having an issue at work with my display setup. I have three monitors connected to my workstation, two via DisplayPort and one via DVI. Every time the monitors go to sleep it does the following:
- Windows gets a signal that the monitor has been disconnected
- Windows then re-arranges the windows that I had on the display port monitors to a desktop that it considers active(The DVI monitor)
When the monitor wakes up, I have to re-arrange my windows back to where I want them and this is an incredibly annoying task, especially as I take numerous coffee and bio breaks daily.
This is not special to any graphics card and there are numerous posts on this issue. This is the behavior of display port as it’s supposed to be “Plug and Play”. if I pull out the cable, that makes sense. However, powering off shouldn’t exhibit the same behavior as unplugging. Nvidia has a solution implemented in their drivers, that basically stores the monitor information and brute forces the state of the screen. However, I’ve got an AMD card on my workstation and it currently has no solutions.
So what’s my solution? I’m going to write one for a Random Coding project. I’ll have it freely available to download and will have a little bit of a video on the usage of it. While it may be interesting recording writing it from scratch and the dev journal, my schedule is insanely fragmented these days with two little boys and it would be hard to record as most of the days I’ll work on the project, lighting and my voice has to be low to let those guys sleep.
So MVP specs to get something out the door. Begin by building a polling implementation application that’s manually started with a window. Later we’ll try to find the right windows events, make it event driven and modify it to be a task tray application.
- Create a hash of the desktop display metrics as the key and a list of the window display metrics as a value
- Poll Number of monitors and screen resolutions and store as desktop display metrics
- Every second scan all windows and store window display metrics
- If the desktop display metrics change, check if the desktop hash key exists
- If it exists restore window positions.
- If it doesn’t store new positions of all windows
So it’s been a little while as I’ve been busy assisting my beautiful wife on some projects she’s had, I’ve been at the tail end of a working marathon and finally I was on vacation last week. However, I’ve got a bit of free time now and I wanted to share an interesting downside of distributed version control systems.
Sometimes, you’ll have team members who will carelessly deposit massive multi-megabyte files, they’ll alter it to store more multi-megabyte files. These files then duplicate everywhere and make merging insanely painful from the sheer size.
There are solutions to this problem, but it’s a multi-step process that involves a priest, a rabbi, a shaman, 6 shots of vodka and a jump rope.
With that said, this isn’t entirely the same problem in a remote version controlled repository like Subversion. If some unrelated branch has all of the megafiles, you’re not sitting there staring at the progress indicator, scrolling in a pattern that seems like an infinite loop when you have to clone the repository.
So while, it won’t change our decision on what we’re using, it’s good to know and handy to monitor carefully as it will impact all of your team’s productivity.
So I’ve reach a small milestone of 100 YouTube subscribers! Besides the one or two friends that I have, most of them have discovered me either via the TopCoding video 1 or the RandomCoding Visual Studio snippets video.
After creating another 4 TopCoding videos, neither seemed to have the reigning success of the first video.
The Random Coding video 2 had a decent number of views because it was a difficult solution to find and I posted it on StackOverflow. However, all others are relatively unpopular.
I’d like to increase the reach of my videos, but I don’t want to radically change the intent. I want my videos to all be related to programming, yet have some entertaining spin.
I’ll start thinking of some ideas for May, but want to spend most of my energy on Conflicademia.
If any of you do have suggestions, I’m all ears!
So I’ve made a few updates to the arcade mode shooter. There have been a number of delays as the progress isn’t substantially great. I’ve written new movement path logic for the enemies to come down the screen. I’ve created about 35 seconds worth of level 1 following the patterns of some old school shooters.
Dumb drones that fly down from the right, then left, the right again. You get the gist. I’ve also altered the enemy test factory to generate larger enemies with more health. Feel free to head on to the Conflicademia page and give it a whirl. To attack, don’t forget to perform a swipe up-ish motion with the mouse by clicking and dragging in an upward motion.
So other than the game, I recently purchased a Nokia Lumia 925 Windows Phone that was on sale on Newegg for $200. Directly from T-Mobile it’s $408 so I thought it was a good deal and after watching the numerous webcasts from Microsoft Build 2014, I thought it would be nice to test the platform out.
To sum up my experiences, 8.0 does not hold itself well against Android. However with the 8.1 developer preview update, my Galaxy Note 3 has literally sat on my desk doing nothing. I’m currently dual wielding the devices, just in case there is some missing feature that I need. However, I’m actually starting to grow fond of this little device.
So even though 8.1 does enough to hold it’s own for me, your average bear, who is still running 8.0 probably is agonizing until the official launch. Microsoft really needs to hurry!
In 8.0 there are a number of annoyances that would have prevented me from actively using it outside of experimentation, but the update handled most of the items. There are still a few things that would prevent me from choosing it as my primary phone platform.
- Inaccuracy – I had to stop by and run an errand on “21 West St”, in which Google maps perfectly discovered the location. Unfortunately, Bing/Here either selected the wrong city and sometimes couldn’t even find it with the city
- No mass transit (using subways) directions in the stock maps app
- Humorously when you update to 8.1 and as you launch maps it even recommends an app GMap+, which loads it’s data from Google maps.
- Google Hangouts Client – This is actually my own fault. When Google introduced the idea of using hangouts as your sms client, it was great, but then it blended the lines between using gchat or sms. So when someone sent me a message on gchat, I no longer got it on this phone.
- Browser incognito mode – Because, when I e-stalk you, I don’t want that record on my phone
If any of you have a Windows Phone and solutions or work arounds, I’m all ears.
My ~7,000,000,000 or so loyal readers were impacted last night(Ok really, I’m probably the only person that reads this blog) as my web hosting provider was down for about 12+ hours. So what I wanted to blog about last night is now your reading pleasures for tonight.
I finally replaced my primary drive(Crucial M4 256G SSD) that I purchased in 2011 with a fancy new Samsung 840 evo 500G. I paid about $150 less for this drive as well. It’s amazing how much the price of these drives have gone down. I’m now eagerly anticipating the release of the Intel 5960X for a long deserved refresh of my desktop.
However as an interim, with the drive migration, I also finally updated from Windows 7 to 8.1 Pro Update 2. Unfortunately even with this update, you still need ClassicShell to have the awesome “Program menu” interface that Microsoft created so long ago.
I’ve been re-installing software and configuring stuff for the last day and a half, so I finally just got Conflicademia re-compiling and deploying to my phone as well as this awesome site.
I made a tiny change so that in arcade mode you can shoot, if you do the “swipe up” motion with the mouse. Got a lot of family stuff planned for this weekend, so the next update may be next week, but I’m hoping to have some decent progress on level one.
Bonne nuit et au revoir et je mange une mouche!