If you’re “this close” to the finish line, may I suggest putting your finish line goal into Claude or ChatGPT - or if it’s a web app, into Bolt or v0.
Ask for it in its final state and prefix with “I want to build a ...” - in other words give the model the reins.
If you like what it suggests you can swap to IDE - scaffold a new project and paste the code in. That’ll free you from paid tiers.
With this method I finally made a photo gallery website to thank our guests for coming to our engagement party! I started in v0 to get a nice landing page, then pasted that code into a new nextjs repo. To spruce up the photo viewer, I downloaded the readme.md for a component I like (Spotlight.js - thank you devs!) Next, I pasted that readme - plus the 3 or so key code files from the repo - into a Claude conversation and said “please redo the code using the component documented in the attachment”.
Seeing it run in Claude Artifacts got me over the hump - now all that was left was tweaking instead of big hairy decisions.
(Pre-empting the responses, I agree the workflow is smoother in Windsurf, Zed, Cursor, Cody, Contiue, or Aider. Pasting code back and forth forces me to read it, which leads to finding more bugs and removing more superfluous bits.)
For me, slowdowns on a project suck the fun out and turn an evening with a goal into a disappointment that spills over into the next day. It’s a spare time activity so the fun is in the polish, to make it beautiful and amazing.
Thanks to this workflow and these new tools, I get stuck on way fewer bugs and documentation rabbit-holes on my way to something I can polish and make beautiful.
Some amount of discipline is certainly good, but too much can be bad for your health. It comes down to value.
It's okay to not finish side projects — they were fun for a bit! Good for you for finding some low-cost fun!
I make music in my spare time and in the past year I think I barely have an EP worth of tracks that are _nearly finished_, but I've got dozens of neat loops. I've come to peace with this because the value I'm looking for is in the act of spontaneous creation with my instruments.
I put down movies, tv shows, video games when they start to feel like an obligation rather than a fun pursuit. The value starts to taper off. I think that's okay. I have a day job making computer things, a family… free time is so precious. Why force a non-interest?
It starts being a problem if the side projects aren't fun for a bit. Such as if they're really big and complicated and absurdly tedious and you only do them because they're "going to be really fun in a year" or something, and you never get there. Or you do and find it's still tedious work.
I'm in my 40s and for most of my life I had an unending series of unfinished projects that I felt guilty about. Today, I am able to finish some stuff, including some pretty large, hard projects. Better, I don't feel guilty about the stuff I don't finish.
The trick for me is to be deliberate and mindful about why I'm embarking on a particular project.
If it's because I want to feel good by:
* Sharing something with others.
* Accomplishing a difficult, challenging task.
* Proving to myself that I can do something.
* Getting the social cachet of being a creative, productive person. (Maybe this is shallow, but who doesn't like to feel impressive in the eyes of their peers?)
Then the goal of the project is the product it and I focus my attention and discipline on it. I try to have as few of these as possible—like only one at a time—so that my willpower is not diluted.
If it's because I want to feel good by:
* Improving a skill.
* Exploring an unfamiliar domain or learning something new.
* Relaxing by tinkering on something I like.
Then the goal of the project is the process and I don't feel bad about not finishing. The real treasure is all the stuff I learned and did along the way and there is no real destination. I can have as many of these as I want because there's no real failure mode here. They're all recreation.
Once I got more honest and clear with myself about my goals for each project, I started to be able to finish the ones where that mattered and stopped feeling bad about the ones where it doesn't.
This describes a large number of projects that I start. Getting comfortable that this is the real reason behind a lot of what I want to do and being OK with something being unfinished goes a really long way to not stressing about unfinished projects.
> Ironically, I've been meaning to polish this comment up to be a full article for a while but haven't gotten around to it yet.
Lol. Just slap it in your blog. Right now, just like it is. Then maybe go and polish it up. Or set a pomodoro timer and polish it right now and publish once 25 minutes have elapsed or something.
I once sent a professor in my department my favorite Emacs packages—he's an Emacs user too but was wondering what some of the hot new packages were. When I sent him a long-ish Slack message, he just said to publish the list as-is on my blog.
I was initially unsure—I do like to do several drafts—but I decided it couldn't hurt. I edited a little to make the grammar more correct, but it landed on my blog and is currently the most-visited post. Go figure.
So, for those stuck on publishing posts on their blog: just post. Post post post post. Don't over-think it. Don't try to have the flashiest blog post. Just write. ;)
I've gotten a lot better at "shipping" hobby projects in the last few years.
I still start a whole bunch of things and then get busy or distracted or it stops being interesting or I hit a roadblock.
But a few years ago I started looking at my existing projects and deciding for each exactly what they need to be releasable. It doesn't mean done; just a good stopping point. And I just try to get there. And then I work on what is needed to release. It's documentation, READMEs, package management, installers, logos, screen shots, etc. And I treat all that as separate project.
For some reason thinking of the release as a separate project helps me to get it done.
And it's now a process that I can repeat over and over. I have all these defined steps that I do now when I release something and it becomes easier to do. Then, at least then if I never get back to one of these projects, I have contributed something to the world.
I have spent nearly four years working on my own side project.
I am at the point where I can use it, which means that every feature can be a shiny new thing, yet be small enough to do quickly. So...get to that point as quickly as you can.
But on the flip side, I spent over three years working on my project before it was usable. How did I maintain motivation that long? Pure, searing hatred.
My project is a build system for removing my dependence on CMake. Yes, I hate CMake that much.
Hating CMake every time I had to use it was enough motivation.
So to not be haunted by your projects, run on hatred until you succeed. Or maybe any strong emotion.
It took me close to 20 years to finally shed the guilt of unfinished software projects.
Side projects can just be about having "fun". Just as going for a walk, or reading a book, listening to music, etc can just be done for fun. I don't have to finish any of these things. I don't have to finish side projects. Fun things don't have to be useful, purposeful, practical, or anything but they should be fun.
Some of it is to identify "wins" that are less than a launch, often involving new learning, experience, or practice.
For example, I have a lingering inactive car project, where I can still say I learned something about poking around with a multimeter, disassembling car parts, soldering, Arduino chips, and CAN buses.
It's not clear to me from this article if the author has shipped a version of those projects which are "almost done", or whether they are closed sourced "product"-type projects or edu source projects where all of the commits and progress are public.
I wrote earlier this week on HN[1] about my very recent experience trying to ship _something_ (in the "product" category) to alpha testers in <1d and to an open beta in <7d, and it's something I recommend highly for people who are stuck wanting to go from "almost done" to "done" before shipping.
There is so much valuable feedback to be gained by shipping _something_ as soon as possible, and often just the act of getting that feedback goes a long way towards breathing fresh life into a project you might be starting to feel a little burnt out on.
Things kinda changed for me when I realized that 'discipline' actually should refer to scope.
what's fun about side projects is that the scope is unconstrained. you work on whatever you want to work on. you change scope at any time.
I found it helpful to explicitly think about the scope of my side projects. to answer the question "what will I ship when this is done." The answer is, of course, that it's never done -- that's because the scope can change at any time. the solution is to keep the lofty ideal very large but greatly cut the scope of the intermediate steps.
the answer isn't discipline of "finish it" -- it's the discipline to "scope it."
I have a similar problem and I've built a list of projects that I now cycle between. I'll add new ones as I get the inclination, but I always rotate through the list doing one clear small or medium change. If the project is in a state that I have to do work that I abhor on it to get it far enough to get to the fun bits, I do some small change that pushes it towards that goal, whatever it might be. Just a bit of pain to inch it forward to get it closer to having fun with it. Sometimes, just getting back into a project ignites the passion again and I make serious headway with it. If not, well, it's a bit further along than it was.
I might spend an hour on a project and move to the next one, or I might get excited and stay with it for a few weeks making a medium fix or enhancement. Just knowing I'll come back around to each project makes me feel less guilty about leaving them hanging.
Some projects at work suffer some a similar quirk - the last 10%-20% of the work remaining on the project takes longer than the rate at which the first 80% of the project is completed.
It's like the leftover bits that aren't as exciting or engaging (bug fixes, documentation, little tweaks) always end up making that work feel like a chore rather than a joy.
Years ago a colleague coined a term for their ideal way of working - Mood Driven Development - they worked on what they wanted to work on.
It feels like it has a similar trait to creative work such as art or writing or music - you let the creative block have its moment, then when that passes and the creative juices start to flow, that's the moment to do the work, but if you achieve flow state then it ceases to be work, it's just natural.
It's a weird spot, because you need enough discipline to convince yourself to expend more effort than watching Netflix, but also not stress yourself out.
As a concept, "building in public" has been not great for convincing myself to do more.
I think TodePond's "slippy mindset" might be more useful for these situations:
I can definitely relate a bit to this article, but I'd argue that you are in no way obligated to finish these projects and shouldn't have to feel guilt over them. Remember, they're side projects.
Also, I'd consider whether you really truly want to finish these projects, or if you moreso just want them to be finished. I've found that there's a big difference between wanting to work on something and wanting that thing to be finished, if that makes sense. In general, if it's not your main project, if you don't truly want to work on it, don't.
For hardware, don't even begin to build it until it's fully designed. That sucks the fantasy and freedom away.
Build it to throw away. I built a boat, sailed it a few times, then abandoned it on the beach. That attitude helped me quickly make a useful thing not obsess over perfection.
Have small milestones where it's OK to stop at. I have a few projects that are in service but nowhere near complete to my original fantasy. They're still useful enough.
Over years, I have successfully shed the feelings of guilt for not finishing a project. Instead, I just put them out with a section in README (usually at the top) stating the state of project and things that still need to be done to make it to the finishing line.
I’ve found that people may reach out and offer to implement things if your project scratches their itch and get it in a much better shape than it would have been languishing in a private repository.
You don't have to finish them, but you should share them anyway. Software is never finished, so hitting the state where you're happy with what you've built isn't likely to happen.
The same philosophy applies to other ventures and ideas. Just ship it.
This is a common mantra, but I completely disagree with it. I have tons of finished software projects. And yes, I do mean things that need zero maintenance and continue to work after more than a decade without me having to touch the code at all. I don’t necessarily use all of them anymore, but they still work.
And they’re not stuff that’s only useful to me, either. I particularly remember a script I built to unofficially get data from a project. After the project made their own version, I deprecated mine. After years of not using the script, I deleted it. Not even a day later, I had multiple people asking me to bring it back because my version did some small thing in a way they preferred.
I completely disagree. There's always something that can be improved in software. But usually, it gets to a state of "good enough" so people move on to something more important and just leave it. Sometimes, they have to come back to it, perhaps after a long time even, for a bug fix, or to add a new feature, but it may go for very long periods with no updates at all.
Of course, this is all a matter of perspective and semantics.
I suppose if something becomes obsolete enough that no one's interested in developing it further, it could be considered "finished". But even here, it seems like people still have some interest in very old software sometimes, resurrecting it to run on emulators perhaps, and sometimes even making changes (if they can get the source code) to improve its operation on newer systems.
That has nothing to do with the software’s finished state. An NES game which runs bug free and without performance issues on the NES doesn’t stop being complete because someone else decides to run it in a different environment decades later.
> There's always something that can be improved in software.
No, there’s not always something which can be improved. There’s always something that can be fiddled with, which is not at all the same thing.
By your logic, no painting is ever finished, nor is any novel, nor any meal, nor any internet comment, nor literary anything. Things are finished when the author decides they completely fulfil their need, it’s not your opinion as an outsider that matters.
> I just know how much work is involved to get them going again, and that amount of work is daunting
This is usually not true. Whenever I get back to something, I realise it was just 1h of work to implement that feature I've been procrastinating 2 years on. We (humans) are very bad at estiamting how long something will take. It's not that finishing the project will be easy, but doing that specific task you've delayed so much, you know what? That's really easy to do, and can even be fun.
Regarding reaching 90% completion. A project is likely never done. What helped me procrastinate less is realising that the goal is not to finish the project, I will never be happy with it. The goal is to make some progress, regardless how small it is. This also fixes the common fear of "finishing a project". If there is no finish line, you are never at 90%.
And, as a last thing: building is the easy part. Once you make the project, having people actually see it and use it will be harder, especially if you are an engineer at heart. So, don't be afraid of making something good enough to be released. Release it. No one will care about it anyway.
You can run each project on its own subdomain on a shared domain. Example: app1.mysite.com app2.mysite.com. This can save you tens of dollars a year and save you some headaches. Probably not optimal for SEO, but for random projects it's pretty good.
This same feeling has now gone so far for me that I often won't even start projects anymore that I would have started a couple of years ago, because I feel paralyzed by the knowledge that I won't finish them anyway. When I do manage to start something new, it's because I've made myself super aware that I'm only in it for the fun of starting something new and shiny, and probably learning something new. Who knows, maybe it'll grow into something more than that, but that's no longer the goal. This really helps me have more fun with my side projects because it's a requirement that I enjoy the early phase too, and not just the hypothetical, far away phase that may never happen. A side effect is also that I have way less side projects, and the ones I do have, aren't stressful anymore.
Example: I'm making a little game for Pico-8. Totally useless, and I'll probably abandon it, but it's a lot of fun right now. I even enjoy playing it :-)
The framing of something can totally affect how you feel about it.
If I set a goal to run 5km everyday and one day I run 4km I feel like I've failed. Somehow not meeting the goal invalidates any positive feelings of running the 4km.
I think a lot of side projects have an implicit, unstated goal of "finishing" or "releasing". This is setting yourself up for the same trap as the runner.
For me it helps if the goal is simply to "run". Without setting any end-goal. Just to start on it, and only do it ad long as I like doing it.
It also helps if instead of "run for 5km" I think of the destination "run to the supermarket, to get some cake".
With side-projects is not "add 3 features". It's "add feature A, which then enables B, C, D functionalities".
Also, the more you work on something, the more questions you answer and even more new questions show up. By doing something on your project, you make progress, you unveil the previously unkown. I like thinking of implementing something not as getting closer to the finish line, but as expanding the horizon and seeing more into the distance, instead or looking at a close, dense fog wall of "what could have been".
I totally get this feeling. What helps me sometimes is recognising that both working on something and not working on it are valid choices, as long as it's coming from your reasoning. It’s a freeing thought because it means the choice is really mine, not just inertia or guilt.
Compare that to professional life, where so many times we get stuck in death marches, feeling like we can’t say no to projects that have already lost any change to reach their full goal. With side projects, at least we have the control to decide if it’s worth it or not.
Something I’ve started doing that's a very good exercise is brainstorming my project ideas with ChatGPT. I’ll treat it like a project manager, spill all my thoughts, talk through adding features and finding ways to make the idea bigger. If it still feels exciting after that, I’ll dive in. Even if I don’t, it’s like letting intrusive thoughts come and go during a meditation session, afterwards regardless of the outcome I feel I can clear my head and just move on.
Oh I know this feeling all too well. Still got some projects in limbo after a decade or so that I feel I should finish soon, but which I never get around to.
And I get it. It's probably best to call it quits on many projects like this. To accept that you've had your fun with the concept, and that you shouldn't force yourself to finish something you've got no more passion for.
But it's easier said than done, and the sunk cost fallacy always lurks in the back of your mind regardless.
for me this issue's been about mindset: having a bunch of incompletes can be frustrating but in the long run it's better to have half finished projects than not, because
1) doing the work is always beneficial for learning and experience
2) rediscovery of an oldie but goodie can be its own endorphine popper
3) more often than not, new goals or circumstances emerge that add new relevance to incomplete bits and pieces
I can imagine there are probably more similar reasons to see unfinished work as investment rather than time lost
If you struggle so much with finishing projects and are frustrated by it, that’s a signal you’re unable to accurately gauge your level of engagement/excitement/motivation/skill/whatever. There is a mismatch between the complexity/size of the projects you pick and what you are able or willing to do.
Seems like a simple solution: do smaller stuff, reduce the scope. Start side projects you can finish in a day, or a week, or whatever you can usually manage. Instead of aiming to build a space shuttle, make a bicycle. Those are fun and useful too. Make your project do one simple, stupid thing. No feature creep, no bells and whistles, just do one thing.
Alternatively, continue as you are but learn to accept yourself. Admit that any side project you start is something you’re not going to finish and don’t make it about finishing, but instead about enjoying the process.
I've learned a ton from all my half-completed projects over the years that has factored directly into my skills at work.
I know this sort of sounds... simplistic... but, well, observe that when you aren't thinking about it, the half-finished projects don't hurt you. You just need to extend that to when you are thinking about them.
Your projects are not obligations. Nobody is waiting for them. Nobody is going to fire you, or ground you, or anything else, if you don't finish them. Even if you did put up a post somewhere or something talking about how you've got this wonderful new thing you totes promise will be available in three months... nobody cares yet. And even if they do, well, declare bankruptcy and move on. If that's their biggest disappointment this week they will be in an enviable position.
In fact from a perfectly rational point of view, many of those projects maximize their value to you in precisely the state they are in now. It's quite easy for a released project to go quite negative in value to you, due to obligations suddenly actually appearing, having a system that can be hacked and maybe people who can be hurt by a hacked system, etc.
I developed a rule of thumb from this. It's very klunky, I won't deny that, I never found a good phrasing for it, but I think of "Never engage in an endeavor where the worst case scenario is complete success." It's really my side projects I'm thinking of when I say this. Do I have an interesting idea for how to create a new type of community site or bulletin board or Reddit competitor? Sure, that's fun to program, but what if it actually worked? Do I want to actually own such a thing? Goodness gracious no. So maybe I do the fun part and then just let it sit on the hard drive, and call it a win.
Haunted is good word for it. I have a pile of these too. I made happen over COVID with long time hacker friend. It is called Viddd.co. We were able to help many musicians make a lot of money. We still do it but we have not updated it while. Great threads here
Have you thought about talking with other people about them to see if others would be interested in collaborating on them with you?
I find myself in a very relatable state and also a software dev. I have bursts of motivation at different times of year, but also still have an endless pile of nearly finished projects that I feel guilty about when I have that new shiny project in hand.
My BitGrid project has been in the vague area between the void and the world for decades. It's only now that the pieces are coming together to finish it and finally see if it was actually a good idea or not.
I regularly read/hear about people who frequently buy domain names and never use them. Why? You already know you’re not going to ship, why waste the money and deprive someone else of the name?
As a serial domain buyer (currently at ~37 after letting many expire), I can answer this one: generally you aren't purchasing them with no intention of shipping. That happens later.
For me, the process normally goes:
1. Inspiration strikes, I start noodling on an idea
2. I get really excited and start exploring the domain name state space for places to host it
3. Life happens, the idea ends up being bad/hard/some better alternative exists, etc.
I think buying the domain is kind of an accountability thing in some ways, the same way people pay for instrument/language/etc lessons when they could learn online for free. It makes you more committed to the process.
For ideas that I've had, the ones that get domains likely have a much higher completion rate than the ones that don't
It's an interesting phenomena you see across hobbies. I play boardgames and now people that own 100s of games they've never played. I'm part of /r/criterion and people will often post their collections which they haven't seen 80%.
I also own a few dozen domains, movies I haven't seen, and boardgames I haven't played.
I don't know why I do it, probably some consumerist lust and existential dread of possibility never owning much in the real world like property or a home.
For me, it's because the finish line is actually a starting line for another thing altogether. The starting line of a race that I don't really want to run. It's like all this time you've been building, you've just been in a car on your way to the race, then you got there and are in the parking lot and can see the finish line, you just have to get up and walk over to the track. But, the realization of you not actually being prepared for the race sets in, did you bring your shoes? Have you been training? Do you even enjoy running? Meh, let's go get ice cream instead.
Ask for it in its final state and prefix with “I want to build a ...” - in other words give the model the reins.
If you like what it suggests you can swap to IDE - scaffold a new project and paste the code in. That’ll free you from paid tiers.
With this method I finally made a photo gallery website to thank our guests for coming to our engagement party! I started in v0 to get a nice landing page, then pasted that code into a new nextjs repo. To spruce up the photo viewer, I downloaded the readme.md for a component I like (Spotlight.js - thank you devs!) Next, I pasted that readme - plus the 3 or so key code files from the repo - into a Claude conversation and said “please redo the code using the component documented in the attachment”.
Seeing it run in Claude Artifacts got me over the hump - now all that was left was tweaking instead of big hairy decisions.
(Pre-empting the responses, I agree the workflow is smoother in Windsurf, Zed, Cursor, Cody, Contiue, or Aider. Pasting code back and forth forces me to read it, which leads to finding more bugs and removing more superfluous bits.)
You still have those domains OP! You can do it!