Last September, my primary desktop PC at home (built 2008), running Windows 7 64-bit, started exhibiting a strange set of symptoms: The system would boot up normally, but after that, certain operations, particularly operations needing to read from the hard drive, would take far longer than normal. For example: - Pressing Ctrl+S (Save) from Notepad would take a full minute to display the Save dialog, but the file would save normally after that;
- Copying files between the two internal hard drives (C: and D:) worked, but took about 20x as long as normal;
- Applications would sometimes take a very long time (1-2 minutes) to initially start;
- The game “Torchlight 2” would start, but the “loading” screen would never go away, and the background music looped abnormally, playing the same segment of music over and over again every 5-6 seconds.
- These problems would all seemingly get worse over time, until I rebooted the PC.
Not having run across an issue like this before, I tried quite a few different troubleshooting steps: Troubleshooting Step Tried | Outcome | Warm boot (restart the PC) | No effect | Cold boot (power off and then power on the PC) | No effect | Windows System Restore | Failed, with a “Failure restoring registry” error | chkdsk /f (“Check disk” utility from the command prompt, with the “fix” parameter) | Ran ok and reported no errors for either C: or D: | Ran the Windows built-in RAM diagnostic | Ran ok and reported no issues | Virus scan with Microsoft Security Essentials | Ran ok and reported no issues | Reseated hard drive SATA cables for both drives | No effect | Killed various processes via Task Manager (suspecting a virus?) | No effect | Disconnected the D: drive (the non-boot data drive) | No effect | Booted into Safe Mode | No effect – Slowness issue occurred even in Safe Mode | Ran System Restore from Windows bootable CD | Failed, same as when running System Restore from Windows itself | Finally, with other options exhausted, and uncertain whether the root cause might be a software issue with Windows itself, I took the extreme step of “repaving” the PC: Formatting the C: (boot drive) and reinstalling Windows 7. Doing that actually did initially seem to solve the problem; Windows installed with no issues on the reformatted C: drive, and I was able to reinstall and use all of my applications – for a time. Unfortunately, in January, the exact same issue suddenly started manifesting again. The PC would boot ok, and run okay for a few minutes, but then suddenly certain operations like opening new applications or saving files would suddenly start taking far longer than normal. Further, the problem started getting worse across reboots (as I ran through various troubleshooting steps), eventually to the point where Windows would hang while starting up. This time, suspecting a hardware problem with the C: drive, I took a troubleshooting step that I hadn’t tried previously: I powered off the PC, disconnected the C: drive, and powered the PC back on. Although I wouldn’t normally recommend running a PC this way, I actually had an old bootable install of Windows Vista sitting on the D: drive. With the normal boot disk (C:) disconnected, D: became the boot disk, and the old Vista install booted right up. (I also physically disconnected the PC’s network card before doing this, not wanting to run afoul of any potential 2013 security issues that a circa-2009 instance of Vista might not be equipped to handle.) Playing with the Vista install running off the D: drive, I obviously couldn’t really test any non-trivial applications, but the Windows desktop itself was actually usable enough, and exhibited no signs of the slowness issue that the exact same PC configuration, except with the C: drive connected, had been showing. From this, I tentatively concluded that the issue was a physical problem with the C: hard drive – one that my earlier chkdsk and other diagnostic measures targeted at the hard drive hadn’t picked up for whatever reason. So I set aside the old, presumably bad, C: drive. Then – figuring I might as well get a system upgrade out of this whole ordeal! – I ordered a speedy new hard drive, a Crucial m4 128GB 2.5-Inch SATA 6Gb/s Solid State Drive (SSD) (model CT128M4SSD2 - $116 on Amazon.com as of 3/2013), to serve as the new C: boot disk. Once the drive arrived, I connected it, once again installed Windows 7, re-installed my applications, and the system is once again running great! It’s been about 2 months now since the second instance of the “slowness” issues happened, and not only have there been no signs of it returning, but the system now boots faster than ever with the new SSD serving as the boot disk. I’ll update this post should the slowness issue ever return – but if you don’t see any updates to this post, you can assume that things are still running smoothly -- or that this PC was retired without this issue ever re-occurring!
This morning I ran across a minor bug with the Windows common “Save As” dialog. I ran across the bug in the Chrome browser, and then was able to reproduce it using plain old Windows Notepad (notepad.exe). Bugs like this in common Windows components are rare enough that I figured it was worth a quick blog post. Steps to reproduce: 1. Open the Save As dialog for an application. (In my example, I opened a file named “myfile.txt” in Notepad, then did File | Save As.) 2. Navigate to a directory that already contains a file with the same name as the file to be saved.  3. In the Save As dialog, create a new folder, e.g. by clicking the “New folder” button. 4. Still in the Save As dialog, drag the existing copy of the file to the new folder to move it there.  5. Click the Save button. At this point, I would expect Windows to just go ahead and save the file. However, at this point Windows puts up a “File already exists. Do you want to replace it?” confirmation message, as if the existing copy of the file had not already been moved out of the way.  This is only questionably a “bug,” since it doesn’t really hurt anything by happening, other than possibly causing some minor surprise/confusion on the part of the user, who may think they didn’t actually move the original copy of the file as they had intended. I assume this is happening because the dialog is doing some kind of caching of the contents of the destination folder at the time the folder is opened, and then not actually comparing against the actual contents on disk again at the time that the user clicks the Save button. I encountered this on Windows 7 (Pro, 64-bit). I’m not sure whether or not this also happens on other Windows versions. Obviously this “bug” is not a big deal at all, but irrespective of the occasionally-questionable popular perception of the quality of Microsoft products, I find Windows 7 to be generally pretty rock-solid stable when it comes to basic day-to-day operations (as it should be), so I was surprised to observe this behavior. I wonder if this is “working as intended,” or if Microsoft actually would consider this a bug?
Earlier this month I attended a one-day Agile software development class at The Forge by Pillar in Ann Arbor. A few of my teammates from work attended the class with me; the class ended up having around 25 attendees total, with maybe a third of those being developers. On the morning of the class, we learned that as part of the activities of the day, we would be implementing a functional clone of a classic arcade game of our choice (Pac-Man, Space Invaders, Centipede, etc.), using a tool called Scratch, in 3 20-minute development sprints. This initially struck me as aggressive -- a new game, complete with graphics, written starting from scratch, done in not a day, but in 60 minutes? I suggested to my team that we do an implementation of Frogger, as that struck me as being relatively straightforward to implement. The instructor then went on to ask if we had any "spikes" (unknowns that would merit taking time to do a proof-of-concept, if this were a real project) regarding the Scratch tool that we'd be using for development that he could answer for us prior to the first development sprint. Not having been familiar with Scratch prior to taking this class, I found it difficult to come up with any questions more specific than "Um, what exactly is Scratch, and how does it work?" (I did come up with some better questions such as "How does sprite collision detection work in Scratch?" but the point here is that it was hard to even ask questions about a framework that I wasn't familiar with.) After writing up user stories (requirements) with my team, the class instructor did a quick demo of the Scratch tool; then, the first development sprint started, and I was able to get hands-on with the Scratch tool for the first time. Within just the first couple of minutes of that first development sprint, I had a far better idea of what Scratch was, what it could do, and how long it would take to do things with it. In short, Scratch allows you to set up sprites (characters, objects) on a playing field, and then manipulate them via a simple "drag-and-drop" event-driven programing framework.  This experience was striking as an illustration of the additional accuracy with which a project can be estimated, and how much better specific "unknowns" about an implementation can be identified, after there has been an opportunity for the development team to get some hands-on engagement on the project – particularly in projects involving a language or framework that is new to the development team prior to the project.
What’s my favorite technology purchase that I’ve made in the past 2 years? It’s my iPad Pocket Edition; I also like to call it my $0-monthly-fee iPhone. That is, my iPod Touch.  My iPod Touch (or “iTouch” for 33% less syllables) has become one of the items that are always in my pants pockets when I leave the house in the morning, along with my keys, wallet, and phone. Why do I like the iTouch so much? When I’m in a wi-fi zone – which in a typical day for me, I am in much more often than not – it can do essentially everything an iPhone can do except make phone calls. It’s amazing to have the following readily available from a device I carry my pocket, almost all of which are free or very inexpensive: - Web browser
- Calendar with cloud sync
- Music (mp3 player, Pandora), Podcasts
- To-do list with cloud sync (Appigo Todo)
- Clock / stopwatch /countdown timer
- Games (tons of great, inexpensive options)
- Physical game aids like 7 Wonders Scorer
- Support for 99% of iPhone apps in the App Store
| | Insofar as they affect me, there are only three real major “missing features” affecting the iPod Touch as compared to an iPhone: Can’t make or receive phone calls. I work around this by carrying, in addition to the iTouch, a nice compact “dumbphone,” the Samsung Hue, for which I have a prepaid plan with Verizon that gets me phone service for a grand total of $7.50/month. I get very few minutes for that price, but since I only use this phone for quick calls to home and for emergency purposes, I’ve never come close to running out of minutes. No Internet access outside of wi-fi zones. This is occasionally bothersome, but only very occasionally; typically a couple of times per month when waiting to pick up a pizza or to get a haircut. For the significant cost savings vs. a full phone and data plan – more on that below – it’s certainly something that I can live with. And many apps have good “offline mode” support – implemented mostly to cater to iPhone users on airplanes, but working just fine for iPod Touch owners too. No GPS. When I take an occasional long trip alone to an unfamiliar place, I do notice the lack of GPS capability, but it’s nothing that can’t be worked around “the old fashioned way” by just printing directions off the Internet before leaving. (How did people find their way around before the Internet?) On vacations, I’m pretty much always travelling with my wife, and we do spring for a smartphone for her – as a so-called “stay at home mom” she’s actually out and about on a daily basis far more than I am – so we just use her phone’s GPS. If I travelled alone more often, I’d make a one-time purchase of a standalone GPS device for the car. The cost savings vs. an iPhone are, to me, well worth the minor drawbacks: | iPod Touch 4th Gen (32 GB) + Prepaid dumbphone | iPhone 4S (32 GB) | Up-front hardware cost | $275 + $50 = $325 | $300 | Monthly fee | $0 + $7.50 = $7.50 | $70 | Total over 2 years | $325 + ($7.50 * 24) = $505 | $300 + ($70 * 24) = $1980 | About $1500 to spend however I like, in return for a couple of (for me) minor drawbacks? Yep. I’m in. I like the iPod Touch enough that even though I’ve had my current 4th Gen iTouch for only about a year and a half, I’m also in for another $300 on the new iPod Touch 5th Gen that was announced earlier today. To paraphrase a tip from @shanselman, it’s worth spending money on something that you’re going to get heavy use out of every day – and for me, the iPod Touch is that. And at an amortized cost of under $13/month over the next two years, I consider it a bargain.
Depending on who you ask, Google Chrome is the world’s most popular browser here in mid-2012. It’s fast, lightweight, and standards-compliant. However, Chrome has one major (for me) issue that will prevent me from ever using it as my primary browser: The lack of any way to modify the behavior of the Ctrl+Tab keyboard shortcut to switch between tabs. Like the other leading desktop web browsers Firefox and Internet Explorer, the default behavior of the Ctrl+Tab keyboard shortcut in Chrome is to switch between tabs in left-to-right order. I’ve believed for years that this behavior is inefficient at best, and the default switch order for Ctrl+Tab should be most-recently-used (MRU) order. The default left-to-right Ctrl+Tab switch order makes it impossible to quickly use the keyboard to toggle back and forth between two tabs when there are multiple tabs open. Left-to-right order is also inconsistent with the long-established MRU order for the keyboard shortcut for switching between open applications (Alt+Tab in Windows and many Linux distributions; Command+Tab in OSX). Unlike Firefox and Internet Explorer, however, Chrome offers no way to change the default Ctrl+Tab behavior, even via add-ons / extensions. To compare the three leading desktop browsers: - Firefox: Has an excellent addon called LastTab which has a great implementation of MRU Ctrl+Tab behavior (including an Alt+Tab-like preview window of the tabs arranged in MRU order);
- Internet Explorer: Has a “Use most recent order when switching tabs with Ctrl+Tab” checkbox in its Advanced Options settings;
- Chrome: There’s no configuration setting to change the Ctrl+Tab behavior. The Ctrl+Tab key combination apparently is defined as “reserved,” so extensions can’t change its behavior either.
There’s a long-standing (2008) Chromium bug, Issue 5569, logged for Chrome’s Ctrl+Tab behavior; however, it was marked as “WontFix” shortly after it was opened. Google does acknowledge the demand for MRU switching behavior in a brief statement on the Chromium project’s User Experience > Tabs page: Ctrl+Tab, Ctrl+Shift+Tab, Ctrl+PgUp and Ctrl+PgDn can all be used to switch back and forth between tabs. While there is great demand for an MRU-ordered switcher, we've so far been unable to find an MRU switcher that makes sense beyond the first three most recent tabs, or one that works well with background-created tabs. I’m somewhat bemused by this statement; there are many good reference implementations of MRU switching order available. One specific example is the LastTab Firefox extension mentioned above; I’ve used that for years and have been very happy with it. If you’d like to add your vote to this issue, feel free to head over to Chromium Issue 5569 and “star” the issue and/or leave a comment. This issue is a deal-breaker for me to consider adopting Chrome as my primary desktop web browser – Chrome’s benefits don’t outweigh the potential several-times-per-day productivity hit of not being able to rapidly and easily toggle between two specific browser tabs. In the meantime, I’m happy to continue using Firefox as my own primary browser. In occasional situations where I do need to use Chrome and have multiple web pages open, going old school and opening each web page in its own browser window (instead of using multiple tabs) is a tolerable workaround (since that lets me use the operating system’s MRU window switching behavior to rapidly toggle back and forth between two windows as needed).
|
|