10 Lessons Learned Working on a Side Project

So I officially have RCFC 1.0 released (the phone app and the Python library). I’m really happy with how it turned out, and I wanted to share some of the lessons I learned along the way.

Lesson #0: Know your reasons for working on the side project

It is very important to be honest with yourself before you work on a project.  Why do you wan to work on it?  There are many motivators, be it money, fame, or experience, but be clear with yourself.  For me, I wanted to see if I could solve a problem, but I treated this as a learning project.  It was okay if I failed.  I wasn’t planning on making money with it.  I also wanted to see if I could build a reusable framework that others could learn from.  I wanted to know how to build a phone app.  I also was working on learning circuit design, and I needed a motivation to learn.  This is why I worked on RCFC.

Additionally, recognize your constraints.  You will not have a lot of time to work on a side project.  So I wanted to put in some upfront effort to minimize ongoing maintenance.  With RCFC, that meant that in order to update functionality, I only had to write a Python function, not update a web framework or phone app (Hooray open closed principle).

Continue reading

In With the New

Well, it’s been a long time since I last wrote a post.  I knew this would happen, where I would take forever to write, and then life would get in the way (Not that that’s a bad thing).  But I’m back, and I have some news.

Since I last wrote, I was able to make a successful Warlight bot in Elixir.  I really liked Elixir (it might be my favorite language, but I use Python so much more that it will be tough).

Then at work, we decided to write some AI for boardgames we played, and I had a chance to do more in Elixir.  I got to play around with metaprogramming (templated out a game engine), which was one of my goals.  Growing up with C++ macros and hating them, I was hesitant, but once I understood that they were AST macros, and not  preprocessor text search and replace, something clicked, and I appreciated them.

I have no idea if how I wrote the code was good or not, but I got to learn something, and that’s what matters to me.  It matters a lot.

Continue reading