- on Wed 06 February 2013
- category projects
At the end of last year I realized that I wasn't really learning anything new when it comes to Software Development in general. Work has me doing the same things over and over again which isn't giving me the experience and knowledge that I require to move forward with my career.
After a couple of days I decided to start doing some projects of my own outside of work to learn more about ground-up system builds and different technologies. By doing this I'm forcing myself to learn a broader range of technologies and methods.
My current project is still super secret, so I can't let much go yet. But I've started the code in Perl and have decided to use DBIx::Class for my database interactions. DBIx::Class is really easy to get started with and provides alot of functionality to make simple and complex database requests quite quick and easy. If you don't want to spend a long time making classes for your tables, there is a nice handy tool that will generate Perl Classes from your existing database called DBIx::Class::Schema::Loader. More information on DBIx::Class and the Schema Loader can be found on CPAN.
As the project requires a front end to use the system, I have chosen to give Mojolicious a go. Mojolicious is an MVC framework for Perl, and is pretty easy to get up and running. Its routing is specified by 'module#method' (e.g. http://localhost/Test/Testing would have a route of 'test#testing' which would execute method 'testing' on 'lib/Test.pm').
Another design decision was to go with server side API's for everything. So my front ends will not have any sort of association with the data layer below. To create/read/update/delete (CRUD) any data has to be done via an API. The main purpose for this, apart from the obvious security benefits, is that I can create multiple clients in multiple languages with a single back end (e.g. iOS, Android, Web).
As I rarely do any front end work, implementing the API's has been quite a challenge. After reading around and asking for some advice, I have chosen to use REST for my implementation. REST utilizes the standard HTTP protocols to perform actions (PUT, POST, GET, DELETE). I found this article on REST very helpful.
I am still in the design stages for the API interaction, so hopefully next time I post I will have the first iteration of simple API functionality.
If you made it this far, thanks for reading my first rant about projects.