<?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>DEV Community: Hoa Trinh</title>
    <description>The latest articles on DEV Community by Hoa Trinh (@hoatrinhdev).</description>
    <link>https://dev.to/hoatrinhdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2885305%2F0fa2c52e-a0b3-41aa-a95a-d3518ac233e3.png</url>
      <title>DEV Community: Hoa Trinh</title>
      <link>https://dev.to/hoatrinhdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hoatrinhdev"/>
    <language>en</language>
    <item>
      <title>I gamed Copilot's billing model and built a plugin to do it properly</title>
      <dc:creator>Hoa Trinh</dc:creator>
      <pubDate>Fri, 08 May 2026 16:32:28 +0000</pubDate>
      <link>https://dev.to/hoatrinhdev/i-gamed-copilots-billing-model-and-built-a-plugin-to-do-it-properly-10ce</link>
      <guid>https://dev.to/hoatrinhdev/i-gamed-copilots-billing-model-and-built-a-plugin-to-do-it-properly-10ce</guid>
      <description>&lt;p&gt;I have been running agentic workflows daily for over a year. Jobs, side projects, experiments. The stack keeps changing. The habits around it slowly solidify.&lt;/p&gt;

&lt;p&gt;The part worth paying attention to is the billing math: the Copilot usage table only showed about $10 in orchestrator spend, while the subagents in my pack did much more work off that meter.&lt;/p&gt;

&lt;p&gt;I started with GitHub Copilot, used Claude Code for work for more than eight months, and eventually moved to OpenCode. Each switch taught me something. None of them felt final.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1555066931-4365d14bab8c%3Fauto%3Dformat%26fit%3Dcrop%26w%3D1600%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1555066931-4365d14bab8c%3Fauto%3Dformat%26fit%3Dcrop%26w%3D1600%26q%3D80" alt="Developer at a dark desk with a terminal open" width="1600" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The upgrade that made me pay attention
&lt;/h2&gt;

&lt;p&gt;A few weeks ago I upgraded from Copilot Pro to Pro+. Not for any specific reason. I wanted to try the newer models through OpenCode, and Pro+ unlocks more of them.&lt;/p&gt;

&lt;p&gt;While I was testing the setup, I noticed something. When a primary agent spawns a subagent, the subagent calls do not count against your Copilot premium request quota. The main orchestrator eats a request. The subagents work for free.&lt;/p&gt;

&lt;p&gt;That is a big deal if your workflow is built around delegation.&lt;/p&gt;

&lt;p&gt;Right around the same time, Copilot announced the new usage-based billing kicking in June 1, 2026. Premium requests will be billed at $0.04 each once you exceed your monthly included quota. So the loophole I found just became a lot more valuable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spec-driven development already solved the hard part
&lt;/h2&gt;

&lt;p&gt;I had been using the &lt;a href="https://github.com/obra/superpowers" rel="noopener noreferrer"&gt;Superpowers&lt;/a&gt; plugin pack for a while. The core idea is Spec Driven Development: before any code gets written, you brainstorm, write a spec, write a plan, then implement task by task with review at each step. It sounds slow. It is actually faster because you stop mid-implementation a lot less.&lt;/p&gt;

&lt;p&gt;The problem was that Superpowers was built for Claude Code. I was on OpenCode.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://github.com/mrth2/opencode-superpowers" rel="noopener noreferrer"&gt;opencode-superpowers&lt;/a&gt;: an agent pack that brings the same SDD workflow to OpenCode, with one key addition. Each agent in the pipeline is assigned a model tuned for its job, and the whole thing is wired to exploit the subagent billing gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  how the model assignment works
&lt;/h2&gt;

&lt;p&gt;The pack installs six agents. Here is how the &lt;code&gt;copilot&lt;/code&gt; profile assigns models:&lt;/p&gt;

&lt;p&gt;| Agent | Model | Role | |---|---|---| | &lt;code&gt;superpowers&lt;/code&gt; (orchestrator) | GPT-5.4 mini | Brainstorm, delegate, coordinate | | &lt;code&gt;superpowers-spec-writer&lt;/code&gt; | GPT-5.5 | Write and self-audit the design spec | | &lt;code&gt;superpowers-plan-writer&lt;/code&gt; | Claude Opus 4.7 | Turn spec into executable plan | | &lt;code&gt;superpowers-implementer&lt;/code&gt; | Claude Sonnet 4.6 | Execute plan task by task | | &lt;code&gt;superpowers-code-reviewer&lt;/code&gt; | GPT-5.4 | Review each task before finalizing |&lt;/p&gt;

&lt;p&gt;The orchestrator runs on GPT-5.4 mini. It is cheap, fast, and good enough for routing and coordination. The heavy thinking happens in subagents where the premium request cost does not apply. So you get Opus-quality planning and Sonnet-quality implementation essentially for free under the current billing rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the numbers actually look like
&lt;/h2&gt;

&lt;p&gt;Eight days of real work, May 1 to May 8. Here is the full usage breakdown:&lt;/p&gt;

&lt;p&gt;| Model | Included requests | Billed requests | Gross amount | Billed amount | |---|---|---|---|---| | GPT-5.4 mini | 129.69 | 0 | $5.19 | &lt;strong&gt;$0.00&lt;/strong&gt; | | Claude Sonnet 4.6 | 48 | 0 | $1.92 | &lt;strong&gt;$0.00&lt;/strong&gt; | | GPT-5.4 | 31 | 0 | $1.24 | &lt;strong&gt;$0.00&lt;/strong&gt; | | GPT-5.3-Codex | 27 | 0 | $1.08 | &lt;strong&gt;$0.00&lt;/strong&gt; | | Gemini 3.1 Pro | 13 | 0 | $0.52 | &lt;strong&gt;$0.00&lt;/strong&gt; | | GPT-5.5 | 7.50 | 0 | $0.30 | &lt;strong&gt;$0.00&lt;/strong&gt; | | Claude Haiku 4.5 | 2.97 | 0 | $0.12 | &lt;strong&gt;$0.00&lt;/strong&gt; | | Gemini 2.5 Pro | 1 | 0 | $0.04 | &lt;strong&gt;$0.00&lt;/strong&gt; | | Grok Code Fast 1 | 0.50 | 0 | $0.02 | &lt;strong&gt;$0.00&lt;/strong&gt; |&lt;/p&gt;

&lt;p&gt;Total gross value in the Copilot usage table: ~$10.43. Billed: $0.00. That table only reflects the metered Copilot requests shown above, not the much larger usage from my agent pack subagents. In total, this consumed 260 premium request equivalents, all inside the included quota. That is the whole trick behind the headline. My 1500 monthly premium requests are at 17% used after 8 days of active shipping.&lt;/p&gt;

&lt;p&gt;In those 8 days: a full project release, a batch of bug fixes across two repos, and an MVP for a new macOS app. Not bad.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1484788984921-03950022c9ef%3Fauto%3Dformat%26fit%3Dcrop%26w%3D1600%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1484788984921-03950022c9ef%3Fauto%3Dformat%26fit%3Dcrop%26w%3D1600%26q%3D80" alt="Warm light over a keyboard late at night" width="1600" height="996"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that will not last
&lt;/h2&gt;

&lt;p&gt;Copilot will close this gap eventually. Billing rules change, quotas tighten, subagent calls will probably count at some point.&lt;/p&gt;

&lt;p&gt;But the workflow itself, SDD with a specialized agent per step, stays useful regardless of billing. The cost optimization is a nice bonus for now. The real value is the structure: you stop hacking at code before you understand the problem, and the review gates catch things before they compound.&lt;/p&gt;

&lt;p&gt;I am running it hard through May. After that, the Pro+ subscription goes. The agent pack stays.&lt;/p&gt;

&lt;p&gt;If you are on OpenCode and want to try it: &lt;code&gt;npx opencode-superpowers&lt;/code&gt;. It auto-detects your provider and installs everything.&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>AI made learning fun again</title>
      <dc:creator>Hoa Trinh</dc:creator>
      <pubDate>Fri, 01 May 2026 14:18:31 +0000</pubDate>
      <link>https://dev.to/hoatrinhdev/ai-made-learning-fun-again-4m1n</link>
      <guid>https://dev.to/hoatrinhdev/ai-made-learning-fun-again-4m1n</guid>
      <description>&lt;p&gt;For a long time, learning new dev stuff felt like homework.&lt;/p&gt;

&lt;p&gt;I could be curious enough to start, but not patient enough to stay. I would open the docs, then ten tabs, then a video, then another thread explaining the same thing in a different tone. Somewhere in that mess, the energy would drop. The thing I wanted to learn was still interesting. The process of learning it was not.&lt;/p&gt;

&lt;p&gt;That changed with generative AI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1516321318423-f06f85e504b3%3Fauto%3Dformat%26fit%3Dcrop%26w%3D1600%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1516321318423-f06f85e504b3%3Fauto%3Dformat%26fit%3Dcrop%26w%3D1600%26q%3D80" alt="Typing on a laptop while learning with AI" width="1600" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not because AI made me brilliant. It did something smaller and more useful: it removed just enough friction that I stopped quitting so early.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real problem was never information
&lt;/h2&gt;

&lt;p&gt;There is more learning material online than any one person could finish in a lifetime.&lt;/p&gt;

&lt;p&gt;So the problem was never access. It was everything around access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;too many tabs&lt;/li&gt;
&lt;li&gt;too much context switching&lt;/li&gt;
&lt;li&gt;too many small questions I felt silly asking&lt;/li&gt;
&lt;li&gt;too much time spent trying to understand the “obvious” part before reaching the useful part&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is the killer.&lt;/p&gt;

&lt;p&gt;When you are stuck on a tiny thing, the whole learning session starts to feel expensive. Then you stop. Not because the topic is hard, but because the momentum is gone.&lt;/p&gt;

&lt;p&gt;AI helped me keep the momentum.&lt;/p&gt;

&lt;h2&gt;
  
  
  It shortened the shame loop
&lt;/h2&gt;

&lt;p&gt;Before AI, there was always a little embarrassment attached to asking beginner questions.&lt;/p&gt;

&lt;p&gt;I knew I was supposed to already understand the thing. So instead of asking, I would try to power through with fragments from memory and half-understood docs. That usually made things worse.&lt;/p&gt;

&lt;p&gt;AI made it easier to say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Explain this like I know the basics, but not this exact detail.”&lt;/li&gt;
&lt;li&gt;“What am I missing here?”&lt;/li&gt;
&lt;li&gt;“Show me the simplest version first.”&lt;/li&gt;
&lt;li&gt;“Why would someone choose this approach instead of that one?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That sounds small, but it matters.&lt;/p&gt;

&lt;p&gt;The shorter the gap between confusion and clarification, the less likely I am to give up.&lt;/p&gt;

&lt;h2&gt;
  
  
  It turned passive reading into active learning
&lt;/h2&gt;

&lt;p&gt;I learn better when I am doing something with the information, not just reading it.&lt;/p&gt;

&lt;p&gt;AI helps me move from passive to active faster. I can ask it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;turn docs into a small exercise&lt;/li&gt;
&lt;li&gt;quiz me on the idea&lt;/li&gt;
&lt;li&gt;compare two approaches&lt;/li&gt;
&lt;li&gt;generate a toy example&lt;/li&gt;
&lt;li&gt;explain the tradeoff in plain language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That changes the vibe completely.&lt;/p&gt;

&lt;p&gt;Learning stops feeling like a lecture and starts feeling like a conversation. More importantly, it feels playable. I can explore, try something, get corrected, and try again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1550751827-4bd374c3f58b%3Fauto%3Dformat%26fit%3Dcrop%26w%3D1600%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1550751827-4bd374c3f58b%3Fauto%3Dformat%26fit%3Dcrop%26w%3D1600%26q%3D80" alt="Abstract tech image suggesting AI and code" width="1600" height="1068"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It taught me to ask better questions
&lt;/h2&gt;

&lt;p&gt;AI is only useful if you learn how to use it well.&lt;/p&gt;

&lt;p&gt;If I ask lazy questions, I get lazy answers. If I ask for the first thing that works, I stop learning too early. So the real skill is not “use AI.” It is “steer AI.”&lt;/p&gt;

&lt;p&gt;The prompts that help me most are usually like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;explain it simply first&lt;/li&gt;
&lt;li&gt;then show the tradeoffs&lt;/li&gt;
&lt;li&gt;then show a real example&lt;/li&gt;
&lt;li&gt;then tell me what to build next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That sequence keeps me honest. It prevents me from outsourcing the thinking while still letting me move faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  It still cannot replace doing the work
&lt;/h2&gt;

&lt;p&gt;This is the part people skip.&lt;/p&gt;

&lt;p&gt;AI can help me understand faster, but it cannot make the understanding stick.&lt;/p&gt;

&lt;p&gt;I only really learn when I build something, break it, and fix it myself. AI is best when it gets me to that loop sooner. It should reduce the distance between “I have a question” and “I am testing the idea.”&lt;/p&gt;

&lt;p&gt;If I use it to avoid doing the work, I get a false sense of progress.&lt;/p&gt;

&lt;p&gt;If I use it to get to the work faster, it becomes genuinely useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bigger change is emotional, not technical
&lt;/h2&gt;

&lt;p&gt;The most surprising thing AI did for me was not technical.&lt;/p&gt;

&lt;p&gt;It made being a beginner feel less bad.&lt;/p&gt;

&lt;p&gt;That matters because a lot of people do not quit learning from lack of ability. They quit because the process makes them feel slow, behind, or stupid. AI does not remove that feeling completely, but it softens it enough to keep going.&lt;/p&gt;

&lt;p&gt;And once you keep going, learning gets fun again.&lt;/p&gt;

&lt;h2&gt;
  
  
  My rule now
&lt;/h2&gt;

&lt;p&gt;I do not use AI to think for me.&lt;/p&gt;

&lt;p&gt;I use it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;remove friction&lt;/li&gt;
&lt;li&gt;ask better questions&lt;/li&gt;
&lt;li&gt;stay in motion&lt;/li&gt;
&lt;li&gt;get to hands-on practice sooner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the smarter way to use it.&lt;/p&gt;

&lt;p&gt;Not fear. Not hype.&lt;/p&gt;

&lt;p&gt;Just a tool that makes learning feel possible again.&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>The small habits I keep on rails</title>
      <dc:creator>Hoa Trinh</dc:creator>
      <pubDate>Mon, 27 Apr 2026 01:46:39 +0000</pubDate>
      <link>https://dev.to/hoatrinhdev/the-small-habits-i-keep-on-rails-ji2</link>
      <guid>https://dev.to/hoatrinhdev/the-small-habits-i-keep-on-rails-ji2</guid>
      <description>&lt;p&gt;Willpower is a bad scheduler. If a habit has to be decided every morning, I skip it about a third of the time. If it shows up as a Todoist task at 6:10 with a due time, I do it, because the friction of dismissing the notification is higher than the friction of doing the thing. That is the whole trick. The habits below are not special. The rails around them are.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I do every day
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;20 push ups + 20 squats + 15 leg raises + 40 mountain climbers + 30s hollow hold, at 6:10.&lt;/li&gt;
&lt;li&gt;Take a multivitamin at 10:00.&lt;/li&gt;
&lt;li&gt;Read one post on daily.dev.&lt;/li&gt;
&lt;li&gt;30 to 60 minutes of workout / running / cycling.&lt;/li&gt;
&lt;li&gt;A monkey-type round.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todoist handles the scheduling. Recurring tasks for the habit stack; one-off tasks for anything that is not on rails yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would cut first
&lt;/h2&gt;

&lt;p&gt;Ranked by return on the minute it costs me. If the week got crowded and I had to start pulling things out, this is the order.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Keep.&lt;/strong&gt; The 30 to 60 minute workout block. Biggest mood and energy lift of the day, and the only one that pays back into everything else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep.&lt;/strong&gt; The 6:10 bodyweight stack. Tiny time cost, primes the day, and the streak matters more than the volume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep.&lt;/strong&gt; Multivitamin. Cheap, zero friction, no reason to touch it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;First to cut.&lt;/strong&gt; daily.dev. It is the most passive item on the list, and the easiest to rationalise as "input" when I am really just scrolling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Second to cut.&lt;/strong&gt; monkey-type. Fun, but if my keyboard speed were the bottleneck in my life I would already know.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  When the rails break
&lt;/h2&gt;

&lt;p&gt;Travel, illness, late nights, a deadline that eats the evening. The stack dies and pretending it did not makes it worse. The minimum viable version I fall back to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One walk, any length.&lt;/li&gt;
&lt;li&gt;Multivitamin.&lt;/li&gt;
&lt;li&gt;Skip everything else without negotiating with myself about it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal on a bad day is not to run the program. It is to not break the identity. One tiny thing keeps the "I do this" label intact. Zero things starts a story about quitting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The commitment
&lt;/h2&gt;

&lt;p&gt;One new habit, starting with this post: one post per week, on Fridays. This blog is day one. The rules are the same as the rest of the stack. Todoist handles the scheduling. If I miss a Friday, the cadence header on /blog will tell on me. That is the point.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2vhg6hqu4cduivg5oml0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2vhg6hqu4cduivg5oml0.png" alt="Recurring Todoist task: write one blog post for hoatrinh.dev, every Friday" width="800" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What success looks like
&lt;/h2&gt;

&lt;p&gt;Three months from now, late July, the honest metric is not whether I hit every day. It is two things. Is the Friday post still going up. Is the workout block still showing a streak longer than two weeks. If both are true, the rails are working. If one breaks, the rails are wrong for the season, not the habits.&lt;/p&gt;

</description>
      <category>habits</category>
    </item>
    <item>
      <title>I kept abandoning side projects, so I built a tool to fix the real problem</title>
      <dc:creator>Hoa Trinh</dc:creator>
      <pubDate>Sat, 28 Feb 2026 15:12:02 +0000</pubDate>
      <link>https://dev.to/hoatrinhdev/i-kept-abandoning-side-projects-so-i-built-a-tool-to-fix-the-real-problem-451n</link>
      <guid>https://dev.to/hoatrinhdev/i-kept-abandoning-side-projects-so-i-built-a-tool-to-fix-the-real-problem-451n</guid>
      <description>&lt;p&gt;I have a graveyard of side projects. Not dramatic failures, just apps that quietly stopped.&lt;/p&gt;

&lt;p&gt;A habit tracker I was genuinely excited about. A recipe manager I used every day for two weeks. A CLI tool that was 80% done. All of them died the same way: I stepped away for a few days, came back, stared at the code, and thought, "I'll pick this up tomorrow." Tomorrow never came.&lt;/p&gt;

&lt;p&gt;For a long time, I assumed this was a motivation problem. I tried fresh starts, cleaner task lists, and better scoping. None of it stuck.&lt;/p&gt;

&lt;p&gt;Then one evening, I opened a project I hadn't touched in ten days. I spent the first twenty minutes just reading my own code, trying to reconstruct what I'd been doing. By the time I pieced it together, I didn't have the energy to actually build anything. I closed the editor and watched YouTube instead.&lt;/p&gt;

&lt;p&gt;That's when it clicked: the problem wasn't motivation. It was context.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 15-minute problem
&lt;/h2&gt;

&lt;p&gt;Here's what actually happens when I try to resume a side project after a break:&lt;/p&gt;

&lt;p&gt;I sit down with ~45 minutes. Good energy, ready to build. I open the project. I scan recent commits. I check the current branch. I re-read the code I was writing, trying to remember what I was thinking. I open the issue tracker to see if I left myself notes.&lt;/p&gt;

&lt;p&gt;Twenty minutes later, I finally have enough context to start. But half my session is gone, and I spent it on archaeology instead of building.&lt;/p&gt;

&lt;p&gt;That friction compounds. Eventually, the cost of resuming becomes just high enough that you choose something else instead. Not consciously. You just… don't open the project.&lt;/p&gt;




&lt;h2&gt;
  
  
  It's not motivation. It's context loss.
&lt;/h2&gt;

&lt;p&gt;I started calling this context debt: the mental state that evaporates when you step away from a project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git tells you &lt;em&gt;what&lt;/em&gt; changed, but not &lt;em&gt;why&lt;/em&gt; you were changing it.&lt;/li&gt;
&lt;li&gt;Your task list tells you what's left to do, but not where you were in the middle of doing it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cost of resuming after a break is what actually kills most of my side projects. Not the building, the coming back.&lt;/p&gt;

&lt;p&gt;Once I saw it that way, the problem statement became pretty clear:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How do I make it almost effortless to pick up where I left off?&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  So I built a small tool
&lt;/h2&gt;

&lt;p&gt;I ended up building a VS Code extension called &lt;a href="https://keepgoing.dev" rel="noopener noreferrer"&gt;KeepGoing&lt;/a&gt;. It's basically a thin context layer for your projects.&lt;/p&gt;

&lt;p&gt;The idea is simple: capture lightweight "what was I doing?" context while you work, and hand it back when you return, without asking you to maintain docs for your future self.&lt;/p&gt;

&lt;p&gt;This isn't meant to be a full-on productivity system. It's closer to a memory prosthetic.&lt;/p&gt;

&lt;p&gt;Here's how it works in practice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhskb4oy9phzrjbb2402n.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhskb4oy9phzrjbb2402n.gif" alt="KeepGoing Demo" width="480" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. You code normally
&lt;/h3&gt;

&lt;p&gt;No setup ritual, no new workflow. You open your project and code like you usually do. KeepGoing runs in the background.&lt;/p&gt;

&lt;p&gt;I didn't want something that turned into its own todo app or forced me to remember another step before closing my laptop. If it required discipline, I knew I wouldn't use it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Context gets captured automatically
&lt;/h3&gt;

&lt;p&gt;KeepGoing watches for natural breakpoints and saves small "checkpoints":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On every git commit, it captures what you were working on&lt;/li&gt;
&lt;li&gt;On branch switches, it snapshots context before you shift focus&lt;/li&gt;
&lt;li&gt;After inactivity (75 minutes by default), it saves where you left off&lt;/li&gt;
&lt;li&gt;You can also hit &lt;strong&gt;Cmd+Shift+K&lt;/strong&gt; anytime to save a quick checkpoint manually&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each checkpoint records things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A short summary of what you were doing&lt;/li&gt;
&lt;li&gt;The next step you had in mind&lt;/li&gt;
&lt;li&gt;Any blockers&lt;/li&gt;
&lt;li&gt;Which files you touched&lt;/li&gt;
&lt;li&gt;Which branch you were on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of this is stored as readable JSON in a &lt;code&gt;.keepgoing/&lt;/code&gt; folder in your project root. No external service, no account, nothing fancy.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. You come back and actually know where you were
&lt;/h3&gt;

&lt;p&gt;When you reopen a project after a break, KeepGoing shows a small sidebar briefing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What you were doing last time&lt;/li&gt;
&lt;li&gt;What you planned to do next&lt;/li&gt;
&lt;li&gt;Which files matter for that work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've been away for 24+ hours, it proactively shows a "cold start" summary so you don't have to go hunting for it.&lt;/p&gt;

&lt;p&gt;The experience I was aiming for is:&lt;/p&gt;

&lt;p&gt;Open project → read a 2–3 line snapshot → jump straight into the right files.&lt;/p&gt;

&lt;p&gt;No commit archaeology. No "wait, what was this branch for again?" Just enough context to unpause.&lt;/p&gt;




&lt;h2&gt;
  
  
  The "why" problem
&lt;/h2&gt;

&lt;p&gt;After using this for a while, I ran into another gap.&lt;/p&gt;

&lt;p&gt;Checkpoints are great for short-term intent and next steps. But some changes are more long-lived: CI configs, OAuth setups, database migrations, deploy scripts, etc. Those are the ones where, three weeks later, you look at your own code and think, &lt;em&gt;why on earth did I do it this way?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I added a feature I call &lt;a href="https://keepgoing.dev/blog/context-loss-decision-capture" rel="noopener noreferrer"&gt;Decision Detection&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It does two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identifies "high-signal" commits: infra, auth, migrations, deploy scripts, that sort of thing.&lt;/li&gt;
&lt;li&gt;Prompts you to jot a quick rationale, just a few sentences on why you made that call.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you ignore the prompt, it still saves the decision as a draft so you can fill in the details later. The goal isn't perfect documentation; it's just capturing the important "why" before it evaporates.&lt;/p&gt;

&lt;p&gt;The core checkpoint system is free; Decision Detection is a one-time paid add-on. I'm mentioning it for completeness, not trying to pitch it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Plays nicely with AI agents
&lt;/h2&gt;

&lt;p&gt;Agentic coding tools can already scan your repo and infer what's going on. But even with decent AI helpers, I kept finding the missing piece wasn't more code suggestions, it was remembering what &lt;em&gt;I&lt;/em&gt; cared about last time I touched the project. AI can summarize files; it can't remember what future-me would have considered "done" for a feature.&lt;/p&gt;

&lt;p&gt;Good, human-authored context makes AI agents better too. So I built an &lt;a href="https://keepgoing.dev/docs/mcp-server" rel="noopener noreferrer"&gt;MCP server&lt;/a&gt; that exposes your checkpoints and decisions to compatible tools. When you start a new session, the assistant can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What you were working on last&lt;/li&gt;
&lt;li&gt;What you planned to do next&lt;/li&gt;
&lt;li&gt;What architectural decisions you've already made&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No huge prompt paste, no "let me read through your recent commits for you." It just starts from where you left off.&lt;/p&gt;

&lt;p&gt;Setup is literally one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add keepgoing &lt;span class="nt"&gt;--&lt;/span&gt; npx &lt;span class="nt"&gt;-y&lt;/span&gt; @keepgoingdev/mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's also a &lt;a href="https://www.npmjs.com/package/@keepgoingdev/cli" rel="noopener noreferrer"&gt;CLI&lt;/a&gt; if you live in the terminal. You can add a shell hook so that whenever you &lt;code&gt;cd&lt;/code&gt; into a project, it echoes your last checkpoint. That's been surprisingly helpful for me.&lt;/p&gt;




&lt;h2&gt;
  
  
  Design constraints I cared about
&lt;/h2&gt;

&lt;p&gt;When I was building this, I had a few non-negotiables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local-first.&lt;/strong&gt; All data lives in &lt;code&gt;.keepgoing/&lt;/code&gt; in your project. No cloud, no accounts, no syncing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No gamification.&lt;/strong&gt; No streaks, no guilt, no "you haven't coded in 3 days" notifications. This isn't meant to judge you. It's just context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No subscriptions.&lt;/strong&gt; The basics should be free. If there's a paid part, it should be a one-time thing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by default.&lt;/strong&gt; &lt;code&gt;.keepgoing/&lt;/code&gt; gets auto-added to your &lt;code&gt;.gitignore&lt;/code&gt; so you don't accidentally commit your workflow notes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, I wanted something I'd actually be comfortable running on all my personal projects.&lt;/p&gt;




&lt;h2&gt;
  
  
  You don't need more hours. You need less friction.
&lt;/h2&gt;

&lt;p&gt;Most side projects don't fail loudly. They just… stop getting opened.&lt;/p&gt;

&lt;p&gt;In my case, it wasn't a lack of ideas or a lack of skill. It was the invisible tax of context switching, having to rebuild my mental state every time I came back after a break.&lt;/p&gt;

&lt;p&gt;Using KeepGoing on my own stuff for the last few months has made a noticeable difference. Coming back after a week off used to feel like starting over. Now it feels more like unpausing a game.&lt;/p&gt;

&lt;p&gt;I open the project, the sidebar pops up, and I see something like:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Was refactoring the auth flow; next step is updating the callback handler and testing with provider X."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;…and I'm usually writing code again within a couple of minutes.&lt;/p&gt;

&lt;p&gt;That's really all I wanted out of this: make the resumption tax as close to zero as I can, without turning my side projects into process-heavy work.&lt;/p&gt;




&lt;h2&gt;
  
  
  If this resonates
&lt;/h2&gt;

&lt;p&gt;If you've also got a side project graveyard, or you've felt that weird resistance to reopening an old repo, you're exactly who I had in mind when I built this.&lt;/p&gt;

&lt;p&gt;You can check it out here if you're curious:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=keepgoing-dev.keepgoing" rel="noopener noreferrer"&gt;VS Code Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://keepgoing.dev" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/keepgoing-dev/community" rel="noopener noreferrer"&gt;Community repo (issues + feedback)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@keepgoingdev/mcp-server" rel="noopener noreferrer"&gt;MCP Server on npm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But mainly, I'd love to hear how you deal with this yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do you leave notes to future-you somewhere?&lt;/li&gt;
&lt;li&gt;Do you rely on commit messages?&lt;/li&gt;
&lt;li&gt;Do you just accept the 20-minute "what was I doing?" cost?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm still actively iterating on this, so any stories, ideas, or "here's how I've hacked around this" comments are very welcome.&lt;/p&gt;

</description>
      <category>sideprojects</category>
      <category>productivity</category>
      <category>vscode</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
