|2016 – Present
|Freelance software engineer
Freelance software engineering contracts, usually full-stack web technologies using React frontends and Kotlin or Java backends with ElasticSearch and PostgreSQL databases. This includes a complete three-sided marketplace platform built from scratch for Sagetap.
Various contracts for iOS, using Swift and Objective-C. This includes two iPhone apps built completely from scratch — Unitive's eponymous app, and Food Kit by Diabetes Labs — and a significant second version of Aleatoric's PrimaVista.
Other contracts included DevOps, continuous integration, and infrastructure work with AWS, Docker, and Python.
Testimonials from Upwork projects:
”Ewan is an extraordinary engineer, without a doubt the strongest we've ever worked with. We hope to work with him again in the future.
When he was tasked with building a Swift library for a complicated and esoteric problem domain, and he went above and beyond to make himself an expert in the relevant topics, reading textbooks and consulting library authors.
When he was asked to build functionality atop a notoriously complicated and hard-to-understand API, he quickly figured out how the API works and improved our code in the process.
He followed all best practices: writing an impressive test suite, documenting everything, writing readable and efficient code, and making our code cleaner and more efficient.
He is an excellent communicator, and easy to work with.
He took an interest in our long term business goals, and made sure his work was always aligned with that.
Anyone would be lucky to have Ewan on their team.”
“Ewan was honest, thoughtful, punctual, and gave me invaluable advice throughout my project — he has essentially ruined my ability to tolerate mediocre work!
His academic background is a terrific asset, so if you need a difficult problem solved, he's your man. I am not technical AT ALL, but he never made me feel stupid; he just patiently explained how whatever the thing was worked and suggested how the issue the thing was supposed to solve might be done more efficiently and with a better result. I can't recommend him enough!”
“Ewan was a delight to work with, he was clear, concise, timely and efficient. He was also flexible given our engineering is in different time zones and we worked across holiday travel schedules.”
“Great work and completed a project in one week which others were quoting at 2+ months. Excellent developer and all around good guy.”
|2012 – 2015
|Founder and chief architect
Tipbit was a startup based in Seattle and San Francisco. We built an email, calendar, and contacts app for iPhone and iPad, with search, indexing and management services running in the AWS cloud.
I implemented the initial prototype from scratch, designed and architected the complete solution, hired, built and led the engineering team, and joined that team as a software engineer on both client and server software stacks.
We used Erlang, Objective-C, Java, Python, ElasticSearch, OpenNLP, Jenkins, Git, Logstash / Kibana, and lots more besides.
|2005 – 2012
|Director, Cloud Platforms
I was one of the team of people who built Xen and XenServer at XenSource, both before and after our acquisition by Citrix. I built the XenCenter product and team from scratch. I went on to lead the XenServer App Group, adding ecosystem and partner integration including our relationships with Dell and HP, our SDKs, and our cluster automation software.
I was responsible for developing XenServer’s engineering strategy for cloud software, including supporting OpenStack from its very first days. I built a twenty-person team from scratch in three countries — UK, USA, and India — developing our own OpenStack distribution.
The Xen hypervisor now powers many of the world’s largest clouds, including AWS and Rackspace.
|1998 – 2001
|BA (Hons), MA (Cantab)
|University of Cambridge
Graduated with first class honors, with a final year slanted towards compiler engineering, type theory, and computer language design.
Sagetap is a three-sided marketplace that connects subject-matter experts with product design and sales teams, mediated by a team of marketplace professionals. Product teams use Sagetap to measure and quantify their product sales strategy and continuously iterate and improve their product-market fit.
I was hired by the founders just a few weeks before the global COVID-19 lockdown. Through the pandemic I worked remotely with them, building the entire software platform from scratch, and then hiring a founding team of engineers as it grew.
The web frontend was React, with three alternate user interfaces running over a common API and model layer. The backend was written in Kotlin, with a web-facing tier and backend microservices all running on Amazon AWS.
Full-text transcript search was implemented on top of ElasticSearch, with backend integration into Zoom for video calling, and Rev for speech-to-text transcription.
We used Twilio and SendGrid for SMS- and email-based platform notifications and multi-factor auth, plus authentication using Sign in with Google and LinkedIn.
Our dashboards were primarily custom, using in-house and external designers. We used React, MUI, Chart.js, Lottie, and dozens of other open-source libraries. For dev and test we used Storybook, Jest, Cypress, and React Testing Library.
I hired, trained, and managed engineers to build out a team alongside me. The first year of development was solo, then we bridged with some offshore development before hiring our permanent engineering staff.
I handed over to an engineering manager with an in-house full-stack development team set up for permanent remote working. Sagetap closed a $4.5M second seed round on the back of the software and team that we built.
PrimaVista is an app for iPhone and iPad that teaches and trains musicians in sight reading of musical scores. It listens to you practice, shows you when you're playing the right notes and when you're not, and continuously generates new music for you to practice, tailored to your skill level.
I built Aleatoric's new rendering system from scratch in Swift, using rendering primitives for the staff systems, notes, barlines, and so on, and overlaying SMuFL glyphs for the clefs, rests, accents, articulations, and other marks. The integrated score renders to CALayers, which are then scrolled inside PrimaVista as part of its training feature, and which are also rendered to disk to form the integration test suite.
PrimaVista includes feedback during training, based on what the user is playing. To do this successfully, it includes a low-latency audio processing pipeline, so that we can listen to the user's performance and give immediate feedback regarding the performed pitches.
I rewrote the audio processing pipeline in PrimaVista, using iOS's low-level audio interfaces through AudioUnit and RemoteIO to get the lowest latency access to raw audio samples. This included handling the runtime sample rate change that is performed by some iPhone models when switching from headphones to speakers, which is critical for pitch detection systems.
With Tipbit we placed “people” at the center of the design. Every email and calendar screen puts the people involved at the user’s fingertips, and offers simple jumps to previous conversations, interactions, and search.
Searching in Tipbit uses a combination of on-device database views, server-side full-text indexing hosted in the AWS cloud, and parallel queries with a local reconciliation. This gives sub-second initial response times while still being able to use deeper analysis in the cloud.
Food Kit tracks food intake, calories, and nutritional content, for diabetics or other people with need for such detail.
I built this app from scratch in Swift, and delivered it to the App Store.
The app includes detailed data sync between Health Kit, user entries, and data published by other apps to the Diabetes Labs server. It includes a compile-time import of nutritional data from USDA datasets, generating a SQLite database for use at runtime.
XenCenter is the friendly face of a set of rich, complex, and arcane hypervisor features. Targeted at Windows IT professionals, we exposed technologies rarely seen beyond a Linux command line and re-presented them in a way that IT pros could address.
Since all our features had to scale up to large clusters, we developed the UI, API, and SDKs in parallel, so that anything that could be done manually in the UI could be scripted by the admin in production.
|2002 – 2005
|Chief software architect and Director
RaMedia was a start-up media company founded in the UK to develop a novel approach to memory-reliant gaming.
As the sole technical member of staff I was responsible for every aspect of software design and architecture, documentation, coding, and testing. As one of the company directors I was jointly responsible for all aspects of the business, including strategy and fundraising. We developed with both PCs and mobile telephones as target platforms, and used our key technology to produce a game for foreign-language learning for pre-teens through to adults.
|1997 – 2002
|Software architect and team leader
|One year full time, three part time, one full time
|FutureTV née Nexus Electronics
FutureTV developed a scalable, personalized interactive video-on-demand solution for consumer and hotel television systems. I was responsible for the concept and architecture of significant elements of the FutureTV product set, and involved with numerous others, including server-side cluster management, video streaming, client-side OS and rendering engine development, and language design.
I joined FutureTV before entering the University of Cambridge, and stayed with them throughout my degree. In my final year there I managed a team of three working on user interface design and development.