Hacking
What kind of hacker am I? Well, I'm an old Lisp hacker, Java dork, Ruby pervert, ML prole, PHP weenie, ObjectiveC messager, assembly tinker, and Logo turtle and of course, a Schemer. I have written frameworks, libraries, and applications for banks, universities, and school children. Much of my professional work has been web application development, going back to the origins of the field in the mid 90s -- but my hobby is doodling with sounds and graphics in my own unmaintainable code piles.
Big Hacks
The majority of my time has been spent working on products, as a member of a team. I'm rather proud of the work we've done, and have very fond memories of the people I've worked with.
Matasano Playbook
This is my current full-time
project. It's a Ruby on Rails application for managing firewall
networks. Basically, it is Trac for firewall techs in that are
managing a dozen or more devices. It provides version control,
annotation, search, acquisition, and deployment.
The product site has more
info.
For me, the most challenging bits have been the lexing and parsing of several firewall rule/config languages. This involved alot of work with Ragel and RACC. We needed a tool to tag elements of the rules, like addresses, direction, hostnames, and port numbers, even if the rest of the rule was malformed. However, we also needed parsers that could flag syntax errors. Ragel was particularly useful since it let us define a shared set of lexemes across all firewalls (CIDR block syntax, port ranges, and IP addresses for example.
I also had to learn me some Ruby and Rails. Kinda like a WebObjects flashback for me.
We also wrote our own "DSL" for interacting with remote devices. Ruby does this well enough, but I have to chuckle a bit when comparing the Ruby DSL fashion to Common Lisp where the combination of the reader and macros makes it a truly programmable programming language.
![](../images/hr.png)
NetLogo
My time at the Center for
Connected Learning and Computer-based Modeling at Northwestern was
spent working on NetLogo. Frankly, it was amazing. I met some great
people, got to work on compelling problems in an environment that let
me explore, and also got to teach, talk, and design in ways I never
did before as a programmer.
Netlogo is multi-agent, programming language and modeling environment, implemented in Java. Its primary users where teachers and students -- from elementary school to materials engineering graduate students at Northwestern. I got to hack on everything programming language design, and building graphical modeling tools for dyanmic systems, to OpenGL rendering and Java optimization.