Archive for the ‘Uncategorized’ Category
Snowballs and dominos
It often seems hard for me to believe that the Windows Registry exists. It’s such a monolithically bad design and implementation that it simply boggles my mind. With such a creaking, doddering foundation, it’s no wonder that Windows is so unstable.
Bad decisions tend to cause snowball effects; that is, they eventually cause more and more problems and get worse and worse over time. Many of Windows’ most high-profile problems originate in some way from the bad decisions of the Registry. What are these bad decisions?
Here’s the biggest one: the Registry is series of huge, centralized databases. That means each component of it is one huge file, tucked away somewhere you’ll never find it. Databases have a lot going for them, but security and transparency aren’t two of them.
Databases tend to be prone to data corruption. Since they’re one big file, if part of that file gets corrupted, the whole thing is shot; this is why storing preferences in multiple files is a better idea. The logical solution to this data corruption problem would be to regularly back up the registry–say, every time it was changed. Wouldn’t that be nice? As a matter of fact, it does this, but it only keeps one, so you can’t roll back changes to anything beyond the previous backup.
The registry is also not very human-readable. You need a special program to even access it, and even then, its terminology is cryptic. HKCU? HKLM? Dword? Why all the hexadecimal values?
Finally, the registry’s design encourages developers to rely on it for everything. Let’s say, for example, that when an application installs itself it creates a registry key listing its location: “C\Program Files\ScumCo\ScumEdit\”. Well, I and many others hate the tendency of software to install itself in a folder named for its parent company, rather then its own name. So I opt to change its location. I grab the ScumEdit folder and move it back down a level into C\Program Files\, then delete the redundant ScumCo folder. But now we have problems! When I try to run ScumEdit, it mysteriously fails or throws up an ugly error message. Why? Because it consults the registry for its location, and the actual location differs from the listed one. Oopsie! Now I have to edit the Registry to make my change reflected in the database. Fun fun fun.
Moving things in Windows that you didn’t specifically put there yourself is dangerous for precisely this reason. With the advent of the Registry in Windows 95, playing around with your computer became a minefield. But Microsoft came up with a solution: abstract everything! Suddenly, users didn’t need to navigate the filesystem; Windows 95 also debuted that big, pretty Start button that listed everything they had when clicked on. And that just solved everything!
Problem is, when users have no contact whatsoever with the filesystem because it’s an incomprehensible mess, it becomes easier for unwanted software to hide there. Ever looked inside an install of Microsoft Office? Subfolders within subfolders, lots of files with meaningless extensions, plenty of files with unreadable 8-character names, and a whole bunch that do both. Here’s what it looks like, by the way:

By contrast, here’s what a portion of my Mac OS X Applications folder looks like:

The abstraction required by the Registry’s deathgrip on information meant that users didn’t have to look at their operating system’s underbelly. In the absence of critical attention, mold started to grow there. Developers cared less and less how elegant their software’s installation routine was; after all, nobody would ever look at what happened. Scripting became more popular now that that pesky issue of users looking at what was happening was gone. Software began to use unofficial means to accomplish things.
Unfortunately, Malware took advantage of these developments. Poorly-conceived scripting environments made it easy for malware to automatically replicate, and huge folders full of files with bizarre incomprehensible names offered great places to hide. The Registry itself was a perfect place since it was hidden and inscrutable. Users knew less and less about the structure of their computers, while the malware developers knew more and more. Compounded with the problems of bad privilege control, open network ports, and hard-to-understand networking features, replicating to nearby machines and hiding there became a cinch. So naturally, it started to happen more and more. Suddenly, there was a full-blown security epidemic, and Microsoft was caught in the middle.
There were two options:
They could completely do away with all their poorly-designed insecure swiss-cheese-like OS holes by doing in the registry and starting from scratch, closing outbound network ports, properly separating user settings and programs from system settings and programs, and simplifying networking. The problem with this approach was that not only did it require fundamentally remaking most of Windows’ core, but it would also break compatibility with 100% of all existing Windows software, including their own! To bypass this, a sandboxed compatibility layer like Apple’s Classic during the Mac OS 9 to OS X transition would have been necessary, throwing up all sorts of other problems such as emulation, inter-process communication, and developer transition kits.
This effort would have taken years and years. If this was what they had decided was the best course of action, it probably would have been easier to pull an Apple and start over from a promising foundation owned by someone else. But what was available? Anything UNIX-based would certainly be mature enough, but its openness was utterly contrary of Microsoft’s corporate identity and business models of monopoly dominance and vendor lock-in. BeOS was dead, Solaris was becoming open-source, and Mac OS X was already used by a competitor. There really wasn’t anything for them to take and re-brand.
That left the sticky option of somehow retrofitting Windows to be more secure without breaking compatibility with existing software. Thus, the Registry and most other existing attack vectors for malware had to stay. Instead, Microsoft worked on locking down these vectors; in Vista, Internet Explorer 7 has a “sandboxed” mode where it is isolated from other operating system components, and other applications are more isolated from each other as well. The kernel itself consistently randomizes the location of its data, the built-in firewall was strengthened, and weak anti-malware was built in.
In a decidedly ironic twist, Microsoft also began to sell antivirus software, turning itself into a vendor for solutions to problems its own ineptitude had created, rather than finding a way to fix those original problems.
Finally, Microsoft decided it hadn’t annoyed its users enough by adding a hellish feature called User Account Control which demands confirmation when something happens. Want to install a program? You get a UAC confirmation dialog. Decide you don’t like it and want to uninstall it? You get another one. Access the Device Manager? Adjust the font size? Change the date or time? Share files? Let a program through the firewall? Add a new device? All these actions pop up UAC prompts to waste your time and blow your blood vessels.
The really great thing about a UAC prompt is that they dim the background and lock out everything but the dialog box, meaning you are forced to acknowledge its presence and deal with it, even if you were in the middle of something else. Also, the dialog box appears in a random location each time to prevent you from being able to quickly click on “OK”. No, I’m not making any of this up.
Note that none of these tasks actually require elevated permissions; Windows just feels the need to make you confirm your action to make sure it was originated by you and not a piece of malware. But imagine this situation: there’s a piece of software you want to install that has a virus inside of it. Upon trying to install it, it pops up a delightful UAC prompt. You click OK like you always do, since you want the software. But oops! You just installed the virus too! UAC does nothing whatsoever to counter this type of hijacking.
Basically, with Vista, Microsoft did what they always do: pile on more features and workarounds instead of solving the core problems. And it shows; Vista takes up 12 gigabytes of space compared to Windows XP’s 1.6, and feels noticeably slower. Copying files is glacial, and playing an MP3 will slow down your internet access! On top of that, Vista is still insecure; even after all these bolted-on features, it remains quite vulnerable to infection by malware. The herculean effort took 6 years and cost billions, driving up the price of windows to such levels that the major computer vendors are complaining and Dell is now selling machines pre-loaded with Linux.
It’s all a monstrous domino effect: Microsoft creates a poorly-conceived, insecure feature that negatively affects usability; to cover it up, they abstract everything, making it easier for malware to hide and replicate; to deal with the resulting security disaster, Microsoft piles on fixes and features without addressing the core problem, making their operating system late, slow, bloated, and expensive; Manufacturers complain and look for other options, while consumers slowly migrate to Macs.
Isn’t the Registry great?
Must slam head into wall
Looks like there’s another up-and-coming iPod competitor looking to challenge the king. Only, this one has a secret weapon; a killer feature that’s sure to generate an inordinate amount of buzz compared to its probably mediocre music playing capabilities. This MP3 player stands to get people talking as much as did the sony “white is coming” ad campaign. You see, this MP3 player is titled nothing other than “i.Beat blaxx“.
I guess they’re targeting the computer-savvy southern yokel–a great untapped demographic! I mean, who else participates in this market segment? They’ll snap up mindshare in an instant! Those genius marketers of theirs deserve multi-figure raises!
I wish them the best of luck in their not-at-all uphill battle.
Dueling office suites, lovable software
A funny thing happened yesterday: I found myself wishing for an opportunity to use Pages, a part of Apple’s iWork suite I recently bought. Pages is not a game. It’s not a non-linear video editor, a graphics manipulation application, or a 3D modeler. It’s a simple word processor, designed to aid in the writing and editing of blocks of letters and words. Word processors are not fun, nor have they ever been in the global history of all computing. Word processors are simply a means to produce whatever lettered end you wish to arrive at. While the same can be said of any type of creative software, such as Photoshop or Final Cut or modo, these applications tend to have dedicated and loyal users who are fanatical about their software and will defend their choice if asked to compare it to comparable product. Microsoft Word has never had this loyal fanbase.
As Word is the program probably 100% of all computer users believe they need for the task of penning their thoughts, the overall enthusiasm of its most enthusiastic users is drowned out by the ones who couldn’t give a damn about what makes Word special because they don’t know what the alternatives are. Since the product was commoditized and everyone uses it, most people use it not out of choice but out of perceived necessity.
Despite that, the latest version is absolutely awesome. Earlier this year, I actually found myself infatuated with the windows version of Microsoft’s venerable and bloated office suite because it was so good! Office was and is the testing ground for an experimental interface convention, something called the Ribbon, which is essentially is nothing more than a context-sensitive bar of labeled icons, giving access to Word’s functions. The Ribbon completely replaces the menu bar, and is aimed at increasing the discoverability of Word’s monstrous feature set. To that aim, it succeeds fantastically, and it truly creates one single, easy-to-use access point for all the functions of an entire application! I must admit that I was quite in awe of what I perceived to be the user interface genius behind the idea. Why doesn’t Apple adopt this obviously superior convention? I wondered.
Well, with iWork ‘08, they did. Only, in true Apple fashion, they distilled it to its core genius and left out all the bloat and cruft. Pages’ context-sensitive bar is barely 15 pixels high, and contains all common text and graphics operations, depending on what’s selected, compared to Office’s Ribbon, which takes up 135 and tries to do everything. Rather than throwing everything there and doing in the menu bar, Apple opted to respect users’ existing knowledge and augment the menu bar and toolbar with the new context-sensitive format bar, and actually achieves the holy grain of putting common features a click away while preserving ease of access to advanced ones while not treading on users existing expertise. Jackpot!
Pages also includes a host of entirely new features, too. First of all, there’s Word-compatible track changes–a must for heavy collaboration and exchange of ideas. As usual, Apple implemented the feature in a surprisingly pleasing, elegant, attractive manner, and finally exposes an obvious way to temporarily stop tracking changes without turning the whole darn system off:
![]()
Finally!
Then there’s Instant Alpha, which is an easy way to extract part of an image from its background. But the important part isn’t that it’s easy, but that it’s super-easy. The procedure is practically instantaneous and results in beautiful, Photoshop-defying results in probably under 1/20th of the time it would take using any existing procedure. Here’s an example image I grabbed off Google real fast:

And here’s what I managed after scarcely 20 seconds of effort in Pages using Instant Alpha:

Sure, if I took 10 minutes to do it in Photoshop, I could probably have achieved a slightly cleaner result. Maybe a substantially cleaner one. But are those 9 minutes and 40 seconds worth it for an extra 5 to 10 percent of quality? For most people, the answer is no, and the fact that Pages allows a result that’s 90% as good in less than of 1% the time is commendable and astonishing. Just for fun, Pages also lifts the image manipulation panel straight from iPhoto, making it a powerful image editor as well.
That’s not all, though. They also threw in the ability to natively open, edit, and save the new Office 2007 files, a feat that Microsoft itself hasn’t yet accomplished in its own Office suite. That’s right, Microsoft hasn’t managed to build read/write capability for a file format it invented into a piece of software it wrote, and now Apple comes along and does it just to embarrass them. Snicker.
Pages is also full of nifty little timesavers, like the ability to look a word up in Google or Wikipedia with one click and insert hyperlinks from your existing bookmark library. They also threw in grammar checking for the hell of it, and it’s about as good as Word’s – which is to say pretty pathetic. It must be hard to program a good grammar checker, but at least the feature’s there to be improved in the future. Basically, Pages 08 is a major upgrade in practically every way.
All this raw functionality coupled with lightness and quickness and a killer interface makes Pages an absolute joy to use. And that’s why I wanted to use it. Not because I felt the need to write, or wanted to edit some document I had created, but I wanted to use it because Pages is so enjoyable that I felt the concrete desire to interact with it.
Kevin Hoffman, a prominent Windows programmer, once referred to his time using Apple software thusly: “I have never before encountered a situation where I missed the visceral experience of a tool more than its raw feature set.”
What I felt this morning was beyond that; not only was I missing the visceral experience of using Pages, but I was actively trying to generate reasons to use it when none actually existed.
I have Never before encountered a situation where I wished for some work to do simply so I could have the experience of using my favored tool to complete it.
Why gaming is good for you
Yes, that’s right; computer gaming is actually good for you. How can this be? It’s easy to dismiss games as just “how to blow up aliens,” but this is a mindset that is terribly uninformed about the medium, focusing instead on the subject matter. An apt comparison to books would be the charge that a reader of a particular text is learning only about that particular made-up world, which obviously doesn’t exist in “real life.” But this is just as wrongheaded; we all know that reading is good for you–it opens up your mind, it excites your imagination, it gives you an appreciation for the power of the written word, it teaches you to dream your own worlds.
These facts are self-evident to readers. However, those who have never picked up a book in their life might well disagree–or at least, fail to see the truth.
The same is accurate of gaming. Their loudest critics are those who have never played them in any significant capacity, especially newer ones. However, games do have skills to teach us–skills that are more relevant today than ever before. You see, games teach computer skills, and not just computer literacy–games teach computer mastery. The 35 and older crowd often wonders just what it is that makes us whippersnappers so good at computers. I think I have the answer: games. Here are some common types and what they teach.
Twitch games
This category encompasses first-person shooters, action/adventure games, and anything where skill at the game’s controls greatly determines the player’s success. Those who master said controls through the speed and coordination of their reflexes and knowledge of efficiency-boosting shortcuts will best players who have not. These skills directly translate to the desktop; players of twitch games internalize the desire for efficiency, and actively seek out ways to maximize their ability to accomplish repetitive actions. Twitch gamers are more likely than non-gamers and even other kinds of gamers to know keyboard shortcuts and fast ways of doing things.
Role-Playing games
This category encompasses games where the player takes on the role of one or more characters exploring a virtual world. Because of the limited nature of how much can reasonably be shown, these virtual worlds always have set limits and boundaries, which distinguishes them from the real world, which goes on for miles and miles. Therefore, those who play these types of games learn probing–the skill of testing the limits of a finite space with concrete but hidden boundaries. This skill is immensely useful on the desktop, which is also a world unto itself with limits and boundaries which must be discovered. RPG players learn to explore the nooks and crannies of their computer systems to find hidden secrets.
Real-Time Strategy games
In the average real-time strategy game, players must balance the tasks of building their base with building enough military units with building the right type of military units with gathering enough resources to sustain both an expanding base and a growing military with upgrading their military units with probing their enemy’s forces with correctly timing an assault with making use of their military units’ particular special capabilities…
RTS games teach multitasking, and not just any multitasking–they teach extreme multitasking! Your average RTS consists of dozens if not hundreds of time-sensitive tasks that must all be harmoniously balanced to achieve victory. Those who play RTS games will often be the most extreme multitaskers on the desktop, often keeping 10 or more of windows open at once and working on half a dozen tasks at a time, rapidly switching between them to work a little on each one. Because of the nature of computers’ ability to facilitate multitasking, this particular use of them meshes very well with the most efficient way to use modern computers.
Puzzle games
Puzzle games involve figuring out an intentionally obfuscated or muddled problem or situation through experimentation, intuition, or trial and error. Puzzle gamers learn patience with confusing problems and learn to approach them methodically and patiently. Puzzle games can be thought of as the ultimate “bad interfaces” because they often seem to have been thought up specifically to challenge the player’s ability to decipher them. Sadly, this often happens unintentionally in computer software as a result of poor design or planning. Those well schooled in puzzle gaming are far more likely to respond to these challenges with patience and determination rather than frustration and concession.
I’m getting a divorce.
Today I officially announce my separation. It’s been a long two years, filled with triumphs, setbacks, and shouting myself hoarse. We’ve gotten an awful lot done together, and we’ve been as close as I’ve been angry (and about as often, too).
Maya and I are getting a divorce. We’ve come to a reasonably amiable agreement, and the separation should be a relatively quick and painless one. We’re working together on completing one last project or two, and after that, all hats are off. We’ll see how things fare, but we’re no longer relying on each other for personal or professional needs.
How did this happen? Well, the story demands some history first.
When I was boy of 11, I discovered Bryce through a magazine. Bryce seemed kind, open, powerful, easy to read, and really pretty, too. I had no idea at the time, but Bryce would profoundly shape my development.
Boy was Bryce great. Looking back, I’m almost chagrinned to realize that I was with him for so long, but he was one hell of a partner. Back when I was just a little kid, Bryce made me feel powerful. With Bryce, I created things that impressed my friends and parents, and there was a time when Bryce was the one I turned to when I was bored or had a couple minutes of free time. In fact, looking through my file logs, I see now how astonishingly productive Bryce made me. Sure, he was a bit thick at times, and I’ve certainly moved on, but Bryce was the best possible thing that could have happened to me at that age. Bryce sparked my interest in art and computers, and he fed me a steady diet of accomplishment that gladdened my parents. Bryce made creation a leisure activity.
For seven years, I was blissfully happy with Bryce, and we had so much fun together. But gradually, I became aware of Bryce’s limitations. Sometimes he would do things “the hard way” and make me work around it. Other times, I just got the feeling that as warm and happy as Bryce made me, I was capable of more than he had to offer. Eventually, I realized that I had to move on. It wasn’t easy, because I loved Bryce and was understandably apprehensive about leaving the stability of my comfort zone to enter the outside world. But Bryce had made me realize that my passions lay in 3D, and that he could never satisfy them alone.
I can’t remember how I found about Maya. Maybe it was a friend, maybe I heard about her through the grapevine, or maybe I knew about her for a while and just got up the courage to try her out once I had a reason. Whatever it was, we got together in February of 2005 and I was convinced that it would be a beautiful partnership. Poor naive me.
At the beginning, I admit that Maya well, kind of bowled me over. She was so experienced, and she could do so much, that I was a little intimidated. I made some tentative steps at doing things together, but it was very clear very soon that I was way, way out of my league with Maya. We talked things over, and I agreed to come back when I had some more experience.
I got the opportunity to acquire it when I went to college. In fact, there was a class available specifically for that purpose, and I hurled myself at it. Maya and I were together again. I learned about her personality, her quirks, her flaws, and all that she had to offer me. It was vast. She could do things I’d never even heard of, and she could do it well, too. The only problems were some communications issues we ran into, but I was confident that they would fade as we got spent more time together and got closer.
Again, Poor naive me. As I got closer to Maya and spent more time with her, I became more and more frustrated. Maya seemed to prefer math to art; she made me futz with numerical values and text fields and learn what I hated in high school, just to create art. There had to be a better way, but Maya didn’t know it.
Gradually, my dissatisfaction with Maya increased. So did my productivity and output, interestingly enough, but I always felt like I was fighting Maya to get things done, rather than working with her; I felt that I could be doing even more, even faster if only Maya would cooperate.
I eventually came to realize that Maya and I had fundamental personality incompatibilities. Maya likes absolute maximum choice and control, and she doesn’t like to teach people how to do things–she suffers no fools. I, on the other hand, appreciate a helping hand and gentle mentorship through new and difficult skills and ideas. Maya was spectacularly unsuited to deliver what I craved so badly. The friction increased.
Then Maya began to destroy my work. We would be in the middle of a project together, when she would scoop up a model I was working on and leave. I’d try to follow her, but she was too fast for me. When she came back, the model would be gone and she would wryly claim to have no knowledge of what happened.
I would yell and scream, but none of it ever made any impression on her. She would sit there and mock me.
Slowly, I began to dread talking to her. I avoided contact. I kept to myself. I stopped doing what I loved because my partner had broken our unspoken agreements and violated my trust.
So I left.
Maybe later I’ll talk about my future plans, but for now, I’m just glad to be rid of Maya.
Momentary solitary Mac OS X wish list
A friend once thusly described the primary difference between the way your choice of operating system affects how you think:
Windows is like a door painted shut. You say, “do I really need that door? No, it’s fine, I can do without it. Really, why do I even need that room at all?” While OS X is like the a beautiful door you look at and say, “Hmm, this is a great door–I love how smoothly it opens and closes–but I’d prefer a handle to this knob. It’d feel so much nicer–in fact, this knob is kind of uncomfortable. Yeah, the knob on this door is so frustrating! I hate this knob!”
The point being that Windows forces you to accept mediocrity, while OS X spurs you to constantly want more than you already have. Either way, it’s certainly true for me. When I’m in Windows I find myself accepting that some consistently forgotten preference (which of my screens is the primary one) will never be remembered and working around it. In OS X, I’m irritated by data lists that don’t have alternating backgounds and frustrated by buttons that don’t look identical to all other buttons.
Now, I’m a huge fan of Mac OS X, but sometimes just it pisses me off.
Let’s take, say, the font panel. Everybody loves the font panel; it’s easy to learn and totally consistent across application that make use of it–which is pretty much all of them. So what’s wrong with it?

Well, for one, it fails miserably at its primarily goal: allowing people to easily switch between fonts. With most pop-up font menus, such as the one found in Microsoft Word and practically every non-OS X word processor or text editor made in the last 15 years, here is the procedure:
- Click on button to drop down menu of fonts.
- Find a font you like.
- Click on the font.
There’s nothing terribly difficult about that. Now, here’s the way you accomplish the same task with Apple’s font panel:
- Click on the “fonts” button in toolbar or the buried “show fonts” menu item.
- Move the font panel so it’s no longer in the way (somehow, it always opens somewhere where it obscures the text you’re trying to affect).
- Click on a font to see what it actually looks like.
- Click on the next font to see what it actually looks like.
- Rinse and repeat until you find a suitable font after several minutes or searching, or give up in frustration and just use Helvetica or Times New Roman.
- Close the font panel.
Notice any problems?
The primary, even crippling, disadvantage is that the fonts in OS X’s font panel don’t actually appear in the fonts themselves–in order to see what they really look like, you have to manually click on them one by one. And you get sick of clicking, it’s entirely too difficult to use the arrow keys. By default, font panels, like all inspectors, don’t retain focus when you click on something inside them–meaning that you can’t move between selections with the arrow keys, since the focus is still with the text you’re trying to wrangle a different font onto. You have to specifically click in the font panel’s tiny little titlebar–oh, oops, what’s that you say? You clicked and dragged? oh, no good, you can’t drag or it loses focus. You have to click and do nothing else but click, and only then will it retain focus.[1] Then you can use the arrow keys.
The font panel seems to have been constructed with two seemingly contradictory assumptions in mind:
- That people are going to be switching between multiple fonts often and rapidly, so it makes sense to put them into a window that stays open until explicitly closed (I’ll call these people Browsers).
- That people know what fonts they’re going to use and don’t need to see what they actually look like (these people can be Zoomers).
Both of these assumptions seem incredibly wrong-headed to me–each one seems to actively annoy the other group! If you’re the kind of person who’s likely to ever change the current font (a Browser, most likely), you’re probably browsing for some unknown new one. This is a torturous process if you can’t see what your changes look like until after you’ve made them. The font panel is actively inhibitory to the browsing process these people go through when searching for a new font.
That leaves the Zoomers, people who know just what font they want. These people aren’t the ones who end up changing their fonts very often to begin with, so what’s the point of keeping the panel open for these people?
It seems to me that there’s a happy medium that could satisfy both the Browsers and the Zoomers. How about this: When the “fonts” button is clicked, the font panel opens right underneath it and disappears as soon as you click on one of the listed fonts–which are all shown as they will actually appear. BUT, this font panel retains its titlebar, so if you want to keep the panel open, you just have do drag it by its titlebar to somewhere else, and then you can click on as many fonts as you want without having it snap closed. That way it’s more like a pop-up panel, but it can become a full-fledged window if you deliberately tell it to.
[1]
Note that I’m not trying to diss inspectors in general, because they’re not supposed to hog the focus. It’s just that I think making the font panel one was–along with many other design decisions made about it–a huge mistake.
Comments (3)
Leave a Comment
Comments (4)