Craig Brozefsky -- Hacker

Oh hai!

I am the descendant of apes, and was born into a life during wartime. Pressing my marks into the clay tablets, I continue the ancient tradition of deductive divination from dreams as a professional programmer, and a hacker. Unfortunately, the physical substrate we now use for encoding and decoding dreams is laced with heavy metals. At least clay tablets could be safely used as landfill. Such is the hubris of homo sapiens sapiens in the pursuit of knowledge.

The rising sun finds me in Portland, Oregon. I follow its path across the sky going from cafe to bar with my bike and laptop, hacking with my co-workers and friends at Matasano Security. If I am a good hacker, and sometimes even if not, I enjoy delicious beers as my reward. In this way, life moves through me.

Hacking

What kind of hacker am I? Well, I'm a 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 and libraries, as well as "end-user" applications for 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 work is usually doodling with sounds and graphics in my own hacky, 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 large firewall networks. Basically, it is Trac for firewall techs in large organization that are managing dozens, or hundreds, of firewalls across their network. It provides version control, annotation, search, acquisition, and deployment of firewall configes. The product site has more info.

For me, the most challenging bits have been the lexing and parsing of several different firewall rule 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 ramp up on the Ruby and Rails, but the previous work on Webcheckout, and implementing our own Object->Relation mapping (ActiveRecord) and object/component oriented, web framework (ActionController) helped me absorb it quickly. I grokked the tools immediately, but it took some time to really learn the conventions and "wins" one got from following them. Luckily, the Rails emphasis on Test Drive Development was something I had already internalized, and I foun the tools available, like Cucumber and Rspec, to be very helpful.

We also wrote our own "DSL" for interacting with remote devices. Ruby does this "well-enough" but I have to chcukle 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.

NetLogo

NetlogoMy time in the Center for Connected Learning at Northwestern working on NetLogo was amazing. I met some great people, got to work on amazing problems in an environment that let me explore them in, and also got to teach, talk, and design in ways I never did before as a pure programmer.

WebCheckout

Little Hacks