Paul Graham recently switched to the Mac. Tim Bray is considering switching away from the Mac for various reasons.
On an entirely different topic: Paul Graham has a great idea what to do with that nasty Designed for Windows XP stickers that disfigure otherwise fine hardware.
My weblog has been the victim of a blog spammer yesterday. F*cking a**hole. It took me half an hour today to clean out the comment and trackback spam. So, for now, I have disabled trackback pings for this weblog. Comments are still open.
From the C++ Connections conference website:
Conference dress is comfortable and casual. Temperatures in Las Vegas are about 70° F (21°C) in November. The session rooms are air conditioned so you may want to bring a sweater.
I'll let the last sentence speak for itself.
Found these three great essays by Jack W. Reeves about code as design. The first of these essays has originally been published in the Fall 1992 issue of C++ Journal. The second essay is a follow-up written 13 years later. The third essay is the original letter written to the editor of C++ Journal that then lead to the publication of the first essay.
All that is being said in these essays is still valid today — most notable the core statement: In software development, the design document is a source code listing.
Following are some of the thoughts that popped up while reading the essays.
There is that silly idea in the software engineering community that we have A-level software engineers that create the design (in these days, in the form of UML diagrams). Once the design is completed, an armada of B-level developers then translates the design into C/C++/Java/etc. code. Finally, there are those poor C-level developers (also known as the QA department) writing the test cases. Lying below this is the misconception that programming is some kind of assembly line job, while drawing UML diagrams and writing design documents (and staying away from source code) is actual software engineering. Wrong wrong wrong.
Let's compare this to the way a new aircraft type is created. First, a design is created using various CAD tools. This design is then validated and tested using sophisticated simulation and modeling tools. Once these first tests show promising results, various models are built which are then tested in wind tunnels. Finally, one or more prototypes are built which are then flown by highly experienced test pilots (with a solid understanding of aircraft engineering). The results from test flights can lead to significant changes in the aircraft, causing the engineers literally go back to the drawing board. Finally, after many years and many prototypes (some of them possibly having crashed), assembly-line production of the airplane starts.
So, now imagine for a second what it would be like if airplanes would be created the way we expect software to be built: First, a bunch of highly skilled A-level aerospace engineers draw up an aircraft design using a CAD tool. A bunch of B-level engineers then build a prototype, based on the CAD drawings, which is then test flown by a pilot who has just completed his basic pilot training. Ouch.
Why, then, are we expecting software development to work this way?
Personally, I do not consider a software design finished until I see working code. Testing and debugging is not a sign of a bad engineering in an earlier stage, but an integral part of the design process (in other disciplines, this is called design verification). The same way that test flights are an integral part of creating a new aircraft type.
Ken Klein's (WindRiver CEO) keynote at Embedded Systems Conference San Francisco is available as a transcript at linuxdevices.com.
Short summary:
One: Get over Do It Yourself (concentrate your attention on innovating at the application level)
Two: Share (information, skills and tools)
Three: Do not take change personally
Four: Manage up (talk to your managers)
Five: Just say yes (to change)
Release 0.91.3 of the C++ Portable Components adds support for Sun Solaris and Sun Forte C++ with STLport. No new features have been added this time.
Peter Seebach at IBM DeveloperWorks writes how the Mac mini can be used as an embedded development platform.
Need help writing your business plan? Check out the Web Economy Bullshit Generator for some fresh ideas.
Found this while cleaning up my bookmarks collection...
Have a look at GoogleX. That dock imitation is really nice.
Update: seems to be no longer available. Does Google fear the Wrath of Apple?
There is some fresh open-source software at Google Code.
While I am generally a big fan of Perforce, the Perforce Source Code Control Plugin for Visual Studio .NET tends to drive me crazy. This is probably not so much the fault of Perforce, but rather a consequence of the brain-dead SCC plugin API provided by Visual Studio. So, here is, mainly for future reference by myself, a description of how to remove a SCC plugin from Visual Studio.
1. Launch RegEdit
2. Find HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider
3. Delete all values under that key
4. Find HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders
5. Delete all values referencing the SCC plugin to remove (e.g., p4scc.dll)
Note: Of course you can also remove the Perforce SCC plugin via the Perforce installer. Provided that you still have it on your system...
For various work-related purposes I decided to buyinvest in a Windows notebook. Read on for some experiences with my brand new Sony Vaio VGN-FS115M.

Being an Apple PowerBook user for many years now (the PowerBook will probably remain my primary computer for years to come), I have strong demands regarding the design and feel of a notebook. For example, all these extra buttons and status LC displays found on many notebooks make me crazy. For a while I worked with an Acer notebook that had a big button labelled "Arcade" right beneath where I use to rest my left hand palm. Pushing this button would start up kind of a full-screen media player application. Unfortunately, due to the button's location, I often hit it accidently, resulting in unwanted work interruptions.
After having the look of the various notebook offerings, I settled on the Sony Vaio VGN-FS115M. It is quite slim and lightweight, has a nice 15 inch widescreen display (Sony's super-bright X-black display technology plays in a league of its own), and has a decent design, however, still being miles away from the superior design of a PowerBook.
Unfortunately, the Vaio came with Windows XP Home (German) preinstalled, with is, in a word, unacceptable for me. So I made a recovery DVD (you never know...) and installed XP Professional (US English) from scratch — after all, I have to put the 1300 Euros I paid for my MSDN subscription to some use...
After the basic XP system was installed, as one would expect, the typical Windows-related driver problems started. First I downloaded the drivers and tools packages from the Sony support web site, which is actually quite useful. Then I installed the various drivers, some via the device manager, others by running their setup application. All went well until I came to the audio driver. The setup for the Realtek ALC260 aborted in the middle of the installation process with a quite informative "The Microsoft bus driver must be loaded..." error message, leaving my system with a partly installed audio driver. After some trial-and-error (re-installing other drivers, playing with the device manager, etc.) I decided to download the driver directly from the Realtek web site (the download speed was painfully slow). Luckily, the new driver installed successfully. Now that I have the basic system up and running, I am probably gonna spend another day making it usable (installing software, turning off all of the annoying Windows XP TheUserIsTooStupidForAnything options, etc.).
Update: I tried to install a newer release of the NVidia universal video driver, but during installation it claimed that it could not find supported hardware, despite the notebook's video chipset (nVidia GeForce Go 6200) being listed as supported. Okay, so I'll keep the older one.
Currently Visual Studio .NET is being installed, so in the meanwhile a few notes on the hardware. Overall manufacturing quality is quite good, as one would expect from Sony. The display is great, the keyboard is good, though not as good as the one from my PowerBook. The trackpad is a little bit too insensitive for my taste; it does not react to finger movements immediately, there is an initial delay of about 100-200 ms before the cursor starts to follow the finger movements. I will need to get used to that.
Other Random Notes
The design of the notebook ends at the power adapter. The same impractical black brick as used by every other Windows notebook. Battery time is about 2 hours when doing basic web surfing. Not that great, but that's not how the notebook will be used anyway. The notebook's fan is silent and I cannot hear the hard disk at all. Performance is as one would expect from an 1.6 GHz Pentium M — sufficient for the intended use of the notebook, which is demonstrating some applications, giving presentations and occasional development.
Overall, I find the notebook quite okay, considering the price I paid for it — 1129 Euros, excluding VAT.
Following are just a few of the many things I really love to see in someone else's code that I have to take over for maintenance.
All seen in production code near you...
Mark Lucovsky vs. Kevin Schofield.
But, come on Kevin, comparing Windows development to the Apollo project is a bit bold, isn't it?
Jonathan Schwartz posted some takeaways from a recent Sun Executive Advisory Council, this time targeted not at CxO's, but instead at IT architects and developers. A few highlights [with my unworthy remarks added]:
Only the anti-RedHat propaganda becomes a bit boring with the time...

At this year's Embedded Systems Conference Boston, taking place from September 12-15, I will be giving a class on “Designing and Building Portable Systems in C++". More details will follow as they become available.
Yesterday I received the confirmation that my submission has been accepted and I am really looking forward to the conference!
(Photo by FreeFoto.com)
$ curl -C - -o sol-10-GA-x86-v1-iso.zip http://192.18.97.186/ECom/EComTicketServlet/.../sol-10-GA-x86-v1-iso.zip
** Resuming transfer from byte position 226073732
% Total % Received % Xferd Average Speed Time Curr.
Dload Upload Total Current Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:00 --:--:-- 0
curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume.
Come on Sun, I know you can do better...
Macworld has an 78 minute long MP3 of a panel discussion with the Mac inventors held at Macworld Boston in July 2004. Featuring Bill Atkinson (who now really is a nature photographer), Andy Hertzfeld, Jerry Manock and Jef Raskin and hosted by New York Times columnist David Pogue. Listen to it while it's there — it will only be available for a limited time.