Results are in! I got a 1st Class Hons! 😀

So a couple of days ago I received a letter from college. It could only really be one thing.

It’s always a bit of a nervous time, even though I already knew my results but I was delighted to crack open the letter and see that I had been awarded a H1 (1st Class Honours) in National College of Ireland!

We hear this kind of thing all the time, but can’t really overstate just how fast it all seems to go. It feels like only a matter of months ago that I arrived as a fresh faced (relatively…) 1st year student, beginning my obsession  with coding. Well here I am, 4 years later and many modules behind me. In hindsight I kind of feel that 2nd and 3rd year were a breeze, but the real shock was to be the learning curve of 4th year.

I can honestly say that I feel like I have learned more in that final year than in the 3 previous. The pressure was immense (although partially self imposed) but It felt like you had finally got past all the “filler” and foundation stuff, and you were finally learning the beans of your new profession.

Along with the final year came new lecturers and specializations, and I had chosen to specialize in the Internet-of-Things.

We began with some basic applications, such as monitoring various sensors using development boards such as the Raspberry Pi and the Intel Edison. We collected data from these sensors, sending it to cloud services and reading it back using through basic web pages we created etc. We created databases to permanently store the data we read back in and graphed the data using charting libraries such as High Charts.

This was good fun and it was great to work on something that was monitoring real-world environments, feeling like what you were seeing the code do its thing and being able to manipulate it it by adjusting the light, noise or temperature levels of the room. Of course, this was all only entry level stuff in IoT and we later combined our knowledge with another module we were working on – Mobile Development.

It was at this point that I started to find the topic most interesting. Like the majority of people, I have an Android phone in my pocket and getting up and running with android development is so quick and easy. We created applications that sent or received data to the mobile device as well as the previously created web pages.

It was then that I started thinking, “what if I could send some control messages from Android that the Raspberry Pi would use to alter things in its environment?”. Monitoring was great fun and all, but being able to control things from anywhere in the world seems way more “SkyNet” to me, so I was in…

My first attempt at controlling over the internet was to develop a basic mobile application that contained a number of toggle switches in the main UI. Each of these switches would have a boolean value associated with it. This would be considered the “switch state” and whenever the user interacted with the application, all the switch states would be combined into a JSON object and sent to the cloud alongside their keys, for example {“switch1” : true, “switch2” : true,  “switch3” : false }. This was initially sent to, a free to use cloud platform service that is really good for the beginner in IoT development. I later implemented the system also in Firebase and in AWS IoT, though there’s considerably more setup to do when using this cloud services.

With the data now sent to the cloud service, I was able to subscribe to the topic of that specific data through a Python script I wrote to run on the Raspberry Pi. In simple terms, this script simply monitored the cloud service for changes and when some were detected, it pulled the response object, which was a JSON string of the switch states just like above. From here I was able to traverse the json and attribute its switches and booleans to some temporary variabes within the python script. That was pretty much all of the hard stuff done, and all that remained was to write a little bit of logic to check which switch or switches had changed and to toggle a set of relays that were attached to that channel. It sounds mode difficult than it was really.

I later built much more complex applications such as the RapidARM project featured here on my blog. This project would be seen as a kind of flourish to try to demonstrate the level of competency I had reached as a result of my learning to that point. I developed applications for smart-watch and for mobile, inter connected by Bluetooth and sending back and forward heart rate data. The mobile application analysed and graphed the incoming data and decided whether or not to act on it. This application also featured smart-home features and I built a model house to go along with my demo of the project at the end of the semester.

Overall, I really enjoyed my time with National College of Ireland, despite the inevitable pressure at times.

I learned so much there. I suppose I learned how to learn and in the end I discovered that programming is more a process of how you think rather than how you code.

I look forward to the many projects and whatever else is to come in the future.

Signing off –