Fedora 38 LLVM vs. Team Fortress 2
F38 just released and seeing a bunch of people complain that TF2 dies on AMD or other platforms when lavapipe is installed. Who's at fault? ...
F38 just released and seeing a bunch of people complain that TF2 dies on AMD or other platforms when lavapipe is installed. Who's at fault? ...
A modest defense of the rodent So, Emacs and the mouse. This is an unexpectedly contentious topic, with discussions that end, at best, with careless dismissal. More often they turn into arguments with folks talking past one another. The advantages of using the mouse for common actions in Emacs are immediate and…
On the day I chose to start writing this, I went to an afternoon showing of Oldboy at Alamo. There’s a quote that’s repeated at least three times:
How retrowin32 works, at a high level.
Introduction Field Programmable Gate Arrays (FPGAs) are a form of programmable hardware that has become inexpensive and accessible recently. I recently purchased a Digilent Basys 3 FPGA development…
In 2005, id Software released the source code for their 1999 game Quake III Arena under the GPL-2 license. In the file code/game/q_math.c , there is a function for calculating the reciprocal square root of a number which at first glance seems to use a very peculiar algorithm:
A self-contained introduction to Gröbner bases and solving polynomial systems
In this blog we discuss how the transformer architecture naturally extends over external memories, and share empirical results which leverage this capability. These methods are innate (don't require fine tuning) and outperform popular retrieval augmented generation methods.
SDL has grown on me over the past year. I didn’t understand its value until viewing it in the right lens: as a complete platform and runtime replacing the host’s runtime, possibly including libc. Ideally an SDL application links exclusively against SDL and otherwise not directly against host libraries, though in…
Listen, I didn’t plan on making a whole ‘writing X like Y’ series. But here we are.
It’s been a while since my last blog post, but I believe it’s better to post late than never, so here I am!
Update (2023-07-21): I was being a bit overly brief with liberal use of ... to mean “unimportant” in the code examples. Ginger Bill (creator of Odin) noted it might be clearer to have more correct/explicit Odin and Zig code for the examples given people would be less familiar. Those has been updated For the past few…
The futex ( f ast u serspace mu tex ) is a Linux kernel feature designed for synchronization primitives (mutexes, condition variables, semaphores, etc.). Like many topics in concurrency, they have a reputation for being tricky (for example, see the paper Futexes Are Tricky ). Despite that, they really are a…
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.
Since the earliest days of Mac OS X, Apple has complied with the licenses for the dozens of open source components it includes in the OS by posting (sometimes a little belatedly) updated versions of the source code to its Open Source at Apple web page.This resource is useful primarily to developer
Let's make some games
Time for a pop quiz. 1. Code Reuse is: a) Goodb) Bad 2. Reinventing the Wheel is: a) Goodb) Bad 3. The Not-Invented-Here Syndrome is: a) Goodb) Bad Of course, everybody knows that you should always…
The jury got a taste of code review as they examined a falsified "insurance fund" and the infamous FTX → Alameda Research "backdoor".
There are two types of programming languages: garbage-collected programming languages and programming languages that require manual memory management. With to WebAssembly Garbage Collection, garbage-collected languages can be ported to WebAssembly.
Designing APIs is hard. Designing good APIs that future people will not instantly classify as "total crap" is even harder. There are typical...
A year or two ago, I wrote a parser for an undocumented file format as part of a larger project. This was somewhat challenging and I wanted to share my approach because I thought it was a neat idea that worked well.
We investigate how the data cache influences the performance of your program, talk about ways for you to write faster programs by better leveraging the data cache.
A recent issue in scalar multiplication makes for a good case study of how unsafe interfaces, undocumented assumptions, and time lead to vulnerabilities.
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
In my last post about Zig and Rust, I mentioned that Rust is a scalable language. Let me expand on this a bit.
This post introduces the Interaction to Next Paint (INP) metric and explains how it works, how to measure it, and offers suggestions on how to improve it.
~4 lines of Go to produce succinct, stable, URL-friendly slugs from timestamps.
It's been just over three months since we announced the Guile on WebAssembly project (codenamed Hoot ). Since then we've brought on two fantastic hackers to develop the project and progress has been quick.
We write about Windows Internals, Hypervisors, Linux, and Networks.