Dennis Forbes on Pragmatic Software Development
Subscribe to RSS
 
Tuesday, April 24 2007

Ventured out to the local electronics superstore last night to grab an enticingly priced Kingston 1GB miniSD card ($29 CDN). While there I spied a stack of 200GB 7200RPM ATA-100 hard drives going for the negligible price of $79 CDN, so I grabbed one of those.

Products chosen and in hand, I deftly avoiding the commissioned sales staff who so carefully avoided me when I was actually in the technology area -- where I presented a potential source of complex questions -- but now wanted to verbally "claim" the sale, however marginal.

"You all done there sir?" echoed off my heels as I retreated to the door.

Hard DriveThe hard drive enticed me as I have a dated PC that had been stumbling by with a rather old and noisy 60GB hard drive as the boot/system drive, a second, larger drive doing storage duty off a SATA wire. I have a limited interest in expensive upgrades as I just plan on replacing the whole PC, but a little extra space in the meantime would allow me to set up a bit of redundancy between the drives in addition to normal backup strategies.

Hanging the old and new drive off ATA wires, I had the data copied over with a burned image of the very useful g4u (a quick copydisk and the new was ready to replace the old). Moments later the old drive was out and the new drive was booting much quicker and quieter than the old, ready for a copious new 140GB partition to be created.

The $79 drive is actually a WD2000JB, which was originally released in late 2002. It's hardly cutting edge, but hard drive technology hasn't exactly been moving at that brisk of a pace so it really isn't that far out of the state of the art.

All in all it was a speedy little upgrade for just $79, implemented painlessly in minutes.

If there were an inexpensive external RAID-capable enclosure with ATA-100 connectors, I'd grab a gaggle of these drives and cluster them -- alone they aren't terribly fast, but several drives working together would provide some killer performance.

With desktops I've always gone for 2-drives at a minimum. Even without any sort of performance RAID, simply putting the page file on the second drive has proven to be a huge performance improvement for many demanding applications, as does the intelligent storage of work and data files.

Monday, April 16 2007

Being able to quickly and easily build team projects on a newly imaged PC is a development process necessity: A new team member, with not a whit of project knowledge beyond where to find the simple build instructions, should be able to follow a sequence of clearly documented steps -- automated where possible -- painlessly generating a build.

No unnecessary mapped drives and hard-coded UNC locations. No undocumented but necessary third-party tools at hard-coded locations. No byzantine by-hand registrations and muddifications.

This holds true for open source projects as well. While a grizzled kernel hacker obviously doesn't need hand-holding, they didn't start as a grizzled kernel hacker. At some point they were new to the code, and the number of obstacles they faced in those early days were probably significant indicators of the likelihood that they would stick with it, overcoming administrative type nuisances and getting to the point where they were actually working on the code itself.

Some may see the barrier to entry that often exists as a useful filter, only letting only the best of the best through, but that contention seems dubious. More likely an onerous getting-started process simply demotivates a lot of great talents from even bothering. Being an expert C++ developer doesn't mean that one wants to spend a day messing around with cygwin packages and dependencies, setting up countless poorly or incorrectly documented environment variables and configurations.

FirefoxOn this theme, I recently took a look at the state of the bleeding edge of Firefox -- I think Firefox 3 is going to be one of the most important applications in years, and is going to completely redefine the entire industry -- and was very pleasantly surprized to find how stunningly gorgeous the build process now is for a Visual Studio-using-Windows developer.

-Download and install Mozilla Build.

-Run the appropriate start-msvc batch file (e.g. start-msvc8.bat for Visual Studio 2005 users). I updated mine to set the CL environment variable the compilation flags that I wanted, as opposed to passing them on the --enable-optimize parameter of the .mozconfig file).

-In the appropriate location -- / is fine, given that it's actually in the msys subdirectory and not really at the root, get the client.mk file via the following trivial command.

 cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk

-Navigate into that folder
 
 cd mozilla

-Do a CVS get of the appropriate project (originally I was getting the source outside of the make script using the excellent TortoiseCVS, however it turns out that you can't just wholesale grab the tree, and should stick to the integrated CVS functionality).

 make -f client.mk checkout MOZ_CO_PROJECT=browser

-Configure an appropriate /mozilla/.mozconfig file (note that Windows will block setting that filename directly. Do a mv move command in the MINGW32 shell after saving from notepad or wherever. You'll likely just copy the block on the linked page for the appropriate project, however if you're adventurous you might try out the configurator tool).

-Build it!

 make -f client.mk build MOZ_CO_PROJECT=browser

This is the slickest, most painless process for such a large scale application that I've ever seen. I can just re-checkout and build daily if I'd like to be on the razor edge, though sometimes that will mean a broken build.

Now I'm running an ultra-optimized, stack-protected custom build of Firefox 3.

Type R Firefox

I'm actually delving through the code with relative ease, testing my custom changes absolutely painlessly (in my case, curiousity brought me into the javascript engine, found in the js subdirectory. While the code is inherently advanced -- it is a remarkably complex product -- it is reasonably easy to follow around and get a feel for).

Brilliant. Absolutely brilliant. Now I just have to find a way to put some obnoxious exhaust pipes on this bad boy.

Wednesday, April 11 2007

A flurry of nattering erupted over the weekend regarding Paul Graham's declaration that "Microsoft Is Dead".

[Sidenote: Paul claims that he authored the piece to "say it first". While you might be widely linked for your Yahoo glory days, Paul, you're far from the first person to say it]

While Paul was obviously exaggerating to make a point (I presume he knows how to read a financial statement, and is well aware that Microsoft's revenue are still following a ballistic arc, and that >90% of PCs out there still run some variant of Microsoft's operating systems), it shouldn't come as a shock that I'm in agreement with his core point -- that Microsoft's ability to herd the industry has seen an unbelievable decline over the past several years, and that tech leaders aren't all that interested in whatever Microsoft is claiming that they'll think about maybe developing some time in a few years -- and indeed I'd said something very similar just last week, albeit without the confrontational, exaggerated title.

In today's Financial Post I see that Goldman Sachs has just removed Microsoft from their highly-rated "Americas Conviction List", specifically noting that investors are nervous about the future of retail software. Sure, Microsoft is still considered a "Buy", but this is another indication that people are seeing a future where Microsoft isn't all-singing and all-dancing.

While looking for an online link to provide for the news item (I'm still a happy reader of dead-tree newspapers), I came across this article on ZDNet, in which the author says-

"but can you really say a company with $28.8 billion in cash is on the downswing?"

YES! Of course you can!

That $28.8 billion is owned by shareholders, and if they see it squandered in failed attempt after failed attempt at buying diversity, they'll demand it back through another special dividend. Microsoft's bounty of cash, and their massive revenue, has never guaranteed them anything, and their history is rife with initiatives doomed to failures (much like the ridiculous "turn on an internet dime" myth, many have a selective memory when it comes to Microsoft, forgetting how many of their ventures have been dismal failures. Expect the whole ridiculous "Live" branding to be yet another failed direction).

Microsoft certainly isn't dead, however it will likely go through some massive, externally forced changes in coming years as the two foundations of Microsoft profitability -- Windows and Office -- start to crumble.

Tuesday, April 03 2007

When People Danced to the Macarena

The exploding importance of the Internet in the mid-90s brought tremendous change to the technology market. It forced industry leaders and followers to hastily adapt to the new opportunities and challenges.

It was a do-or-die time, and you had to embrace and adapt, or get extinguished.

To everyone but Microsoft, it seemed.

Despite the hurricane-force winds of change around them, the industry leading behemoth looked to be stuck in a recursive loop. While upstarts were racing in every direction, envisioning and implementing new uses for this growingly accessible platform, Microsoft seemed to be busy navel gazing, more worried about how to maintain the status quo.

Despite the relative success of Windows 95 -- the long-overdue migration to mainstream 32-bit computing -- Microsoft's slow-moving heft seemed to make them incredibly vulnerable during this critical transition period, making them appear a lumbering giant that could be toppled by the smallest adversary.

The young upstart Netscape appeared a likely candidate to shoot the mortal stone: Sales of Netscape's server and browser products yielded a revenue growth curve exceeding that of any software company in history. They were actually running a profitable business, which was a remarkable feat for a technology company at a time.

Their Netscape Navigator browser had fortified a seemingly insurmountable position in the marketplace . The company image was hip, and Mozilla adorned swag was flying out of their online store.

In that era of seemingly boundless opportunity, inebriated with the seemingly limitless potential of the company that he co-founded, Marc Andreessen made the infamous comment that the Netscape Navigator browser, coupled with the Java platform, would reduce Windows to an "unimportant collection of slightly buggy device drivers."

By then Gates had penned his famous internal "Internet Memo", demanding that the company focus on the Internet. The cruise ship Microsoft was ever so slowly changing course.

While the overwhelming majority of Microsoft's renewed focus turned out to be largely useless "internet-enabled" bedazzling of existing products -- the oft-lauded "turn on a dime" fiction about Microsoft's Internet revolution is grossly overstated -- where it really counted, the browser, Microsoft executed very well.

Microsoft's browser offering quickly became good enough that that average user couldn't be bothered to download and configure a competitor's products on their new PC (Microsoft didn't have to provide a better product, or even as good for that matter: It just had to be good enough to dissuade an average user from seeking out alternatives. This is a bundling reality used in all industries).

Add to that the fact that Netscape's development cycles got longer and longer, their innovation dried up, and their product got buggier.

Eventually Internet Explorer was the winning product on merit alone.

Soon we had an internet full of "Made for Internet Explorer" buttons. Much of the non-academic web had been Microsoft-ized, and you couldn't play unless you went where Microsoft was going today.

The rest is, of course, history: Internet Explorer rocketed to success, almost entirely at the expense of Netscape.

Knowing how things turned out, with the all-knowing clarity of hindsight, Andreessen's claims of course look like foolish bravado. Even at the time it sounded like nonsense: Java applets had shown little promise, delivering terrible performance, atrocious interfaces, and an awkward, crippled interaction with their host environment. The browser wasn't much better, limited mostly to rendering personal pages full of blink tags and gaudy color schemes.

I recall reading that quote from Andreessen back then (I believe in a Dvorak article in PC Magazine), puhshaw-ing in disbelief. I couldn't believe his audacity, and as a junior Windows-targeting developer at the time, with perhaps a bit of a fear of change (nobody likes when their skills, even at a beginner stage, are being obsoleted), I cheered on a Microsoft response.

"Bill Gates is going to CRUSH this guy!" I thought.

And of course Microsoft easily won that battle.

But are they losing the war?

The Pillars of Our Reliance on Windows

Windows as an operating system certainly has a lot going for it: It is feature rich, demonstrates a lot of technical excellence, and can credibly measure up against any competitor.

Yet for many users over the past decade, there was no choice: Windows was obligatory. It was exactly this hegemony that Andreessen felt his platform was upsetting.

His prediction was just a decade or so early. And instead of Java being their tag-team partner, it's JavaScript/AJAX, Flash, and the innovation and power of modern console gaming.

"I dual-boot to play games"

I hit a local department store recently to look for some educational games for my pre-school aged daughter. This location never had an extensive PC software selection, but I was still surprised to find the entire section had been removed, save for a couple of relics sitting in a discount bin.

The entire area was taken over by game console and handheld software.

Thinking this was an anomaly; I drove across town and checked their competition, and then their competition's competition, only to find the same at each: No PC software at all was for sale.

No games. No typing tutors. No foreign language training. No photo management software. No pre-school aged games.

Baffled, I hit the local EB Games location. Over the years I'd purchased dozens of PC games there, so I was shocked to find no PC software at all (the exception being a couple of ratty late-90s era boxes in a wire-mesh bin).

Determined, I ventured to the local Future Shop (the Canadian equivalent to Best Buy, and in fact the chain was acquired by Best Buy a few years ago, causing much confusion as it came in concert with the actual Best Buy chain itself) to find a small PC software section. While it was much smaller than it once was -- where once there were rows dedicated to just productivity applications, now a miniscule little section caters to the entire gamut of software -- at least it was something.

However compelling, my personal anecdote doesn't really prove much, but it does correlate with industry metrics that have shown retail PC software sales to end users to be stagnating or in freefall. Businesses keep buying their Office and Windows licenses, of course, and niche groups keep satisfying their business need, but what once was a vibrant retail market for applications and games has virtually disappeared. Some of this has been supplanted by online purchases, including some new electronic delivery method (which is how I got Half-Life 2 -- an impulse purchase is well catered to by a simple online purchase with immediate satisfaction), but much of it has just disappeared.

Consumers just aren't consuming PC software anymore.

The reasons are obvious.

Deja Vu All Over Again - The Rise of Console Gaming

On the gaming front, the PC has seen incredible competition from gaming consoles. Not only have those competitors evolved into technical heavyweights, the simplification of the entire gaming genre has equalized the playing field: Where once a mouse and a keyboard were mandatory to play any decent game, most popular games now feature simple interfaces that are equally accommodated on any platform, and the complex simulator type games, once the consistent chart toppers, are largely unloved.

You don't need a mouse to interact with an onscreen flower menu. You don't need a keyboard to communicate via a headset and in-game Voice-over-IP.

Consoles aren't the only reason for PC gaming's decline -- general internet use has taken a lot of time that people would have spent gaming, some of that time being spent being entertained by the countless Flash-based, cross-platform games available now.

Doomsayers have being declaring the death of PC gaming for years, as generations of consoles have come and then gone and Windows gaming has remained, but never has it seemed as likely to actually happen. In response, Microsoft is attempting some Windows gaming branding; perhaps realizing that it was a linchpin of their occupation of the home; but their intervention is likely too late.

So what does any of this have to do with Windows and Netscape and buggy device drivers?

One of the primary reasons many users felt tied to the Windows platform was gaming: If you wanted to play any of the prominent games at the time, that collection of slightly buggy device drivers was very important, and the game-du-jour was usually very tightly coupled with the platform. Aside from a couple of exceptions, PC gaming overwhelmingly meant Windows gaming.

The Netscape browser certainly wasn't a replacement for this. Neither was the Java platform.

This situation led many prospective Windows migrants to declare that they would make the move to Linux or the Mac or FreeBSD or whatever, if only they could run their current gaming obsession on it. Dual-booting is a half-measure that seldom held, and the direct graphics card access meant that gaming couldn't be accommodated via virtualization, so more often than not they just stuck with Windows.

"But my applications only run on Windows!"

Across the industry hundreds of thousands of solutions have migrated to the web, and if anything the pace is accelerating. Despite Microsoft submarining the overly-capable Internet Explorer team -- a team that brought us many of the innovations that we now enjoy in competing browsers -- the genie was out of the bottle: Many had experienced the incredible platform freedom, wonderful deployment model, and rich interfaces provided by web applications.

The classic computer purchase justifications (as stated by a million pleading children trying to convince their parents that a new gaming rig will be productive for the household) -- balancing the checkbook, storing recipes, authoring and sending letters (now email), maintaining databases -- can all be very competently accomplished online, from any modern browsers available on dozens of platforms. In many ways the experience is superior online, given the accessibility of the data from anywhere at any time.

Not every task can be performed online or from a web browser, and for those needs a plethora of cross-platform, often open source options have appeared (ex. GIMP, Open Office). Yet it remains that for an average user, the overwhelming percentage of their computer time now will be spent in their add-in enabled web browser, perhaps accessorized by one of countless available, many-network supporting IM clients.

Which is, of course, where we circle back to Andreessen's prediction: The most popular, and arguably capable, cross-platform browser is the Firefox browser. It is the phoenix (and was originally named firebird) that rose out of the ashes of the collapse of Netscape, the source code open sourced and revitalized with a many year reworking. While its market share numbers remain relatively small, its influence has been absolutely extraordinary. Even for sites that see 100% Internet Explorer users, the freedom and diversity offered by Firefox often leads enlightened development teams to ensure that they facilitate it just as well.

The rules of the game have completely changed. While many were prematurely declaring the end of Microsoft's dominance for years (every year for the past 7 years or so has been declared "The Year of Linux" by some open source evangelist or other), it has been years since the field has been so open for actual competition.

It has been a long time since the choice of platform held so few caveats and limitations.

We are entering a glorious time when the operating system really is an unimportant collection of device drivers, no longer driving completely unreleated application choices.

Wednesday, March 14 2007
The Ultimate Flowchart For Choosing Whether To Blog Or Not


While most prospective bloggers (online content authors) have already been doing it for some time, every now and then someone anxiously asks me whether they should start a blog, feeling like the train is leaving the station and in future world they'll be relegated to the info-slums because of their lack of participation. For these recurring queries I thought it worthwhile posting an entry, giving me a a simple URL to reference.

  Blogging 
Saturday, March 10 2007

Where Votes Are Cheap:

It's no secret that I'm not a big believer in the wisdom of crowds, at least in the form commonly demonstrated online today.

Most of the "online democracy" sites are easily manipulated by vote stuffing (only necessary at the outset, after which inertia and follow-the-leader behaviour takes over). Where it isn't obvious manipulation, the sort of content that rises to the top is generally comforting and non-challenging to the impatient reader's world view, and the percentage of clearly fictitious (but presented as fact) content is disturbingly high.

If an article or entry can't be digested in seconds, and if it challenges the stereotypes or agendas of the majority reader, it will usually sit unloved at the bottom of the pile. 

It's a common tactic in the software development blog domain, for instance, to affirm that each reader is special, and must represent the cream of the crop, while pinning all of the problems in the industry/the world on "the others" (managers, dumb programmers who can't code FizzBuzz -- the other 99%, customers, architects, big oil, Republicans, white middle-aged guys, etc). An array of pond-skimmers always superficially treading the shallowest depths of technology, non-challenging to the reader's status quo.

"Oh you're just jealous that this entry won't be on the front page of [Some Meme Site]!" a naysayer might pronounce.

Aha! And that is exactly where a real-world conversation led recently: I was decrying a popular blog that I felt had descended from informative, credible information, down into Pablum-like, predigested, low barrier-to-entry prattle. This change seriously compromised the author's technical credibility, and marked a tremendous decline in the quality of the entries, yet it perplexingly came with a massive spike in their readership counts.

After expressing my frustration at this destructive influence on online content, my conversation partner asked whether I just had sour grapes because I haven't seen any such traffic spikes for a while. 

After a couple of popular entries a while back, I had a natural desire to keep things rolling -- there was no real gain for me whether this sees 10 readers a day or 100,000, but it was sort of neat seeing some big numbers in the stats -- but there was a limit to how low I would sell-out. I was more interested in making a small number of peers in the industry think "this guy really knows his stuff!" than having a large number of ADD drive-by meme site users think "YES! This is exactly the simplistic, layman worldview that I want to push into other people's faces through my votes".

The Challenge:

A gauntlet had been thrown down! I declared that I could intentionally author pieces with the specific purpose of doing well on the meme sites, and that if I did follow through they would do very well indeed. My peer disagreed. A friendly wager was made.

The Declaration:

Over the coming period, I am going to attempt to do "well" (open to interpretation, but generally meaning >50,000 hits in a single 24-hour period) with a couple of pieces.

Due to conditions of the wager, coupled with my own lack of available time, I am going to spend absolutely minimal time on each entry. Most, if not all, of the entries will be posted on stooge accounts or blogs that I will set up elsewhere (for obvious reasons), although after they have run their course I will post a link pointing back to here and vice versa, and how well each approach and submission tactic did.

The game is afoot! We shall see if the wise crowds are as predictable, and gameable, as I believe!

  Personal 
Saturday, March 10 2007

Gene Weingarten, a humor writer for the Washington Post, has a piece titled "The joys of writing your own Wiki-bio" (carried by several other papers, including the National Post here in Canada) . In this article he describes a series of edits he made to his own biography on Wikipedia, testing whether the fact police of Wikipedia -- a nebulous group of usually young males with an excess of free time -- would catch and retract his distortions.

He was creating a "Wikiality".

We don't have to take his word for it -- look at the edits yourself (Gene's edits are apparently the ones coming from 69.255.218.128 - he didn't set up an account, or attempt to create even a cursory history of credibility). While Gene starts off small, he very quickly resorts to making outrageous claims.

By the end of his experiment, he had made a string of absurd changes, including "In 1984 and again in 1986, Weingarten competed in the Alaskan Iditarod, each time assembling a team of mongrel dogs rescued from local shelters, and one very large house cat. He finished third and sixth, respectively.".

27 hours later, a Wikipedia defender reverted his vandalism. Seeing even the last edit, it was painfully apparent that it was vandalism, so they just reverted back prior to that user's string of alterations.

Gene ends off his article with the paragraph "All in all, the system worked. I'm impressed, and a little disappointed. There was more that I wanted my biography to say."

Gene is hardly the first to perform such an experiment, distorting Wikipedia with outrageous (or widely publicized, as in the Stephen Colbert episode) changes, then declaring that the "system works", and that the wisdom of crowds concept has been proven out.

This has proven nothing of the sort.

In essence it's a TSA inspector declaring that homeland security works because they couldn't carry a poseidon missle on their shoulders through airport security. Using examples like this for a sense of security, or accuracy, is grotesquely misleading.

  Personal 

Earlier EntriesLater Entries

Dennis Forbes - Dennis Forbes is a Toronto-based software architect and technology writer