Random Thoughts

Tech, words and musings from an Englishman in Seattle

Seattle TechCrunch Party

This evening's entertainment was the TechCrunch Party in downtown Seattle. Nice venue, if a tad hot, and it was cool to see all the local entrepreneurial talent out in force.

I got to catch up with a few people I'd met at various NWEN events and chat to way too many Microsoft people. Is it just me, or did every other person seem to be from Microsoft? :-)

I also, finally, got to meet John Cook in person and thank him for the Stealth Startup of the Week post where he wrote about us.

But the star of the evening was probably the pizza.

I have never seen as much pizza before in my entire life. There must have been at least ten stacks of six boxes of pizza - 20" pizza - and it was constantly being refreshed…

Overall, very cool. The local startup community needs more events like this.

Audio Acceleration on the GPU?

This post, ATI eyes audio acceleration on the GPU, had me remenicing about the early days of Direct3D again.

What most people don't realize is that in the early days on Direct3D many of the 3D accelerators (or sometimes “decelerators”1) where in fact very general purpose DSPs. At that point in time (mid-1995) many of the hardware guys were very surprised at the rapid mindshare growth of consumer 3D hardware. We're talking people like Evans and Sutherland, SGI, etc…

Brief interlude.

Regarding Direct3D and the following OpenGL v. Direct3D wars, one point I feel is worth making is that if it were not for Direct3D, we would not have the gaming platforms that we have today.

In 1995, 3D was stalled, noone was innovating and OpenGL was stagnant. It was only after the release of Direct3D that OpenGL started to make any headway.

In fact, at lunch during the hardware guys' day at Aftermath event, we put a pre-release PS1 on the main video screen running Tekken in demo mode. You could see the palpable fear in most of the hardware guys' faces. “What is that?” “That's not realtime.” These guys, with very few exceptions, were missing the boat.

End of interlude, now where was I?

Many hardware startups in the Valley at that time were putting together DSP based ISA (or even the new PCI) boards to offload modem, audio and other functionality from the overwhelmed CPU.

These guys recognized a good thing when they saw it and decided that they could add 3D graphics too. It's all just vector math isn't it?

The Chromatic Mpact part was a case in point. It was a modem, an audio card and a 3D accelerator all rolled into one! Step right up! Well, until you tried to run a few thousand triangles per second through it. Mind you, they had some very cool booths at the shows.

None of the parts of this generation performed triangle setup (apart from the 3DFX Voodoo 1) and they all sucked to one degree or another.

But a special place in my heart is taken by the Rendition Veritee 1000.

Rendition was a true entrepreneureal company built by engineers. Those guys were great. They were the only guys to have hardware ready for Comdex 1995 where we (or rather Ty Graham, our hardware evangelist) showed hardware-accelerated Direct3D for the first time.

Servan (one of the founders of RenderMorphics) and I had locked ourselves away in an office on campus after the Aftermath event and we had a week until Comdex. We finished the driver model, an API that could drive it and had the famous2 “tunnel” sample running on it.

But for a driver model we needed a driver and some hardware. Here was where Rendition really stepped up. One of the guys from Rendition came up to Redmond and basically lived with us. He was writing driver code while we were writing the driver model. Talk about bleeding edge.

The prototype, hot off the chip foundry, V1000 was mounted on a red prototype board with a fan glued to it. Unfortunately, when plugged into the bus on the machines we had, the board was upside down and every hour or so the glue would melt and the fan would fall off. Much hilarity ensued. Much pizza was eaten.

At four in the morning on the first day of Comdex, Ty walked into the office, already late for his flight to Vegas, and witnessed tunnel running at lightning frame rates. We packed up the dev machine in a flight case and off he went - by all accounts everyone was awed by this cheap piece of consumer 3D hardware.

I still have that board.

But that's not the point of this narrative.

The point is that the V1000 was a DSP based part that stored it's microcode in it's onboard memory in an address space just below VGA memory.

Which meant that any bug in the driver, especially the clipping code, caused Direct3D to render triangle fragments all over the microcode. It didn't just blue screen. Can you say hard lockup, push the big red reset button?

And here's my other point. Man, was that fun.

[Thanks to Ars Technica for the link.]

1 This term was originally applied to one the first parts out of S3 and I think, ahem, that I coined it… 

Daycare in Kirland

Ever since Julian was a year old he's been attending daycare in downtown Kirkland.

For the most part this has been a wonderful experience - he's gone from the baby room to the toddler room to the infant room. All his teachers have been great, and I have nothing but great things to say about them.

I believe that it was there that he actually walked for the first time, before we witnessed it for the first time - the morning after he walked and Nabila and I were in tears I told his teachers that about it, only to be greeted with a wry smile :-)

But, at the end of the day it's a business and they have quotas to fill - they need to bring as many children in as possible and structure their classrooms to accommodate them.

But daycare ain't like getting your car serviced.

There are emotional issues at play here.

Our kid has been there for almost two years, and has grown there. I have the utmost respect for their program and what they have given us, but I will not have my kid pushed out of the classroom he deserves to be in because getting another customer requires denying him that place.

I'm a parent and damn it, we were there first :-) Hmm, things get a little irrational when your boy is being stiffed.

Anyhow, time to have a discussion with the director… I'll let you know how that pans out.

Brighton's West Pier in Windows Live Local

I'd just heard that Microsoft have added Bird's Eye imagery for the UK to Windows Live Local, so I thought I'd check out the area in which I grew up - the south coast of England.

Well, it looks like there's only imagery for the coast in Brighton, but what I did see was a great before and after.

The aerial images seems to have been taken before the West Pier's most recent collapse:

Whereas the bird's eye images are post-collapse:

Here's a link to the area on Live Local, and you can read more about the West Pier's problems over at the BBC.

A Family Through Time

I've been meaning to do something like this, but now I'm absolutely going to do it.

Here is the family of an Argentinian man, photographed on the same day every year since 1976.


[Thanks to Thomas Hawk for the link.]

An OSX Unicode Challenge

Say you have a unicode string that contains a full path filename.

Now, open that file.

That's it. That's the challenge. The filename must not be converted into a non-unicode form and you must use the Carbon APIs. No dipping into Posix and non-unicode land.

Bonus points for the fewest API calls and shortest code.

Of course on Windows it's just one call - CreateFileW(), but for the life of me I can't figure out how to do it succinctly on OSX.

Unicode On OSX

I admit that the last time I did any active *nix development was over ten years ago, when Unicode was just a dream, but can anyone explain to me why Unicode development on OSX is such a cluster?

Joe and I were discussing strings today and the fact that as engineers we go to extreme lengths to avoid having anything to do with them.

Windows Unicode support just works and the APIs are very orthogonol, but in OSX it just seems to be all over the map Char256, UnicodeChar, blah di blah.

Oh and wchar_t is 4 bytes. What's up with that?

Basically we're looking for XML parsing support that is API compatible across all platforms and Unicode aware. Expat is our current foundation of choice, but it just doesn't work compiled for Unicode on OSX, buts runs perfectly on Windows.

Note that I'm not ragging on expat - it's a fine library and Joe has been talking to it's author, but apparently no one has tried to use it that way before.

Looks like we'll be making our first contribution to an Open Source project.

Anyhow, anyone got any rationale or pointers?

One To Watch: Parenting Mind Tricks

Thanks for ParentHacks for this link to Jay Andrew Allen's blog.

He's starting a series of posts on Parenting Mind Tricks. And I love the first one as it's something I continuously think about, though not in such great detail.

“Imagine Your Child's Memoirs”.

Whenever I'm down or frustrated with the whole parenting thing, or as Jay says “lash out at those I love when my mind convinces me that I'm justified in being an asshole”, I later think about what Julian might be thinking about Dad, or what he might think in the future.

The little dude ain't winding me up on purpose (well, maybe just a little). Time to be the adult.

Anyhow, a blog to watch.

Live Streaming In Second Life

This afternoon I was mucking around in Second Life when a very interesting thing happened.

I had just bought some land in the “podcasting neighbourhood” - near someone quite well known who has a castle, and was checking out (in a nice way) my new neighbours.

Anyhow, I stumbled upon bluggcast who owns a nice piece of waterfront next to the Curry Castle and we started chatting.

It turns out that the music I was hearing was his live shoutcast stream which he was feeding from a laptop in his hotel room in Boston.

While he was chatting to me.

It was fun to hear him give a shout out to me over his live stream.

I tell ya, visceral experiences of all types are melding…

Tags: .

Kirkland Half Marathon

On Sunday, my guitar playing, soon to be emigrating to Toronto, buddy CJ, completed his first half marathon. To say we're all incredibly proud of him would be an understatement.

Even though he was fighting off a cold, he completed the torture-test in just under two hours.

My hat is off to you man, even though you looked half-dead at the finish line :-)


More photos from the day are over on Flickr.

OS X Developer Tools

Am I missing something?

Now that CodeWarrior appears to be dead as far as Mac development goes, the only option appears to be Xcode - the free development toolsuite shipped by Apple.

Now, leaving aside the fact that Xcode's UI and workflow appears to have been written by a monkey on acid, it does appear to work fine, with one exception.

The debugger.

Now, gdb is a fine debugger, but it is basically a console based debugger and works fine when used in the environment for which it was designed. I cut my debugging teeth using gdb back in the '80s. In fact, I had to build the remote end of gdb for the Amiga so that I could do some cross-complilation game development.

But that's another story.

Xcode uses gdb as it's debugger, thinly veiling it with some shoddy UI that is constantly getting itself out of sync and generally not working well. Especially when you're working on multi-threaded code.

Now, I'm also a big user of cdb/ntsd on Windows - again, console debuggers. But their usage has a time and a place. Productivity is vastly increased by great visual debugging tools.

This is where Microsoft completely shines. Visual Studio is a great debugger - say what you will about the build tools, language support, etc… but VC is a great debugger for user-mode applications.

This is why Windows is the platform that it is. Microsoft gets it. To get massive developer support, you need great developer tools1. If Apple wants massive platform support from the developers, they've got to improve the Xcode debugger. Like, actually provide one.

As a developer, I don't want to be beating my head up against the wall because of the tools, and unfortunately Xcode is giving me a nice, shiny, bruise on my forehead.

And don't get me started on the Carbon SDK, but I think that's a post for another time…

1 Coincidentally, this is why the Xbox 360 is a far easier platform to develop for than the PS3. 

Looking For A Startup Job?

So over at SwitchGear we're working on some pretty cool technology and we'd love to hear from some seriously stellar engineers wanting a piece of the startup action.

We're looking for people with the ability to get deep with multithreaded code, high performance networking stacks, encryption tech and high availability software services,

The ability to go from kernel to UI is a definite plus, and as we're cross-platform from day one experience in any (or all) of Windows, OSX and Linux would be ultra-cool.

As we're bootstrapping the company, compensation will be “interestingly non-conventional” for a while.

The positions will be based at our office in Bellevue, WA.

So if you want to get in on the ground floor, drop me a line at steve@switchgearsoftware.com.

OSX Widget - gapingvoid

I recently listened to an episode of the Gillmor Gang which had Hugh MacLeod (of gapingvoid.com fame) as a guest.

Hugh is a brilliant cartoonist and marketing guru and was asking if anyone wanted to build a widget for blogs that could display the latest cartoon whenever someone visited.

Well, I'd recently been feeling the urge to try my hand at building a dashboard widget for OSX, so I thought I'd ignore the requested target platform (others have been solving that problem) and try something a little different by building a dashboard widget for gapingvoid.

Here it is:


You can download the widget at /downloads/gapingvoid.wdgt.zip.

The widget pulls the rss feed from gapingvoid whenever it is shown at a maximum update rate of once per hour - there's a button to force a refresh.

Let me know what you think.

Update: For those of you that haven't installed a dashboard widget before, here are Apple's standard instructions:

Mac OS X 10.4 Tiger is required. If you're using Safari, click the download link. When the widget download is complete, show Dashboard, click the Plus sign to display the Widget Bar and click the widget's icon in the Widget Bar to open it.

If you're using a browser other than Safari, click the download link. When the widget download is complete, unarchive it and place it in /Library/Widgets/ in your home folder. Show Dashboard, click the Plus sign to display the Widget Bar and click the widget's icon in the Widget Bar to open it.

Basically if you're using safari, you're set. Otherwise just follow Apple's instructions or you can just unzip the archive and double-click the resulting widget in a Finder window.

Update 5/10/06 Version 1.1 - Minor bug fix to the widget that addresses a couple of bugs regarding how it figures out what is the latest cartoon.

Apparently Graphics Are Optional

This might sound a bit heretical from someone who spent the last eleven years of his life working on graphics engine (just go and look at the screenshots for Flight Simulator X - mmmmm yummy), but you need more than just a great engine to ship product. It'd be nice if you had a reasonably nice one though.

In fact, you don't need a great graphics engine at all.

Just take a look at Second Life.

The graphics are, to put it mildly, pants.

Circa 1996 pants, and that's being generous.

But of course, that doesn't matter because they're not selling to the hardcore FPS gamer, and they are making a crap load of money (and raising a load of funding too).

They're building a great experience that appeals to a lot of people.

Good for them, but the graphics still offend my sensibilities - I think they get away with it because their customer base just doesn't know any better.

And don't give me any of that “but our customers' machine capabilities are all over the map - writing engines that work on the full range of machines from no 3D hardware to the latest NVidia monster is hard.”

Yes, it's hard. But everyone else in the industry has been solving that problem for years. Just hire a couple of decent engineers1.

Imagine what it would be like with an engine with the quality of FlightSim or Guild Wars

Now that would be something to write home about.

1 Well, maybe they have - their upcoming features for the next build of the client claims “now with hardware lighting!”. Whoop-de-doo. 

Man, Am I Getting Hammered By Spam

The load average on my server has hit the roof as I've been getting around 100 comment spam attempts a minute over the past few days.

All comments are currently moderated to save the page rebuild hit when I have to go and delete the spam, but the pure act of many attempts per second right now is not helping matters.

Anyhow, the load average has dropped to a more respectable 0.01 as opposed to the 22 of a few minutes ago.


Tags: .

The New Apple Ads

I like them, but they're playing a little loosely with the truth.

For example, in Viruses they imply that Mac's don't get viruses, which is obviously not true. Right now they just have a lot less. I wonder how many people are going to start complaining when the rate of infection increases.

As Dave Winer points out:

And the ad about viruses is just plain STUPID. Man are they asking for it. What happens when users who bought Macs thinking they couldn't get viruses all of a sudden are getting them. The Federal Trade Commission is going to love that. Can you spell Class Action Lawsuit?

Next, the iLife ad.

Yes, when you buy a Mac, you get iLife. But when iLife gets upgraded, you've got to buy the new version if you want the it. Even if you buy the new version of the OS (i.e. when upgrading to Tiger from Panther), you don't get the latest version of iLife with it.

I.e. one hardware purchase == one version of OSX == one version of iLife.

Nice ads, but a little hazy on the truth.

© 2001 to present, Steve Lacey.