You can do three things with a computer. You can try to make money, and that is unlikely. You can try to become famous, and that never happens. And you can have fun, and that always works.
– Chuck Moore, creator of the Forth programming language
In a low-stress hobby setting, computers offer a vehicle for personal enrichment rather than strictly a tool for business or research. Some noteworthy Open Source projects started as hobby projects, the most notable example being the original Linux Kernel written by Linus Torvalds. Many other well-known programmers have learned their skills as hobbyists pursuing an intellectual curiosity rather than explicitly seeking a career or a serious objective. A well-publicized example is the often quoted newsgroup post written by Linux Torvalds in the early 90s:
I’m doing a free operating system, just a hobby, won’t be big and professional like gnu for 386(486) AT clones.
You can find examples of hobby software on sites like Hackaday or at your local Hackerspace.
Below is a list of useful tools I’ve come in contact with over the years. I share them with the hope that they bring you enjoyment in your next hobby project. If you would like anything added to this list or would like to share something you’ve built using the tools below, please contact me on Lobste.rs or Reddit.
I used the following criteria to select the tools:
- They cost less than a coffee or are free.
- They are quickly learned.
- They allow you to accomplish a single task in a short amount of time (such as a Sunday afternoon)
- They are less focused on the needs of long-term projects (scalability, speed, etc.) and more focused on ease of use and prototyping speed.
MyJSON.com - Free Cloud Storage for JSON
UPDATE (9/2021): MyJSON is no longer maintained.
Static sites are easy and fun to build, but they can’t easily share persistent data between clients. Usually, this requires you to write a backend API or pay for a service like Firebase. That’s a lot of work, though, and the point of a hobby project is to have fun.
When I need to store very small amounts of unstructured JSON for a toy app, I use the MyJSON API. You can download and edit JSON documents via their CORS enabled REST API so that you don’t need to be bothered with provisioning a backend or paying hosting fees.
The owner of MyJSON seems to be a hobbyist as well. If you find value in MyJSON, consider thanking them on Twitter for their generosity.
REFL.ME - Simple Mobile Alerts
REFL.ME is an Android app that performs HTTP polling on a JSON URL and sends push notifications to your phone when the data changes. When paired with a Cron job and a JSON URL (see MyJSON section above), it offers a great way of creating mobile alerts without the hassle of authoring a full-blown Android app.
Vultr - Dirt Cheap VPS Hosting
Since hobby projects rarely see high-volumes of traffic, the main concern is often cost rather than performance.
Vultr is my go-to solution for cheap hosting. As of this writing, the cheapest plan they offer is $2.50 a month. Although their cheapest plan definitely won’t be able to fuel your next high-powered computing project, it is a great solution when you need to host small-scale tasks such as Cron jobs.
Dokku - A Self-hosted PaaS
Dokku offers many of the features seen in “Platform-as-a-Service” offerings such as Heroku. Unlike many PaaS offerings, you can host it on a cheap VPS service (like Vultr).
Although it is well suited for hobby projects, it’s important to note that Dokku also works wonderfully in production settings.
With Dokku, you can self host a push-to-deploy mechanism for your hobby project and not waste time with server configs. There are lots of community plugins that handle the most common use-cases.
Free MQTT servers
MQTT is a simple, easy-to-learn protocol for real-time communication. It’s most commonly seen in “Internet of Things” projects (Arduino, Raspberry Pi) but can also be used in web projects via WebSocket tunneling.
Numerous freely available servers are listed on MQTT Github Wiki.
These servers are great for simple hobby apps that run on low-end devices like Arduinos, RaspberryPi, or the ESP16 WiFi device. Some servers offer WebSocket support, which allows a browser to talk directly to the device without the need for a backend.
NGrok - Free Firewall Tunnel
If you are hosting a server on a home network with a dynamic IP address, it can
be hard or impossible to accept incoming web requests.
NGrok provides local workstations with a *.ngrok.io
web
address for exposing local servers to the Internet. It also provides HTTPS/TLS
support, which is pretty cool!
Ngrok is especially useful when you want to experiment with third-party APIs that use WebHooks.
Bookmarklets
A Bookmarklet is a specially formatted bookmark toolbar entry that allows your browser to execute arbitrary code on any webpage. Bookmarklets have unfortunately gone unnoticed in recent years. They are a great alternative to browser extensions when you need to perform simple personal tasks such as scraping a webpage. There are some great tutorials and examples out there.
Cron jobs
Cron jobs are a classic Unix automation tool and a powerful helper for many hobby projects. Although many in the Linux community are well aware of Cron, they deserve mention as a tool in any hobbyist’s toolkit.
Cron jobs allow a Unix-like operating system to execute a script on a repeating timer. Cron jobs are useful for personal tools such as weather and stock market monitoring scripts.
CGI-scripting
I’ve blogged about the History of CGI Scripts in the past. Although it is almost unheard of to see new production systems deployed with CGI scripts in a professional setting, CGI scripts can provide a hobbyist with a cheap and simple solution for dynamic backend scripting. Many shared hosting providers (such as the one I host this blog on) provide CGI-script support at no additional cost.
(New) PatchBay.Pub - No-Signup Pub/Sub over HTTP
I have yet to try PatchBay, though I thought it deserved an honorable mention.
From PatchBay.Pub:
patchbay.pub is a free web service you can use to implement things like static site hosting, file sharing, cross-platform notifications, webhooks handling, smart home event routing, IoT reporting, job queues, chat systems, bots, etc, all completely serverless and requiring no account creation or authentication. Most implementations need nothing but CURL and simple bash snippets.
PatchBay appears to offer a solution similar to MQTT publish/subscribe topics, but entirely over HTTP. It allows developers the ability to create MQTT-like streaming applications using simple tools like CURL.
Check out the PatchBay website for more information
(New) EasyDB.io - DB hosting, no registration
EasyDB was recently featured on Lobste.rs. Like PatchBay, it looks like a great tool for hobby projects. I have not yet tried it for myself.
EasyDB is a one-click, hosted database provider. We give you a database for the programming language of your choice, you build something cool. It’s that simple.
It’s worth noting that it is an “ephemeral” database provider:
EasyDB is an ephemeral database provider. That means that after some time, your database will be removed. By default, databases will stick around for 24 hours. If you make an account with us, the database will last for 72 hours. If you really want to keep it longer, you can upgrade your database to a persistent database for $5/month.
Check the EasyDB website for more information.