Latest Posts

Some Reflections on Prying Open Excel Documents

Dec 28, 02:09 PM

I finally managed to build a standalone executable that will read sheets from an .xlsx document that have been “hidden” behind a password that will run on Linux (or at least x86_64 Debian) and can thus be easily containerized This, as many things, was more involved than I had hoped at the outset it would be. I ended up having to wade into both a new language (F#) and a new ecosystem (specifically .NET, but I’d never really done any kind of “Windows-oriented” development bef...

Protohackers in Rust, Part 07 (a)

Mar 26, 01:41 PM

You are reading an element of a series on solving the Protohackers problems. Some previous offerings, if you’re interested: Problem 0: Smoke Test Problem 1: Prime Time Problem 2: Means to an End Problem 3: Budget Chat Problem 4: Unusual Database Program Problem 6: Line Reversal Protocol Part a: The Protocol Part b: Observations and Architecture Part c: The Client Part d: The Main Task The Eighth Protohackers Problem is to implement a vaguely TCP-like protocol that can deal with unreliable and o...

An Encrypted Messenger, Part 1

Mar 06, 10:30 PM

Back in January, I began a new project: A messaging service with end-to-end encryption. Here are my initial thoughs. An Extremely M, Probably not V, P I now have something that works (the UI is still in the execrable stage, sorry). Here’s an outline of how it’s going so far: Encryption handled by a WASM module; this code is not anything approaching efficient, but because it generally only has to work at “human-scale” speed, it’s plenty fast. I will get around to some of the...

Protohackers in Rust, Part 06 (d)

Feb 22, 01:42 PM

You are reading an element of a series on solving the Protohackers problems. Some previous offerings, if you’re interested: Problem 0: Smoke Test Problem 1: Prime Time Problem 2: Means to an End Problem 3: Budget Chat Problem 4: Unusual Database Program This post itself is the fourth (and final) in a subseries on solving The Seventh Problem: first part second part third part The Main Task Let’s think about all the things we want the main task to do: Listen on a socket; when a connecti...

Protohackers in Rust, Part 06 (c)

Feb 21, 01:08 PM

You are reading an element of a series on solving the Protohackers problems. Some previous offerings, if you’re interested: Problem 0: Smoke Test Problem 1: Prime Time Problem 2: Means to an End Problem 3: Budget Chat Problem 4: Unusual Database Program This post itself is the third in a subseries on solving The Seventh Problem. Here is the first part; here is the second part. The Heartbeat Here’s a thorny detail of our client tasks’ operation: At any point, a connected device can re...