Technical Blog

Never surrender your password

22 Nov 2022
privacy, encryption

In a study that Ars Technica reported on, researchers found that an alarming number of computer repair technicians snooped through clients' devices—and female clients were way more likely to have their data accessed. Yikes! I once had to take my laptop to get some repairs done. The TAB key on my 2016 MacBook Pro had started glitching, and that wasn't going to fly when I was working on code and needed my tab completions and app switching to be seamless. ...

Continuations—what are they?

17 Nov 2022
programming, programming-languages

I had a friend ask me what continuations are, and why they're useful. There's a ton of literature about continuations; this is just a simple example meant to showcase something small and hopefully grokkable. You will need to understand a little bit of Racket, but if you know any Scheme, that should be good enough. If you just want a quick primer, check out Learn X in Y minutes for Racket. ...

Unix as a tool forge

7 Nov 2022
programming, technology, emacs

Wikipedia1 cites a few different sources on what "Unix Philosophy" is. Peter Salus summarizes it as: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. That second bullet point is my favorite: making composable programs rather than monolithic systems. In this way, Unix is designed to be a forge for easily building new tools. ...

Yet another blog revamp

26 Oct 2022

Yes, it’s time to redo my blog again. This time I found an ultra light-weight blog theme. This page here is under 100KB! I wanted to make something that acts more like a homepage for my research, rather than a blog. I still have all my blog posts, but now the focus will be on a more professional presentation of my work. This theme is really what I’ve wanted all along: a home page with a max-width for the text, table of contents, and built-in local search! ...

Email, getting work done, and corporations or: Outlook considered harmful

28 Aug 2022
email, tools

It's hard to overstate how important email is in our modern world. Even as hip new platforms like Slack &co. gain traction in the workplace, so much communication takes place in a crusty old medium that's outlived every purported "email killer". Where does it get its staying power from? Email predates much of the Internet as we know it today. Its current incarnation first emerged in the early 80s, though it has roots in earlier forms of digital messaging from as far back as the 60s. ...

Today I learned: Vertical monitors and subpixel anti-aliasing

11 Aug 2022
til, typography

Something I learned today from a coworker: if you turn your monitor sideways, subpixel anti-aliasing gets completely broken. This isn't as much of an issue on today's high-dpi displays, but for anything lower than a 4k screen, the effect can be noticeable. Just a little interesting thing I learned today. Thanks to my good, knowledgeable friend and coworker Jonner Steck! Also, while we're on the topic of font rendering, I've updated Iosevka Output to more closely match Input Mono: the cross-bar on the f now lines up nicely with the x-height. ...

A New Font

1 Aug 2022
happy-things, design, programming, typography

This week I created a custom build of the Iosevka font. I've used Input Mono for a long time now, and was very happy with it. However, it was missing a few glyphs that I wanted to use. Moreover, I didn't have a license for the Input font to use on e.g. my blog. Iosevka is stupendously customizable, so I thought I'd see if I could get something close to Input's styles. ...

How to write a type checker/type inferrer with good error messages

27 Jul 2022
programming-languages, type-checking, computer-science

All the source for this may be found on my SourceHut repository. Synopsis Experimental type checker/inferer for a simple lambda calculus Description This is a type inference system for a little language. (Described below.) It uses a fusion of type inference algorithms from PLAI, ESP, and μKanren. (See Resources) Broadly speaking, our type inference engine works by: generating typing constraints from the program solving those constraints We'll describe each of those in more detail. ...

Adding a Clock to the Tab-Bar in Emacs 28

20 Jul 2022

Today I figured out how to add a tab-bar to Emacs. I didn’t like having it in the mode-line: it gets duplicated for every window and my mode-line space is precious. In contrast, the right side of the tab-bar was always blank.

Rules for Social Media

17 Jul 2022

I’m not on many social media platforms these days. I like it like that. I mostly follow some academics and people who post interesting stuff. I post only occasionally, usually to show off my recent hiking exploits. I’ve come up with some rules for myself (all subject to change) about what I post. A post must meet all the following criteria: It must be positive and uplifting. There’s enough that’s negative on the internet. ...