Craig Brozefsky


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

PlaybookThis 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.


NetlogoMy 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.


Little Hacks