Contact Details

Based in Cambridge, UK. Not willing to relocate.

Please use my online contact form to contact me as I do not publish address details on the web.

Technical Summary

I am a generalist, but my early consulting experience shows that I can quickly become proficient in whatever area of software development is required to get the job done. Recently I have been mostly writing web services with Python, running on Linux.

Key Skills: Python, HTTP, JavaScript, Perl, C/C++ (STL, MFC, ATL), MySQL, Apache, HTML, CSS, XML, XSLT, Linux (Debian/Ubuntu).

My Stack Overflow profile

Professional Experience

December 2014 - Present
Bromium, Cambridge
Member of Technical Staff

Details to follow…

January 2008 - November 2014
Velocix - An Alcatel-Lucent Company, Milton, Cambridge
Technical Lead
  • Worked as a key member of the Engineering Team throughout the transition from a startup running our own Content Delivery Network to being a wholly owned subsidiary of Alcatel Lucent selling a productised version to ISPs.
  • Worked on many backend services in Python. Designed and wrote new components where required, with unit and functional tests alongside. Extended, maintained and fixed bugs in existing services, refactoring to add unit tests where possible.
  • Replaced a legacy configuration tool, written in C++ and Perl, with one I wrote from scratch in pure Python. The new system was more configurable, easier to deploy and use and faster to run. I provided a functional test suite and full documentation, which the Operations Manager later commended me on for its readability and completeness.
  • Designed the software architecture for a core REST API. Chose the Flask Python framework with eventlet for concurrency, served by gunicorn reverse-proxied behind nginx.
  • Worked on the team implementing the REST API. The team was awarded for achieving high unit test coverage and producing useful code documentation (doxygen).
  • Maintained a legacy web UI, written in Perl using the Catalyst MVC Framework and JavaScript with jQuery for parts of the front end.
  • As Technical Lead, I introduced and led many automation, process and architecture improvements:
    • Wrote, documented and introduced a schema migration tool to manage changes to our core relational database. Enabled the Engineering Team to scale to multiple independent Scrum teams that could all work across the full stack in parallel.
    • Proposed and designed a move away from monolithic Apache instances towards a system of multiple backend web-services fronted by nginx used as a public reverse proxy. This would bring performance and security improvements, and simplify operational management and maintenance.
    • Introduced peer code review for my team, using ReviewBoard. This was later adopted by the whole of Engineering and is now standard practice.
    • Introduced automated functional testing of our web UI using Selenium Remote Control driven by Python unit tests.
    • Prototyped a Continuous Integration system using BuildBot. This formed the basis of the system still in use today.
    • Proposed, designed and implemented a major restructuring of the mainline in our version control system (Perforce) to simplify branching. Communicated the impact to all Engineers in Cambridge, Chennai and Madrid. Successfully executed the move of approximately 15,000 files in hundreds of directories with minimal disruption.
July 2005 - December 2007
Infomatrix Ltd, Fen Drayton, Cambridge
Software Engineer

Mainly worked on the SqZ product - a HTTP accelerator for wireless networks. Implemented a new algorithm to improve the efficiency of the transport protocol in the Linux based server and the cross platform client, using C++ and the STL. Designed and wrote the web based administration package for the server, using PHP for the statistics pages including graphs of data usage. Also prototyped a personal firewall for Windows, implemented as an NDIS intermediate mode driver.

Customer projects included:

  • a virtual keyboard for Windows, for use with a touch-screen or mouse. C++, MFC, Win32 input APIs
  • a web based system for analysis of test logs. Included Ajax features to make the application appear more responsive. PHP, JavaScript, MySQL, Apache, C++
  • writing a system of makefiles to build some software components, breaking dependencies on the complicated internal build system so that development of the components could be outsourced more easily. Once completed, the software could be built using GNU make on many platforms including Solaris, AIX, HP-UX, Linux and Windows
July 2002 - June 2005
Symbian Software Ltd, Milton, Cambridge
Contractor

Employed by Infomatrix, but worked on site at Symbian for three years.

Initially contracted for three months to provide Win32 and COM expertise. I provided technical advice during the acquisition of a replacement for the legacy PC Connectivity software. I worked with the supplier to ensure Symbian's requirements were met, reviewed documents and the proposed new Object Model. I wrote example clients that could be used to demonstrate the simplicity of the new API to Symbian and its customers.

Following the delivery of the new system, Symbian took on the maintenance of the new PC Connectivity solution, which they called Connect QI. My contract with Symbian was extended and I was given the job of maintaining and enhancing QI.

Primarily I worked in C++, using STL and the ATL and MFC frameworks for the COM Servers and GUIs. I wrote Perl and VBScript for the build and test systems. I also:

  • created an SDK to accompany the core system. This came in three versions: two for different types of customer and one version for the general public which was available to download from symbian.com
  • designed and implemented the SDK documentation system using XSLT stylesheets for translating the original XML into HTML for distribution
  • created a suite of installers for the various components and SDKs using NSIS
  • was involved in the interviewing process when an additional contractor was required so I could concentrate on adding new features
  • performed a technical review of several chapters from a colleague's book on Symbian PC Connectivity

When providing technical support on Connect QI, I developed an excellent working relationship with several customers. Several times when answering a customer's technical questions I took the opportunity of producing a new sample application for the SDK to illustrate a particular feature.

July 2000 - June 2002
Infomatrix Ltd, Fen Drayton, Cambridge
Software Engineer

Worked on the full development cycle of numerous projects. This included customer funded projects that they had outsourced to us and internal product developments. I quickly became recognised within the company as the resident expert on MFC GUIs and the Win32 APIs.

I worked as part of a team, from requirements gathering through to customer acceptance testing, on the following projects:

  • a cut-down implementation of the NAS layer of a UMTS protocol stack for 3G test equipment. Required intimate knowledge of the relevant ETSI specifications. Cross-platform (Linux, Cygwin, native Win32) C++, TCP/IP sockets
  • a complex Multi-Document, Multi-View GUI for the configuration of 3G test equipment, control of test runs, collation and analysis of the very large logs produced. I was responsible for the majority of the UI, including a custom view that drew expandable message sequence charts from the raw log data collected. I also implemented printing functionality, with WYSIWYG print preview. Win32, C++, MFC
  • plugins for the graphics subsystem of a mobile phone operating system to enable rendering of PNG, GIF and JPEG encoded images. Embedded C

I was solely responsible for the development of:

  • an extensible communications library for controlling TETRa radios. Written in ANSI C for portability and successfully ported to Win32, WinCE and Linux
  • a Windows GUI to simulate a 3G mobile phone handset and interface with the NAS layer of a UMTS protocol tester. C++ with MFC, TCP/IP sockets
  • a dispatcher application, for messaging and real-time positional tracking of a fleet of mobile radio users with GPS devices. Required interfacing with several different models of TETRa handset and an ODBC compliant DBMS. Included an integrated map for the display of the fleet's positions. Win32, C++, MFC, COM/ActiveX, TCP/IP sockets
July 1997 - September 1999
Sponsored Student

I was sponsored through university by Marconi Communications Ltd. This involved working for them over the summer holidays and for my entire intercalated year (a “sandwich” year between the second and third years of my degree course). This was valuable experience as a student, giving me a hands on understanding of commercial software development. During my time with them I was given full responsibility for specification, design, implementation and acceptance testing.

July 1997 - September 1997

I was given 8 weeks to specify, design and implement a Base Station Configuration Tool for the Private Mobile Radio system. This was to replace an older tool that had become unmaintainable. I taught myself how to use Borland Turbo Pascal to create a new modular implementation, complete with MS DOS GUI, by the end of the summer.

July 1998 - September 1999

For my intercalated year I was assigned to a small team of software developers working on the KV90 HF radio. The team were near completion of the STANAG 5066 protocol and were starting work on numerous applications to be deployed over it. I was responsible for:

  • implementing a re-usable VCL component to allow Borland C++ Builder and Delphi developers to rapidly add the ability to route data via the STANAG 5066 stack
  • the design and implementation of a protocol for a simple messaging system. I wrote the application in C++ Builder, using the VCL component I had developed and ADO for storage of messages in a database
  • designing and running acceptance testing for an SMTP email gateway that had been outsourced to an external supplier. Over several months, I reported many obscure bugs that I discovered due to my in depth understanding of the relevant RFCs and specifications. I also verified the fixes by writing test harnesses that were then used in the regular regression tests

On an unrelated project, I reverse engineered a legacy DOS application with no source code or documentation to produce a functionally equivalent Windows GUI for configuring the encryption keys used by an external radio. This was written in Borland C++ Builder using the Windows APIs for RS232 serial communications.

Other Experience

I run my own website at daybarr.com. My website first started with static HTML pages at University in 1996, then progressed onto a custom PHP templating framework combined with a Wordpress blog before I switched to a customised Drupal installation that handled everything. For the most recent incarnation, I rewrote the website in Python in order to get some practical experience of using the Django web framework. My website also hosts some old projects from my University days, such as games (written in QuickBasic) and Screen Savers (written using Borland C++ Builder). I occasionally update my blog with technical articles or tutorials, such as this tutorial for Yahoo! Pipes.

I also use my spare time to gain practical experience of various technologies that I don't have the chance to try at work. Some of the web projects that I have written over the years include:

I spotted a mistake in the 5th printing of Scott Meyers' essential book on the Standard Template Library (Effective STL) and have achieved instant fame by being credited in the Acknowledgments of the 6th printing and the online errata.

Education

1996 - 2000
BSc (Hons) Mathematics with Computing with Intercalated Year
1989 - 1996
Denbigh High School, Denbighshire
Special Paper
Mathematics(1), Physics(1)
A-Level
Mathematics(A), Physics(A), Electronics(A), General Studies(A)
Additional
Mathematics(Distinction)
GCSE
4 Grade A*, 6 Grade A

This is a printout of the online version of my CV; the most recent version can be found at http://www.daybarr.com/cv.

  • $LastChangedDate: 2014-12-05 01:10:12 +0000 (Fri, 05 Dec 2014) $
  • $Rev: 725 $