Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 14,540 posts.
In Defence of the Technical Interview
Coding puzzles and their prevalence
Stop Memsetting Structures
TL;DR: Use C99’s designated initializers instead. Because it’s 2019! Edit: This post was discussed on Hacker News, Lobste.rs and /r/c_programming. It has been updated to address some of the concerns raised by commenters. One of the little things that annoy me when reading code is the unnecessary use of memset() to…
How to think about async/await in Rust
(This is a section of the lilos intro guide that people seemed to like, so to increase its visibility, I’m lifting it up into its own post and expanding it a bit. I hope this is a useful companion piece to the post on async debugging I posted this morning.))
s/bash/zsh/g
There is simply no way you can do calculations with fractions in bash without relying on bc , dc , or some hacks. Compared to simply being able to use a + b it’s ugly, slow, and difficult.
Programming won’t be automated, or it already has been
I’m afraid of a robot taking my job. I don’t care about the job part much, I’m afraid of the actual robot. To replace my job it’d need to exhibit human level intelligence. That’s scary. Before that happens though, maybe some of its infantile, and less scary, brethren can make my job a bit easier. […]
Skills Poor Programmers Lack
A friend and I had a discussion about the basic skills that are often lacking in experienced programmers. How can a programmer work for ten or twenty years and never learn to write good code? Too often they need close supervision to ensure they go down the right path, and can never be trusted to take technical…
Four limitations of Rust's borrow checker
I’ve been using Rust for hobby projects since 2016 and have been working professionally in Rust since 2021, so I tend to consider myself pretty knowledgeable about Rust. I’m already familiar with all the common limitations of Rust’s type system and how to work around them, so it’s pretty rare that I have to “fight the…
I loved jQuery, and still do (2019)
In defense of one of the most important JavaScript libraries ever
Oracle and the fall of Java EE
Recently there has been a lot of ramblings in the interwebz about Oracle removing its funding for Java EE. A long piece by Ars Technica ...
Why does email development have to suck? – Explaining all the <tr>'s and <td>'s
Email clients have quirks that force you to use <table> elements, inline styles, and follow other bad practices that make development complicated.
Python Packaging: Hate, hate, hate everywhere
A sad example of how easy it is to dismiss certain design principles because it does not seem relevant at the time.
The Deep Insights of Alan Kay
If you haven’t heard of Alan Kay you’ll likley have heard one of his many famous quotes, the most popular, likely his 1971 gem: The best …
Where do argc and argv come from?
Continuing on from our tiny snake game , let's explore more into how binaries work on Unix. Let's figure out how our programs come to obtain their argc and argv parameters.
Conceptual Debt Is Worse Than Technical Debt
Definition. The consequences of making bad design choices when choosing concepts to model your product around. A conceptual or mental model…
My experience creating software with LLM coding agents – Part 2 (Tips)
moved to https://blog.efitz.net/posts/my-experience-creating-software-with-llm-coding-agents-part-2-tips/
Hotspot performance engineering fails
Developers often believe that software performance follows a Pareto distribution: 80% of the running time is spent in 20% of the code. Using this model, you can write most of your code without any care for performance and focus on the narrow pieces of code that are performance sensitive. Engineers like Casey Muratori…
Blue Team Rust: What Is “Memory Safety”, Really?
A brief technical primer on Rust's key security feature, with embedded-specific context.
How to choose colors for your CLI applications (2023)
Let’s say you’re creating a CLI tool which has to display syntax highlighted source code. You begin by choosing some colors which look nice with your chosen terminal theme:
Icdiff: side-by-side command line diffs
Your terminal can display color, but most diff tools don't make good use of it. By highlighting changes, icdiff can show you the differences between similar files without getting in the way. This is especially helpful for identifying and understanding small changes within existing lines.
Agent memory as a file format
Memoryfields - a vastly simpler way to do agent memory
Use the Mikado Method to do safe changes in a complex codebase
When a codebase is large and complex, it's risky to big changes. Here's a structured way to approach
Seemingly impossible functional programs (2007)
Andrej has invited me to write about certain surprising functional programs. The first program, due to Ulrich Berger (1990), performs exhaustive search over the “ Cantor space ” of infinite sequences of binary digits. I have included references at the end. A weak form of exhaustive search amounts to checking whether…
How well do agents use test/verification techniques?
We previously noted that, while it's easier than ever to hit a particular quality bar by having coding agents use effective test techniques, software quality seems to be getting worse , indicating that whatever defaults developers are using may not work very well. Here, we test if simple instructions to agents to use…