My Programming Journey

A friend of mine asked me about where to start in terms of programming. I wrote this long piece on my start to try and answer his question.

Advertisements

It started with a letter in 1996.

My grandmother was at the time asking me about career ideas. I told her Computer Science. I didn’t really know what it was. It just seemed to put together two of my likes at the time, Computers and Science.

My family has generally been encouraging about my ideas in terms of career and pursuits, or at least, not overtly discouraging.

The seed of the idea for CS started much earlier, when on a visit to my uncle in the country, I saw he had a PC on his desk. Asked what he did, I think he said he was an analyst, then fired up a game of Ms. Pac Man.

That was it.

From there, I did IT in Secondary School. But it was a time of prioritizing finishing the syllabus over pursing dreams, so my entire class had to do the level at Technical Proficiency. This level essential prepares you to be a really good secretary.  We did the Office Suite, and little else. I wonder if they still have that around?

Anyway, this was back in the 90s, so the only real exposure I had beyond that was setting up my first email address (@Yahoo) in a time when passwords could be 4 characters.

I wouldn’t get back into anything IT related until starting University in 2001.  I applied to the University of the West Indies, for Civil Engineering. When I got there, I opted instead for Computer Science and Management. My uncle funded my first year’s tuition. Without him, I do not know when I would have gotten in.

The early courses were introductory, Java-based and fairly bland. Except for MicroEcon, where I earned the nickname for a day: Syllogism. Generally though, we had come from Secondary School where the goal in life was passing your exam. We weren’t disabused of that notion.

But needing to earn my keep to be able to stay in full time CS programme made me have to look around for opportunities to apply the growing skills.

First, it was joining the nascent team in the Student Activity Center (SAC), who were building and managing the computer facilities there.  Mr. Mike, the General Manager, essentially gave us a lot of room to spec out the rooms, the machines that would go there, the networking that was needed and the rosters for work. Looking back, that sort of freedom provided the first feeling of what University was about – responsibility to learn on your own, and stand behind the choices you made.

The labs at the SAC were the grounds for a kind of development that was very groovy. We worked late into the night, strangely, when I was there there wasn’t that much gaming. That mostly happened in other computer labs on campus or downstairs. Instead, there was a sort of civicness of the people who passed through there.

From the lab, a team, the Campus Pipeline (CP) team, was assembled. Another bunch of students, this time rolling out or helping to roll out the online portal for students to use in a Facebook-like way.  One nifty project required us to create import files in XML, via looking through a database of student records, which would then be loaded into CP.

My only tools were the javadocs, two courses on intro to Java, google and what was like a blackbox of magic at the time, a jar file made by one of our lecturers, I think Mr. Sheik, cs11.jar.

We were so new to programming, it took a long time for the incantation, “public static void main(String[] args)” to even make sense. It was just what you put to get JCreator to do the thing.

As it turns out the xml problem was just string operations (in my mind at the time). We had no end of assignments that was open a file, do a thing, then make another file.

After the CP gig, one of my most formative activities came from a course I wasn’t even supposed to be doing – MIS.

Management Information Systems was a course offered in the Social Sciences faculty for Management students to get a sense of IT in a non-combative way, I guess. I’m not even sure why I did the course. Maybe I was caught by the course outline. Maybe it was the lure of an easy A.

In that course, you had to come up with a project of your own choosing, and describe its benefits. Our project, e-commode, was poorly named. We were looking to provide an online version of the Student Advisory Services register of places for rent for off-campus students. It wasn’t bad. We probably got an A, and we changed the name, to e-commodators.

Another facilitator, Mr. Victor Cowan gave me an opportunity to do something real with what I had learnt. He ran the Student Advisory Services office and listened to my proposal after the course was completed to build out the e-commodator system for the University.

Since pricing for solutions wasn’t a course, and I was a second year student after all, the fee I charged Mr. Cowan worked out to be what an intern might have made for the summer. He was willing to make the leap with me and let me build out what became the Online Accommodation Student Information System, OASIS.

It was written in Classic ASP, with VBScript. I used a MySQL database, because I was fancier than MS Access (remember IT in form 5?) and it was free. I had never done a web project before. I hadn’t done the courses for it yet, but googling felt like the answer to every problem. Books, too. Finding those long-form VB tutorials and w3Schools (I know, I know) articles were enough to convince me it could be done.

In the end, it took the full two months, but we got OASIS up and running. In those days, there weren’t (any?) online mapping providers – this was 2003 – and so, I went down to WASA and paid the horrendous TT$700.00 per map, for digitized versions of maps of St. Augustine, Tunapuna, Macoya, Arima, Champs Fleur and a few other towns. Writing about it now, I feel like it was a big deal, but back then, it was just what was needed for the solution to make more sense.

I think they still use OASIS to this day, perhaps with some modification.

That work on OASIS was pivotal to how I took the next year. I literally blew through a course called Application something or other. Because the language was VBA and I had just spent all July-August writing VBScript for this site. I then took Internet I and II because the Internet.  Dr. Gardler remains one of my favorite lecturers.

My final project involved mysql, php and more upgrading.  Another site, the Main Library’s past paper website used plain html to keep track of past paper files that were sent from across campus. I converted it to what was essentially a CMS for past papers.  It was another project where I got to just figure out how things worked by searching online and understanding the technology and implementing it. This was with Ahmed and Frank, more people who were willing to provide the space for a student to explore and make something meaningful.

I spent my last year, realizing that as good as it felt to write those kind of solutions, the Design and Analysis of Algorithms required time, reading and deep thought.

I graduated in 2005 and started working at Teleios Systems that year.

 

Remember, remember! The fifth of November

This year’s Teleios Code Jam Finals was November 5.

We spent time again bringing light to the ideas around the Internet of Things.  It was a great event, really strong presentations were brought. Our winners, Team BlackIce demonstrated OceanGuard, an IoT solution for monitoring environmental data about the ocean.

Apart from the nerves, TCJ Finals Day has an energy all of its own, I was caught off-guard by it this year. We changed up how Phase 3 would have proceeded. With 5 questions to hit instead of the 1 demoralizing one, it made for a marathon of Teleios personnel catching those who were pressing through.

And then, just like that, it was all over.

As I said during opening remarks, we had interest from 19 teams, but 7 made it to the finals. I’m looking forward to see how we get those other students and faculty down to show off their ideas.

Teaching Cloud

I’m lecturing at the University of the West Indies this year.  I’ll be teaching the MSc. course in Cloud Technologies.  This year, I’ll be working along with Alysia Huggins. She’ll be bringing expertise in distributed systems to the course, but not just that, some very cool approaches.

  • We’re looking to have more interaction from professionals, so there’ll be in-class Skyping, interviews and assignments that require our students to get out and look around at what’s happening in the region ’round Cloud Technologies.

Their first assignment will be to take a look at IaaS and start to answer the question, “Is the West Indies ready for building/deploying it’s own IaaS services”?

#TTGEN2015

We successfully wrapped up covering another set of elections. This time, closer to home.
In Trinidad and Tobago together with Solution by Simulation, we provided data capture, analysis and reporting for the General Elections on September 7.
I built specialized tools for us to capture and make the data available via API.
From there, the visualization experts TV6 hired displayed the info in real time.
It was great building and supporting this data capture for such an important event.

 

Election vibes in St. Kitts & Nevis

Solution by Simulation and I provided live election updates for the recently concluded St. Kitts & Nevis General Elections.  We were hosted by ZIZ – the National Broadcasting Corporation.

Their election desk used the analytics and mapping solution we built for broadcasting live results to the population. ZIZ is the official broadcaster of election results, so they got it from the supervisor of the elections first.

Joshua Browne and Irwin Williams at the ZIZ studio
Joshua Browne and Irwin Williams at the ZIZ studio

We landed the morning of elections day – Monday 16th February (2015) and went to the news station shortly thereafter.  After making adjustments for television presentation, we spent the night, getting polling station results, and fitting that into leading-data for constituencies, and prediction for results.

There was some controversy with the pace of reporting, but it was a really good learning experience for the whole team.

 

Which came first, the API or the app?

The Caribbean Open Data Code Sprint took place on January 26, 2015.  It’s a 24 hour coding competition.  In it, you are given access to specific Open Data datasets and asked to come up with a solution that uses one or more of those sets.  The hosts were the University of the West Indies and the main sponsor was the Caribbean Telecommunications Union.

The sets we had access to are available on http://data.tt

Anand & I were talking about The Caribbean Open Data Code Sprint for weeks.

The conversation went like this:

Irwin: Code Sprint?

Anand: Yeah, why not.

So, we were excited, in a way.

When the day for participation came, I was already on my way to the Hyatt. We hadn’t confirmed if he was going.  He called,

Anand: Code Sprint?

Irwin: Yeah, why not.

We met up with Nigel (Wallen) who came from Solution by Simulation and he joined up with us.

After discussing a few ideas we settled on the idea of a mechanism for rating secondary schools in Jamaica.  It’s so specific because the data we had ready access to came from secondary school performance in Jamaica.  It was fairly comprehensive.  Data listed included:

  • The number of grade 1, 2 & 3 results.
  • The number of passes and fails.
  • Metrics were broken down according to subject.
  • Beyond that, there was also data on teacher qualification.

Our ranking system was necessarily simple, we wanted to use the data to enable an informed discussion on what is the best school to attend.

As we discussed it, ‘best school’ is at best shakily determined by only using information on pass rates.  But as we said, we wanted to open the conversation.  As implied here, the conversation needed to be informed by data.

We considered on how to present this solution and came up with an application that let’s you view the best schools on a map.  How to know the best school though?  We decided to go with an algorithm that computes a score of each school, based on grades.

Once we had that core idea, we approached it by building an API that brings together the school data and the calculation around the score.  As we built out the API, and spent more time crafting  it out and making it make sense, we spent less time on a demonstration app and 24 hours became 18 which became 10 and then 4.

We left the venue to go home and work from there.  That didn’t quite work. Anand kept the light burning longest – til around 2am.  We did have a sound, fool-proof plan though – to reconvene very early the next morning.
The next morning there was a four-car smash up that involved one fatality and hundreds of commuters being stranded or stuck in the gridlock of the highway.

One hour before the event, we had a great API, a far less great application, and a decision to make.

Do we go with the tried and failed approach of, “well, we had this great idea for an app but we ran out of time and here is this thing”? Or, do we reexamine what we’ve done and understand what value that offered in that context?

We went with the latter option.  In our five minute presentation, we chose to focus on the innovation of building an API that married the existing dataset with knowledge and applied insight. We demoed the API – available here & spoke to its ability to then be consumed by other developers and apps – like PowerBI  or Google Fusion Tables.

This edition’s judging panel included Chief Knowledge Officer of the Congress WBN,  Bevil Wooding as well as lecturers from the University of the West Indies, Dr. Akash Pooransingh & Dr. René Jordan.

opendatacodesprintjudges

The judges just asked one question and we were done.  A few more teams presented and then we waited for about an hour or so.

When Dr. Mallalieu provided closing remarks, she had this to say:

“The winning team hit the spot on

opendatacodesprintDRMALLALIEU

That winning team was us (Team IAN – not very imaginative, sorry). Our API captured a big part of what the Caribbean Open Data Code Sprint was attempting to accomplish and it felt like the start of something good.

Cloud Technologies

Recently worked with Dr. Patrick Hosein to help deliver the University of the West Indies’ first ever Cloud Technologies course – it’s part of their MSc in Computer Science programme.

It was a challenging engagement that allowed us to help the students navigate how to get started with the Cloud. We had a good spread of concerns in the class, too. Students were software developers, involved in management and service delivery of IT services, researchers and lecturers.

We basically started with a definition – the NIST definition – of what Cloud computing is and built on that with examples, assignments, case studies and projects.

The NIST definition of a cloud service is:

Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared
pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that
can be rapidly provisioned and released with minimal management effort or service provider interaction.
This cloud model is composed of five essential characteristics, three service models, and four deployment
models.

At the end of the course, the students needed to build projects that demonstrated their understanding of what a Cloud Service is.  We saw projects that featured:

  • Employee Task Tracking
  • Academic Course Management
  • Transport Ticketing Service
  • Vehicle Tracking Service
  • Health Data Management

All developed as Cloud Services. Most were challenged around the metering aspects and ideas that leveraged services other than exclusively web-based technologies were at a minimum.  However, they seemed to get that a implementing a Cloud Service has a number of considerations that go beyond just making software execute a core task remotely.

Most of the students utilized Microsoft Azure, as this was the primary platform we used for the course.  Azure was a good fit for us as they made it very easy for students to get on and interact with the platform – via Microsoft’s Azure Academic Pass. This pass gave students access to almost all of Azure – Storage, SQL, Machine Learning & Hadoop.  And any issues were sorted with a short email exchange.

Thus, as a first course, there are things we will have to improve on, but it definitely was a good experience and I’ll look out for more of those in the future.