Topics /

Software Engineering

The most popular blog posts about software engineering on Hacker News. 14,544 posts.

Any year
12032

Ratchets in software development (2021)

So there's a thing we use at work which I call a ratchet. In our codebase, there are "patterns" which we used to use all the time, but we decided to stop using them, but removing all of the existing instances at once is too much work. We want to remove all of these instances eve...

12033

Async Cancellation

Sometimes we start things but decide midway through that we would prefer to rather not be doing them. That process is sometimes referred to as cancellation. Say we accidentally clicked "download" on a large file in the browser. We should have a way to tell the computer to stop downloading it.

12042

Building a F1 race simulator

One of the most fascinating aspects of modern Formula 1 is the use of computer simulations to predict car performances and race strategies. By the early 1990s, teams like Benetton had begun to deve…

12045

Introduction to Category Theory

The aim of this course is to teach the basics of category theory, in a way that is accessible and relevant to computer scientists. The emphasis is on gaining a good understanding the basic definitions, examples, and techniques, so that students are equipped for further study on their own of more advanced topics if…

12048

Sherlock Holmes Debugging

I use the Sherlock Holmes method of debugging software. This means working backwards from a symptom to the series of causes which tell a story of the entire bug. It works for production outages and during development. Something that recently happened at my startup should be instructive.

12050

C++26: The New Debugging Header

If you’ve ever needed to hit a breakpoint programmatically in C++, you’ve probably written something like this: 1 2 3 4 5 6 7 8 9 #if defined(_MSC_VER) __debugbreak(); #elif defined(__clang__) __builtin_debugtrap(); #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) __asm__ volatile("int3"); #else…

12056

The real “must have” tools for programming

Forget programs. The most important productivity tool for programming is your mind. And the next best set of software development tools are ones that take care of you. It isn’t about Git. Or Docker. Or testing frameworks. These are all useful tools. I use them daily. But they are not the most important software…

12058

What is Software Engineering?

Nearly all of Go’s distinctive design decisions were aimed at making software engineering simpler and easier. We’ve said this often. The canonical reference is Rob Pike’s 2012 article, “ Go at Google: Language Design in the Service of Software Engineering .” But what is software engineering?