Write your own Virtual CPU in C++ (2014)
I've previously covered writing my own virtual CPU , but I never really fleshed it out and it was never a real thing... For a while, wel...
Common mistakes writing React components with hooks
The most common mistakes I found while writing react components, why they are mistakes and how to avoid or fix them.
How I recovered a lost email from my email client’s memory
A bug caused 30 minutes of work on an email to disappear. However, I was able to recover it by poking around in the process memory using gdb/gcore. Here’s how.
Motoko, a programming language for building directly on the internet
To offer a seamless developer experience, we wanted to create a specialized programming language, called Motoko, that is designed to directly support the programming model of the Internet Computer, making it easier to efficiently build applications and take advantage of some of the more unusual features of this…
Algorithms Are Now Commodities
When I first started writing software, developers had to implement most of the algorithms they used; yes, hardware vendors provided libraries, but the culture was one of self-reliance (except for maths functions, which were technical and complicated).
Static Typing for Ruby: Adopting Sorbet at Scale
A look at how Shopify adopted static typing in it's core Ruby monolith by treating type checking like a product.
A New Chapter for PyPy
PyPy winds down its membership in the Software Freedom Conservancy Conservancy and PyPy's great work together PyPy joined Conservancy ...
Rust Analyzer: Next few years
rust-analyzer is a new
Clear explanation of Rust’s module system
Easy to understand explanation using visual aids and practical examples
How to break everything by fuzz testing
Fuzz testing is a bit like the infinite monkey theorem, but instead of Shakespeare you get crashes.
React-flow: a library to create interactive node-based graphs
We just open sourced "React Flow" : A library for rendering interactive node-based graphs with a smooth panning and zooming behaviour and…
How porting to TypeScript solved our API woes
Learn programming languages like TypeScript, Python, JavaScript, SQL, and regular expressions. Interactive with real code examples.
Why does musl make my Rust code so slow?
Software engineer specializing in query engines and distributed systems
Table Detection and Extraction Using Deep Learning
Extract table from image with Nanonets table detection OCR. Learn OCR table Deep Learning methods to detect tables in images or PDF documents.
Reflections on Software Performance
At this point in my career, I’ve worked on at least three projects where performance was a defining characteristic: Livegrep, Taktician, and Sorbet (I discussed sorbet in particular last time, and livegrep in an earlier post). I’ve also done a lot of other performance work on the tools I use, some of which ended up on…
Regexes vs. Combinatorial Parsing (2019)
Recently, I’ve been working on a music app that needs to get a musical sequence (like a melody) from the server to the client. To do this, we use a format called ABC. (You can read about how ABC music notation works here .) We chose ABC because it’s more readable than MIDI, it’s pretty concise, and it’s a standard, so…
Guitar Chord Voicings with Prolog
Prolog is a language that excels at defining and exploring relationships. Let’s take advantage of that and use Prolog to explore a few of the myriad of relationships that exist between chords and the guitar’s fretboard.
Guide to Linux System Calls (2016)
This complete guide explains all about Linux system calls with sample codes and results.
Notes on Paxos
These are my notes after learning the Paxos algorithm. The primary goal here is to sharpen my own understanding of the algorithm, but maybe someone will find this explanation of Paxos useful! This post assumes fluency with mathematical notation.
How and why GraphQL will influence the Sourcehut alpha
sourcehut is a network of useful open source tools for software project maintainers and collaborators, including git repos, bug tracking, continuous integration, and mailing lists.
The Native File System API allows web apps to save directly to files
The File System Access API enables developers to build powerful web apps that interact with files on the user's local device, such as IDEs, photo and video editors, text editors, and more. After a user grants a web app access, this API allows them to read or save changes directly to files and folders on the…
Five lines I put in a blank .vimrc
TL;DR To make a default Vim installation more useful, type the following 5 lines into its .vimrc file:
Promoted Add-ons Pilot
Today, we are launching a pilot program to give developers a way to promote their add-ons on addons.mozilla.org (AMO). This pilot program, which will run between the end of September ...
Async Views in Django 3.1
This tutorial looks at how to get started with Django's asynchronous views.