Vancouver, BC

Contact Info:

This resume was up to date on June 2013.

Resume Summary

Highlights

14 years of industry Software Engineering, System Architecture and Solutions Architecture experience.

11 years experience Leading and Managing software development teams.

 9 years experience dealing with Big Data.

 6 years experience with Machine Learning.

 6 years experience (co)founding and running Technology and Software Development Companies.

Organizer for the Machine Learning and Data Science meetup groups. Co-organizer for the Vancouver R user group.

History

As an engineer, have been everything from Chief Software Architect, System Architect, Principal Software Engineer, Lead Software Engineer, Senior Software Engineer.

As an manager, have been everything from Senior Director of Engineering, Director of Engineering, Engineering Manager.

Background

BSc with a formal background in Computer Science and Mathematics.

Also have an amateur background in Genetics, Psychology, Neuroscience, Economics, and Synthetic Biology. In particular, I focus on Human Genetics, Moral Psychology, Evolutionary Psychology, Psychometrics, Computational Neuroscience, and Behavioral Economics.

Interests

My career related interests inclue AI, Machine Learning and Data Science.

Technical SKills

Programming, Scripting, & Markup Languages
Skill Name Skill Level Last Used Experience
68HC12 Assembly Formerly Intermediate 13 ½ years ago 1 year
8086 Assembly Formerly Intermediate 12 ½ years ago 3 years
Expert Currently Used 8 year
bash (Shell Script) Expert Currently Used 16 ½ years
C Former Expert 7 year ago 10 ½ years
C++ Former Expert 7 year ago 10 ½ years
C# Former Expert 5 ½ year ago 3 ¾ years
Expert Currently Used 14 ½ years
Go (i.e., Golang) Intermediate Currently Used 3 month
Erlang Beginner ½ year ago 1 month
Haskell Formerly Intermediate 13 ½ years ago ¼ year
Expert Currently Used 17 ½ years
Java Former Expert 9 years ago 5 years
Expert Currently Used 15 ½ years
LLJS (Low-Level JavaScript) Beginner Currently Used 1 week
LLVM IR Beginner 2 months ago 1 month
Expert 1 year ago 1 year
ML Former Expert 13 ½ years ago ½ year
Modula 2 Former Expert 13 ½ years ago ½ year
Modula 3 Former Expert 13 ½ years ago ½ year
Node.js Beginner 2 year ago ¼ year
Perl Formerly Intermediate 9 years ago 1 ½ years
Expert Currently Used 13 ½ years
Rust Beginner ½ years ago 1 month
PL/SQL Intermediate 5 year ago ½ year
Python Beginner 11 ½ years ago ¼ years
Expert Currently Used 8 ½ years
Scala Beginner 1 year ago ¼ years
Expert Currently Used 13 ½ years
Turbo Pascal Former Expert 17 ½ years ago 2 years
Vala Beginner 8 months ago 1 month
VHDL Beginner 1 ¼ year ago ¼ year
Visual Basic Formerly Intermediate 12 years ago 6 years
Expert Currently Used 13 years
Former Expert 7 year ago 4 years
Paradigms
Skill Name Skill Level Last Used Experience
Expert Currently Used 14 ½ years
Expert 3 years ago 5 ½ years
Expert Currently Used 14 ½ years
Expert Currently Used 8 year
Expert Currently Used 8 year
WordPress code base Former Expert 2 years ago 4 year
WordPress MU code base Former Expert 5 ½ years ago ½ year
WordPress Plugins code base Former Expert 2 year ago 3 year
Libraries and APIs
Skill Name Skill Level Last Used Experience
Berkeley Sockets Intermediate 7 ½ year ago 6 ½ years
CQ5 Beginner Currently Used 1 month
.NET Former Expert 5 ½ year ago 3 ¾ years
Facebook API Expert Currently Used 5 years
Flash-Ajax Video Component Intermediate 4 ½ year ago 16 year
Foursquare API Intermediate Currently Used 1 ¼ year
FullContact API Expert Currently Used ½ year
Former Expert 7 ½ year ago 4 years
Google+ API Intermediate 1 year ago ½ year
GTK# Former Expert 7 ½ year ago 1 ½ years
GTK+ Former Expert 7 ½ year ago 4 ½ years
Instagram API Beginner 1 year ago ¼ year
J2ME Intermediate 9 years ago 1 year
jQuery Expert Currently Used 6 years
JSME Former Expert 9 years ago 5 years
JSNetworkX Beginner Currently Used 2 months
LinkedIn API Expert Currently Used 2 year
MongoDB Expert Currently Used 2 year
Expert Currently Used 13 ½ years
OpenGL Intermediate 13 ½ years ago 1 year
Pipl API Expert Currently Used ½ years
Former Expert 8 year ago 7 ½ years
Riak Beginner 1 year ago 1 week
Symfony 1 Former Expert 2 year ago 1 ½ years
Symfony 2 Expert Currently Used ½ year
SportsDB / XTOSS Formerly Intermediate 4 ¾ year ago ¼ year
Twitter API Expert Currently Used 3 ½ years
Win32 (MS Windows) Formerly Intermediate 9 years ago 5 years
X11 Formerly Intermediate 8 years ago 1 ¾ years
Zend Intermediate 1 year ago 1 ¾ years
ZeroMQ Beginner Currently Used 1 year
Software Packages
Skill Name Skill Level Last Used Experience
Apache Expert Currently Used 13 ½ years
Gearman Expert 1 year ago 1 ¼ year
Expert Currently Used 16 ½ years
Expert Currently Used 17 years
MongoDB Expert Currently Used 2 years
MS Windows Expert Currently Used 18 ½ years
Expert Currently Used 13 ½ years
PLINK Beginner 1 year ago ¼ year
RabbitMQ Intermediate Currently Used 1 year
Vagrant Beginner Currently Used 1 month
WordPress Expert Currently Used 6 year

Education

SFU

BSc

Major in Computer Science

From SFU (Simon Fraser University) <http://www.sfu.ca/> I have attained a BSc with a major in Computer Science (in May 2000). But although my education focused on Computer Science, it certainly was not restricted to it. My education was also directed heavily in Mathematics, Physics, Chemistry, and a variety of Art related fields.

My Computer Science education specialized in various Multimedia topics (ranging from 2D & 3D graphics, sound & video) and in Usability & HCI (ranging from cognitive psychology, design methodologies, guidelines, standards, and patterns adherence, human-computer interaction, information architecture, interaction design, prototyping, usability evaluations, and user & task analysis).

My computer science & engineering related classes included such topics as: user interface design, multimedia systems, computer graphics, computer animation, model-based computer vision, designing programming languages, social implications of computerization in society, theoretical and practical aspects/problems of operating systems & their design, data structures & algorithms, theoretical and practical issues/problems relating to data communications and networking, low level computer hardware architecture, digital and computer design (laboratory), digital circuit design, data & program abstraction, database systems & structures, event driven programming, object oriented application design, and formal software engineering analysis, design, & processes.

My math related classes included such topics as: discrete mathematics, numerical analysis, linear algebra, complex variables, differential geometry, applied algebraic systems, calculus, vector calculus, multi-dimensional calculus, differential equations, analysis, and abstract algebra, among others.

My science related classes included such topic as: thermodynamics, electro-magnetics, organic chemistry, and Newtonian physics, among others.

My arts related topics included such topics as: electro-acoustic music, 3D computer generated human animation, essay writing, poetry, linguistics, philosophy, and art history.

Self-Directed Studies (while at SFU)

My education was not restricted to what was taught in the classroom. In fact, the great majority of the knowledge and skills were attained through self-directed and self-motivated studies on my own time. Most the libraries & languages I know are a result of self directed study. Also, I usually extended my education, on what was learned in class, through self direct study.

Work History

ShoutMap

2011-2012, 2013-Present

Chief Software Architect / Founder

I founded ShoutMap. Attention, Influence and Interest.

49 Research

2013-Present

Senior Director of Engineering

I founded 49 Research back in July 2008, with another person. I left the company in May 2011, and the returned in June 2013.

(This time) I took the role of Senior Director of Engineering, solely dedicated to projects from Electronic Arts.

Machine Learning Meetup Group

2012-Present

Organizer

I serve as organizer for the Machine Learning Meetup Group. The Machine Learning Meetup Group is a meetup group in the Vancouver area with a focus on machine learning and related software engineering, computer science and data science topics.

My organizing activities include, organizing and hosting meetings and presentations, arranging speakers for meetings, helping (some) speakers develop presentations for meetings, and networking.

Data Science Meetup Group

2013-Present

Organizer

I serve as organizer for the Data Science Group. The Data Science Meetup Group is a meetup group in the Vancouver area with a focus on data science topics.

My organizing activities include, organizing and hosting meetings and presentations, arranging speakers for meetings, helping (some) speakers develop presentations for meetings, and networking.

Vancouver R User Group

2013-Present

Co-Organizer

I serve as co-organizer for the Vancouver R user group. The Vancouver R user group is a meetup group in the Vancouver area with a focus on the statistical programming language called R.

My co-organizing activities include, organizing and hosting meetings and presentations, arranging speakers for meetings, helping (some) speakers develop presentations for meetings, and networking.

Trulioo

2012-2013

Engineering Manager

At Trulioo I headed the day-to-day activities of the software engineering and data science teams. I joined Trulioo while it was at an early phase of the startup lifecycle. (The engineering team consisted of just two people, when I joined Trulioo.) I hired most of the development team, which included software engineers and data scientists.

Like with most startups, necessity requires you to "wear multiple hats" and do what is necessary to get things done. In addition to engineering management, I joined in on the software engineering, system architecture, operations, QA, DBA, and data science work, when necessary.

My engineering management activities include project planning, project management, providing technical guidance for system architecture, software engineering & data science efforts, creating functional requirements, establishing team processes, monitoring workflow, managing technical aspects of Trulioo's relations with its partners, and research and development.

My engineering management activities also included establishing hiring plans, recruiting efforts, outreach to the universities, outreach via local conferences, and networking with local talent.

Also I managed Trulioo's relationship with the National Research Council Canada for the iRAP program, writing academic paper style reports of Trulioo's research and development for the National Research Council Canada, and writing grant proposals for the Natural Sciences and Engineering Research Council of Canada's Engage Grant.

HootSuite

2011-2012

Engineering Lead, Analytics Team

At HootSuite I operated as the Engineering Lead for the Analytics Team, and had senior roles on the App Directory Team, the Acquisitions Integrations Team, and the Web Team. My day-to-day responsibilities included software engineering, system architecture, research and development, technical oversight, onboarding new engineers, performing design reviews of other engineers' designs, performing code reviews on other engineers' code, knowledge transfer to new engineers, and ensuring, encouraging and enforcing the quality of engineering work of other engineers working on the Analytics Team, Acquisitions Integrations Team, and certain parts of the Web Team.

49 Research

2008-2011

Director of Engineering and Product Development / Founder

I founded 49 Research, with another person. I took the role of Director of Engineering and Product Development. In this capacity, I managed resources including scheduling and hiring for the engineering group, initiated, lead and managed the new product development (NPD) initiatives, defined and documented department standards, provided technical oversight for projects, helped define technical specifications, provided scoping and estimation for project bids, while also participating in engineering work when time allowed.

Thirdi (now owned by Invoke)

2008-2009

Senior Software Engineer

I joined the Thirdi team as a very senior level software engineer who was able to take on projects and develop them to their completion. And introduced some aspects of an Agile development environment to the company.

Navarik

2007-2008

Senior Software Engineer

I joined the Navarik team to fill their need for a very senior level software engineer who could "hit the ground running", so to speak. And learn their system at a highly rapid pace, and start making major contributions to the system immediately. As a senior software engineer at Navarik, I worked on their flagship product -- Navarik Inspection. Developing the software while working with the team in a Agile environment.

Top Producer (owned by Move)

2007-2007

Senior Software Engineer on Research & Development Team

As a senior software engineer on the research & development team I researched, designed, and developed software and solutions for the Real Estate industry. This work included working on proprietary systems. As well as working on WordPress and WordPress MU (WPMU). And developing WordPress Plug-ins and WordPress Themes / Templates.

BidClix (later owned by Microsoft, and then Facebook)

2004-2007

Principal Software Engineer (Lead) & System Architect

As the lead software engineer, I lead a team of software developers which created and maintained BidClix's in-house, proprietary, ad serving technology known as ActiveMarket. I also managed the work of artists and scripters. And was responsible for much of the Research & Development.

Reptile Consulting & Services

2002-2004

Founder & Consultant

As the owner of Reptile Consulting & Services I took on roles such as software engineer, project manager, tech support specialist, computer hardware specialist, system administrator, and numerous other tasks.

iFusion Communications

2000-2001

Software Engineer & Project Manager

At iFusion, I designed, developed, and tested dynamic web sites. Including: bulletin boards, shopping cart systems, online stores, chat systems, administrative back-end systems, & news systems, among others.

BWD Local 300 (Union Hall)

1999-2000

Sys Admin & Consultant

An (on call) system administrator and consultant for all the union hall's computer software and hardware systems.

Netscape

1997-2000

Editor

Editor on Netscape's (and now AOL Time Warner's) Open Directory Project. My editing role included the creation of new content; approving of (or disapproving of) submitted content; and searching for new content; among other things. My work on this project is used by Corporations such as: Netscape, AOL, Google, Lycos, and many many others.

Kwantlen College

1994-1995

Math Tutor

A Math Tutor at Kwantlen College (which is now Kwantlen Polytechnic University). In addition to tutoring Math, I also tutored in Chemistry and Physics (when students asked for help in those topics).

[Self Employed]

1993-1995

Math Tutor

I privately tutored students in Mathematics (as well as Chemistry, Physics, and General Science). These students ranged from 6th grade to 2nd year at University.

Recent Work

TruVerify

Using e-mail addresses and social network accounts to identify users has become a standard practice on the Internet. However, verifying user attributes such as name, gender, age, location and phone number, is at best problematic. Self-asserted data is not always reliable.

TruVerify is a system which is able to verify users attributes, such as name, gender, age, location and phone number, from of users identified by e-mail address or social network account.

https://www.trulioo.com/en/product#truverify

go-porterstemmer

Natural language processing (NLP), a field of computer science, artificial intelligence, machine learning and linguistics, is concerned with the interactions between computers and human languages.

One technique used in NLP is stemming. Stemming is the process of reducing inflected or sometimes derived words to a (common) stem.

The Porter Stemming algorithm is a stemming algorithm for the English language.

go-porterstemmer is a native Go clean room implementation of the Porter Stemming algorithm, released as open source.

http://github.com/reiver/go-porterstemmer

TruDetect (formerly called ProfilePlus)

Online social networks have become an important part of the Internet. Not only have they become leading communication mediums, but they have also become leading providers of identity. With this, comes (attempts at) commit fraud, with "fake" social network profiles and presences.

TruDetect (formerly called ProfilePlus) is a system which is able to detect "fake" social network profiles, on social networks such as Facebook.

https://www.trulioo.com/en/product#trudetect

HootSuite

HootSuite is a very popular enterprise class social media dashboard, that allows users and enterprises to manage multiple social network profiles, schedule messages and tweets, track brand mentions, and analyze social media traffic.

HootSuite supports social network integrations for Twitter, Facebook, LinkedIn, Google+, Foursquare, Mixi, MySpace, Ping.fm, and WordPress; as well as supports Instagram, Tumblr, YouTube, Trendspottr, Constant Contact. Digg, Flickr, Get Satisfaction, and InboxQ through HootSuite Apps.

http://hootsuite.com/

Ow.ly

Ow.ly is a popular, high performance, high availability, fault tolerant URL shortener and image & file hosting service, closely associated with and with two-way tie-ins into HootSuite, but which can also be used as a standalone product.

http://ow.ly/

Licensed Gaming

Licensed gaming in British Columbia must meet stringent regulations of the government of British Columbia. My team (which I was Director of Engineering over) created a online game, that was able to "run" as both a free money version and a real money version, and meet the stringent regulations set by the government of British Columbia.

(An NDA prevents me from providing more details.)

Social Gaming Ad Network

The social gaming space, and in particular social gaming on Facebook, has become become an emerging billion dollar industry. Large social gaming developers such as Zynga, Playdom, and Electronic Arts as well as a "zoo" of smaller social game development companies are driving and fueling the growth of social media giant Facebook, with others such as MySpace, hi5, and others looking to also capture a portion of this industry.

Monetization of these games comes in many forms, but often revolve around virtual currencies. One avenue for this montization is the usage in-game online ad space sold via a CPA business model. Conversions from these online ads results in virtual currencies being awarded to the game player. (Which can be used by the game player to purchase virtual goods and other items.)

The social gaming ad network my team (which I was Director of Engineering over) created for our undisclosed client allows social game developers, on Facebook and other social networks, to monetize their game's user base through online ads whose conversions results in virtual currency being "deposited" in the game player's account.

(An NDA prevents me from providing more details.)

SBBC Connector

Small Business BC (SBBC) is a not-for-profit society which is a key resource centre for business information and services, in British Columbia, by providing information brokering services, seminars, and consultations.

SBBC Connector is a data mining tool and search engine used to give users of the Small Business BC website access to many of their internal databases.

http://www.smallbusinessbc.ca/

SkinnyMVC

SkinnyMVC is a light-weight, easy to learn, "skinny" development framework for PHP that enables the developer to implement the MVC architectural pattern, while maintaining maximum flexibility and performance of the application.

http://skinnymvc.com/

Demurrage

Demurrage is a demurraging application created for a large Canadian oil company.

(An NDA prevents me from providing more details.)

SocialGiving

Pinc Productions is a creator of multi-currency charitable giving technologies and platforms, focusing on web-based solutions, online video, and social networking.

SocialGiving is Pinc Productions' charitable giving platform designed for Ning as a "network widget", to be used in social networks which support OpenSocial.

http://pincgiving.com/

Navarik Inspection

Navarik is a producer of web-based solutions for the shipping business. And has found much success in the petroleum industry.

Navarik Inspection is web-based cargo inspection system that helps petroleum and energy firms standardize your nomination and inspection workflows across the company, and analyze cargo quantity and quality (CQQ), including loss and trending, more easily and accurately.

http://www.navarik.com/products/navarik-inspection

Show in a Box

Show in a Box is a (largely) volunteer build open source solution for Internet TV, video blogs, and video podcastings.

Build on WordPress, Show in a Box is a collection of WordPress plugins and WordPress themes, designed to turn WordPress into a Online Video platform.

http://showinabox.tv/

Top Producer Blogs

Top Producer provides leading solutions for the real estate industry. Among those solutions is Top Producer Blogs.

Top Producer Blogs is a highly scalable fork of WordPress MU (WPMU) tightly integrated with Top Producer's other products. Enhanced to host hundreds of thousands of blogs.

http://www.topproducer.com/

ChaCha AdAgent

ChaCha is a "people-powered" search engine. A search engine that features human guides. With the click of a button a user can talk to a human being and have them help them find what they are looking for.

ChaCha Adagent is a cost per click advertising system that allows advertisers to reach the ChaCha search audience on a performance basis.

http://adagent.chacha.com/

Accipiter AdMarket

Accipiter Solutions is one of the pioneers in the online ad serving space. And a dominant player in the ad technology space.

Accipiter AdMarket is a globalized advertising marketplace. Serving the global market. And processing any of the worlds currencies. Including USD, CAD, UKP, JPY, and EUR. Among others.

http://accipiter.com/products/admarket.php

Bell Viritual Marketplace

Bell Canada is Canada's largest communications company. Part of Bell Canada's offerings is the Bell Virtual Marketplace.

Bell Virtual Marketplace is one of Canada's premier advertising networks and advertising technology providers. It services top Canadian websites and portals; including Sympatico MSN (MSN Canada).

http://www.marketplace.bell.ca/ (English)
http://www.marche.bell.ca/ (French)

ActiveMarket

ActiveMarket is a fully branded, private label technology solution enabling publishers to operate their own self-contained advertising marketplace. Ideal for publishers with strong brands and leadership in their own industry, vertical, or geographic region.

The ActiveMarket technology is a high performance, industry leading, high availability, fault tolerant, ad serving system which can handle upwards of 1000 hits per second. It has sub-systems for fraud detection, early warning problem detection, health monitoring, self healing, optimization, quality control, accounting, reporting, and e-commerce.

http://activemarket.com/

BidClix Adserving Technology

BidClix's Ad Serving Technology is a high performance, industry leading, high performance, high availability, fault tolerant, ad serving system which can handle upwards of 1000 hits per second.

This ad serving technology is currently used by about half of the leading websites, portals, and ISP's. (Although an NDA prevents listing most of them.)

http://bidclix.com/

AcuityBox

AcuityBox is software used for eye acuity examination.

AcuityBox is a Linux application written in C#, and utilizing the GTK# library It is distributed on a live (bootable) Linux CD, that boots straight into the Acuity Box program (which removes many potential problems and complications due to using a computer system).

Old Projects...

Projects listed here are limited to work done very recently (for reasons of keeping this resume to a reasonable length).

Information about older projects will be provided upon request. (Other projects include various web sites, e-commerce sites, applications, and system software.)

Talks

Machine Learning, Artificial Intelligence and Data Science

May 2013

PolyGlot {Un}Conference 2013

In this talk, directed at software engineers with no background in machine learning, AI or data science, I started from the original goal of AI (to create human-like intelligence), and moved to machine learning and its (non-human-like but) useful intelligences, and finally to application of machine learning for data science.

Self-Organizing Maps

December 2012

Machine Learning Meetup Group

Self-Organizing Maps (SOMs) are a type of artificial neural network (ANN) that is trained using unsupervised learning techniques.

The most well-known type of SOM is the Kohonen map. It has uses, such as, dimensional reduction, visualizing higher dimensional data, and clustering.

SOMs are also found in the brain. The most studied place where this is found is in the visual cortex. This type of SOMs has been modeled as a Laterally Unterconnected Self-Organizing Map (LISSOM).

In this talk I gave an overview of SOMs, from Kohonen maps to LISSOMs, and everything in between.

References

Available upon request.