New
The latest blog posts to take off on Hacker News. 14,540 posts.
Linear code is more readable
Code linearity is more desireable than keeping abstraction layers separate.
Webhook Failure Scenarios
<p>A webhooks allow two applications to communicate events. It is relatively simple to get started using webhooks using HTTP and JSON. However, there a number of failure scenarios that developers should be aware of in order to make their webhook implementation robust.</p>
An easy way to concurrency and parallelism with Python stdlib
Because life doesn't have to be hard all the time
Game Development Post-Unity
What are the options for game developers looking to migrate away from Unity?
Let's write a treesitter major mode for Emacs
Creating a standard programming major mode presents significant challenges, with the intricate tasks of establishing proper indentation and font highlighting being among the two hardest things to get right. It's painstaking work, and it'll quickly descend into a brawl between the font lock engine and your desire for…
Hypervisor from Scratch (2022)
We write about Windows Internals, Hypervisors, Linux, and Networks.
Some notes on local-first development
How local-first software works: sync engines, CRDTs, replicated databases, developer tools, architecture tradeoffs, and when to use each approach.
Notes from building a blog in Django
We launched the Datasette Cloud blog today. The Datasette Cloud site itself is a Django app - it uses Django and PostgreSQL to manage accounts, teams and soon billing and payments, then launches dedicated containers running Datasette for each customer.
QtWayland 6.6 Brings Robustness Through Compositor Handoffs
Every release has a killer feature. Qt 6.6 features the opposite - staying alive. This blog post describes work to make Qt clients more robust and seemlessly migrate between compositors, providing resistance against compositor crashes and more.
I think I kind of hate lazy loading
Yesterday I was on a train. I clicked on a link and my browser loaded a long article for me to read. Halfway through reading it, the train went into a tunnel and I lost signal. That meant I couldn't see the images on the other half of the page for the rest of the journey. I had a sea of broken images. Even though the…
The Power of Prolog
Facets of Prolog
You Don't Need UUID
I've experienced first-hand how using UUID hurts the usability of computer systems, and I want you to understand why you certainly don't need it.
Develop with Cocoa for Apple devices without using Objective-C
Summary In this post I’ll go into detail about how, during my contracting work for Shimmer Industries (a company founded by Eskil Steenberg which is focused on developing a real-time lighting designing software), I worked on a piece of software which enabled us to use the MacOS and iOS APIs using a custom C API…
Intuitively Understanding Harris Corner Detector
If you ever tried to learn how the Harris corner detection algorithm works, you might have noticed that the process is not intuitive at all. First, you start with an energy function, approximate it using Taylor approximation, get a matrix from that, then find the eigenvalues of that matrix, etc. But when you come to…
Beyond OpenAPI
Let's write the docs like it's 2023.
A systematic approach to debugging
I've got a reputation at work as being a skilled debugger. It's a frequent occurrence that the weird stuff lands on my desk [1] after it goes through another skilled engineer or two. To say my job is substantially "debug the weird shit" would not be an understatement and I'm here for it.
Removing garbage collection from the Rust language (2013)
I've been floating ways to simplify the memory management story in Rust around the core team lately. Memory management is a contentious topic, since we've worked hard to get to the current state of things, and with the push toward stability lately, there is a (quite reasonable!) resistance to any changes at this…
The Awk book’s 60-line version of Make
A discussion of the minimal version of Make included in 'The AWK Programming Language', as well as a Python port of the AWK program.
Static Hermes: Compile JavaScript to speed it up 300x (in microbenchmarks)
How to speed up a ubenchmark 300x Static Hermes: How to Speed Up a Micro-benchmark by 300x Without Cheating This is th...
What I have changed my mind about in software development
I really like this quote from Jeff Bezos: “Anybody who doesn’t change their mind a lot is dramatically underestimating the complexity of the world we live in.” Lately I have been thinking about wha…
New Bézier curves for vector graphics
Mathematical insights create a more intuitive UI for Bézier curves.
Training and aligning LLMs with RLHF and RLHF alternatives
I frequently reference a process called Reinforcement Learning with Human Feedback (RLHF) when discussing LLMs, whether in the research news or tutorials.
Amiga C Tutorial (2022)
Amiga C Tutorial
Flake8-Logging
The Python standard library’s logging module is a go-to for adding observability to applications. Many tools also integrated with it or enhance its capabilities, such as structlog and Sentry.
I wrote a string type
I write compilers for fun. I can’t help it. Consequently, I also write a lot of parsers. In systems programming, it’s usually a good idea to try to share memory rather than reuse it, so as such my AST types tend to look like this.
Why you might want async in your project
There is a common sentiment I’ve seen over and over in the Rust community that I think is ignorant at best and harmful at worst.
Learning Zig
Welcome to Learning Zig, an introduction to the Zig programming language. This guide aims to make you comfortable with Zig. It assumes prior programming experience, though not in any particular language.