My year in open source and side projects!
Ok wow. What an year it has been. A lot happened with me in my personal life - both good and bad - but I'll try to refrain from speaking (or writing, technically) about them here.
This post is my reflection of my work in open source and side projects in 2013.
I joined Github about 50 weeks ago, after reading a lot about it over on reddit. But the whole concept of version control made no sense to me at all. Like, what is "distributed version control", "who would use it", "open source, ok cool". So, naturally, I didn't use it much.
Now here's the weird thing - a few days ago, I completed a 180-days streak over on Github. Why? I have no idea. How? I kept on starting new projects, always working on stuff. Was it a good thing? Some will say no, I could have learned, say guitar, in that time. But if life is all about learning new things, and doing things you love, then I don't regret it a bit.
Now, by this point, you probably know that my writing sucks. I find it easier to create a timeline to get my message across. My timeline will be guided by the projects I worked on.
A (solicited) list of my projects from 2013 in chronological order
- Yet Another Learning Tool - helps you learn stuff
- MoodicPlayer - the weirdly-named mood-based playlist maker
- Projects - literally, a project
- RedditAgain - because no one will ever have just 1 reddit account
- TPB - why is this data no open enough?
- HackerNews API - a Python-API
- HNify - a RESTful API
Yet Another Learning Tool
Yet Another Learning Tool (YALT) is a lightweight and minimal utility to make it easier for you to remember things. It is a flash-card like system, where you'lll be presented with random questions from selected database. With YALT, you have to spend less time learning more.
YALT, as I call it, was the first serious project I ever worked on. It was my first advent in the world of open source. It was the very first piece of code I put on Github. It was not a unique idea, and definitely not an open-source-worthy implementation. At the time, I was learning Java, and just wanted to make something cool with a minimal GUI. Because, buttons.
MoodicPlayer, using last.fm API, builds a playlist for users based on their mood.
The idea for this app(let) excites many people. As simple as the GUI looks, building the whole app, and getting things to work was painful. I locked myself in a room for 3 days just get the last.fm API auth (which was an alien concept to me) to work.
Projects is a list of practical projects that anyone can solve in any programming language. These projects are divided in multiple categories.
This is when things started to get interesting for me. I wanted to learn Python. I did tons of tutorials online, but everyone just taught the basics. I had no idea what I was doing. I realized that I'm not alone in this. There's other people who miss a better way to learn a language. Hence, this list. I announced it to reddit after which it just took off. As of today, the repo has 4000+ stars, and over 40 people have contributed their own solutions.
This little script helps migrate an old Reddit account to a new one.
Because I was learning Python at the time, and we all know how well the language works with the reddit API, I wanted to make something practically usable. Seeing how much throwaway accounts are used there, this was a great thing to make.
TPB is an unofficial Python API for ThePirateBay. (don't look at me like that.)
When I started this project, I was fascinated by the power of having open-everything. What access to data can do. One of the biggest (controversial) websites on the Internet, that runs exactly to take that motto forward, that no good API for developers. I said to myself, well, if no one wants to do it, I'll do it. The response on reddit is a clear indicator of what people want to do, but can't because of restrictions on data.
HackerNews API and HNify
HackerNews API is an unofficial Python API for HackerNews, and HNify is it's RESTful port.
I found it a little ironic that one of the top hacker sites had no open, working API. I took as a learning opportunity to change that. These projects were two of my biggest projects, with a diversity of new concepts and technologies that I had to learn. And people loved it.
A secret project
Just last week, a friend and I started working on a new web app - a new way to discover and listen to music. It's still under development so I can't talk much about it. We're building it on the MEAN stack, which I knew nothing about until a few days ago. I spent 3 days, in my room, writing code, reading up online about JS, node, express and pushed tons of code. Even if this app isn't complete on time, I'll still be proud of learning a lagnuage in only a few days, enough to be able to make something usage (or maybe a prototype).
All said and done, there's a few things that I particularly want to put out there. These are some of my major takeaways from this year:
Start projects - There's no bigger way of getting yourself motivated. Just get start.
Keep going until you hit a dead end - Try everything you can until you hit a dead end, at which point...
Ask for help - Trust me, SO is a priceless resource.
Learn to prioritize - Now, I'm a full-time international student, with a part-time job, so this really applies to me. But everyone should know to priorize their tasks.
Do what you really want to do - Listen to what people say, see what they do, read about it, but do only what you want to. Doing anything that you are not self-motivated about is fruitless.
Surround yourself with people like you - You are the average of 5 people that surround you.
Don't be afraid to talk about your projects - It's not bragging if done right. If anything, there's a chance someone might be interested in what you're talking about and offer to help.
Don't just talk about your projects - That pisses people off.
Don't forget to take a break - As Neil Patel puts it: "Just go crazy once a month, and you’ll find yourself to be a much more productive worker."
Numbers help, but don't matter - Internet points can help motivate you, but too much attention to them will make you lazy. Here's a funny talk on that.
Always be learning - It's great that you know language x, try language y that has completely different paradigms. You know OOP, now try a functional language.
That's all for now folks. Here's to a prosperous 2014!
If you'd like to comment on this post, hop on to Twitter, or send me an email.
This post was hugely inspired by Ian Webster's.