Lance Barry Paine
New Zealander / British
lance@lbpaine.com
+44 78 898 100 50
Profile
A highly competent senior software developer with more than 17
years commercial experience in engineering business
information systems and software products; I have worked on a wide
range of products: distributed, multi-threaded, client-server,
cross-platform, using multiple languages (primarily, but by no
means exclusively in Scala, Clojure, Python, C#, Java and C++), on UNIX, Linux and Windows. Fully accomplished in the
development life cycle, I am an adept communicator, able to
express myself clearly and concisely, without the need to resort to
jargon. I have held an active personal interest in computing and
software development for more than 30 years. As a high-level
graduate of The University of Waikato’s Computer Science
Department, I earned a place in the Scholarship extension program.
I’m a
firm believer in the value of agile practices in most software delivery, having seen the benefits of applying it over my career. I love the continuous process improvement of Kanban,
continuous deployment, pairing, and the pragmatic application of
TDD and BDD, coupled with the practices of Continuous Delivery, or ideally with DevOps.
Employment History
L B Paine Ltd
London, England
June 2013 – Present
Director
I founded L B Paine Consulting Services in 2013 to share my
experience and skills with a wider audience.
Clients:
Home Office Digital: Apr 2016-present
- Part of a central team which helps to ensure and improve standards of development across the Home Office, using a platform based on Kubernetes
- Tech lead of a delivery team on a project which had stagnated over years.
- Used kanban to visualise where problems were occuring, and have redesigned and redeveloped the tool
- Realigned the project with user needs. Conducted user research.
- Moving the existing project from a fragile chain of Scala, PHP and mysql to a reactive application using
- scala and scalajs with a ReactJS Single Page App, Play and akka-streams, with some akka-persistence
- Attained a 1000x speed up in application performance (some of the calc is done by call existant R scripts with Renjin)
- Tech lead on discovery into Seized Goods. Developed prototype android app that reduced what is currently a 20-50 minute process into less than 30 seconds
- Wrote some data import scripts in Clojure
- Tech lead in an agile discovery into Emergency Services APIs. Wrote prototypes using falcor to wrap a RESTish api. Investigate feasibility of using Datomic to store PNC data
Virtual Clarity / Data Science Team: Oct 2015–Feb 2016
- Developed an ingestion pipeline to bring data into Hive. Spiked (prototyped) solutions with Kafka, and Spark Streaming
- Designed and developed an Angular.js and D3.js frontend for visualisation of data, queries over
Drill
- Wrote Spark services in Scalatra and Spray to enable timely
visualisation of data in web frontends, deploying the services in
docker containers to Marathon over a Mesos cluster, and later via
AWS, ingesting into Hive
- Mentored Data Scientists on Software Development practices
Bank of America Merrill Lynch: Sept 2013–Oct 2015
Languages/Tech: Scala, Kafka, Python, WPF, Scalatra, Dropwizard, Angular.js, JavaScript and
Coffeescript, D3.js, Mithril.js and HTML.
- Senior developer on a project to introduce strategic Scala Event-Sourced OFAC scanning process into core Settlements processing for global trade flow. This went live, on time, with no issues
- Broke monoliths into smaller services, communicating over Apache Kafka, leading to massive increases in the number of simultaneous clients
- Drove replacement of existing, aging UIs in proprietary stack
with HTML and JS technologies to improve user experience.
- Working in a heavily paired environment using Kanban for Kaizen
continuous process improvement and estimation - improving both the development process and the Operations users interactions with the software systems they use.
- Introduced patterns for better monitoring & analysis of
application issues (using ZMQ)
- Improved
responsiveness and startup times of several GUIs by 100x by applying asynchronous and reactive
patterns
- Designed and built chat services with ElasticSearch and Angular front end to enable collaboration between reconcilers and trade settlements operations teams
UBS
London, England
Nov 2010–June 2013
UBS are a world-renowned Swiss Investment Bank
and Wealth Management firm.
Senior Developer — Cash Equities — Core Data
Services
Dec 2012–June 2013
Senior developer on global team (CDS) that
provides static data mastering and distribution services to order
management streams
- Analysis and reporting on existing infrastructure for senior
management
- Encouragement and mentoring in best practices - code review,
unit testing
- Maintenance of Java and JSP services and improvements in their
build and deployment
- Investigation and prototyping of replacements of existing
components - Play, Scala, Scala Test etc.
Senior Developer — Trading Guis (Cash
Equities) Nov 2010–Dec
2012
Senior Developer with 2 other Senior Developers
in London, 1 Junior in London, 5 off-shore in Poland, and 3
developers in USA.
- Extended and maintained a C# trading application that provides
a view on multiple order streams and is used by traders and support
staff. App has an micro-services architecture with low-gc or zero-gc
approaches in both services (Java) and client (C#)
- Championed a drive for maintainable, clear code with a
test-first focus, with a focus on test-as-specification, and team
(and wider department) adoption of daily stand ups and other agile
practices.
- Wrote a very well received visual designer for Custom Algos using Visual Studio Isolated shell and the MS Visualization and
Modeling SDK, improving lead-time for the development of custom algos for clients
from weeks to hours with significant reductions in errors due to
automated validation
- Mentored more junior developers in multiple international
offices
- Talked directly with traders to establish business requirements
and take them to completion
- Streamlined release procedures to enable one click deployments
with tracking of releases
- Re-designed large parts of error prone initialization code to
be declarative and driven by attributes, improving testability in the process
- Modernized Java web-app for controlling routing with extensive
use of jQuery to give it a face-lift and make it compatible with
modern browsers
GETCO (now KCG Ltd)London, EnglandSept 2009–Aug 2010
Senior Developer
GETCO were one of the world’s leading High
Frequency Trading and Market Making Firms with offices in four
cities across 3 countries.
I worked with .Net 3.5 and 4.0, with MVC.net
and WPF, Sql Server, Vertica (columnar database) and Python
- Designed and developed network latency reports with Vertica Database
backend, MVC.net front end with data captured by endace packet
capture cards.
- Optimized queries - educated users (other developers, traders
and clearing staff) on more efficient SQL, often productionising
queries into regular or on-demand reports.
- Designed and developed GUI for monitoring and transferring position between
trading models.
- Contributed to framework for client-side tools for trading
systems monitoring using C# 4.0, WPF, MVVM Foundation and RX
Framework
TFG Fund Services
London, England Sept 2008–Aug 2009
Senior Developer
TFG Fund Services provides trade lifecycle
management software and professional services to Hedge Funds.
TFG’s trade flow platform is a distributed system with servers
primarily written in C++ with C#, WinForms and ASP.net for the
presentation layers.
- Worked on the full-stack, from new screens and visualisations for traders, to interfacing with Bloomberg’s B-PIPE for market data
- Introduced TDD and continuous integration leading to reduced lead-time and increased certainty of correctness at release time
- Slashed build times from in excess of one hour to minutes
DX3 Technologies Ltd
London, England Jan 2008–Sept 2008
Head of Technology
DX3 Technologies is a digital media services
company, providing a digital media delivery service to PC and
Mobile, with deployments in the UK and ZA serving clients across
Europe and Africa. The platform was .Net 3.5, with a SQL
Server 2005 hosted on Windows Server 2003, and
many components exposed via SOA
web-services. The web front end uses Apache and PHP
5.
- Introduced Scrum as an agile methodology. Resulted
in vastly increased transparency of development, and greater
efficiency for the development team while also improving their
morale
- Led a team of 5 - 2 .Net developers, 2 PHP developers, and 1
Systems Engineer
- Dealt directly with clients to establish new system
requirements
- Migrated the system from .Net 1.1 to 3.5, while improving the number of simultaneous clients on the web server by 1000 times
- Managed network with 40 servers and more than 40 terabytes of
network attached storage on a Windows Server 2003 Domain
- Introduced formal coding standards, and development
with automated testing and continuous integration
Gloucester Research
London, England Nov 2005 – Sept 2007
Senior Developer — Data Services
Group
Gloucester Research provides trading
research and software systems to statistical arbitrage hedge funds.
I was a member of a team of four providing data-feed analysis and
database support to several other groups. My role required that I
liaise with researchers, analysts, data suppliers, and systems
teams.
- Wrote tools for analysis and normalization of data for FX tick
collection, and static feeds such as IBES, Starmine and S&P
XPressFeed using a variety of different languages and technologies
Perl, C#, Python, SQL server, bash and C++
- Developed a database for daily point-in-time analysis of
XpressFeed data using .NET, SQL Server and Perl
- Maintained, extended and supported existing data feeds
- Wrote tools for ETL and normalisation of data
International Information Systems
Auckland, New Zealand
Aug 2005
Contract Software Development
IIS provide customer purchase analysis services to a multitude of
New Zealand and Australian retailers.
- Redesigned and optimized an Excel VBA macro based price point
prediction tool, reducing runtime from an hour, to just a few
seconds.
- Improved the user interface of the tool, increasing
accessibility of the tool for their clients
Advanced Management Systems Ltd
Auckland, New Zealand
Jun 2002 – Aug 2005
Technical Software Developer
Advanced Management Systems is New Zealand’s leading provider of
payroll software to Health, Education and Government and employs 30
people.
- Design and implementation of a proprietary cross platform
(UNIX, Linux, VMS and Windows NT/Server) application server,
virtual machine and multi-threaded embedded relational database
engine using Visual C++ and GCC
- Designed and built a Disaster Recovery module allowing the
server’s embedded database to perform live replication over TCP/IP
to a remote client
- Introduced source control procedures (Subversion)
- Introduced a Wiki to improve internal company
documentation.
Grasshopper Software
Hamilton, New Zealand
Jun 2002
Contract development on image correction
program “ImageAlign”
ImageAlign was a Photoshop plug-in and standalone
app written in C++ with MFC and Win32 that corrected lens
distortion
RadioPie
Hamilton, New Zealand
Feb 2001 – Jun 2002
Lead Software Engineer
I led a team of 3 developers to build the platform and GUI. RadioPie was a startup online radio station for
independent artists. The concept involved a proprietary music
player that was able to download music from a central server
according to user preferences for genres and individual tracks.
Academic Qualifications
Bachelor Computing and Mathematical
Sciences (Software Engineering/Machine Learning - Four Year Degree) from The
University of Waikato (98–02)
Bursary - A (English, Economics, Accounting,
Physics, Math with Statistics)
Awards
- Member of University of Waikato’s scholarship extension program
for advanced students
- Winner of 1999 and 2001 University of Waikato/ACM Programming
Competition
- Member of Golden Key Honours Society
- Rotary Education Trust Scholarship - 1998, 1999
IT Skills
This is really only here for the agent’s search engines
Languages
- Scala 3+ years
- Java 5 years
- Javascript 3+ year
- C# 5+ years
- C++ 7 years
- SQL 9+ years
- Perl 2 years
- Python 3 years
Databases
- SQL Server 2000–2008 many, many years
- VerticaDB, 1 year
- MySQL, 2 years
- q/kdb: 1 month
- PostGreSQL, 1 year
Components, Libraries and APIs
.NET Framework v4, v3.5 since
release;v2.0 since 2005; v1.1, 1 year;
LINQ; Log4Net; Syncfusion; Infragistics; COM+;
Java, 2 years; MFC; wxWidgets; STL; Boost
Development Tools
Intellij IDEA; Microsoft Visual Studio
(with resharper); Eclipse; Sublime; git; mercurial; gerrit;
Subversion (SVN); VisualAssist; Clone Detective; ConQat; Team City;
CruiseControl.Net; Jenkins; NUnit; UnitTest++;fxCop;
IIS 5,6; spray, scalatra, play, Apache, Tomcat, jetty;
</div>