Mike Charlton

Please contact me if you need my address.

Email: mikekchar@gmail.com
Phone: Email is the best way to contact me.

Professional Objective

I am software developer with nearly 25 years of professional experience. I have spent many years working in a senior technical role, but I enjoy exercising my people skills as much as my technical skills. In fact, some years ago I spent 5 years teaching English to high school students in Japan, while writing free software in my spare time. I enjoy working in software related positions in a way that allows me to exercise both my technical and communication expertise.

Technical Skills

Agile Development: XP Coach / Scrum Master, Agile Planning, Pair Programming, Test First Development, Continuous Integration, etc.
Object Oriented Development: UML diagrams, Use case analysis using several methodologies, Experience creating both large and small architectures, Experience refactoring legacy architectures.
Design: Iterative design using design patterns, Refactoring, Test Driven Development (TDD), Behaviour Driven Development (BDD).
Web Development: Web development using primarily Ruby, Ruby on Rails and Sinatra. Expertise with Javascript, Coffeescript, Express, and React.
C++: STL, C++ idioms implementing design patterns, Some generic programming. Note: I haven't done C++ work for more than a decade.
C# and .NET: Experience with C# and .NET frameworks using both Visual Studio and Mono (on Linux). Experience writing code portable to .NET Compact Framework on Pocket PC. Experience with NUnit and Cruise Control. Note: I haven't done C# or .NET work in more than a decade.
Other Languages: Java, C, Perl, Bourne shell, FORTH, Protel, many others.
VOIP with SIP: Implemented SIP, SDP and STUN protocols. NAT traversal strategies. General TCP/IP network programming.
Platforms: Windows with MFC and System.Windows.Forms, Unix (Linux, Solaris, HP-UX) with X Windows (GTK+)
XML: DTDs, Schemas, XSLT, CSS, SVG, SAX, DOM (including SVG DOM).

Organisational Experience

Team Leadership: Technical development lead of teams with 5 to 10 people, SQA and process lead for 30 to 40 people, Process development and implementation, Metrics gathering and process measurement.
Process Implementation: Extreme Programming and other Agile processes, Lorenz style iterative process, Waterfall development using Wirfs-Brock use case analysis and OMT object models, Waterfall development using UML techniques.
Quality Management Systems: ISO-9000, SEI's Capability Maturity Model (CMM), Nortel's Trillium.

Other Skills

Teaching/Presentation: Experience giving presentations to a wide range of audiences. Experience creating course material, planning lessons, and evaluating students.
Japanese Language: Conversational Japanese language skill. Some reading ability. Approximate level: JLPT N2. Ability to give presentations in Japanese.

Education

  • B.Sc. in Computer Science, 1991, University of Manitoba

Employment History

Contract Developer
Palatinate Group
2015-present

I moved back to Japan and because the coaching role is not possible to do remotely, I took on a more traditional developer position. I primarily worked on 2 projects: Your Tee Times and the internal Sales System. Your Tee Times was a Node/Express application written in Coffeescript, using a React front end. Lately I've been working on the legacy sales system which is an old Rails application using CouchDB as its database and GWT on the frontend.

Agile Coach / Developer
Palatinate Group
2013-2015

The Palatinate group of companies includes the websites yourgolftravel.com and spabreaks.com among others. Work on public facing websites is done with Ruby on Rails, Postgresql and CouchDB. Additionally, we have started to build internal tools for managing sales contracts and the like. These tools are written in Ruby and Go. While simultateously doing a development role, I worked as the agile coach for this team. I helped introduce regular pair programming, TDD, XP style planning and mentored more junior people.

Assistant Language Teacher
Shizuoka Prefectural Board of Education
2007-2012

I was a member of the JET programme which is a cultural exchange program with the government of Japan. The JET programme aims to promote internationalisation by inviting overseas graduates to assist in international exchange and foreign language education. As a member of the English department at Sagara High School in Shizuoka prefecture, I was required to teach communication classes to students aged from 15 to 18 years old. A senior teacher often attended my classes, but I usually created lesson plans, taught the classes and evaluated the students independently. I used a mixture of both English and Japanese in my job, but I have taught classes entirely in Japanese or English depending on the situation.

I had originally intended to stay a single year in order to improve my Japanese and gain some teaching experience. The position was so rewarding that I ended up accepting the offer to stay for the maximum 5 year period. In order to keep my software skills somewhat current, I developed an application, JLDrill, to help people study the Japanese language. JLDrill was developed in Ruby and GTK+, using rspec as a BDD platform. JLDrill is free software and I am currently documenting various aspects of its development in my portfolio (not yet available).

Senior Software Developer
Object World
2006-2007

Object World provided a unified communications system for small to medium sized companies based on the Microsoft Windows OS platform. The goal of unified communications is to place all communications infrastructure under a single technology rather than to have separate computing and telephony infrastructures. The main product, UC Server, integrated several 3rd party technologies such as SIP PBXs, SIP telephones, Active Directory, etc. My role was to provide SIP expertise to the team, though I worked on various aspects of the product using C++. In the latter half, I was responsible for maintaining the integrated SIP PBX, which was written in Java.

In addition to programming I also introduced appropriate process improvements to the team. The most important of these was probably the adoption of planning and tracking techniques similar to Scrum's Planning Poker or XP's Planning Game. I also encouraged the consolidation of both feature and bug tracking using the existing Bugzilla tool and built an XSLT tool to scrape data from Bugzilla and automatically produce a burn down chart on demand. I implemented a continuous build system and introduced the concept of continuous integration to the team. Finally, I modified the release processes so that program managers would have a stable build with which to demonstrate new product capabilities on a weekly basis.

Software Developer
myJabber
2004-2006

myJabber was a personal communications software development company. It specialised in Jabber based instant messaging and SIP based VOIP. My duties included writing a license server in C++; SIP, SDP and STUN protocol stacks in C# and re-implementing the user interface for the VOIP soft phone. The vast majority of the code was written in C# and ran on Windows, Pocket PC (with the .NET Compact Framework) and Linux (using Mono) platforms. I was the only full time developer working for the company.

Senior Software Developer
Corel Corporation, New Ventures
2002-2003

Reporting to the development director for most of my tenure, I performed a role similar to a Scrum master or XP coach. I was assigned to various teams but did not report directly to the team's manager. I was accountable for the improvement of the team's performance, not the development of the product. Working with the manager of each team, I helped implement processes that would improve performance. I also spent a great deal of my time mentoring development members. As I tried to work by example, I took on a development load of about 50%. I also compiled weekly metrics showing our development improvements.

Projects:

  • Corel SVG Viewer. Developed in C++ on Windows using agile techniques (unit testing, refactoring, pair programming). I developed most of the underlying object model for the code and helped refactor the SVG DOM engine.
  • Corel Graphigo. A sketching tool with automatic shape recognition written for Tablet PCs. Written in C# and C++. This project used a full blown Extreme Programming process. We went from nothing to ~80,000 lines of code in 5 months with between 4 and 6 programmers. When it was shipped, there were only 12 bugs logged. This product received the Comdex Best of Show award when it was released.
  • Smart Graphics Studio. A product used to visualise data. The user draws representations of the final output using an SVG drawing tool. He then indicates areas of the graphic that are to be "dynamic". These dynamic areas are mapped to data. An XSLT code generator is used to generate transformations from the data to the picture. A widget library written in JavaScript is used to provide interactivity to the resultant project. Developed in C++, XSLT and JavaScript this was a complex project involving 20 developers and 20 other staff. Development was done using a variant of the SCRUM methodology.

I am currently documenting some of the interesting aspects of the processes used in these projects in my portfolio (not currently available).

Software Developer / Lead Software Developer
Corel Corporation, Word Perfect
1999-2001

I worked on the Word Perfect text conversion utilities. This is the subsystem that converts files from one format to another. I was directly responsible for the Word import filter and for reviewing the work of other developers on the team and an off site consulting team. I introduced an automated testing framework which I wrote in Perl. In the last few months before I moved to the New Ventures group, I helped work on an XML based replacement of Corel Presentations. This project was in the design stage and I helped design the core object model.

Software Designer / ISO, QMS Line Agent
Nortel, Sonet Transport Software Solutions Group
1997-1998

I served as both a software designer and the quality management system line agent for the C-level department (about 40 people). As the QMS Line Agent, I analysed the quality system, presented suggested improvements to management and conducted quality audits. I worked with both ISO-9001 and Trillium (which is a superset of the SEI's Capability Maturity Model).

As a software designer, I contributed to several MIS applications including PRScount and PLAP. PRScount was a legacy application that did statistical analysis of software service report trends. I developed C++ tools and statistical techniques to bolster customer confidence in the tool, saving substantial support costs.

I performed analysis, design and initial framework construction for PLAP, the Post Loadbuild Automation Package. This package was used by the loadbuild team to automate a portion of the loadbuild process. The project was designed using object oriented techniques (including use case analysis) and implemented in Perl.

Member of Scientific Staff
Nortel, ISDN PRI Legacy in DMS
1995-1996

I worked primarily as an architect in the PRI Legacy Architecture team. The job entailed providing feedback for architectural issues relating to PRI and ensuring product quality for over 50 features. In this role, I actively took part in feature and code change reviews. As part of my role I introduced a process which added the use of code and design reviews for all code changes within the group.

I designed and implemented two features. The first reduced the size of code in the product which helped avoid the need for memory upgrades to customers' switches, something for which Nortel would have been obliged to pay. The second feature was Release Link Trunk for PRI. This feature reduced the utilisation of trunks during certain types of forwarded calls. This feature reached over $20 million in sales in the first year. These features were implemented in Protel-2 and XPM-Pascal.

Software Engineer
Prior Data Sciences Ltd.
1994-1995

As a member of the software consulting team, I provided specialised application development services to Bell Northern Research. In this capacity, I aided the PRI legacy team in refactoring its code so that pieces could be moved from one layer to another. This also had the benefit of reducing the number of individual releases that contained PRI code. To facilitate the work, I built a web-based software architecture visualisation tool using perl.

Contract Software Designer
Continental Health Care Systems Canada Inc./Ubitrex Corporation
1992-1994

Ubitrex was a company that created one of the first health care information systems with computerised point of care information gathering. The system allowed doctors to visualise patient information and plan care for the patents. This plan was displayed on a wireless portable terminal which also allowed nurses to enter patient information. Ubitrex Corporation was later bought and changed it's name to Continental Health Care.

I originally worked on the portable terminal. This consisted of embedded C code on the terminal and C++ networking code on Sun Workstations. Because Ubitrex was a start up company that experienced rapid growth, the software processes were initially ad hoc and eventually caused productivity problems. As part of the development team, I researched software development practices and helped implement an interactive process using Wirfs-Brock use case analysis and OMT object modelling. We also implemented very strict code reviews.

In 1993 and 1994 we introduced a new hardware platform for the portable terminal using a pen based interface and radio LAN. We took the opportunity to rewrite the terminal software and I was responsible for its initial design. I also ported the workstation code from BSD based Sun OS to Sys V based Solaris. This included moving from the C front based C++ compiler to Sun's native compiler.

Programmer
University of Manitoba, Various Departments
1986-1987,
1989-1991

While still a student at the University, I worked a mixture of full time and part time in various departments. I took a year off in 1988 to concentrate on my studies.

In 1986 and 1987 I wrote a full screen terminal emulator in FORTH that ran on various PC platforms. It provided full screen editing capabilities for the MVS mainframe.

In 1989, I worked for the physics department maintaining the data collection library in C for the time of flight mass spectrometer. I also wrote a scientific graphing program to visualize the data.

In 1990 and 1991, I worked for the astronomy department where I implemented the display and database for a telescope simulation on the Macintosh in C. Later I wrote a 3D starfield animation system for the planetarium in object oriented FORTH.

Open Source Activities

Note: This website uses Google Analytics to collect statistics. If you wish to avoid being tracked, please disable Javascript for this website (using the NoScript plugin, for instance).