I wrote a twitter bot two years ago. It was a side project to experiment with python. It happily runs along on my raspberry pi.
However, once in a while it needs my attention. Usually, because the API it calls has changed. When this happens it takes me awhile to get my environment set back up. My IDE needs an update, the libraries it depends on need updating etc.
So, how do you maintain your side projects? Do you schedule a time to update it? Do you care if the project uses current dependencies? Do you launch the app into the world and then ignore it? How do you know when your app is broken? I am curious to know what other developers do.
Top comments (5)
Great question! It's hard enough maintaining the code you look at every day, let alone side projects like this.
My most serious side project that truly requires maintenance of any kind is my mom's small business website. I occasionally have to pop in to make a quick change. It's a static website and I wound up stripping out all external build dependencies and writing in vanilla CSS and JS. I just found it easier than keeping track of a build process and updating that.
Even if the code is a bit less clean due to lack of niceties of things like SCSS, the ability to debug right in the browser with no dependencies is a breeze.
In terms of projects which might rely on an API that could change or (gasp) is scraping a site which could change at any time, I'd say that centralized monitoring is your friend. If you can have all health pings centralize in one place you're best off. Basically find a way to detect failure and make sure you get an email or Slack notification (or something) about this. The tools you use for monitoring might change from project to project but if you can maintain consistent process for knowing where the error message might land, you're on the right track.
Thank you for the reply! That's cool about being able to use vanilla CSS and JS. Simplicity! :-)
For this bot, I use papertrail for logging. I have it configured to send an email alert if any errors are logged. I also use Dead Man's Snitch to monitor if it has run or not. I'm pretty happy with this setup for monitoring.
When building Mr. Dalton for iOS, the only thing i kept in mind was that it was gonna be hard to give time for maintenance.
So every change and TODO is stored in the git repository for keeping record of what to do even if a long time had passed. It is hard to give regular attention when you have other things to do, but since most of the TODO's are just new features nothing is that important.
I don't have any set Massive times or anything; I code as the spirit moves me, so to speak. For chores, I have greenkeeper set up to automatically submit pull requests when dependencies update. Thanks to putting in effort on the automated tests, it's pretty easy to tell when something might require a closer look (like this Node 10 upgrade...) so if the build result looks good it doesn't take more than a few moments to pull in updates. I use the same text editor I use every day for working in Node so that's always current.
Basically: automate as much as possible, use as few specialized tools as possible (Alton Brown's #1 bit of kitchen advice too, I understand).
Oh wow, Massive looks like a big project. Very cool. I'm not that familiar with node.js but I like the idea of greenkeeper for npm. That looks really helpful. I'll have to investigate if something similar is available for other languages.