Topics /

Software Engineering

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

Any year
3213

Hide macOS Tahoe's Menu Icons

I really dislike Apple’s choice to clutter macOS Tahoe’s menus with icons. It makes menus hard to scan, and a bunch of the icons Apple has chosen make no sense and are inconsistent between system applications. Steve Troughton-Smith is my hero for finding a Terminal command to disable them: Here’s one for the…

3216

Prince Of Persia Code Review

On Apr 17, 2012 Jordan Mechner released the source code of Prince of Persia. Even though it is the Apple II version written in 6502 assembly language, it was a pleasant experience to dive in the code of that mythical game: As usual there were many fascinating sofware wizardries to discover. The Apple II apparent poor…

3218

A byte string library for Rust

bstr is a byte string library for Rust and its 1.0 version has just been released ! It provides string oriented operations on arbitrary sequences of bytes, but is most useful when those bytes are UTF-8. In other words, it provides a string type that is UTF-8 by convention , where as Rust’s built-in string types are…

3219

Finding Free Food with Python

If you live in a major city, there’s a good chance you’ve used (or at least heard of) food delivery services like Postmates, GrubHub, or DoorDash. These services are great for times when I’m behind on groceries or when I’m getting some late night studying in before a big midterm or final. The only problem with these…

3222

Java 26 is here

Java 26 is here, and its main purpose seems to be to provide a solid foundation for future things to come. It comes with a few new features, some performance improvements and multiple enhancements that mention Project Valhalla as the inspiration for their existence. This post has all the info!

3223

Uncle Bob and Silver Bullets

A while back I wrote that Robert Martin was ruining software by being too good at programming. That was supposed to be a joke. Since then he’s done his damndest to actually ruin software by telling people they’re doing it wrong. His most recent response where he yells at software correctness was the breaking point for…

3224

How to zero a buffer

Now, we don't want to truly change the observable behaviour of our software — but fortunately the C standard has a more liberal concept of "observable" than most people. In particular, the C standard states that the observable behaviour includes accesses to volatile objects . What is a volatile object, you ask? It is…

3225

How to do distributed locking

As part of the research for my book , I came across an algorithm called Redlock on the Redis website. The algorithm claims to implement fault-tolerant distributed locks (or rather, leases [1]) on top of Redis, and the page asks for feedback from people who are into distributed systems. The algorithm instinctively set…

3227

The microservices cargo cult

Microservices are awesome. We know this because of all the success stories that are circulating lately. The news is full of such stories, of people taking large, monolithic codebases, breaking them up, adding HTTP APIs and enjoying all the benefits.

3228

Remember when people tracked bugs?

I've done some well-known bitching about the halfassed and haphazard way that Open Sores projects have handled their bugs in the past, but man, things have only gotten worse since then. I mean, projects used to actually have bug databases. Boy, those were the days. Failing that, developers used to put their email…

3232

Lessons Learned: A Year with a Large AngularJS Project

After a year of working with a large AngularJS project, I thought I’d share a few of the lessons that I learned in the process. Firstly, I love AngularJS. It suits my needs exceedingly well, and I expect it will be my goto for the forseeable future when I need a solid framework for “thick client” single page…

3239

Learn regular expressions in about 55 minutes

// For flipping between displayed things const toggle = id => { const element = document.getElementById(id) element.style.display = element.style.display === "none" ? "" : "none" } Regular expressions ("regexes") are supercharged Find/Replace string opera...