About Me

I wear many hats, and have dabbled in a number of interesting things over the years. Professionally, my main life’s passion is hacking.

Ah, yes, that term needs a bit of an explanatory caveat these days, I suppose...

Hacker

By hacking I don’t mean golf, nor building furniture with an axe, but rather a deep love for experiencing and understanding how complex systems work. Specifically, computers (including both hardware and software, but I’m primarily a software guy). According to The Jargon File, a hacker is:

A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary…
One who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming…

So, a software developer who likes exploring how all the moving parts under the veneer of a system work. “Fair enough,” you may be thinking, “but aren’t hackers those ninja-like people who try to break into computers and write malware?” This usage of the word is controversial at best and bound to lead to an energetic conversation with either kind of hacker as to who gets to “own” the term, but in truth there is a fair amount of overlap between the two, since to (properly) do the security kind of hacking you need the same kind of deep exploration driven by curiosity of systems as the kind of hacking that builds those systems. The difference is more one of intent, or as some would put it, “what you choose to do with your superpowers.”

But on that topic, I have a strong interest and professional experience in the information security realm as well. No, I won’t be wreaking havoc on the world by breaking into systems or releasing malware, but I’ll look at how to attack my own systems so that I can understand our vulnerabilities enough to defend them against the nefarious actors out there. Some hackers wear white hats, as they say.

While at some level any computing device, operating environment, and programming language is fair game, I have tended to prefer UNIX-like operating systems (which over the years have included AT&T Unix Version 7, System V, BSD 4.x, SunOS, Solaris, HP-UX, DomainOS, AIX, FreeBSD, Linux, and MacOS X), although I’ve also used Microsoft Windows a fair bit and at various points MSDOS, CP/M, HP-2000, Tektronix 4051, RSTS/E and a couple of VAX/VMS systems. Plus, I have a hobby interest in experimenting with embedded microcontroller systems including PIC, Arduino, and Raspberry Pi. Somewhere in that history is a truly bizarre architecture known as the COSMAC 1802 aka ELF.

Programming languages of choice (and primary competence at the moment) include Python, Go, C, shell, Perl, PostScript, and Tcl/Tk, but I’ve also dabbled (and am reasonably able to spin up again as needed) in JavaScript, Java, C++, C#, Grace, LPC, assembly (on x86, 8080, 8085, 6809, 68000, and PIC), Ruby, Haskell, a LISP variant or two, BASIC, TECO, Awk, M4, Mouse, and for something completely different... Inform 7.

I also enjoy hacking electronics projects as a hobby, usually in the form of embedded microcontroller gadgets.

Systems Administrator

Learning about how computers and operating systems work, what their limits are, and even simply making sure you have enough functioning boxes up and running to work with, is best done if one can build, maintain, install, and manage the OS directly rather than relying on an IT department (or pizza-bribed friend) to provide that service.

For me, delving into that area took on a professional context as I spent a number of years in my earlier career as a systems administrator. Initially I did so for a small office with a few central servers and a smattering of clients. Later, I survived the culture shock of scaling up to a different company where I was responsible for racks upon racks of servers supporting the needs of thousands of client systems.

Student

I am currently back in school pursuing an advanced degree in Computer Science. Since I’m a “real grownup” now with a full-time career and other obligations, I’m working on my academic research at a slower pace with the spare time I have available, but it’s interesting and enlightening to keep learning and discovering new things, so it’s definitely been worth it.

Teacher

I also have a passion for teaching others what skills I can pass on to them, either by one-on-one mentoring or by leading a classroom of students. I have taught various classes as part of my volunteer activities and for my employers, including topics such as basic electronics, programming at different levels of experience (using C, Python, and Perl), secure development practices, regular expressions, and test-driven development.

Writer

It is well-known that programmers have an aversion to writing documentation. It is also well-known that any rule has exceptions, or in other words, there’s always that one weirdo in the group. In this case, I guess I’m that guy.

I enjoy expressing myself in writing, and found that I have a knack for explaining complex concepts clearly to non-expert audiences. And so I have a tendency to write full manuals for the software I write. (Given the equally well-known tendency for computer users to avoid reading manuals, it’s not clear how many will actually benefit from the documentation, but that’s up to them. It’s there when they’re ready to read it.)

I’ve had a fascination with typefaces, typesetting, and even different forms of written communcation (such as alphabets like Greek, Cyrillic, or Hangul, or even systems such as Chinese characters). My typesetting tool of choice is TEX.

Volunteer

I volunteer in the community, primarily with educational-related efforts. I help with (and recommend to any interested people) the local Portland B-Sides conference, which is free to attend and promotes awareness of, and skills related to, information security, online safety, and privacy.

I also volunteer with the local middle and high school-level science fairs, usually as a judge. This is great for renewing one’s hope for the future as you see the bright ideas and enthusiasm for innovation in the next generation.

I also volunteer with groups such as Scouts BSA, usually mentoring kids with STEM-related projects (e.g., electronics, computers, digital media, science, and geocaching), as well as helping to judge their final work to earn their Eagle rank (which is also a great way to renew one’s hope for the future—some of these young men and women have accomplished impressive things).

Game Show Host

I have often found that training works well with a liberal dose of gamification. A teacher can turn a boring lecture on secure coding principles into an exciting contest to see who can discover, exploit, and repair a vulnerability on a website that was set up for the class.

One nice standard activity that works well regardless of the subject being learned is the classic quiz show game. Whether used as a review activity at the end of a lesson, a novel way to conduct a final exam, or just a fun way to practice skills among coworkers, putting a set of questions up on a game board and giving out points to the fastest contestant who knows the right answers is entertaining for the participants and audience alike. It also tends to keep active focus on the material longer than simply talking about the subject with a white board or slide deck.

I’ve hosted these games as part of my own classes, as a fun contest between systems administration teams at work, with youth groups, family, and lately I’ve been running my own variation on “hacker jeopardy” at the annual Portland B-Sides conferences. It’s fun to show off your skills while winning prizes and the admiration of your peers.

Of course, being a hardware and software hacker (see above), I can’t be satisfied by simply drawing a game board on paper or making up a set of slides. I put together the electronics for buttons, lights, and the software that runs a game display as close to a TV-style look and feel as we can practically manage as amateurs.

In addition to the standard “grid” of questions (similar to TV’s Jeopardy!), I have formats similar to Family Feud, Who Wants to Be a Millionaire?, The Weakest Link, and Are You Smarter Than a Fifth Grader?.

Gamer

And of course games are fun to play for their own sake. I’m a fan of most board and card games, although with a definite preference for something more interesting and creative than dealing cards and matching them up in tricks or hands of different patterns. So then among my favorites are games like Cosmic Wimpout, Magic: the Gathering, Exploding Kittens, Apples to Apples, Cards Against Humanity, Settlers of Catan, Dominion, The Order of the Stick Adventure Game, or, when I have a lot of time to spare, Civilization.

On the video game front, I can’t resist a good, old-school interactive fiction game such as the venerable Zork series and other classics from Infocom. (And of course the best MUD game in the world, Ragnarök.) I’m also a fan of anything Cyan has produced, from Myst to Obduction. I used to be able to say that I never found first-person shooter games all that interesting, but then someone went and created Portal.

Most of the time, however, I’m found sitting around a table on a weekend with a few of my friends playing Dungeons & Dragons or Pathfinder.

Cacher

I got into the sport of geocaching a few years ago, which I interpret as the universe’s effort to force me to go outside in the fresh air and sunshine once in a while.

My Geek Code

If you’re a hopeless geek, the following speaks volumes. Also, you have my condolences. If you aren’t familiar with the Geek Code, see the Wikipedia article about it.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS/TW d- s-:+ a++ C++++$ UB(AHLS)++++$ P+++$ L+++$ E--- W+++ N+ w++ !o
!O M++$ V-- PS+(++) PE- Y+>++$ PGP++ t++@ 5++ X R++(+++) tv b+>++
DI++ D G++ e++>++++ h---- r+++ y++++ 
-----END GEEK CODE BLOCK-----

My Résumé

For a more formal summary of my experience and capabilities, I present my résumé.