Chris Wells

Senior software developer

Orbifold.io (Remote) 2018-2019 (3 months)
Node.js and TypeScript
Sole developer, reporting to the Founder -- the product is a Blockchain, my project was to design and implement support for (potentially hostile) user-defined functions ("smart contracts"), to be added to and invoked by the blockchain.
Strawberry Media (Remote) 2013-2017
C# and ASP; SQL and ADO; HTML, JavaScript, and CSS; Google Maps API
Sole developer, reporting to the CEO -- the product was a web application for first responders, it lets users collaboratively edit maps and floorplans, and presents hazmat and vehicle rescue data.
Research in Motion / Blackberry (Toronto) 2011-2012
C++, JavaScript, WebKit, HTML5, Selenium/WebDriver
With the team which ported WebKit to be BlackBerry's web browser -- I tested and debugged the media player to support <video> and <audio> tags, and wrote a Selenium/WebDriver bot using JavaScript in the browser to support WebDriver.
ModelText (self-employed) 2008-2010
C#, WinForms, SQL, ORM, HTML and CSS
I worked alone, developing a desktop application to manage requirements -- one component displays and edits HTML, and is documented at http://modeltext.com.
NewStep Networks (Toronto) 2006-2008
C++, Windows Mobile, MFC, TAPI device driver, VoIP, SIP
Developing call-switching telephony software -- my work included helping to intercept the standard Phone application on Windows Mobile (by writing a device driver, a redirector for TAPI), and refactoring their Linux-based telephony server.
UVA Capital Corp. (Toronto) 2004-2006
C#, UML, WinForms
Developing a heart monitor -- my work included learning some cardiology, architecting the system with other developers using UML, developing real-time signal display, encoding diagnostic rules and prototyping a "diagnostic server".
VoiceGenie Technologies (Toronto) 2003
C++, Linux (gcc, gdb, and valgrind), CTI
I integrated their VoiceXML IVR with a 3rd-party CTI (i.e. with Cisco's ICM).
LANSource Technologies, later 3Com Canada (Toronto) 1991-2003
C++, Windows, SQL, device drivers, C, x86 assembly
I was chief developer at this startup -- the first in 1991, and chief of a team of 20 in 1999 when the company was sold to 3Com. I developed and oversaw the software's evolution, originally DOS TSRs, eventually a telco-grade fax server.
Summary
Sample projects

My code is mostly work-for-hire and closed-source, but I wrote some in my own time that I can publish.

I recently used React and TypeScript to implement several pages of Stack Overflow's user interface:

React seems like a neat tool, and so is TypeScript.

Blockchain

I like Orbifold's blockchain project -- it's system programming. After I finished what I was hired for (new code) with time to spare, I was allowed to refactor existing code and learned most of it. Their implementing it on Node.js was an interesting choice.

Full stack web

I have experience as a full stack web developer. I was sole developer of Strawberry Media's application -- ASP on the web server, JavaScript in the browser to work with Google Maps and implement an interactive UI, and SQL server for the data store. I wrote an ORM, defined the database schema with indexes, etc.

I had learned to use SQL previously, at LANSource.

I studied the principal Web front-end specifications thoroughly -- for ModelText I wrote an HTML editor, including a DOM with a CSS parser and a render tree.

Later work with BlackBerry introduced me to WebKit -- a browser's internals and test suites, and JavaScript modules for more than only UI event handlers.

I liked my recent experience with React and Node.js.

Early experience

My formal education was Mathematics. My first job was as a "software engineer" with BNR in Ottawa -- software for a packed switched data network, used by Bell and banks. They had a lot of equipment, a well-organised development process, good training. That was good experience to have had, before my next work which was mostly with startups, where training is minimal and "process" might be undefined or implicit.

After BNR and before starting with LANSource, I had a few years as a contract technical writer for IBM, writing manuals for their software products, for network administrators and programmers etc.

System Programming

I had years of experience doing "system programming", using C++, C, and assembly:

That means thinking about memory, multi-threading, I/O, concurrency, reliability, and system architecture.

I also learned object-oriented design and "patterns".

Greenfield projects and large systems

I have experience with starting new ("greenfield") projects, and working with large ("mature") systems. In any case I'm used to frequent integration and incremental delivery.

I usually stay with a project, with a team or code-base, if that's possible; and of course I try to write software well enough that any programmer can maintain it.

I can work alone, reporting to the head of a startup, or a product manager for the specifications. Equally, I look forward to working with other developers again!