41554 blogs · [
{
"id": "01a087a3-0f7f-7153-9367-89a100c310e7",
"title": "Improving in chess is hard. I built the world's most human-like chess AI to help me.",
"url": "https://mbuffett.com/posts/chess-move-prediction/",
"published_at": "2025-10-31T11:16:47+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a101c05048",
"title": "An honest review of my last year building Chessbook",
"url": "https://mbuffett.com/posts/chessbook-year-review-2024/",
"published_at": "2025-02-26T11:16:47+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10227418f",
"title": "My Deep-cut Book Recs",
"url": "https://mbuffett.com/posts/deep-cut-book-recs/",
"published_at": "2025-01-02T02:14:31+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a102be5c45",
"title": "Treat your onboarding users like toddlers",
"url": "https://mbuffett.com/posts/onboarding-babies/",
"published_at": "2024-12-12T11:16:47+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10313a083",
"title": "How I prevent myself from committing temporary code to production",
"url": "https://mbuffett.com/posts/prevent-temporary-code-production/",
"published_at": "2024-12-12T01:32:08+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a1032215da",
"title": "Locality of Behaviour, over the Single Responsibility Principle",
"url": "https://mbuffett.com/posts/locality-over-single-responsibility-principle/",
"published_at": "2024-12-05T12:14:19+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10379fdbc",
"title": "A Made-up Name is Better Than No Name",
"url": "https://mbuffett.com/posts/a-made-up-name/",
"published_at": "2024-11-30T12:14:19+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a1041bd3bf",
"title": "Creating an optimized keyboard layout for the next generation of the Datahand",
"url": "https://mbuffett.com/posts/optimizing-datahand-layout/",
"published_at": "2024-10-30T12:14:19+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a104cacbd8",
"title": "The 2030 Rust Update",
"url": "https://mbuffett.com/posts/rust-2030/",
"published_at": "2024-08-28T22:27:55+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a104ffa189",
"title": "A Bunch of Programming Advice I'd Give To Myself 15 Years Ago",
"url": "https://mbuffett.com/posts/programming-advice-younger-self/",
"published_at": "2024-06-29T10:39:27+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a105d3ffe8",
"title": "Abstractions Are The Best, Abstractions Are The Worst",
"url": "https://mbuffett.com/posts/abstractions-best-worst/",
"published_at": "2024-06-15T21:20:45+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a106796201",
"title": "Managing My Motivation, as a Solo Dev",
"url": "https://mbuffett.com/posts/maintaining-motivation/",
"published_at": "2024-06-05T15:38:46+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a106cc9096",
"title": "Processing 6 Billion Chess Games in Less Than 2 Hours",
"url": "https://mbuffett.com/posts/ingesting-chess-games/",
"published_at": "2024-03-27T00:14:22+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10749c7ab",
"title": "Compressing Chess Moves Even Further, To 3.7 Bits Per Move",
"url": "https://mbuffett.com/posts/compressing-chess-moves-even-further/",
"published_at": "2024-03-14T20:48:39+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a107f8ef4e",
"title": "Compressing Chess Moves for Fun and Profit",
"url": "https://mbuffett.com/posts/compressing-chess-moves/",
"published_at": "2024-03-13T20:48:39+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a1086310dc",
"title": "How useless is memorizing openings, as an amateur Lichess player?",
"url": "https://mbuffett.com/posts/chess-openings-useless/",
"published_at": "2022-01-27T04:38:22+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a108889921",
"title": "Generating Chess Puzzles Fast with Rust and Stockfish",
"url": "https://mbuffett.com/posts/generating_chess_puzzles/",
"published_at": "2022-01-15T14:34:24+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a108e58b85",
"title": "Book Review 2021",
"url": "https://mbuffett.com/posts/book-review-2021/",
"published_at": "2022-01-04T17:42:13+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a109559c7d",
"title": "Scattered Thoughts on Why I Waste My Own Time",
"url": "https://mbuffett.com/posts/wasting_time/",
"published_at": "2021-11-10T15:23:31+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a109f3425b",
"title": "Thoughts on chess improvement, after gaining 600 points in 6 months",
"url": "https://mbuffett.com/posts/chess_improvement_thoughts/",
"published_at": "2021-10-06T19:32:28+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10a36a255",
"title": "An Incomplete Explanation of the Proc Macro That Saved Me 4000 Lines of Rust",
"url": "https://mbuffett.com/posts/incomplete-macro-walkthrough/",
"published_at": "2021-05-04T21:48:47+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10a5ae800",
"title": "How Much of the Hitchhiker's Guide to the Galaxy Can You Fit on a QR Code?",
"url": "https://mbuffett.com/posts/qr-code-hitchhikers-guide/",
"published_at": "2021-03-28T18:14:18+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10b50ba55",
"title": "Unironically Using Kubernetes for my Personal Blog",
"url": "https://mbuffett.com/posts/kubernetes-setup/",
"published_at": "2021-03-17T00:39:04+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10b849b78",
"title": "My Experience Switching to Gatsby, from Next.js",
"url": "https://mbuffett.com/posts/gatsby-vs-nextjs-quick-thoughts/",
"published_at": "2020-12-02T04:54:30+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10ba330e9",
"title": "CRUD with Rocket and Sled",
"url": "https://mbuffett.com/posts/rocket-sled-tutorial/",
"published_at": "2020-10-22T21:17:43+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10c0a471b",
"title": "Creating a Snake Clone in Rust, with Bevy",
"url": "https://mbuffett.com/posts/bevy-snake-tutorial/",
"published_at": "2020-10-15T14:17:49+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10c5b904a",
"title": "Thoughts on Structured Editing: Breaking Away from Syntax",
"url": "https://mbuffett.com/posts/structured-editing-syntax/",
"published_at": "2020-09-27T01:55:45+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10ccee540",
"title": "Migrating from Redux to Pullstate",
"url": "https://mbuffett.com/posts/redux-to-pullstate/",
"published_at": "2020-09-24T20:35:12+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10cd68c1a",
"title": "As a hobbyist rust developer, I want to think less about error handling",
"url": "https://mbuffett.com/posts/rust-less-error-handling/",
"published_at": "2020-09-08T22:50:58+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10dafe292",
"title": "Unconventional React Things: Styling Edition",
"url": "https://mbuffett.com/posts/unconventional-react/",
"published_at": "2020-08-10T21:05:15+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10e9a2c0f",
"title": "Programming and Tacit Knowledge",
"url": "https://mbuffett.com/posts/all-tacit-knowledge/",
"published_at": "2020-08-05T14:36:38+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10e9dd6e6",
"title": "Why I Self-Host My Website Analytics",
"url": "https://mbuffett.com/posts/why-i-self-host-my-analytics/",
"published_at": "2020-08-04T03:54:48+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a10f91ff17",
"title": "Replacing ngrok with ktunnel",
"url": "https://mbuffett.com/posts/ktunnel-ngrok-replace/",
"published_at": "2020-08-01T17:19:26+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a1100d2b27",
"title": "The CLI tools I use while doing full-stack dev",
"url": "https://mbuffett.com/posts/cli-tools/",
"published_at": "2020-07-14T04:38:22+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a110ee6398",
"title": "Setting up tmux and kitty for true color support",
"url": "https://mbuffett.com/posts/setting-up-tmux-and-kitty-for-true-color-support/",
"published_at": "2020-01-08T16:49:41+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a1111658f5",
"title": "My Year in Books: 2019",
"url": "https://mbuffett.com/posts/my-year-in-books-2019/",
"published_at": "2019-12-26T22:26:25+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a11175b744",
"title": "Scraping Goodreads Sitemaps with Haskell",
"url": "https://mbuffett.com/posts/scraping-goodreads-sitemaps-with-haskell/",
"published_at": "2019-10-30T05:27:03+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a111ded839",
"title": "Setting up Neovim for Haskell, as of October 2019",
"url": "https://mbuffett.com/posts/setting-up-neovim-for-haskell-as-of-october-2019/",
"published_at": "2019-10-29T16:48:29+00:00"
},
{
"id": "01a087a3-0f7f-7153-9367-89a1129c8978",
"title": "Creating a basic chess AI with Python",
"url": "https://mbuffett.com/posts/chess-ai/",
"published_at": "2015-05-10T04:38:22+00:00"
}
] posts Claim your blog