<?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>Forem: Hoa Trinh</title>
    <description>The latest articles on Forem by Hoa Trinh (@hoatrinhdev).</description>
    <link>https://forem.com/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>Forem: Hoa Trinh</title>
      <link>https://forem.com/hoatrinhdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/hoatrinhdev"/>
    <language>en</language>
    <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://forem.com/hoatrinhdev/i-kept-abandoning-side-projects-so-i-built-a-tool-to-fix-the-real-problem-451n</link>
      <guid>https://forem.com/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>
