Don't let dicts spoil your code
I restricted the use of dicts in my code to make it easier to follow and maintain. Here's my explanation of the benefits and advice on what you can use instead. Bonus point: what to do with all the legacy code when there's no time to eradicate all the dicts.
Do you need Redis? PostgreSQL does queuing, locking, and pub/sub (2021)
It's a common architecture to have PostgreSQL and Redis serve as the backbone of your app, but PostgreSQL may be capable of everything you use Redis for.
A bird's eye view of Polars
Read how Polars executes your query from planning, optimizing to execution.
Zed Decoded: Rope and SumTree
From the Zed Blog: In this episode of Zed Decoded, Thorsten asks the founders — Nathan, Max, Antonio — about the data structures at the heart of Zed: Rope and SumTree.
I'm not a fan of strlcpy(3)
strlcpy(3) is an OpenBSD function which is often hailed as a safer replacement for strcpy(3) and/or strncpy(3) . One of the obvious issues with strlcpy is that it's not safe if src isn't null-terminated. However, that's not the reason I don't like strlcpy. In fact despite knowing this, I used to think it was an okay…
AI hallucinations: Why LLMs make things up (and how to fix it)
Nine Technical Strategies for Reducing Hallucination
State of Python 3.13 performance: Free-threading
Python 3.13 is out and it's time to run some benchmarks to see how well it performs with the new free-threaded mode.
Git Things
A grab bag of less frequently talked about git adjacent points.
You can't just assume UTF-8
How to infer character encodings with statistics
Beating the Compiler
In modern times, everyone knows that writing assembly is a fool's errand: compilers are the result of literal engineer-centuries of work, and they know the processor much better than you do.
Adding a USB port to the ThinkPad X1 Nano (the hard way)
I wanted to add an internal USB port to my ThinkPad X1 Nano which should have been a fairly easy thing to do, but it wasn't.
Temporal Python – A durable, distributed asyncio event loop (2023)
Introduction to the Temporal Python SDK and how Temporal is a durable, distributed asyncio event loop
Qlock – A JavaScript Quine Clock
Displays the current time in a seven-segment style, embedded within its own JavaScript source code. (321 bytes)
The search for easier safe systems programming
I've been involved in the Rust project in some form or another since 2016, and it's a language I'm very comfortable using. Many Rust programmers could say the same . But, if we take a step back and are honest with ourselves, we'd admit that the road to getting to that level of comfort was difficult.
Implementing Natural Conversational Agents with Elixir
In my last post , I discussed some work I had done building Nero, the assistant of the future that I’ve always wanted. I ended up creating an end-to-end example which used Nx, OpenAI APIs, and ElevenLabs to create an in-browser home automation assistant. For a first product, it’s decent. Nero is a neat little party…
Hidden Changes in GPT-4, Uncovered
The tool instructions in this article are not up to date as of 2024-01-12, see this post to learn more about the new tool OpenAI added to block conversations about U.S. elections using function calls.
Leveraging Zig's Allocators
How Zig's allocators can help manage memory and improve performance
The new APT 3.0 solver
APT 2.9.3 introduces the first iteration of the new solver codenamed solver3, and now available with the –solver 3.0 option. The new solver works fundamentally different from the old one. How does it work? Solver3 is a fully backtracking dependency solving algorithm that defers choices to as late as possible. It…
Exploring Gleam, a type-safe language on the BEAM
From Erlang, to Elixir and now, GLEAM!?
Playing guitar tablatures in Rust
Introducing Ruxguitar, a guitar tablature player written in Rust
Stacking triangles for fun and profit
One thing you may have noticed about the trigonometric functions sine and cosine is that they seem to have no agreed upon definition. Or rather, different authors choose different definitions as the starting point, mainly based on convenience. This isn’t problematic or even particularly unusual in mathematics: as long…
Py2wasm – A Python to WASM Compiler
Since starting Wasmer five years ago we've been obsessed with empowering more languages to target the web and beyond through Webassembly. One of the mo...
What I talk about when I talk about query optimizer (part 1): IR design
Achieving Data Freedom Through Open Source and Rust
My Blog Engine Is the Erlang Build Tool
From time to time, people ask me what I use to power my blog, maybe because they like the minimalist form it has. I tell them it’s a bad idea and that I use the Erlang compiler infrastructure for it, and they agree to look elsewhere.
My negative views on Rust (2023)
This is a little summary of my current thoughts on Rust. I wonder whether I’ll look back in five years and see if my views have changed.
Losing faith in testing
Or: Losing Faith