Latest Posts

Full Stack Gleam

Nov 26, 10:06 AM

I released my first full-stack Gleam app at work. Like most apps (especially internal ones), it’s just a thin, unremarkable layer of CRUD over a database. But working in Gleam has been an undeniably positive experience. My recent work with this type of development has been mainly with a Rust/Elm combination, so this will largely be a comparison with those languages. Gleam and Rust I am a huge fan of Rust. In general, I think its “drawbacks” (or at least what its detractors deride) are wo...

Copies vs Clones vs Moves in Rust

Sep 14, 03:15 PM

I recently saw a post on Mastodon by someone wrestling with learning Rust, who had conceptualized these three concepts thus: copy is a copy move is a shallow copy clone is a deep copy (but not always) Rust can be confusing; it has some concepts that just don’t exist in other languages, and it considers certain semantics differently from other languages. I am in no way any kind of “Rust expert”; I’ve just written and read quite a bit of it (and quite a bit about it), and think t...

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...