Hi, I'm Dan.
....oooo.. ooOOOOooooooooOOOOOO.. ......oo.. ..........ooOOOO.. .. ...... .. .. .. oo .. .... .. oo.. .... .. .. .... ..oo .... ..oo .... ..OO .. ooooooOOOOoo.. ..oo ooOOOOOOOO00000000@@00OO.. ........ ..oo @@@@OO .. ..OO00OO.. ..OO00000000000000OOoooo.. oo00.... ..oooo.. oo@@00000000.. oo00@@OO 00.. OO@@@@@@@@00OO 00 OOOO OOOOoo @@00 00 ..OOooOO0000..oo ooOO ..OO OO00@@@@@@00.. oooo00 00 OOoo ooOO ....0000ooOOoo OO OO.. 00.. ..00 .. oooo ooOO OO OO 00 oo oo.. ..oo OO oo00 ..oo ..........oo ..oo.... ..ooooOO oooo .... ..OO OOoo OO OO.. OOOO OO OOoo ..@@@@OO ..OOOO.. 00 00.. ..ooOOOO0000OOOO000000oo 00 OOoo ..OOOOOO00OOoo00@@@@@@OO.. 00 OOoo OOOOooOOOOOOooOOOO000000OOoo.. ..00 ..OOoo.. oo0000OO00OOOOOOoo..0000OOOOOOOOoo OOOO ..OOOO.... OO0000OOooooooOOooOO00OOOOooooOOOO ..OOOO ..0000oo......OOOOoo .. ..ooOOOOOO.. ..oo00OO ..0000OOOOoooooooo ..OOOOoo ..OO00OO ..OO0000oooooooooo OOoooo....OO00OO oo000000ooooOOOOoo .... ooOOooooOO00OO oo00OOooooOOOOoooo .. .... ooOOOOOOOO00OO ooOOOOooOO0000oooo.... ..ooOOOOOO0000OO.. ..OOOOoooo00OO..oo.... .. .. ..oo..ooOOOO0000OO.. ..ooOOOOOO00OO.......... ...... .... .. ..ooOOOOOO00oo ooOOOOOOOOoo....................oooo....oo ..oo ooOOOOOOoo OO00OOOOOOOOoo....OOoooooo ..ooOOOO..OOOOoooo .. ..OOOOOOOO.. oo00@@@@00oooooooo....oooooo........ooOOOOooOOOO.... ......ooOOooOOOO.. OO00@@@@@@@@@@@@00oooo.... ....oo00..oo ooooooOOOOOOOO.... ........ooooooOOOOOOOO oo00@@@@@@@@@@@@@@@@@@OOoo..oo.. ..OOoooo..ooooOOOOOOOOOO..oo ......OO..ooooooooOO@@@@00oo oo@@@@@@@@@@@@@@@@@@@@@@00OOoooo.. oooo....ooOOOOOOOOOOOOoooo.... ..OO......oo..OO@@@@@@@@@@@@oo 00@@@@@@@@@@@@@@@@@@@@@@@@00oo...... oooooo..ooooOOOO0000OOOO.... ....oooo....OO..OO@@@@@@@@@@@@@@@@00.. @@@@@@@@@@@@@@@@@@@@@@@@@@00 oo.... .. oooo....ooooOOOOOOOOooOOoo .. ....oo.. ..ooOO@@@@@@@@@@@@@@@@@@@@00 @@@@@@@@@@@@@@@@@@@@@@@@@@OO......oo.... ...... ....00..00..oooo.. .. ..oo ......0000@@@@@@@@@@@@@@@@@@@@@@@@OO @@@@@@@@@@@@@@@@@@@@@@@@00OOoo....oo oo .... ooOOooOOooooOO .. oo ......OO0000@@@@@@@@@@@@@@@@@@@@@@@@@@OO @@@@@@@@@@@@@@@@@@@@@@@@00oo....ooOO.... ........oooooo00OOoo..OO.. ...... ..oo..oooo@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OO @@@@@@@@@@@@@@@@@@@@@@@@00OO....oo.... .... ......ooOOOO00ooOOoo.... ...... oooo..oo00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@oo @@@@@@@@@@@@@@@@@@@@@@@@OO..oo..oooo.. ...... ..OOooOOooOOooooooOOoo.. .. ..oo......00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@00oooooo..oo.. .. .... OOOOooOOOOoo....oo.. ...... @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@00OOoo..ooOO .. .. ..OOOO..oo..oooooooooo.. oo.. ..00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@oo .. .... .... ..OOOO..oo..oooo..oo.. .... OO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@OO....oo..oo.. .... ooOOoo..oo..oo..oooo.... .. ......00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@OOoo oo..oo.... ooooOOoooooooooo...... .... ....00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@OOoo..oo...... .. ..OOOO....ooooOOOO..OO ..OO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@00OO.... .......... oo......oo..ooOOOO..oo ....oo00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@00OO..oo .. ..oo....oo..oo OOoo..OOoo...... ..0000@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@OOoooo.. oo...... oooooo....oo....oo.... .. ..00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OOoo............ oooooo..oooooo...... ..00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OO00oo..ooOO ooOOoooo..oooo.... ........oo@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0000....ooOO ..OOOO....oooooooo.... ..OO00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0000oooo..OOoo....ooooOO..oo..OO........OO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OOOOOO00OOOOoo..OOooOOOOOOoo..OO..00@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@00OOOOOO000000OO00OOOOOO00OOooOO00OO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0000000000@@@@00OO@@00OO@@@@OOoo0000@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
I write software in Rotterdam.

I wrote my first BASIC program in 1985 and never looked back. I have worked on everything from x86 assembly language PCI ROMs, to distributed Python applications split across 20 repositories. My specialisms are software maintainability, simplicity, and automated testing. I enjoy working in environments where quality is not negotiable, where the reliability of software is paramount. In my spare time I cook spicy food, and play loud guitar.

Selected Career History

Fox IT

Senior Software Engineer, Real-time Banking Fraud Detection

2021-09-01 - Present

Docker, Bash, Python, C++, Linux, System Design

DetACT: Full software development life-cycle responsibilities; feasibility study, requirements capture, design, planning, implementation, testing, TTO and maintenance. Team is responsible for ongoing platform improvement, refreshing a legacy codebase while still allowing new features to be added.

AVATAR: Team lead of project to fix critical defect. Full life-cycle responsibilities from root cause analysis through to deployment. Defect was caused by a fundamental design flaw in the software. A new component was designed to rectify the defect, and was built and integrated with existing systems without interrupting normal service. Defect was categorically fixed and has not reoccurred since.

DORA Metrics: Team Lead of project to automatically measure the DORA Four Key Metrics for our product. Full life-cycle responsibilities, from requirements capture to deployment. Solution identification build-or-buy stage showed that no commercial products could support our custom, private infrastructure; therefore, project will use open source Apache DevLake, and modify it to integrate with our custom deployment systems. Iterative project with both development tasks (building the reporting system and dashboards) and process improvement tasks (how do we change our processes to record better data).

Trainee Program: Teaching software engineering skills to apprentices. Mentoring them through exercises ranging from entry level, to simple but real projects for the team. Developed concept and all training materials. Apprentices went on to join development teams, and contribute to the platform.

Rodeo

Senior Software Engineer, SaaS Project Management for Creatives

2019-11-04 - 2021-07-31

GCP, JavaScript, React, Mongo DB Atlas, NodeJS

KRATOS Team: Team lead on brownfields project. Continuous improvement of legacy code, database migrations, feature development. Designed future software architecture and migration strategy. Mentored junior staff.

Squla

Senior Software Developer, Educational Videogames for Children

2017-10-01 - 2019-09-30

Unity, C#, AWS, JavaScript, Python, SQL

Taal Extra: Tech lead delivering new product line, on time and budget. Involved in requirements capture with external partners, designed the system, broke design work into work packages, and led a team of three developers to build the system.

Development: Individual contributor. Worked on tickets across the stack, which involved an HTML 5 JavaScript game player, the Unity mobile game client, and the shared Python backend.

Red Bull Technology

Analyst/Developer, Formula 1 Racing

2012-01-04 - 2013-08-01

WCF, C#, WPF, MS Unity, SQL

Test Spec: Full life-cycle responsibility for multi-user system. Requirements capture, system design, implementation. Introduced database migration tooling and iterative development.

AeroServer: Individual contributor. responsible for database development, DAL, GUI and API to vehicle telemetry systems. This software was successfully deployed track-side at Formula 1 races.

Her Majesty's Government's Communications Centre

Software Engineer, Government Engineering Contracts

2004-01-04 - 2011-12-14

C#, WinForms, Custom protocol development, SQL

Radio system: Lead developer and designer for a set of .NET WinForms applications to control a bespoke radio system, allowing the user to configure the radio, send and receive data, and analyse results. Part of a multi-disciplinary team that included RF engineers, embedded software developers, and end users.

Command/Control system: Developer for a .NET WinForms and SQL Server internet facing system that provided command and control for various disparate internet facing appliances. Part of team of six software developer of varying skill and experience. Introduced static analysis, automated unit testing, and pair programming to the project.

ETL system: Lead Developer for a data export system that connected two UK Government departments. Introduced staged delivery of software to test team, in order to get faster feedback on project progress.

Education

University of Liverpool

Computer Information Systems, BSc (Hons) 2:2

1997-09-01 - 2000-06-01