Dipping the toe in the ocean of possibility
I’ve mentioned before that I admire the art of programming as an art of creation. One is given the tools and the world is the proverbial oyster. A painter has his colors and brushes and an empty canvas, while a programmer has a computer and the tools to make just about anything one desires(and is capable of).
This first project only solidified my intention of making this my future career. While the process felt like being stranded in the middle of the ocean at times, especially in the beginning, it all started to come together by putting one foot ahead of the other. In no time, the scope of what I wanted to do expanded and I found myself being excited by the challenges that lie with making the ideas come to life. It wasn’t my original intent to have a “favorites” feature, for example. But it took very little self-convincing to see just how many covered topics the feature would incapsulate. Not to mention it would be cool just to do it and make it work.
Having coded prior to the program, it was very encouraging and somewhat exhilarating to discover that the muscle memory, as well as the general understanding of structures and relationships between objects came back fairly quickly. It wasn’t long until the bugs and their cause became more and more intuitively understood. In fact, there was only one bug that had me scratching my head for a good 30 minutes. Everything seemed to be structured just fine until I saw that the API returned the same information as a string in one instance and as an integer in another. Nothing a little parsing couldn’t fix.
Probably the most pleasant and interesting part of the experience was figuring out how to allocate tasks in the best way. How to create methods that are reusable and adequate for the broadest possible range of tasks it needs to perform. But also not too broad, because then the tasks may need to be allocated to a different set of methods. In either case, it was a pleasure to make something work. And starting out with the language made for a pleasurable experience was also great.
If I had to describe some of the technical aspects and challenges that I was really excited to learn and practice during the project, it would be working with an API, and learning some very nifty patterns that the lovely and pleasant Ruby language offers. Having tried on a few API’s for size in the project, it became apparent that each one offers its own set of interesting things to work through. I was utterly stumped for a good while for example, when a call to the API returned different types of values to a seemingly very similar type of call. One was parsed as an integer, and the other was a string. It didn’t seem like there should’ve been any reason for the logic to misfire until I came upon this fact. And I’m grateful for running into it this early on in the game, as I’ll have a little subconscious hunch now when a similar situation occurs, and a lot less time will have to be spent debugging.
I couldn’t in all good conscience finalize this post without mentioning how pleasant a language Ruby is to work with. I was reminded pretty late on of the ability to mass assign variables. This reduced the line tally by a good amount; not to mention, the code is so much more pleasant to look at. I’m very much looking forward to learning and creating a lot more. After all, that’s the name of this game.