SlideShare a Scribd company logo
1 of 5
Resume
Name Marcus John O’Brien
Title Senior Online Software Engineer and Team Leader
Location Vancouver, Canada
Telephone (+1) 604 436 4577
Email marcusobrien@yahoo.com
Programming Experience
C++ UNIX/Linux Platform 15 Years
C++ Windows 15 Years
Shell Programming (Linux/Win/Unix/Mac) 15 Years
C# 8 Years
Java 5 Years
SQL (MS and MySQL) 4 Years
XML/JSON/HTML 5 Years
Test Driven Development (Multiple Frameworks) 8 Years
Agile (Scrum) 8 Years
API/SDKs
Microsoft .Net 8 Years
Windows Communication Foundation (WCF) 5 Years
Windows Presentation Foundation (WPF) 3 Years
QT C++ Trolltech (inc Squish Testing) 3 Years
CDT/Swing/AWT/Jface/JDBC/GEF Java 2 Years
Eclipse Plugin API 2 Years
OpenCV 1 Year
Google AI Tensorflow 3 Months
Other key skills
SOAP / RESTful Online development / IIS
MS IoT and AWS IoT (cloud Services)
Arduino/Raspberry Pi/Banana Pro/Robot C
Repositories – Git/Perforce/Subversion/RCS/CVS/SourceSafe
Instrumentation and Code Analysis – NCoverage, Purify, Quantify, Bounds checker
POSIX - Cygwin / Linux / MinGW
Game Console SDKs - PS3/PS4 Toolkit, Xbox 360/1
Mobile – Mac XCode (with Libimobile) - Android ADB (with MADB)
Confluence Wiki, JIRA bug tracker
Testing Frameworks
MBUnit, Junit, Squish, MSTest, JMeter and Gatling Load Testing (via AWS)
Analysis and DesignMethodologies
Unified Modelling Language (Rational Rose)
Education
PhD ResearchArtificial Intelligence – Semantic and Neural Networking, including
natural language processing, inference engines, pattern recognition, image recognition
Degree - BSc Hons 2:1 Computer Systems Nottingham University
Employment History
Senior Online Developer EA Games, Vancouver
From April 2013 – Current
I have been working on the new EA Frostbite game engine. All out titles are currently
moving over to this new technology, and my tasks are to re-write our test framework
tool to allow our game teams to be more test driven. This will have huge savings in
our development budgets, and also greatly increase the quality and reliability of all
our software deliverables, from games to tools to web services. The tool is written in
c# and I am currently capturing requirements, designing the system and prototyping
new ideas. This involves working with teams in 10-15 different countries (across
multiple languages and time zones), and with various team sizes with budgets up to
$20 million.
Senior Online DeveloperUFC FreeToPlay Mobile EA Games,
From April 2013 – February 2015 Vancouver
I developed online web services for a free to play UFC game (over 1 million
downloads from Apple Istore and Android store). My responsibilities include
designing, implementing, testing various services for the game progression systems.
After developing these systems I was tasked with making sure the game would scale
for our predicted daily active users and TPS. I had to make sure our test systems
generated enough transactions per second (using JMeter/Gatling through AWS), and
our systems could handle the load. The main iteration cycle involved testing,
rewriting and optimising our c# services, and optimising our MSQL DB.
Optimisations included eliminating joins in SQL, introducing redundancy in the DB,
caching static data, caching dynamic data, adding indexes, simplifying code,
atomising retrieved data , reducing the number of client HTTP calls etc. I personally
successfully optimised our games web services to scale in preparation for our launch.
We are currently supporting 260k PCU (concurrent logged in users).
Senior Online Developer Ubisoft Entertainment, Montreal
From February 2010 – April 2013
I began working for Ubisoft on the online team. I developed backend solutions
available through a C++ SDK that the game clients could integrate. I introduced
functionality that allowed gamers to enter unique key codes that would unlock certain
privileges in the game, e.g. new maps, character skins etc. Code was written in C++
and Python, and interacted with a MySql database. All solutions had to be scalable
and were load tested with JMeter. Game clients such as Assassins Creed were
customers. I was then asked to develop an entirely new system using C# and IIS to
replace some legacy systems. I completed this task on my own over a year, allowing
privileges to become cross platform and cross title. This SOAP solution would unify
and be used by all titles in the Ubisoft range.
For the past year I have been replacing and unifying all legacy online systems with
pragmatic RESTful solutions written on WCF in C# using IIS. These systems must be
backward compatible and all URIs are versioned to support this.
Senior Software Engineer EA Games, Vancouver
From March 2008 – November 2009
At EA I was developing games for both the PS3 and the Xbox. As a senior engineer, I
started working in the pipeline team. This central team is responsible for processing
all the artwork, audio and gameplay assets that are created for the game. This was a
challenging role whereby immediate diagnosis and rectification of any problems was
necessary to minimize downtime for the 100+ team. I then moved into different areas
of game development including AI and backend services. My last task at EA was to
integrate web kit into a game, and using asp.net mvc and c#, to develop an in game
web site. I also developed web services using C# that both the game client and the
web browser utilized. In parallel to this I developed our backend database solutions
using MySQL and SQLServer, on both linux and windows platforms.
Senior Software Engineer Cyan Technology Ltd, Cambridge
From July 2005 – March 2008
Cyan is a fabless microcontroller designer. I worked on the main software product
which is an Integrated Development Environment called CyanIDE, this allowed our
customers to write embedded C for our family of microcontrollers. My development
role began implementing software using the Trolltech QT Multi-platform toolkit. I
contributed into the IDE a direct memory editor, breakpoint and bookmark support,
persistent workspace and profile support, integration of a QScintilla text editor, and
various other GUI based functions. I was also responsible for creating a nightly
automated build and test solution, this included checking out all source, creating an
install using InstallShield, booting VMWare virtual machines for Windows XP,
Windows 2000 and Linux, installing the new install into each VM, executing
automated tests written in Python for the Squish environment and emailing all results
to all team members. This helped to alleviate some of the bottlenecks in the
development lifecycle, saving us a great deal of time and money.
During the last 18 months we moved from supplying our own IDE, to extending the
IBM Eclipse IDE using Java. I have implemented the CDT toolchain mechanism for
our toolchain (compiler/linker etc), extended the IDE by adding new views and
editors, as well as written some of the graphical chip configuration code (using GEF).
Senior C++ Software Engineer and Team Leader Eley Metrology Software
From January 2003 – July 2005
I ran the software development team for a company specialising in producing
applications for the metrology (measurement) industry. The 2 main products, were
designed using UML and written in Visual C++(MFC), the graphics routines utilise
OpenGL. My recent development projects include implementing a STEP ISO10303
CAD file reader and displaying the 3D CAD file using the OpenGL development kit,
this included rendering the 3D image using texture mapping, and implementing
various lighting effects.
Senior Software Engineer and Team Leader (1999-2001)Marconi Plc
My last 2 years at Marconi Communications were spent mentoring and leading a team
of 10 software engineers on a project to complete a new version of a telecoms
management system. My responsibilities included implementing new functionality
into the system to very strict deadlines (due to high dependencies), mentoring the
departments other 25 software engineers in ANSI C++ and overseeing design and
implementation reviews. I continued to implement new functionality into the system,
which included a GUI based application to allow remote configuration of equipment
and an object persistency database.
Senior Software Engineer and Team Leader (1998 - 1999) Marconi Plc
I was asked to form and recruit a trouble-shooting team to finish and support an
overdue project for a multinational customer (Siemens). This involved running my
team, liaising with Siemens, software fault diagnosis and rectification, patch
deliveries on a live system (controlling an entire telecoms network), and customer
support.
C++ Software Engineer (1994 – 1997) GEC Plessey Telecoms
I began working for GPT as a software engineer on a telecommunication management
project. This large-scale project was distributed over 5 countries, with around 400
software and test engineers contributing to the development. This gave me valuable
experience of the complexities and logistics of development on large-scale projects.
PhD ResearchArtificial Intelligence – Semantic and Neural Networking 1993-1994
I researched the first 18 months of a PhD in the field of Artificial Intelligence. My
research involved developing a new type of semantic network to be used for
knowledge representation, this also included a natural language parser. Other aspects
of my research were concerned with neural networking techniques. I also lectured and
gave seminars at the Nottingham Trent University.
Interests
From 2001 to 2002 I travelled through Central and South America. This wonderful
experience gave me the opportunity to see a beautiful part of the world that I will
never forget. It also provided me with the opportunity to pursue my favourite
activities of trekking and camping, in both the Andes mountain range and the Amazon
rainforest. Since joining EA I have been coaching and captain of an employee soccer
team, I managed to motivate the team to moving up from last position to finishing 4th
in our league. My other hobbies are robotics, electronics, Raspberry Pi and Arduino
project making, fly fishing, classic literature and video games.
Personal Strengths
I have excellent communication skills, both written and verbal. My experience
enables me to commit to deadlines with a high degree of certainty. I am self-
motivated and pro-active, and I also take pride in all my work. I am seeking a new
challenge in a company where I can contribute my skills towards new goals.
Employment Status
I am currently authorised to work in Canada, having received my permanent
residency status. I am living and working in Vancouver.
Shipped Games
EA Games
UFC Free to play mobile – apple and android – all web services and optimisations
Skate 2 – Pipeline/AI/Bug fixing
Skate 3 – Web services for UGC and Blaze configuration for
matchmaking/stats/leaderboards
UFC Gen 4
NHL 15
Ubisoft Games
Assassins Creed 2
Assassins Creed Brotherhood
Driver San Francisco
Assassins Creed 3
Splinter Cell Conviction
References – Current Reference Available on request
Harvey Thompson Stephen Page
Pipeline Team Leader Software Group Leader
EA Games Cyan Technology Ltd.
Sanderson Way Buckingway Park
Burnaby Swavesey
BC Cambridge
Canada England
604 456 4400 (44) 1954 234 400
Online publications (Tiny URLs are case sensitive) :
Controlling iOS Devices Via C# Code on Windows OS
http://tinyurl.com/MarcusOBIOSOnWindows
General C# MS Unit Test Tips for a New Development Project
http://tinyurl.com/MarcusOBUnitTesting
Manipulating Android Devices from a Windows C# App
http://tinyurl.com/MarcusOBADB
Giving Your Devices Constant IPAddresses
http://tinyurl.com/MarcusOBConstantIP
Commands for Controlling an iOS device in Windows using libimobile
http://tinyurl.com/MarcusOBIOSCommands
ADB Common Commands (Android Debug Bridge)
http://tinyurl.com/MarcusOBMADB
Combinatorial Explosion – A cautionary tale in OO
http://tinyurl.com/MarcusOBCombinatorial
Const and Read Only in Java,C# and C++ - A Comparison
http://tinyurl.com/MarcusOBConstandReadonly
Virtual Functions in Java, C# and C++ - A Comparison
http://tinyurl.com/MarcusOBVirtualFuncs
Warning Virtual Functions in C# from C++
http://tinyurl.com/MarcusOBC-Warning
Current Home Projects
I am currently building a multi-skilled home robot. At the moment I'm working on the recognition
aspects,and I am using some Arduino embedded boards to track people in a crowded room. The IR
systemdirects the 2 degrees of freedom USB camera systems,these then track people's moving faces
and eyes.Using previously trained models and templates, the visual recognition systemcan recognise
known faces with a 90% degree of certainty, it then uses a semantic network to start a conversation
with that person based on previously discussed topics.My robot's visual software uses Qt and OpenCV
on a Raspberry Pi 3. The otherraspberry pi 3's control the mobility and avoidance system, speech
recognition and simulation system, brain (semantic net and various Dbs), and an entertainment system
(web browser/music/film player).
I am also completing an ant colony simulation application for the Android OS. The App (soon to be
launched), uses distributed ant colony behaviour to find complex solutions to algorithmic problems
such as the travelling salesman problem. These stochastic systems are too complex to solve via brute
force and basic heuristics, so I am am researching the effectiveness of swarm behaviour.
The ant colony lives in an environment that resembles the actual salesman problem to solve. Each city
is represented by a weighted node, with the weight being the distance between the nodes for the
salesman or ant to travel. The ants either have to visit each node only once, or find a food source within
the environment using the minimum distance travelled.
The user can change many environmental and behavioural aspects to the ants and the colony, and study
the effects in terms of how efficiently the colony finds food with the minimum weight/effort.
The ants can act in an individual manner to start with (thus using dynamic stochastic behaviourto
explore and find the quickest food source). But as food sources are found,solutions (the best trails to
the food) are passed on to other ants via pheromone trails. The ants can then form a swarm and explore
more of the problem space using more intelligence “learnt” from the individual successfulpheromone
trails.

More Related Content

What's hot

Shanling_resume_1019
Shanling_resume_1019Shanling_resume_1019
Shanling_resume_1019lucifer1986
 
Technical Architect on Embedded System.
Technical Architect on Embedded System.Technical Architect on Embedded System.
Technical Architect on Embedded System.Prasad Roy Raju
 
IRJET- Online Compiler for Computer Languages with Security Editor
IRJET-  	  Online Compiler for Computer Languages with Security EditorIRJET-  	  Online Compiler for Computer Languages with Security Editor
IRJET- Online Compiler for Computer Languages with Security EditorIRJET Journal
 
Modern JavaScript Applications: Design Patterns
Modern JavaScript Applications: Design PatternsModern JavaScript Applications: Design Patterns
Modern JavaScript Applications: Design PatternsVolodymyr Voytyshyn
 
SnehalBale_Java_Developer_2.4yrs exp
SnehalBale_Java_Developer_2.4yrs expSnehalBale_Java_Developer_2.4yrs exp
SnehalBale_Java_Developer_2.4yrs expSnehal Bale
 
Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)Pratima Parida
 
.Net framework vs .net core a complete comparison
.Net framework vs .net core  a complete comparison.Net framework vs .net core  a complete comparison
.Net framework vs .net core a complete comparisonKaty Slemon
 
Shivaprakash_KR_Resume
Shivaprakash_KR_ResumeShivaprakash_KR_Resume
Shivaprakash_KR_ResumeShiva Prakash
 
EGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL OverviewEGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL OverviewWill Smythe
 
C#.net, C Sharp.Net Online Training Course Content
C#.net, C Sharp.Net Online Training Course ContentC#.net, C Sharp.Net Online Training Course Content
C#.net, C Sharp.Net Online Training Course ContentSVRTechnologies
 
James e owen resume detailed jan 2-16
James e owen resume detailed jan 2-16James e owen resume detailed jan 2-16
James e owen resume detailed jan 2-16James Owen
 
A Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual MachineA Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual MachineAbdelrahman Hosny
 
Android summer training report
Android summer training reportAndroid summer training report
Android summer training reportShashendra Singh
 

What's hot (20)

Shanling_resume_1019
Shanling_resume_1019Shanling_resume_1019
Shanling_resume_1019
 
Technical Architect on Embedded System.
Technical Architect on Embedded System.Technical Architect on Embedded System.
Technical Architect on Embedded System.
 
IRJET- Online Compiler for Computer Languages with Security Editor
IRJET-  	  Online Compiler for Computer Languages with Security EditorIRJET-  	  Online Compiler for Computer Languages with Security Editor
IRJET- Online Compiler for Computer Languages with Security Editor
 
Mahesh - Resume - Paypal
Mahesh - Resume - PaypalMahesh - Resume - Paypal
Mahesh - Resume - Paypal
 
Modern JavaScript Applications: Design Patterns
Modern JavaScript Applications: Design PatternsModern JavaScript Applications: Design Patterns
Modern JavaScript Applications: Design Patterns
 
SnehalBale_Java_Developer_2.4yrs exp
SnehalBale_Java_Developer_2.4yrs expSnehalBale_Java_Developer_2.4yrs exp
SnehalBale_Java_Developer_2.4yrs exp
 
Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)
 
.Net framework vs .net core a complete comparison
.Net framework vs .net core  a complete comparison.Net framework vs .net core  a complete comparison
.Net framework vs .net core a complete comparison
 
MSalah_20161010
MSalah_20161010MSalah_20161010
MSalah_20161010
 
Shivaprakash_KR_Resume
Shivaprakash_KR_ResumeShivaprakash_KR_Resume
Shivaprakash_KR_Resume
 
EGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL OverviewEGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL Overview
 
Jigyanshu
JigyanshuJigyanshu
Jigyanshu
 
CV_AmalMandal
CV_AmalMandalCV_AmalMandal
CV_AmalMandal
 
Chiranjeevi_QA Engg.
Chiranjeevi_QA Engg.Chiranjeevi_QA Engg.
Chiranjeevi_QA Engg.
 
C#.net, C Sharp.Net Online Training Course Content
C#.net, C Sharp.Net Online Training Course ContentC#.net, C Sharp.Net Online Training Course Content
C#.net, C Sharp.Net Online Training Course Content
 
James e owen resume detailed jan 2-16
James e owen resume detailed jan 2-16James e owen resume detailed jan 2-16
James e owen resume detailed jan 2-16
 
A Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual MachineA Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual Machine
 
Android summer training report
Android summer training reportAndroid summer training report
Android summer training report
 
CV_Serhiy_Medvedyev_2015
CV_Serhiy_Medvedyev_2015CV_Serhiy_Medvedyev_2015
CV_Serhiy_Medvedyev_2015
 
Venu gopal_CV
Venu gopal_CVVenu gopal_CV
Venu gopal_CV
 

Viewers also liked

ไทย
ไทยไทย
ไทยfocus41
 
How to donate via www.borkboon.com
How to donate via www.borkboon.comHow to donate via www.borkboon.com
How to donate via www.borkboon.comSutthima Sua-ngam
 
Epidemiologi Dekskriptif
Epidemiologi DekskriptifEpidemiologi Dekskriptif
Epidemiologi Dekskriptifdahlia_purba
 
Ukuran Frekuensi Penyakit
Ukuran Frekuensi PenyakitUkuran Frekuensi Penyakit
Ukuran Frekuensi Penyakitdahlia_purba
 
Curriculum vitae caro y fer
Curriculum vitae caro y ferCurriculum vitae caro y fer
Curriculum vitae caro y ferPerezfer21
 
การสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศการสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศจีระภา ตราโชว์
 
Perhitungan pajak rumah sakit contoh
Perhitungan pajak rumah sakit contohPerhitungan pajak rumah sakit contoh
Perhitungan pajak rumah sakit contohsaleh iskandar
 
การสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศการสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศณชารีญา ศรีหะรัญ
 
การสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศการสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศNamTarn Sasima
 

Viewers also liked (11)

ไทย
ไทยไทย
ไทย
 
Panduan advance excel
Panduan advance excelPanduan advance excel
Panduan advance excel
 
How to donate via www.borkboon.com
How to donate via www.borkboon.comHow to donate via www.borkboon.com
How to donate via www.borkboon.com
 
Epidemiologi Dekskriptif
Epidemiologi DekskriptifEpidemiologi Dekskriptif
Epidemiologi Dekskriptif
 
Ukuran Frekuensi Penyakit
Ukuran Frekuensi PenyakitUkuran Frekuensi Penyakit
Ukuran Frekuensi Penyakit
 
Curriculum vitae caro y fer
Curriculum vitae caro y ferCurriculum vitae caro y fer
Curriculum vitae caro y fer
 
การสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศการสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศ
 
Kopi tiam presentation
Kopi tiam presentationKopi tiam presentation
Kopi tiam presentation
 
Perhitungan pajak rumah sakit contoh
Perhitungan pajak rumah sakit contohPerhitungan pajak rumah sakit contoh
Perhitungan pajak rumah sakit contoh
 
การสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศการสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศ
 
การสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศการสอนภาษาไทยในฐานะภาษาต่างประเทศ
การสอนภาษาไทยในฐานะภาษาต่างประเทศ
 

Similar to CVInDoc2017 (20)

David Robinson's On Line CV
David Robinson's On Line CVDavid Robinson's On Line CV
David Robinson's On Line CV
 
kavita_resume_3
kavita_resume_3kavita_resume_3
kavita_resume_3
 
Resume_Amaku
Resume_AmakuResume_Amaku
Resume_Amaku
 
gurpreet.pptx
gurpreet.pptxgurpreet.pptx
gurpreet.pptx
 
FredMcLainResumeB
FredMcLainResumeBFredMcLainResumeB
FredMcLainResumeB
 
GlenUnderwoodResume
GlenUnderwoodResumeGlenUnderwoodResume
GlenUnderwoodResume
 
MEL_WOLINSKY_20170124
MEL_WOLINSKY_20170124MEL_WOLINSKY_20170124
MEL_WOLINSKY_20170124
 
Jim_Colombo_Resume_2016
Jim_Colombo_Resume_2016Jim_Colombo_Resume_2016
Jim_Colombo_Resume_2016
 
RESUME_AdjunctFaculty
RESUME_AdjunctFacultyRESUME_AdjunctFaculty
RESUME_AdjunctFaculty
 
Kunal bhatia resume mass
Kunal bhatia   resume massKunal bhatia   resume mass
Kunal bhatia resume mass
 
Sudha Madhuri Yagnamurthy Resume 2 (5)
Sudha Madhuri Yagnamurthy Resume 2 (5)Sudha Madhuri Yagnamurthy Resume 2 (5)
Sudha Madhuri Yagnamurthy Resume 2 (5)
 
MartinVanha
MartinVanhaMartinVanha
MartinVanha
 
Charles harper Resume
Charles harper ResumeCharles harper Resume
Charles harper Resume
 
VenutoResume
VenutoResumeVenutoResume
VenutoResume
 
jidesh_res_updated
jidesh_res_updatedjidesh_res_updated
jidesh_res_updated
 
ChuckRobledoBulletPoints
ChuckRobledoBulletPointsChuckRobledoBulletPoints
ChuckRobledoBulletPoints
 
Syamanth S
Syamanth SSyamanth S
Syamanth S
 
RESUME_SoftwareEngineer.DOC
RESUME_SoftwareEngineer.DOCRESUME_SoftwareEngineer.DOC
RESUME_SoftwareEngineer.DOC
 
Net Resume D Hill
Net Resume D HillNet Resume D Hill
Net Resume D Hill
 
Resume
ResumeResume
Resume
 

CVInDoc2017

  • 1. Resume Name Marcus John O’Brien Title Senior Online Software Engineer and Team Leader Location Vancouver, Canada Telephone (+1) 604 436 4577 Email marcusobrien@yahoo.com Programming Experience C++ UNIX/Linux Platform 15 Years C++ Windows 15 Years Shell Programming (Linux/Win/Unix/Mac) 15 Years C# 8 Years Java 5 Years SQL (MS and MySQL) 4 Years XML/JSON/HTML 5 Years Test Driven Development (Multiple Frameworks) 8 Years Agile (Scrum) 8 Years API/SDKs Microsoft .Net 8 Years Windows Communication Foundation (WCF) 5 Years Windows Presentation Foundation (WPF) 3 Years QT C++ Trolltech (inc Squish Testing) 3 Years CDT/Swing/AWT/Jface/JDBC/GEF Java 2 Years Eclipse Plugin API 2 Years OpenCV 1 Year Google AI Tensorflow 3 Months Other key skills SOAP / RESTful Online development / IIS MS IoT and AWS IoT (cloud Services) Arduino/Raspberry Pi/Banana Pro/Robot C Repositories – Git/Perforce/Subversion/RCS/CVS/SourceSafe Instrumentation and Code Analysis – NCoverage, Purify, Quantify, Bounds checker POSIX - Cygwin / Linux / MinGW Game Console SDKs - PS3/PS4 Toolkit, Xbox 360/1 Mobile – Mac XCode (with Libimobile) - Android ADB (with MADB) Confluence Wiki, JIRA bug tracker Testing Frameworks MBUnit, Junit, Squish, MSTest, JMeter and Gatling Load Testing (via AWS) Analysis and DesignMethodologies Unified Modelling Language (Rational Rose) Education PhD ResearchArtificial Intelligence – Semantic and Neural Networking, including natural language processing, inference engines, pattern recognition, image recognition Degree - BSc Hons 2:1 Computer Systems Nottingham University
  • 2. Employment History Senior Online Developer EA Games, Vancouver From April 2013 – Current I have been working on the new EA Frostbite game engine. All out titles are currently moving over to this new technology, and my tasks are to re-write our test framework tool to allow our game teams to be more test driven. This will have huge savings in our development budgets, and also greatly increase the quality and reliability of all our software deliverables, from games to tools to web services. The tool is written in c# and I am currently capturing requirements, designing the system and prototyping new ideas. This involves working with teams in 10-15 different countries (across multiple languages and time zones), and with various team sizes with budgets up to $20 million. Senior Online DeveloperUFC FreeToPlay Mobile EA Games, From April 2013 – February 2015 Vancouver I developed online web services for a free to play UFC game (over 1 million downloads from Apple Istore and Android store). My responsibilities include designing, implementing, testing various services for the game progression systems. After developing these systems I was tasked with making sure the game would scale for our predicted daily active users and TPS. I had to make sure our test systems generated enough transactions per second (using JMeter/Gatling through AWS), and our systems could handle the load. The main iteration cycle involved testing, rewriting and optimising our c# services, and optimising our MSQL DB. Optimisations included eliminating joins in SQL, introducing redundancy in the DB, caching static data, caching dynamic data, adding indexes, simplifying code, atomising retrieved data , reducing the number of client HTTP calls etc. I personally successfully optimised our games web services to scale in preparation for our launch. We are currently supporting 260k PCU (concurrent logged in users). Senior Online Developer Ubisoft Entertainment, Montreal From February 2010 – April 2013 I began working for Ubisoft on the online team. I developed backend solutions available through a C++ SDK that the game clients could integrate. I introduced functionality that allowed gamers to enter unique key codes that would unlock certain privileges in the game, e.g. new maps, character skins etc. Code was written in C++ and Python, and interacted with a MySql database. All solutions had to be scalable and were load tested with JMeter. Game clients such as Assassins Creed were customers. I was then asked to develop an entirely new system using C# and IIS to replace some legacy systems. I completed this task on my own over a year, allowing privileges to become cross platform and cross title. This SOAP solution would unify and be used by all titles in the Ubisoft range. For the past year I have been replacing and unifying all legacy online systems with pragmatic RESTful solutions written on WCF in C# using IIS. These systems must be backward compatible and all URIs are versioned to support this.
  • 3. Senior Software Engineer EA Games, Vancouver From March 2008 – November 2009 At EA I was developing games for both the PS3 and the Xbox. As a senior engineer, I started working in the pipeline team. This central team is responsible for processing all the artwork, audio and gameplay assets that are created for the game. This was a challenging role whereby immediate diagnosis and rectification of any problems was necessary to minimize downtime for the 100+ team. I then moved into different areas of game development including AI and backend services. My last task at EA was to integrate web kit into a game, and using asp.net mvc and c#, to develop an in game web site. I also developed web services using C# that both the game client and the web browser utilized. In parallel to this I developed our backend database solutions using MySQL and SQLServer, on both linux and windows platforms. Senior Software Engineer Cyan Technology Ltd, Cambridge From July 2005 – March 2008 Cyan is a fabless microcontroller designer. I worked on the main software product which is an Integrated Development Environment called CyanIDE, this allowed our customers to write embedded C for our family of microcontrollers. My development role began implementing software using the Trolltech QT Multi-platform toolkit. I contributed into the IDE a direct memory editor, breakpoint and bookmark support, persistent workspace and profile support, integration of a QScintilla text editor, and various other GUI based functions. I was also responsible for creating a nightly automated build and test solution, this included checking out all source, creating an install using InstallShield, booting VMWare virtual machines for Windows XP, Windows 2000 and Linux, installing the new install into each VM, executing automated tests written in Python for the Squish environment and emailing all results to all team members. This helped to alleviate some of the bottlenecks in the development lifecycle, saving us a great deal of time and money. During the last 18 months we moved from supplying our own IDE, to extending the IBM Eclipse IDE using Java. I have implemented the CDT toolchain mechanism for our toolchain (compiler/linker etc), extended the IDE by adding new views and editors, as well as written some of the graphical chip configuration code (using GEF). Senior C++ Software Engineer and Team Leader Eley Metrology Software From January 2003 – July 2005 I ran the software development team for a company specialising in producing applications for the metrology (measurement) industry. The 2 main products, were designed using UML and written in Visual C++(MFC), the graphics routines utilise OpenGL. My recent development projects include implementing a STEP ISO10303 CAD file reader and displaying the 3D CAD file using the OpenGL development kit, this included rendering the 3D image using texture mapping, and implementing various lighting effects. Senior Software Engineer and Team Leader (1999-2001)Marconi Plc My last 2 years at Marconi Communications were spent mentoring and leading a team of 10 software engineers on a project to complete a new version of a telecoms management system. My responsibilities included implementing new functionality into the system to very strict deadlines (due to high dependencies), mentoring the departments other 25 software engineers in ANSI C++ and overseeing design and implementation reviews. I continued to implement new functionality into the system, which included a GUI based application to allow remote configuration of equipment and an object persistency database.
  • 4. Senior Software Engineer and Team Leader (1998 - 1999) Marconi Plc I was asked to form and recruit a trouble-shooting team to finish and support an overdue project for a multinational customer (Siemens). This involved running my team, liaising with Siemens, software fault diagnosis and rectification, patch deliveries on a live system (controlling an entire telecoms network), and customer support. C++ Software Engineer (1994 – 1997) GEC Plessey Telecoms I began working for GPT as a software engineer on a telecommunication management project. This large-scale project was distributed over 5 countries, with around 400 software and test engineers contributing to the development. This gave me valuable experience of the complexities and logistics of development on large-scale projects. PhD ResearchArtificial Intelligence – Semantic and Neural Networking 1993-1994 I researched the first 18 months of a PhD in the field of Artificial Intelligence. My research involved developing a new type of semantic network to be used for knowledge representation, this also included a natural language parser. Other aspects of my research were concerned with neural networking techniques. I also lectured and gave seminars at the Nottingham Trent University. Interests From 2001 to 2002 I travelled through Central and South America. This wonderful experience gave me the opportunity to see a beautiful part of the world that I will never forget. It also provided me with the opportunity to pursue my favourite activities of trekking and camping, in both the Andes mountain range and the Amazon rainforest. Since joining EA I have been coaching and captain of an employee soccer team, I managed to motivate the team to moving up from last position to finishing 4th in our league. My other hobbies are robotics, electronics, Raspberry Pi and Arduino project making, fly fishing, classic literature and video games. Personal Strengths I have excellent communication skills, both written and verbal. My experience enables me to commit to deadlines with a high degree of certainty. I am self- motivated and pro-active, and I also take pride in all my work. I am seeking a new challenge in a company where I can contribute my skills towards new goals. Employment Status I am currently authorised to work in Canada, having received my permanent residency status. I am living and working in Vancouver. Shipped Games EA Games UFC Free to play mobile – apple and android – all web services and optimisations Skate 2 – Pipeline/AI/Bug fixing Skate 3 – Web services for UGC and Blaze configuration for matchmaking/stats/leaderboards UFC Gen 4 NHL 15 Ubisoft Games Assassins Creed 2 Assassins Creed Brotherhood Driver San Francisco Assassins Creed 3 Splinter Cell Conviction
  • 5. References – Current Reference Available on request Harvey Thompson Stephen Page Pipeline Team Leader Software Group Leader EA Games Cyan Technology Ltd. Sanderson Way Buckingway Park Burnaby Swavesey BC Cambridge Canada England 604 456 4400 (44) 1954 234 400 Online publications (Tiny URLs are case sensitive) : Controlling iOS Devices Via C# Code on Windows OS http://tinyurl.com/MarcusOBIOSOnWindows General C# MS Unit Test Tips for a New Development Project http://tinyurl.com/MarcusOBUnitTesting Manipulating Android Devices from a Windows C# App http://tinyurl.com/MarcusOBADB Giving Your Devices Constant IPAddresses http://tinyurl.com/MarcusOBConstantIP Commands for Controlling an iOS device in Windows using libimobile http://tinyurl.com/MarcusOBIOSCommands ADB Common Commands (Android Debug Bridge) http://tinyurl.com/MarcusOBMADB Combinatorial Explosion – A cautionary tale in OO http://tinyurl.com/MarcusOBCombinatorial Const and Read Only in Java,C# and C++ - A Comparison http://tinyurl.com/MarcusOBConstandReadonly Virtual Functions in Java, C# and C++ - A Comparison http://tinyurl.com/MarcusOBVirtualFuncs Warning Virtual Functions in C# from C++ http://tinyurl.com/MarcusOBC-Warning Current Home Projects I am currently building a multi-skilled home robot. At the moment I'm working on the recognition aspects,and I am using some Arduino embedded boards to track people in a crowded room. The IR systemdirects the 2 degrees of freedom USB camera systems,these then track people's moving faces and eyes.Using previously trained models and templates, the visual recognition systemcan recognise known faces with a 90% degree of certainty, it then uses a semantic network to start a conversation with that person based on previously discussed topics.My robot's visual software uses Qt and OpenCV on a Raspberry Pi 3. The otherraspberry pi 3's control the mobility and avoidance system, speech recognition and simulation system, brain (semantic net and various Dbs), and an entertainment system (web browser/music/film player). I am also completing an ant colony simulation application for the Android OS. The App (soon to be launched), uses distributed ant colony behaviour to find complex solutions to algorithmic problems such as the travelling salesman problem. These stochastic systems are too complex to solve via brute force and basic heuristics, so I am am researching the effectiveness of swarm behaviour. The ant colony lives in an environment that resembles the actual salesman problem to solve. Each city is represented by a weighted node, with the weight being the distance between the nodes for the salesman or ant to travel. The ants either have to visit each node only once, or find a food source within the environment using the minimum distance travelled. The user can change many environmental and behavioural aspects to the ants and the colony, and study the effects in terms of how efficiently the colony finds food with the minimum weight/effort. The ants can act in an individual manner to start with (thus using dynamic stochastic behaviourto explore and find the quickest food source). But as food sources are found,solutions (the best trails to the food) are passed on to other ants via pheromone trails. The ants can then form a swarm and explore more of the problem space using more intelligence “learnt” from the individual successfulpheromone trails.