<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Stable Sort on</title><link>/</link><description>Recent content in Stable Sort on</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 13 Sep 2025 00:00:00 +0000</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml"/><item><title>The dark forest of political communication</title><link>/the-dark-forest-of-political-communication/</link><pubDate>Sat, 13 Sep 2025 00:00:00 +0000</pubDate><guid>/the-dark-forest-of-political-communication/</guid><description>&lt;p&gt;I have no views I care to vocalize about the current political
situation in the United States, or anywhere else you may
associate me with. I am personally totally politically inert,
the equivalent of neon gas in a tube,
and a steadfast adherent to
philosopher Michael Huemer&amp;rsquo;s prescription in
&lt;a href="https://journals.wsiz.edu.pl/sh/article/view/428"&gt;In Praise of Passivity&lt;/a&gt; to boot.
I have never voted and refused to say the pledge of allegiance in
kindergarten after my teacher kindly printed it out for me so I could
review its contents after class and understand the implications of it.&lt;/p&gt;</description></item><item><title>Digital resiliency 2025 - checklist</title><link>/digital-resiliency-2025-checklist/</link><pubDate>Tue, 09 Sep 2025 00:00:00 +0000</pubDate><guid>/digital-resiliency-2025-checklist/</guid><description>&lt;p&gt;Companion to &lt;a href="/digital-resiliency-2025/"&gt;digital resiliency 2025&lt;/a&gt;.
Follow to become moderately more digitally resilient.
This list does &lt;em&gt;not&lt;/em&gt; implement every single suggestion from that post.
But it puts you in a really good position to implement more later if
desired.&lt;/p&gt;
&lt;h2 id="cheap-wins"&gt;Cheap wins&lt;/h2&gt;
&lt;p&gt;So called because altogether these will probably cost you less than $10
total in the first year, and under $100 in the first decade. (At least
if your data needs are similar to mine in scope.)&lt;/p&gt;</description></item><item><title>Digital resiliency 2025 - my first self-audit!</title><link>/digital-resiliency-2025/</link><pubDate>Tue, 09 Sep 2025 00:00:00 +0000</pubDate><guid>/digital-resiliency-2025/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="/digital-resiliency-2025-checklist/"&gt;(⭐ See the digital resiliency 2025 checklist if you just want to quickly go through and implement the nuts and bolts of this for yourself!)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I like security! 🔒 Even though my personal data is about as interesting as
turnip soup, I really enjoy thinking about things like
&amp;ldquo;threat models&amp;rdquo; and &amp;ldquo;risk optimization&amp;rdquo;. I happened to have some
time on
my hands this summer, so I finally decided to pull all
my geeky security knowledge to use and perform my first-ever
&lt;strong&gt;digital resiliency audit&lt;/strong&gt;. To atone for my past security sins,
and to hopefully avoid new ones. Doubtless I will continue to iterate
and improve upon the tactics I discuss here in years to come, but for
now I think this is a pretty good start!&lt;/p&gt;</description></item><item><title>Militant contentment</title><link>/militant-contentment/</link><pubDate>Fri, 22 Aug 2025 07:32:26 +0300</pubDate><guid>/militant-contentment/</guid><description>&lt;p&gt;The world has gotten much, much richer over the 31 years I&amp;rsquo;ve been
alive, and so have I. My parents, Irish immigrants and perpetual
laggards to technology, now not only both have cell phones, they both
have &lt;em&gt;smartphones&lt;/em&gt;, and they can see the videos I send them a few times
a week of our beautiful baby boy 4000 miles away in &lt;em&gt;rauhallinen&lt;/em&gt;
Finland. I have been able to work at home for over 90% of my post
college career, long enough that I can earnestly say I&amp;rsquo;m starting to
get a little sick of being employed as Spooky Action At A Distance Man.
I both make more money than I really know what to do with and am
&lt;em&gt;disproportionately poor&lt;/em&gt; by the standards of virtually everyone I grew
up with, mostly by virtue of moving out of the United States. How on
Earth did all of this happen? And why do I feel like I am the only
person I know who feels this way?&lt;/p&gt;</description></item><item><title>Death worries me because I have things to do</title><link>/death-worries-me-because-i-have-things-to-do/</link><pubDate>Mon, 11 Aug 2025 00:14:00 +0300</pubDate><guid>/death-worries-me-because-i-have-things-to-do/</guid><description>&lt;div class="tweet-thread"&gt;
 







&lt;div class="tweet-embed"&gt;
 &lt;blockquote class="custom-tweet"&gt;
 &lt;div class="tweet-content"&gt;
 7 or 8 years ago, while I was by no means suicidal, I did have a kind of blase take on death. Like if it happens, it happens; it might hurt momentarily, but then I&amp;rsquo;ll just be gone, and the world will roll onward. That is almost unthinkable to me now as a husband and father.
 &lt;/div&gt;
 &lt;div class="tweet-meta"&gt;
 — Andrew Quinn 
 (@hiAndrewQuinn)
 
 &lt;a href="https://twitter.com/hiAndrewQuinn/status/1921345267036508365" target="_blank" rel="noopener"&gt;
 May 10, 2025
 &lt;/a&gt;
 
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;/div&gt;

&lt;style&gt;
.tweet-embed {
 margin: 1.5em 0;
}

.custom-tweet {
 background-color: transparent;
 border-left: 0.25em solid var(--text-heading-secondary);
 border-bottom: 0.125em solid var(--text-heading-secondary);
 padding: 1em 1.5em;
 margin: 1em 0;
 font-style: normal;
 position: relative;
}

 
[data-theme="lights-out"] .custom-tweet {
 border-left-color: #333333;
 border-bottom-color: #333333;
}

.custom-tweet .tweet-content {
 font-size: 1.05em;
 line-height: 1.6;
 margin-bottom: 0.75em;
 color: var(--text-primary);
}

.custom-tweet .tweet-content p {
 margin: 0.5em 0;
}

.custom-tweet .tweet-meta {
 font-size: 0.9em;
 color: var(--text-heading-secondary);
 font-style: italic;
}

.custom-tweet .tweet-meta a {
 color: var(--text-heading-secondary);
 text-decoration: none;
 border-bottom: 1px dotted var(--text-heading-secondary);
}

.custom-tweet .tweet-meta a:hover {
 color: var(--text-heading);
 border-bottom-color: var(--text-heading);
}
&lt;/style&gt;







&lt;div class="tweet-embed"&gt;
 &lt;blockquote class="custom-tweet"&gt;
 &lt;div class="tweet-content"&gt;
 &lt;p&gt;I think about my wife sleeping in the other room, and I look down at this tiny 10 pound baby sleeping in a box next to me, and I feel this overpowering urge to &lt;em&gt;stay here&lt;/em&gt; for them. To treat my own body right, and better than I ever did before.&lt;/p&gt;</description></item><item><title>On turning 30</title><link>/on-turning-30/</link><pubDate>Tue, 08 Jul 2025 01:03:24 +0300</pubDate><guid>/on-turning-30/</guid><description>&lt;p&gt;Contra my previous
&lt;a href="https://andrew-quinn.me/29/"&gt;Thoughts on 29&lt;/a&gt;,
I did not just turn 30. I started being 30 almost a year ago, and I will
soon stop being 30 and start being 31. This is a new writing technique
I recently learned of called the
&lt;a href="https://en.wikipedia.org/wiki/Prophetic_perfect_tense"&gt;non-prophetic perfect tense&lt;/a&gt;,
in which you describe past events that are so certain to have happened
that you refer to them in the past tense as if they had already
happened. Because they did.&lt;/p&gt;</description></item><item><title>1000 days without drinking</title><link>/1000-days-without-drinking/</link><pubDate>Mon, 30 Jun 2025 13:14:16 +0300</pubDate><guid>/1000-days-without-drinking/</guid><description>&lt;p&gt;&lt;a href="https://www.beeminder.com/resonant_pyre/days-since-drinking"&gt;According to Beeminder&lt;/a&gt;,
today marks 1000 days since I decided to go sober.
I don&amp;rsquo;t know if it is 1000 days since my &lt;em&gt;last&lt;/em&gt; drink, exactly, but it&amp;rsquo;s
certainly possible.&lt;/p&gt;
&lt;p&gt;I feel accomplished. Indeed, the only thing I regret about reaching 1000
days now is that I ever started at all. What few promises civilizational
culture likes to toss around about alcohol being a &amp;ldquo;social lubricant&amp;rdquo;
don&amp;rsquo;t apply if you&amp;rsquo;re drinking bottom shelf vodka alone in the basement,
like I was.&lt;/p&gt;</description></item><item><title>Thoughts on language learning at the end of the world</title><link>/thoughts-on-language-learning-at-the-end-of-the-world/</link><pubDate>Wed, 11 Jun 2025 13:41:12 +0300</pubDate><guid>/thoughts-on-language-learning-at-the-end-of-the-world/</guid><description>&lt;p&gt;Four years into learning a second language to fluency, I am forced to admit this
is probably the hardest thing I have ever done, intellectually.&lt;/p&gt;
&lt;p&gt;This claim probably doesn&amp;rsquo;t come as a surprise to anyone else who found
themselves with good reason to learn another language as a fully-formed,
employed adult. It is probably made a little easier in my case by the fact that
I studied multiple languages back in high school. But I hated the process even
then, and that was with Romance languages which have English in their direct
lineage. It may come as a surprise to younger readers, who grew up in a world
where they were already half-immersed in English thanks to the Internet, and
likely don&amp;rsquo;t understand just how vital those 10-20 years of early immersion
were to their current level of skill, whatever it is. That is a much different
experience to someone who had never even heard a word of their L2 until the
fine age of 25.&lt;/p&gt;</description></item><item><title>Inside, outside, and elsewhere in Finnish locative case pedagogy</title><link>/inside-outside-and-elsewhere-in-finnish-locative-case-pedagogy/</link><pubDate>Thu, 05 Jun 2025 10:47:34 +0300</pubDate><guid>/inside-outside-and-elsewhere-in-finnish-locative-case-pedagogy/</guid><description>&lt;p&gt;Finnish has six &amp;ldquo;locative&amp;rdquo; (location-based) cases, which are generally first
explained to students with the following table:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Movement&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Internal (Inside)&lt;/th&gt;
 &lt;th style="text-align: left"&gt;External (Outside/On)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Static&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Inessive (-ssa/-ssä)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Adessive (-lla/-llä)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Moving Towards&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Illative (-Vn, -hVn, -seen)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Allative (-lle)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Moving Away From&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Elative (-sta/-stä)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Ablative (-lta/-ltä)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Or, to use an example from the Finnish word &lt;em&gt;kauppa&lt;/em&gt; (store):&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Movement&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Internal (Inside)&lt;/th&gt;
 &lt;th style="text-align: left"&gt;External (Outside/On)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Static&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;em&gt;kaupassa&lt;/em&gt; (in the shop&amp;rsquo;s interior)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;em&gt;kaupalla&lt;/em&gt; (at the shop&amp;rsquo;s perimeter)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Moving Towards&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;em&gt;kauppaan&lt;/em&gt; (into the shop&amp;rsquo;s interior)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;em&gt;kaupalle&lt;/em&gt; (toward the shop&amp;rsquo;s perimeter)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Moving Away From&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;em&gt;kaupasta&lt;/em&gt; (out of the shop&amp;rsquo;s interior)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;em&gt;kaupalta&lt;/em&gt; (out from the shop&amp;rsquo;s perimeter)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I&amp;rsquo;ve always found this a little weird. I think I&amp;rsquo;ve finally pegged why.&lt;/p&gt;</description></item><item><title>We should use prediction markets for long term software maintenance</title><link>/we-should-use-prediction-markets-for-long-term-software-maintenance/</link><pubDate>Mon, 26 May 2025 09:54:37 +0300</pubDate><guid>/we-should-use-prediction-markets-for-long-term-software-maintenance/</guid><description>&lt;p&gt;I have
&lt;a href="https://x.com/hiAndrewQuinn/status/1919511103488373075"&gt;long espoused the works of Gwern Branson&lt;/a&gt;,
and his essay
&lt;a href="https://gwern.net/choosing-software"&gt;Choosing Software&lt;/a&gt;
is no exception. If I were to sum up the vibe of it, it would be: It is not
enough for software to be &lt;em&gt;good&lt;/em&gt; - it must also be
&lt;em&gt;&lt;a href="https://knowyourmeme.com/memes/lindy-lindy-effect#fn2"&gt;lindy&lt;/a&gt;&lt;/em&gt;.
There isn&amp;rsquo;t much point in eating the learning curve for, say, Emacs if Emacs
isn&amp;rsquo;t going to be around long enough to see a good ROI on it.&lt;/p&gt;</description></item><item><title>Perfect Commit Checklists</title><link>/perfect-commit-checklists/</link><pubDate>Sun, 15 Sep 2024 08:58:59 +0300</pubDate><guid>/perfect-commit-checklists/</guid><description>&lt;p&gt;⚠️: Unlike most other entries, this one &lt;strong&gt;requires some JavaScript&lt;/strong&gt; to make the checkboxes work. &lt;strong&gt;Nothing you put here is saved to my server!&lt;/strong&gt; It&amp;rsquo;s all in your &lt;code&gt;localStorage&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://simonwillison.net/"&gt;Simon Willison&lt;/a&gt;&amp;rsquo;s post, &lt;a href="https://simonwillison.net/2022/Oct/29/the-perfect-commit/"&gt;&amp;ldquo;The Perfect Commit&amp;rdquo;&lt;/a&gt;, is one of my favorite posts to reference when anything I&amp;rsquo;m starting to work on gets large enough that I can&amp;rsquo;t keep the full context in my head. I decided to distill it down to a fast, interactive checklist that you and I can both use to ensure we did everything &amp;ldquo;by the book&amp;rdquo; (or, if we&amp;rsquo;re not doing it by the book, to make sure we can at least explain to ourselves why not!).&lt;/p&gt;</description></item><item><title>A gentle introduction to ESR's `reposurgeon`</title><link>/reposurgeon/</link><pubDate>Wed, 27 Mar 2024 00:00:00 +0000</pubDate><guid>/reposurgeon/</guid><description>&lt;p&gt;Greetings, fellow traveller. By this point in your journey you may have ran across the enigmatic &lt;a href="http://www.catb.org/"&gt;Eric S. Raymond&lt;/a&gt; a couple of times; I assume you have hit upon this page because of a legendary and exact blade he has forged called &lt;a href="http://www.catb.org/esr/reposurgeon/repository-editing.html#quickstart"&gt;&lt;code&gt;reposurgeon&lt;/code&gt;&lt;/a&gt;. However, you, like me, are young, and are not yet wise enough in the ways of SVN to even make a toy conversion to Git &amp;ndash; fear not. I will give you just enough to get started.&lt;/p&gt;</description></item><item><title>Why and how I build terrible things</title><link>/cli/</link><pubDate>Sat, 02 Mar 2024 12:48:08 +0200</pubDate><guid>/cli/</guid><description>&lt;p&gt;Since &lt;a href="https://news.ycombinator.com/item?id=34131124"&gt;wiping my Github&lt;/a&gt; over a year ago I&amp;rsquo;ve taken a much more, let&amp;rsquo;s say, &lt;em&gt;impatient&lt;/em&gt; approach to my work.&lt;/p&gt;
&lt;p&gt;I have a lot of things I want to do, and a lot of things I want to see exist. Most of the things I want
to see exist are niche enough that they won&amp;rsquo;t exist if I don&amp;rsquo;t make them. So, over time, I&amp;rsquo;ve refined a
few anti-patterns and anti-techniques that let me build the worst possible version of a thing I myself
will just barely put up with using. Let&amp;rsquo;s dive into some of them.&lt;/p&gt;</description></item><item><title>Hugo 101</title><link>/hugo-101/</link><pubDate>Sat, 21 Oct 2023 16:59:57 +0300</pubDate><guid>/hugo-101/</guid><description>&lt;h1 id="hugo-101--optional-steal-his-look"&gt;Hugo 101 :: (optional) Steal His Look&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;I like making sure other people can get &lt;strong&gt;exactly&lt;/strong&gt; the same access to all the tools I use. If &lt;strong&gt;anything&lt;/strong&gt; you see me do today looks interesting, feel free to ask me how I did it! Or you can grab &lt;strong&gt;all the tools I will use at once&lt;/strong&gt; by following these simple steps.&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href="https://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download &lt;a href="https://ubuntu.com/download"&gt;Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Create an Ubuntu virtual machine - &lt;a href="https://ubuntu.com/tutorials/how-to-run-ubuntu-desktop-on-a-virtual-machine-using-virtualbox#1-overview"&gt;great official instructions!&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Virtual machine&amp;rdquo; = a computer that runs inside your computer like a normal program&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the 3 scripts at &lt;a href="https://github.com/hiAndrewQuinn/shell-bling-ubuntu"&gt;https://github.com/hiAndrewQuinn/shell-bling-ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="hugo-101--these-slides-live-at-httpsandrew-quinnmehugo-101-slidyhtml"&gt;Hugo 101 :: these slides live at &lt;a href="https://andrew-quinn.me/hugo-101-slidy.html"&gt;https://andrew-quinn.me/hugo-101-slidy.html&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;a more normal html version @ &lt;a href="https://andrew-quinn.me/hugo-101/"&gt;https://andrew-quinn.me/hugo-101/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="hugo-101--what-i-hope-you-leave-with"&gt;Hugo 101 :: what i hope you leave with&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;(optional) some &lt;a href="https://github.com/hiandrewquinn/shell-bling-ubuntu"&gt;shell bling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;how to use hugo&amp;hellip;
&lt;ul&gt;
&lt;li&gt;&amp;hellip; to make a website!&lt;/li&gt;
&lt;li&gt;&amp;hellip; to get that website online!&lt;/li&gt;
&lt;li&gt;&amp;hellip; to build and tinker around with other people&amp;rsquo;s websites!
&lt;ul&gt;
&lt;li&gt;&amp;hellip; like &lt;a href="https://fireship.io/"&gt;fireship.io&lt;/a&gt;! (&lt;a href="https://github.com/fireship-io/fireship.io"&gt;github link!&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&amp;hellip; like &lt;a href="https://utilitarianism.net/"&gt;utilitarianism.net&lt;/a&gt;! (&lt;a href="https://github.com/whyboris/utilitarianism.net"&gt;github link!&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&amp;hellip; like &lt;a href="https://digital.gov/"&gt;digital.gov&lt;/a&gt;! (&lt;a href="https://github.com/gsa/digitalgov.gov"&gt;github link!&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;confidence! websites aren&amp;rsquo;t hard!&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="hugo-101--what-i-need-from-you"&gt;Hugo 101 :: what i need from you&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keep that terminal OPEN and HAVE FAITH.&lt;/strong&gt; Hugo is a command line-based tool, we&amp;rsquo;re going to use it a lot. We might even use multiple at once
&lt;ul&gt;
&lt;li&gt;If you get lost, feel free to &lt;strong&gt;ask for help!&lt;/strong&gt; We&amp;rsquo;re all friends here.&lt;/li&gt;
&lt;li&gt;If you&amp;rsquo;re shy, &lt;strong&gt;try asking ChatGPT for help.&lt;/strong&gt; ChatGPT is &lt;em&gt;stupid&lt;/em&gt; good at helping you out with shell commands:
&lt;ol&gt;
&lt;li&gt;Describe what you are trying to do&lt;/li&gt;
&lt;li&gt;Copy and paste what you did into the shell&lt;/li&gt;
&lt;li&gt;Ask it for a better version&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Minimum_viable_product"&gt;Minimum viable&lt;/a&gt; terminal programs:&lt;/p&gt;</description></item><item><title>Thoughts on 29</title><link>/29/</link><pubDate>Tue, 15 Aug 2023 00:00:00 +0000</pubDate><guid>/29/</guid><description>&lt;p&gt;I turned 29 today, in this, the year of Our Lord 2023.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t have any particularly profound thoughts on 29. It&amp;rsquo;s a liminal year - next year I&amp;rsquo;ll be 30, hopefully with a kid in tow, I mostly see this year as continued preparatory work for when I finally have a family to call my own. But even though they&amp;rsquo;re prosaic, I do have a lot of things I&amp;rsquo;m quite proud of either doing or continuing this year, which I would like to share here, in roughly descending order.&lt;/p&gt;</description></item><item><title>Working Effectively With the Modern Shell</title><link>/modern-shell/</link><pubDate>Fri, 05 May 2023 11:37:03 +0300</pubDate><guid>/modern-shell/</guid><description>&lt;h1 id="these-slides-live-at-httpsandrew-quinnmemodern-shell-slidyhtml"&gt;These slides live at &lt;a href="https://andrew-quinn.me/modern-shell-slidy.html"&gt;https://andrew-quinn.me/modern-shell-slidy.html&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;A more normal HTML version @ &lt;a href="https://andrew-quinn.me/modern-shell/"&gt;https://andrew-quinn.me/modern-shell/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="what-i-hope-you-leave-with"&gt;What I hope you leave with&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Use &lt;code&gt;fzf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;zsh&lt;/code&gt; (minimum)&lt;/li&gt;
&lt;li&gt;Learn (some) &lt;code&gt;vi&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tldr&lt;/code&gt; &amp;raquo;= gpt &amp;raquo;= &lt;code&gt;man&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="who-am-i"&gt;who am i&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;hey i&amp;rsquo;m andrew
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://andrew-quinn.me/modern-shell/"&gt;https://andrew-quinn.me/modern-shell/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/zephyr_on_call"&gt;https://twitter.com/zephyr_on_call&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://staging.bsky.app/profile/sonder.bsky.social"&gt;https://staging.bsky.app/profile/sonder.bsky.social&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/heiandrewquinn/"&gt;https://www.linkedin.com/in/heiandrewquinn/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;🇪🇺🇱🇷 =&amp;gt; 🇮🇪🇺🇸 -&amp;gt; 🇫🇮&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.google.com/search?channel=fs&amp;amp;client=ubuntu-sn&amp;amp;q=northwestern+university"&gt;northwestern&lt;/a&gt; grad 2020 - bs in ee + minor in math&lt;/li&gt;
&lt;li&gt;devops by day&lt;/li&gt;
&lt;li&gt;fullstack+ai by night (best w/ django/htmx)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="why-the-shell"&gt;why the shell?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;composability&lt;/li&gt;
&lt;li&gt;complexity&lt;/li&gt;
&lt;li&gt;&lt;em&gt;speed&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="on-speed"&gt;on speed&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;0.001- seconds: speed of unknowing&lt;/li&gt;
&lt;li&gt;0.01 seconds: speed of instinct&lt;/li&gt;
&lt;li&gt;0.1 seconds: speed of thought&lt;/li&gt;
&lt;li&gt;1 second: speed of consciousness&lt;/li&gt;
&lt;li&gt;10 seconds: speed of frustration&lt;/li&gt;
&lt;li&gt;100 seconds: speed of switching to a competitor&lt;/li&gt;
&lt;li&gt;1000+ seconds: speed of SaaS&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="lets-talk-about-fzf"&gt;let&amp;rsquo;s talk about &lt;code&gt;fzf&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;what is &lt;code&gt;fzf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;how to install&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fzf&lt;/code&gt; for directory jumping&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fzf&lt;/code&gt; for command history&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fzf&lt;/code&gt; as repl&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="the-rustification-of-tools"&gt;the rustification of tools&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;rust is big now&lt;/li&gt;
&lt;li&gt;covering the classics&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt; =&amp;gt; &lt;code&gt;r&lt;/code&gt;ip&lt;code&gt;g&lt;/code&gt;rep&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt; =&amp;gt; &lt;code&gt;fd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cat&lt;/code&gt; =&amp;gt; &lt;code&gt;bat&lt;/code&gt; (i&amp;rsquo;m serious)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="lets-talk-about-vi"&gt;let&amp;rsquo;s talk about &lt;code&gt;vi&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;v&lt;/code&gt;isual &lt;code&gt;e&lt;/code&gt;ditor&lt;/li&gt;
&lt;li&gt;kind of a pain to learn&lt;/li&gt;
&lt;li&gt;learn it anyway
&lt;ul&gt;
&lt;li&gt;vscode extension&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;exists everywhere*&lt;/li&gt;
&lt;li&gt;barely uses resources at all (cpu, ram)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="why-optimize-for-resources"&gt;why optimize for resources?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;csikszentmihalyi would like a word&lt;/li&gt;
&lt;li&gt;did you not remember &lt;em&gt;speed&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;engineering === optimization within constraints&lt;/li&gt;
&lt;li&gt;long battery life is good too&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="lets-talk-about-zsh"&gt;let&amp;rsquo;s talk about &lt;code&gt;zsh&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;bash is ubiquitous&lt;/li&gt;
&lt;li&gt;bash has a lot of problems&lt;/li&gt;
&lt;li&gt;Strictly speaking bash exists at a really uncomfortable &lt;a href="https://borretti.me/article/shells-are-two-things"&gt;saddle point&lt;/a&gt; between the need to be quick and user/flowstate-friendly, and the need to be robust as an automation tool and and&lt;/li&gt;
&lt;li&gt;tldr: you still gotta run your scripts tho&lt;/li&gt;
&lt;li&gt;may i recommend &lt;code&gt;zsh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="zsh--oh-my-zsh"&gt;&lt;code&gt;zsh&lt;/code&gt; + &lt;code&gt;oh-my-zsh&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;unlike &lt;code&gt;bash&lt;/code&gt;, you get sick + actually useful plugins&lt;/li&gt;
&lt;li&gt;unlike &lt;code&gt;fish&lt;/code&gt;, most of your scripts run fine w/o modifications&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="starship"&gt;&lt;code&gt;starship&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;another rust project&lt;/li&gt;
&lt;li&gt;cross-platform shell &amp;hellip; theme &amp;hellip; thing
&lt;ul&gt;
&lt;li&gt;i like to just run it as is but install it everywhere&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="why-optimize-for-beauty-and-fun"&gt;why optimize for beauty and fun?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;csikszentmihalyi would like a word&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Hugo :: Netlify -&gt; Azure</title><link>/azure/</link><pubDate>Thu, 23 Mar 2023 05:51:22 +0200</pubDate><guid>/azure/</guid><description>&lt;p&gt;Recently &lt;a href="/fzf/"&gt;my &lt;code&gt;fzf&lt;/code&gt; post&lt;/a&gt; went &lt;a href="https://news.ycombinator.com/item?id=35248098"&gt;really, really viral on Hacker
News&lt;/a&gt;! This touched off a
virtuous cycle where I was &lt;em&gt;also&lt;/em&gt; featured in the &lt;a href="https://tldr.tech/tech/2023-03-22"&gt;TL;DR
Newsletter&lt;/a&gt;, which I&amp;rsquo;m &lt;em&gt;pretty&lt;/em&gt; sure is
AI-generated? I digress. This was an exciting thing to see, except for the fact
that Netlify is now banging on my door asking me for $110 in surprise bandwidth
costs.&lt;/p&gt;
&lt;p&gt;Yeah, yeah, I know. Nobody expects the SaaS Inquisition. I humbly submit tht,
as an ops guy, I should know better than anyone to keep things as braindead as
possible - and Netlify is an absolutely, delightfully braindead option for me.
Hook it to a Git repo, tell it it&amp;rsquo;s time to build, and relax. Since the median
website has precisely 0 viral posts, I defend my choice to go with the smartest
tool in my collection, and only go dumber &amp;ndash; and cheaper &amp;ndash; when a &lt;em&gt;real
business case&lt;/em&gt; is presented to me.&lt;/p&gt;</description></item><item><title>Copilot in the shell with Ctrl+X, Ctrl+E</title><link>/ctrl-x-ctrl-e/</link><pubDate>Wed, 22 Mar 2023 09:06:44 +0200</pubDate><guid>/ctrl-x-ctrl-e/</guid><description>&lt;p&gt;A tiny convenience I recently discovered: Hitting &lt;code&gt;Ctrl+X, Ctrl+E&lt;/code&gt;
in a terminal window will &lt;strong&gt;put your command into your text editor&lt;/strong&gt;
so you can massage your commands.&lt;/p&gt;
&lt;p&gt;&lt;img src="/img/ctrl-x-ctrl-e.gif" alt=""&gt;&lt;/p&gt;
&lt;p&gt;I often have long &lt;code&gt;ansible&lt;/code&gt; or &lt;code&gt;kubectl&lt;/code&gt; commands I want to either run, or
insert slashes into to put into my company&amp;rsquo;s internal documentation. I do it
here with &lt;code&gt;vi&lt;/code&gt; (badly!), but there&amp;rsquo;s nothing stopping you from customizing
things so you can do it with whatever floats your boat by setting the &lt;code&gt;$EDITOR&lt;/code&gt;
flag in your &lt;code&gt;.bashrc&lt;/code&gt;-like.&lt;/p&gt;</description></item><item><title>So you've installed `fzf`. Now what?</title><link>/fzf/</link><pubDate>Tue, 21 Mar 2023 08:11:06 +0200</pubDate><guid>/fzf/</guid><description>&lt;p&gt;Software engineers are, if not unique, then darn &lt;em&gt;near&lt;/em&gt;
unique in the ease with which we can create tools to improve
our own professional lives; this however can come at a steep
cost over time for people who constantly flit back and
forth between different tools without investing the time to
learn their own kit in depth. As someone with a healthy
respect for &lt;a href="https://commoncog.com/how-to-learn-tacit-knowledge/"&gt;the tacit knowledge of people better than
me&lt;/a&gt;, I
think a great 80/20 heuristic is &amp;ldquo;Learn the oldies
first&amp;rdquo;: venerable Unix tools like &lt;code&gt;cat&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;grep&lt;/code&gt;,
and &lt;code&gt;cut&lt;/code&gt;. (&lt;code&gt;sed&lt;/code&gt; and &lt;code&gt;awk&lt;/code&gt;, too, if you have the good
fortune of landing yourself in an actual modern sysadmin
role.)&lt;/p&gt;</description></item><item><title>How I Learn Things</title><link>/how-i-learn-things/</link><pubDate>Mon, 13 Mar 2023 12:02:54 +0300</pubDate><guid>/how-i-learn-things/</guid><description>&lt;h1 id="the-tldrs-tldr"&gt;The TL;DR&amp;rsquo;s TL;DR&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Read books.&lt;/li&gt;
&lt;li&gt;Not too fast.&lt;/li&gt;
&lt;li&gt;Use Anki.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="tldr"&gt;TL;DR&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Pick something to learn from the learning queue.
&lt;ol&gt;
&lt;li&gt;Is it useful, given my current ambitions? If no, delay.&lt;/li&gt;
&lt;li&gt;Is it easy, given what I already know? If no, delay.&lt;/li&gt;
&lt;li&gt;Is it cool, given what I currently find cool? If no, delay.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Read a book on it.
&lt;ol&gt;
&lt;li&gt;Take Anki card notes, chapter by chapter.&lt;/li&gt;
&lt;li&gt;While actively reading: Review 10 new Anki cards, per book chapter, per day.&lt;/li&gt;
&lt;li&gt;Once the book is finished, drop down to 1 new Anki card per book chapter per day.&lt;/li&gt;
&lt;li&gt;Regardless of whether I&amp;rsquo;m still actively reading or not: &lt;em&gt;Always&lt;/em&gt; finish the &amp;rsquo;learning/learned&amp;rsquo; Anki queues for that day. If you aren&amp;rsquo;t hitting that goal, ignore your new cards until you reach it.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Build a project using it.
&lt;ol&gt;
&lt;li&gt;The project must be useful, given my current ambitions.&lt;/li&gt;
&lt;li&gt;The project must be easy, given what I already know.&lt;/li&gt;
&lt;li&gt;The project must be cool, given what I currently find cool.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Rinse and repeat.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="your-learning-queue-and-you"&gt;Your learning queue and you&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Everything is a world unto itself. -CGP Grey&amp;rsquo;s lawyer dad, apparently, as relayed by one of his &lt;a href="https://www.relay.fm/shows/cortex/"&gt;podcasts&lt;/a&gt;&lt;/p&gt;</description></item><item><title/><link>/hugo-101-slidy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/hugo-101-slidy/</guid><description>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
 &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
 &lt;meta http-equiv="Content-Style-Type" content="text/css" /&gt;
 &lt;meta name="generator" content="pandoc" /&gt;
 &lt;title&gt;Hugo 101&lt;/title&gt;
 &lt;style type="text/css"&gt;
 code{white-space: pre-wrap;}
 span.smallcaps{font-variant: small-caps;}
 span.underline{text-decoration: underline;}
 div.column{display: inline-block; vertical-align: top; width: 50%;}
 div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
 ul.task-list{list-style: none;}
 pre &gt; code.sourceCode { white-space: pre; position: relative; }
 pre &gt; code.sourceCode &gt; span { display: inline-block; line-height: 1.25; }
 pre &gt; code.sourceCode &gt; span:empty { height: 1.2em; }
 code.sourceCode &gt; span { color: inherit; text-decoration: inherit; }
 div.sourceCode { margin: 1em 0; }
 pre.sourceCode { margin: 0; }
 @media screen {
 div.sourceCode { overflow: auto; }
 }
 @media print {
 pre &gt; code.sourceCode { white-space: pre-wrap; }
 pre &gt; code.sourceCode &gt; span { text-indent: -5em; padding-left: 5em; }
 }
 pre.numberSource code
 { counter-reset: source-line 0; }
 pre.numberSource code &gt; span
 { position: relative; left: -4em; counter-increment: source-line; }
 pre.numberSource code &gt; span &gt; a:first-child::before
 { content: counter(source-line);
 position: relative; left: -1em; text-align: right; vertical-align: baseline;
 border: none; display: inline-block;
 -webkit-touch-callout: none; -webkit-user-select: none;
 -khtml-user-select: none; -moz-user-select: none;
 -ms-user-select: none; user-select: none;
 padding: 0 4px; width: 4em;
 color: #aaaaaa;
 }
 pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
 div.sourceCode
 { }
 @media screen {
 pre &gt; code.sourceCode &gt; span &gt; a:first-child::before { text-decoration: underline; }
 }
 code span.al { color: #ff0000; font-weight: bold; } /* Alert */
 code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
 code span.at { color: #7d9029; } /* Attribute */
 code span.bn { color: #40a070; } /* BaseN */
 code span.bu { } /* BuiltIn */
 code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
 code span.ch { color: #4070a0; } /* Char */
 code span.cn { color: #880000; } /* Constant */
 code span.co { color: #60a0b0; font-style: italic; } /* Comment */
 code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
 code span.do { color: #ba2121; font-style: italic; } /* Documentation */
 code span.dt { color: #902000; } /* DataType */
 code span.dv { color: #40a070; } /* DecVal */
 code span.er { color: #ff0000; font-weight: bold; } /* Error */
 code span.ex { } /* Extension */
 code span.fl { color: #40a070; } /* Float */
 code span.fu { color: #06287e; } /* Function */
 code span.im { } /* Import */
 code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
 code span.kw { color: #007020; font-weight: bold; } /* Keyword */
 code span.op { color: #666666; } /* Operator */
 code span.ot { color: #007020; } /* Other */
 code span.pp { color: #bc7a00; } /* Preprocessor */
 code span.sc { color: #4070a0; } /* SpecialChar */
 code span.ss { color: #bb6688; } /* SpecialString */
 code span.st { color: #4070a0; } /* String */
 code span.va { color: #19177c; } /* Variable */
 code span.vs { color: #4070a0; } /* VerbatimString */
 code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
 &lt;/style&gt;
 &lt;link rel="stylesheet" type="text/css" media="screen, projection, print"
 href="https://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css" /&gt;
 &lt;script src="https://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js"
 charset="utf-8" type="text/javascript"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="slide titlepage"&gt;
 &lt;h1 class="title"&gt;Hugo 101&lt;/h1&gt;
 &lt;p class="subtitle"&gt;Websites for little guys&lt;/p&gt;</description></item><item><title/><link>/modern-shell-slidy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/modern-shell-slidy/</guid><description>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
 &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
 &lt;meta http-equiv="Content-Style-Type" content="text/css" /&gt;
 &lt;meta name="generator" content="pandoc" /&gt;
 &lt;title&gt;Working Effectively With the Modern Shell&lt;/title&gt;
 &lt;style type="text/css"&gt;
 code{white-space: pre-wrap;}
 span.smallcaps{font-variant: small-caps;}
 span.underline{text-decoration: underline;}
 div.column{display: inline-block; vertical-align: top; width: 50%;}
 div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
 ul.task-list{list-style: none;}
 &lt;/style&gt;
 &lt;link rel="stylesheet" type="text/css" media="screen, projection, print"
 href="https://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css" /&gt;
 &lt;script src="https://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js"
 charset="utf-8" type="text/javascript"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="slide titlepage"&gt;
 &lt;h1 class="title"&gt;Working Effectively With the Modern Shell&lt;/h1&gt;
 &lt;p class="subtitle"&gt;Talk @ the Tampere Coding Sauna, May 2023.&lt;/p&gt;
 &lt;p class="date"&gt;2023-05-05T11:37:03+03:00&lt;/p&gt;
&lt;/div&gt;
&lt;div id="these-slides-live-at-httpsandrew-quinn.memodern-shell-slidy.html" class="slide section level1"&gt;
&lt;h1&gt;These slides live at &lt;a href="https://andrew-quinn.me/modern-shell-slidy.html"&gt;https://andrew-quinn.me/modern-shell-slidy.html&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;A more normal HTML version @ https://andrew-quinn.me/modern-shell/&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="what-i-hope-you-leave-with" class="slide section level1"&gt;
&lt;h1&gt;What I hope you leave with&lt;/h1&gt;
&lt;ol style="list-style-type: decimal"&gt;
&lt;li&gt;Use &lt;code&gt;fzf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;zsh&lt;/code&gt; (minimum)&lt;/li&gt;
&lt;li&gt;Learn (some) &lt;code&gt;vi&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tldr&lt;/code&gt; &amp;gt;&amp;gt;= gpt &amp;gt;&amp;gt;= &lt;code&gt;man&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div id="who-am-i" class="slide section level1"&gt;
&lt;h1&gt;who am i&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;hey i’m andrew
&lt;ul&gt;
&lt;li&gt;https://andrew-quinn.me/modern-shell/&lt;/li&gt;
&lt;li&gt;https://twitter.com/zephyr_on_call&lt;/li&gt;
&lt;li&gt;https://staging.bsky.app/profile/sonder.bsky.social&lt;/li&gt;
&lt;li&gt;https://www.linkedin.com/in/heiandrewquinn/&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;🇪🇺🇱🇷 =&amp;gt; 🇮🇪🇺🇸 -&amp;gt; 🇫🇮&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.google.com/search?channel=fs&amp;amp;client=ubuntu-sn&amp;amp;q=northwestern+university"&gt;northwestern&lt;/a&gt; grad 2020 - bs in ee + minor in math&lt;/li&gt;
&lt;li&gt;devops by day&lt;/li&gt;
&lt;li&gt;fullstack+ai by night (best w/ django/htmx)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="why-the-shell" class="slide section level1"&gt;
&lt;h1&gt;why the shell?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;composability&lt;/li&gt;
&lt;li&gt;complexity&lt;/li&gt;
&lt;li&gt;&lt;em&gt;speed&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="on-speed" class="slide section level1"&gt;
&lt;h1&gt;on speed&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;0.001- seconds: speed of unknowing&lt;/li&gt;
&lt;li&gt;0.01 seconds: speed of instinct&lt;/li&gt;
&lt;li&gt;0.1 seconds: speed of thought&lt;/li&gt;
&lt;li&gt;1 second: speed of consciousness&lt;/li&gt;
&lt;li&gt;10 seconds: speed of frustration&lt;/li&gt;
&lt;li&gt;100 seconds: speed of switching to a competitor&lt;/li&gt;
&lt;li&gt;1000+ seconds: speed of SaaS&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="lets-talk-about-fzf" class="slide section level1"&gt;
&lt;h1&gt;let’s talk about &lt;code&gt;fzf&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;what is &lt;code&gt;fzf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;how to install&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fzf&lt;/code&gt; for directory jumping&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fzf&lt;/code&gt; for command history&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fzf&lt;/code&gt; as repl&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="the-rustification-of-tools" class="slide section level1"&gt;
&lt;h1&gt;the rustification of tools&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;rust is big now&lt;/li&gt;
&lt;li&gt;covering the classics&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt; =&amp;gt; &lt;code&gt;r&lt;/code&gt;ip&lt;code&gt;g&lt;/code&gt;rep&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt; =&amp;gt; &lt;code&gt;fd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cat&lt;/code&gt; =&amp;gt; &lt;code&gt;bat&lt;/code&gt; (i’m serious)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="lets-talk-about-vi" class="slide section level1"&gt;
&lt;h1&gt;let’s talk about &lt;code&gt;vi&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;v&lt;/code&gt;isual &lt;code&gt;e&lt;/code&gt;ditor&lt;/li&gt;
&lt;li&gt;kind of a pain to learn&lt;/li&gt;
&lt;li&gt;learn it anyway
&lt;ul&gt;
&lt;li&gt;vscode extension&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;exists everywhere*&lt;/li&gt;
&lt;li&gt;barely uses resources at all (cpu, ram)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="why-optimize-for-resources" class="slide section level1"&gt;
&lt;h1&gt;why optimize for resources?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;csikszentmihalyi would like a word&lt;/li&gt;
&lt;li&gt;did you not remember &lt;em&gt;speed&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;engineering === optimization within constraints&lt;/li&gt;
&lt;li&gt;long battery life is good too&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="lets-talk-about-zsh" class="slide section level1"&gt;
&lt;h1&gt;let’s talk about &lt;code&gt;zsh&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;bash is ubiquitous&lt;/li&gt;
&lt;li&gt;bash has a lot of problems&lt;/li&gt;
&lt;li&gt;Strictly speaking bash exists at a really uncomfortable &lt;a href="https://borretti.me/article/shells-are-two-things"&gt;saddle point&lt;/a&gt; between the need to be quick and user/flowstate-friendly, and the need to be robust as an automation tool and and&lt;/li&gt;
&lt;li&gt;tldr: you still gotta run your scripts tho&lt;/li&gt;
&lt;li&gt;may i recommend &lt;code&gt;zsh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="zsh-oh-my-zsh" class="slide section level1"&gt;
&lt;h1&gt;&lt;code&gt;zsh&lt;/code&gt; + &lt;code&gt;oh-my-zsh&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;unlike &lt;code&gt;bash&lt;/code&gt;, you get sick + actually useful plugins&lt;/li&gt;
&lt;li&gt;unlike &lt;code&gt;fish&lt;/code&gt;, most of your scripts run fine w/o modifications&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="starship" class="slide section level1"&gt;
&lt;h1&gt;&lt;code&gt;starship&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;another rust project&lt;/li&gt;
&lt;li&gt;cross-platform shell … theme … thing
&lt;ul&gt;
&lt;li&gt;i like to just run it as is but install it everywhere&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="why-optimize-for-beauty-and-fun" class="slide section level1"&gt;
&lt;h1&gt;why optimize for beauty and fun?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;csikszentmihalyi would like a word&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</description></item></channel></rss>