Growing up in the early 80s, my father worked in the HVAC sector. One aspect of the HVAC sector he brought up was the migration to digital systems and how sensors used in the HVAC systems are being used to automate tasks. Little did I know at the time that this information would come back again in the future as I began working on Internet of Things projects. Additionally, his main interests in robotics and electronics passed down to me has helped influenced me significantly. He would spend time working on electronic circuits and building robots to develop his skills. One book I remember browsing through, which he often read, and inspired me was the Robot Builder's Bonanza (1st edition). This allowed me to get first hand insight of the various subsystems of a robot. The second item that motivated me into the technology path was the '150 in One Electronic Project kit' from Radio Shack. The manual and tinkering with the electronic board helped me gain some basic fundamentals of electronics that I would use later in my career.
Eventually, my dad and brother became interested in RC controlled vehicles, which they started to build RC airplanes. I was also drawn into the RC world and started build RC cars to understand how they worked. I became fascinated with the way simple electronic parts could be combined to control motors and servos used for steering, something I read about from the robotics book. In the 90s, micro-controllers became an interest of mine. Reading electronic magazines my father would read and the manual from the Basic STAMP, I started to see how they were being utilized as timers for controlling relays and used for industrial controllers. This was one of the reasons I decided to go into a Computer Science undergrad program.
2000 - 2003
My career in computer technologies started back in 2000. The first job to help develop my professional career was a software developer for prototyping interactive television concepts using Open Source software. This entailed developing web applications that could be used with WebTV to enhance the television viewer's experience. The web applications were developed on Linux using Apache Web Server, PHP and PostgreSQL. The applications created were used to help prototype e-commerce, viewer engagement via polls and 'questions & answers' with the television show hosts. During this time, I was also very fortunate to work with a very interdisciplinary research group, composing of students, faculty members and professionals from Radio and Television, Film, New Media and Computer Science sectors in Toronto.
After the interactive television project ended, my skills in developing database driven web pages were utilized in other projects while I was pursuing my computer science undergrad. Luckily, members of the research group from the interactive television project moved to other research projects within the research unit. As each of us became more experienced in our positions, we quickly saw how Open Source projects could be incorporated into our respected projects. One most notable project was utilizing AccessGrid for creating an environment to share multimedia content to a wide Internet audience. The underlining technology to make this possible was the use of multicast networking technologies. Inspired by ideas by talking to Many, Ben and Jeremy, we developed some collaborative applications that utilized multicast technology. One notable collaborative application I had a chance to work on was sending MIDI data over multicast. This allowed a MIDI device to broadcast data over the Internet to other devices capable of processing MIDI devices.
This was the first project I got to see the relationship of a hardware device, in particular a BOSS DR-202 Dr. Grove, and software working together to extend the functionality of a consumer device. Using Linux, I quickly wrote an application that was capable of capturing the MIDI data from /dev/midi and send that data over the multicast network. My co-worker, Many, ran the client application that was able to capture the MIDI data and send it to his synthesiser. One of the great aspects of Open Source communities was the sharing of knowledge. At that time, I came across a tutorial somewhat similar to this website which demonstrated how to read MIDI data using Linux.
While the research group was gaining more experience into the AccessGrid tools, research members Ben and Many continuously expanded the functionality of AccessGrid by integrating more hardware. On side chats, we would exchange ideas on how to blend our skills to come up with new interactions techniques. One idea that was highly interesting was trying to get computers to analyse what the person was doing in the video. Ben helped introduce gesture-based user interface to the research unit by utilizing a firewire camera and various software packages namely Max and SoftVNS. He had demonstrated a simple application using a firewire camera hooked up to his Mac. By creating hot spots, when the user moved their body into these hot spots, the frames were processed and a trigger would be fired. At this point, I quickly saw the benefits of incorporating Open Source tools to extend artistic freedom and this help pushed my career into developing technologies that humans can utilized.
Linux Systems Administrator
2003 - 2008
Upon completion of my Bachelors degree in Applied Computer Science, I went to work at a local children's research hospital as a Linux Systems Administrator. While I was there I worked along side a highly motivated group that was keen on utilizing Open Source software in their work-flow. My first major role was to re-engineer the email system for the research unit to protect against virus and spam emails. From researching and talking to other Systems Administrator it became evident that using Sendmail, Amavisd-new, qpopper (POP3), uw-imap and SquirelMail would be the ideal solution for dealing with spam and viruses, and providing users the ability to check their emails without the need for desktop email clients that restricted users to their desktops. While it was challenging at first to get all the components working together, there were many forums and web pages that provided useful instructions. The additional benefit of going the Open Source route allowed me to alter the packages to fit our email work-flows and extend functionality.
The research unit was also in the starting stages of rolling out a data centre to meet the growing needs of the researchers at the hospital. To keep costs affordable in our scaling up phase, we heavily utilized Linux and Open Source software. Offering web services was a growing need for the research community and we started to offer web services. Utilizing my undergrad work experience, I deployed Linux servers running Apache Web Servers, PHP and Tomcat. We also provided database servers running PostgreSQL, MySQL and Oracle for some commercial packages. As the years went on, the data generated by various research groups at the hospital grew. The researchers needed a centralized file storage to share and process their data, in addition, the data must be backed up and archived. This allowed us to introduce centralized file storage services by using Linux servers running Samba and NFS. Customized shell scripts were created to rsync the users' data from their computers to the file servers to make backups. Those file storage servers used Legatos backup agent for nightly backups.
The growth of our data centre also meant we had to shift our focus from being post-responsive to server faults to becoming more pre-emptive. For us, it was bad customer service to be told by our researchers that a server hard drive had filled or a server is off-line. Nagios and Cacti offered the perfection tool combination for our data centre. Cacti provided us with resource usage trends of the servers so we know which servers are being under-utilized so we can allocate more services to the under-utilized servers. Nagios provided us with real-time monitoring of servers and services, so we can be paged when a fault has occurred. While the learning curve with Cacti and learning SNMP was a little steep in the beginning, the documentation for Cacti was great and allowed us to master the usage rather quickly. Nagios was chosen because of the well documentation provided on their website and was very easy to integrate into our operations. Customization of Nagios for our specific needs using their on-line documentation. The results were seen immediately as we were able to quickly resolve issues before the researchers notified us of faults. This also provided us data to show administration staff for more funding allocation to increase our resources.
While working at the hospital, another job role was to help researchers with Linux desktop issues. This allowed me the opportunity to talk to various researchers and support staff about their work and interests, while solving desktop dilemmas. This gave me a chance to do application debugging of various software packages used in the researcher medical sector. One most notable application was an open source software used to communicate to MRI machines over DICOM to extract data and images from the MRI scanner. The software was written by a research group and shared to other research groups in the local area. Over the years maintainers of the code had left, so I had to debug the software to see what was going on. This opportunity allowed me to talk to the staff and researchers using the MRI to see how the general DICOM work-flow is utilized. The biomedical engineering group was also very welcoming and exchanging of ideas. They also gave me insight on how some clinical devices worked and gave me pointers of what the technology community can do to improve general work-flow.
The time I spent working at the research hospital was truly enlightening and helped me mature in my skill sets. It also allowed me time to think about issues in the health sector that needed to be addressed. I was always drawn back to the early work from my undergrad in multicast communication and some of the concepts from AccessGrid. Earlier on in 2004, I brought up the idea of exploring collaborative communication and integrating it into medical services with my first manager at the time. He had recommended such a pursuit may be better off in an academic setting so I put the idea on hold. Now that I have automated most of the data centre operations and looked for new challenges to take on, there was an opportunity to go back to university. In 2007, I wrote an application to do my Masters in the area of User Interface Software Development with the goal of creating applications that can expand the traditional video conference applications. I was accepted into the Masters program.
2008 - 2011
In 2008, I started my Masters program. However, I experienced an unexpected turn. After a discussion with my academic advisor, the work I outlined in my application letter would not be able to come into fruition because there was no staff available to help me. Rather than let my Masters go to waste I pivoted the direction of my Masters thesis towards something I wanted to explored and utilized from my childhood experience.
The opportunity to work unsupervised on my Masters thesis allowed me to self-teach myself on Qt and OpenCV, and combine those with my interest in electronics and robotics. The Masters thesis composed of me developing a framework that would allowed users to control an Internet enabled webcam to pan and tilt using different hardware interfaces. The framework produced data that can be analyse to determine how well the user is able to track the object using the pan/tilt webcam. This use-case was inspired from working in the undergrad program, where studio camera operators would pan/tilt the camera to keep the subject in the centre of the frame. My goal was to see if those camera operators could be replaced by a remote system, thus, the controller room would be able to control the cameras instead of human intervention. I completed my Masters thesis in 2011.
After the completion of my Masters thesis, I worked on contracts with various companies. The contracts typically entailed developing basic electronics and software systems in the Internet of Things sector. My background in Open Source and electronics easily guided me through through the work needed in those contracts. A couple of notable projects were:
The experiences I have gained throughout my childhood has helped me paved my career path and has helped enabled me to take on new technologies. I am focused on working in environments that push innovation, that allows me the flexibility to use my imagination combined with practical experiences. Open source technologies has been a benefit in helping me achieve the goals I set out and I look forward to keep moving ahead.