Blog archive

2024

Idea: WASM for Library Sandboxing

| Toward a better path than 'do nothing' when you can't resolve a CVE.

2023

Farewell, Google Domains

| You'll be dearly missed.

Plagiarism detection with winnowing

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

2022

Shifting left into the oblivion.

| When unstoppable policy meets immovable code.

Non-obvious uses for container registries

| Static images are just like, your opinion, man.

Flies in the honeypot

| Catching more flies with SSH than with honey.

Speed vs perfection is a false dichotomy

| It's actually a frontier.

Why I'm no longer betting on Go

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

2021

Attractive nuisance technologies

| Tantalizingly dangerous for amateurs.

DNS for configuration management

| Rocking Hesiod like it's 1987.

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

| Good writers borrow, great writers fill in the blank.

Kubernetes security hates us

| Closing out three years building a PaaS on Kubernetes.

Visualizing Videos with Python
Visualizing Videos with Python

| The next best thing to printing a gif.

How to write a great protocol or file format

| Lesser programmers borrow; great programmers steal.

2020

Practical Invariants

| A guide to using invariants in everyday programming.

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.