<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>TIL on Shawn Sorichetti</title>
    <link>/til/</link>
    <description>Recent content in TIL on Shawn Sorichetti</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>me@ssoriche.com (Shawn Sorichetti)</managingEditor>
    <webMaster>me@ssoriche.com (Shawn Sorichetti)</webMaster>
    <copyright>© 2026 Shawn Sorichetti</copyright>
    <atom:link href="/til/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>AWS S3 Files: S3 Buckets as NFS Filesystems</title>
      <link>/til/s3-files-s3-as-a-filesystem/</link>
      <pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate>
      <author>me@ssoriche.com (Shawn Sorichetti)</author>
      <guid>/til/s3-files-s3-as-a-filesystem/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve hit this problem twice now. At &lt;a href=&#34;https://metacpan.org&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;MetaCPAN&lt;/a&gt;, we were looking at using S3 as a sync target for rsync from upstream CPAN — conceptually simple, except rsync wants a filesystem and S3 very much isn&amp;rsquo;t one. More recently, I wanted to mount an S3 bucket as an image cache for &lt;a href=&#34;https://buildah.io&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Buildah&lt;/a&gt;. Same wall. You end up writing glue code, or reaching for a FUSE driver that may or may not be production-ready, or just redesigning around the limitation.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Logging Into Multiple AWS SSO Sessions at Once</title>
      <link>/til/aws-cli-multiple-sso-sessions/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <author>me@ssoriche.com (Shawn Sorichetti)</author>
      <guid>/til/aws-cli-multiple-sso-sessions/</guid>
      <description>&lt;p&gt;I use &lt;a href=&#34;https://docs.commonfate.io/granted/overview&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Granted&lt;/a&gt; for per-terminal AWS credential assumptions — it&amp;rsquo;s great for switching between the multiple work accounts I juggle throughout the day. But I have SSO configured across more than one organization, and every morning I was logging into each one manually, one at a time, like a chump.&lt;/p&gt;&#xA;&lt;p&gt;Turns out &lt;code&gt;aws sso login&lt;/code&gt; has a &lt;code&gt;--sso-session&lt;/code&gt; flag that targets a named session block from &lt;code&gt;~/.aws/config&lt;/code&gt;. So logging into multiple orgs is just two commands:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>GL.iNet&#39;s AdGuard Home Hides Upstream DNS Settings in a Non-Obvious Place</title>
      <link>/til/glinet-adguard-upstream-dns/</link>
      <pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate>
      <author>me@ssoriche.com (Shawn Sorichetti)</author>
      <guid>/til/glinet-adguard-upstream-dns/</guid>
      <description>&lt;p&gt;On a recent trip I kept getting connection failures that needed retrying — pages half-loading, API calls timing out, the usual DNS-smells-wrong experience. It was intermittent enough to be annoying but consistent enough that I knew something was actually broken.&lt;/p&gt;&#xA;&lt;p&gt;I narrowed it down to DNS pretty quickly. My &lt;a href=&#34;https://www.gl-inet.com/products/gl-mt3000/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;GL.iNet MT-3000&lt;/a&gt; travel router was dropping queries or returning nothing for some domains.&lt;/p&gt;&#xA;&lt;p&gt;The culprit turned out to be obvious in retrospect: before leaving I had shut down my &lt;a href=&#34;https://pi-hole.net&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Pi-hole&lt;/a&gt; servers at home. Those Pi-holes live on my &lt;a href=&#34;https://tailscale.com&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tailscale&lt;/a&gt; network, and my travel router connects back to that network. Somewhere, something was still trying to use them for DNS.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Claude Code&#39;s /copy Command</title>
      <link>/til/claude-code-copy-command/</link>
      <pubDate>Thu, 19 Feb 2026 00:00:00 +0000</pubDate>
      <author>me@ssoriche.com (Shawn Sorichetti)</author>
      <guid>/til/claude-code-copy-command/</guid>
      <description>&lt;p&gt;A coworker dropped &lt;code&gt;/copy&lt;/code&gt; in our work Slack yesterday and I had to try it immediately. It&amp;rsquo;s a &lt;a href=&#34;https://docs.anthropic.com/en/docs/claude-code&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Claude Code&lt;/a&gt; slash command that copies Claude&amp;rsquo;s last response straight to your clipboard as markdown.&lt;/p&gt;&#xA;&lt;p&gt;Before finding this, my workflow for grabbing a generated code snippet or shell command was embarrassingly manual — select text in the terminal, hope I got the boundaries right, paste it somewhere. Now I just type:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/copy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;And the whole response lands in my clipboard, formatting intact — including code blocks. This is especially useful when Claude generates something multi-part, like a function plus its tests or a sequence of shell commands, where careful selection across scroll boundaries used to be the only option.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
