Thursday, February 24, 2005

Meeting Bill Gates

My CEO met Bill Gates recently - and the local media picked up the story. As far as I know they discussed a Unix-to-Windows port of one of our products. I could imagine that Gates was quite pleased to hear about it, after all the recent press coverage of potential Linux-migration projects, mainly in the public sector.

Anyway, if I had the chance to meet Bill Gates, I would ask him about some code details of his 4K Altair Basic from 1975. ;-)

Wednesday, February 23, 2005

The Breakneck Race To Create Windows NT

I am currently reading "Showstopper! - The Breakneck Race To Create Windows NT". As most of you are familiar with, Dave Cutler, creator of VMS, left Digital Equipment to join Microsoft and to lead the development on creating Microsoft's next generation operating system in 1988.

What might be less known is that the initial project goals were quite different from what turned out to be Windows NT 3.1 about five years later. NT was aimed to be the successor of OS/2, Microsoft's and IBM's joint operating system. One of the first requirements was OS/2 compatibility. As a matter of fact, NT was originally called "OS/2 3.0", and later on "NT OS/2". Working on the OS/2 flavor of NT also caused some tension between the former DEC engineers who had come with Cutler over to Microsoft, and Microsoft's OS/2 developers. Anyway, OS/2 compatibility was dropped when Microsoft chose to back out of OS/2 in favor of Windows.

Another surprising fact is that DEC became increasingly interested on the NT port for their new Alpha processor when then-under-development NT gained momentum in the beginning of the 90's. What a late victory that must have been for Cutler, whose efforts on building DEC's new operating system "Mica" for their then brand-new RISC-platform Prism were futile, when DEC cancelled the project in 1988, which lead to Cutler's departure.

Thursday, February 17, 2005

More Macintosh Nostalgia

Macintosh software legend Andy Hertzfeld maintains The Original Macintosh, a blog full of anecdotes about the development of Apple's original Macintosh computer, and the people who created it.

Plus: the Apple 1984 Newsweek Advertising Insert

In the Fall of 1984 Apple published a 16-page (with fold-out) advertising insert in Newsweek magazine. For many, this was the first "up-close" experience with a Macintosh - detailing the radical features of this new computer. The Macintosh was obviously evolving during the production of this insert as applications, icons and even hardware change from one photo to the next (and are often different from what actually made it to the shipping product). Also, in stark contrast to more recent advertising, this brochure actually makes direct comparisons to the competition with ample text to go along with the pictures.

In addition to the full-page scans of the brochure, you’'ll also find larger detail images of certain areas - screenshots, people and hardware that benefit from a closer look.

Wednesday, February 16, 2005

The Lost Tape

Mac user Scott Knaster kept this Betamax video tape of the Macintosh launch in 1984 for 21 years. Here is the Quicktime version.

Hello, I am Macintosh.

It sure is great to get out of that bag. As unaccustomed as I am to public speaking, I'd like to share with you a maxim I thought of the first time I met an IBM mainframe: Never trust a computer you can't lift.

Obviously I can talk, but right now I'd like sit back and listen. So it is with considerable pride that I introduce a man who's been like a father to me, Steve Jobs.

Tuesday, February 15, 2005

It's The People, Not The Process

So, your organization has a standardized process model? Maybe they are even at CMM level 3 or above or a certified Six Sigma company? Well, congratulations! The rationale behind those efforts is most likely an honorable one: improving your product quality by improving your process quality. Besides, a certification certainly helps to stay competitive in bid invitation procedures, especially in case of public sector contracts.

A somewhat less optimistic interpretation would be that some companies install all those process models mainly because management doesn't trust its own employees, and think they need constant hand-holding. Or that they try to turn their employees into replaceable parts - after all, it's the process that counts, and every new hire can easily learn all what needs to be known from those funny flow diagrams and process descriptions. Or the head of QA just wants that Six Sigma certificate... framed on his desk.

Don't get me wrong - it's a good thing to constantly review and improve how things are done. There is nothing wrong with having a well-defined approach on how to run software projects, standard documents and checklists, or the cumulated experience of many long-serving co-workers written down somewhere. But: all of this will never be a substitute for hiring, supporting, motivating, challenging bright and hard-working people. Top notch employees are going to figure how to do it right anyway, while others will still manage to screw it - with or without process model.

Bill Lumbergh, bureaucratic archetype (from the movie "Office Space")

And when you find out your management cares more about whether you filled out those annoying TPS reports than what they care about you and your working environment, it's time to grab that red stapler and move on...

Related Posting: Widget Factory Software Organizations

Saturday, February 12, 2005

Lamest Program Startup Ever

Don't you also just hate to watch Adobe Acrobat Reader wasting your time on initializing twenty million plugins that you are never going to use? That pathetic splash screen, which lists one plugin after the other, while the system locks up for a minute or so. I don't want Extended Accessibility, XML Forms, Digital Signatures, DRM, ECMA Script, Barcode Support, SendMail, SOAP, ... - I just want to see my freaking PDF!

It's already quite annoying on a hi-end workstation, and turns into a nightmare on older and slower machines. As far as I remember, it got progressively worse from Acrobat Reader 4 on, but version 6 is the last straw (I heard that version 7 improved, though). Once I tried to downgrade to version 4, that didn't work either for the Acrobat ActiveX which runs via OLE within my browser, and is still as of version 6 (clean COM de-registration, anybody?).

I really appreciate most of Adobe's products, but here they violated some of the most basic usability principles. I know those plugins make sense for some folks, but then - please - let them be activated selectively, and leave them off by default. Or: initialize them once they are needed, and not before.

Anyway, there is remedy: AR-Speedup lets you deactivate Acrobat Reader plugins with just some mouseclicks. Or alternatively, why not give Foxit PDF Reader a try?

Friday, February 11, 2005

Lessons Learned From This Week's Enterprise Services Workshop

  • Design your services with care (esp. their granularity). Analyze your business services well, and shape your enterprise services around them. Avoid CRUD-like services.

  • Apply the Service Agent pattern on the client-side, and provide a central Dispatch-Service on the server-side. Build stateless services only (your state is the database).

  • Build a webservice wrapper around your enterprise services, and call against those wrappers during development time. This ensures your services work fine on top of a SOAP stack as well.

  • DataSets have a much larger memory footprint than I would have expected. Don't transfer them over the wire, and don't clutter your services with DataSets (imagine hundreds or thousands of DataSets residing in server memory in parallel during concurrent service requests) - which ultimately results to: don't use them at all in an enterprise application scenario.

  • Adopt plain old objects (valueholders only) instead of DataSets. Code them in C#. Wrap them inside messages for inter-tier communication (composed of objects, collections of objects and control data), and use tools like xsd.exe for automatic XSD creation.

  • Implement your own custom databinding for WinForms. Consider a generic validation mechanism, and try to re-use it on the server-side as well.

  • For large numbers of DataRows on the client, e.g. being display by a grid, plan for an efficient paging mechanism.

  • Use COM+ infrastructure features like descriptive transaction management, container-managed security, component pooling, connection pooling, etc. (my words, my words)

  • I probably overestimated the scalability- and performance-benefit of global database connection pooling (on a central application server), when the client is a WinForms application (which may alternatively run its business logic locally within InProc COM+ / Intranet of course). Esp. SQLServer can easily handle several thousand open connections. Although it's an important issue (and another benefit the application server provides), it is not of the same essence as on web applications, where no pooling would imply constant re-connect (deathblow for response time).

  • Script COM+ application deployment and configuration. Don't deploy it manually - it's too error-prone.

  • Avoid DataAdapters (another consequence of avoiding Datasets). Work with IDataReader resp. directly with IDBCommand.

Wednesday, February 09, 2005

Farewell To Carly

I am certainly not going to join the somewhat misogynous canon reflected by many of today's responses on Carly Fiorina's resignation from HP's CEO seat. Just some well-known, and other probably not-so-well-known facts about the Most Respected Business Leader #8 of 2004 (regarding to a Price Waterhouse Cooper survey):

  • Fiorina - when still at Lucent - might have been the business world's darling, but also shared responsibility for several acquisitions and financing activities, which turned out to be extraordinarily painful: USD 825 million lost on the infamous Winstar-investment, loans to Global Crossing,, Jato, JNA telecommunications - most of them out of business today.

  • In October 1998 Fortune magazine named Carly Fiorina America's most powerful female executive. Some say this was quite an overstatement - but her public relations efforts had always been excellent. HP's board stumbled over that Fortune article when in search for a new CEO (Lew Platt was about to retire).

  • Fiorina left Lucent in July 1999 for HP's top position. In December 1999 Lucent came short of its revenue targets by USD 1 billion for the latest quarter alone. One cannot deny that Fiorina - who at that time was President of Lucent's Global Service Provider Business - was at least to be held partly accountable for these results.

  • Finally at HP, she managed to merge with / acquire Compaq. An heroic effort on one hand. On the other hand many people doubted the sense this merger made from a business point of view (including the Hewlett and Packard families). One of the main reason for Compaq's decline had been its acquisition of struggling former midrange-system star DEC in 1998. Fiorina finally got rid of Walter Hewlett's opposition in conjunction with an ugly lawsuit. Years later, HP was still bleeding from the Compaq merger - the two companies were just too different, some of the top-notch Compaq people left.

  • In the meantime, printers remain as HP's only real cash cow, HP and Compaq combined are beaten by Dell in the PC market, server and storage systems on a steady decline, a distant fifth place in worldwide IT-services, far behind IBM.

And HP's share value trend during more than five years of Fiorina's regency? Let's have a look:

Sun Microsystems' Scott McNealy, never short of words: "HP? A great printer company."

Monday, February 07, 2005

The Joy Of Reading

I am currently reading two Linux books from O'Reilly: Understanding the Linux Kernel and Linux Device Drivers.

It's not that I am using Linux intensively at the moment. I have SuSe 8.1 installed in DualBoot mode, mainly for playing around with KDE and OpenOffice, and for experimenting with Java under Linux. And I run the Visual Chat Webserver on Red Hat. But I am far from being a Linux expert.

No, but those books attracted my general interest in modern operating systems. While I know I will never be working on the actual implementation of an OS (actually Windows NT and Linux might have been the last time that any microcomputer operating systems had been designed from the scratch - yes Linux runs on zSeries today as well), and probably also won't implement a device driver in the near future, it's still great fun to read those works - more than purely theoretical ones (e.g. Andrew Tanenbaum's "Modern Operating Systems" certainly is a great book, but just not that kind I will finish at once during a reading week. It serves me well as my primary reference, though).

I'm actually starting to dig into the Linux kernel code for the first time (some of my colleagues at college compiled their own Linux kernel just for the fun of it - that was back in the mid-nineties). I might as well have started reading about Windows kernel internals or programming Windows drivers. While there is plenty of literature about these topics, I doubt that those books describe the reasoning behind the system designs in such great detail.

When you choose a subject because of personal interest, it's just much more likely you get into a reading flow. That's unlike other stuff that I must acquaint myself with, e.g. because of work. I bought three books about Service Oriented Architecture lately in preparation for a SOA workshop that I am going to attend, but the topic is quite dry, and I am still struggling with the first chapters.

Sunday, February 06, 2005

.NET Reflector

Today I want to take the opportunity and express my appreciation for Lutz Roeder's .NET Reflector, the best .NET decompiler (that I know of). Oh, and it's freeware by the way.

On more than one occasion .NET Reflector has really saved the day in our projects - we mainly use it for finding workarounds for bugs in third party libraries (when the sourcecode is not on hand). And it is an indispensable tool for understanding the inner workings of Microsoft's .NET Framework. Contrary to what Sun did with Java, the .NET Framework code is not publicly available.

Reflector's main strengths are its decompiling capabilities as well as its graphical user interface. Unlike many other decompilers, it allows to browse through class hierarchies and call chains in a very intuitive way.

Great work Lutz!

Saturday, February 05, 2005

EBay'ed A SPARCstation

I have been trying for a while, and yesterday I succeeded winning an eBay auction for my own Sun Microsystems SPARCstation 5 (for EUR 25.50, in case you wondered).

OK, there is no Sun monitor included, and it's probably not in the same condition as on the image above.

Having my private Sun at home would have been unthinkable some years ago. The first time I sat in front of the purple box was back in 1992 at university. For me, this kind of computing power - standing on my desk - had been unheard of before. I don't remember the exact specs, but I think it was a SPARCStation 2 running SunOS 4 (before it became Solaris), and what I also know is that we used Patrick Naughton's famous screensaver. The hard-disk's capacity was about 400MB, five times more than the one of my private Atari TT workstation back then.

Later - during my first employment - I actually did some Java training at Sun in 1997, using a SPARCstation similar to the one I purchased now. And our middleware was running on a Sun Ultra Enterprise Dualprocessor system, but I hardly got to see it - we still had our Windows machines and connected to the development and testing machines using Hummingbird's eXceed X11 for Windows.

Friday, February 04, 2005

Pid = Fork()

What might that stand for in a geek's (=my) personal life? Today it's your turn to guess... ;-)

Thursday, February 03, 2005

Disappearing WinForms Controls in VS.NET 2003

So, Microsoft has confirmed that there actually is an issue of controls disappearing on the VS.NET 2003 WinForms designer. Tell me something I didn't know yet!

In our current C# project, we used to have constant problems with WinForms designer destroying control code, although the symptoms seem slightly different from those described on MSDN resp. by Shawn Burke. The designer-generated code (in Form.InitializeComponent()) of the affected control was still there, just the ContainerControl.Controls.Add() command on the control's parent had been killed by the designer.

We somehow figured out this had to do with the order in which the controls were declared and created. Again, it's the designer that breeds this code. Now we solved this issue by manually rearranging the order of control declarations and instantiations (parent-control MUST ALWAYS GO BEFORE child-control), and adding the missing Add() command at the end - this way the designer stopped corrupting our forms.

I guess this might be the case once the parent-control is added to the form AFTER the child-control, and when the child-control is then being dragged into the parent-control. Still it only happens under certain conditions.

And another thing: complex forms take years to open in the designer view. Our record form: three minutes and counting (and we do have fast developer machines). We only dare to open it once we REALLY REALLY mean to work on it for a while.

I think it's about time for VS.NET 2003 Service Pack 1. As of today, I would have to contact Microsoft in order to obtain a hotfix.

Wednesday, February 02, 2005

Windows - A Software Engineering Odyssey

Mark Lucovsky (Distinguished Engineer at Microsoft, who had been a member of the original Windows NT group lead by Dave Cutler), held this presentation about the Windows NT project at the Usenix Windows System Symposium in fall 2000 - very interesting stuff.