<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>NJVERSE — Nattapong Jaisabai</title>
    <link>https://njverse.dev</link>
    <description>Software engineer. Bangkok. Backend &amp; infra. I build systems-y things.</description>
    <language>en</language>
    <atom:link href="https://njverse.dev/rss.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Tue, 26 May 2026 00:00:00 GMT</lastBuildDate>

  <item>
    <title>เขียน Go ยังไงไม่ให้เพื่อนร่วมทีมเกลียด</title>
    <link>https://njverse.dev/posts/0x08-golang-thai/</link>
    <guid isPermaLink="true">https://njverse.dev/posts/0x08-golang-thai/</guid>
    <pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate>
    <category>go</category>
    <description>ประสบการณ์จริงจากการเขียน Go ในทีม backend ที่ Bangkok — error handling ที่ไม่ทำให้คนอ่านอยากลาออก, struct patterns ที่ยังอ่านออกหลัง 6 เดือน, และทำไม context ถึงไม่ใช่ของเล่น.</description>
  </item>
  <item>
    <title>rewriting my dotfiles. for the 4th time. cope.</title>
    <link>https://njverse.dev/posts/0x00-rewriting-dotfiles/</link>
    <guid isPermaLink="true">https://njverse.dev/posts/0x00-rewriting-dotfiles/</guid>
    <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
    <category>meta</category>
    <description>every two years i convince myself the previous me was an idiot. this year's me will say the same in 2028. a love letter to yak-shaving.</description>
  </item>
  <item>
    <title>i RCE'd my own webapp and it was, frankly, embarrassing</title>
    <link>https://njverse.dev/posts/0x01-rce-webapp/</link>
    <guid isPermaLink="true">https://njverse.dev/posts/0x01-rce-webapp/</guid>
    <pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate>
    <category>sec</category>
    <description>what happens when you ship a feature at 3am. a postmortem on `eval()`, trust boundaries, and why your linter is a saint.</description>
  </item>
  <item>
    <title>building a 600-line container runtime in Go (because why not)</title>
    <link>https://njverse.dev/posts/0x02-container-runtime/</link>
    <guid isPermaLink="true">https://njverse.dev/posts/0x02-container-runtime/</guid>
    <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
    <category>systems</category>
    <description>cgroups, namespaces, and a healthy disrespect for runc. not production. probably illegal in 14 states.</description>
  </item>
  <item>
    <title>the cache invalidation post you didn't ask for</title>
    <link>https://njverse.dev/posts/0x03-cache-invalidation/</link>
    <guid isPermaLink="true">https://njverse.dev/posts/0x03-cache-invalidation/</guid>
    <pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate>
    <category>perf</category>
    <description>naming things is hard. cache invalidation is harder. doing both at 2am with a P1 open is a personality disorder.</description>
  </item>
  <item>
    <title>vim, 10 years in: still no idea how to quit</title>
    <link>https://njverse.dev/posts/0x04-vim-10-years/</link>
    <guid isPermaLink="true">https://njverse.dev/posts/0x04-vim-10-years/</guid>
    <pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate>
    <category>life</category>
    <description>an honest retrospective on muscle memory, hjkl, and the day i accidentally became a plugin maintainer.</description>
  </item>
  <item>
    <title>reverse-engineering my smart toaster (it's worse than you think)</title>
    <link>https://njverse.dev/posts/0x05-smart-toaster/</link>
    <guid isPermaLink="true">https://njverse.dev/posts/0x05-smart-toaster/</guid>
    <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
    <category>iot</category>
    <description>telnet on port 23. a hardcoded admin pw. firmware signed with the literal string 'PASSWORD'. send help.</description>
  </item>
  <item>
    <title>i replaced my entire CI with 80 lines of bash. it slaps.</title>
    <link>https://njverse.dev/posts/0x06-ci-bash/</link>
    <guid isPermaLink="true">https://njverse.dev/posts/0x06-ci-bash/</guid>
    <pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate>
    <category>tools</category>
    <description>yaml is not a programming language. and yet. here we are. a brief manifesto + the actual 80 lines.</description>
  </item>
  <item>
    <title>notes on running an LLM on a potato</title>
    <link>https://njverse.dev/posts/0x07-llm-potato/</link>
    <guid isPermaLink="true">https://njverse.dev/posts/0x07-llm-potato/</guid>
    <pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate>
    <category>ml, llm</category>
    <description>8GB of RAM, no GPU, vibes-only inference. quantization is a hell of a drug.</description>
  </item>
  </channel>
</rss>