Main is usually a function – when is it not?
It began when my coworker, despite already knowing how to program, was forced to take the intro level Computer Science course at my university. We joked with...
Neon: Node plus Rust
If you’re a JavaScript programmer who’s been intrigued by Rust’s hack without fear theme—making systems programming safe and fun—but you’ve been waiting for inspiration, I may have something for you! I’ve been working on Neon, a set of APIs and tools for making it super easy to write native Node modules in Rust.
Divisibility by 7 is a Walk on a Graph (2009)
Mathematics, applications of mathematics to life in general, and my life as a mathematician.
Abandon your DVCS and return to sanity
I’ve pretty much always been a DVCS apologist. I know quite a few people who’ve been using DVCSes since Mercurial and Git, and a few who go back to BitKeeper , but I can totally out-hipster you. I was there for Monotone . I actually remember struggling to grok tla , and being happy that someone took the time to write…
Major Linux Problems on the Desktop, 2016 Edition
In this regularly updated article, which is without doubt the most comprehensive list of Linux distributions' problems on the entire Internet, we only discuss their main problems and deficiencies (which may be the reason why some people say Linux distros are not ready for the desktop) while everyone should keep in…
Introducing d3-scale
I’d like D3 to become the standard library of data visualization: not just a tool you use directly to visualize data by writing code, but…
Why Lisp?
A number of people have contacted me about a comment I wrote yesterday on Hacker News asking me to elaborate, e.g.: my impression is that...
One line you should add to every makefile
If you're using GNU make and you need help debugging a makefile then there's a single line your should add. And it's so useful that you sho...
8088 MPH: We Break All Your Emulators
One of my bucket list items since I read my first party report back in 1991 was to attend a european demoparty and compete in a compo. I competed at NAID ’96 and placed there, which was awes…
X86 is a high-level language
Just so you know, x86 machine-code is now a "high-level" language. What instructions say, and what they do, are very different things. I m...
A guide to implementing 2D platformers
Having previously been disappointed by the information available on the topic, this is my attempt at categorizing different ways to implement 2D platform games, list their strengths and weaknesses, and discuss some implementation details.
The Unix Philosophy and Elixir as an Alternative to Go
If you’ve done web programming for any length of time, you might too feel like we are at the start of some new era. For years, we’ve been using frameworks like Django and Rails in languages like Python and Ruby and PHP which use the old request-response cycle (for lack of a better term). Basically, a request comes…
Open Source .NET libraries that make your life easier
Building applications with .NET, React, and React Native. Fueled by enthusiasm for Linux, currently rocking Omarchy!
The problem with Angular
In the last six months or so I talked to several prospective clients that had a problem finding front-end consultants in order to help their dev teams get a grip on their Angular projects.
How I Hacked Amazon’s $5 WiFi Button
UPDATE: I’m now selling ready-to-use buttons at Buttonjoy.com!
Face swapping with Python, dlib, and OpenCV
In this post I’ll describe how I wrote a short (200 line) Python script to automatically replace facial features on an image of a face, with the facial features from a second image of a face.
JavaScript's world domination
A Civilization-esque journey through JavaScript history — chronicles of the march from inception to ubiquity
ClojureScript Year in Review
It’s been a very exciting year for ClojureScript. It’s clear that things have been accelerating and here is a personal selection of highlights:
We need less powerful languages
We need languages and systems that are less powerful, not more powerful, and easy ways to create and use such languages.
Git in six hundred words
(This essay is a companion piece to Gitlet, my implementation of Git in JavaScript.)
CSS Modules
If you wanted to identify an inflection point in the recent development of CSS thinking, you’d probably pick Christopher Chedeau’s “CSS in JS” talk from NationJS in November, 2014. It was a watershed moment that set a bunch of different minds spiralling off in their own directions like particles after a high-energy…
Sed – An Introduction and Tutorial
The Grymoire - Tutorial on the SED stream editor.