Topics /

Software Engineering

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

Any year
10802

In defence of SQL

SQL is ugly but powerful, ORM is genuinely dumb, and "NoSQL" should really be called OMADS: Obviously More Appropriate Data Stores. Start every project with an RDBMS, add specialized stores where they fit, and stop apologizing for using SQL. Forty years on, nothing beats it for ad-hoc questions about your data.

10808

Code vs. No-code

There was a conversation on Twitter this week that helped to clarify my thinking about something, and I wanted to share. There is a sort of tension between “code” and “no-code” (sometimes “low-code”) solutions. People who consider themselves software developers see people trying to use no-code solutions to do things…

10809

Excessive nil pointer checks in Go

Let’s talk about nil pointer checks in Go. You want to prevent panics in production, but that doesn’t start with a deferred recover. It starts with defensive programming. Check your inputs, check your bounds, and check pointers for nil before dereferencing them. I’ve started to see more nil checks in Go code. In the…

10818

What's wrong with the default build tool for Scala

SBT is the default build tool for the Scala programming community: you can build Scala using other tools, but the vast majority of the community uses SBT. Despite that, nobody seems to like SBT: people say it's confusing, complicated, and opaque. This post will deeply analyze what exactly it is about SBT that people…

10823

Creating a Slack app that uses fewer resources

I recently created a macOS app called Slack Lite, which beats Slack's desktop app across a few performance metrics. Slack Lite uses Slack's official UI, so it's visually indistinguishable from the official client. Even so, Slack Lite uses 5x fewer threads, 3.5x less time to startup, and significantly less CPU. In the…

10824

CHIP-8 in Common Lisp: The CPU

A while back I decided to try to write a Game Boy emulator in Common Lisp based on this series of articles . I made some good progress but eventually got bogged down because I was trying to learn a bunch of complex new things at once: