Brandon Rohrer
banner
brandonrohrer.com
Brandon Rohrer
@brandonrohrer.com
Robotics and Reinforcement Learning tinkerer.
brandonrohrer.org
Wrangler of algorithms.
Eater of bread. Sipper of whisky.
Reports to a Shih Tzu.
Pinned
Update from my long-running #ReinforcementLearning side project.

It uses a combination of new tools to control a simulated pendulum.
Cool Python trick: Sometimes you want functions to have keyword arguments, but you also want them to be required. This is especially useful when you're passing required arguments using dictionary expansion, like `function(**arg_dict)`.
September 29, 2026 at 12:25 PM
Optimizing models with lots of hyperparameters and options is a slog that usually requires a combination community wisdom, obscure blog posts, and tedious trial and error. Automated methods tend to rely on strong assumptions of smoothness or brute force their way through every permutation.
September 29, 2026 at 9:26 AM
Reposted by Brandon Rohrer
Today is Pub Day for "Data Are Made, Not Found: A Story of Politics, Power, and the Civil Servants Who Saved the US Census"!!! ::bounce:: Please support me by buying a copy of the book or asking your library for a copy! press.uchicago.edu/ucp/books/bo...
September 24, 2026 at 12:57 PM
Hey US eng friends, if you want to give Patreon a shot:

Staff SWE, Data Infrastructure
jobs.ashbyhq.com/patreon/e8f0...

Senior MLE, Infrastructure (on my team)
jobs.ashbyhq.com/patreon/722d...

Staff SWE, Backend Platform
jobs.ashbyhq.com/patreon/c277...
Staff Software Engineer, Data Infrastructure
Patreon is a media and community platform where over 300,000 creators give their biggest fans access to exclusive work and experiences. We offer creators a variety of ways to engage with their fans an...
jobs.ashbyhq.com
September 16, 2026 at 10:02 PM
Three days of automated parameter sweeps saved me 15 minutes of Internet searches!
September 15, 2026 at 12:41 AM
added type hints and ran mypy on some code I considered tight. It was like shining a black light in a hotel room.
September 8, 2026 at 1:30 AM
Diving in to Python typechecking and stumbled on this @vickiboykis.com post
vickiboykis.com/2023/12/11/w...

The tldr: "The result of the deep dive is that I now no longer trust anything in the Python typing ecosystem."

I'm now confused as ever, but on a higher level and about more important things
Why if TYPE_CHECKING?
Typechecking is brittle yet important
vickiboykis.com
August 31, 2026 at 12:53 PM
Josh, Luis, and I had a great time chatting the other day and recorded in case you'd like to listen in
www.youtube.com/live/Yx-ZkLf...
TRIPLE BAM!!! With Josh, Luis and special guest Brandon Rohrer
YouTube video by StatQuest with Josh Starmer
www.youtube.com
August 22, 2026 at 10:22 PM
T-minus 30 minutes
If you’re into such things, I’m going to be chatting with Josh Starmer and Luis Serrano (two of the best ML educators I know) in a YouTube livestream, answering viewer questions, at 11:00am EDT Thursday (tomorrow/today).
8am PDT, 3pm UTC, 5pm CEST

m.youtube.com/live/Yx-ZkLf...
TRIPLE BAM!!! With Josh, Luis and special guest Brandon Rohrer
YouTube video by StatQuest with Josh Starmer
m.youtube.com
August 20, 2026 at 2:31 PM
If you’re into such things, I’m going to be chatting with Josh Starmer and Luis Serrano (two of the best ML educators I know) in a YouTube livestream, answering viewer questions, at 11:00am EDT Thursday (tomorrow/today).
8am PDT, 3pm UTC, 5pm CEST

m.youtube.com/live/Yx-ZkLf...
TRIPLE BAM!!! With Josh, Luis and special guest Brandon Rohrer
YouTube video by StatQuest with Josh Starmer
m.youtube.com
August 20, 2026 at 1:18 AM
@ellecordova.bsky.social is a wonder. If you'd like to tell her so, pop over to Patreon and buy her a coffee.
www.patreon.com/cw/ellecordova
August 11, 2026 at 10:53 PM
My Artisanal Language Model for proofreading continues to evolve. Pairing forward and backward first-order Markov models is proving to be just good enough to merit further exploration.
brandonrohrer.com/alms_composi...
August 10, 2026 at 1:41 PM
RSS is the vinyl records of the web.
And the Current RSS reader is the $5000 turntable whose clean design matches the medium.
Except it’s only $10.
www.currentreader.app

Built by one designer with a vision ( @terrygodier.com ), Current shows what the web can be.
Current - A River of Reading
Current rethinks RSS for the modern reader. Your feeds flow like a river. No inbox anxiety, no unread counts. Just beautiful reading.
www.currentreader.app
August 8, 2026 at 12:35 PM
It's primary season Boston
It's time for a new generation of leadership! 50501 is proud to announce our newest Rising Star: Patrick Roath, who is a candidate for Massachusetts's 8th Congressional District. We the
People must stand together!
August 7, 2026 at 12:19 AM
There are several command line incantations that I have had to look up at least a dozen times.

Finding a string in Python files
grep -r --include \*.py 'string I am looking for' .

Find files by name
find . -name '*partial_name*'
August 4, 2026 at 1:21 AM
Reposted by Brandon Rohrer
Listening to the Dungeon Crawler Carl books with Soundbooth Theater leads to really long walks because I can't stop listening. They are a blast!
July 27, 2026 at 1:25 AM
Heads up ruff users - with the release of 0.16.0 this week the number of default rules went up from 59 to to 413. This means that if you're ruff version auto updates, your CI pipelines might start failing on you all of a sudden.
Ruff 0.16.0 - Astral's fast Python linter - came out a few days ago and increased the number of default-enabled rules from 59 to 413, which highlighted all sorts of problems across my projects (1618 in sqlite-utils alone) simonwillison.net/2026/Jul/25/...
Ruff v0.16.0
Astral shipped a significant new version of their Ruff Python linting tool a few days ago on July 23rd. I noticed today because my various CI jobs all started failing …
simonwillison.net
July 26, 2026 at 11:56 AM
Living small is part of the artisanal process. The constraints are not a barrier to the final product. They are an important shaping force. You can't come in at the end and magically shrink it. You can only build small if you start small and work with what you've got as you go.
brandonrohrer.org
July 25, 2026 at 8:12 PM
Artisanal Language Models take a step closer to being able to do proofreading.

Trained and hosted on an old Mac. These are small but mighty. Kind of. Aspirationally mighty, at least.
brandonrohrer.org/alms_data.html
It took a little time to figure out how to properly download Project Gutenberg texts at scale, but I finally set up three new training corpuses:
brandonrohrer.org
July 20, 2026 at 11:27 PM
the biggest difference I've noticed between data scientists and machine learning engineers is that MLEs will do absolutely anything to avoid looking at their data
July 8, 2026 at 1:29 AM
don't touch those! those are my emotional support patreons!
June 28, 2026 at 1:52 PM
My favorite thing to do is find a narrow problem that doesn't have a good solution, and then build one. Here are the highlights, from my blog.
brandonrohrer.org/blog.html#al...
June 28, 2026 at 12:24 AM
I shut down by online courses at End-to-End Machine Learning 18 months ago. Wrote a blog post and everything. But the platform I was using hasn't bothered to take them down. So they're just sitting there, all for free. Prego.

end-to-end-machine-learning.teachable.com
June 26, 2026 at 11:34 PM
Efficiency maxxing is problematic for lots of reasons but a fundamental reason is that it always implies near term efficiency.
June 21, 2026 at 11:39 PM
This next round of Artisanal Language Model improvements are mostly focused on efficiency rather than dramatic algorithmic improvements. This ALM is a proofreading tool for English prose.
brandonrohrer.org/alms_somm_sp...
After some trial and error with a few sparse representation concepts, I settled on one that takes advantage of one of Python's strengths: dictionaries. The sparse second-order model keeps two running dictionaries: one full of bigram counts and one for trigram counts.
brandonrohrer.org
June 21, 2026 at 9:49 PM