I have had a lot of problems with starting projects and not following through. It took me about a year to work through the Ruby koans official site [http://rubykoans.com/]|my code [https://github.com/magikid/my-ruby-koans]. And they were simple programming exercises designed to introduce you to the language. I say no more.
This is the year that I stop starting without finishing, at least where programming is involved. I have recently started a new project that I intend to be a sort-of showcase for my website building skills. So far, I just have the idea but I want to start it right from the very beginning. To that end, before I write a single line of code, I will be writing a functional spec [https://github.com/magikid/bibliophilium/wiki/functional-spec] which lays out the user interaction with the site. It is much easier to pick out issues with the design when they’re just ideas on paper. This will be completed by next Wednesday (11 March 2015).
An example of when writing a spec first came in handy. I recently started a new project at work. It will be a fairly simple site to create but it has some very demanding customers. Before I started to write the code for their website, I sat down and wrote a spec for their site. I laid out all the different pages of the website. I wrote down likely use scenarios for the website. I put in things that I wouldn’t be supporting during development.
One of the customers came to visit me and discuss his ideas for the website. Because I had already formulated my ideas for user interactions, I was able to show him that we were already on the same page in our thinking. I was also able to assure him that I didn’t want to obliterate his current workflow and destroy his productivity with my design. The best part for me was not having to completely explain myself to him since I’d already done that in the document. I was able to send him a link and say, read it yourself.
Back to my library project: the idea came for this site came to me because of the lack of decent library software. No seriously. Look around if you don’t believe me. I just want a decent website that is mobile friendly to manage my books. It would be great if it integrated with Amazon to pull in book covers too. That in a nutshell is my new project. I will be building a library management website. I’m sure this won’t be my last post on the subject.
For the programmers in the audience, here’s what my thinking is for that side of the house. I’d love to use modern programming standards for this. The back end will be coded using my beloved Ruby language. I haven’t decided if I will use a full Ruby on Rails [http://rubyonrails.org/] stack or a Rack application like Grape [https://intridea.github.io/grape/] for the API. I’m planning on using the JSON API [http://jsonapi.org/] standard either way for communication with the front end. Speaking of, I want to use a javascript framework like AngularJS [https://angularjs.org/] for the front end of the website. That way the website has a very responsive feel to it. I also would like to learn more about how to create a full website with AngularJS.
I’ve been dabbling around with javascript frameworks for about two weeks now. I’ve tried out both AngularJS and EmberJS [http://emberjs.com/]. I liked the models aspect of Ember more, especially since Angular doesn’t have anything close to models. But after playing around some and exploring both, I think I’m going with Angular because of the support for it. I think it will be easier to solve any problems that I have with it because of its popularity.