Independent programmer

Gus Mueller's down to earth story of how he made the jump to living off the wonderful software he created. I admit to having bought both VoodooPad and FlySketch and being really happy with both of 'em.

Zero install

Irony: to use the Zero Install System you have to ... install it! Oh well, I'll stick with Starkits and starpacks.


My favorite composer. Ten days non-stop. I've set things up to record it all, and am looking forward to listening to this in my own pace. Thank you, BBC!


Seeing these movies gives me a very odd sensation. How can this little machine look so "real"? Amazing achievement. It all looks benign, for now...

Ceci n'est pas une Xbox

Some people buy virtual islands. Others a picture.

Software Transactional Memory

STM has been mentioned a few times on LtU. The latest entry points to a recent SCOOL workshop which goes into this in great detail. It turns out to be amazingly appropriate and timely, given my last post on the Vlerq forum. Lots of reading to do ... (yummie + sigh)

Safe sleep

The Apple Powerbook is now able to do a hybrid suspend/hibernate, as described in this article. What it means is that nothing changes in the normal case. But even if a battery runs flat (mine have been losing capacity over the years), saved state is not compromised: startup will still bring it back.

I love that
second smile effect. This is what creates a truly loyal customer base.


How to come up with Breakthrough Ideas. Thinking outside the box, sort of.

Beyond Java

If Java is not the last word, as this article & book suggest, and if Ruby is the next big thing, then this is great news for the future of scripting languages in general. The differences between Ruby and Perl, Python, Tcl, Lua, etc are minor, IMO.


An example of how Quicksilver and a web-based system can be used together. The video mentioned on this page illustrates the workflow dynamics of it all. I'm still looking for ways to get more of my computer work streamlined, and mice just don't cut it: no way to automate things into your spinal cord (read: effortlessly) when it takes aiming and visual feedback to get anything done.

Ruby, spot on

Ignore the title of this presentation, it's simply a very good list of what makes Ruby look so attractive.

How to be creative

Great list. My favorite has got to be #11.


Priceless... (more)

From Java to Rails

Informative page on what this Ruby on Rails thing is, coming from Java.

Native XML

IBM calls it Viper. And yes, they do have eh... slightly more pushing power. But I've got Vlerq and am going all out to design a system which works well with both traditional and very sparse relational data. Let's not underestimate the power of columns just yet.

Tcl on Nokia 770

Tclkit on Nokia 770 is starting to work properly, as seen is this SSH session:

$ ./tsh2 wikit.kit -httpd 8000
Wed, 23 Nov 2005 21:05:08 GMT: notice Now listening: 8000
Wed, 23 Nov 2005 21:05:26 GMT: [] GET /
Wed, 23 Nov 2005 21:05:26 GMT: [] GET /favicon.ico
Wed, 23 Nov 2005 21:06:55 GMT: [] GET /edit/0@
Wed, 23 Nov 2005 21:06:55 GMT: [] GET /favicon.ico
Wed, 23 Nov 2005 21:07:09 GMT: [] POST /0
Wed, 23 Nov 2005 21:07:09 GMT: [] GET /favicon.ico

This is a Tclkit build on the Maemo development system (which is a huge hassle to set up IMO). There were some gotchas, but it's essentially a genkit build.
Zaurus-based builds were tried, but it looks like some C++ dependency leads to occasional unresolved dynlink errors. Tk is also not quite there yet: a "pack [button .b -text Hello]" reboots the machine. Whoops!
Still, tclsh is not bad for starters. Metakit, Starkits, Wikit, SDX, and Ratcl all seem to work just fine.

Embedded compiler

Saw this on the Tcler's Wiki. I don't know who the poster is, but most likely this is Linux, which often has gcc installed:

Wow. I've never ever used critcl before. Now I'm convinced. I didn't even know I had critcl on my system, but the above cut'n'pasted and Just Worked. Nifty.

Scripting with a C compiler built-in.
A few years from now, most people will get their first exposure to C this way. Quite a difference from how old-timers like me had to make things work!


A nasty bug. In Metakit. Could be bad, though the scenario leading up to it hinges on at least one actual I/O failure for this to bite. Still: ouch!

Bye bye, filesystem

Interesting article about "type managers", by Ben Meyer. He explains how apps such as iTunes stop making you think of the disk as a file system with lots of files. It's not about technology, it's about content. And addressing one problem domain.

Ratcl 0.97

I've pushed out a new release of the Ratcl relational algebra extension for Tcl. It's a preview, nowhere near being production-ready, but it really was long overdue after the massive rewrite since 0.92 in June.


This idea is at least a decade old. A simple tool to jot down brief notes, which I can use from multiple computers. The key feature is incremental search, i.e. entering a couple of characters and seeing the list of hits trim down as I type. No categories, no hierarchies, no keywords. A time-stamp would be nice.

I've got tons of uses for this: storing ideas, remembering URLs, tracking To-do's, and (with proper protection) saving passwords and account info. I'd like to dump my entire chaotic brain in it (for personal use only).

On the Mac, there are several applications which can sort of do this. NoteTaker, MacJournal, OmniOutliner, and VoodooPad come to mind. On the web, there are wiki's and and bookmarks. The Backpack website has a Mac OS X Dashboard widget, a great combo. Will Duquette's
Notebook also comes close: incr search and portable. There are lots of ways to do this - it's not rocket science.

But all of the above are single-machine!

On a PDA it would be moot, since those are so easy to carry everywhere, but there's no quick way to enter even limited amounts of text in them.
Is it too much to ask to have a solution which talks to some server, is portable, and can work in disconnected mode as well? All it takes is Tcl/Tk and perhaps Tequila + Metakit. I'm even willing to forego Tk and use the command line, as long as a rendered version in HTML is easy to automatically maintain (for that N770 thing...).
Let's call it
SyncPad. Simple idea, simple project, I wish someone would do it.

Darwinports GUI

DarwinPorts is a collection of nearly 3000 ports of various Unix/Linux software packages for Mac OS X. And there's a GUI for it, called Port Authority. Written in Tcl. Looking inside, PA appears to be using Tk, Tile, Tablelist, and Critcl - cool!

I'm in

After installing xterm+sshd, I can connect by WLAN to the Nokia 770 using SSH:

$ ssh -l user -p 2222

BusyBox v1.00 (Debian 2:20041102-11) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

~ $ uname -a
Linux Nokia770-43 #1 Thu Oct 27 09:24:21 EEST 2005 armv5tejl unknown
~ $ free
total used free shared buffers
Mem: 61828 59820 2008 0 220
Swap: 0 0 0
Total: 61828 59820 2008
~ $ df
Filesystem Size Used Available Use% Mounted on
/dev/mtdblock4 2.0M 1.9M 92.0k 96% /mnt/initfs
none 512.0k 40.0k 472.0k 8% /mnt/initfs/tmp
/dev/mtdblock4 123.5M 60.1M 63.4M 49% /
none 512.0k 40.0k 472.0k 8% /tmp
none 1.0M 52.0k 972.0k 5% /dev
/dev/mmcblk0p1 60.9M 30.8M 30.2M 50% /media/mmc1
~ $ /sbin/ifconfig
lo Link encap:Local Loopback
inet addr: Mask:
RX packets:662 errors:0 dropped:0 overruns:0 frame:0
TX packets:662 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:54698 (53.4 KiB) TX bytes:54698 (53.4 KiB)

wlan0 Link encap:Ethernet HWaddr **:**:**:**:**:**
inet addr: Bcast: Mask:
RX packets:459 errors:0 dropped:0 overruns:0 frame:0
TX packets:334 errors:1 dropped:1 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:98214 (95.9 KiB) TX bytes:72681 (70.9 KiB)

~ $ id
uid=29999(user) gid=29999(users)
~ $ uptime
11:10:40 up 43 min, load average: 0.03, 0.15, 0.17
~ $ ps ax | wc
76 461 3952
~ $ set
PS1='\w \$ '
PS2='> '
PS4='+ '
~ $ cat /proc/cpuinfo
Processor : ARM926EJ-Sid(wb) rev 3 (v5l)
BogoMIPS : 125.03
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 3
Cache type : write-back
Cache clean : cp15 c7 ops
Cache lockdown : format C
Cache format : Harvard
I size : 32768
I assoc : 4
I line length : 32
I sets : 256
D size : 16384
D assoc : 4
D line length : 32
D sets : 128

Hardware : Generic OMAP1510/1610/1710
Revision : 17100016
Serial : ****************
~ $

Sure feels weird to ssh into one's own shirtpocket...

No[kia] brainer

With the Nokia 770 internet tablet out, I really couldn't resist the urge to get one. Without VAT, it's only 300 euro. Linux 2.6.12, 800x480 pixels, 230g. Just arrived, an amazing gadget!

The specs, and reviews one and two.


His "The art of... " books have formed me in ways that few others have. And now, a wide range of videos are online, providing a great glimpse of how Donald Knuth taught in his classes.

Interactive excution

LispWorks is a mature Common Lisp development system with an interesting command-line development mode. Here is an example:


As you can see, there are quite a bit of things one can do when an error is thrown. Clever - and I assume very useful while writing new code or just for trying out things before writing tests and code.


Here's my feeble attempt to bring across the real point of Starkits.


It's good to see articles like this once in while.


Dick Hardt (first ActiveState, now Sxip) presents his "Identity 2.0" story in a truly delightful way, on video. This was the Keynote Address at OSCON 2005. Not sure how I found this, but it offered great insight into the essence of digital identity. Fasten your seat-belt!


The Shareware Author indeX was a service by yours truly which was started nearly a decade ago to help producers and consumers of shareware find each other... a bit like a marketplace. In a small way, I'd like to think that it made a difference. But given that my interest in shareware is completely gone by now, I've decided to close it down. Stop while you're ahead, or something like that.


Interesting article about where MySQL is headed. Explaining why others can go after Oracle:

If you're working in a zoo you don't want to be the one who has to brush the teeth of the lion.

Chuckle. And while the world feasts on SQL, I can focus on other stuff.


CVSTrac is a bug tracking system tied to CVS which is delightfully simple to set up and use: there's a self-contained static executable for Linux which works right out of the box. Written by Richard Hipp, author of SQLite (which is used in CVSTrack). Absolutely top notch.


Is that Chuck/Charles Moore - the inventor of FORTH - who is being mentioned in an article titled Next-Gen Processor: Supercomputer on a Chip? At AMD? Interesting.

Update: The answer is: no, there are more people with that name.

Normal forms

There's this big issue of "normalizing" a database design - it comes up all the time (if you're into modeling information that lives in the real world, that is). It has implications for how data is stored, consistency, redundancy, and performance. In short: it's impoitant ...

I'd like to be able to take existing (filled!) data tables and play around with alternate representations, while at the same time exploring the implications for performance and the impact on normalization. Drastic changes, sort of like a "refactoring browser for data" - preferably in a highly visual manner.

Have not found such a utility so far.

Maybe one day, the views and relational algebra of Vlerq will make it possible to support such a
data model evolution tool. The dynamics of views, and derived views (also blocked views, as first explored in Metakit) ought to be up to the task.

Days are too short!


Interesting how JavaScript can turn a web browser into an advanced application framework. ZDNet has a list of apps, I had a quick look at Webnote. Double-click to edit, click outside the note to end an edit. Amazing.

A nice (Java-centric) introduction into this sort of approach can be found here.


My lifetime job, of course, is to develop new software and make it run. I've extended that for a while now to also make myself run - an old habit which I neglected for over two decades. So the news is that I'm back into running and enjoying every second of it. Currently at 5 km, five times a week ... it feels really good.


The Register has an interesting news item about an innovative database called the ANTs Data Server (ADS). The way they deal with contention while avoiding locking is particularly intriguing.


The MySQL 5.0 release candidate is out. Interesting changes listed here include: updatable views and compact archival storage.


From a post on the SQLite mailing list:

The more I learn about NULLs in SQL the less sense they make...

So true, Richard, so true.

Date in depth

There's a new book out by Chris Date, titled "Database in Depth, Relational Theory for Practitioners" (ISBN 0-596-10012-4). It's a 200-page paperback full of very concise wisdom. All of Date's key arguments in a nutshell. A must read if you're into databases (both usage and design), because it highlights and justifies the main points of relational theory.

Back. Geek.

Just back from a refreshing camping trip, it was delightful to read Erik Sink's blog entry about developers and marketing. This one is worth reading and re-reading...

Summer break

Yours truly is about to enter an extended summer recess. Unlike hibernation, this marks a period of sensory delight and social / travel activity, alternated with brisk work periods in which I will however not be very responsive to email. Anything (or nothing) may happen until September...

Go for it

Follow your dream. Wil Shipley's student talk at Apple's WWDC 2005 says it all. He's right.


Lawrence Lessig writes a superb article about the World Social Forum. Puts everything I always wanted to know about copyright, DRM, and the GPL into a historical perspective. Ends with a fascinating story about Gilberto Gil.


Been busy. Released Ratcl 0.92 and Metakit The usual frenzy: check-in, fix all version numbers, do all builds, perform all tests, and DON'T-MESS-UP! kind of thing. It was long overdue.


Just came across a tool called "autopackage" to build multi-distribution binary packaging framework for Linux systems. At last, what took OSS developers so long! Many useful docs here!

Also contains several interesting sub-tools such as BinReloc (find your own exe and shlib path, great for starkits/packs), apgcc (compile using older libs so the shared libs don't break on older systems, great for tclkit), Relaytool (use run-time dynamic calls as if they were static), and Scandeps (analyze ELF executables).

Data dominates

A quote from Rob Pike, I think I'll make it my favorite:

Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.

It's rule 5 on
this page (which in turn came from Ivan Lazarte's comment on the wiki ).

Second place, by Ken Thompson, from the same page:

When in doubt, use brute force.

Could be a mantra for Vlerq, that one!

Hi Steve

Ah, so you did read my previous blog entry, eh? And next year we're going to have Mac OS X on Intel hardware? Well, good luck with the switch, get it over with quickly please. C'ya.

The Universal Binary Programming Guidelines covers the technical details.

G5 vs. X86, OSX vs Linux

A comparison which confirms what I've been seeing, but for which I never had any real data to back it up: the Mac is not as snappy at the core level as a Linux/x86 combo. Wouldn't ever want to go back to anything else though - in terms of helping me get the work done, my 1 GHz PowerBook remains in a league of its own.

Smart ideas

An insightful story by Scott Berkun about smart, yet not necessarily right. I'd summarize it as: creative ideas need reality checks more than anything else. Or perhaps even more concisely: clever and wise are not the same thing. Reading this, I just can't stop thinking about (design and choice of) programming languages, software practices, database approaches, and development tools.

Let's move away from the clever stuff.
Let's focus on wisdom.

Another gem

Again by Scott Berkun: Why you must lead or follow. Spot on. Life's too short to dwell in any other modus vivendi.

Beyond RDBM's

With a title like Beyond Relational Databases, I was really looking forward to reading Margo Seltzer's ACM article (SleepyCat's founder). Alas, the word "algebra" is not mentioned. Omission or oversight, who knows.

Object-relational mapping

Every time I come across things like these, I can't help but think that two trends which have wandered too far off course (SQL and OO) are being shoe-horned back into something which to me seems... odd.

Given that I consider data on-disk and in-memory to be two sides of the same coin, I can only conclude that SQL and OO are going out of their way to be as
different from each other as can be.

Why marry two opposite mindsets?
It makes no sense.

EU patents

Tedious but progress in the right direction for once... The Register reports that:

Under the terms of [Michel] Rocard's draft, software would only be patentable if it controlled a physical process, or a controllable force of nature. Patents would not be allowed for software that handles "the treatment, the manipulation, the representation and the presentation of information".

Yes, please!

Cringely's gaze

Robert Cringely looks into his crystal ball and describes the future trends he sees looming - the players are Microsoft, Google, Yahoo, and Apple. Fascinating thinking.

Dual photography

In the category "wow, amazing science"...

Imagine a light source coming from one end and a camera picking up the image reflected by some scene. With a mathematical transformation, it is possible to reconstruct the "dual" image, i.e. the view of the scene as if the roles of the camera and the light source were reversed (note that this requires a scanning light beam, not a floodlight).

Amazingly, this allows you to see things which are not visible from the original camera viewpoint. See the video at the bottom of
this page.

Commodities and cost

Joel Spolsky writes: Smart companies try to commoditize their products' complements.. There are an awful number of insightful comments about open source and marketing in his 2002 strategy letter, as usual.

What makes top research special

Richard Hamming (yes, the Hamming code guy) describes the difference between world-class scientists and the rest in this talk (of 1986). It's a wonderful glimpse into that world.


Sam Ruby explains continuations in a delightfully clear article: Continuations for Curmudgeons. After that, the page about Scheme's call/cc by David Magore is easier to understand.


Couldn't resist trying out nb, a "small weblog engine written in Bash for the command line".