Literate Programming is the process of writing documentation embedded with source code, rather than writing them separately as is more usual with software engineering. This provides a collection of benefits, but it requires reshaping how you think about the software development process. When I'm writing a literate program, I start with the literate document. I write the basic boilerplate…
I use Emacs daily. It's an essential part of my workflow. I am also deeply opposed to using LLMs to generate code . Because of this, I have put my name down on Human Emacs . If at any point the GNU Project decides that LLM-generated code is acceptable, I am committed to participating in a future of Emacs without them. Thankfully, we're in a better position than our friends using vim.…
Writing is hard . I want to express my thoughts in a way that is helpful for other people, but also makes me proud. I want to be correct. I want to be informed. I don't want my writing to contain blatant errors caused by poor editing. This pressure adds inherent friction. So I reduce that friction. I write in Markdown, which is comfortable for me. I use a simple static site generator that…
I do not use LLMs or other "Generative AI" for prose or code, nor do I accept it from others as open source contributions. I do not discuss my prose or code with LLMs. I do not consult LLMs for projects, contributions, assignments, research, or anything else. As far as possible and practicable, I have disabled LLM-integration in my tools and replaced tools that don't let me do so. Requests…
I am once again thinking about programming in natural language. For most programming languages, you can parse them according to strict grammars that eliminate their ambiguity. These can get ugly, especially for languages like C++ where one symbol can mean many different things depending on its context, but the code is, in theory, able to be parsed. One of the biggest barriers for programming in…
Zig is rising in popularity. It hasn't yet seized the space occupied by even Rust or Go, much less C, but it has been adopted by a few major projects and countless smaller ones. As such, it's becoming an important language for the future. having been interested in Zig for several years, I decided to check back in on the language and see how I feel about it today.
I don't vibecode. I don't use LLMs willingly. Every line of code I write is my own or generated deterministically through a process I fully understand. Considering the world is divided over LLMs these days, I wanted to share my particular perspective on why I chose the path I have, as well as some of the places I do think LLMs are appropriate.
I have never been an active user of LinkedIn. I created an account a couple of months ago after a professor told me I should have a presence there. I was skeptical, but decided it was important enough to have access to any opportunities and connections I would have otherwise be missing. I no longer have access to my account. I recently tried to log in and was met with a friendly greeting.
Lately I've been spending time learning Scheme and using it to implement the concepts I'm learning in my physics classes as time permits. One of the most exciting things I've been doing with this is getting my Scheme to compile to the Web thanks to Hoot. One of the biggest challenges has been the fact that Hoot is unstable. It's currently at version 0.9.0. The documentation is…
Is it time for me to finally start writing Zig? I used to use it (and make minor contributions) years ago but got demoralized by constantly rewriting my code with updates. But it seems like a solid language and one that will only increase in prevalence in the coming years.
Forth is uncommonly used to teach programming to kids. Scripting languages like Python and visual environments like Scratch are far more popular options. But when I got the opportunity to introduce middle and high school students to programming, I chose the stack-oriented concatenative language from 1970. I was ecstatic about this opportunity. I'm passionate about giving people just a bit…
The number of ah-ha! moments I've had when learning about special relativity is incredible (at the cost of the constant pain of "how on earth is this possible"). I knew how to do Lorentz transformations before and even wrote some code to represent them, but now I'm finally building an intuition for special relativity instead of primarily relying on the equations. Can't wait for…
Programming sucks. Code sucks. It's hard to read, hard to test, and hard to maintain. Only a handful of people can understand any particular software project. These are major problems. I'm here to explain how we can fix them.