<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cue Blog</title><description>Personal blog at blog.cue.my.id.</description><link>https://blog.cue.my.id/</link><item><title>The Memory Leak Detective: Debugging Long-Running Node.js Services</title><link>https://blog.cue.my.id/blog/debugging-node-memory-leaks/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/debugging-node-memory-leaks/</guid><description>Heap snapshots, diffing, the EventEmitter trap, and the closure trap — a practical field guide to finding memory leaks in Node.js services that were fine for weeks before they weren&apos;t.</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate><content:encoded>The worst kind of bug is the one that doesn&amp;#39;t exist on Monday and owns your pager by Friday. Memory leaks in Node.js services are exactly that: the process starts at a healthy 120 MB, climbs 2 MB an hour, and three weeks later the OOM killer has a new hobby. This is a field guide to finding those leaks — not with vibes, but with heap snapshots, diffing, and an understanding of the three traps that cause most of them. The shape of a leak A leak is not &amp;quot;memory goes up.&amp;quot; Memory goes up in every healthy process:…</content:encoded><category>javascript</category><category>engineering</category></item><item><title>Forgejo vs Gitea: Self-Hosting Your Git Server in 2026</title><link>https://blog.cue.my.id/blog/forgejo-vs-gitea-2026/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/forgejo-vs-gitea-2026/</guid><description>Same codebase, two futures. A practical comparison of Forgejo and Gitea — licensing, governance, federation, CI, and what actually changes when you pick one for your homelab.</description><pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate><content:encoded>If you self-host anything, you have probably stared at the Forgejo/Gitea choice and thought &amp;quot;they&amp;#39;re the same thing, right?&amp;quot; Four years after the fork, they are the same thing the way a river upstream and downstream of a dam is the same water. Same origin, diverging behavior. This is a practical comparison for someone running a handful of repos on a $10 VPS or an old mini-PC — what actually differs, and how to choose. A fork by necessity Gitea began in 2016 as a community fork of Gogs, and by 2021 it was the default self-hosted Git server: one…</content:encoded><category>selfhosted</category><category>docker</category><category>homelab</category></item><item><title>SQL Window Functions: The Query Feature You&apos;re Not Using</title><link>https://blog.cue.my.id/blog/sql-window-functions/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/sql-window-functions/</guid><description>ROW_NUMBER, RANK, LAG, LEAD, running totals, moving averages, top-N-per-group — a deep dive into window functions and the queries they make embarrassingly simple.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Every developer hits the same wall eventually: you need &amp;quot;the latest order per customer,&amp;quot; or &amp;quot;the running total,&amp;quot; or &amp;quot;the rank of each product in its category,&amp;quot; and the query turns into a pile of self-joins, correlated subqueries, and muttered curses. Window functions exist precisely to make these queries trivial — and yet they&amp;#39;re the most under-taught feature in SQL. This is the deep dive I wish I&amp;#39;d had: what they are, how OVER() works, and the half-dozen patterns that cover 90% of real uses. The mental model: GROUP BY collapses, windows don&amp;#39;t GROUP BY takes many rows and returns…</content:encoded><category>engineering</category><category>notes</category></item><item><title>Six Months With the Framework Laptop 16</title><link>https://blog.cue.my.id/blog/framework-laptop-16-review/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/framework-laptop-16-review/</guid><description>A long-term review of the modular, repairable 16-inch laptop: the expansion bay, the GPU module, Linux support, battery life, and whether the repairability premium is actually worth it.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><content:encoded>I bought the Framework Laptop 16 in March. Six months later — through a cross-country move, a conference, and a month where it was my only computer — here is the review I wanted before spending $2,300 on a laptop whose whole pitch is &amp;quot;you&amp;#39;ll never have to buy another one.&amp;quot; The 16 is a working laptop in the truest sense — everything on it is a user-serviceable part. Photo by Glenn Carstens-Peters on Unsplash Why I bought it The pitch is simple and it worked on me: every part is user-replaceable. The RAM is SODIMM. The SSD is a…</content:encoded><category>review</category><category>hardware</category><category>product</category></item><item><title>The Keychron Q1 Max: A Review of My Endgame Keyboard</title><link>https://blog.cue.my.id/blog/keychron-q1-max-review/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/keychron-q1-max-review/</guid><description>Gasket mount, QMK/VIA, wireless latency, and the endless modding rabbit hole — six months with the keyboard that was supposed to end the hobby, and why it almost did.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><content:encoded>There is a joke in the mechanical keyboard community that the hobby is 10% typing and 90% shopping for the keyboard you&amp;#39;ll type on. I have owned seven keyboards in four years — a trajectory that peaked with a soldered custom build I was too scared to modify. Then I bought a Keychron Q1 Max, and the hobby quietly ended. This is the review of the keyboard that retired me. What you get for $199 The Q1 Max is a 75% layout (function row, no numpad), CNC aluminum case, gasket-mounted plate, knob, and hot-swap sockets. Out of the box it…</content:encoded><category>review</category><category>hardware</category><category>product</category></item><item><title>Ownership Without Tears: How Rust Prevents Whole Bug Classes</title><link>https://blog.cue.my.id/blog/rust-ownership-explained/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/rust-ownership-explained/</guid><description>Use-after-free, data races, double frees — Rust&apos;s ownership model doesn&apos;t make these bugs rarer, it makes them unrepresentable. A technical walkthrough of moves, borrows, and lifetimes.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><content:encoded>C, C++, and Java have a subtle difference that takes years to appreciate: C and C++ give you the bugs, Java gives you the garbage collector, and Rust gives you a compiler that argues with you until the bugs are impossible. The mechanism is ownership — and it&amp;#39;s the most misunderstood, most feared, and most genuinely powerful idea in modern systems programming. This is the explanation I wish someone had given me. The two bugs ownership kills Before Rust, memory safety meant choosing between two failure modes: Manual memory management (C/C++) : you free memory yourself, and every free() is…</content:encoded><category>rust</category><category>engineering</category><category>technical</category></item><item><title>Why Your Wi-Fi Is Slow: A Technical Deep Dive</title><link>https://blog.cue.my.id/blog/why-your-wifi-is-slow/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/why-your-wifi-is-slow/</guid><description>Channel width, SNR, retries, MIMO, backhaul, and the ISP. The real reasons home Wi-Fi underperforms, ranked by how often they&apos;re actually the culprit.</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&amp;quot;Reboot the router&amp;quot; is the universal fix because the router is rarely the problem and the reboot feels like progress. The actual reasons home Wi-Fi underperforms are physical, knowable, and mostly fixable — if you know which layer to blame. This is a walk through the radio physics, the protocol mechanics, and the one measurement that tells you which one you&amp;#39;re fighting. The spectrum: three neighborhoods, three personalities Your Wi-Fi lives in three bands with very different physics: 2.4 GHz — long range, terrible bandwidth. It penetrates walls like a rumor, but the band is only ~80 MHz wide and…</content:encoded><category>engineering</category><category>hardware</category><category>technical</category></item><item><title>The Geometry of Cities: Why Grids Beat Chaos</title><link>https://blog.cue.my.id/blog/geometry-of-cities/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/geometry-of-cities/</guid><description>From Roman castra to Manhattan&apos;s numbered avenues to Barcelona&apos;s superblocks — how the shape of a street network shapes walkability, commerce, and the character of a city.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Stand at the intersection of two numbered streets in Manhattan and you can estimate how far anything else is with arithmetic. Stand in the warren of an old European medina and you navigate by landmark, instinct, and hope. Both are deliberate — one is a technology, the other an accretion — and the difference between them is the most underrated variable in urban life: the geometry of the street network. The grid is a technology The grid is not the absence of planning; it is one of humanity&amp;#39;s oldest planning technologies. Roman castra — military camps — were laid out…</content:encoded><category>street</category><category>city</category><category>culture</category></item><item><title>The Art of Golden Hour Photography</title><link>https://blog.cue.my.id/blog/art-of-golden-hour/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/art-of-golden-hour/</guid><description>Why the hour after sunrise and before sunset makes every photo better — the physics of low-angle light, exposure strategy, composition, and the post-processing that keeps the warmth honest.</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Every photographer learns the same rule in week one: shoot at golden hour. It&amp;#39;s also the rule most beginners abandon by month three, because golden hour happens at 6 a.m. and 7 p.m., requires planning, and — here&amp;#39;s the part nobody says — rewards understanding why it works. This is the physics and craft behind the most reliable light in photography, and how to use it deliberately instead of as a lucky accident. What golden hour actually is Golden hour isn&amp;#39;t a time; it&amp;#39;s an angle. It&amp;#39;s the period when the sun sits below about 10 degrees of elevation, which…</content:encoded><category>photos</category><category>culture</category></item><item><title>DNS, Explained: From Resolvers to Encrypted Queries</title><link>https://blog.cue.my.id/blog/dns-explained/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/dns-explained/</guid><description>The recursive chain, caching and TTLs, DNSSEC, and the privacy problem that DoH and DoT were built to solve — a complete walkthrough of the internet&apos;s most invisible critical system.</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Every request you make on the internet starts with a phonebook lookup so fast you never notice it — and so foundational that when it breaks, the entire internet &amp;quot;is down&amp;quot; while every server is perfectly healthy. DNS is the internet&amp;#39;s most critical invisible system, and most developers&amp;#39; understanding of it stops at &amp;quot;it turns names into IPs.&amp;quot; This is the full walkthrough: the chain, the caching, the security model, and the quiet privacy war that&amp;#39;s redefining the protocol. The lookup: a chain of four servers When your browser asks for example.com , it doesn&amp;#39;t ask one server. It walks…</content:encoded><category>engineering</category><category>privacy</category><category>technical</category></item><item><title>Building a Tiny Static Site Generator in 200 Lines of Python</title><link>https://blog.cue.my.id/blog/tiny-static-site-generator-python/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/tiny-static-site-generator-python/</guid><description>Front matter, Markdown, layouts, and a build graph — a complete static site generator in 200 lines, and everything you learn about the real ones by writing your own.</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate><content:encoded>There is no faster way to understand a tool than to build a worse version of it. Static site generators look like magic — Markdown in, website out — until you write one and realize the entire job is four steps: read files, parse front matter, render Markdown, wrap in a layout. This is that generator: complete, readable, and short enough to hold in your head. You will come out the other side understanding Hugo, Astro, and Eleventy better than any tutorial could teach you. The pipeline Every SSG is the same pipeline with different polish: Read all content files…</content:encoded><category>python</category><category>engineering</category></item><item><title>Why Small Language Models Are Quietly Winning</title><link>https://blog.cue.my.id/blog/small-language-models-winning/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/small-language-models-winning/</guid><description>The frontier models get the headlines; the 1–8B models get the deployments. Distillation, quantization, routing, and the economics that make small models the default for real products.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Every month brings another frontier-model headline: a benchmark crushed, a context window doubled, a price cut that makes the previous model look like a mistake. Meanwhile, quietly, most of the actual language-model inference happening in production is done by models nobody writes headlines about — the 1B to 8B parameter class running on CPUs, laptops, and edge devices. This is the analysis of why small models won, and why the frontier race is increasingly irrelevant to most real deployments. The compute cliff The uncomfortable physics behind the whole story: frontier capability scales superlinearly with compute, and so does frontier cost.…</content:encoded><category>ai</category><category>llm</category></item><item><title>The Best Budget Audio Gear I Tested in 2026</title><link>https://blog.cue.my.id/blog/budget-audio-gear-2026/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/budget-audio-gear-2026/</guid><description>IEMs under $50, a $99 headphone that embarrasses $300 ones, DAC dongles, and the diminishing-returns curve — a year of budget audio testing, with the picks that survived.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><content:encoded>There is a dirty secret in the audio world: the price-to-performance curve isn&amp;#39;t a line, it&amp;#39;s a cliff. Below about $50, every dollar buys enormous improvement. Between $50 and $200, the curve flattens. Above $300, you&amp;#39;re mostly buying materials, branding, and the feeling of having bought something better. This is the gear I actually tested over the last year — not from spec sheets, but from hours of listening — and the picks that prove the budget tier is where the smart money lives. How I test A review is only as good as its protocol. For every product here…</content:encoded><category>review</category><category>product</category><category>audio</category></item><item><title>Decap CMS is good</title><link>https://blog.cue.my.id/blog/decap-cms-is-good/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/decap-cms-is-good/</guid><description>Some description here</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate><content:encoded>We spend an absurd amount of time trying to eliminate friction from our daily lives. We buy one-click purchasing devices, set up automated macro flows, optimize our morning routines down to the second, and install browser extensions to skip video intros. The modern design ideal is simple: zero resistance between desire and execution. But lately, I&amp;#39;ve been experimenting with a counter-intuitive practice: adding intentional friction back into my day. Why Smooth Isn&amp;#39;t Always Better When you remove every obstacle between yourself and an action, you don&amp;#39;t just eliminate effort—you eliminate the pause. And that pause is usually where critical thinking,…</content:encoded><category>cms</category><category>blog</category></item><item><title>The Science of Pour-Over Coffee</title><link>https://blog.cue.my.id/blog/science-of-pour-over-coffee/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/science-of-pour-over-coffee/</guid><description>Extraction chemistry, grind size, water hardness, the bloom, and why the 4:6 method works — the variables behind a great cup, ranked by how much they actually matter.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Coffee is the most chemically complex beverage most people drink — over a thousand aromatic compounds, extracted by hot water from a roasted seed, in under four minutes. And yet most brewing advice is folklore: &amp;quot;use a medium grind,&amp;quot; &amp;quot;pour slowly,&amp;quot; &amp;quot;don&amp;#39;t boil the water.&amp;quot; The folklore works, but it works because it encodes chemistry. This is the science behind the folklore, and the variables ranked by how much they actually change your cup. Extraction: the only thing that matters Everything in brewing is in service of one number: extraction yield — the percentage of the coffee&amp;#39;s soluble mass that…</content:encoded><category>culture</category><category>notes</category></item><item><title>My Homelab Monitoring Stack: Observability on a Budget</title><link>https://blog.cue.my.id/blog/homelab-monitoring-stack/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/homelab-monitoring-stack/</guid><description>Prometheus, Grafana, Loki, and Alertmanager on one old mini-PC — the complete monitoring stack I run for 14 services, with the dashboards, alerts, and lessons learned.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><content:encoded>My homelab runs 14 services — reverse proxy, Git server, media stack, backup daemon, a few experiments — on a used mini-PC with 16 GB of RAM and a 1 TB SSD. For a year I ran it with no monitoring at all: services either worked or didn&amp;#39;t, and I found out when something stopped responding. Then I spent a weekend building a real observability stack, and the difference isn&amp;#39;t just &amp;quot;I get alerts&amp;quot; — it&amp;#39;s that I now know what my machines are doing before they break. This is that stack: the pieces, the configs, and the honest lessons…</content:encoded><category>selfhosted</category><category>docker</category><category>homelab</category><category>engineering</category></item><item><title>The Frontier LLM Field Guide I Actually Use</title><link>https://blog.cue.my.id/blog/frontier-llm-comparison-2026/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/frontier-llm-comparison-2026/</guid><description>GPT, Claude, Gemini, and the open-weight challengers — how the leading models differ in practice, and how to pick one for real work instead of for a benchmark.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Every model comparison on the internet is stale within a quarter, including — eventually — this one. Labs ship major updates on a cadence measured in weeks, and a benchmark table from March is a historical document by September. So instead of scores, this is the thing that stays useful: how the leading models differ in character , and a method for choosing between them that survives the next release cycle. Treat the names below as &amp;quot;the current version of each lab&amp;#39;s flagship as you read this,&amp;quot; because that is the only stable way to talk about them. The four…</content:encoded><category>ai</category><category>llm</category><category>review</category></item><item><title>Running a Useful LLM on Your Own Laptop</title><link>https://blog.cue.my.id/blog/local-llm-on-a-laptop/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/local-llm-on-a-laptop/</guid><description>A practical guide to local models in 2026: what runs on ordinary hardware, what the tradeoffs really are, and when local beats the cloud.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><content:encoded>The pitch for local LLMs used to require an asterisk the size of the pitch itself: useful, if you buy a GPU the price of a used car. That asterisk is mostly gone. In 2026, a perfectly ordinary laptop — the fanless one you bought for browser tabs — runs models that would have been state-of-the-art two years ago. Not everything runs on it. But the gap between &amp;quot;local&amp;quot; and &amp;quot;cloud&amp;quot; has narrowed from a canyon to a curb. This is the guide I wish I had when I started: what to run, what to expect, and the honest list…</content:encoded><category>ai</category><category>local-llm</category><category>privacy</category></item><item><title>Teaching Your Agent to Say &apos;I Don&apos;t Know&apos;</title><link>https://blog.cue.my.id/blog/teaching-your-agent-to-say-i-dont-know/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/teaching-your-agent-to-say-i-dont-know/</guid><description>The most valuable behavior in an agentic system is not intelligence — it is the ability to stop, admit uncertainty, and ask for help before doing damage.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><content:encoded>There is a moment in every agent project where you watch the thing confidently walk off a cliff. Not because it is stupid — because it is confident . The model could not retrieve the customer record, so it inferred one. The API returned an error, so it assumed success. The task was under-specified, so it picked the most likely interpretation and ran with it, at machine speed, into production. The single biggest difference between agents that people trust and agents that people quietly disable is not reasoning quality. It is whether the system knows when to stop and ask.…</content:encoded><category>ai</category><category>agentic-ai</category><category>product</category></item><item><title>The Machines Behind This Blog: A Photo Essay</title><link>https://blog.cue.my.id/blog/the-machines-behind-this-blog/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/the-machines-behind-this-blog/</guid><description>Three photographs of the hardware that keeps this site online — a laptop, a rack of servers, and a circuit board — and what each one says about running a zero-cost static web.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Every static site is an argument about hardware. Ours says: you don&amp;#39;t need much of it. These three photographs are the whole supply chain — the desk where the words are written, the racks where they are cached, and the silicon doing the actual thinking at the edge. The desk where it compiles The entire production system: a laptop, an editor, and a build command. Everything else is someone else&amp;#39;s computer. Photo by Maik Jonietz on Unsplash The whole blog ships from a single pnpm build . No database to migrate, no server to patch, no staging environment drifting from…</content:encoded><category>hardware</category><category>photos</category></item><item><title>My Selfhosted Stack in 2026, Audited</title><link>https://blog.cue.my.id/blog/my-selfhosted-stack-2026/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/my-selfhosted-stack-2026/</guid><description>A yearly review of everything running on my own hardware: what survived, what got deleted, and what I would tell anyone starting from zero.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Once a year I do an audit of my selfhosted setup. Not a &amp;quot;check for updates&amp;quot; pass — an honest review of every service with one question: if this disappeared tonight, would I actually miss it? Anything that fails the question gets a backup, an export, and a delete command. This year&amp;#39;s audit killed four services and promoted two. Here is the whole stack, what survived, and why. The rules I self-host by Before the list, the rules, because the rules are what keeps the stack maintainable by one person with a job: Everything in Docker Compose. One directory, one…</content:encoded><category>selfhosted</category><category>homelab</category><category>docker</category></item><item><title>The Boring Truth About Agentic AI</title><link>https://blog.cue.my.id/blog/the-boring-truth-about-agentic-ai/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/the-boring-truth-about-agentic-ai/</guid><description>Most agent demos are choreography. The agents that actually earn their keep look less like movie robots and more like a diligent junior employee with a checklist.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate><content:encoded>Every few weeks someone posts a video of an AI agent booking a flight, ordering lunch, and filing an expense report in ninety seconds. The video is real. What the video hides is the forty retries, the two credit cards it almost maxed, and the human sitting off-camera with a kill switch. I have spent the better part of this year shipping things I would call agentic — not because it is a trendy word, but because at some point the loop stopped needing me to press enter after every step. And the honest summary is this: production agents are…</content:encoded><category>ai</category><category>agentic-ai</category><category>engineering</category></item><item><title>A Little JavaScript That Survives Reload</title><link>https://blog.cue.my.id/blog/a-little-javascript-that-survives-reload/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/a-little-javascript-that-survives-reload/</guid><description>A single-file, framework-free note keeper with persistence, search, import/export, and keyboard flow — built to keep working when your CMS doesn&apos;t.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><content:encoded>Sometimes the best CMS is a single HTML file that writes to itself. This is that file, stripped to its essentials — no framework, no bundler, just sensible JavaScript that persists through reloads and stays usable with only a keyboard. Copy it, change the storage key, ship it. It&amp;#39;ll outlive most dependencies. The code 1 // cue-notes.js — vanilla note keeper for a single HTML page 2 // Features: create/edit/delete, localStorage persistence, search, 3 // tags, import/export, keyboard shortcuts, and no dependencies. 4 5 const STORAGE_FALLBACK_KEY = &quot;cue-notes:v1&quot; ; 6 7 /** @typedef {{ id: string; title: string; body: string;…</content:encoded><category>javascript</category><category>craft</category></item><item><title>Night Markets and Network Effects</title><link>https://blog.cue.my.id/blog/night-markets-and-network-effects/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/night-markets-and-network-effects/</guid><description>Pasar malam stalls trade in attention, not just food — lessons on why some queues get longer just because they&apos;re long.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><content:encoded>You choose a queue at a pasar malam without tasting anything. You just look at the line. The martabak stall with twelve people feels safer than the empty one with nicer signage. That is not taste. That is a network effect: value grows because others have already chosen it. For a while I thought this was a bug in human judgment. Now I think it is the feature. Trust is expensive to compute, so we outsource it to the crowd. What a good stall does with this Make the queue legible. Price board big, motions visible. People need to see…</content:encoded><category>culture</category><category>city</category></item><item><title>Tiny CMS, Big Ideas: A Food Cart Ledger</title><link>https://blog.cue.my.id/blog/tiny-cms-big-ideas/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/tiny-cms-big-ideas/</guid><description>How a Jakarta street cart keeps perfect books without a database — just a notebook, a stamp, and a ruthless closing routine.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><content:encoded>I spent an afternoon watching Bu Lia sell sate on Jalan Sabang. Her CMS is a single exercise book, ruled by hand. Every page is one day. Left column is stock in, right is stock out. A red stamp says LUNAS when a customer pays up. At closing, she draws one thick line, writes the day&amp;#39;s total, then rips the carbon copy for her nephew who handles the morning market run. No migrations. No auth. Just a ledger that has to survive rain. What it taught me Write the minimal record that lets you reconcile tomorrow. Everything else is vanity…</content:encoded><category>notes</category><category>street</category></item><item><title>Hello, Cue Blog</title><link>https://blog.cue.my.id/blog/hello-cueblog/</link><guid isPermaLink="true">https://blog.cue.my.id/blog/hello-cueblog/</guid><description>The first post on the Cue Blog — a static Astro 7 site with Markdoc and Decap CMS.</description><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate><content:encoded>This is the first post, written as Markdoc in a .mdoc file. Astro renders this through @astrojs/markdoc , so plain Markdown is valid Markdoc. Custom tags (like youtube , tweet , and instagram ) are defined in markdoc.config.ts at the project root. Static output ( output: &amp;#39;static&amp;#39; ) Hosted on Cloudflare Pages (free tier) Authored via Decap CMS or directly in Git</content:encoded><category>meta</category></item></channel></rss>