Blog archive

2023

Farewell, Google Domains

You'll be dearly missed.

Read More »

Plagiarism detection with winnowing

Hashing, n-grams, and bag of words — why is it always you three?

Read More »

2022

Shifting left into the oblivion.

When unstoppable policy meets immovable code.

Read More »

Non-obvious uses for container registries

Static images are just like, your opinion, man.

Read More »

Flies in the honeypot

Catching more flies with SSH than with honey.

Read More »

Speed vs perfection is a false dichotomy

It's actually a frontier.

Read More »

Why I'm no longer betting on Go

It's not you, it's me...mostly.

Read More »

2021

Attractive nuisance technologies

Tantalizingly dangerous for amateurs.

Read More »

DNS for configuration management

Rocking Hesiod like it's 1987.

Read More »

A Mad Libs approach to bios, presentation summaries, and elevator pitches.

Good writers borrow, great writers fill in the blank.

Read More »

Kubernetes security hates us

Closing out three years building a PaaS on Kubernetes.

Read More »
Visualizing Videos with Python

Visualizing Videos with Python

The next best thing to printing a gif.

Read More »

How to write a great protocol or file format

Lesser programmers borrow; great programmers steal.

Read More »

2020

Practical Invariants

A guide to using invariants in everyday programming.

Read More »

2013

Covertly Sending Messages Using DNS

How to hide short messages using the power of non-recursive DNS queries or any other of your favorite Internet caching mechanisms.

Read More »