Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 14,541 posts.
Interview Frustrations
Update: Here’s the link to the HN discussion about this post: https://news.ycombinator.com/item?id=26092964
The cost YAGNI was never about
If you think YAGNI is about saving effort, cheap generation should retire it. It doesn't. Here's why.
Code review antipatterns
Code review seems like a great idea, right? Two developers looking at the same code means two chances to spot problems; it spreads understanding of the way the project is evolving; the reviewer can learn useful tricks from reading the author’s code in detail, or spot opportunities to teach the author a useful trick…
To boldly go where Node man has gone before
With all the chatter about how uber-amazing Node.js is I figured I'd do a little comparison with my favorite language du jour: Go . Node'...
DeWitt and Stonebraker's "MapReduce: A major step backwards" (2009)
In January 2008 David DeWitt and Michael Stonebraker published an article criticising MapReduce. As far as I can find, the article is no lon...
400 days of Go
It's been 418 days since my first Github commit of Go code. In that time I've written a Syslog-to-Kafka producer, a Raft-based distributed SQLite database, a near real-time log search system, and become a core developer of InfluxDB. So if there is one word to summarize Go, it's productive. I haven't had the same burst…
Giving Up on TDD
You mean the one where he says that he tried it for a few months and then gave up? Yes, I read it.
How not to teach recursion (2021)
Parenthetically Speaking: Articles by Shriram Krishnamurthi
Don't write bugs
“If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with.” —Edsger Dijkstra, Turing Award Lecture (1972)
Co-routines as an alternative to state machines (2009)
When you have to traverse some sort of a nested data structure (say, a binary tree), one approach is to create a stack that remembers where in the tree you are. Another, much more elegant approach, is to write the function recursively. A recursive function employs the machine stack used to implicitly implement…
The surprising struggle to get a Unix Epoch time from a UTC string in C or C++
So how hard could it be. As input we have something like Fri, 17 Jan 2025 06:07:07 in UTC, and we’d like to turn this into 1737094027, the notional (but not actual) number of seconds that have passed since 1970-01-01 00:00:00 UTC. Trying to figure this out led me to discover many ‘surprise features’ and otherwise…
Significant features introduced for recent versions of Perl
History of Perl releases since version 5.6, each with a summary of added or changed features.
When I use classes, when I don’t, what I do instead and why
When I use classes, when I don't, what I do instead, and why
What does $0=$2 in awk do?
The trick to understanding awk in all its terse glory is to understand its defaults. Most solutions you see in the wild are a clever symphony of awk defaults stacked on top of each other. In this post, I break down one of the most popular one-liners which should hopefully make future awk-ing pretty straight forward.
Rust's Sneaky Deadlock With `if let` Blocks
Rust is my favorite programming language. I've been writing Rust for about 6 years, from college to professionally, and I'm vocal about how helpful the compi...
Scalable Program Architectures
How to design resilient architectural patterns that last the test of time
Anatomy of a Lean proof for software engineers
Intro I recently worked through a problem from a theory of computation textbook that asked me to prove a property of a language using finite automata. The informal proof is a simple constructive proof where you build an automaton and show that it recognizes the language. This is kind of similar to program…
Commit description as a thinking tool
Before the AI era, I wrote pretty long commit descriptions (or commit bodies) for major changes. It took me about five to ten minutes to draft and reread them to make sure I didn’t miss anything important. I did that for several reasons.
Good developers learn to program. Most courses teach a language
A bootcamp can teach you the syntax of a language in six weeks. The part that takes a decade is everything else: where the seams go, where the data flows, which decisions you are stuck with for the life of the codebase. This is a senior developer's argument for what learners should actually be looking for, after…
My Favorite C++ Pattern: X Macros (2023)
In this post, I talk about my favorite C/C++ pattern involving macros.
Architecture astronauts take over
It was seven years ago today when everybody was getting excited about Microsoft’s bombastic announcement of Hailstorm, promising that “Hailstorm makes the technology in your life work t…
Shape typing in Python
While I was looking the other way, Python got advanced static types! Here’s matrix multiplication, describing the input shapes and its output shape:
HTML whitespace is broken (2024)
A deep dive into HTML whitespace collapsing: How it works, why it sucks, how it should work, and how to deal with it.
How Does a C Debugger Work? (2014)
Debugging, GNU± Linux and WebHosting and ... and ...