Tuesday, November 07, 2006

Happy Birthday Eclipse !



In his happy birthday post, Mike Milinkovich mentions the original servers we put up at OTI when Eclipse started, 5 years ago. Those were pretty wild times as evidenced by these server pictures, taken on November 9th, 2001. This was the original Eclipse server and it was in this configuration because of a disk failure soon after going live. A quick and dirty repair and we were back in business. You will notice the case was off and the drive hanging out but we decided that the site was so busy, we didn't want to take the server down for any reason so the server ran like this for a while. The running gag at the time was "open source, open case". I suspect that if we got Denis to take a picture of the servers Eclipse uses today, it would be a much different story...

I'm off to the Eclipse birthday party now, to swap tales of the good old days (5 years goes by pretty fast).

Happy Birthday Eclipse, here's to many more ... Posted by Picasa

Saturday, November 04, 2006

Vista Smalltalk

Last week I attended the Ottawa Smalltalk Users Group to hear a talk by Peter Fisk, on his Vista Smalltalk. Peter blogs regularly and eloquently about his development efforts here. It's a must read if you're interested in Smalltalk or Microsoft Vista programming and want to experience more programming joy.

I intended to blog about it but David Buck beat me to it and created a nice screen demo of the Vista Smalltalk system. If you are a Smalltalker, you have to see this, go to Davids screen capture now!.

The evening was lots of fun. Peter is a veteran of the computing industry and started off with a history review of his computing background. The summary was entertaining and unfortunately for me, a reminder that I had lived through some of the ancient history myself. Yeah, we're old dudes who know Smalltalk...

As a VM implementor, I was keen to understand the details so if that kind of thing thrills you, read on.

Peter has basically written an interpreter for Smalltalk in C#. He supports the usual stuff (blocks) but not the esoteric (become:). Vista Smalltalk parses Smalltalk from text, every time (there is no image) and creates its own internal runtime format (classes, methods). You'd think it takes time, but by keeping the class libraries small (clearly Peter is a fan of "small is beautiful", it does ok). Peter also showed some configuration files which describe what to download into your web browser. This allows you to download just what you need for your application. You can decide to include a development environment (see Dave's screen cast for a demo). A development image has a workspace and supports a class browser. You can modify code, run doits, and normal development environment stuff, all running inside your web browser, all written in Smalltalk.

For his class library, he has a core subset of the Smalltalk libraries. Interestingly, he also has these "mapped" classes which are are directly mapped to native format CLR classes (I believe String is done this way). Looks like it makes it pretty simple to add natives and reuse CLR classes. There was some discussion if all the CLR methods for a particular mapped class are available by default, but currently you have to decide what to expose to the Smalltalk libraries via a primitive syntax. Peter said it would be pretty easy to do some reflection munging around to make these methods available for "free" but the current mechanism is good enough.

Since he has his own interpreter, he is not using the MSIL "bytecodes" directly. Peter says it's possible to do so but he decided not to compile to MSIL or create assemblies (assemblies are fancy .net DLLs) for a few reasons. First, assemblies have problems with unloading and he needs hot code replace (classes and methods) to work. .NET contains a newer solution with the introduction of a facility called "lightweight code generation" and while Peter said he could probably use that, he also said that the facility needed special signed permissions to be allowed to run in browsers and he wanted to avoid the signing issue for now. Peter's focus is on writing code that can run in browsers with no headaches.

Peter's target is browser execution, and a simplified application programming for Microsoft Vista which includes new technologies like XAML. Since his focus is on the client side, with tight browser (desktop support too), the key is integration with .NET. I think he spends alot of his time, just figuring out how CLR / .NET / WinForms/ WPF and threading all works. It was clear he gets much joy in doing things the Microsoft manual says you can't or shouldn't and specifically is proud about how easy it is to create apps with his system. Leveraging the .NET clases makes for some compelling demos too.

Peter wants to get stuff done. He sees Smalltalk as the best way to get there, so he wrote his own Smalltalk interpreter (where have I heard that before ?). I thought it was pretty cool, he is trying to solve a specific problem and is just going to build what he needs to solve it. Refreshing...

After the talk, we retired to the pub, swapping old and new tales. Any inaccuracies in the above description can be attributed to beer and the late night. I am fully prepared to go back and drink more beer with Peter or anyone else who attended to correct any details I got wrong.

The Vista Smalltalk demo and talk was fun to see, and it's going to be neat to watch it evolve. Go Peter go !

Wednesday, November 01, 2006

Soluble product #4

If you visit the IBM Queensview offices where I work, and you're tempted to get a coffee from the automated coffee machine (we have three, I'm referring to the one that serves coffee, hot chocolate, and mocha), you may want to reconsider. This morning, I overheard the restocking discussion for the various mysterious powders that go into the machine.

"This bin takes hot chocolate and this bin holds soluble product #4"

I checked, it's the real name they order the "product" by and refers to the French Vanilla flavouring. In honour of this new information, I hereby coin the word "schroedinfood" -"food you were perfectly happy to eat before but you no longer eat once you know what's in it or how it's made", inspired by the word schroedinbug.