Harold's web home

Picture of my email address.

Me, Elsewhere

[ Valid XHTML 1.1 ]
[ Made with Emacs ]
[ Get Firefox ]
[ Graphics by the Gimp ]

Arduino microcode for an organ pedalboard

I'm working on wiring up a pedalboard from an old organ to use with my computer. I use a switch connected to the Arduino controller to switch between USB keyboard mode and MIDI keyboard mode. The Arduino was $10, and the organ pedalboard was $20 (plus $30 shipping) on Ebay.

Gorg Super-Chip for 3-D printing

It was fun to try out 3-D printing a toy for my kids and OpenSCAD made it much easier for me to get the exact layout I wanted versus drag-and-drop CAD tools.

OWI Robot Arm Library for Linux

The OWI robot arm kit is a $40 way for kids to see that they can build a robot arm from scratch using just motors and gears. I make this library so that we could write C and Python code to control our OWI over USB from Linux.

clip: A work-in-progress Python compiler

The way I see it, Common Lisp is a superset of Python but with optimizing compilers that generate machine code. Clip is a proof-of-concept that we can parse Python and generate Lisp code, and thus we can compile Python to highly optimized x86 machine code.

log2json: A parser that outputs a parser

Uses the LogFormat config for your Apache httpd web server to parse log files into JSON. And just for fun, it uses parser combinators to parse the LogFormat to build the log parser.


View the pre-reqs for classes as a flow chart, going all the way back to Whatever 101. Also shows which courses come next.

Pretender: Test links to web sites that aren't there.

I made this tool for a friend who's a freelance graphic designer. She was building a web page for a client that had links to other pages on their company's private network, so she couldn't test them, right? Run Pretender with the list of URLs that the client has sent you and you can test by clicking around on your web page.

Mousey Maze Game

Mousey Maze Game

You know, for kids...

No clicking, no arrow keys - great for preschoolers. The blocks are separated a little bit so that kids can see that a maze is just a grid of squares. My son requested this, but I thought I'd share it here. I was able to throw together a first, working draft with him sitting on my lap.

Learning Korean

I have some info up on the Korean language. I'm getting better, slowly but surely.

Dvorak Typing

I prefer to type with the Dvorak keyboard layout. Mmm ... comfort :) Recently, I've been pointed at the new Colemak keyboard layout, which is now on my "to do" list. I've noticed that my right pinky takes on too much work using Dvorak (though better than in Qwerty), so when there is time for retraining...

Programming Language Tire-kicking

Lisp logo

I've been trying out diffent programming languages, and I think Haskell is the best I've found ("Best" is, at best, very difficult to quantify.). I've put together some information about it. Standard ML and Ocaml seem like the C and C++ of the functional language world - Standard ML is spartan, and Ocaml adds many features to the utilitarian ML base with "interesting" new syntax. Comparing Common Lisp to Scheme is interesting, also.

I am still having a lot of fun playing around in Common Lisp, mainly because of the meta-language features built-in (macros, etc.). There still seem to be way too many "write a parser and interpreter for my DSL (domain-specific language)" projects out there in Haskell, but hopefully Template Haskell will help fix this. Lisp also enjoys more mature development environments and libraries than Haskell at the moment, and it seems likely to stay that way for a while. Haskell seems to be regarded as academics-only.

But wait, there's more!