Fuzzing the aretext markdown parser

A few weeks ago, I implemented syntax highlighting for markdown in aretext, the minimalist vim clone I’ve been building. Like most context-sensitive languages, markdown is difficult to parse. Although it handles only a subset of the CommonMark 0.30 spec,1 my implementation required 845 lines of Go code. Parsing is especially tricky because the code needs to handle any document a user might open. It can’t crash or enter an infinite loop.
Read full post gblog_arrow_right

Binary Encoder (2003)

This is a story that begins with some code I wrote and ends with a rejection. First, the code. In high school, I wrote a little Mac OS X application that would encode text as binary. It had a window and textboxes and buttons and everything. You could type in “hello”, and it would output something like “0110100001100101011011000110110001101111”. You could also convert back from binary to the original text. In hindsight, the implementation was pretty terrible.
Read full post gblog_arrow_right

Why Vim syntax highlighting breaks sometimes

Vim was my preferred text editor for nearly eighteen years, until I switched to aretext in 2021. I appreciated vim’s efficiency and ubiquity, the way I could rely on it regardless of what project I was working on or what machine I had ssh’d into. Like any software, however, vim reflects the time in which it was written. In many cases, vim optimizes for speed above all else, an approach that made sense given the limitations of late ’90s computers.
Read full post gblog_arrow_right

What's new in aretext 0.5?

Today marks the fifth release of aretext, the minimalist text editor with vim-compatible key bindings! This post describes the highlights. (Wait, what’s that? You say you want to install it right now? Well, then just go straight to the installation docs!) Faster fuzzy menu search Aretext uses a trie-based fuzzy find algorithm for selecting files in a menu. This worked well for most projects… until I ran it after building Kubernetes.
Read full post gblog_arrow_right

Starcraft and Networking in the 90s (Part 2)

This is the second post of a two-part series on Starcraft and late-90s networking. Part 1 describes Starcraft’s many connection options. Configuring Starcraft networking in 1998 was an adventure. There were four different connection options (plus AppleTalk on Macintosh computers), each of which required specific software and hardware to function. How did anyone figure this stuff out? It turns out that the Starcraft CD included detailed support documentation. Today, this provides a glimpse of computing history circa 1998.
Read full post gblog_arrow_right

Starcraft and Networking in the 90s (Part 1)

Writing about multiplayer Starcraft reminded me how strange networking was in 1998. I remember connecting a computer to a modem, which was connected to a phone line (many homes had a second phone number specifically for this purpose). The modem would dial a number and “talk” to a modem on the other end.1 Networking two computers over a phone line seems bizarre to me now. You could connect without an IP address, packet switching, routers, network address translation, or firewalls – all the things we take for granted today.
Read full post gblog_arrow_right

Installing Windows 98, Windows XP, and Starcraft in QEMU

I wanted to run the original Starcraft, released in 1998, on my Linux desktop using QEMU. Thus began my six hour rediscovery of computing in the 90s, an era when installing working software required wizardry, persistence, and luck. Windows 98 First, I installed Windows 98 in QEMU using an ISO that I found online. Pentium 2 processor, 128 MiB of RAM, and 1GiB disk should be more than enough to handle Windows 98!
Read full post gblog_arrow_right

aol i think (1999)

Starcraft was the first game I played online. My friend and I would dial each other over a 56K modem. I remember wondering why he kept ending his chat messages with “:” and “)”. We liked to mine minerals and build armies, but I don’t remember attacking, winning, or losing. The network connection never lasted long enough. One day I wandered into a battle.net lobby. Everyone was typing furiously into chat before the game started.
Read full post gblog_arrow_right

FOSDEM 2022 Lightning Talk

On Sunday, I presented a lightning talk at the FOSDEM 2022 conference. Usually, FOSDEM takes place in Brussels, but recently it’s moved online. That was fortunate for me, because otherwise I probably would never have submitted a talk proposal! The talk was about aretext, the vim clone I’ve been working on for the last couple years: Pre-recorded talk: it’s just under 12 minutes long, and it doesn’t include the live Q&A session.
Read full post gblog_arrow_right