<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Josh Baldespinosa — Blog</title>
    <link>https://josh.gajec.org/blog</link>
    <atom:link href="https://josh.gajec.org/rss.xml" rel="self" type="application/rss+xml" />
    <description>Backend engineering, Node.js, performance and the things I build.</description>
    <language>en</language>
    <lastBuildDate>Wed, 14 Oct 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Building this portfolio like a control plane</title>
      <link>https://josh.gajec.org/blog/building-a-control-plane-portfolio</link>
      <guid isPermaLink="true">https://josh.gajec.org/blog/building-a-control-plane-portfolio</guid>
      <pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate>
      <description>How this site turns scrolling into a trip through a server room — and the performance work it took to keep that smooth.</description>
      <category>React</category>
      <category>Three.js</category>
      <category>Performance</category>
      <category>Design</category>
    </item>
    <item>
      <title>Encrypting cookies with AES-256-GCM in Node.js</title>
      <link>https://josh.gajec.org/blog/encrypted-cookies-aes-gcm</link>
      <guid isPermaLink="true">https://josh.gajec.org/blog/encrypted-cookies-aes-gcm</guid>
      <pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate>
      <description>Signed cookies stop tampering, but anyone can still read them. Here is how to make cookies confidential and tamper-proof with nothing but node:crypto.</description>
      <category>Node.js</category>
      <category>Security</category>
      <category>Cryptography</category>
    </item>
    <item>
      <title>Inside the request lifecycle: from socket to handler</title>
      <link>https://josh.gajec.org/blog/inside-the-request-lifecycle</link>
      <guid isPermaLink="true">https://josh.gajec.org/blog/inside-the-request-lifecycle</guid>
      <pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate>
      <description>What actually happens between a TCP connection arriving and your route handler running — and where the time goes.</description>
      <category>Node.js</category>
      <category>HTTP</category>
      <category>Performance</category>
    </item>
    <item>
      <title>Introducing Kidlat: a Node.js framework that skips node:http</title>
      <link>https://josh.gajec.org/blog/introducing-kidlat</link>
      <guid isPermaLink="true">https://josh.gajec.org/blog/introducing-kidlat</guid>
      <pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate>
      <description>Why I built a web framework whose HTTP layer lives in C++ on top of libuv and N-API — and what that design buys you.</description>
      <category>Kidlat</category>
      <category>Node.js</category>
      <category>C++</category>
      <category>Performance</category>
    </item>
  </channel>
</rss>
