Andrew Healey's Blog

Andrew Healey's blog and personal website. Software engineer, writer, creator.
https://healeycodes.com/ (RSS)
visit blog
Building Game Prototypes with LÖVE
31 Dec 2024 | original ↗

Chess, card games, and Lua.

Compiling Lisp to Bytecode and Running It
15 Oct 2024 | original ↗

Extending my Lisp compiler and adding a fast virtual machine.

Generating Mazes
8 Aug 2024 | original ↗

Visualizations and techniques for different maze generation algorithms.

Making Python Less Random
8 Jul 2024 | original ↗

Using ptrace to intercept and modify a process's getrandom syscall.

2D Multiplayer From Scratch
30 Jun 2024 | original ↗

Exploring patterns and systems for creating realtime browser games.

Lisp Compiler Optimizations
30 May 2024 | original ↗

Smaller programs that do less work.

Lisp to JavaScript Compiler
26 May 2024 | original ↗

Transpiling Lisp to JavaScript using Rust.

Adding a Line Profiler to My Language
26 Mar 2024 | original ↗

Creating my own developer tooling, and some thoughts on line profilers.

Compressing CS2 Demos
5 Mar 2024 | original ↗

Shrinking demo data by a factor of 13x.

A Custom WebAssembly Compiler
30 Dec 2023 | original ↗

Making my programming language 4000x quicker, and adding a static type checker.

Rendering Counter-Strike Demos in the Browser
20 Nov 2023 | original ↗

Building a demo player for coaches and analysts to visualize CS2 gameplay.

Porting Boolrule To Rust
18 Aug 2023 | original ↗

Building a fast boolean expression evaluation engine.

Running Untrusted Python Code
27 Jul 2023 | original ↗

Using seccomp and setrlimit to build a Python sandbox.

Building Family Websites
29 May 2023 | original ↗

The highest user-joy-per-visit than any other project I'll ever work on.

My Own Python Web Framework
22 Feb 2023 | original ↗

Using Vercel's Build Output API to explore some framework ideas.

My Time At The Recurse Center
14 Feb 2023 | original ↗

Thoughts and reflections on my six week batch.

Sandboxing JavaScript Code
12 Feb 2023 | original ↗

An overview of the sandboxing landscape, and some experiments with Deno.

Implementing Highlighting, Search, and Undo
30 Jan 2023 | original ↗

How I added three new features to my text editor.

Making a Text Editor with a Game Engine
25 Jan 2023 | original ↗

Writing my own quirky version of nano using the 2D game engine Ebitengine.

Profiling and Optimizing an Interpreter
19 Jan 2023 | original ↗

Rewriting library code to speed up my interpreter benchmark by 28%.

Adding For Loops to an Interpreter
16 Jan 2023 | original ↗

Extending an existing tree-walk interpreter step by step.

A Personal File Share CLI
27 Dec 2022 | original ↗

Sharing files with my friends from the terminal.

CodeGuessr
20 Nov 2022 | original ↗

Building a guessing game for popular open source projects.

Recent Projects I Didn't Finish
7 Nov 2022 | original ↗

A few ideas I tried. Including flamegraphs, fast HTTP routing, and infinite chess.

Virtual Ants
4 Sept 2022 | original ↗

Artificial life and Langton's ant.

Implementing Bitcask, a Log-Structured Hash Table
15 Aug 2022 | original ↗

Shipping a speedy key/value store for datasets larger than memory.

Building and Solving Sokoban
7 Jun 2022 | original ↗

Creating an automated solver for Sokoban puzzles.

Beating grep with Go
26 Apr 2022 | original ↗

Writing a fast file searching program and benchmarking it.

When I'm Sad My Computer Sends Me Cats
18 Feb 2022 | original ↗

I wrote a program that sends cats to my phone when I'm sad at the computer.

Designing a Code Playground for Adventlang
18 Dec 2021 | original ↗

Using Web Workers and WebAssembly to build a speedy UI.

Designing a Programming Language for Advent of Code
28 Nov 2021 | original ↗

What is the minimum amount of features I need to not hate my life during this festive season?

DOOM Rendered via Checkboxes
14 Oct 2021 | original ↗

WebAssembly meets 16000 HTML checkboxes.

Porting Niceware to Rust
8 Oct 2021 | original ↗

The sensation of incremental progress when programming with Rust.

Creating the Golfcart Programming Language
16 Jul 2021 | original ↗

Writing an interpreter from scratch.

Listening to Satellites with my Raspberry Pi
30 May 2021 | original ↗

Building a live dashboard with the help of a few hardware modules.

Computer Vision and Embroidery
4 Apr 2021 | original ↗

Picking the correct thread colors from embroidery hoop images.

GeoGuessing with Deep Learning
24 Mar 2021 | original ↗

Applying photo geolocation estimation to the game of GeoGuessr.

WebAssembly Search Tools for Static Sites
20 Feb 2021 | original ↗

Building a technical demo to understand this blossoming area of technology.

Generating Text With Markov Chains
31 Jan 2021 | original ↗

Generating random but familiar text by building Markov chains from scratch.

Personal Websites and Internet Writing
27 Dec 2020 | original ↗

People that inspire me the most (and that I steal from most regularly).

Building My Own Chess Engine
20 Dec 2020 | original ↗

Exploring the computational complexity of chess. Code snippets in Python so you can do the same.

Writing Software for an Among Us League
13 Nov 2020 | original ↗

Making a casual game more competitive and arguing with my friends about Elo systems.

Learning the Ink Programming Language
15 Sept 2020 | original ↗

Picking up Ink and giving back to the community.

Privacy Focused Analytics From Scratch
10 Aug 2020 | original ↗

Learning more about user data collection by writing my own analytics system.

Boids in WebAssembly Using Go
26 Jul 2020 | original ↗

The famous flocking simulation built with the Ebiten game library.

Creating Randomness Without Math.random
12 Jul 2020 | original ↗

Building a replacement for JavaScript's random number generator.

A Practical Introduction to Graphs (Network Diagrams)
5 Jul 2020 | original ↗

Calculating the path between two countries with the least border crossings.

Polyfilling the Fetch API for Old Browsers and Node.js
25 Jun 2020 | original ↗

A quick look at polyfilling, along with with solutions for both environments.

The Flow of Knowledge in a Team (or Why I Dig Tickets)
31 May 2020 | original ↗

Engineering tickets often end up meaning a lot. For the product but also emotionally for the individual.

Adding Comments to Gatsby with Netlify Serverless Functions + GitHub
8 May 2020 | original ↗

Use Netlify serverless functions to let users add comments to a static website.

Hacking Together an E-ink Dashboard
28 Apr 2020 | original ↗

A prototype Raspberry Pi dashboard to save me talking to my smart assistant.

How I'm Working Remotely
26 Apr 2020 | original ↗

Writing code, working (almost) solo, and exploring remote-life during the UK lockdown.

Twitter Ticker Tape with a POS58 Receipt Printer
10 Apr 2020 | original ↗

Building a fun toy with my Raspberry Pi, Python, and Tweepy.

Book Review: The Developer's Guide to Content Creation
8 Mar 2020 | original ↗

Discussing an amazing resource for those writing for developers.

DEV Article Analysis
19 Jan 2020 | original ↗

Building a tool for users to analyze their work over time.

Gatsby Sparks Joy
11 Jan 2020 | original ↗

Migrating from Jekyll to Gatsby.

Hardest JavaScript Puzzle I've Ever Solved
17 Nov 2019 | original ↗

Writing JavaScript with a one character width restriction.

Let's Build a CAPTCHA Generator with Node.js
11 Nov 2019 | original ↗

Using Canvas, Express, and a GitHub Action.

Cloning Memcached with Go
21 Oct 2019 | original ↗

I'm really starting to enjoy Go.

My First Golang Program
2 Oct 2019 | original ↗

Conway's Game of Life in Ebiten.

I Built a Bot to Try and Get Money Back From My Internet Provider
22 Aug 2019 | original ↗

My most popular project yet!

My Experience with Pair Programming
13 Aug 2019 | original ↗

Pairing for fun and profit.

An Introduction to Caching on the Web, With Examples in Python
7 Jul 2019 | original ↗

A high-level overview of caching.

What If I Want My Website to Last for 100 Years?
24 Jun 2019 | original ↗

Prepping for the internet to happen.

A Tutorial on Tricking Google: Encoding Messages in Apostrophes
18 Jun 2019 | original ↗

Using character codes to hide in plain sight.

Your First Open-Source Pull Request: a Walkthrough
16 Jun 2019 | original ↗

Making a small change to the Jekyll project.

Refactoring JavaScript for Performance and Readability (with Examples!)
11 Jun 2019 | original ↗

A few tips that have really helped me.

Saving Data in JavaScript Without a Database
3 Jun 2019 | original ↗

The title is a lie I also show how to use SQLite.

Interview Question: Implement a Progress Bar
27 May 2019 | original ↗

Different ways to do one thing well.

Solving Puzzles With High-Performance JavaScript
19 May 2019 | original ↗

It's fast but is it worth it?

A Tiny Project, From Inception to Deployment
12 May 2019 | original ↗

A JavaScript webscraper for MDN.

Continuous Deployment to Glitch via GitHub Webhooks
6 May 2019 | original ↗

Joining two of my favorite ecosystems together.

Fun With Linear Time: My Favorite Algorithm
30 Apr 2019 | original ↗

Breaking down the Boyer–Moore majority vote algorithm with examples in Python.

What They Don't Teach You at a Computer Science Masters
24 Apr 2019 | original ↗

Bubblesort isn't everything.

The Weird Rules I Set Myself That Got Me a Job
18 Apr 2019 | original ↗

Advice that I haven't seen elsewhere.

How to Write an Awesome GitHub README
14 Apr 2019 | original ↗

Attract and educate.

Talking to Python from JavaScript (and Back Again!)
11 Apr 2019 | original ↗

Let's learn how to pass data back and forth between languages.

Learn the Storage API by Building a Note Taking App (Tutorial)
9 Apr 2019 | original ↗

Learning and building.

Embed Your Latest DEV Posts Anywhere (Tutorial)
6 Apr 2019 | original ↗

Using the DEV.to API with Node.

Build a Python Bot to Find Your Website's Dead Links (Tutorial)
2 Apr 2019 | original ↗

Crawling a website for missing resources using the Python standard library.

Answered: What the Heck is Code Golf?
30 Mar 2019 | original ↗

I love code golf and you should too!

JavaScript One-Liners That Make Me Excited
28 Mar 2019 | original ↗

Dust off your ternary expressions, we're going in.

Need a Friend? Write a Reddit Bot with Python to Follow You Around (Tutorial)
25 Mar 2019 | original ↗

The basics of building a Reddit bot that listens for phrases and replies to them.

Earn a Build Passing Badge on GitHub! Testing Your Express App with Travis CI (Tutorial)
22 Mar 2019 | original ↗

How to setup Travis CI for a Node/Express project.

Coding a Live Cam for the Raspberry Pi in Python (Tutorial)
18 Mar 2019 | original ↗

A lo-fi solution for streaming images from your Raspberry Pi to the web.

How Flappy Bird Got Me My Start in Software
15 Mar 2019 | original ↗

An overview of how I learned to code. Also a bit on my experience during my CS Masters.

A Day in the Life of a Mediumly Productive Software Engineer
14 Mar 2019 | original ↗

Living, working, building, and drinking too much coffee.

Kicking Butt and Taking Names With WebSockets (Tutorial)
13 Mar 2019 | original ↗

A little on the history of WebSockets and a brief overview on how to use them in JavaScript.

Two Things About My First In-house Software Job That I Didn't See Coming
12 Mar 2019 | original ↗

On enjoying being part of a team.

Creating Cute GitHub Badges Based Off a Project's Mood (Node.js)
11 Mar 2019 | original ↗

Creating GitHub badges based off the time when most people contribute to a GitHub project.

Real-Time Streaming of Every Emoji Posted as a Comment to Reddit.com
4 Mar 2019 | original ↗

Building a website which live streams every emoji posted to Reddit.com.

I Ported Sudoku to Your URL Bar and It Plays like a Dream
21 Feb 2019 | original ↗

Goofy project in which you can play Sudoku entirely within your URL bar.

Cloning Dominos Order Tracker as a Microservice with Node.js and Firebase!
20 Feb 2019 | original ↗

Writing an order tracker with Node, Express, and Firebase.

Benchmarking WebSocket Servers with Python!
28 Jan 2019 | original ↗

Benchmarking websocket servers and frameworks with async Python.

Leetcode - Episode 17 - Moving, Shaking, and Folding (3 x E)
21 Jan 2019 | original ↗

Solutions for: Move Zeroes, Merge Two Sorted Lists, and Merge Two Binary Trees.

Leetcode - Episode 16 - Pretty Efficient (3 x E)
16 Jan 2019 | original ↗

Solutions for: Flipping an Image, Leaf-Similar Trees, and Maximum Depth of N-ary Tree.

Leetcode - Episode 15 - Three Tree Qs (3 x E)
15 Jan 2019 | original ↗

Solutions for: Invert Binary Tree, N-ary Tree Postorder Traversal, and N-ary Tree Preorder Traversal.

Leetcode - Episode 14 - Short, Easy Solutions (3 x E)
14 Jan 2019 | original ↗

Solutions for: Monotonic Array, Max Consecutive Ones, and Contains Duplicate.

Leetcode - Episode 13 - Finding My Stride (3 x M)
13 Jan 2019 | original ↗

Solutions for: Range Sum of BST, Max Increase to Keep City Skyline, and Custom Sort String.

Leetcode - Episode 12 - Starting Early (3 x E)
12 Jan 2019 | original ↗

Solutions for: Verifying an Alien Dictionary, Reverse Only Letters, and Backspace String Compare.

Leetcode - Episode 11 - Faster than 99.17% (1 x M, 2 x E)
11 Jan 2019 | original ↗

Solutions for: Reverse Vowels of a String, Isomorphic Strings, and Reverse Words in a String.

Leetcode - Episode 9 - Trudging Through (3x E)
9 Jan 2019 | original ↗

Solutions for: Majority Element, Detect Capital, and Not Boring Movies.

Leetcode - Episode 8 - Breaking Out Some Mediums (3x M, 1x E)
8 Jan 2019 | original ↗

Solutions for: Encode and Decode TinyURL, Insert into a Binary Search Tree, Minimum Add to Make Parentheses Valid, and Goat Latin.

Leetcode - Episode 7 - Getting More Pythonic (3x E)
7 Jan 2019 | original ↗

Solutions for: Two Sum, Valid Anagram, and Length of Last Word.

Leetcode - Episode 6 - Progressively Harder (3x E)
6 Jan 2019 | original ↗

Solutions for: Keyboard Row, Reorder Log Files, and Single Number.

Leetcode - Episode 5 - Fastest Solutions Yet (3x E)
5 Jan 2019 | original ↗

Solutions for: Uncommon Words from Two Sentences, Search in a Binary Search Tree, and Fizz Buzz.

Leetcode - Episode 4 - gnivloS melborP (3x E)
4 Jan 2019 | original ↗

Solutions for: Reverse Words in a String III, Sort Array By Parity II, and Reverse String.

Leetcode - Episode 3 - The Streak Continues (3x E)
3 Jan 2019 | original ↗

Solutions for: Sort Array By Parity, Robot Return to Origin, and Self Dividing Numbers.

Leetcode - Episode 2 - Three More Easys
2 Jan 2019 | original ↗

Solutions for: N-Repeated Element in Size 2N Array, Univalued Binary Tree, and Unique Morse Code Words.

Leetcode - Episode 1 - Three Easys
1 Jan 2019 | original ↗

Episode one of tacking Leetcode problems and discussing solutions. Jewels and Stones, Unique Email Addresses, and To Lower Case.

↑ These items are from RSS. Visit the blog itself at https://healeycodes.com/ to find everything else and to appreciate author's digital home.