news
Programming Leftovers
-
Roman Kashitsyn ☛ Static types are for perfectionists
Do my adaptations help me write better programs? Maybe. My fixation on structure and understanding prevents bugs. When mistakes pop up, they usually come from wrong premises, not bad logic.
Do I stick to my principles because they produce better programs? Probably not. But they are comfortable. Fighting a compiler to craft a program that works on the first run feels terrific. Squeezing out bugs from a Python script doesn’t.
I met many people whose approach was my opposite. They pulled in behemoth frameworks. They moved on when their programs seemed to work. They feared less and experimented more. I no longer take issue with their ways. They can build things I never would.
-
Andrew Nesbitt ☛ A GitHub for maintainers
The things I want from a forge are the things that can’t move to the client because they involve more than one party. Who depends on you, who you depend on, what happened to that project you forked from three years ago, where the active development moved to when the original went quiet. Almost none of that happens inside a single repository. It happens in the relationships between them, and that’s the part GitHub has barely touched in years and the part none of the would-be replacements are talking about either.
So my version of Mat’s list is mostly about coordination between projects. The only relationship between two repos that GitHub actually models is the fork, because in 2008 the way you used someone else’s code was to fork it and send a pull request. In 2026 the way you use someone else’s code is to add a line to a manifest, and the forge has no equivalent object for that. It knows about dependencies only as a thing that generates Dependabot PRs. I’d like them to get the same treatment the fork got.
-
Andrew Nesbitt ☛ Patching and forking in package managers
When a dependency has a known vulnerability and no maintainer to release a fix, you have to fix it yourself. Clone the source, apply the patch, get the patched version back into your dependency tree. The volume of reported CVEs is going to rise, and many will land in packages where nobody is around to cut a release.
-
Tim Bradshaw ☛ Making CLOS slot access less slow
Access to slots in CLOS instances is often very slow. It’s probably not possible for it ever to be really fast, but the AMOP MOP does provide a way of making it, at least, less slow.
-
C3 ☛ Unsigned sizes: a five year mistake
A quick note for readers who don’t follow C3: it’s a systems language in the C tradition. Specifics below are C3’s, but the tradeoffs apply to any language that has to pick a type for sizes and lengths.
C3 is moving to signed by default, but why are we doing that? Isn’t unsigned more correct for sizes at least? Let’s try to answer that.
-
Luke Plant ☛ Inverse Sapir-Whorf and programming languages
The Sapir-Whorf hypothesis, in its simplest form, is the idea that the language you speak influences the thoughts you think. This post is about a twist on this idea, that I’m calling “Inverse Sapir-Whorf” (for want of a better term), and how we see it in computer programming languages.
Sapir-Whorf is one of those ideas that has been popularised in general culture in a rather misrepresented and exaggerated form. In the field of linguistics, not many people today take seriously the “strong” forms of Sapir-Whorf, such as “linguistic determinism” – the idea that a language controls your thoughts or limits what you can think, or that you even need certain languages to think certain thoughts.
-
The Deployer Times ☛ Problems with escapeshellarg()
If you ever passed a user-supplied string into a shell command from PHP, you have probably written something like this: [...]
-
Alcides Fonseca ☛ Why TUIs are back
Terminal User Interfaces (TUIs) are making a comeback. DHH’s Omarchy is made of three types of user interfaces: TUIs, for immediate feedback and bonus geek points, webapps because 37signals (his company) sells SAAS web applications and the unavoidable gnome-style native applications that really do not fit well in the style of the distro.
-
Java/Golang
-
Redowan Delowar ☛ Hoisting wire plumbing out of your Go handlers
Both handlers run through the same five steps: [...]
-
-
R / R-Script
-
Elias Mårtenson ☛ A little comparison between R and Kap — Elias Mårtenson
Some time ago, I read this article: Why pandas feels clunky when coming from R. In it, the author explains why they feel that R is a much smoother tool than Pandas.
I'm not a familiar with Pandas, but I do know a bit of R, so when I recently implemented some new features in Kap, I decided that reimplementing the examples in the blog post in Kap may be a good way to demonstrate the differences between the languages.
Spoiler: the Kap solutions are shorter, but R has some nice defaults that has to be specified explicitly in Kap. At the end of the day, it all comes down to individual preference.
-