<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Mailing list</title>
    <link>https://newsletter.abidc.dev</link>
    <description>Mailing list archive</description>
    <item>
      <title>Never open a port on your router</title>
      <link>https://newsletter.abidc.dev/archive/notes-002-you-can-just-publish-things</link>
      <description></description>
      <content:encoded><![CDATA[
<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="color-scheme" content="light">
  <meta name="supported-color-schemes" content="light">
  <title>Never open a port on your router</title>
  
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&family=Lora:ital,wght@0,400;0,600;1,400&family=JetBrains+Mono:ital@1&display=swap" rel="stylesheet">
  
  
  <style>
     
    :root{ color-scheme: light; supported-color-schemes: light; }
    body,table,td,a{ -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; }
    table,td{ mso-table-lspace:0pt; mso-table-rspace:0pt; }
    img{ -ms-interpolation-mode:bicubic; border:0; height:auto; line-height:100%; outline:none; text-decoration:none; }
    body{ margin:0 !important; padding:0 !important; width:100% !important; height:100% !important; }
    a{ color:#e63946; }

     
    .content{ font-family:'Lora',Georgia,'Times New Roman',serif; font-size:17px; line-height:1.62; color:#20283f; }
    .content h1,.content h2,.content h3{ font-family:'Inter',Helvetica,Arial,sans-serif; color:#0b132b; font-weight:700; margin:0 0 14px; line-height:1.2; }
    .content h1{ font-size:30px; letter-spacing:-0.8px; }
    .content h2{ font-size:23px; letter-spacing:-0.4px; margin-top:30px; }
    .content h3{ font-size:19px; margin-top:24px; }
    .content p{ margin:0 0 18px; }
    .content ul,.content ol{ margin:0 0 18px; padding-left:22px; }
    .content li{ margin:0 0 9px; }
    .content a{ color:#e63946; text-decoration:underline; }
    .content strong{ color:#0b132b; }
    .content blockquote{ margin:0 0 18px; padding:2px 18px; border-left:3px solid #2a9d8f; color:#3a4256; font-style:italic; }
    .content img{ max-width:100%; border-radius:4px; }
    .content hr{ border:0; border-top:1px solid #e9ecef; margin:28px 0; }

    @media screen and (max-width:600px){
      .wrap{ width:100% !important; }
      .px{ padding-left:22px !important; padding-right:22px !important; }
      .content h1{ font-size:26px !important; }
    }
  </style>
</head>
<body style="margin:0; padding:0; background:#f8f9fa;">
  <div style="display:none; max-height:0; overflow:hidden; opacity:0; font-size:1px; line-height:1px; color:#f8f9fa;">
    Never open a port on your router&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;
  </div>

  <table role="presentation" class="bg-canvas" width="100%" cellpadding="0" cellspacing="0" border="0" style="background:#f8f9fa;">
    <tr>
      <td align="center" style="padding:32px 12px;">

        
        <table role="presentation" class="wrap" width="600" cellpadding="0" cellspacing="0" border="0" style="width:600px; max-width:600px;">
          <tr><td style="height:4px; background:#e63946; border-radius:4px 4px 0 0; font-size:0; line-height:0;">&nbsp;</td></tr>
        </table>

        <table role="presentation" class="wrap card" width="600" cellpadding="0" cellspacing="0" border="0" style="width:600px; max-width:600px; background:#ffffff; border-radius:0 0 4px 4px;">

          
          <tr>
            <td class="px" style="padding:28px 40px 20px;">
              <table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr>
                <td valign="middle" class="name" style="font-family:'Inter',Helvetica,Arial,sans-serif; font-size:20px; font-weight:700; letter-spacing:-0.4px; color:#0b132b; white-space:nowrap;"><span style="display:inline-block; width:9px; height:9px; background:#e63946; border-radius:50%; vertical-align:middle; margin-right:9px;">&nbsp;</span><span style="vertical-align:middle;">Abid&nbsp;Chaudhry</span></td>
                <td valign="middle" style="padding:0 12px; color:#c7ccd6; font-size:20px; line-height:1;">|</td>
                <td valign="middle" class="tagline" style="font-family:'Lora',Georgia,'Times New Roman',serif; font-style:italic; font-size:18px; font-weight:400; color:#565b6e;">Notes from the Machine</td>
              </tr></table>
            </td>
          </tr>
          <tr><td class="px" style="padding:0 40px;"><hr class="divider" style="border:0; border-top:1px solid #e9ecef; margin:0;"></td></tr>

          
          <tr>
            <td class="px content" style="padding:26px 40px 8px; font-family:'Lora',Georgia,'Times New Roman',serif; font-size:17px; line-height:1.62; color:#20283f;">
              <p style="text-align:center; margin:0 0 26px;"><img src="https://newsletter.abidc.dev/uploads/email-issue002-tunnel.gif" alt="An illustrated street scene with a sign reading Secret Tunnel and a yellow arrow pointing down into an opening in the pavement" width="480" style="width:100%; max-width:480px; height:auto; border-radius:6px;"></p>

<h1>You can just publish things</h1>

<p>Last time I talked you into <a href="https://abidc.dev/blog/getting-started-self-hosting">giving an old laptop a job</a>. If you went and did it, there is a real application running on hardware you own right now.</p>

<p>And you can only use it by walking over to it.</p>

<p>That's the wall everybody hits second. The app answers at <code style="font-family:'JetBrains Mono','Courier New',monospace; font-size:0.9em; background:#e9ecef; color:#e63946; padding:1px 5px; border-radius:3px;">localhost:8080</code> and nowhere else. Not from your phone. Not from the office. Not from the sofa. Today we fix that — a real domain, a real padlock in the address bar, reachable from anywhere.</p>

<p>Without opening a single port on your router.</p>

<h2>Whatever you do, don't open a port</h2>

<p>Every guide written before about 2018 tells you to set up <strong>port forwarding</strong> — telling your router to let outside traffic in. Don't. It puts your home network directly on the public internet, where automated scanners <em>will</em> find it within hours. It breaks every time your provider rotates your IP. There's no HTTPS, so you'd be typing a password in the clear. And if you're behind CGNAT, as more and more of us are, it doesn't work at all.</p>

<h2>Turn the connection around instead</h2>

<p>The fix is a <strong>Cloudflare Tunnel</strong>, and the idea behind it is genuinely lovely: instead of the internet reaching <em>in</em> to your server, your server reaches <em>out</em> to Cloudflare and holds that connection open. Visitors arrive at Cloudflare, and their requests ride back down the pipe your machine already opened from the inside.</p>

<p>Nothing ever connects inward. Your router's inbound ports stay exactly as closed as they are today — and you get a valid TLS certificate thrown in for free.</p>

<p style="text-align:center; margin:26px 0;"><a href="https://abidc.dev/blog/cloudflare-tunnel-without-opening-ports"><img src="https://newsletter.abidc.dev/uploads/email-issue002-diagram.jpg" alt="Two ways in: opening a port punches a hole in the house that strangers stream through, while opening a tunnel leaves the house sealed and sends one outbound line to the cloud" width="520" style="width:100%; max-width:520px; height:auto; border-radius:4px;"></a></p>

<h2>The twenty-minute version</h2>

<p>Create a tunnel in Cloudflare's Zero Trust dashboard, copy the token it hands you, and run this on the machine your app lives on:</p>

<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="margin:0 0 18px;"><tr><td style="background:#0b132b; border-radius:4px; padding:15px 18px;"><div style="font-family:'JetBrains Mono','Courier New',Courier,monospace; font-size:13px; line-height:1.6; color:#e9ecef; white-space:pre-wrap; word-break:break-word;">services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    restart: unless-stopped
    network_mode: host
    command: tunnel --no-autoupdate run
    environment:
      TUNNEL_TOKEN: ${TUNNEL_TOKEN}</div></td></tr></table>

<p>Put the token in a <code style="font-family:'JetBrains Mono','Courier New',monospace; font-size:0.9em; background:#e9ecef; color:#e63946; padding:1px 5px; border-radius:3px;">.env</code> file beside it, <code style="font-family:'JetBrains Mono','Courier New',monospace; font-size:0.9em; background:#e9ecef; color:#e63946; padding:1px 5px; border-radius:3px;">docker compose up -d</code>, then add a public hostname in the dashboard pointing <code style="font-family:'JetBrains Mono','Courier New',monospace; font-size:0.9em; background:#e9ecef; color:#e63946; padding:1px 5px; border-radius:3px;">pdf.yourdomain.com</code> at <code style="font-family:'JetBrains Mono','Courier New',monospace; font-size:0.9em; background:#e9ecef; color:#e63946; padding:1px 5px; border-radius:3px;">http://localhost:8080</code>. Cloudflare writes the DNS record for you.</p>

<p>Then open it from your phone, on mobile data, off your home wifi entirely. That's your app.</p>

<blockquote><strong>Do not skip this part.</strong> Your app is now on the public internet, and plenty of self-hosted tools ship with no login at all. Add a Cloudflare Access policy in front of it — action Allow, rule Emails, your own address. It takes ninety seconds and it's free for up to 50 users.</blockquote>

<h2>The bit that cost me an afternoon</h2>

<p>If you create your tunnel in the dashboard, it is <em>remotely managed</em>: the routing config lives at Cloudflare and it silently overrides the config file on your own machine. You can edit that file, restart the container, watch it come up perfectly clean — and nothing changes. No error. No warning. The only tell is one line in the logs:</p>

<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="margin:0 0 18px;"><tr><td style="background:#0b132b; border-radius:4px; padding:15px 18px;"><div style="font-family:'JetBrains Mono','Courier New',Courier,monospace; font-size:13px; line-height:1.6; color:#e9ecef; white-space:pre-wrap; word-break:break-word;">INF Updated to new configuration version=7</div></td></tr></table>

<p>That's cloudflared telling you it just took its instructions from Cloudflare, and that your file is decorative. Make the change in the dashboard instead.</p>

<hr>

<h2>The full walkthrough</h2>

<p>The post has the whole thing end to end: the one line in that compose file that trips up almost everybody, the three causes of a 502 in the order you should check them, why you type <code style="font-family:'JetBrains Mono','Courier New',monospace; font-size:0.9em; background:#e9ecef; color:#e63946; padding:1px 5px; border-radius:3px;">http://</code> in one box and get <code style="font-family:'JetBrains Mono','Courier New',monospace; font-size:0.9em; background:#e9ecef; color:#e63946; padding:1px 5px; border-radius:3px;">https://</code> in the browser, and when you should be reaching for Tailscale instead.</p>

<p><a href="https://abidc.dev/blog/cloudflare-tunnel-without-opening-ports"><strong>→ Read: You Can Just Publish Things</strong></a></p>

<hr>

<h2>Is this too deep, too fast?</h2>

<p>Two issues in, and I've gone from "plug in the old laptop in your drawer" to "run a tunnel daemon and put an identity check in front of it." That escalated quickly. From in here I genuinely can't tell whether that's the right pace or whether I've already lost half of you.</p>

<p>So this one's a real question, and I'd love an answer. <strong>Hit reply with a word:</strong></p>

<ul>
<li><strong>"About right"</strong> — keep going at this altitude.</li>
<li><strong>"Slow down"</strong> — smaller steps, fewer assumptions, more of the why before the how.</li>
<li><strong>"Something else"</strong> — and tell me what. Self-hosting is where I started, not where I'm stuck. Automations, AI tools that actually earn their keep, the money side of building things — all fair game.</li>
</ul>

<p>Every reply comes to my actual inbox and I read every one. And if you did get a tunnel working, tell me what you put behind it — I'm always curious what people choose to publish first.</p>

<p>Talk soon,<br>— Abid</p>
            </td>
          </tr>

          
          <tr>
            <td class="px" style="padding:14px 40px 34px;">
              <hr class="divider" style="border:0; border-top:1px solid #e9ecef; margin:0 0 18px;">
              <p style="margin:0 0 16px; font-family:'Inter',Helvetica,Arial,sans-serif; font-size:14px; line-height:1.6; color:#20283f;">
                Enjoying this? If you think someone else would find it useful, <strong style="color:#0b132b;">forward it their way</strong> &mdash; they can subscribe at <a href="https://abidc.dev" style="color:#e63946; text-decoration:none;">abidc.dev</a>.
              </p>
              <p class="footer-text" style="margin:0 0 10px; font-family:'Inter',Helvetica,Arial,sans-serif; font-size:13px; line-height:1.6; color:#6b7280;">
                You're receiving this because you subscribed at <a href="https://abidc.dev" style="color:#e63946; text-decoration:none;">abidc.dev</a>.
              </p>
              <p class="footer-text" style="margin:0; font-family:'Inter',Helvetica,Arial,sans-serif; font-size:13px; line-height:1.6; color:#6b7280;">
                <a href="https://newsletter.abidc.dev/subscription/300433fd-8948-47b1-9f26-037e864f469f/" style="color:#6b7280; text-decoration:underline;">Unsubscribe</a>
                &nbsp;&middot;&nbsp;
                <a href="https://newsletter.abidc.dev/campaign/300433fd-8948-47b1-9f26-037e864f469f/" style="color:#6b7280; text-decoration:underline;">View in browser</a>
              </p>
            </td>
          </tr>
        </table>

        <table role="presentation" class="wrap" width="600" cellpadding="0" cellspacing="0" border="0" style="width:600px; max-width:600px;">
          <tr><td align="center" style="padding:18px 12px 0;"><span class="footer-text" style="font-family:'JetBrains Mono','Courier New',monospace; font-style:italic; font-size:12px; color:#9aa3b8;">notes from the machine &middot; abidc.dev</span></td></tr>
        </table>

      </td>
    </tr>
  </table>

  <img src="https://newsletter.abidc.dev/campaign/300433fd-8948-47b1-9f26-037e864f469f/00000000-0000-0000-0000-000000000000/px.png" alt="" />
</body>
</html>
]]></content:encoded>
      <pubDate>Tue, 25 Aug 2026 15:00:00 +0000</pubDate>
    </item>
    <item>
      <title>That old laptop in your drawer? Give it a job.</title>
      <link>https://newsletter.abidc.dev/archive/notes-001-you-can-just-build-things</link>
      <description></description>
      <content:encoded><![CDATA[
<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="color-scheme" content="light">
  <meta name="supported-color-schemes" content="light">
  <title>That old laptop in your drawer? Give it a job.</title>
  
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&family=Lora:ital,wght@0,400;0,600;1,400&family=JetBrains+Mono:ital@1&display=swap" rel="stylesheet">
  
  
  <style>
     
    :root{ color-scheme: light; supported-color-schemes: light; }
    body,table,td,a{ -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; }
    table,td{ mso-table-lspace:0pt; mso-table-rspace:0pt; }
    img{ -ms-interpolation-mode:bicubic; border:0; height:auto; line-height:100%; outline:none; text-decoration:none; }
    body{ margin:0 !important; padding:0 !important; width:100% !important; height:100% !important; }
    a{ color:#e63946; }

     
    .content{ font-family:'Lora',Georgia,'Times New Roman',serif; font-size:17px; line-height:1.62; color:#20283f; }
    .content h1,.content h2,.content h3{ font-family:'Inter',Helvetica,Arial,sans-serif; color:#0b132b; font-weight:700; margin:0 0 14px; line-height:1.2; }
    .content h1{ font-size:30px; letter-spacing:-0.8px; }
    .content h2{ font-size:23px; letter-spacing:-0.4px; margin-top:30px; }
    .content h3{ font-size:19px; margin-top:24px; }
    .content p{ margin:0 0 18px; }
    .content ul,.content ol{ margin:0 0 18px; padding-left:22px; }
    .content li{ margin:0 0 9px; }
    .content a{ color:#e63946; text-decoration:underline; }
    .content strong{ color:#0b132b; }
    .content blockquote{ margin:0 0 18px; padding:2px 18px; border-left:3px solid #2a9d8f; color:#3a4256; font-style:italic; }
    .content img{ max-width:100%; border-radius:4px; }
    .content hr{ border:0; border-top:1px solid #e9ecef; margin:28px 0; }

    @media screen and (max-width:600px){
      .wrap{ width:100% !important; }
      .px{ padding-left:22px !important; padding-right:22px !important; }
      .content h1{ font-size:26px !important; }
    }
  </style>
</head>
<body style="margin:0; padding:0; background:#f8f9fa;">
  <div style="display:none; max-height:0; overflow:hidden; opacity:0; font-size:1px; line-height:1px; color:#f8f9fa;">
    That old laptop in your drawer? Give it a job.&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;
  </div>

  <table role="presentation" class="bg-canvas" width="100%" cellpadding="0" cellspacing="0" border="0" style="background:#f8f9fa;">
    <tr>
      <td align="center" style="padding:32px 12px;">

        
        <table role="presentation" class="wrap" width="600" cellpadding="0" cellspacing="0" border="0" style="width:600px; max-width:600px;">
          <tr><td style="height:4px; background:#e63946; border-radius:4px 4px 0 0; font-size:0; line-height:0;">&nbsp;</td></tr>
        </table>

        <table role="presentation" class="wrap card" width="600" cellpadding="0" cellspacing="0" border="0" style="width:600px; max-width:600px; background:#ffffff; border-radius:0 0 4px 4px;">

          
          <tr>
            <td class="px" style="padding:28px 40px 20px;">
              <table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr>
                <td valign="middle" class="name" style="font-family:'Inter',Helvetica,Arial,sans-serif; font-size:20px; font-weight:700; letter-spacing:-0.4px; color:#0b132b; white-space:nowrap;"><span style="display:inline-block; width:9px; height:9px; background:#e63946; border-radius:50%; vertical-align:middle; margin-right:9px;">&nbsp;</span><span style="vertical-align:middle;">Abid&nbsp;Chaudhry</span></td>
                <td valign="middle" style="padding:0 12px; color:#c7ccd6; font-size:20px; line-height:1;">|</td>
                <td valign="middle" class="tagline" style="font-family:'Lora',Georgia,'Times New Roman',serif; font-style:italic; font-size:18px; font-weight:400; color:#565b6e;">Notes from the Machine</td>
              </tr></table>
            </td>
          </tr>
          <tr><td class="px" style="padding:0 40px;"><hr class="divider" style="border:0; border-top:1px solid #e9ecef; margin:0;"></td></tr>

          
          <tr>
            <td class="px content" style="padding:26px 40px 8px; font-family:'Lora',Georgia,'Times New Roman',serif; font-size:17px; line-height:1.62; color:#20283f;">
              <p style="text-align:center; margin:0 0 26px;"><img src="https://newsletter.abidc.dev/uploads/email-its-alive-still.jpg" alt="It's Alive! — a scientist thrilled his creation just came to life (Young Frankenstein)" width="480" style="width:100%; max-width:480px; height:auto; border-radius:6px;"></p>

<h1>You can just build things</h1>

<p>Welcome to <strong>Notes from the Machine</strong> — and thank you for being here for the very first one.</p>

<p>I'm Abid. Over the last couple of years I've quietly turned into a builder. Not because I trained as an engineer — I didn't — but because at some point the distance between <em>"I wish this existed"</em> and <em>"it exists now"</em> got short enough to walk. An AI assistant that runs a good chunk of my day. A home server humming with tools I used to rent. Small products. Automations doing the boring parts of my work while I sleep.</p>

<p>This newsletter is where I write down what I learn as I build — real things, explained plainly enough that you could go and do your own version. No hype cycles, no "10 tools you must try." Just field notes from someone actually in the workshop.</p>

<p>And there's one belief under all of it: <strong>you can just build things.</strong> The gate that used to stand between an idea and a working version of it — a degree, a team, a budget, someone's permission — is quietly coming off its hinges. Being a "builder" isn't a job title. It's a posture.</p>

<p>So let's not just talk about it. Here's your first one.</p>

<hr>

<h2>Your first build: turn that old laptop into a server</h2>

<p><a href="https://abidc.dev/blog/getting-started-self-hosting"><img src="https://newsletter.abidc.dev/uploads/email-issue001-hero.jpg" alt="An old laptop reborn as a home server, glowing on a desk among houseplants" width="520" style="width:100%; max-width:520px; height:auto; border-radius:4px;"></a></p>

<p>Somewhere in your house there's probably a laptop in a drawer. Too slow for what you bought it for, too fine to throw away. It's doing nothing — and it's more computer than most of the internet ran on twenty years ago.</p>

<p>My first proper post is about giving it a job. It's a beginner's guide to <strong>self-hosting</strong>: running the apps you normally rent — notes, photos, files, PDF tools — on hardware <em>you</em> own, for free. You'll learn what self-hosting actually is, why it's the single best first project for becoming a builder, whether to start with an <strong>old laptop or a $5 VPS</strong>, and a copy-paste <strong>30-minute Docker how-to</strong> that ends with a real, useful app running on your own machine.</p>

<p>If you've been waiting for permission to start building something — this is a good place to cross the line.</p>

<p><a href="https://abidc.dev/blog/getting-started-self-hosting"><strong>→ Read: You Can Just Host Things</strong></a></p>

<hr>

<h2>What to expect</h2>

<p>Roughly twice a month, one of these lands in your inbox: a real thing I built or figured out, written so you could go do it too. If that's not for you, no hard feelings — the unsubscribe link is right at the bottom.</p>

<p>But if any part of you is itching to make something instead of just using what everyone else made… you're in the right place. Go give that laptop a job — and tell me how it goes; just hit reply.</p>

<p>Talk soon,<br>— Abid</p>

            </td>
          </tr>

          
          <tr>
            <td class="px" style="padding:14px 40px 34px;">
              <hr class="divider" style="border:0; border-top:1px solid #e9ecef; margin:0 0 18px;">
              <p style="margin:0 0 16px; font-family:'Inter',Helvetica,Arial,sans-serif; font-size:14px; line-height:1.6; color:#20283f;">
                Enjoying this? If you think someone else would find it useful, <strong style="color:#0b132b;">forward it their way</strong> &mdash; they can subscribe at <a href="https://abidc.dev" style="color:#e63946; text-decoration:none;">abidc.dev</a>.
              </p>
              <p class="footer-text" style="margin:0 0 10px; font-family:'Inter',Helvetica,Arial,sans-serif; font-size:13px; line-height:1.6; color:#6b7280;">
                You're receiving this because you subscribed at <a href="https://abidc.dev" style="color:#e63946; text-decoration:none;">abidc.dev</a>.
              </p>
              <p class="footer-text" style="margin:0; font-family:'Inter',Helvetica,Arial,sans-serif; font-size:13px; line-height:1.6; color:#6b7280;">
                <a href="https://newsletter.abidc.dev/subscription/e3a386c7-194b-4a42-81c2-47be5c9ca042/" style="color:#6b7280; text-decoration:underline;">Unsubscribe</a>
                &nbsp;&middot;&nbsp;
                <a href="https://newsletter.abidc.dev/campaign/e3a386c7-194b-4a42-81c2-47be5c9ca042/" style="color:#6b7280; text-decoration:underline;">View in browser</a>
              </p>
            </td>
          </tr>
        </table>

        <table role="presentation" class="wrap" width="600" cellpadding="0" cellspacing="0" border="0" style="width:600px; max-width:600px;">
          <tr><td align="center" style="padding:18px 12px 0;"><span class="footer-text" style="font-family:'JetBrains Mono','Courier New',monospace; font-style:italic; font-size:12px; color:#9aa3b8;">notes from the machine &middot; abidc.dev</span></td></tr>
        </table>

      </td>
    </tr>
  </table>

  <img src="https://newsletter.abidc.dev/campaign/e3a386c7-194b-4a42-81c2-47be5c9ca042/00000000-0000-0000-0000-000000000000/px.png" alt="" />
</body>
</html>
]]></content:encoded>
      <pubDate>Sat, 01 Aug 2026 04:13:25 +0000</pubDate>
    </item>
  </channel>
</rss>