Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 1,551 posts.
Don’t mock what you don’t own
A common issue when writing tests for real-world software is how to deal with third-party dependencies. Let’s examine an old, but counter-intuitive principle.
Multiple assignment and tuple unpacking improve Python code readability (2018)
Whether I’m teaching new Pythonistas or long-time Python programmers, I frequently find that Python programmers underutilize multiple assignment....
What ID3v2 could have been
Speculations and specifications. If you were a Winamp user back in the day, or curate an MP3 collection currently, you might recognize the humble ID3 tag. It is what the metadata in the MP3 file is made up of. First it was pretty limited in the version later dubbed ID3v1. Like any good 2.0 they added a ton more…
Practical guide to solving hard problems
I sometimes find myself in a position of needing to write some code that I’m just not sure how to write. Been there have you? Here are the steps I take when I’m stumped. No huge revelations here, just hard-earned advice.
Accurate Image Alignment and Registration Using OpenCV
The image alignment and registration pipeline takes two input images that contain the same scene from slightly different viewing angles. The picture above displays both input images side by side with the common scene (object) being the painting Las Meninas (1656) by Velázquez, currently at the Museo del Prado in…
State machine replication, and why you should care
Listen in on Jane Street’s Ron Minsky as he has conversations with engineers working on everything from clock synchronization to reliable multicast, build systems to reconfigurable hardware. Get a peek at how Jane Street approaches problems, and how those ideas relate to tech more broadly.
Dolphin Progress September, October, and November 2022
As we hit the holiday season, our Progress Report might be considered a bit late. A two month report became a three month report as we realized just how much work we had to catch up on. While the usual summer burst of activity didn't come, it seems instead everyone poured their time in throughout the autumn months!…
Bad Emacs Advice
Most Emacs advice you'll find on the internet is largely good, and will improve your Emacs abilities, but people do occasionally share outright bad advice that harms your learning.
Technology Choices for My SaaS in Retrospect
Two years ago, I started out building a new software product. From the start, it would require mobile, web, and backend components to make it work, so I had to make quite a few technology choices. Here is how those turned out.
Forgejo
After many days of hard work and preparation by a team of former Gitea maintainers and enthusiasts from the FOSS community, we are proud to announce that the Forgejo project is now live.
Unfinished Business with Postgres
7 years ago I left Heroku. Heroku has had a lot of discussion over the past weeks about its demise, whether it was a success or failure, and the current state. Much of this was prompted by the recent, and on-going security incident, but as others have pointed out the product has been frozen in time for some years now…
When rustc explodes
One could say I have a bit of an obsession with build times. I believe having a “tight feedback loop” is extremely valuable: when I work on a large codebase, I want to be able to make small increme...
I Avoid Async/Await
Whatever your stance on async/await, I’d like to pitch to you on why, in my experience, async/await tends to make code more complicated…
Nearly all binary searches and mergesorts are broken (2006)
Posted by Joshua Bloch, Software EngineerI remember vividly Jon Bentley's first Algorithms lecture at CMU, where he asked all of us incoming Ph.D. ...
System memory allocator free operation zeroes out deallocated blocks in iOS 16
The system memory allocator free operation zeroes out all deallocated blocks in iOS 16.1 beta or later. Invalid accesses to free memory might result in new crashes or corruption, including NULL -pointer dereferences and non-zero memory being returned from calloc .
Two Years of Life with PinePhone
On June 9th, 2020, early into a still raging pandemic, I received my PinePhone UBports Community Edition. It's incredible how fast these two years went by, and how much the PinePhone experience improved in the meantime. This is just a subjective post about what I remember, you may also consider it a
Abstraction: Not what you think it is
What abstraction really means in programming, from PL theory, by Jimmy Koppel: why functions, interfaces, and indirection are not abstraction.
A lock-free, concurrent, generic queue in 32 bits
While considering concurrent queue design I came up with a generic, lock-free queue that fits in a 32-bit integer. The queue is “generic” in that a single implementation supports elements of any arbitrary type, despite an implementation in C. It’s lock-free in that there is guaranteed system-wide progress. It can…
Extreme explorations of TypeScript's type system
Some of the most creative, wacky explorations of what you can do in TypeScript's type system!
Verifying distributed systems with Isabelle/HOL
We use distributed systems every day in the form of internet services. These systems are very useful, but also challenging to implement because networks are unpredictable. Whenever you send a message over the network, it is likely to arrive quite quickly, but it’s possible that it might be delayed for a long time, or…
In defense of coding interviews
What did whiteboards ever do to you?
Verilog Is Weird
Verilog is the most commonly used language for hardware design in America (VHDL is more common in Europe). Too bad it's so baroque. If you ever browse the Verilog questions on Stack Overflow , you'll find a large number of questions, usually downvoted, asking “why doesn't my code work?”, with code that's not just a…
IDN is crazy
IDN, International Domain Names, is the concept that lets us register and use international characters in domain names, and by international we of course mean characters outside of the ASCII range. Recently I have fought some battles against IDN and IDN decoding so I felt this urge to write a lot of words about it ……
Staff Engineer Communities
There haven’t been a lot of community structures or resources for Staff+ engineers. That’s changing.
Supabase-JS v2
A look at supabase-js v2, which brings type support and focuses on quality-of-life improvements for developers.