It's probably time to stop recommending Clean Code (2020)
It may not be possible for us to ever reach empirical definitions of "good code" or "clean code", which means that any one person's opinions about another person's opinions about "clean code" are necessarily highly subjective. I cannot review Robert C. Martin's 2008 book Clean Co...
PHP in 2023
A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.
Using LD_PRELOAD to cheat, inject features and investigate programs
This post assumes some basic C skills. Linux puts you in full control. This is not always seen from everyone’s perspective, but a power user loves to be in control. I’m going to show yo…
Introducing Agents in Haystack: Make LLMs resolve complex tasks
LLMs can now make use of the right tools to resolve complex queries and tasks
Common bugs in writing (2021)
Like almost all rules, there are cases where breaking them is a good idea and seasoned writers may well object with "but" responses for some of these. Thus, consider the rules below as mental rumble strips - you should probably slow down and think if you encounter these cases.
Tech debt metaphor maximalism
I really like the "tech debt" metaphor. A lot of people don't, but I think that's because they either don't extend the metaphor far enough,...
Building a Web Game in C
Christmas is coming up. When I used to work at a bank the entire month of December and a bit of January we were placed under “Change Freeze”. We weren’t allowed to deploy updates to our applications during this period. The thinking was: A lot of people are away over Christmas Application changes can lead to crashes…
SQLite-based databases on the Postgres protocol? Yes we can
libSQL “server mode” (sqld) enables access to SQLite-based databases using Postgres and HTTP network protocols.
Building a Handheld PC
I’d like to share with you my latest project: Decktility!
Deep cloning objects in JavaScript
It’s been a long time coming, but we finally now have the built-in `structuredClone` function to make deep cloning objects in JavaScript a breeze
Emacs standing alone on a Linux Kernel
Nano How-To explaining how to setup a root file system with only emacs.
Finally getting two's complement
A different view on two's complement math.
Minimal Cross-Platform Graphics
Exploring how to use 2D graphics in various desktop operating systems, the old-school way. In this part we learn how to create an empty window under Linux, macOS and Windows.
Explaining the Postgres iceberg
Have you seen this legendary SQL iceberg meme? Let's talk about it while wearing our PostgreSQL hat!
The bottom emoji breaks rust-analyzer
Some bugs are merely fun. Others are simply delicious! Today’s pick is the latter. Reproducing the issue, part 1 (It may be tempting to skip that section, but reproducing an issue is an important p...
Strong arrows: a new approach to gradual typing
An introduction to strong arrows and how it leverages the Erlang VM to provide sound gradual typing.
Android developers no longer need Windows USB drivers
In the early days of the platform, Android developers working from Linux and Mac OS X connected their device via an USB cable and were good to go. Windows users had to find and then install drivers. That was super-annoying.
Analysis of Obfuscation Techniques Found in Apple FairPlay
FairPlay comprises a set of algorithms created by Apple for digital rights management (also called DRM, digital rights management). FairPlay is currently used to manage the decryption of iOS applications during their installation on Apple devices. In fact, we know that Apple distributes all applications in the Apple…
The faker's guide to reading x86 assembly language
Assembly code scares people. There’s a good reason for that. For many people, writing code in assembly language seems equivalent to writing code in ancient dwarven runes, or calculating pi in roman numerals. The fact that RollerCoaster Tycoon was almost completely written in assembly language sounds almost too amazing…
Scheme in the browser: A Hoot of a tale
Hey there, it’s been a while! We’re back to share some more exciting news about Guile Hoot , a WebAssembly toolchain and Scheme→WASM compiler. In our last post we demonstrated that the Guile Hoot toolchain can be used to assemble programs written in WebAssembly Text (WAT) format, which allowed us to develop for the…
New React docs pretend SPAs don't exist anymore
React SPAs still matter: the new React docs push frameworks like Next.js, but dashboards behind a login need no SEO, and SSR adds server load.
Deno 1.35: A fast and convenient way to build web servers
Deno.serve() is stable, support for key npm packages, and more.
Building a bare-metal bootable game for Raspberry Pi in C#
How I built a graphical bootable "game" for the Raspberry Pi (or any other modern computer) in C#.
Write admin tools from day one (2022)
UPDATE: I gave a talk expanding on this blog post at EMPEX NYC 2023 . The Problem Writing useful features for your users is key to a succes...
The New XOR Problem
In 1969, Marvin Minsky and Seymour Papert published Perceptrons: An Introduction to Computational Geometry. In it, they showed that a single-layer perceptron cannot compute the XOR function. The main argument relies on linear separability: Perceptrons are linear classifiers, which essentially means drawing a line to…
Rewriting wipEout
The source code for the classic PSX launch title wipEout was leaked in 2022. A few month ago I finally sat down to take a look at it. The result is a (nearly) complete rewrite that compiles to Windows, Linux, macOS and WASM.
Sentry: From the Beginning
I've been trying to invest more and more of my free time interacting with founders. I genuinely feel we've been through a lot with Sentry and I can provide some useful value to others. More so, I believe most people in this industry, most successful people, do others a disservice but not having honest conversations…
SIMD with Zig
An introduction to using SIMD with Zig
Modern Image Processing Algorithms Implementation in C
Learn how modern image analysis and processing algorithms works under the hood with their C/C++ implementation on PixLab's APIs & FACEIO, facial recognition framework using the SOD Embedded Computer Vision Library.