31 May 2026

Growing a unique function signature without rescanning the binary

One function took 462 seconds to fingerprint. Here is the algorithm that turned that into a couple of seconds, and why it is really an old string-matching idea run backwards.

31 May 2026

How do you know your Cython hot loop is fast enough?

You Cythonized the hot loop and it got faster. Now the hard question: is it optimal, and how would you even tell?

26 January 2026

Building a compile-time x86 assembler in C++20

Using C++20 concepts and constexpr to encode x86 instructions at compile time

01 August 2025

IDA Pro and Cython: super-charging the work-horse of reverse engineering

Cython and IDA Python for super fast reversing tools

16 November 2022

Passing the baton of leadership at VGS (f.k.a. Very Good Security)

Reflections on founding VGS, the challenges of leadership, and the transition to new hands after seven years at the helm.

02 January 2013

A New Year -- a New Beginning

On the transition from Maker to Manager

28 February 2011

Developing a nose Test Plugin to Time Python Tests

Writing a simple nose test plugin that times python tests, based of XUnit.

11 February 2011

Arbitrary Stack Trace in Python

How to take an arbitrary stack trace in Python

12 September 2010
01 June 2010

A Pythonic n-wise Iterator for Any Iterable

Extending python's itertools module