June 29, 2007

I Like Turtles

I swear to you, someday -- mark these words -- someday I will be on TV and I shall answer a "What do you think?" question with "I like turtles". The hard part will be to not laugh hysterically. This kid nailed it. He's going places.


June 21, 2007

I got a Sonos!

Photo 252

The fine folks at Sonos sent me a loaner Bundle 130. The bundle includes a Sonos remote, a ZP80 player (both pictured), a ZP100 player, a remote cradle and some wires to hook it all up.

I'm not one for fancy gadgets (ask Jeff Atwood, we had dinner recently and he found my outdated mobile phone most humorous) but I've had the Sonos two days and I already want more players. Remote control access to 3 million songs is like the holy grail of music.

I'm going to give it a much more in-depth review soon.


June 15, 2007

Jan's CouchDb Talk

Jan gives a talk about CouchDb in Zurich and it gets a very good response. Here is the content of the talk.


June 12, 2007

Concurrent GC: a good thing?

I found this posting Ocaml vs. F#: Concurrent GC: a good thing? on programming.reddit.com.

On the benefits of spawning a OS new process for concurrency:

This is quite a different approach to concurrency and, in particular, each new process has its own GC.

This is how Erlang works except it uses it's own flyweight processes, not OS processes. And it's absolutely key to Erlang's concurrency, reliability and soft-realtime performance.

Each Erlang process has it's own mini-heap, which helps reduce heap fragmentation overall. Because of Erlang's functional nature, cycles in data-structures are not possible, meaning GC is a much simpler problem. Also completed/failed processes don't need to be GC'd at all, the heaps are simply freed en-mass back to the Erlang VM.

Contrast to shared state threading like Java where the object graph can become a giant tangled ball, any object in any thread can hold a reference to anything else. This why so many Java applications that perform great in benchmarks often slow to a crawl under real world conditions (and why micro benchmarks are one of the worst criteria for choosing a programming language).


June 1, 2007

Google Gears

I looked at Google Gears briefly. It claims to offer offline web application capabilities, and does so by providing a way to copy static web files for offline use and access a local relational database. Cool, I guess.

The thing is, it gives you no built-in way to synchronize your data with the server. That's because it uses a SQL database like everything else (SQLite in this case).

SQL, SQL everwhere, but not a way to sync.
SQL, SQL everwhere, and offline support stinks.

For bidirectional synchronization, SQL is just the wrong model and Gears doesn't solve any of the hard parts of making occasionally connected applications work. Notes got this right sooo long ago, why does everyone else keep making the same mistakes?