Monday, June 2, 2008


Ok, this has me impressed:
One of our applications is an energy trading platform, parts of which have a stringent bug-fix time requirement: 15 minutes from bug report till fix or our customer gets hit with crippling fines. Those applications are deployed without sealing them, so when we get a bug report we connect to the machine and see an open debugger on the thread that failed while the rest of the application happily purs along; we modify the code and/or data in the debugger and hit the continue button, nearly always within this 15 min time frame. We then code up a permanent fix in our shop and hoist this permanent patch in the production server /while/ it is running. Again something that is mostly impossible in dead-code systems.

Mr. Reinout Heeck is talking about Smalltalk. Recently it has come in the news again because this company repurposed their Smalltalk VM to run Ruby, with great performance boosts. Their VM is not entirely ready but is meant to replace most of the Ruby on Rails stack. They're calling it MagLev (geddit? rails-maglev hee hee :)).

It sure sounds mightily impressive: an environment that automatically persists objects, has them available to many concurrent worker threads (including across hosts) with a fully transactional model and is zippy to boost... now almost available for a scripting language that has its users cooing with pleasure! Throw in some of that live debugger salsa and I'm sold.

Sometimes, life is good. Cue the Louis Armstrong playlist, please.

Friday, February 8, 2008

PQI i810 2GB USB flash drive mini review

I just bought a PQI i810 2GB flash drive, and I must say I'm very happy with it.

I did some benchmarks on it, and I attained 10MB/s write speeds and 30MB/s read speeds on my Mac. For something so small that I can have it in my pocket at all times, that's astounding!

It's shaped like a small square, and it can slide out the USB connector using a small switch. It feels sturdy either slid out or retracted, and it fits snugly in the USB port.

Bottom line: If you're looking for a USB flash drive that's small enough to always have on you, get this one. Heartily recommended!

Saturday, January 5, 2008

AirPortAtheros5424.kext and pkgutil

So I boot my Mac in verbose mode, mostly for the geekiness factor. But sometimes, you see a problem that needs fixing.

First off, to turn on verbose booting permanently, simply run "sudo nvram boot-args=-v" on the command line. nvram is the interface to the OpenBoot BIOS environment of PowerPC based macs. To my surprise, this works with Intel systems as well. It's one of those little things that make Apple such a great software company.

The error that caught my attention was:

a link/load error occured for kernel extension /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros5424.kext
You can grep for this error in your /var/log/system.log .

I did some searching and came up empty-handed, which is why I'm posting this. I think this is a leftover from upgrading my system from 10.4 to 10.5.

I'm pretty sure, because 10.5 now has a package database! You can actually find out which package installed a file now (provided the file was part of a package and not a drag'n'drop installer of course).

You can query this database using the command pkgutil. Just typing it at the command line will give you a lengthy usage statement. The option we're interested in is --file-info:

$ pkgutil --file-info /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros.kext
volume: /
path: System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros.kext

install-time: 1194966975
uid: 0
gid: 0
mode: 40755

So we know that the AirPortAtheros.kext plugin is installed by Leopard. The same search for AirPortAtheros5424.kext comes up empty, however.

Therefore we can conclude that AirPortAtheros5424.kext isn't owned by anything Leopard installed, and therefore I moved it away. The error is now gone and my wireless card is still functional.

I guess doing this doesn't buy you much but at least reading this taught you about the pkgutil command ;-)