Hello! I'm Stefan, a software developer with 15 years of experience. Originally from New Zealand, I currently live in London, England.
- A pragmatist with a strong track record of building practical solutions to complex problems
- An exuberant team player who believes that everyone has something to contribute
- Committed to building ethical software that improves our world, nation or community
- Equally comfortable working with clients, leading teams and mentoring teammates as I am building software
- Experienced in working remotely across multiple time-zones, disciplines and cultures
- A fan of functional programming, but more interested in the problem being solved than the language it's solved in
- Prior to that I worked on an open source offline-first web app using AngularJS / PouchDB / NodeJS / CouchDB / app cache / service workers
- Prior to that I worked in Scala / Java / MySQL
- Dabbled in Clojure and Rust
Two recent codebases I've worked on that you can check out on GitHub:
Sanremo, A Recent Personal Project
Sanremo is a React / Redux / MUI based offline first web app, written in JS / TS. It uses PouchDB on the front end and a combination of custom sync code and socket.io to push data to a postgresql db on the backend.
Sanremo has a few goals:
- Build a simple tool that lets me easily create repeatable checklists, inspired by the use of aviation checklists by pilots
- Be an excuse to write something non trivial using some tech that I hadn't had a chance to use professionally
- Investigate some performance and stability issues between PouchDB adapters
- Practice coding with my voice, as an rsi mitigation strategy
Medic, The Last Five Years
Medic's work is almost entirely open source: code, PRs, tickets and many design documents (if linked in tickets) are available. The bulk is against the medic/cht-core repository.
Cht-core is the core framework of the Community Health Toolkit: a responsive offline-first web app designed to run on cheap android phones, a back-end api that supports it, and a back-end message processing engine.
For code contributions, you can see a list of my branch merges here. Note that Medic employs a deliberately restrictive merge to master policy. All testing, rework, design discussion etc happens in a branch, with a squashed merge to master indicating that the feature or fix is complete and ready for production. This policy, combined with squashing merges, results in a cleaner (but sparser!) commit log.
For ticket contributions you can see a list of tickets I've contributed to here.
2015-2020: Senior Software Developer & Engineering Manager @ Medic (UK remote)
Medic is a non-profit that "designs, delivers, and supports world-class, open-source software for health workers providing care in the world’s hardest-to-reach communities."
- senior software developer, later also the engineering manager
- worked remotely, collaborating with co-workers in a dozen different time-zones
As senior software developer:
- responsible for maintaining and improving a complex and highly configurable application with severe design, performance and user education constraints, often as part of a very small dev team, supporting tens of thousands of users with millions of monthly interactions in 16 countries
- responsible for design, coding, PR reviews, planning and scheduling, etc, from conception to production
- travelled to Uganda, Kenya and Nepal, working with local team mates and users to make sure the software accommodated their unique situations
- worked as a cross-discipline adviser and technical liaison on over a dozen internal projects concurrently, keeping track of the problems they were trying to solve and advising and directing from a core product perspective
engineering work is a team effort, but here are some recent efforts I was deeply involved in:
- replaced entire deployment toolchain with entirely new (but backwards compatible) tools, solving oodles of bugs and reduced deployment downtime exponentially.
- built (initially via a week-long in-person TDD exercise) a low impact and intentionally replaceable telemetry solution that solved the immediate problems we had, overcoming hesitancy and complexity around off the shelf solutions.
- a feature that let custom deployers configure dynamic, programmatic but safe data integrations with external services. Configurable with JSON / JS, it let you write expressions or code to send data externally and safely, allowing for custom configurations to not rely on core development to move at their pace
As engineering manager
- Ran people management for the dev team, and people management and team leadership of the devops and QA teams
- Managed about a dozen engineers (1v1s, quarterlies, annual reviews, adhoc technical and personal support), while also continuing to contribute software engineering work
- Mentored junior developers through extensive one-on-one pairing, often daily and at their convenience
- Brought effective backlog management to the devops and QA teams. This enabled devops to finally clear their exploding support backlog, more reliably provide timely support going forward, and find time to work on improving core infrastructure
- Led a large engineering hiring round (and co-ran others): designed the take home coding exercise, reviewed hundreds of CVs, dozens of take home results, and performed a dozen or so interviews with candidates.
2013-2015: Software Developer & Team Lead @ Movio (NZ, UK remote)
Movio produces "data-driven marketing solutions for the film industry".
- Senior software developer and team lead
- Primarily worked on and was team lead of Movio Cinema's in-production stack. Movio Cinema is an analytics and email / sms marketing platform for cinemas. Scala / Akka based, with legacy LAMP stack components
- Additionally: led the prototype for their second product: Movio Media, a analytics platform for studios; was rewarded a fancy dinner for my partner and I for working especially hard; was rewarded a trip to Rarotonga for my partner and I for working even harder
2012-2013: Software Developer @ Foster Moore (NZ)
Foster Moore are "the world experts in electronic registries."
- Java developer supporting registry deployments in The Cook Islands, New Zealand and Canada
- Helped modernise development methodologies (agile, branching strategies, reproducible environments etc )
- Led and worked on a team to develop a small custom registry from scratch using modern (at the time!) Java technologies
2008-2012: Java Developer & Implementation Consultant @ Orion Health (NZ, US, ES)
Orion Health is "an award-winning, global provider of healthcare information technology advancing population health and precision medicine solutions for personalised care across the entire health community."
- Java Developer working on various modular (OSGi) applications built to manage sensitive patient data, including a custom configurable clinical data repository
- Implementation Consultant based first in Santa Monica, US then Majorca, Spain. Responsible for working on in-production implementations of Orion's products, building prototypes / pre-sales
- Additionally: led 2012's Connectathon team; won a duck (!) spiking a web component framework for an internal competition; blogged and wrote internally; built a 20% time code search tool that ran orders of magnitude faster than their existing tooling
2006-2008 Software Developer & Solnet Solutions (NZ)
Solnet Solutions is "a leading provider of technology innovation for government and private enterprise, specialising in the development of solutions using open source technologies."
- Java / .NET / Eclipse RCP / Ruby / VBS (!) developer working on a range of products and solutions for a large variety of clients, mostly insurance or government departments (education, health)
- BSc Computer Science, University of Auckland, 2003-2005
- Senior prize winner in 2005
- Comfortable in Windows, MacOS and Linux, currently Windows+WSL2, have daily driven all three in the past.
- Have used git since 2013, SVN and CVS in the past
References available upon request.
I'm not on social media much, but there are more links to me around the web at https://sdufresne.info.