RSSAmplifier

Blog

~elly/blog

elly.townRSS feed ↗45 posts

Latest posts

Advent of Code: Libraries

The libraries I built for Advent of Code

Advent of Code: 500 Stars

My experiences solving every Advent of Code challenge released so far

Reservoir sampling

How to choose a random subset of a large set efficiently

X.509 Certificates

How do X.509 certificates actually work, and what's actually inside them?

Fossil

An introduction to the fossil vcs, and some comparison to git

Macaroon MAC Chaining

A cryptographic technique to create constrainable auth tokens

Parser Combinators

A neat technique for building parsers out of smaller parsers

Rogue Source Tour

A quick tour through the source of rogue(1), one of the classic Unix games

Binary Transparency

A technique for shipping binaries which are provably derived from specific source trees

Fennel for Advent

Experiences doing Advent of Code 2022 in Fennel, a tiny Lisp that compiles to Lua

Packaging for Alpine

My experiences creating and publishing my first package for Alpine Linux

Alpine on Framework

My experiences using Alpine Linux on an 11th gen Framework laptop

Lambda Calculus

An introduction to the lambda calculus, given as a Scheme program

Struct Member Naming History

Why do some libc structs have prefixes on all their names?

General Purpose Macrogenerator

A rewrite of the historic GPM in C, slightly touching on differences between C and CPL

Hare First Impressions

Trying out the Hare programming language

Doing It Right: Passwords, Keys, and Backups

Some thoughts on protecting your most important data, and how I do it

Just-In-Time Compilation

A worked example of how some types of JIT compilation work, in C

IRC Client Design Thoughts

Some design notes on how to structure an IRC client with an eye towards persistent presence

Cipherpunks, Mixmaster, and Mixminion: Anonymous Email

An overview of email anonymization tools and attacks against them

Book Review: A Psalm For The Wild-Built

A review of "A Psalm For The Wild-Built" by Becky Chambers

The ChaCha20 Cipher Core

An amd64 assembly of the core of the chacha20 stream cipher

The PPM Image Format

The world's simplest image format!

Backups

How I make backups of my systems, 2022 edition

Shellballs and self-extractors

How self-extracting shell tarballs work and why they exist

m4

A historical overview of the m4(1) macro language

Tarballs

History and design of the tar(1) file format

Whence Autotools?

Where exactly did autotools come from, and what were the people who created it thinking?

Constant-Time Operations

In cryptography, what are constant-time operations and why do they matter?

The Shunting-Yard Algorithm

An algorithm for doing precedence-aware parsing of mathematical expressions into a sequence of stack ops in a single pass

The Boyer-Moore String Search Algorithm

A fast algorithm for finding substring matches, implemented in C

Virtual Machines, Part 1: Instruction Encoding

How instruction encoding and decoding works in hardware and software

Length Extension Attacks

How length-extension attacks work against Merkle-Damgard hash functions

Virtual Machines, Part 0

What virtual machines are, how they work, and a worked example of one in C.

My Homedir Layout

How the subdirectories in my home directory are laid out and why

Pinebook

Some notes from getting my Pinebook Pro set up

Merkle Trees

A data structure (a tree of hashes) to allow for efficient validation of parts of a huge data set.

Lamport Signatures

A way to use trees of hashes to produce a simple, post-quantum signature scheme

Broadcast Buffers

A data structure for handling buffered messages being fanned out to many clients

Boring Protocols

What makes protocols "boring", and why is boring-ness desirable?

The C++ static constructor registration trick

A way to register members of a set (modules, etc) at program startup time in C++ without needing to fill out a big table at compile time

Linda Tuple Spaces

A cool data structure for distributed programming

Using The ed(1) Text Editor

How to use /bin/ed!

Rules For Getting Along With Others

Just a bit of life advice stolen from Ann Landers.

Writing a Unix Userland

What the main components of a rudimentary Unix userland are and how to write them in C.