Features of a dream programming language
Update: Be sure to read the improved 2nd draft of this article instead. The following content is the...
Update: Be sure to read the improved 2nd draft of this article instead. The following content is the...
So I couldn't sleep the other night, and my brain wanted to think about odd problems… Ever had a script that's compatible with both, Python 2 and 3, but you didn't want to bother the user to know whic
Far too many developers use Git without understanding it. It's time to straighten out your thinking about what Git is, and isn't.
When it comes to accuracy, how you add a series of arbitrary values together, and average them still matters.
Navigating codebases of any meaningful size is difficult. Most of a programmer's time is spent jumping through the codebase, reading or skimming to build a ment...
Instructions for compiling and running MIT/GNU Scheme.
List of all the plugins I use in PyCharm and Idea.
[This is about Symex.el , the Emacs extension for structural editing with Lisp. If you are unfamiliar with Symex, you could read the post introducing it , or TL;DR: just know that “symex” is short for Lisp symbolic expression / S-expression, and this extension provides a full-featured modal interface / Evil state for…
Last time we formulated the problem of isosurface extraction and discussed some general approaches at a high level. Today, we’re going to get very specific and look at meshing in particular.…
2024 Update: Part 2 is out! Let’s make a gzipped file and see what’s in it. We’ll keep it simple: just write 8 ‘a’s to a file. $ echo "aaaaaaaa" > test.out $ xxd test.out 00000000: 6161 6161 6161 6161 0a aaaaaaaa. As we can see, our file is 9 bytes long. We have 8 ‘a’ bytes written, plus a Line Feed (LF) character…
There are a number of things that people theoretically know how to do, but which aren’t possible because of how software gets made. Some of these are almost forgotten, but there are at least …
speed up your Python using Rust
Say you run an online book store and want to build a data pipeline that figures out who the top-selling authors are. Logically, the input to the pipeline is a log of every individual book purchase on the store for all time, along with details about each book like who authored it. And the output is a list of the…
8 AM. Like any other day, I take a quick glance at my GitHub notifications via Octobox.
I have long held the opinion that you should avoid Git LFS if possible. Since people keeping asking me why, I figured I'd capture my thoughts in a blog post so I have something to refer them to.
Git’s man-pages state that it’s a stupid content tracker. It’s probably the most used version control system in the world. Which is very strange, since it doesn’t describe itself as being a source control system. And in fact, you can use git to track any
How to turn 256 bits of entropy into a beautiful, avatar-friendly circular SVG: the Hashvatar.
Yesterday, at approximately 5:05pm, a Seattle area man installed Arch Linux on his home computer and has yet to tell anyone.
This is the companion reference for A Brief Introduction to Esoteric Languages, my lecture for a friend’s college class. The video should be legible to other viewers, and the material here should be (mostly) understandable without watching the video. The Esolangs Listed roughly in order of appearance in the talk, with…
How I got nerd sniped into benchmarking legacy x86 instructions
What’s wrong with Git? A conceptual design analysis De Rossi & Jackson Onward! 2013 We finished up last week talking about the how to find good concepts / abstractions in a software desig…
I spend a fair amount of time wandering around in the terminal. The chances are that you are too since you dared to open this story. My daily activities led me …
Failure in computer systems is inevitable. Adopting Erlang's philosophy of "Let it crash" at the many layers of abstractions in software can have a huge positive impact on resiliency.
Years ago, OpenBSD gained two new security system calls, pledge(2) (originally tame(2) ) and unveil . In both, an application surrenders capabilities at run-time. The idea is to perform initialization like usual, then drop capabilities before handling untrusted input, limiting unwanted side effects. This feature is…
A hundred things I learned writing my first technical book “Data-Oriented Programming”
About two months ago, I decided to start developing a fresh codebase for my voxel project – something that many indie developers are probably all-too familiar with, including myself. This time around, there were three major features that I wanted to implement:
This is the fourth article in a series about writing my own SQL query builder. Today, we'll rewrite it from scratch, explore API design, learn when to be lazy, and look at worse and better ways of doing things – all in 150 lines of Python!
Start using this domain right away. Straightforward domain shopping experience. Quick access to your domain.