<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://www.johntrimble.com/</id><title>John Trimble</title><subtitle>A minimal, responsive and feature-rich Jekyll theme for technical writing.</subtitle> <updated>2026-08-23T23:43:03-07:00</updated> <author> <name>John Trimble</name> <uri>https://www.johntrimble.com/</uri> </author><link rel="self" type="application/atom+xml" href="https://www.johntrimble.com/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://www.johntrimble.com/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 John Trimble </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>How Boardbarian Fails</title><link href="https://www.johntrimble.com/posts/how-boardbarian-fails/" rel="alternate" type="text/html" title="How Boardbarian Fails" /><published>2026-08-23T21:00:00-07:00</published> <updated>2026-08-23T21:00:00-07:00</updated> <id>https://www.johntrimble.com/posts/how-boardbarian-fails/</id> <content type="text/html" src="https://www.johntrimble.com/posts/how-boardbarian-fails/" /> <author> <name>John Trimble</name> </author> <summary>At the end of the previous post, I asked how I know any of this works. The honest answer starts with failure. Getting Boardbarian working meant spending most of my time staring at wrong, often bewildering, answers. This post describes the eval system I built to catch those failures and drive development. It’s also a cautionary tale about trusting automated results without spot-checking them. Th...</summary> </entry> <entry><title>How Boardbarian Thinks</title><link href="https://www.johntrimble.com/posts/how-boardbarian-thinks/" rel="alternate" type="text/html" title="How Boardbarian Thinks" /><published>2026-08-03T07:00:00-07:00</published> <updated>2026-08-03T07:00:00-07:00</updated> <id>https://www.johntrimble.com/posts/how-boardbarian-thinks/</id> <content type="text/html" src="https://www.johntrimble.com/posts/how-boardbarian-thinks/" /> <author> <name>John Trimble</name> </author> <summary>I enjoy board games, but they are often complex, with many rules and rule interactions to keep track of. I’ve been in gaming sessions where I spent more time puzzling over the specific wording of a rule or digging through tomes of text seeking clarity than actually playing the game. What’s worse, I’ve on occasion thought I’d resolved a rule question, only to later discover a relevant exception ...</summary> </entry> <entry><title>From Softmax to ArcFace: Building Better Embeddings with Additive Angular Margins</title><link href="https://www.johntrimble.com/posts/from-softmax-to-arcface/" rel="alternate" type="text/html" title="From Softmax to ArcFace: Building Better Embeddings with Additive Angular Margins" /><published>2025-08-13T19:52:00-07:00</published> <updated>2025-08-13T19:52:00-07:00</updated> <id>https://www.johntrimble.com/posts/from-softmax-to-arcface/</id> <content type="text/html" src="https://www.johntrimble.com/posts/from-softmax-to-arcface/" /> <author> <name>John Trimble</name> </author> <summary>Imagine trying to build a face identification system that can recognize any face on Earth, not just some fixed set of faces. New faces appear every day, and there’s no way to include all of them during training. Traditional classification methods start to fall apart in this kind of open-ended problem. One of the most common such methods is softmax. It works brilliantly when the set of classes ...</summary> </entry> <entry><title>Weight Decay is Not L2 Regularization</title><link href="https://www.johntrimble.com/posts/weight-decay-is-not-l2-regularization/" rel="alternate" type="text/html" title="Weight Decay is Not L2 Regularization" /><published>2025-07-28T19:00:00-07:00</published> <updated>2025-07-28T19:00:00-07:00</updated> <id>https://www.johntrimble.com/posts/weight-decay-is-not-l2-regularization/</id> <content type="text/html" src="https://www.johntrimble.com/posts/weight-decay-is-not-l2-regularization/" /> <author> <name>john</name> </author> <summary>When training neural networks, the choice and configuration of optimizers can make or break your results. A particularly subtle pitfall is that PyTorch’s weight_decay parameter on many adaptive optimizers—like Adam or RMSprop—actually applies L2 regularization rather than true weight decay. With vanilla stochastic gradient descent (SGD) the distinction is largely academic, but when you’re using...</summary> </entry> <entry><title>Entity Component System</title><link href="https://www.johntrimble.com/blog/2014/01/14/entity-component-system/" rel="alternate" type="text/html" title="Entity Component System" /><published>2014-01-14T11:55:23-07:00</published> <updated>2014-01-14T11:55:23-07:00</updated> <id>https://www.johntrimble.com/blog/2014/01/14/entity-component-system/</id> <content type="text/html" src="https://www.johntrimble.com/blog/2014/01/14/entity-component-system/" /> <author> <name>John Trimble</name> </author> <summary>About a year ago, I was listening to a talk by Chris Granger on how he leveraged the Entity Component System (ECS) architectural pattern when building LightTable. I’d never heard of the pattern before, probably because it typically finds its use in video games, and I don’t really do anything in the way of video game development. Chris did a pretty good job selling the approach, so I decided to ...</summary> </entry> </feed>
