Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 874 posts.
Garbage Collection
We say Lox is a “high-level” language because it frees programmers from worrying about details irrelevant to the problem they’re solving. The user becomes an executive, giving the machine abstract goals and letting the lowly computer figure out how to get there.
You're doing it wrong: B-heap 10x faster than binary heap (2010)
Would you believe me, if I claimed that an algorithm which has been on the books as "optimal" for 46 years, which have been analyzed in excruciating detail by geniuses like Knuth and taught in all CS courses in the world, can be optimized to run ten times faster ?
Beginner's Guide to Linkers (2010)
This article is intended to help C & C++ programmers understand the essentials of what the linker does. I've explained this to a number of colleagues over the years, so I decided it was time to write it down so that it's more widely available (and so that I don't have to explain it again). [Updated March 2009 to…
Thoughts on Rust, a few thousand lines in
To say my first foray into Rust was a frustrating struggle would be an understatement. I picked a terrible first project that left me neck deep in Rust’s trickiest areas right off the bat. I was excited to try again. A few years ago I wrote Sumoshell, a CLI App for log analysis. I’d wanted to improve it for a while…
How I Eat for Free in NYC Using Python, Automation, AI, and Instagram
Living and working in the big apple comes with big rent.
Introduction to Web Development (2018)
A complete intro to web development for developers
Rendering of Rise of the Tomb Raider
[latexpage] Rise of the Tomb Raider (2015) is the sequel to the excellent Tomb Raider (2013) reboot. I personally find both refreshing as they move away from the stagnating original series and rete…
Speedy Desktop Apps with GTK and Rust
The web platform is the delivery mechanism of choice for a ton of software these days, either through the web browser itself or through Electron, but that doesn’t mean there isn’t a place for a good old fashioned straight-up desktop application in the picture.
Using TypeScript with React
This post is based on a talk I gave at the React JS & React Native Bonn Meetup.It aims to answer the following questions: What’s TypeScript? How can I ...
Monorepo is great if you're really good
This is inspired by Dan Luu's post on the advantages of a single big repository over many small ones. That post is fairly old, and I confess that I'm hardly up to date on the state of tooling, both for managing multiple repos and for dealing with one big one. But I'm going to make an argument which I think mostly…
Generating C code that people want to use
Project Everest is a large, collaborative research effort that aims to verify and deploy a new, secure HTTPS stack. All of our code is verified using the F* programming language. Using KreMLin, a dedicated compiler, the verified F* code is compiled to readable C, meaning existing systems projects can readily integrate…
Crafting Interpreters: Classes and Instances
Caring too much for objects can destroy you. Only — if you care for a thing enough, it takes on a life of its own, doesn’t it? And isn’t the whole point of things — beautiful things — that they connect you to some larger beauty?
Your terminal is not a terminal: An Introduction to Streams
Hot takes and cold truths on software, startups, and the lies we tell ourselves.
Overview of Rust error handling libraries
Rust's error handling is a pleasure to use thanks to the Result type . It ensures Rust's error handling is always correct , visible , and performant . And with the addition of the ? operator in Rust 1.13 , and the addition of return types from main in Rust 1.26 Rust's error handling has only kept improving.
Rust 2020: GUI and Community
In response to the call for blogs about the vision for Rust for 2020, I’m going to write about GUI. I believe the time is right for a native GUI toolkit written in Rust, and that such a thing would fill a very important niche. There is a demand for performance (which, to me, includes startup time, RAM footprint, and…
Clojure Concurrency Tutorial
In this tutorial, you'll learn 16 ways for doing concurrency in Clojure including how to start threads and how to communicate between them.
Ruby's Creed
Every programming language has some fundamental idea(s) that drives its design and evolution. For Haskell that’s functional purity and state-of-the-art static typing, for Erlang that’s distributed programming and fault tolerance, for Clojure that’s simplicity and stability. What all these examples have in common is…
The CPython Bytecode Compiler Is Dumb
Due to sheer coincidence of several unrelated tasks converging on Python at work, I recently needed to brush up on my Python skills. So far for me, Python has been little more than a fancy extension language for BeautifulSoup , though I also used it to participate in the recent tradition of writing one’s own static…
Fsyncgate: Errors on fsync are unrecoverable (2018)
This is an archive of the original "fsyncgate" email thread. This is posted here because I wanted to have a link that would fit on a slide for a talk on file safety with a mobile-friendly non-bloated format .
Be wary of functions which take several parameters of the same type
A good example of a simple looking, but hard to use correctly, API is one which takes two or more parameters of the same type. Let’s compare two function signatures:
Lessons learned porting 50k loc from Java to Go
Things I've learned while porting 50 thousand lines of code from Java to Go
Running an eInk Display with Elixir, Scenic and Nerves
So I've been curious about what kinds of displays you can connect to the Pi-series single board computers for a while. I happened to accidentally order a few. Among others an eInk display. I ordered the PaPiRus ePaper. It ended up being dead on arrival and then out of stock so I received an Inky to replace it. Fair…
Extramaze: Using Racket, PostgreSQL, AWS, but no ads or JavaScript (2018)
Update: Due to lack of interest/use, in June 2021 this site was shut down and user data (emails, names, search alerts) deleted from all systems and backups. For Extramaze LLC I'm using Racket in a commercial project -- a search engine with email alerts fo...
Tests that sometimes fail
Over the years one of the most complex issues we have had to deal with at Discourse was flaky tests, in this post I would like to talk a bit about the various patterns we have come across and ways we tackle this issue.