Topics /

Software Engineering

The most popular blog posts about software engineering on Hacker News. 21,844 posts.

Any year
19172

Rails 8.0 Released

Deploying modern web apps – with all the provisions needed to be fast and secure while easily updateable – has become so hard that many developers don’t dare do it without a PaaS (platform-as-a-service). But that’s ridiculous. Nobody should have to pay orders of magnitude more for basic computing just to make…

19174

From NAND to Raytracer: Raytracing on the Hack Computer

I recently spent some time going through the amazing nand2tetris course, and assignment #9 is to implement something with the Jack programming language that runs on the Hack computer. My friend encouraged me to try writing a raytracer, which is an algorithm that generates physically realistic images by simulating…

19177

Formal Methods in Building Robust Distributed Systems

We all know that when designing and operating applications at scale, it is persistent state management that brings the most difficult challenges. Delivering state-free applications has always been (fairly) easy. But most interesting commercial and consumer applications need to manage persistent state. Advertising…

19178

Fun with SQL: Window Functions in Postgres

Window functions in PostgreSQL are valuable when you want to compare & contrast data between rows. And window functions are key in analytics use cases. This post covers the basic structure of window functions as well as some of the more interesting things you can do with them.

19179

Tuning Ruby's Global Method Cache

I was recently profiling a production Shopify application server using perf and noticed a fair amount of time being spent in a particular function, st_lookup, which is used by Ruby’s MRI implementation for hash table lookups: Hash tables are used all over MRI, and not just for the Hash object; global variables…

19182

Defeating Racket’s separate compilation guarantee

Being a self-described programming-language programming language is an ambitious goal. To preserve predictability while permitting linguistic extension, Racket comes equipped with a module system carefully designed to accommodate composable and compilable macros . One of the module system’s foundational properties is…

19195

The lack of namespaces on crates.io is a feature

Rust doesn’t have namespaces in its package management system. It’s often viewed as a bug. But it’s not a bug, it’s a feature! While there are negative aspects of a flat package registry, there are also real benefits. Stability, continuity, and unity (discourages forks and fragmented identity)…

19197

Beware of strncpy and strncat

Most C programmers also know to avoid the legacy strcpy() and strcat() functions, as these commonly introduce buffer-overflow problems. Instead, C programmers should use the newer strncpy() and strncat() functions, which check the size of the buffer they're copying data into.

19200

The Functional Programming Hiring Problem

If you've ever seen a discussion of functional programming languages on the Internet, you'll have probably noticed one talking point in particular that comes up frequently. For the sake of generalization, let's make up a hypothetical functional programming language called Gooby. In these discussions, often someone…