Topics /

Software Engineering

The most popular blog posts about software engineering on Hacker News. 1,136 posts.

2023
841

Can sanitizers find the two bugs I wrote in C++?

A few days ago I published a short post about two bugs I wrote while developing the C++ external scanner for my TLA⁺ tree-sitter grammar. Reactions were mixed! Many people were supportive, but there were of course the usual drive-by claims by developers that the bugs were trivial, they would’ve found & fixed them…

842

Why Static Languages Suffer from Complexity (2022)

People in the programming language design community strive to make their languages more expressive, with a strong type system, mainly to increase ergonomics by avoiding code duplication in final software; however, the more expressive their languages become, the more abruptly duplication penetrates the language itself.

846

INTERCAL: Practically impossible

A very good friend of mine has been experimenting with trying to coax Chat-GPT4 to successfully do basic coding tasks. So have a lot of people these days, of course. In an idle moment, though, my friend submitted the following query:

848

Tree-Structured Concurrency

For a while now I've been trying to find a good way to explain what structured concurrency is, and how it applies to Rust. I've come up with zingers such as: "Structured concurrency is structured programming as applied to concurrent control-flow primitives" . But that requires me to start explaining what structured…

853

I think I kind of hate lazy loading

Yesterday I was on a train. I clicked on a link and my browser loaded a long article for me to read. Halfway through reading it, the train went into a tunnel and I lost signal. That meant I couldn't see the images on the other half of the page for the rest of the journey. I had a sea of broken images. Even though the…

855

Book list for streetfighting computer scientists (2022)

2025 edition. this is very different from most "best books for programmers" lists you'll see, with Code Complete and Clean Code and Wistful Wanking for Practical Wankers and Design Slatterns and titles like that. you'll figure all that out as you go along. these are books to read so that you can cut motherfuckers with…

859

My mental model of Clojure transducers

I’ve been programming in Clojure for a long time, but I haven’t been using transducers much. I learned to mechanically transform (into [] (map f coll)) to (into [] (map f) coll) for a slight performance gain, but not much beyond that. Recently, however, I’ve found myself refactoring transducers-based code at work…

860

20 Years of Programming (2020)

I’m not sure of the exact date, but 20 years ago, around now, I started my first professional programming job. It’s weird to think about having done anything for 20 years. That’s as long as all my schooling put together.

861

Fiber in C++: Understanding the Basics

Fiber, a less known concept compared with coroutine, is a pretty powerful addition to cooperative multitasking. As a graphics programmer in game industry, I totally appreciate the great flexibility that fiber brings on the table. As a matter of fact, I feel the tech is a little bit underappreciated due to the lack of…

863

Introduction to P vs. NP

Series Introduction In this series of articles I would like to share with you a set of ideas that are meant to help non-technical people build a better intuition as to what the current software and…

865

Code the shortest path first

There is a strange thing that I noticed as I progressed from a junior engineer to mid-career to senior. When you’re a new engineer, still learning the basics, you are given a task or you have an idea, and you proceed to implement exactly that idea. Very simple, point A to point B, whatever gets the job done. You hate…

869

Modular Errors in Rust

It is thankfully common wisdom nowadays that documentation must be placed as near as possible to the code it documents, and should be fine-grained to a minimal unit of describability (the thing being documented). The practice provides numerous benefits to the codebase and project as a whole: