When programming is your job, it’s probably one of the last things you want to do and chances are you’re not being paid to make anything particular fun or interesting. If you are, congratulations! But most programmers spend their days designing boring corporate software or shitty mobile games.
However, programming doesn’t have to be a grind. The end result can be all manners of challenging and interesting creations. Some of these creations might even serve a purpose and could improve your own life.
People who program as a hobby are free to put their skills to use how they see fit, and here are a few creative and fun project ideas for you to build.
Create Your Own Real-Time Stats Monitor
Most of the time you see these on display in office settings, particularly in the finance world, to track data and information in real-time. How cool would it be to have something like this in your own home though?
Of course you’d want to make the data relevant to you. Maybe you’ll show some of your favorite stock prices, but you could also include events on your calendar for the day or the location of your dog if you have one of those GPS collars for her. The possibilities are really endless, and it depends entirely on what’s important to you.
You’ll also need to consider what data you have accessible. For example, it might be cool to show your 401k account balance, but unless your bank offers some kind of API to pull that info in real-time (or close enough), you won’t be able to pull it onto your info screen.
What makes this a great project to explore is not only how cool and useful it could be to have the end product hanging on your wall, but that it gives you the opportunity to explore a lot of different aspects of programming. You’ll likely need to work with multiple services and different APIs to get the data you need. You might even need to build some tools to scrape the required data or hack together third-party services to get it working the way you want.
There’s also a heavy design component to it, which is an important part of programming that often goes overlooked by programmers. How the end product looks is very important to whether or not it succeeds. Since you’re your own client in this situation, you only have to meet your own particular standards but you should still try to consider UI and design as you put this together.
Ultimately it can be as simple or as complex as you want it to be. You could have different data displays rotate in or out or set them to particular schedules of the day or week. You could even combine with smart devices so you can control the display with voice or on your phone.
If it were me, I’d have live subscriber and view counts for my LEGO YouTube channel and probably website traffic numbers.
Make an AI Chat Bot
There is a lot of fun stuff going on with AI and natural language processing these days. Smart home devices like Amazon’s Alexa are becoming ubiquitous, so this could be a good area to develop some skills in.
However, you don’t have to build an entire AI from the ground up. There are plenty of APIs and libraries out there you can rely on as a starting point for giving your chat bot a brain. Still working with AI can be complicated, but you don’t have to make a genius. Aim for a project that fits your experience level.
Once you have a plan for how to get your bot speaking (or at least typing), think about where you want the output to go. Is this just going to be a little desktop friend you can talk to from time to time? Or maybe you’ll give the bot its own Twitter account?
Twitter and other social media is full of bots, many with sinister intentions like marketing, but a lot are simply made for fun. So creating a bot that can post their own AI-generated musings to the Web could be a simple project to dip your toes into the world of talking AI.
The real fun though is in making something that can interact with you or others. This idea is what the Turing Test is based on, and while you probably won’t create something sophisticated enough to beat the Turing Test, you could make an AI buddy that you or others will have fun posing questions and statements to.
These bots can be particularly entertaining when you give them a specific personality. Maybe you take your own tweets as a basis for their own learning, which would result in some insightful and maybe even creepy self-reflection as the thing starts talking to you. Or you could feed it a bunch of pirate lingo to make it sound a bit swashbuckley.
As an added challenge, look into text-to-voice technology and see if you can bring your bot into the real world in some capacity. It might not compete directly with Amazon Alexa, but it could make you feel less lonely.
Make a Simple Mobile Game
Sure, mobile games are all trash, but that’s because they’re primarily driven by the profit-incentive. Instead of doing that, why not just make a simple game for yourself? It can be a great way to explore mobile development and you could even launch it onto app stores if you’re interested in learning about that process.
The game doesn’t have to be an award winner, and it’s important to go into this with that in mind. The objective shouldn’t be to make something amazing that’s never been done before that everyone will love. Just make something just to make it. A finished product that’s playable, and maybe it’ll even be enjoyable!
There are a lot of simple gaming mechanics to choose from and you can use a basic game engine like Unity to make things easier. You could try your hand at a basic platformer or some kind of space shooter like Galaga. It doesn’t have to be terribly original, but put some thought into it and figure out some simple ways to make it yours.
A lot of time when people have a game idea and set to work making it a reality, they end up biting off way too much than they can chew. So rather than going in this destined to choke to death, just keep it simple and remember your goal is to finish a game. You can always save your magnum opus for another day. This is just a learning experience, and an important step if you do hope to make something more complex one day.
Design also comes into play, which can be limiting for many programmers who don’t have graphic design skills. Worry not, though. There are game asset repositories online where you can pull designs from for free to use in your game. And if you do have some basic knowledge of Photoshop, why not try making your own little graphics? They might not look spectacular, but it will give you some hands on experience which as a programmer will benefit you since you’ll better understand the direction and specs you’d want to pass along to a designer when the day comes to make a more ambitious project.
Once you’re all done, play the game. Instead of wasting every bit of downtime clicking away on one of those never-ending click games, why not just pull up your own game to pass the time? You can even distribute it to friends and family if you think it’s something they might enjoy.
Create an Interactive Web-Based Adventure
Some of the earliest computer games were simple text adventures. They were fairly easy to program and still a lot of fun. With the Internet and modern browsers, you can take that same concept and do some really cool things with it.
You could, for example, make what is basically still a text adventure but with some simple graphics or pictures that go alongside it.
In old text games, you might type something like “walk north” to move the player character to another part of the virtual world. With a web browser you can give users the option to click on commands or objects right on the screen. And when a player “moves” into another location, you can represent this by going to a new webpage or updating the background image.
But you could also design your own alternate-reality game by spreading the adventure elements across multiple websites. Even websites you don’t own could be added into the fun by making them a place to look for specific clues. Just keep in mind that those websites could be subject to change and break your adventure if they update the wrong way!
With the use of databases and AJAX, you can do some really cool things. Single-page apps are popular these days, so practicing the basics of how they work can be really helpful. This type of web design relies on instantaneous updates and changes on the page without going to a new page or refreshing. The real-time nature makes it great for an adventure project or a puzzle.
A project like this is very open-ended and can give you the opportunity to work on whatever skills you’re most interested in developing. If you really want to focus on the adventure side of things, you can get your creative juices flowing by writing a whole fictional story driving the adventure. With the adventure taking place inside a web browser, you’re likely to use a lot of JavaScript and CSS. And if you want to add some tricks to leverage a database connection or cookies, that’s an option as well!
Customize Your Very Own Alarm Clock
Nobody likes waking up, except annoying people, but you could use your programming skills to make it a little more tolerable by creating your own alarm clock routine. Use your knowledge of programming to establish triggers and what sort of alarm sounds (or other actions) will happen.
You alarm clock doesn’t have to be solely for waking up in the morning, though. You could create an alarm clock that works to keep you updated throughout the day. You could go the Grandfather Clock route and have some kind of chime on the hour every hour, or customize it more to your own particular schedule.
For example, I had created an alarm clock system a long time ago that would not only wake me up but help me start winding down for the night. I had a basic morning mood playlist that would start up in the morning, waking me up gradually before blasting The Beatle’s Ob-La-Di, Ob-La-Da for me to perform my morning routine to. Then at night I’d queue up some Bob Marley around 10:00 pm. While that seems like a pretty simple task that most modern devices could handle, I wanted a particular schedule for fading in and fading out the volume, so I ended up programming my own thing.
If you have other parts of your daily routine you’d like to add into your alarm, go for it! You could have a chime or song to remind you of when to take your medication, or something to let you know when your lunch break is almost over. And your alarms don’t have to all be sound based. If you want to get really creative, think about how you might integrate the alarm system with other devices. Maybe you trigger some pop up on your computer or have programmable color lights you can use to alert you of the time.
Be sure to think beyond your daily routine too. You can make adjustments based on the day of the week, the season or even whether or not it’s a holiday. Maybe you want to celebrate payday ever two weeks with Takin’ Care of Business or start automatically playing A New Hope every May 4th. I’d also recommend adding a way to drop in custom events on the fly or connect with your calendar so you can set up reminders.
Make a Chrome Extension
This is an area of programming you don’t hear about too often, but Chrome extensions are everywhere and many are even useful. Chrome extensions are actually pretty simple. They basically use typical web programming to update and change elements on the page based on whatever conditions they’re coded for.
You could think of something that could be useful for yourself. It doesn’t have to solve a common problem. Maybe you’re the only person who needs it, but that’s all the more reason to build it since nobody else will. Going back to the alarm clock idea, you could consider building a Chrome extension with time-based settings. This could allow you to force your own dark mode on the websites you visit or perhaps you want to make websites slowly deteriorate over time as quitting time approaches to symbolize your own declining mental faculties. It’s all up to you!
I created a couple of Chrome extensions myself. I made one I called Reddit Under 100 which is still useful to me years later. It uses the Q key to highlight any threads on Reddit with fewer than 100 comments. I made this because I noticed it was rarely worth commenting on threads with lots of comments already since they’re likely to get buried. However, threads with less than 100 comments are prime targets for getting some exposure and earning that sweet sweet karma. Another extension, and one that’s far more popular, is Wikilas Cage which turns every Wikipedia article into an article about Nicolas Cage, the actor. This one is probably less useful, so I suspect most of the installs are intended as pranks.
Making your own Chrome extension is a great way to practice your programming skills while making something that can add some utility to your typical web browsing experience, or just a bit of fun if that’s what you’re into.