<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>sethrylan.org on Typing, Fast and Slow</title><link>https://www.sethrylan.org/</link><description>Recent content in sethrylan.org on Typing, Fast and Slow</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 12 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.sethrylan.org/index.xml" rel="self" type="application/rss+xml"/><item><title>Calibrates</title><link>https://www.sethrylan.org/projects/calibrates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/projects/calibrates/</guid><description/></item><item><title>SLO Burn</title><link>https://www.sethrylan.org/projects/slo-burn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/projects/slo-burn/</guid><description/></item><item><title>readis</title><link>https://www.sethrylan.org/projects/readis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/projects/readis/</guid><description/></item><item><title>boop</title><link>https://www.sethrylan.org/projects/boop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/projects/boop/</guid><description/></item><item><title>Counting with Less</title><link>https://www.sethrylan.org/projects/count-min-sketch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/projects/count-min-sketch/</guid><description/></item><item><title>Something Old, Something New</title><link>https://www.sethrylan.org/projects/something-old-something-new/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/projects/something-old-something-new/</guid><description/></item><item><title>Oxford</title><link>https://www.sethrylan.org/posts/2026-06-12-oxford/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2026-06-12-oxford/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2026-06/radcam.jpeg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Efficiency and Knowledge Transfer</title><link>https://www.sethrylan.org/posts/2026-05-26-efficient-knowledge/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2026-05-26-efficient-knowledge/</guid><description>&lt;p>I&amp;rsquo;ve been thinking more on the economics and efficiency of LLMs, and have been meaning to put together a John Henry-esque comparison of human and machine speeds.&lt;/p>
&lt;p>Mike Veerman&amp;rsquo;s lovely &lt;a href="https://mikeveerman.github.io/tokenspeed/?rate=30&amp;amp;mode=code" target="_blank" rel="noreferrer">tokenspeed&lt;/a> (&lt;a href="https://simonwillison.net/2026/May/20/tokens-per-second/" target="_blank" rel="noreferrer">via&lt;/a>) beat me to it, so I took the weekend to work on my interactive essay skills with Claude and build something new.&lt;/p>
&lt;p>→ &lt;a href="https://www.sethrylan.org/tpm/" >Efficient Knowledge — WPM &amp;amp; TPM, for humans and models&lt;/a>&lt;/p>
&lt;p>This should work work on most platforms that don&amp;rsquo;t have reduced-motion enabled.&lt;/p></description></item><item><title>Counting with Less</title><link>https://www.sethrylan.org/posts/2026-03-18-count-min-sketch/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2026-03-18-count-min-sketch/</guid><description>&lt;p>Count-Min Sketch is a beautiful data structure. It&amp;rsquo;s relatively young, first described by &lt;a href="https://dimacs.rutgers.edu/~graham/pubs/papers/cm-full.pdf" target="_blank" rel="noreferrer">Cormode and Muthukrishnan in 2003&lt;/a>. I came across this algorithm while looking at rate limiting strategies, and the core idea is so clever that I wanted to build something interactive around it.&lt;/p>
&lt;p>I promise there is very little math needed to follow along.&lt;/p>
&lt;p>We&amp;rsquo;re in our everything-is-a-bottleneck era. Traffic volumes have never been higher, and compute/memory has never been harder to come by. AI agents are using more and more of those resources, both directly via inference/training and through API calls on behalf of their handlers. I think probabilistic data structures like the count-min sketch will be increasingly important for building efficient systems that can handle higher volumes of data. And they also lean into the non-exact, non-deterministic nature of these systems, which is fun to learn about. It&amp;rsquo;s simple to expect exact answers from our data structures, but in many cases an estimate is good enough, and can be obtained much cheaper.&lt;/p></description></item><item><title>Simple Agent Patterns</title><link>https://www.sethrylan.org/posts/2026-03-09-simple-agent-patterns/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2026-03-09-simple-agent-patterns/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note">
 &lt;div class="flex items-center gap-2 font-semibold text-inherit">
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg">&lt;span class="relative block icon">&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/>&lt;/svg>
&lt;/span>&lt;/div>
 &lt;div class="grow">
 Note
 &lt;/div>
 &lt;/div>&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit">&lt;p>This was a short presentation on the current state of software engineering with agents.&lt;/p></description></item><item><title>Calibrate Your Confidence</title><link>https://www.sethrylan.org/posts/2026-03-04-calibrates/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2026-03-04-calibrates/</guid><description>&lt;p>Intuition is not about being right. It&amp;rsquo;s about knowing when you are.&lt;/p>
&lt;p>The world is changing at a quietly astonishing rate. Mental models update slowly - we carry assumptions from the last year, or the last decade. The data changes every day, and our intuition doesn&amp;rsquo;t keep up. We&amp;rsquo;re miscalibrated, and we don&amp;rsquo;t even know it.&lt;/p>
&lt;p>Calibrated thinking isn&amp;rsquo;t about having the right answer. It&amp;rsquo;s about holding beliefs with appropriate uncertainty, and updating them when evidence arrives. It&amp;rsquo;s a skill, and it&amp;rsquo;s trainable, and I wrote to game to practice.&lt;/p></description></item><item><title>Tools for Writing Tools for Agents</title><link>https://www.sethrylan.org/posts/2026-02-25-tools-for-writing-tools/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2026-02-25-tools-for-writing-tools/</guid><description>&lt;p>2026 is turning into a &lt;a href="https://www.sethrylan.org/posts/2026-02-23-a-good-year-for-clis/" >good year for CLIs&lt;/a>. And how do we help agents write CLIs for agents and humans to use? With more CLIs, of course!&lt;/p>
&lt;p>Here are two tools I&amp;rsquo;ve been building so my agents can write more tools.&lt;/p>

&lt;h2 class="relative group">Tool #1: Let the Agents Demo Their Work
 &lt;div id="tool-1-let-the-agents-demo-their-work" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tool-1-let-the-agents-demo-their-work" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>I was impressed by Simon Willison&amp;rsquo;s &lt;a href="https://github.com/simonw/showboat" target="_blank" rel="noreferrer">Showboat&lt;/a> and &lt;a href="https://github.com/simonw/rodney" target="_blank" rel="noreferrer">Rodney&lt;/a>. Showboat creates executable demo documents - markdown with code blocks that an agent runs, captures output, and a verifier can re-execute to confirm the results match. Rodney drives a persistent headless Chrome instance from the command line. Together, they let an agent prove its web-facing work.&lt;/p></description></item><item><title>A Good Year for CLIs</title><link>https://www.sethrylan.org/posts/2026-02-23-a-good-year-for-clis/</link><pubDate>Mon, 23 Feb 2026 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2026-02-23-a-good-year-for-clis/</guid><description>&lt;p>My Christmas &lt;a href="https://www.sethrylan.org/posts/2025-12-22-year-of-skills/" >wish&lt;/a> was for a more complete Datadog CLI:&lt;/p>
&lt;blockquote>&lt;p>a better version of dogshell that supports read/write, OAuth, and a more intuitive interface.&lt;/p>&lt;/blockquote>&lt;p>And the folks at Datadog shipped it! &lt;a href="https://github.com/datadog-labs/pup" target="_blank" rel="noreferrer">Pup&lt;/a> is a &lt;del>Go&lt;/del> Rust CLI for the Datadog API: 283+ subcommands, OAuth2, and output formatting designed for both humans and AI agents. It&amp;rsquo;s everything I wanted, and more.&lt;/p>

&lt;h2 class="relative group">What Pup Does
 &lt;div id="what-pup-does" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-pup-does" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Designed for progressive disclosure:&lt;/p></description></item><item><title>2026: The Year of Skills</title><link>https://www.sethrylan.org/posts/2025-12-22-year-of-skills/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2025-12-22-year-of-skills/</guid><description>&lt;p>This was MCP&amp;rsquo;s year. We re-arranged our schedules to accomodate the highly anticipated server ships from our vendors. The promise of connecting agents to tools was irresistible. We wanted to see it, we wanted to use it, we wanted to build on it.&lt;/p>
&lt;p>It wasn&amp;rsquo;t all good. MCP, as a protocol and a suite of products, is half-vibes. It mostly works, but I couldn&amp;rsquo;t tell you how. And that hasn&amp;rsquo;t stopped anyone from unlocking an incredible amount of value by letting their agents churn through tokens and make API calls on their behalf.&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2025-10-17-switzerland/</link><pubDate>Fri, 17 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2025-10-17-switzerland/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2025-10/IMG_9096.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2025-10/DSCF6427.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2024-09-12-alesund/</link><pubDate>Thu, 12 Sep 2024 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2024-09-12-alesund/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2024-09/IMG_6494.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2024-09/IMG_6275.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2024-06-16-elk-knob/</link><pubDate>Sun, 16 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2024-06-16-elk-knob/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2024-06/IMG_5830.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Things I learned in 2023</title><link>https://www.sethrylan.org/posts/2023-12-31-what-i-learned/</link><pubDate>Sun, 31 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2023-12-31-what-i-learned/</guid><description>&lt;ol>
&lt;li>
&lt;p>Face muscles are the &lt;a href="https://alok.github.io/2022/11/09/dissection/" target="_blank" rel="noreferrer">only muscles&lt;/a> directly attached to the skin.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Flint forms in nodules, which take the &lt;a href="http://www.geoessex.org.uk/wp-content/uploads/2020/06/geoessex_factsheet_3_-_flint.pdf" target="_blank" rel="noreferrer">shape of&lt;/a> marine animal burrows from 80MA. These burrows would fill with chalk, and flint would form in a sedimentary process.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The universe is beige. &lt;a href="https://en.wikipedia.org/wiki/Cosmic_latte" target="_blank" rel="noreferrer">Cosmic latte&lt;/a>, &amp;ldquo;the average color of the universe as perceived from the Earth.&amp;rdquo; In hex, #FFF8E7.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2023-09-13-chimayo/</link><pubDate>Sat, 02 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2023-09-13-chimayo/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2023-12/IMG_5114.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Chimayo</title><link>https://www.sethrylan.org/posts/2023-12-02-photostream/</link><pubDate>Wed, 13 Sep 2023 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2023-12-02-photostream/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2023-09/chimayo.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2023-07-15-photostream/</link><pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2023-07-15-photostream/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2023-07/0000013044287349.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Things I learned in 2022</title><link>https://www.sethrylan.org/posts/2022-12-31-what-i-learned/</link><pubDate>Sat, 31 Dec 2022 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2022-12-31-what-i-learned/</guid><description>&lt;ul>
&lt;li>
&lt;p>Cotton was &lt;a href="https://learn.genetics.utah.edu/content/cotton/evolution/" target="_blank" rel="noreferrer">independently domesticated&lt;/a> in the Old and New Worlds.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Just more than half of total carbon emissions came &lt;a href="https://ieep.eu/news/co2-emissions-need-to-be-reduced-twice-as-fast-as-the-rate-they-have-gone-up-since-1990" target="_blank" rel="noreferrer">after 1991&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The dwarf sperm whale is unique among aquatic mammals for being able to &lt;a href="https://www.fisheries.noaa.gov/species/dwarf-sperm-whale" target="_blank" rel="noreferrer">release &amp;ldquo;ink&amp;rdquo;&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Hummingbirds and bees &lt;a href="https://conversationswithtyler.com/episodes/richard-prum/" target="_blank" rel="noreferrer">generate a static field&lt;/a> during flight that allows them to electrodynamically sense flowers and when that flower was last harvested.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>One influenza variant may have &lt;a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9524051/" target="_blank" rel="noreferrer">gone extinct&lt;/a> between 2020 and 2022.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>“&lt;a href="https://www.science.org/content/blog-post/perverse-polymorphism" target="_blank" rel="noreferrer">Perverse polymorphism&lt;/a>” is a phenomenon where the crystalline form of a molecule is replaced by a more energetically favorable one, like ice-nine in Vonnegut&amp;rsquo;s novel &lt;em>Ice Nine&lt;/em>. In real life, this can make some crystals impossible to manufacture, because the molecules will revert to the &amp;ldquo;infectious&amp;rdquo; form in the presence of microscopic seed crystals. In 1998, the HIV antiretroviral &lt;a href="https://en.wikipedia.org/wiki/Ritonavir" target="_blank" rel="noreferrer">Ritonavir&lt;/a> disappeared from the market due to Form II seed crystals permeating the air of the manufacturing environment. Abbott, the manufacturer, spent $250 million trying to remove the Form II contamination. The problem was eventually solved&amp;hellip; by using a gelatin capsule to deliver the new form of the molecule (&lt;a href="https://theprepared.org/newsletter-archive/2022-02-07" target="_blank" rel="noreferrer">source&lt;/a>).&lt;/p></description></item><item><title>Chicago</title><link>https://www.sethrylan.org/posts/2022-07-02-chicago/</link><pubDate>Sat, 02 Jul 2022 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2022-07-02-chicago/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2022-07/IMG_3420.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2022-07/IMG_3512.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Cassis</title><link>https://www.sethrylan.org/posts/2022-03-25-cassis/</link><pubDate>Fri, 25 Mar 2022 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2022-03-25-cassis/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2022-03/IMG_3030.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2022-03/IMG_3041.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2021-12-19-photostream/</link><pubDate>Sun, 19 Dec 2021 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2021-12-19-photostream/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2021-12/IMG_2522.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Things I learned in 2021</title><link>https://www.sethrylan.org/posts/2021-12-03-what-i-learned/</link><pubDate>Fri, 03 Dec 2021 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2021-12-03-what-i-learned/</guid><description>&lt;ol>
&lt;li>
&lt;p>There are only &lt;a href="https://en.wikipedia.org/wiki/List_of_bobsleigh,_luge,_and_skeleton_tracks" target="_blank" rel="noreferrer">15&lt;/a> bobsled tracks in the world.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Company Demonyms: &lt;a href="https://en.wiktionary.org/wiki/Googler" target="_blank" rel="noreferrer">Googler&lt;/a> (also Noogler, Xoogler, and &lt;a href="https://blog.google/inside-google/life-at-google/working-home-ruff-dooglers-make-it-little-better/" target="_blank" rel="noreferrer">Doogler&lt;/a> and &lt;a href="https://diversity.google/commitments/" target="_blank" rel="noreferrer">Greygler&lt;/a>), &lt;a href="https://en.wiktionary.org/wiki/Microsoftie" target="_blank" rel="noreferrer">Microsoftie&lt;/a>, &lt;a href="https://careers.twitter.com/en/tweep-life.html" target="_blank" rel="noreferrer">Tweep&lt;/a>, &lt;a href="https://www.amazon.jobs/amazonians" target="_blank" rel="noreferrer">Amazonian&lt;/a>, &lt;a href="https://blog.zoom.us/how-zoomies-balance-working-from-home-during-a-pandemic/" target="_blank" rel="noreferrer">Zoomie&lt;/a>, &lt;a href="https://github.com/about/diversity/communities-of-belonging" target="_blank" rel="noreferrer">Hubber&lt;/a>, &lt;a href="https://twitter.com/okta/status/1338556408980180993" target="_blank" rel="noreferrer">Oktanauts&lt;/a>, &lt;a href="https://twitter.com/goepoch/status/1138341366373601280" target="_blank" rel="noreferrer">Shopifolk&lt;/a>, &lt;a href="https://www.eonline.com/news/555282/trendsetters-at-work-pinterest" target="_blank" rel="noreferrer">Pinployee&lt;/a>, &lt;a href="https://www.twilio.com/blog/2015/05/whats-it-like-to-be-a-twilion.html" target="_blank" rel="noreferrer">Twilion&lt;/a>, &lt;a href="https://blog.sentry.io/2020/12/21/sentaurs-and-celebrations" target="_blank" rel="noreferrer">Sentaur&lt;/a>, &lt;a href="http://mikepope.com/blog/DisplayBlog.aspx?permalink=2429" target="_blank" rel="noreferrer">Tabloid&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>All animals combined &lt;a href="https://www.nature.com/articles/s41586-020-3010-5.epdf" target="_blank" rel="noreferrer">weigh&lt;/a> 4 gigatonnes. All &lt;a href="https://github.com/milo-lab/anthropogenic_mass" target="_blank" rel="noreferrer">plastics&lt;/a>, 8GT.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Sperm whale oil was &lt;a href="https://www.nytimes.com/1975/04/17/archives/transmission-problems-in-cars-linked-to-ban-on-whale-killing.html" target="_blank" rel="noreferrer">used as an automatic transmission oil&lt;/a> additive until the 1970s.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>BP runs their own &lt;a href="https://www.infrapedia.com/app" target="_blank" rel="noreferrer">fiber backbone&lt;/a> through the Gulf of Mexico.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Staghorn ferns &lt;a href="https://blog.pnas.org/2021/06/a-popular-household-fern-may-be-the-first-known-eusocial-plant/" target="_blank" rel="noreferrer">are eusocial&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Marsquakes &lt;a href="https://www.sciencedirect.com/science/article/pii/S0012821X2100426X" target="_blank" rel="noreferrer">are seasonal&lt;/a> and occur most frequently in the winter.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&amp;ldquo;Geofoam&amp;rdquo; is a &lt;a href="https://theprepared.org/features-feed/on-geofoam" target="_blank" rel="noreferrer">marketing term&lt;/a> for styrofoam blocks used in large scale engineering.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://statmodeling.stat.columbia.edu/2019/01/28/bullshit-asymmetry-principle/" target="_blank" rel="noreferrer">Brandolini&amp;rsquo;s Law&lt;/a> states that it takes a lot more energy to refute bullshit than to produce it. Hence, the world is full of unrefuted bullshit. Also know as the Bullshit Asymmetry Principle.&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2021-03-01-photostream/</link><pubDate>Mon, 01 Mar 2021 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2021-03-01-photostream/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2021-03/IMG_1902.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2020-12-03-photostream/</link><pubDate>Thu, 03 Dec 2020 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2020-12-03-photostream/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2020-12/IMG_1721.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2018-06-13-baltimore/</link><pubDate>Wed, 13 Jun 2018 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2018-06-13-baltimore/</guid><description>&lt;h3>Baltimore&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2018-06/IMG_8395.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2018-06/IMG_9429.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2018-06/IMG_9027.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2018-03-17-costa-rica/</link><pubDate>Sat, 17 Mar 2018 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2018-03-17-costa-rica/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2018-03/irazu.jpg"
 >&lt;/figure>
&lt;/p>
&lt;h3>Irazú&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2018-03/playon.jpg"
 >&lt;/figure>
&lt;/p>
&lt;h3>Playón, CR&lt;/h3>
&lt;video width="100%" autoplay loop>
 &lt;source src="https://www.sethrylan.org/images/2018-03/manuel-antonio.mp4" type="video/mp4">
&lt;/video></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2017-11-21-catalonia/</link><pubDate>Tue, 21 Nov 2017 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2017-11-21-catalonia/</guid><description>&lt;h3>Valencia&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2017-11/1-Carrer-de-Baix-IMG_6827.jpg"
 >&lt;/figure>
&lt;/p>
&lt;h3>Barcelona&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2017-11/DSC02834.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Grad School (the good parts)</title><link>https://www.sethrylan.org/posts/2017-08-09-notes-from-school/</link><pubDate>Wed, 09 Aug 2017 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2017-08-09-notes-from-school/</guid><description>&lt;h5 class="relative group">On Abstractions
 &lt;div id="on-abstractions" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#on-abstractions" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h5>
&lt;blockquote>&lt;p>Systems designers are abstraction merchants.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>&lt;/blockquote>&lt;blockquote>&lt;p>Nothing is so difficult it cannot be solved by another level of indirection.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>&lt;/blockquote>
&lt;h5 class="relative group">On Files
 &lt;div id="on-files" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#on-files" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h5>
&lt;p>The life of an average file is tedious&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> and brief&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>. Sequential access is rarely sequential with multiple threads.&lt;/p>

&lt;h5 class="relative group">On Queueing
 &lt;div id="on-queueing" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#on-queueing" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h5>
&lt;p>Little&amp;rsquo;s Law has bizarre and counter-intuitive conclusions. Suppose bank customers take an average (exponential distribution) of 10 minutes to serve and they arrive at the rate of 5.8 per hour. With 1 teller, the average wait time is over 5 hours. With 2 tellers, it is &lt;b>3 minutes&lt;/b>.&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2017-04-15-italia/</link><pubDate>Sat, 15 Apr 2017 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2017-04-15-italia/</guid><description>&lt;h3>Verona&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2017-04/DSC02081.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2017-04/DSC02059.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2017-01-15-island/</link><pubDate>Sun, 15 Jan 2017 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2017-01-15-island/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2017-01/HofVatnsdal.jpg"
 >&lt;/figure>
&lt;/p>
&lt;h3>Reykholt, Borgarfjörður&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2017-01/reykholt.jpg"
 >&lt;/figure>
&lt;/p>
&lt;h3>Akureyri&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2017-01/akureyri.jpg"
 >&lt;/figure>
&lt;/p>
&lt;h3>Dettifoss, Skútustaðahreppur&lt;/h3>
&lt;video width="100%" autoplay loop>
 &lt;source src="https://www.sethrylan.org/images/2017-01/dettifoss.mov" type="video/mp4">
&lt;/video></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2016-06-26-photostream/</link><pubDate>Sun, 26 Jun 2016 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2016-06-26-photostream/</guid><description>&lt;h3>Montreal, Quebec&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2016-06/montreal.jpg"
 >&lt;/figure>
&lt;/p>
&lt;h3>Indian Pipe&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2016-06/monotropa_uniflora.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2016-01-04-photostream/</link><pubDate>Mon, 04 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2016-01-04-photostream/</guid><description>&lt;h3>Fox Theatre, Detroit&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2016-01/fox_theatre.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2015-11-01-photostream/</link><pubDate>Sun, 01 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2015-11-01-photostream/</guid><description>&lt;h3>Earl's Ford, Georgia&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2015-11/earls_ford_georgia.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2015-06-10-photostream/</link><pubDate>Wed, 10 Jun 2015 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2015-06-10-photostream/</guid><description>&lt;h1 class="relative group">{{ page.title }}
 &lt;div id="-pagetitle-" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-pagetitle-" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h1>
&lt;hr>
&lt;h3>Edinburgh&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2015-06/copper_beeches.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2015-06/DSC_0329.jpg"
 >&lt;/figure>
&lt;/p>
&lt;h3>Giardini Pubblici&lt;/h3>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2015-06/giardini_pubblici_2.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Workarea</title><link>https://www.sethrylan.org/posts/2014-05-15-workarea/</link><pubDate>Thu, 15 May 2014 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2014-05-15-workarea/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2014-03/workarea_30percent.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2014-03-10-photostream/</link><pubDate>Mon, 10 Mar 2014 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2014-03-10-photostream/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2014-03/IMG_7216.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2014-03/IMG_7267.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2014-03/IMG_7346.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2014-03/IMG_7377.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Photostream</title><link>https://www.sethrylan.org/posts/2014-02-24-photostream/</link><pubDate>Mon, 24 Feb 2014 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2014-02-24-photostream/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2014-02/IMG_1520.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2014-02/IMG_1544.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2014-02/IMG_1550.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>Something Old, Something New</title><link>https://www.sethrylan.org/posts/2013-12-15-something-old-something-new/</link><pubDate>Sun, 15 Dec 2013 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2013-12-15-something-old-something-new/</guid><description>&lt;meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
&lt;link href="https://api.mapbox.com/mapbox-gl-js/v3.12.0/mapbox-gl.css" rel="stylesheet">
&lt;script src="https://api.mapbox.com/mapbox-gl-js/v3.12.0/mapbox-gl.js">&lt;/script>
&lt;style>
#features {
 position: absolute;
 top: 0;
 right: 0;
 width: auto;
 padding: 0.5rem;
 z-index: 1;
 background: rgba(255, 255, 255, 0.8);
}
#map { 
 position: relative;
 width: 100%;
 height: 800px;
 margin-bottom: 20px;
}
&lt;/style>
&lt;p>Choropleth map of the age of structures in the City of Charleston, &lt;a href="http://www.charleston-sc.gov/DocumentCenter/View/1270" target="_blank" rel="noreferrer">Old and Historic Districts&lt;/a>.&lt;/p>
&lt;div id="map-container" style="position: relative;">
 &lt;div id="map">&lt;/div>
 &lt;pre id="features">&lt;/pre>
&lt;/div>
&lt;script>
 mapboxgl.accessToken = 'pk.eyJ1Ijoic2V0aHJ5bGFuIiwiYSI6IlUzM0JHTEEifQ.JYoyI_v_M3aeZTiPD_7KyA';
 const map = new mapboxgl.Map({
 container: 'map',
 style: 'mapbox://styles/sethrylan/cktp5sr5n0kee17t3bneo23wg',
 center: [-79.946670, 32.792113],
 zoom: 13,
 attributionControl: false
 });
 map.addControl(new mapboxgl.AttributionControl(), 'top-left');

 map.on('mousemove', (e) => {
 const features = map.queryRenderedFeatures(e.point);

 const year = features
 .map(feature => feature.properties['YEAR_BUILT'])
 .filter(Number);

 // Write object as string with an indent of two spaces.
 document.getElementById('features').innerHTML = JSON.stringify(
 year[0] ? year[0] : 0,
 null,
 2
 );
 });

&lt;/script></description></item><item><title>Weekend Project - Bookcase Door</title><link>https://www.sethrylan.org/posts/2013-10-20-bookcase-door/</link><pubDate>Sun, 20 Oct 2013 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2013-10-20-bookcase-door/</guid><description>&lt;h3 class="relative group">Materials
 &lt;div id="materials" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#materials" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;p>Dimensional lumber in nominal sizes.&lt;/p>
&lt;ul>
&lt;li>1x6 (36 feet)&lt;/li>
&lt;li>1x5 (16 feet)&lt;/li>
&lt;li>1x2 (2 feet)&lt;/li>
&lt;li>1/4&amp;quot; luan&lt;/li>
&lt;li>paint (shelf and wall)&lt;/li>
&lt;li>2 1/2&amp;quot; trim nails&lt;/li>
&lt;li>sandpaper&lt;/li>
&lt;li>1 1/2&amp;quot; rollers&lt;/li>
&lt;/ul>

&lt;h3 class="relative group">Tools
 &lt;div id="tools" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tools" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;ul>
&lt;li>Compound Miter Saw&lt;/li>
&lt;li>Drill/Driver&lt;/li>
&lt;li>Pneumatic Finish Nailer&lt;/li>
&lt;li>Carpenter&amp;rsquo;s Square&lt;/li>
&lt;li>Level&lt;/li>
&lt;li>.5&amp;quot; Chisel&lt;/li>
&lt;/ul>

&lt;h3 class="relative group">Total Cost
 &lt;div id="total-cost" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#total-cost" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;ul>
&lt;li>~$170&lt;/li>
&lt;li>20 hours&lt;/li>
&lt;/ul>
&lt;p>Obviously, before you begin the project you should check your local building codes. Usually, there are no issues as long as your are not modifying the rough opening dimensions or changing an egress door.&lt;/p></description></item><item><title>FindBugs for Android</title><link>https://www.sethrylan.org/posts/2013-07-14-gradle-android-findbugs/</link><pubDate>Sun, 14 Jul 2013 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2013-07-14-gradle-android-findbugs/</guid><description>&lt;p>The very useful code quality plugins for Gradle (&lt;a href="http://www.gradle.org/docs/current/userguide/checkstyle_plugin.html" target="_blank" rel="noreferrer">Checksytle&lt;/a>, &lt;a href="http://www.gradle.org/docs/current/userguide/findbugs_plugin.html" target="_blank" rel="noreferrer">FindBugs&lt;/a>, &lt;a href="http://www.gradle.org/docs/current/userguide/pmd_plugin.html" target="_blank" rel="noreferrer">PMD&lt;/a>, &lt;a href="http://www.gradle.org/docs/current/userguide/userguide.html" target="_blank" rel="noreferrer">etc&lt;/a>) expect to have the Java plugin applied, which is incompatible with the new &lt;a href="http://tools.android.com/tech-docs/new-build-system/" target="_blank" rel="noreferrer">Android gradle build system&lt;/a>.
Some developers, like Netflix, resolve this problem by &lt;a href="https://github.com/Netflix/denominator/blob/8ca41a1434276c9927c406f436aa95928782275b/gradle/check.gradle" target="_blank" rel="noreferrer">omitting the plugins&lt;/a> from their otherwise &lt;a href="https://github.com/Netflix/gradle-template" target="_blank" rel="noreferrer">standardized build&lt;/a> process. &lt;a href="http://flow.apphance.com/" target="_blank" rel="noreferrer">Others&lt;/a> have tried to create a build system inside another build system, at which point you can have whatever plugins you want, and most use a &lt;a href="https://github.com/grails/grails-core/blob/master/gradle/findbugs.gradle" target="_blank" rel="noreferrer">wrapper&lt;/a> around the Ant tasks which predate Gradle. Behind the scenes, this is what the Gradle plugins do anyway.&lt;/p></description></item><item><title>IntelliJ Scala Plugin</title><link>https://www.sethrylan.org/posts/2013-07-05-intellij-scala-plugin/</link><pubDate>Fri, 05 Jul 2013 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2013-07-05-intellij-scala-plugin/</guid><description>&lt;p>The &lt;a href="http://blog.jetbrains.com/scala/" target="_blank" rel="noreferrer">IntelliJ Scala plugin v0.13.286&lt;/a> does a few things which were previously manual steps. This means that following the old documentation can lead to a few unhelpful error messages, when all you want is syntax highlighting, autocomplete and the occassional REPL support.&lt;/p>
&lt;p>Assuming you start with a Gradle project using the Scala plugin and clean IntelliJ IDEA 12.1.4 install, the steps to add Scala support are:&lt;/p>
&lt;ol>
&lt;li>&lt;code>File&lt;/code> -&amp;gt; &lt;code>Import Project&lt;/code>. Select folder with parent build.gradle.&lt;/li>
&lt;li>Import project from external model&lt;br>
&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2013-07/intellij-import.png"
 >&lt;/figure>
&lt;/li>
&lt;li>Select whether to use the gradle wrapper or a local installation, then finish import with default settings.&lt;/li>
&lt;li>Right-click parent folder in project structure, select &lt;code>Add Framework Support...&lt;/code>.&lt;br>
&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2013-07/add-framework.png"
 >&lt;/figure>
&lt;/li>
&lt;li>Depending on your Scala installation, some expected folders may be missing.&lt;br>
&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2013-07/add-scala-framework.png"
 >&lt;/figure>
&lt;/li>
&lt;/ol>
&lt;p>And finished. If you had existing scala-compiler/scala-library global libraries, or tried following &lt;a href="http://devnet.jetbrains.com/thread/290032" target="_blank" rel="noreferrer">some&lt;/a> of &lt;a href="http://stackoverflow.com/questions/9563342/how-to-run-scala-code-on-intellij-idea-11" target="_blank" rel="noreferrer">the older&lt;/a> plugin &lt;a href="http://confluence.jetbrains.com/display/SCA/Getting&amp;#43;Started&amp;#43;with&amp;#43;IntelliJ&amp;#43;IDEA&amp;#43;Scala&amp;#43;Plugin" target="_blank" rel="noreferrer">documentation&lt;/a>, then you will likely find errors such as&lt;/p></description></item><item><title>ScalaConsole with Gradle</title><link>https://www.sethrylan.org/posts/2013-07-02-scala-gradle-scalaconsole/</link><pubDate>Tue, 02 Jul 2013 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2013-07-02-scala-gradle-scalaconsole/</guid><description>&lt;p>The usual build tool for Scala is &lt;a href="http://www.scala-sbt.org/" target="_blank" rel="noreferrer">SBT&lt;/a>, but I&amp;rsquo;ve been trying to stay consistent with Gradle builds. Of course, the most lacking feature is a decent REPL for manipulating the main/test classes, and there appear to be two possible solutions to this problem.&lt;/p>
&lt;hr>

&lt;h3 class="relative group">ScalaConsole in the Gradle scala plugin
 &lt;div id="scalaconsole-in-the-gradle-scala-plugin" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#scalaconsole-in-the-gradle-scala-plugin" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;p>The &lt;a href="http://code-review.gradle.org/browse/Gradle/subprojects/scala/src/main/groovy/org/gradle/api/plugins/scala/ScalaBasePlugin.groovy?hb=true" target="_blank" rel="noreferrer">ScalaBasePlugin&lt;/a> for Gradle defines the &lt;code>scalaConsole&lt;/code> and &lt;code>scalaTestConsole&lt;/code> tasks, which aren&amp;rsquo;t widely used (or documented) due to &lt;a href="http://forums.gradle.org/gradle/topics/scalaconsole" target="_blank" rel="noreferrer">known issues&lt;/a>. In particular, you have to make a few changes before the feature is usable. In order the fix the&lt;/p></description></item><item><title>Khan Academy</title><link>https://www.sethrylan.org/posts/2012-09-13-khan-academy/</link><pubDate>Thu, 13 Sep 2012 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2012-09-13-khan-academy/</guid><description>&lt;p>After finishing the Khan Academy math exercises in ~80 hours, I made a few notes regarding &lt;a href="http://en.wikipedia.org/wiki/Practice_(learning_method)#Deliberate_practice">deliberate practice&lt;/a> and its place in online learning media. Khan Academy (KA) focuses far more on rout work that Udacity or Coursera, with most of modules requiring one of 1-3 techniques for solving. The adaptive training plan mostly makes up for this, but one could easily accomplish every KA exercise without any understanding of the background.&lt;/p></description></item><item><title>Arduino Barometric Altimeter</title><link>https://www.sethrylan.org/posts/2012-07-31-arduino-altimeter/</link><pubDate>Tue, 31 Jul 2012 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2012-07-31-arduino-altimeter/</guid><description>&lt;p>Using Sparkfun&amp;rsquo;s BMP085 sensor board (&lt;a href="https://www.sparkfun.com/products/9694" target="_blank" rel="noreferrer">SEN-09694&lt;/a>), I put together some quick Arduino code to measure temperature-adjusted barometric pressure, store the data on an SD card using Adafruit&amp;rsquo;s data logger shield (&lt;a href="https://www.adafruit.com/products/243" target="_blank" rel="noreferrer">v1.0&lt;/a>), and then calculate altitude. This is a pretty simple project. In fact, the biggest challenge was getting a suitable formula for calculating altitude from atmospheric pressure.&lt;/p>
&lt;p>Testing the sensor was very simple, following the &lt;a href="http://www.sparkfun.com/tutorials/253" target="_blank" rel="noreferrer">tutorial&lt;/a> and &lt;a href="http://www.sparkfun.com/tutorial/Barometric/Example1-sch.PNG" target="_blank" rel="noreferrer">schematic&lt;/a> on Sparkfun&amp;rsquo;s site with breadboard wiring.&lt;/p></description></item><item><title>Multiplex Easy Star Build</title><link>https://www.sethrylan.org/posts/2012-07-17-multiplex-easy-star-build/</link><pubDate>Tue, 17 Jul 2012 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2012-07-17-multiplex-easy-star-build/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2012-07/IMG_0919.jpg"
 >&lt;/figure>
&lt;/p>
&lt;hr>

&lt;h2 class="relative group">Materials:
 &lt;div id="materials" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#materials" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Where possible, I&amp;rsquo;ve listed an online retailer, but some of the generic items may require searching.&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/2012-07/IMG_0847.jpg"
 >&lt;/figure>
&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://www.amazon.com/gp/product/B000BMSF22/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B000BMSF22&amp;amp;linkCode=as2&amp;amp;tag=sethrylan-20" target="_blank" rel="noreferrer">Easy Star Electric Kit&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.amazon.com/gp/product/B003T6XGNU/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B003T6XGNU&amp;amp;linkCode=as2&amp;amp;tag=sethrylan-20" target="_blank" rel="noreferrer">Hitec HS-65HB Micro Karbo Gear Servo&lt;/a> (1.8kg/11g) x2&lt;/li>
&lt;li>&lt;a href="http://www.hobbyking.com/hobbyking/store/__2164__TURNIGY_Plush_30amp_Speed_Controller.html" target="_blank" rel="noreferrer">TURNIGY Plush 30amp Speed Controller&lt;/a> (25g)&lt;/li>
&lt;li>&lt;a href="http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=15187" target="_blank" rel="noreferrer">S2838-2800 Brushless Inrunner&lt;/a> (2800kv)&lt;/li>
&lt;li>&lt;a href="http://www.amazon.com/gp/product/B00006RSP1/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B00006RSP1&amp;amp;linkCode=as2&amp;amp;tag=sethrylan-20" target="_blank" rel="noreferrer">Industrial Strength Velcro&lt;/a>&lt;/li>
&lt;li>Boyd Red Eamel Spray Paint&lt;/li>
&lt;li>Testors Gloss Gray (1238) Enamel Spray Paint&lt;/li>
&lt;li>Spinner/Collet&lt;/li>
&lt;li>12awg wire&lt;/li>
&lt;li>3mm basswood&lt;/li>
&lt;li>1.3mm x 4.5mm carbon fiber strip&lt;/li>
&lt;li>5.3mm hollow carbon fiber tube&lt;/li>
&lt;li>2.5mm solid carbon fiber tube&lt;/li>
&lt;li>&lt;a href="http://www.amazon.com/gp/product/B0006O34O4/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B0006O34O4&amp;amp;linkCode=as2&amp;amp;tag=sethrylan-20" target="_blank" rel="noreferrer">6x4e APC propeller&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.hobbyking.com/hobbyking/store/__8282__Nylon_Pinned_Hinge_16x28_5_10pcs_.html" target="_blank" rel="noreferrer">Nylon hinges&lt;/a>&lt;/li>
&lt;li>5/16&amp;quot; zinc washer&lt;/li>
&lt;/ul>
&lt;p>Prior to the build, I tested three types of glue:&lt;/p></description></item><item><title>ST101 Homework in R</title><link>https://www.sethrylan.org/posts/2012-07-04-st101-homework/</link><pubDate>Wed, 04 Jul 2012 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/posts/2012-07-04-st101-homework/</guid><description>&lt;p>As part of Udacity&amp;rsquo;s &lt;a href="http://www.udacity.com/view#Course/st101/" target="_blank" rel="noreferrer">ST101&lt;/a>, I&amp;rsquo;ve started completing the homeworks in R using &lt;a href="http://rstudio.org/" target="_blank" rel="noreferrer">RStudio&lt;/a>. Below is the solution for homework 2.6:&lt;/p>
&lt;pre>&lt;code>print.matrix &amp;lt;- function(m){
 write.table(format(m, justify=&amp;quot;right&amp;quot;),
 row.names=T, col.names=T, quote=F)
}
p_loaded = 0.1
p_hfair = 0.5
p_hloaded = 0.9
cells &amp;lt;- c(4, 0,10, 0, 20, 0, 0, 5, 2, 3)
rnames &amp;lt;- c(&amp;quot;# heads&amp;quot;, &amp;quot;# tails&amp;quot;)
# creates a list of in form (&amp;quot;#1&amp;quot;, &amp;quot;#2&amp;quot;, &amp;quot;#n&amp;quot;...) to n=number of trials
cnames &amp;lt;- c(paste(&amp;quot;#&amp;quot;, 1:(length(cells)/2), sep = &amp;quot;&amp;quot;)) 
trials &amp;lt;- matrix(cells, nrow=2, ncol=5, byrow=FALSE, dimnames=list(rnames, cnames))
#print(trials)
 
# P(fair|flips) = (P(flips|fair) * P(fair))/ P(flips)
 
for (trial in 1:ncol(trials)) {
 # joint probablities for fair and loaded coins given observed results
 jp_fair = trials[1, trial] * p_hfair + trials[2, trial] * (1-p_hfair)
 jp_loaded = trials[1, trial] * p_hloaded + trials[2, trial] * (1-p_hloaded)
 if (jp_fair &amp;lt; jp_loaded) {
 print(paste(&amp;quot;trial &amp;quot;, trial, &amp;quot; is &amp;lt; 0.5 probable for a fair coin!&amp;quot;, sep=&amp;quot;&amp;quot;))
 } 
}
&lt;/code>&lt;/pre></description></item><item><title>Bio</title><link>https://www.sethrylan.org/bio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.sethrylan.org/bio/</guid><description>&lt;p>I make things and live in Charleston, South Carolina&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://www.sethrylan.org/images/beachy.jpg"
 >&lt;/figure>
&lt;/p></description></item></channel></rss>