Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 14,535 posts.
The TTY demystified (2008)
The TTY subsystem is central to the design of Linux, and UNIX in general. Unfortunately, its importance is often overlooked, and it is difficult to find good introductory articles about it. I believe that a basic understanding of TTYs in Linux is essential for the developer and the advanced user.
Red and blue functions are a good thing
By avoiding effect aware functions a language hobbles engineers and makes programs sloppier than they could be.
LLMs confabulate not hallucinate
Minor terminological nitpick. People often describe the LLM as ‘hallucinating’ information whenever it makes up information which seems like it should fit for a given query even when it is trivially false. While evocative, this isn’t actually correct terminology. We already have a perfect word for this precise…
Carbon’s most exciting feature is its calling convention
Last week, Chandler Carruth announced Carbon, a potential C++ replacement they’ve been working on for the past two years. It has the usual cool features you expect from a modern language: useful generics, compile-time interfaces/traits/concepts, modules, etc. – but the thing I’m most excited about is a tiny detail…
Goodbye C++, Hello C
Part 1 of this series about my toy renderer covers the most fundamental design decisions. Over the years, I have written many renderers and for a long time their complexity kept growing. This time, I took the opposite route. I wanted to maximize the fraction of code that implements crucial functionality rather than…
Cases where full scans are better than indexes
Sometimes you have a lot of data, and one approach to support quick searches is pre-processing it to build an index so a search can involve only looking at a small fraction of the total data. The threshold at which it's worth switching to indexing, though, might be higher than you'd guess. Here are some cases I've…
Why I think Rust is the "language of the future" for systems programming
This four-post series on Rust is intended to introduce you to the language, to teach you about Rust's cool language features, and to give a...
The Flask Mega-Tutorial
You are reading the 2024 edition of the Flask Mega-Tutorial. The complete course is also available to order in e-book and paperback formats from Amazon. Thank you for your support!If you are looking…
Scripting with Go
The Unix shell is pure wizardry. Why shouldn’t it be as easy to write systems programs in Go as it is in the shell? The script library is the secret spell-book that makes this possible.
Anti-patterns in event-driven architecture
Event-driven architecture is great, but it can cause a lot of headaches if it is used for the wrong purpose.
Libc++'s Implementation of std::string
I. Introduction
WordPerfect for UNIX (1992)
I found this interesting print-ad for WordPerfect for UNIX, apparently the best UNIX product of 1992! (Very) Belated congratulations Corel!
How I made a website with Svelte
Just like last year, I made a list of the best media I enjoyed over the year. This includes music, films, series and games.
Colorize Your CLI
A passionate engineering student who writes about Unix related topics and tech stuff.
Designing a programming language to speedrun Advent of Code
“shouldn’t this have been published a few months ago?” yeah, probably. I even considered submitting it to the AoC contest. time is a real beast. The title is clickbait. I did not design and implement a programming language for the sole or even primary purpose of leaderboarding on Advent of Code. It just turned out…
Crafting Interpreters with Rust: On Garbage Collection
I became interested in implementing programming languages a few years ago and discovered [Crafting Interpreters](https://craftinginterpreters.com/) by Bob Nystrom. At the time, I had experience with Rust and decided to use it to follow the book. Albeit, being a noob, I managed to implement a fully functional bytecode…
Extracting WhatsApp Messages from an iOS Backup
Find where WhatsApp chats live in an iPhone backup, decrypt an encrypted iOS backup with Python, and read your messages from ChatStorage.sqlite.
Formally modeled Dreidel for no good reason
I can mathematically prove the game's not fun.
How to Get Started with Tree-Sitter
Emacs 29 introduces tree-sitter support, a powerful parsing library that enhances its understanding of source code. With this integration, Emacs gains features like precise syntax highlighting, accurate indentation and easier extensibility. Here's how you install and configure Emacs with tree-sitter support.
New make --shuffle mode
I implemented new --shuffle option for GNU make to simulate non-deterministic build order in parallel makefiles.
Learn Raw React – No JSX, No Flux, No ES6, No Webpack
Learn React from the ground up, without worrying about JSX, Flux, ES6, Webpack, etc.
Shame.css
Keeping track of your hacks
Writing high performance F# code
While this post is addressed to F# .NET developers, it introduces much wider concepts starting from hardware architecture to overall .NET runtime and JIT compiler optimizations. It shouldn't be a surprise - optimizing the application performance requires us to understand the relationships between our high level code…