I am a information security expert, programmer, and occultist (as in passion for esoteric and hidden knowledge). Finding security bugs (and non-security bugs) in web applications and mobile applications through quick code comprehension is my forté, but I also have experience with web programming (recently in Ruby and Ruby on Rails) and related engineering philosophies (TDD/BDD), as well as some systems programming and dev-ops knowledge for Linux/Mac OS X/Unix. That said, I tend to focus on blogging about technology issues and puzzles I come across that I figure would be useful to others.

I currently work for NCC Group Domain Services (formerly Artemis Internet) as the security architect. In a past life I was a security consultant for iSEC Partners, also owned by NCC Group. Obviously, the opinions I express on this site are my own and not necessarily that of any employer — past, present, or future.

In my free time, I have been known to read words printed on an archaic technology called paper, participate in vintage ballroom dancing while dressing in historical costume, play Minecraft, and fold origami.

PGP Key

Assuming you are willing to trust my domain-verified SSL/TLS certificate and the integrity of my web server, you might be willing to transitively trust that the following key is my current (as of late 2015) PGP key:

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
cZ+AUA==
=YJeS
-----END PGP PUBLIC KEY BLOCK-----