Marcus Buffett
Subscribe
Archives
A Made-up Name is Better Than No Name
November 30, 2024
In working on Chessbook recently, I often found myself referring to (position, move) pairs. Specifically positions that are stored as EPDs, and moves that...
Creating an optimized keyboard layout for the next generation of the Datahand
October 30, 2024
Ever seen this keyboard? This was called the Datahand, it was a radical new approach to keyboards that mostly only existed within a small community of RSI...
The 2030 Rust Update
August 28, 2024
Welcome to the end-of-year update for the Rust language. 2030 has been a huge year for us, with some huge wins but also a couple setbacks. We’d like to...
A Bunch of Programming Advice I'd Give To Myself 15 Years Ago
June 29, 2024
I finally have the feeling that I’m a decent programmer, so I thought it would be fun to write some advice with the idea of “what would have gotten me to...
Abstractions Are The Best, Abstractions Are The Worst
June 15, 2024
Abstractions are the best Your code will be safer and more readable. It will prevent entire classes of bugs. It will be easier to add new features. You can...
Managing My Motivation, as a Solo Dev
June 5, 2024
One of the biggest sticking points of being a solo dev is maintaining motivation. I’ve been keeping a journal entry about how to hack my motivation, what...
Processing 6 Billion Chess Games in Less Than 2 Hours
March 27, 2024
Background I run a chess site, https://chessbook.com. We ingest a ton of games, nearly 6 billion, to power our various statistics. Our current database has...
Compressing Chess Moves Even Further, To 3.7 Bits Per Move
March 14, 2024
I wrote a post yesterday about how to compress chess moves. I was pretty happy with my hand-rolled compression scheme, which achieved a per-move size of 9.5...
Compressing Chess Moves for Fun and Profit
March 13, 2024
UPDATE: I’ve written a new post with a new technique which is about 2.5x more efficient than this approach Chess notation has come a long way since...
How useless is memorizing openings, as an amateur Lichess player?
January 27, 2022
I recently downloaded Lichess’ database of all December ‘21 games. After using it to generate puzzles for my chess training site, I realized I could also use...
Generating Chess Puzzles Fast with Rust and Stockfish
January 15, 2022
Generally, chess puzzles will present you with a position and ask you to find the best move. There’s only one, and all other moves are losing. These are...
Book Review 2021
January 4, 2022
The annual book review, 2021 edition. Ratings are solely about how much I enjoyed the book. I’m not reviewing these books like a critic, if the book has a...
Scattered Thoughts on Why I Waste My Own Time
November 10, 2021
I spend way too much time on reddit, hacker news, twitter, feedly, coinbase, robinhood, email, etc. I’d like to spend time on things that are more meaningful...
Thoughts on chess improvement, after gaining 600 points in 6 months (1200-1800)
October 6, 2021
I played chess briefly with my friends in high school, where I had a rating of around 1100 online. I gave up the game for about 10 years, then picked it back...
An Incomplete Explanation of the Proc Macro That Saved Me 4000 Lines of Rust
May 4, 2021
Recently I’ve been working on a project to surface census data via a GraphQL API, mostly as a way to learn GraphQL. I did end up learning GraphQL, but I also...
How Much of the Hitchhiker's Guide to the Galaxy Can You Fit on a QR Code?
March 28, 2021
I’ve been dealing with QR codes recently, as one of my side projects generates them, and I got curious about how much data you can really fit in a QR code....
Unironically Using Kubernetes for my Personal Blog
March 17, 2021
There’s no shortage of posts like “Let’s use Kubernetes!” Now you have 8 problems, or Do I Really Need Kubernetes?, which tend to argue that unless you’re...
My Experience Switching to Gatsby, from Next.js
December 2, 2020
Just some quick thoughts on Gatsby and Next.js, after trying both for a project I worked on recently (this one). I’ve been a Next.js user for about a year,...
CRUD with Rocket and Sled
October 22, 2020
In my last project I used Sled and Rocket. I had to piece together how to use the two from a few different places so I put together this quick guide in case...
Creating a Snake Clone in Rust, with Bevy
October 15, 2020
Bevy has seen rapid adoption recently, but the learning resources are still fairly scarce. This is an attempt to provide a next step after the Bevy book. The...
Thoughts on Structured Editing: Breaking Away from Syntax
September 27, 2020
I was aimlessly browsing Github and came across sapling, a very early-stage structured editor. It was inspired by this blog post, which talks about...
Migrating from Redux to Pullstate
September 24, 2020
Recently I migrated my side-project from Redux, which I’ve used in every React project for the past four years, to pullstate, here is my tale. Problems with...
As a hobbyist rust developer, I want to think less about error handling
September 8, 2020
I saw the call for blog posts in the 2021 rust roadmap, so I figured I’d throw in my 2 cents, since I’ve been working on a project recently that uses rust on...
Unconventional React Things: Styling Edition
August 10, 2020
I’ve developed an unusual approach to styling in my React code. It’s sort of a functional, atomic css approach. Other methods I’ve used are BEM + separate...
Programming and Tacit Knowledge
August 5, 2020
The Commonplace blog has been writing a lot on tacit knowledge recently. As someone who’s been programming for a long time (8ish years), these articles...
Why I Self-Host My Website Analytics
August 4, 2020
Recently I made the switch to self-hosted analytics, after being a long-term Google Analytics user. Almost every website you visit will have a Google...
Replacing ngrok with ktunnel
August 1, 2020
ngrok is a tool that proxies traffic from a subdomain (like http://2fb551c6b2fd.ngrok.io) to a port on your localhost. I’ve been using it off and on for...
The CLI tools I use while doing full-stack dev
July 14, 2020
I’ve been working on a web project for a few months now and thought I’d take stock of the tools I’ve been using. So I went through my zsh_history (fun fact,...
Setting up tmux and kitty for true color support
January 8, 2020
I’ve been using kitty and tmux together for years and recently realized my setup for true colors was broken, thanks to neovim’s :checkhealth command. After...
My Year in Books: 2019
December 26, 2019
This is just a rapid-fire summary of the books I’ve read this year and what I thought about them. Note that the links in here are affiliate links. Any profit...
Scraping Goodreads Sitemaps with Haskell
October 30, 2019
Recently I acquired a project, Now What Do I Read?. One of the steps in acquiring the data was to scrape the sitemaps of Goodreads. The project was written...
Setting up Neovim for Haskell, as of October 2019
October 29, 2019
I started a Haskell rewrite of a project, and after not having used Haskell for a long time, found the process of setting up my Vim environment to be a pain....
Creating a basic chess AI with Python
May 10, 2015
Recently, I made a chess program in Python and published the source on github here. The code is just under 1000 lines, about 20% of which is dedicated to the...