Side Projects Ideas To Keep Learning
Tags: javascript, java, sideprojects, productivity
Published: 2021-06-15 11:42:40

Recently I wrote an [article](https://ppolivka.com/posts/how-to-keep-learning-as-a-developer) about how to keep learning as a developer that highlighted side projects as one of the biggest helpers to keep learning new stuff. In this article, I want to present few side project ideas that you can try to do. 

Most of these projects I tried to implement in the past or planning to do in the future. I mostly work as a backend Java developer so my side projects are trying to be anything that that. For each project, I will try to provide as many details as possible to get you started. 

## Temperature monitor

I am obsessed with data and its visualization. This is one of those I did already and loved every second of it. This side project has few parts in it. 

First thing is to have an actual sensor that would measure temperature and store the data somewhere. I used Arduino for this. With WiFi addon and temperature sensor. Arduino is super cheap and you can buy a lot of it on Aliexpress/Amazon/wherever you do your electronics shopping. You can use Raspberry Pi or any other board. The goal is to learn how to program it. The bonus objective here can be to design and 3D print a nice case for your sensor. 

The second part is the backend. You can go and create your REST API for this (if this is something you need to improve). As I already mentioned I wanted to sidestep the backend so I decided to use a third-party service called [ThingSpeak](https://thingspeak.com/). It's a super easy-to-use, free for non-commercial use platform that gives you an HTTP endpoint to where you can send your data. Its primary use is in the applications like this so they even have nice libraries to be used on platforms such as Arduino.

Third and the last component to this is a frontend. You need to fetch your data and display it. You can display current temperature, average temperature, a graph of the evolving temperature. There are endless options. When I did this it was the first time I used React/Flux and I got most of the concepts of React from this. And this was in 2015. 

## Alliexpress Twitter bot

This is a fun small project. I created a bot that goes to Aliexpress, finds a completely random item under one dollar and tweets link to it. Why? So that I learned about Twitter API, web scrapping and that I can see the random stuff you can buy there. 

For the web scrapping part, you can go the traditional route of downloading the HTML, parsing it, and find one random thing. Or you can try to do it with something like Selenium. It's up to you and what skills you want to improve. 

## D&D Map Generator

I played a ton of D&D growing up and as I started to DM I figure out I am quite a lazy DM and wanted to automate a lot of my prep work. There are two types of the map you might need. 

One is a geographical map of your world, where are the rivers, mountains, forests, etc... There is a ton of approaches you can take here and you will learn a lot about data structures, math, etc... To get you started I recommend this awesome [article](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/) it goes over a lot and has tons of links to other approaches. 

The second map you are going to need is a dungeon map. Those are usually some rooms connected with hallways. It's all full of traps, monsters, and sweet loot. Again there are tons of options you can take. This very nice [article](https://www.freecodecamp.org/news/how-to-make-your-own-procedural-dungeon-map-generator-using-the-random-walk-algorithm-e0085c8aa9a/) will get you started on the concepts. One of the best ones I ever found is this [one](https://apps.mysticwaffle.com/dnd-dungeon-generator/) from MysticWaffle. It gives you a very nice looking map, with room descriptions, furniture, traps, items, etc... 

## Choose your own adventure game

As a kid, I loved these. You can do these in any technology. You can do them in a browser, as a console app, mobile app, whatever. You can have fancy UI or just text-based. You can provide a set of accepted commands or do some fancy AI-powered text meaning recognition. It's up to you. This is an open playground.

As a bonus, you will get to practice your writing. 

---

If you have different ideas or you want to discuss these, you can contact me on my [Twitter](https://twitter.com/pavel_polivka).