codeslower.com Savor Your Code.

METAPOST: The Program

Donald Knuth invented the WEB language for literate programming. A literate program reads like a book (or very long article), but can also be compiled into executable code. Literate programming does NOT mean fancy API documentation; it means the programmer can present source code in the order most suitable for exposition. WEB allows the programmer to express how to extract a TeX document and valid source files from ...

A Haskell Surprise!

My friend Joshua Siler, founder of HiringThing, recently wrote up an article about their homepage's "Buttons with a Surprise." It looked too cool, so I asked him to make a version for me. You can see the results on the homepage for my Haskell Cheatsheet. Move your mouse near some of the PDF links and watch the Haskell logo appear like magic!

Of course, I couldn't ...

Using the draggable property in ExtJS

ExtJS, from Sencha, Inc., is an open-source JavaScript framework for creating client-side MVC-structured applications with rich and interactive user interfaces. Recently I prototyped a UI which included docked panels that the user could re-arrange by dragging. I struggled quite a bit to figure out how ExtJS "wanted" me to implement this feature and I hope that, by sharing what I learned, it will be easier for anyone else ...

ICFP 2009 Programming Contest - WIP

From the department of possibly bad ideas, I'm posting my continuing work on this year's ICFP programming challenge. Feel free to follow along on my contest diary. You can even get the source, but I don't make any promises about it working. If you want to jump in feel free to drop me a line!

Update: Syntax Coloring in Intellipad

I previously posted a sample showing how to create a plugin for Intellipad (shipped with the Microsoft "Oslo" SDK) which would support syntax coloring and error highlighting for files written in your own Mg-defined language. That sample worked with the previous release of the SDK. Now that the January 2009 release has come out, the sample needs a few minor updates.

The code for the updated sample is ...