<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Chad Crawford</title>
		<link>https://cacrawford.org/</link>
		<description>Recent content on Chad Crawford</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Sat, 15 Aug 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://cacrawford.org/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>You can save $0.01/gal at the pump with this one trick</title>
				<link>https://cacrawford.org/posts/2026-08-15-random-vibe-experiments/</link>
				<pubDate>Sat, 15 Aug 2026 00:00:00 +0000</pubDate>
				<guid>https://cacrawford.org/posts/2026-08-15-random-vibe-experiments/</guid>
				<description>&lt;p&gt;I&amp;rsquo;ve been having a lot of fun vibe-coding with &lt;a href=&#34;https://marimo.io/&#34;&gt;marimo&#xA;notebooks&lt;/a&gt; recently. It also turns out that AI is&#xA;extremely helpful in collecting data when I&amp;rsquo;ve got some random&#xA;questions &amp;ndash; stuff that is publicly available but usually too much of&#xA;a pain in the ass to spend an evening researching.&lt;/p&gt;&#xA;&lt;p&gt;Surprisingly, AI is quite effective at identifying public data sources&#xA;and visualizing trends. I did find it still struggles with more&#xA;complex topics &amp;ndash; anything finance especially is a no-go &amp;ndash; but it is&#xA;particularly good at generating plots and doing some basic&#xA;comparisons.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ballmer&#39;s Guessing Game</title>
				<link>https://cacrawford.org/posts/the-steve-ballmer-problem/</link>
				<pubDate>Fri, 01 Nov 2024 00:00:00 +0000</pubDate>
				<guid>https://cacrawford.org/posts/the-steve-ballmer-problem/</guid>
				<description>&lt;!-- latex math --&gt;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css&#34; integrity=&#34;sha384-n8MVd4RsNIU0tAv4ct0nTaAbDJwPJzDEaqSD1odI+WdtXRGWt2kTvGFasHpSy3SV&#34; crossorigin=&#34;anonymous&#34;&gt;&#xA;&lt;script defer src=&#34;https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js&#34; integrity=&#34;sha384-XjKyOOlGwcjNTAIQHIpgOno0Hl1YQqzUOEleOLALmuqehneUG+vnGctmUb0ZY0l8&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xA;&lt;script defer src=&#34;https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js&#34; integrity=&#34;sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xA;&lt;script&gt;&#xA;    document.addEventListener(&#34;DOMContentLoaded&#34;, function() {&#xA;        document.body.innerHTML = document.body.innerHTML.replace(/\\\$/g, &#39;&lt;span&gt;$&lt;/span&gt;&#39;);&#xA;        renderMathInElement(document.body, {&#xA;          // customised options&#xA;          // • auto-render specific keys, e.g.:&#xA;          delimiters: [&#xA;              {left: &#39;$$&#39;, right: &#39;$$&#39;, display: true},&#xA;              {left: &#39;$&#39;, right: &#39;$&#39;, display: false},&#xA;              {left: &#39;\\(&#39;, right: &#39;\\)&#39;, display: true},&#xA;              {left: &#39;\\[&#39;, right: &#39;\\]&#39;, display: true}&#xA;          ],&#xA;          // • rendering keys, e.g.:&#xA;          throwOnError : false&#xA;        });&#xA;    });&#xA;&lt;/script&gt;&#xA;&lt;p&gt;John Graham-Cumming &lt;a href=&#34;https://blog.jgc.org/2024/09/steve-ballmers-binary-search-interview.html&#34;&gt;did some interesting analysis&#xA;recently&lt;/a&gt;&#xA;on a problem that Steve Ballmer had used for candidates interviewing&#xA;at Microsoft. The gist of the problem is as follows:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Nix module trick: Re-evaluating yourself</title>
				<link>https://cacrawford.org/posts/2024-03-30-self-implementing-module-systems/</link>
				<pubDate>Sat, 30 Mar 2024 00:00:00 +0000</pubDate>
				<guid>https://cacrawford.org/posts/2024-03-30-self-implementing-module-systems/</guid>
				<description>&lt;p&gt;This is a cool trick for those playing around with Nix&amp;rsquo;s module&#xA;system. While developing&#xA;&lt;a href=&#34;https://github.com/chadac/nix-config-modules/&#34;&gt;nix-config-modules&lt;/a&gt;, I&#xA;ran into a semi-unique issue: In the module system I defined a set of&#xA;&lt;em&gt;hosts&lt;/em&gt; and a separate, general set of &lt;em&gt;apps&lt;/em&gt;, and hosts could define&#xA;which &lt;em&gt;apps&lt;/em&gt; they could import.&lt;/p&gt;&#xA;&lt;p&gt;To generate this subset of &lt;code&gt;app&lt;/code&gt; configurations, I wanted to be able&#xA;to re-evaluate all of my &lt;code&gt;app&lt;/code&gt; modules with a host argument. In other&#xA;words, I wanted to be able to write modules like:&lt;/p&gt;</description>
			</item>
			<item>
				<title>A deeper dive on the 4% rule</title>
				<link>https://cacrawford.org/posts/2024-01-15-the-4p-rule/</link>
				<pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate>
				<guid>https://cacrawford.org/posts/2024-01-15-the-4p-rule/</guid>
				<description>&lt;h2 id=&#34;tldr&#34;&gt;tl;dr&lt;/h2&gt;&#xA;&lt;p&gt;There&amp;rsquo;s a common method for calculating how much you need to retire&#xA;called the 4% rule; but blindly trusting some rule can make it hard to&#xA;really understand what assumptions were made in generating that&#xA;rule.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve recently written up an analytical mathematical model that&#xA;accounts for both interest rates and inflation in the context of&#xA;calculating retirement annuities. I&amp;rsquo;m going to talk a bit about how&#xA;some of these basic rules actually derive their numbers, how it&#xA;applies to this extension, and what we can learn from using these&#xA;simple analytical tools.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Redefining Ownership</title>
				<link>https://cacrawford.org/posts/2022-02-24-redefining-ownership/</link>
				<pubDate>Fri, 24 Feb 2023 00:00:00 +0000</pubDate>
				<guid>https://cacrawford.org/posts/2022-02-24-redefining-ownership/</guid>
				<description>&lt;p&gt;Software developers are trained to solve problems. We want to write&#xA;code that makes life as simple and easy as possible, so that our&#xA;customers can do anything with a simple click of a button. However,&#xA;when we try to solve too many problems at once, the resulting product&#xA;solves none of them well. In this article, I&amp;rsquo;ll discuss how our&#xA;concept of &lt;em&gt;Ownership&lt;/em&gt; underestimates the customer and undermines our&#xA;products, and what we can do to be better owners.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Publications</title>
				<link>https://cacrawford.org/publications/</link>
				<pubDate>Tue, 05 Sep 2017 18:49:55 -0500</pubDate>
				<guid>https://cacrawford.org/publications/</guid>
				<description>&lt;h4 id=&#34;2018&#34;&gt;2018&lt;/h4&gt;&#xA;&lt;p&gt;Chad Crawford. &lt;em&gt;Agent-Based Probabilistic Models of Social Interaction&lt;/em&gt;. Doctoral Consortium. Proceedings of the 2018 International Conference on Autonomous Agents and Multi-Agent Systems. International Foundation for AAMAS, 2018. &lt;strong&gt;&lt;a href=&#34;https://dl.acm.org/citation.cfm?id=3237958&#34;&gt;[link]&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Chad Crawford, Rachna Nanda Kumar and Sandip Sen. &lt;em&gt;Resisting Exploitation Through Rewiring in Social Networks: Social Welfare Increase using Parity, Sympathy and Reciprocity&lt;/em&gt;. Short Paper. Proceedings of the 2018 International Conference on Autonomous Agents and Multi-Agent Systems. International Foundation for AAMAS, 2018. &lt;strong&gt;&lt;a href=&#34;https://dl.acm.org/citation.cfm?id=3238022&#34;&gt;[link]&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>About Me</title>
				<link>https://cacrawford.org/about/</link>
				<pubDate>Tue, 05 Sep 2017 12:42:22 -0500</pubDate>
				<guid>https://cacrawford.org/about/</guid>
				<description>&lt;p&gt;Fun links:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://cacrawford.org/albums/workstation&#34;&gt;My Workstation over the years&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Hi! I&amp;rsquo;m a software developer, previously a researcher at &lt;a href=&#34;http://www.ens.utulsa.edu/~sandip/&#34;&gt;Dr. Sandip&#xA;Sen&lt;/a&gt;&amp;rsquo;s lab. I&amp;rsquo;ve built frontends,&#xA;backends, devtools, libraries and as a scientist. My interests span&#xA;pretty much anything computing and math-related.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m primarily interested in enhancing the developer experience, so&#xA;you&amp;rsquo;ll probably see a lot of my writings and packages focused on that&#xA;stuff specifically. I use a lot of Python and Rust but I&amp;rsquo;ve worked in&#xA;10+ languages in the past and don&amp;rsquo;t plan on sticking to just those.&lt;/p&gt;</description>
			</item>
			<item>
				<title></title>
				<link>https://cacrawford.org/links/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://cacrawford.org/links/</guid>
				<description>&lt;h1 id=&#34;links&#34;&gt;Links&lt;/h1&gt;&#xA;&lt;p&gt;Stuff that I keep on losing track of but don&amp;rsquo;t want to re-google.&lt;/p&gt;&#xA;&lt;h2 id=&#34;nix&#34;&gt;Nix&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/rust/build-rust-package/default.nix&#34;&gt;buildRustPackage&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;[buildPythonPackage](&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>My Workstation over the Years</title>
				<link>https://cacrawford.org/albums/workstation/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://cacrawford.org/albums/workstation/</guid>
				<description>&lt;p&gt;Apparently over the years I&amp;rsquo;ve gotten into heavily customizing my&#xA;workstation, and it pretty much dominates all the photos I&amp;rsquo;ve taken&#xA;over the past decade or so. Since apparently I love my computers so&#xA;much, I thought I&amp;rsquo;d dedicate a page to them.&lt;/p&gt;&#xA;&lt;h1 id=&#34;2014&#34;&gt;2014&lt;/h1&gt;&#xA;&lt;h2 id=&#34;september---the-university-of-tulsa---tulsa-ok&#34;&gt;September - The University of Tulsa - Tulsa, OK&lt;/h2&gt;&#xA;&lt;img src=&#34;https://cacrawford.org/photos/workstation/2014.jpg&#34; style=&#34;border: 3px solid #EEE;&#34; /&gt;&#xA;&lt;p&gt;I&amp;rsquo;m pretty sure I was taking a picture of the Peanuts photo above my&#xA;desk. But you can at least still see my workstation setup: two&#xA;monitors, a bad keyboard, a mess on the desk (which is apparently the&#xA;only thing I keep consistent between photos) and Windows.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
