Dennis Forbes on Pragmatic Software Development   Subscribe to RSS


About the Author
Dennis Forbes is a Toronto-based software architect. While focused primarily on the .NET and SQL Server worlds, Dennis frequently ventures outside of this comfort zone into game development, Linux development, and image processing. He has been published in several industry magazines, has been quoted in the Wall Street Journal and has been interviewed by NPR.

He is a vice president and lead software architect at an innovative New York City hedge fund back-office services firm.

Dennis has been working on solutions for the financial, telecommunications, and power generation markets for over 13 years.


Recent Entries


The Feed Bag

 
Tuesday, September 20 2005

While I'm currently a Mozilla Firefox user, I was a very satisfied user of Opera for some time, enjoying some of its superbly implemented innovations such as mouse gestures. The "downside" of Opera, and a large impediment to its adoption, was the browser-embedded banner ads if you didn't purchase a registration key (which few did, as relates back to a prior entry where I observed that the only widespread competitors to Microsoft on the Windows desktop are free-as-in-beer software. Opera costed a marginal amount of money, so like many other pieces of software in that situation it remained a fringe application despite its many competitive advantages).

Opera has apparently finally tossed in the towel in its quest to sell their application on its ample merit (check out the feature sheet - native SVG rendering, super fast and lightweight, highly standards compliant, integrated RSS - This is a top notch browser), and is now offering their superb browser for free, downloadable here. Presumably they're moving to more "modern" revenue techniques like pay support, and perhaps partner agreements.

Even if you don't make it your primary browser, you simply must give it a try on your favourite websites and evaluate it on merit. At the very least ensure that sites you develop work properly in Opera as well.

[Slashdot has a discussion regarding this. Additionally I should note that if Opera sees widespread adoption, which I highly doubt given the lack of competitive application "shopping" among the Windows userbase, it may prove my SVG is dead claim wrong]

Tuesday, September 20 2005
A peer was commenting about open offices (e.g. large areas with several work areas) versus cubicles, and what the advantages/disadvantages of each holds for software development. While this is painfully obvious, it suddenly struck me that cubicles allow you to jam people even closer together - without the barriers of partition walls, natural psychological "bubbles" would prevent one from packing employees as closely. Put a little superficial wall and you can jam people right up beside and afront each other, within arms reach in many cases.

I've worked in both (RBC, in particular, had an absolutely terrible work environment for all but senior management. Tiny little micro-cubicals about 4 feet deep with your back against heavily trafficked corridors: Combine the worst of both cubicles and open offices. Add in the sleep inducing din of the AC, overlaid with the rhythmic tapping of hundreds of people pecking away at their keyboard filling out their TPS Reports, and you have a creativeless, life-sucking environment where the intelligent part of your brain goes to die), along with of course private offices, and I definitely prefer the former if a private office isn't possible.
Tuesday, September 20 2005

Just saw a post on a Microsoft evangelist's blog that reminded me (however tangentially) of something that I've oft mulled over - bias, both conscious and subconscious, and how it manipulates the things we say and the image we try to present to the world (and conversely the image the world sees when they look at us, which leads the cynical reader be to cry "Hidden Agenda!" in response to seemingly innocent posts).

To draw from example, I was long a resident of a particularly cliquish online community - one where pretty much all of the members were software developers (or working in related disciplines). We'd often argue about industry trends and technologies, debate the merits of various nefarious corporations, and so on. Good conversation, and I gained a lot of wisdom and knowledge from the often heated exchanges. I also got to see one particularly good example of bias, both real and perceived, on the exchange of information.

It began when one of the more moderate, well-spoken, and respected members - someone whose voice carried great weight by a long history of wisdom, and whose real identity was unknown to most - announced that he had been hired by a new employer. An employer who he would reveal shortly after the details firmed up. I emailed him my guess, and learned that I was right: The new employer was Microsoft.

I believed that I knew who their new employer was by the marked shift in bias he showed towards Microsoft in the prior two weeks (while the offer was firming up): Suddenly, it seemed, this individual was more accepting of Need Any Help With That?historical Microsoft practices, more derogatory towards Google, more disparaging towards web application, and had an increased preference for fat clients. Lots of people entirely unassociated with Microsoft hold these sorts of positions, but it was the change in position that was so notable to me. Maybe it was just a lucky guess and I was just imagining a change in position: To this day the person in question claims that their persona and positions didn't change. I actually believe them, in that I believe that they didn't intentionally or knowingly change their opinions, but their new alignment towards Microsoft most certainly did have an impact at a subconscious level, gently pushing their opinions in favour of Microsoft.

In any case, once this person's new employer became public knowledge in the community, they found that their input on technology matters was often dismissed by cynics as having no credible value. To a small degree the cynics were right - It was impossible, short of some sort of hypnosis, for this newly minted Microsoft employee to weigh in on matters that in any way concerned Microsoft's interests without consciously worrying about someone at Corporate Headquarters seeing their comment and it hurting (or alternately failing to help) their career, or on a deeper, more insidious level - their subconscious - feeling the need to offer up goodness towards Microsoft in kind for a paycheck.

Of course this sort of bias doesn't even require you to be an employee. One of the most difficult to stomach personalities in this industry is the Desperate-To-Be-A-Microsoft-Employee. This sort of person is driven to fight for Microsoft to the ends of the Earth, to clumsily adopt and champion every bowel movement Microsoft squeezes out, and to coddle up to every appendage of Microsoft (Scoble has a lot of these fawning admirers. He also has a lot of well-deserved admirers, but if you ever witness a thread where someone criticizes Scoble, watch for the sacrificial Scoble defenders to ooze out of the DIV tags, desperately hoping that someone at the Microsoft collective writes down their name and sends them an offer). These people, falling back to basic human psychology, at least subconsciously believe that if they send sweet love Microsoft's way then they'll get some in return, and the result is messy for everyone.

Even if you aren't a Microsoft employee, and you have no interest in ever being one (for me it really isn't an option, as the Canadian operation is almost entirely sales, or pseudo-sales, and I plan on staying in this country outside of an extraordinary opportunity), if you've invested a lot of time and effort into the Windows platform then you will still likely have a bias to defend the platform, and to deride threats to it. Earlier in my career, perhaps when I had a more narrow range of skills, I found myself falling prey to exactly this motivation quite a few times. I felt it necessary to defend Microsoft and attack its competitors in some sort of perverted belief that I was helping to maintain the status quo, ensuring that my knowledge and status weren't being threatened. You can see this sort of status quo bias all the time, with the mainframe guys deriding desktops, DB2 guys endlessly (and falsely) criticizing SQL Server, and so on. A lot of the noise masquerading as debates out there are founded on this motivation, just as most of the political grandstanding following Hurricane Katrina was partisan, biased noise, with every participant taking exactly the position one could have predicted months before.

While I've picked on Microsoft a lot, it just happens to be one of the easier examples, but the same sort of forces exist in a lot of spheres. For instance the tech world is awash with Google-Love right now, with every hopeful Google candidate flooding the boards with pro-Google rhetoric at every chance. While Google is undoubtedly a technical superstar that is executing ideas absolutely brilliantly, it is remarkable seeing such admiration for what is essentially an internet advertising company. Where was the love for DoubleClick?

The point that I'm trying to make in this rashly authored entry is quite simply that bias is enormously pervasive, and should never be underestimated. It drives almost everything we "believe" and say. It is often a destructive noise that thwarts rational and critical analysis and thought.

Wednesday, September 21 2005

One of the most entertaining reads as of late has been the blog of one Mini-Microsoft: A well-written anonymous Microsoft insider with an axe to grind about the way the company is being run, and with some disagreements about the direction the company is headed. "Let's slim down Microsoft into a lean, mean, efficient customer pleasing profit making machine! Mini-Microsoft, Mini-Microsoft, lean-and-mean!" he petitions from the front page.

 

Mini's position isn't novel in the world of corporate worker bees. Malcontent about one's workplace, one's superiors, and compensation is close to a universal gripe. What makes Mini's rantings interesting, aside from the often humorous writing, is that it emanates from a company long considered the exception - the company that defied all of the normal rules of corporate culture. Microsoft was the one organization, we heard, where you didn't have the traditional stratification between the lordly executive - forever blameless and masking incompetence through endless restructurings - and the lowly drones that were treated as replaceable cogs. Microsoft’s developer culture, where the productive intelligent developer was king in the quest to make the best software products, was the benchmark towards which every .COM dreamer aspired when they laid out their plans for world conquest. Microsoft was the “It” employer that Google has become.  

 

Of course as organizations mature they sometimes evolve in ways that aren't compatible with some of their employees. When that happens, pretty much inevitably over an organization’s lifespan, the disgruntled will often take to the airwaves (blogwaves?) to air their grievances, grouching and griping to all who’ll listen about how great things used to be, and how things should be done if management weren’t such idiots. While they might eventually adapt, or the organization might change to accommodate them, the disaffected are far more likely to eventually move on. That sort of transition is inevitable, and as no-one should consider an employer/employee relationship a lifetime commitment, it shouldn’t come as that much of a shock.

 

Having said that I don’t think that’s the case here and it really sets Mini’s blog apart from the endless reams of ex-BigCorporation employees publicly airing their historic dirty laundry. Mini has not only earned the admiration and support of a lot of Microsoft faithful, but his position is empirically supported by Microsoft’s underperformance as of late. No doubt Microsoft does have a serious problem, and is truly an organization in crisis. Perhaps the impression will change after a cluster of long overdue products are released over the next 16 months, but it certainly is the impression today.

 

The roots of the problems are obviously varied for such a large organization, but it is nonetheless enjoyable to armchair theorize. I was given the opportunity a short while back while I was speaking with a Microsoft rep. I was asked what I thought Microsoft’s #1 problem was (must be on the call sheet question list or something). My reply was simply integration – Microsoft is so dedicated to integrating all of their products and technologies starting at v1.0, tying and cross-integrating, that the speed of development slowed to a crawl. One doesn't have to work at Microsoft to understand the threat this presents. Suddenly every delivery slip suddenly affected dozens of products, and every technology risk took on a vastly increased role. The critical dependencies between projects because pervasive, and communication channels to design and deliver products and technologies increased exponentially.

 

Couple this with the fact that the upper-level of Microsoft has become so paranoid about their dependency on platform monopolies that they are seemingly incapable of letting their incredibly capable development teams solve problems in the most effective manner. Microsoft is, for reasons I discussed previously, by far its own biggest competitor, so everything any team does you can be sure had to be approved and agreed upon based upon the strategic interest of the status quo (in particular the Office and Windows hegemony). It wasn't surprizing, for instance, when the powers that be at Microsoft reigned in the hugely successful Internet Explo

Thursday, September 22 2005

Find has some serious usability problems in most applications, particularly those that deal with complex content.

The general usage goes something like this: You are looking for a particular piece of text in a document or a webpage, so you pull up the handy find dialog, type in the desired text or pattern, and hit go. The text is found, hopefully, so the document scrolls some content into view. In amongst the reams of content there is the text that you are seeking, graphically inverted to draw attention.

Of course in a lot of current content, with varying sized text and different backgrounds and context, the colour inversion is next to useless. You're left with nothing more than the hint that the desired text is somewhere on the current page (some apps, though not all, put the found text in the center of the screen, but often that isn't possible due to document bounds. Other apps don't even properly scroll the found text into the view window, so you have to scroll backwards and forwards a bit to see if it's there). We're living in a world of extraordinarily powerful desktop computers: Use some of that fat client power and highlight the find hits better! Putting dancing angels around it. Have clippy run out and jump atop the found text (I'm only partly kidding). Do something to avoid the braindead functionality we have today. And please don't scroll the found text so that it's right behind the modeless find dialog box.

Thursday, September 22 2005

I've removed the Google Adsense ads (they might still appear in some historic entries because of the way Radio Userland updates content - unless I change something affecting the page it won't upstream for just a template change. NOTE: They also appear in the "greatest hits" static collection). I removed them because they're ugly and distracting*, and they offered such a marginal return. I also didn't like that they could be taken as promoting a bias, in a small way implying deference and submission to Google. 

You might ask "Well then why did you add them in the first place?" Good question, and thanks for asking! Let's just say that I don't have total faith in the Do No Evil creed that Google publicly espouses. I can't help but think that Google has a financial incentive to boost the search ranking of pages that host Adsense content (it's brilliant really - You go to Google and do your search, awash in Adsense, all to shuttle off to sites filled with Adsense. It's an Adsense world, baby!). I like these pages to have some search significance, so this concerned me. Add the fact that Google needs to quickly index pages hosting Adsense ads (to allow for contextually keyed ads), offering another possible advantage of hosting their ads. Alas, I'm going to trust the impartiality of Google's search algorithms...

* Isn't it remarkable how Google snuck in as the underdog in search, and then slowly started integrating text ads. "They're different," the masses cried. "They're unobtrusive and low bandwidth!" Yet here we are today and Google is now serving up loads of full-graphic ads, all views tracked by the Google Brain (the same one that knows what you search for, your email account if you use gmail, and so on), and yet the Google honeymoon continues. I think Google has achieved some enormous technical achievements, and some of their products are extraordinary (Google Maps is a fantastic use of existing technology, making the competition look like garbage), but I just don't buy into the mythology that Google is somehow exempt from the forces that drive every other corporation.

  .NET   Blogging   IT   Personal   Software Development   SQL 
Friday, September 23 2005

After finding a couple of minutes over the past couple of nights (tough when you have two young children), I finally got the survey/poll component put together, as you can see from a couple of the entries with attached surveys. Obviously these are mostly for entertainment purposes, and will only marginally track with reality (e.g. the motivated are more likely to vote, and they're more likely to encourage like minded people to vote, etc). Although none of the samples demonstrate it, the surveys allow for a multi-question format, which would allow for statistical correlations (e.g. "90% of the people who want to work for Google also say that Google is definitely not evil").

In any case it's a nice little multi-tier project with a Microsoft Access backend (as that's what my host provides), though I need to put together a SQL Server plug-in data module as well, which will be trivial (actually I'm using the OLEDB provider and a config file connection string, and technically the queries are all standard SQL, so with the same schema the same module should work. It's late and I'm tired, so I haven't really thought this through). It uses copious caching, so it's actually fairly performant (especially for a relatively low volume blog like this). Anyhoo, after I clean it up a bit, and add a basic administration page, I'm considering releasing the source. I'm sure there are plenty of craptacular competitors that do the same thing, but I think it's pretty elegant.

Earlier EntriesLater Entries

Dennis Forbes