Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,540 posts.
The Octo-Bouncer
I started thinking about ball juggling machines in the year 2014. I wrote about my first few attempts at creating them in this blog post from the year 2017. In 2018 I wrote another post about my then newest build. We’re now in the year 2020. And finally, the quest to get a machine to … Continue reading The Octo-Bouncer
A comparison of Rust’s borrow checker to the one in C#
OK, so C# doesn’t share the Rust concept of “borrowing,” so it wouldn’t technically be correct to call this “borrow checking,” but in practice when people talk about “Rust’s borrow checker” they’re talking about all of the static analysis Rust does to ensure memory safety, for which I think this qualifies.
Class Hierarchies? Don't Do That
In theory , JavaScript does not have classes. In practice , the following snippet of code is widely considered to be an example of a “class” in JavaScript:
Hallucinations re: the rendering of Cyberpunk 2077
Realtime rendering and videogame programming mostly, but I love computer science and visuals in all their forms. This is a notepad of my ideas.
Learn AutoHotKey by stealing my scripts
tl;dr annotated AHK scripts here. Anybody who’s spent time with me knows how much I love AutoHotKey, the flat-out best Windows automation tool in the world. Anybody’s who’s tried to use AutoHotKey knows how intimidating it can be. So to help with that, I’m sharing (almost) all of my scripts along with extensive…
The Duct Tape Programmer
Jamie Zawinski is what I would call a duct-tape programmer. And I say that with a great deal of respect. He is the kind of programmer who is hard at work building the future, and making useful thin…
Rv, a new kind of Ruby management tool
For the last ten years or so of working on Bundler, I’ve had a wish rattling around: I want a better dependency manager. It doesn’t just manage your gems, it manages your ruby versions, too. It doesn’t just manage your ruby versions, it installs pre-compiled rubies so you don’t have to wait for ruby to compile from…
Vim anti-patterns
The benefits of getting to grips with Vim are immense in terms of editing speed and maintaining your “flow” when you’re on a roll, whether writing code, poetry, or prose, but because the learning curve is so steep for a text editor, it’s very easy to retain habits from your time learning the editor that stick with you…
Cognitive loads in programming
This long post presents programming in a different light than what is commonly considered. We will look at cognitive aspects of interacting with code.
Glob Matching Can Be Simple and Fast Too
Here’s a straightforward benchmark. Time how long it takes to run ls ( a* ) n b in a directory with a single file named a 100 , compared to running ls | grep ( a.* ) n b . Superscripts denote string repetition and parentheses are for grouping only, so that when n is 3, we’re running ls a*a*a*b in a directory…
Seven sins of numerical linear algebra
In numerical linear algebra we are concerned with solving linear algebra problems accurately and efficiently and understanding the sensitivity of the problems to perturbations. We describe seven si…
Programming With Nothing: FizzBuzz in the lambda calculus in Ruby
I love Ruby! I’ve used it every day for years and I’m not sick of it yet. It’s an easy language to love: it’s expressive, flexible and syntactically beautiful ; it has a unique combination of useful features like mixins , metaclasses and blocks ; it comes with a useful core library and comprehensive standard library …
A Vulnerability in Libsodium
Libsodium is now 13 years old!
Monorepos: Please don’t
Here we are at the beginning of 2019 and I’m engaged in yet another discussion on the merits (or lack thereof) of keeping all of an…
Using Java 9 Modularization to Ship Zero-Dependency Apps
When Java was first introduced, mainstream programming languages mostly either compiled to standalone executables (e.g. C/C++, COBOL), or else ran in an interpreter (e.g. Perl, Tcl). For many programmers, Java’s need for both a bytecode compiler and a runtime interpreter was a shift in thought. The compilation model…
Railway Oriented Programming
Slides and videos explaining a functional approach to error handling
How Python virtual environments work
After needing to do a deep dive on the venv module (which I will explain later in this blog post as to why), I thought I would explain how virtual environments work to help demystify them. Why do virtual environments exist? Back in my the day, there was no concept
Forth: The programming language that writes itself
An exploration of the evolution and meaning of the Forth programming language and its context in history.
Tmux lets you select and copy text with your keyboard
never leave the comfort of your home row again
The Memory Models That Underlie Programming Languages
There are about six major conceptualizations of memory, which I’m calling “memory models”, that dominate today’s programming.
A Brief Glance at How Various Text Editors Manage Their Textual Data (2015)
A blog about computing and other fun.
Game Boy Wordle clone: How to compress 12972 five-letter words to 17871 bytes
Update: You can play an updated version online here in the binjgb Game Boy emulator. This is the version with the frequency-based answer l...
Skip grep, use awk
Jonathan Palardy's blog about technology
I found a bug in the .NET framework and fixed it by hand-altering the DLL
Alex Clemmer is a computer programmer. Other programmers love Alex, excitedly describing him as "employed here" and "the boss's son".