Somehow the majority of my vacation got taken over by my obsession with building a side project. While it may seem like a waste to spend my vacation doing the exact same thing I do at work (coding) - it's actually been a great experience. I've learned a ton and moved an idea forward - both of which have made me very happy. With the warm weather, no commute, and no need to talk to other people - this type of coding has also been far more relaxing than coding at the office.
I decided to start my side project by first building an API, as opposed to a full blown application. I did this both to learn more, and because I know that I want to build a pure React.js front end down the line - and wanted a well thought out API backend for that.
One of the things that draws me to use Ruby on Rails is the idea of "convention over configuration" - that is to say there is a standard way to do things, and you should try and follow conventions instead of spending all your time customizing the configuration. While I'm all about beating to your own drum, for many things like building a secure password system - there really isn't a need to reinvent the wheel every time you build a new application. These kinds of standard conventions that Rails provides allow me to spend my time building domain logic instead of endlessly fiddling with common problems that have been solved already.
However, when it comes to building an API using Ruby - there are much less established conventions. It feels a little I'm in a flying DeLorean, and where I'm going, there are no roads.
Despite not having a clear idea of how to build this API, I've been able to make significant progress by scouring the internet for tutorials and stack overflow answers. Without much direction I've been able to build a functional API, and have learned a lot along the way. On the one hand I still wish there was more guidance for building APIs in Ruby. On the other hand, venturing off the beaten path has allowed me to yet again up my skillset, and gives me even more confidence that I can pretty much build anything I put my mind to. That feeling of empowerment alone has made this side project a success - regardless of where it goes from here.