New
The latest blog posts to take off on Hacker News. 14,543 posts.
Docker, Django, Traefik, and IntercoolerJS: My go-to stack for building a SaaS
I provide a deeper-dive on the tech stack I like to use in 2021. It is simple, easy to work with, and allows you to grow out of it when the time comes. Updated for 2021!
Cyclic dependencies are evil (2013)
Cyclic dependencies: Part 1
What's New in PHP 8.1
PHP 8.1 adds support for PHP enums, as well as readonly properties, Fibers, performance improvements, new in initializers, and more.
What am I running inside my bash? (2014)
What am I running inside my bash?
Hotwire: A new old way to build web apps
I’d like to share my experience of encountering Hotwire from the team at Basecamp which was extracted from the tooling used to build their…
Fix Terminals
I want terminal keypresses to Just Work. What do I mean Just Work? I mean programs in a simple orthogonal way, can determine the key that was pressed, and this model should easily map to the user's expectation.
OO in Python is mostly pointless
Note from 2025 me - I largely still agree with myself - and I still see the same crappy OO code getting pumped out. The final point in "Exceptions" is worth emphasising more.
Mocks Aren't Stubs (2007)
Explaining the difference between Mock Objects and Stubs (together with other forms of Test Double). Also the difference between classical and mockist styles of unit testing.
Why Create a New Unix Shell?
This post explains the project's motivation from several perspectives. Unix shell is an old and successful technology, so there are many ways of looking at it.
Python's Type Checking Renaissance
You may have heard that TypeScript has been taking the web development space by storm in the last few years , bringing to it static types. I believe the same thing is starting to happen in the world of Python, where type checkers like mypy , Pyre , and Pyright are increasingly used, at least where Python is used by…
The unreasonable effectiveness of simple HTML
I've told this story at conferences - but due to the general situation I thought I'd retell it here. A few years ago I was doing policy research in a housing benefits office in London. They are singularly unlovely places. The walls are brightened up with posters offering helpful services for people fleeing domestic…
Software engineering topics I changed my mind on
At some point, I realized I would've argued the exact opposite position on a lot of topics just a few years ago.
DrScheme in Space
Parenthetically Speaking: Articles by Shriram Krishnamurthi
Basic Scripting with Awk and Gnuplot
Posted to HN. Comments and discussion highly encouraged. Introduction This will be a short example-based guide to (a) awk (b) gnuplot and (c) using them in a script. I needed to graph some data based on the output of a command run a couple times. So what better way to solve that five minute task than to spend an hour…
Knuth-Morris-Pratt string-searching algorithm: DFA-less version
You see, there are two memory accesses per one character of the input string (at average). Hence, the total number of all memory accesses can be len*2 at worst.
Cgit, Nginx and Gitolite: A Personal Git Server
Hi'ya I'm Bryan, and this is my collection of projects, ideas, thoughts, feelings, opinions, ramblings, concepts, concerns, notions, conclusions, blurbs, and schemes, to name a few.
Flow-Based Programming
Official website for flow-based programming
Again on 0-based vs. 1-based indexing
André Garzia made a nice blog post called “Lua, a misunderstood language” recently, and unfortunately (but perhaps unsurprisingly) a bulk of HN comments on it was about the age-old 0-based vs. 1-based indexing debate. You see, Lua uses 1-based indexing, and lots of programmers claimed this is unnatural because “every…
User power, not power users: htop and its design philosophy
This short story is not really about htop, or about the feature request that I’ll use as an illustration, but about what are the core principles that drive the development of a bit of software, down to every last detail. And by “core principles” I really mean it.
When costs are nonlinear, keep it small
Batching work is more efficient … until cost rises nonlinearly with batch size. Then smaller batches are the most efficient. So don’t delay maintenance!
Software engineering is a learning process, working code is a side effect
I have come to the conclusion that Software Engineering is primarily a learning endeavour, the working code is rather a side effect. This quote is actually not mine but I am paraphrasing Alberto Brandolini who is making this very point in Event Storming (he was actually talking about Software Development, but I do not…
How I Build Web Apps As A Freelancer
It's now roughly seven or eight years that I'm building dynamic front ends for the web. From digital art wallets to games (1, 2) and synthesizers, I've seen it all. And since my process
Software effort estimation is mostly fake research
Effort estimation is an important component of any project, software or otherwise. While effort estimation is something that everybody in industry is involved with on a regular basis, it is a niche topic in software engineering research. The problem is researcher attitude (e.g., they are unwilling to venture into the…
That XOR Trick (2020)
There are a whole bunch of popular interview questions that can be solved in one of two ways: Either using common data structures and algorithms in a sensible manner, or by using some properties of...
GitHub Stale Bots – A False Economy
Stale Bot’s are a type of automated bot on Github, which locks issues which are “stale” (as in have no recent activity). This seems like a helpful tool at first, but in reality it’s terrible for all p