Technical Blog

Praise for the pragmatic third camp

16 Mar 2023
programming, philosophy, business

Some years ago I came across a blog post that described programmers as being in one of three camps. It's a fun, short post, so I encourage you to go read that real quick, but the gist of it is that programmers generally fall into one of three categories according to what they primarily value: Applied mathematicians, who appreciate elegant solutions to problems. Program execution on von Neumann machines is incidental. ...

Metric Worship, or: How a bad manager wrecked a (small) company

21 Feb 2023
management, career, philosophy

The story I once worked as a part of a company with four employees, all of us programmers. We formed a sort of daughter company with a bigger—though still modest-sized—company that handled our payroll and whatnot. Our work directly helped the parent company, but we were organizationally independent development-wise. I really liked working with that small team: we had a one-hour meeting each week to plan out our work, and a short, casual stand-up each morning to get things rolling. ...

What is a type system, really?

23 Jan 2023
computer-science, programming-languages, type-checking

Background This is a question I've been wrestling with for a little bit. My first experience with a type system was with Java, and I didn't like it. It just felt like an annoying constraint on the kinds of programs I could write. I was coming from Perl, which sports weak dynamic typing, so Java's rigidity came as a bit of a shock. After Java I learned some C, which too has types. ...

Make an Emacs Buffer Open the Way You Want

27 Dec 2022

Are you tired of having a particular buffer pop open in the wrong direction? Do you wish, for example, that the Racket REPL buffer showed up on the right in a vertical split, rather than below in a horizontal one? Look no further. I give you, display-buffer-alist: (add-to-list 'display-buffer-alist '("\\*Racket REPL </>\\*" (display-buffer-in-direction) (direction . right))) That little snippet will make sure when you hit C-c C-k inside of a racket-mode buffer, a REPL will pop up on the right-side instead of on the bottom. ...

What I Like in a Font for Code

5 Dec 2022

I'm well aware that I may have a bit of an obsession with fonts. I don't think that's too unusual for someone who works in tech, however. Sites like Programming Fonts exist to let people test drive and compare a bunch of different fonts. Just for fun, I thought I'd write up some of the features I look for in a programming font that I've come to deliberately pick out. ...

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
tutorials, featured
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. ...