Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 21,831 posts.
Git from the Bottom Up (2008)
Welcome to the world of Git. I hope this document will help to advance your understanding of this powerful content tracking system, and reveal a bit of the simplicity underlying it — however dizzying its array of options may seem from the outside.
Virtual Memory with 256 Bytes of RAM
I just finished updating my C compiler and minimal CPU specification to include virtual memory. The process of adding virtual memory support to a CPU, a kernel, and a compiler toolchain has made me realize that there is a lack of good explanations for how all of these parts fit together. I also realized that a…
Setenv Is Not Thread Safe and C Doesn't Want to Fix It
You can't safely use the C setenv() or unsetenv() functions in a program that uses threads. Those functions modify global state, and can cause other threads calling getenv() to crash. This also causes crashes in other languages that use those C standard library functions, such as Go's os.Setenv ( Go issue ) and Rust's…
How much does Rust's bounds checking cost?
Rust prevents out-of-bounds memory accesses and buffer overruns via runtime bounds checks - what’s the cost of those bounds checks for a real-world, production application?
UUID, serial or identity columns for PostgreSQL auto-generated primary keys?
How to decide what to use for autogenerated primary keys: UUID, serial or identity column? Recommendations are given!
IntelliJ IDEA 14 Released
Discover IntelliJ IDEA 2026.3 with JetBrains Air, Java and Kotlin for Cursor and VS Code, the Hibernate debugger, Git worktrees, cross-database queries, DuckDB, any LSP server, a libghostty terminal, and Java 28.
Recent Performance Improvements in Function Calls in CPython
How costly it is to call functions and builtins in your python code? Does inlining help? How have the recent CPython releases improved performance in these areas?
Visual Programming Languages – Snapshots
Interface Vision is a group working on a software development platform that can be used without coding.
Programmers should never trust anyone, not even themselves
Programmers should be paranoid.
Technical Debt: Why it'll ruin your software
We think that Tech Debt is just lousy code written by reckless people. Here's a bigger picture view of what that really means in a Sustainable Software era.
I don't always use LaTeX, but when I do, I compile to HTML (2013)
Since I haven't published anything in almost two months, let me jot down one thought that has come to mind frequently over the past few months.
The compiler is your best friend
The compiler is a powerful tool, yet many developers have a painful relationship with it. Can we do better?
No-Panic Rust: A Nice Technique for Systems Programming
Can Rust replace C? This is a question that has been on my mind for many years,as I created and now am tech lead forupb, a C libraryfor Protocol Buffers. Th...
The program is the database is the interface
That transfer to John Smith isn't covered by any of the tagging rules. So I select the date, switch to the editor window and paste the date into the date->tag definition:
Inside Rust's std and parking_lot mutexes – who wins?
A teardown of Rust's mutex internals plus real benchmarks so you know when to choose std or parking_lot.
80x25
Every now and then, my brain clamps on to obscure trivia like this. It takes so much time. “Because the paper beds of banknote presses in 1860 were 14.5 inches by 16.5 inches, a movie industry cartel set a standard for theater projectors based on silent film, and two kilobytes is two kilobytes” is as far back as I…
Porn, Zen, and .vimrc
Vim is a customizable text editor geared towards writing code. But open-ended configuration possibilities lure users into wasting time while chasing after perceived minute gains in productivity. This article describes my Vim journey, starting from heavy personal customization and ending with a renewed love for…
Are interruptions worse for programmers than for other knowledge workers?
This is quite a popular cartoon. I posted this in a comment on why programmers wear headphones a...
Curious lack of sprintf scaling
Some days ago I noticed that on a Mac, doing snprintf calls from multiple threads shows curious lack of scaling ( see tweet ). Replacing snprintf with {fmt} library can speed up the OBJ exporter in Blender 3.2 by 3-4 times . This could have been the end of the story, filed under a “eh, sprintf is bad!” drawer, but I…
Yesterday I Wrote My First Firefox OS App
Yesterday I wrote my first Firefox OS App.
Prefer duplication over the wrong abstraction
I've been thinking about the consequences of the "wrong abstraction." My RailsConf 2014 "all the little things" talk included a section where I asserted: > duplication is far cheaper than the wrong abstraction And in the summary, I went on to advise: >
Modern Object Pascal Introduction for Programmers
Modern Object Pascal Introduction: units, classes, generics, memory management, exceptions and more.