Making the Most of Your Summer: Personal Projects
Written by Luiza Wolf (Duke University ‘22)
POV: You’re on TikTok. You’re scrolling. You think that maybe you should be doing something more productive. But we are in a pandemic. So you keep scrolling. A TikTok reminds you that maybe you have more free time since we’re in a pandemic. But maybe another day. You keep scrolling. Suddenly it’s 1am. You wonder where your time went. You scroll a little bit more. Tomorrow’s the day you’ll be more productive. It’s tomorrow. You find this article. Suddenly things look a little more promising. You glance at your phone. You could go on TikTok instead of reading this article. But you have been thinking about this for some time. So maybe you read it.
POV: You’re on TikTok. You’re scrolling. You think that maybe you should be doing something more productive. But we are in a pandemic. So you keep scrolling. A TikTok reminds you that maybe you have more free time, since we’re in a pandemic. But maybe another day. You keep scrolling. Suddenly it’s 1am. You wonder where your time went. You scroll a little bit more. Tomorrow’s the day you’ll be more productive. It’s tomorrow. You find this article. Suddenly things look a little more promising. You glance at your phone. You could go on TikTok instead of reading this article. But you have been thinking about this for some time. So maybe you read it.
We hear the pro-tip time and time again that working on personal projects is an excellent way to develop and practice your technical skills. Yet, it can be difficult to find the activation energy to steal that bit of free time from other things. There are lots of approaches that can be taken to get started, but I’ll be taking you through how I managed to get started. If you’re like me, once you get started, it’s addictive. Coding can be a puzzle, a create-your-own-adventure, a real-life Sims.
Getting your Idea
I’ve talked to other students about personal projects before and a message I consistently hear is that they never know what to actually work on. For me, I find that the personal projects I can become invested in are ones that relate to solving problems I’ve run into personally. An example I’ll further explain in this article is “GoodOutlet.” Book Outlet, a discount book website where I used to routinely get my books from, has pages and pages of books (but nowhere close to all of them). In order to avoid going through each page to see which books that are available on Book Outlet are books I wanted to read, I decided to automate this process. Other personal projects have spurred from previous hackathon ideas (that running “ideas” list in my Notes app) or trying to continue previous hackathon projects.
Thinking of a problem you personally run into can be hard to force, though, and sometimes doesn’t happen naturally. There are pages and pages of ideas that come up with a simple Google search if you’re struggling to come up with something on your own. Even if it’s something that already exists, personal projects can be a great way to practice or learn new technical skills, and so the learning is more valuable than the product. In addition to pulling inspiration from lists of personal project ideas, you can also work on recreating products. For the brief period of time I was committed to learning front-end web development, I latched on to the fact that my community college’s website is (no offense to them) very ugly. I sought to redesign it, which gave me experience with UI as well as some intro to web dev. The same thing can be done for whichever app on your phone could use a facelift.
Idea to Code: Start with what you know
As with many other things, I’ve found that the easiest way to get going and gain momentum on personal projects is to start with what you know. From my computer science coursework, I enjoyed and felt comfortable with Python, so that’s where I began. Then everything else is just a Google search away. I learned how to use Python packages for web scraping to get the information I needed from Book Outlet, then I learned how to interact with APIs in Python so I could use my to-read list from Goodreads. After a day’s work on that, I had a pretty simple script going that was doing what I had set it out for. But why stop there? I wanted to create something that I could share with others that didn’t know how to code or run a script. I needed a web app.
There are two popular web frameworks for Python: Django and Flask. I decided to go with Flask after some research because I had heard it was easier to pick up if you’re familiar with Python but not with web development. So here was my biggest learning curve of the project, but it never felt too intimidating because I was using a language I was comfortable with. Once the basic ugly web app was set up, I could then invest my time in the front-end, expanding those basic skills. When it was all up and running locally, I wanted to share it with the web. This is where the mysterious “cloud” you always hear about comes into play. If you have that web app running locally, services like AWS, Google Cloud, and Heroku let you put it on the web (p.s. I’ve found that Heroku is the easiest to use for beginners). If you want to go an easier path, there’s also pythonanywhere.com, which really simplifies hosting for Python-based web applications.
TLDR; a very specific formula if you just want to get going and know python
- idea
- code functionality in python
- incorporate it in flask
- work on the front-end
- want to share it with the world? learn cloud hosting. for something even easier, use pythonanywhere.com
As you can see, a lot of this ends up evolving naturally, and you gain some great experience along the way. The resources available can be endless, so take care not to get overwhelmed. Inevitably, you’ll run into bugs and errors. Depending on what stage you’re at in your CS academic career, you might be well acquainted with Stack Overflow and other discussion boards by now. These become even more important when working on personal projects because you no longer have the support network you do in your classes (i.e. TAs, professors, other students, etc). However, the beauty of being in university is that you’re not solely reliant on whoever replies to your question on a discussion board. At Duke, for example, the Co-Lab offers office hours to help with these sorts of things.
Of course, there are many paths to take when working on personal projects. At the risk of sounding cheesy, just have fun with it! Follow one of [the space bar]’s very own, Karing Ng, this summer as she does her own personal projects. Regardless of where this summer takes you, you can come out of August with something to take ownership of.