Forum on the Internet of Things: Smarter Living in the Caribbean

On April 24, I had the opportunity to be a panelist, presenting a project I built for my MSc final submission.

This was at the ITU’s Forum on IoT, held at the Trinidad and Tobago Parliament building.

My solution that demonstrated the use of RFID for collecting traffic data and using cloud computing to process and communicate that data.

While preparing the presentation I was asked to explore what elements may need to exist to create an “An Enabling Ecosystem for IoT use and monetisation”.

It was such a good opportunity to explore this idea. In researching that very thing, I found, “Understanding business ecosystem using a 6C framework in Internet-of-Things-based sectors”. A great paper that helped me contextualize the work I did, along with the challenges and opportunities that came after.

The actual presentation can be found here.

Beyond​ just presenting, the forum proved a good place to meet up real practitioners. From Fasove and their boat monitoring device, to Ancel Bhagwandeen and the work he’s done with restoring automobile batteries, to the recently-graduated University students making waves with company after company.

Some good connections were made and I look forward to following up with them soon.

Advertisements

Presenting on Cloud Native

I presented on the imperative of designing specifically for the Cloud at the 13th edition of CaribNog.

My central treatise was that entities are moving away from simply Cloud-enabling existing solutions and having the Cloud as a backup. Analysts, architects and developers are strongly moving towards building solutions that are native to the Cloud.

Here’s the presentation.

 

Who is Nurse Carter?

I was on vacation over the 2016 Christmas period. At the office, we had recently concluded our Power Hour series for the year with an episode describing how we built a virtual assistant that made parliamentary recordings discoverable via Facebook messenger. 

We called that Hansard Speaks, and you can check out that episode here

So, I’m home thinking, ‘what next?’ when we had a new beginning of our own: my baby girl was born! Apart from the explosion of joy with her arrival, I was home for a month. 

Mind you: I understand that paternity leave is officially 3 days in Trinidad & Tobago. My company, Teleios Systems gives us a week. So, my wife and I agreed that I’d augment that with 3 weeks of vacation. In the end, we’re very glad we did. 

Anyway, being home with baby, witnessing the pains, frustrations & gladness of interacting with our public health systems, gave me the idea for my next virtual assistant: Nurse Carter

Nurse Carter is a virtual assistant that you can ask questions (kind of) and it will tell you when & where you can get access to various kinds of health services.
A few years ago, I used the data located on the Trinidad and Tobago Ministry of Health‘s web pages as the base for a mobile app. I called the app, TT Health Facilities and I used it to list all the health facilities and the services they provided based on their schedule. So, I knew there was a place to retrieve this data from.

As we did when we built Hansard Speaks, I used the Microsoft Bot Framework, this time using NodeJS rather than C#. This one took a while to put together because crying baby trumps messy JavaScript. But it’s finally done, and you can access it directly on  the web or Facebook.

This was another opportunity to get into the technology around Lucene and that type of search experience, everything else was mostly hacking around in Node. I guess I’m sort of working my way up towards more natural language interactions. So maybe next time I’ll use Microsoft’s Cognitive Services’ Language Understanding Intelligent Service.

Why I dig chatbots.

Chatbots are the new app.

Yes, it’s still a walled garden. Unless you own the messaging client, you’re at the mercy of the owners. Those owners being the bigger client providers whose messaging market you want to access. These days, that means Messenger (Facebook), Slack, Skype or WhatsApp.

Still, it’s a way in.

I’m working on another one. There’s largely no client, yet. I just have few ideas about how it could be profitable. But I really dig how easy it is, relatively speaking, to give an idea legs (or a mouth) so to speak.

I’ve been using Microsoft’s Bot Framework and together with their documentation, the process has been good. That they let you “write once, run anywhere” in a bot context is very savvy. The framework lets you deploy bots via their platform and have access to a laundry list of messaging channels, including:

  1. Text/sms
  2. Office 365 mail
  3. Skype (auto-configured)
  4. Slack
  5. GroupMe
  6. Telegram
  7. Facebook Messenger
  8. Kik
  9. Web (auto-configured, embeddable)
  10. Direct Line (API to host your bot in your app)

OK, let me head back to my next bot.

(the) Hansard Speaks!

We built a bot at Teleios.

Well, we’ve built bots before. In fact, one time, we built this amazing one that was over SMS – part of a game called MeggieWars. It was hilarious and fun. Personally, I’ve been a fan of using messenger platforms to do fancy stuff for a long time. Way back in 2005 my friend, Kevin Weekes and I attempted to use the MSN Messenger api to do automatic translation between IMs using the babelfish web service. We got as far as the semi-finals for the Imagine Cup that year.

378849_10150330509175060_580830935_n
Irwin and Kevin, Imagine Cup Participants, circa 2005.

Anyway, we built a bot in our last Teleios Power Hour episode for 2016 – Hansard Speaks. I had been thinking about doing something like Hansard Speaks for a least a year. It lets you search parliamentary proceedings (thus the name Hansard) via Facebook Messenger, thus the Speaks. Any text you type, it will search and then it gives you either a YouTube link of the moment it was spoken in the parliament or a link to the PDF containing the passage.

Right now, it works with a snapshot of the Trinidad and Tobago Parliament data from YouTube and their website.

In terms of the tech we used, we put together Azure Media Services – for the media ingestions – with a Lucene Search in ASP .Net  and did the bot stuff using Microsoft Bot Framework.

As the world goes crazy for bots, I hope to build a few more soon.

Teaching Cloud Technologies (2016/2017)

We just concluded another run of the Cloud Technologies course at the University of the West Indies. This course is part of the MSc Computer Science program.

As lecturer, I had to come up with the course outline as well as the content. In so doing, I get the opportunity to refresh what we talk about as well as how we approach assignments.

This course comprised of ten modules:

  1. Intro to Cloud Technologies
  2. Cloud computing infrastructure
  3. Virtualization
  4. Big data
  5. Cloud development patterns
  6. Cloud resource management
  7. IaaS Automation
  8. Microservices
  9. IoT
  10. Cloud for Research

Though our primary cloud platform is Microsoft Azure, students are free during assignments and project submission to use other cloud providers.

One of the assignments involves virtual machine scale sets and containers. The draught goes like this:

Z. Zanko Systems provide sales processing systems for large commercial banks.

They receive more than 5 million JSON requests per hour (revised to 300,000).
Each request must be stored in permanent storage. The format of the request is:
“{“TransactionID”:”1″,”UserId”:”A1″,”SellerID”:”S1″,”Product Name”:”Financial Trap”,”Sale Price”:1000000,”Transaction Date”:” “}”

You have been hired as a System Developer by Zanko. You have access to VMs whose capacity is equal to that of A1 VMs in Azure IaaS or Containers of similar capacity.

Develop a mechanism to generate the requests your system faces.

Design and implement a solution using a container-based approach or a
virtual machine-based one to process 5 million requests in an hour.
For your receivers introduce a failure rate.
Store the occurrence of failures.
Justify how you chose to store and monitor failures.

Though most students can build this out using azure, one enterprising student chose to use AWS and reading his submission was a nice view of getting this done using Amazon’s resources vs Azure.

This year, Microsoft put a halt to the Azure for Education Academic grant, but did have a number of other ways for students to get into cloud, including DreamSpark and other offers.

The project component this year changed a bit, too. In the two years prior, we asked students to build working cloud services themselves. This year, we asked them to propose a cloud service that featured understanding of:

  • Cloud service definition
  • Cloud service models
  • Cloud delivery models
  • Cloud for research
  • Cloud development with a regional focus

We saw some excellent solutions that we hope to hear more about in the future.

The Mark of a Good Programmer

The mark of a mature programmer is willingness to throw out code you spent time on when you realize it’s pointless. (Bram Cohen)

I saw that quip on the Xamarin bug list.

I’m building an IoT solution using a Raspberry Pi 3 device. It’s been a while since I looked at the solution, so I ran, “sudo apt-get update” to refresh the OS and various utilities on the Pi. After the slew of upgrades, things seemed to be faster and amazing.

Included in those upgrades was one that moved my version of mono (I use C# on the Pi) from 4.0.something to 4.6.2. Which led me to exceptions like listed here. Problems with SSL authentication. I spent a few days digging around for solutions. I went from custom SSL handler code, to setting up a reverse proxy with nginx, to trying to use libcurl.

When I have a solution that worked and then “suddenly” stops working, I generally find myself trying to find a quick approach that lets me move on to what I actually want to build. This strategy is very breadth-first. After all, that thing that stopped working, as far as I’m concerned, worked, so I’m about to make the next big thing. I don’t want to redo that which I’ve already covered. So searching gets frantic sometimes. And I get distracted more easily.

Which brings me to that quote above. I just kind of caught me in that place between distraction and frustration. As I thought about it, a big part of what I was doing on the Pi and that bug was tied to a strong desire to keep my solution working in C# even though there was a likely better approach with some other stack on the device. So, I switched, used Node.js for where the communication pathway was breaking down and I could move on.

I don’t expect this is the final architecture for what I’m building, but it lets me build out higher priority areas, while that bug gets resolved or I understand with a bit more depth what broke between versions. Either way, here’s to realizing pointlessness.