<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Invasikode — Code That Breaks, Explained</title>
    <link>https://invasikode.com</link>
    <description>Tech publication: programming tutorials, AI exploration, and software architecture guides.</description>
    <language>en</language>
    <lastBuildDate>Sat, 21 Nov 2026 01:00:00 +0000</lastBuildDate>
    <generator>Invasikode</generator>
    <atom:link href="https://invasikode.com/rss.xml" rel="self" type="application/rss+xml"/>
  <item>
    <title>What a Linked List Actually Is</title>
    <link>https://invasikode.com/p/tentang-struktur-data-linked-list</link>
    <guid isPermaLink="true">https://invasikode.com/p/tentang-struktur-data-linked-list</guid>
    <pubDate>Sat, 21 Nov 2026 01:00:00 +0000</pubDate>
    <description>A linked list is a linear chain of nodes, each holding data and a pointer to the next node. Here is what that chain looks like, what it costs next to an array, and the same minimal implementation in Java, Python, and JavaScript.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>struktur-data</category>
    <category>linked-list</category>
    <category>pointer</category>
    <category>konsep</category>
  </item>
  <item>
    <title>Why Understanding Algorithms and Data Structures Actually Matters</title>
    <link>https://invasikode.com/p/pentingnya-memahami-algoritma-dan-struktur-data</link>
    <guid isPermaLink="true">https://invasikode.com/p/pentingnya-memahami-algoritma-dan-struktur-data</guid>
    <pubDate>Thu, 19 Nov 2026 01:00:00 +0000</pubDate>
    <description>An algorithm is an ordered list of steps, and that order decides how expensive a problem is. The examples are on the back of an instant noodle packet, in a factorial, and behind ctrl+z.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>algoritma</category>
    <category>struktur-data</category>
    <category>konsep</category>
    <category>dasar</category>
  </item>
  <item>
    <title>At 11 a.m. the AI Quota Runs Out, and the Work Stops There</title>
    <link>https://invasikode.com/p/jam-11-kuota-ai-habis-kerjaan-berhenti</link>
    <guid isPermaLink="true">https://invasikode.com/p/jam-11-kuota-ai-habis-kerjaan-berhenti</guid>
    <pubDate>Thu, 12 Nov 2026 01:00:00 +0000</pubDate>
    <description>The panel says the usage limit is reached and the work stops, not because it is finished. Three guesses explain it, and all three are wrong: the limit is shaped like a cliff, and the day is built on top of one tool.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>ai</category>
    <category>tooling</category>
    <category>rate-limit</category>
    <category>produktivitas</category>
  </item>
  <item>
    <title>A 6,000-Token Handbook and a 0% Cache Hit Rate</title>
    <link>https://invasikode.com/p/cache-hit-rate-zero</link>
    <guid isPermaLink="true">https://invasikode.com/p/cache-hit-rate-zero</guid>
    <pubDate>Sun, 08 Nov 2026 01:20:00 +0000</pubDate>
    <description>Twenty-four turns, caching switched on, and a bill 21% higher than running with no cache at all. A support agent whose prompt looks static, and the three lines that quietly change it every turn.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>lab</category>
    <category>llm</category>
    <category>cache</category>
    <category>api</category>
  </item>
  <item>
    <title>What a Prompt Cache Actually Remembers</title>
    <link>https://invasikode.com/p/what-a-prompt-cache-remembers</link>
    <guid isPermaLink="true">https://invasikode.com/p/what-a-prompt-cache-remembers</guid>
    <pubDate>Sun, 08 Nov 2026 01:10:00 +0000</pubDate>
    <description>Four providers cache the same bytes under four different rulebooks. The question that decides your bill: when the second request is longer than the first, does it reuse the whole prefix or only the part that was already written?</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>llm</category>
    <category>ai-agent</category>
    <category>cache</category>
    <category>api</category>
  </item>
  <item>
    <title>Python venv: the Install That Went Into the Wrong Python</title>
    <link>https://invasikode.com/p/python-venv-pip</link>
    <guid isPermaLink="true">https://invasikode.com/p/python-venv-pip</guid>
    <pubDate>Sat, 07 Nov 2026 12:00:00 +0000</pubDate>
    <description>pip install printed Successfully installed, and the next run raised ModuleNotFoundError on the same machine. Two interpreters, one install, and the variable your script checks is the one the interpreter never sets.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>python</category>
    <category>venv</category>
    <category>pip</category>
  </item>
  <item>
    <title>Python Classes: the History Every Account Shared</title>
    <link>https://invasikode.com/p/python-class-object</link>
    <guid isPermaLink="true">https://invasikode.com/p/python-class-object</guid>
    <pubDate>Sat, 07 Nov 2026 01:00:00 +0000</pubDate>
    <description>Two accounts, and each history lists the other account&apos;s deposits. The list sat in the class body, append never writes to the object, so both accounts appended into the same one.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>python</category>
    <category>oop</category>
  </item>
  <item>
    <title>Java Operators: the Average That Came Out a Whole Number</title>
    <link>https://invasikode.com/p/java-operators</link>
    <guid isPermaLink="true">https://invasikode.com/p/java-operators</guid>
    <pubDate>Fri, 06 Nov 2026 01:00:00 +0000</pubDate>
    <description>Three scores, one division, and the average prints as 82. Both operands are int, so the fraction is cut off, and the obvious cast prints 82.0 without fixing anything.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>java</category>
    <category>operator</category>
  </item>
  <item>
    <title>Python Modules: the Import That Printed the Report</title>
    <link>https://invasikode.com/p/python-modules</link>
    <guid isPermaLink="true">https://invasikode.com/p/python-modules</guid>
    <pubDate>Fri, 06 Nov 2026 01:00:00 +0000</pubDate>
    <description>You pull one function out into its own file, import it, and the whole report runs again and eats your input. A module is a file, import runs it top to bottom, and one line decides which of the two jobs it is doing.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>python</category>
    <category>modules</category>
  </item>
  <item>
    <title>Caching That Never Hits Costs More Than No Caching</title>
    <link>https://invasikode.com/p/caching-that-never-hits</link>
    <guid isPermaLink="true">https://invasikode.com/p/caching-that-never-hits</guid>
    <pubDate>Wed, 04 Nov 2026 01:10:00 +0000</pubDate>
    <description>Same model, same conversation, same token count, and a bill five times higher. The cause is a prefix that changes, a write premium nobody reads about, and a cost curve that grows faster than the loop.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>llm</category>
    <category>ai-agent</category>
    <category>cache</category>
    <category>api</category>
  </item>
  <item>
    <title>Your Stream Dies at 125 Seconds and Nothing in Your Code Says 125</title>
    <link>https://invasikode.com/p/your-stream-dies-at-125-seconds</link>
    <guid isPermaLink="true">https://invasikode.com/p/your-stream-dies-at-125-seconds</guid>
    <pubDate>Wed, 04 Nov 2026 01:00:00 +0000</pubDate>
    <description>Streaming moves the wait into a connection that outlives the request. Four layers sit between the model and the browser, their idle timeouts disagree, and the smallest one ends your stream.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>streaming</category>
    <category>sse</category>
    <category>ai-agent</category>
    <category>api</category>
  </item>
  <item>
    <title>Python Strings: the Badge That Only Worked for One Name</title>
    <link>https://invasikode.com/p/python-strings</link>
    <guid isPermaLink="true">https://invasikode.com/p/python-strings</guid>
    <pubDate>Wed, 28 Oct 2026 13:00:00 +0000</pubDate>
    <description>The badge script printed the right name for the person who wrote it and the wrong name for everybody else. Slicing counts characters, and a name is words.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>python</category>
    <category>string</category>
  </item>
  <item>
    <title>Python Tuples: Why All Three Points Are the Same Point</title>
    <link>https://invasikode.com/p/python-tuples</link>
    <guid isPermaLink="true">https://invasikode.com/p/python-tuples</guid>
    <pubDate>Wed, 28 Oct 2026 12:00:00 +0000</pubDate>
    <description>Three points walk into a loop and come out identical. The list was never copied three times; the name was. A tuple makes that bug impossible.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>python</category>
    <category>tuple</category>
  </item>
  <item>
    <title>Python Sets: the Duplicate That Keeps Coming Back</title>
    <link>https://invasikode.com/p/python-sets</link>
    <guid isPermaLink="true">https://invasikode.com/p/python-sets</guid>
    <pubDate>Wed, 28 Oct 2026 11:00:00 +0000</pubDate>
    <description>A de-duplication loop that works on clean data leaves four tags where there should be two. The bug is case, and the fix is a set.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>python</category>
    <category>set</category>
  </item>
  <item>
    <title>Python Dictionaries: the Key That Isn&apos;t There</title>
    <link>https://invasikode.com/p/python-dictionary</link>
    <guid isPermaLink="true">https://invasikode.com/p/python-dictionary</guid>
    <pubDate>Wed, 28 Oct 2026 10:00:00 +0000</pubDate>
    <description>A word counter dies the first time it meets a word twice. The fix is one line; what takes longer is knowing which of a dict&apos;s three lookups to reach for.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>python</category>
    <category>dictionary</category>
  </item>
  <item>
    <title>So Your RAG Stops Hitting 504: Split the Query Path From Ingestion</title>
    <link>https://invasikode.com/p/rag-pisah-jalur-query-dan-ingestion</link>
    <guid isPermaLink="true">https://invasikode.com/p/rag-pisah-jalur-query-dan-ingestion</guid>
    <pubDate>Thu, 22 Oct 2026 01:30:00 +0000</pubDate>
    <description>One RAG service that both parses uploads and answers queries will fall over the moment someone uploads a 200-page PDF. The cure is two paths and one queue.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>rag</category>
    <category>cloud-run</category>
    <category>cloud-tasks</category>
    <category>gcp</category>
    <category>serverless</category>
    <category>arsitektur</category>
  </item>
  <item>
    <title>Linear or Graph: How to Run Many Agents Without an Eternal Loop</title>
    <link>https://invasikode.com/p/multi-agen-linear-atau-grafik</link>
    <guid isPermaLink="true">https://invasikode.com/p/multi-agen-linear-atau-grafik</guid>
    <pubDate>Wed, 21 Oct 2026 16:05:00 +0000</pubDate>
    <description>One agent with twenty tools gets messy fast. Once several agents revise each other, you need a graph that allows cycles and a number that makes it stop.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>multi-agent</category>
    <category>langgraph</category>
    <category>autogen</category>
    <category>orkestrasi</category>
    <category>checkpoint</category>
    <category>llm</category>
  </item>
  <item>
    <title>Why RAG That Leans on Cosine Similarity Alone Keeps Missing</title>
    <link>https://invasikode.com/p/kenapa-rag-cuma-cosine-similarity-sering-nyasar</link>
    <guid isPermaLink="true">https://invasikode.com/p/kenapa-rag-cuma-cosine-similarity-sering-nyasar</guid>
    <pubDate>Mon, 19 Oct 2026 02:04:06 +0000</pubDate>
    <description>RAG that leans only on embeddings returns chunks that look close in meaning, not the ones you need. Here is why, and the two layers that patch it.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>rag</category>
    <category>vector-search</category>
    <category>bm25</category>
    <category>hybrid-search</category>
    <category>retrieval</category>
    <category>embedding</category>
  </item>
  <item>
    <title>AI Agent Memory: From Vector Store to Temporal Graph</title>
    <link>https://invasikode.com/p/memori-ai-agent-vector-store-ke-temporal-graph</link>
    <guid isPermaLink="true">https://invasikode.com/p/memori-ai-agent-vector-store-ke-temporal-graph</guid>
    <pubDate>Sun, 18 Oct 2026 13:13:29 +0000</pubDate>
    <description>Two contradictory facts make an agent answer nonsense. Here is how a vector store and a temporal knowledge graph differ at keeping long-term state.</description>
    <dc:creator>Daffa Izzuddin</dc:creator>
    <category>ai</category>
    <category>llm</category>
    <category>backend</category>
    <category>system-design</category>
  </item>
  <item>
    <title>MCP, Rebuilt: Good News If You&apos;re Tired of Writing Connectors</title>
    <link>https://invasikode.com/p/mcp-dibongkar-ulang-kabar-baik-buat-kamu</link>
    <guid isPermaLink="true">https://invasikode.com/p/mcp-dibongkar-ulang-kabar-baik-buat-kamu</guid>
    <pubDate>Fri, 16 Oct 2026 05:00:00 +0000</pubDate>
    <description>You have a few internal APIs and one AI agent, but the code has to be rewritten every time the model changes. MCP ends that, and this year the protocol was rebuilt so servers can run like ordinary web servers. Here&apos;s what changed. 🔧</description>
    <dc:creator>Invasikode</dc:creator>
    <category>mcp</category>
    <category>model-context-protocol</category>
    <category>ai-agent</category>
    <category>llm</category>
    <category>backend</category>
    <category>python</category>
  </item>
  </channel>
</rss>
