Finding JIT Optimizer Bugs using SMT Solvers and Fuzzing
Compiler is hard. JIT is hard? How can we avoid bug, and how can we even pove its correctness? The author share with us how they uses the Z3 theorem prover to find bugs in the optimizer of PyPy’s JIT, in particular its integer operation optimizations
How to estimate disk space
Estimation doesn’t look like a skill. But lets say we stated a new project and is about to provision a database, how big should we need for disk space? Now if we break down, how many row per day we may add, what data type, how much is the index. We can roughly get an estimation. On top of that, by breaking down giving us more understanding of each component.
How I found a bug in sqlite
rqlite is a lightweight, open-source, distributed relational database written in Go, which uses SQLite as its storage engine. Recently I introduced a high-performance write-path into rqlite and, to my great surprise, it exposed a bug in SQLite.
The GPT-3 Architecture, on a Napkin
There are so many brilliant posts on GPT-3, demonstrating what it can do, pondering its consequences, vizualizing how it works. With all these out there, it still took a crawl through several papers and blogs before I was confident that I had grasped the architecture.
So the goal for this page is humble, but simple: help others build an as detailed as possible understanding of the GPT-3 architecture.
Optimize Interaction to Next Paint
Interaction to Next Paint (INP) is an experimental metric that assesses a page’s overall responsiveness to user interactions by observing the latency of all click, tap, and keyboard interactions that occur throughout the lifespan of a user’s visit to a page
To provide a good user experience, sites should strive to have an Interaction to Next Paint of 200 milliseconds or less
Taming Names in Software Development
What is a name? A name is a label, a handle, a pointer in your brain’s memory. A complex idea neatly encapsulated. A name lets you refer to “the economy” , or “dogfooding” mid-sentence without needing a three-paragraph essay to explain the term.
How the 8086 processor's microcode engine works
look at how the 8086 decides what microcode to run, steps through the microcode, handles jumps and calls inside the microcode, and physically stores the microcode. It was a challenge to fit the microcode onto the chip with 1978 technology, so Intel used many optimization techniques to reduce the size of the microcode.
Sorting with SIMD
SIMD stands for single instruction, multiple data. A single instruction is used to apply the same operation to multiple pieces of data.
A single SIMD addition should be roughly 4 times faster than performing 4 individual additions.
How can this be used for sorting? Sorting does not involve arithmetic, and the whole idea of sorting is that each element moves to its unique correct place in the output
So, what can you do with a process ID?
If you know a process ID, what information can we extract about it? Turning out a lot. You can know full command and argument, its environment variable when it runs.
Code to read
A framework for building object-oriented views in Ruby
Parse text and tables from PDF files
A distributed SQLite replicator built on top of NATS
Code release for Learning Video Representations from Large Language Models by Facebook. Given a video, how to generate its description?
a fork of Dashing, an excellent framework created at Shopify for displaying custom dashboards on TVs around the office
provides software to connect external monitors to your system via Wi-Fi. It is compatible to the Wifi-Display specification also known as Miracast
a diagram scripting language that turns text to diagrams. It stands for Declarative Diagramming. Declarative, as in, you describe what you want diagrammed, it generates the image.
Distributed, offline-first bug tracker embedded in git, with bridges
That's it for this round, have a great day! If you like this newsletter, please tell the world, or
tweet about this