George Crawford Principal/Lead Software Engineer
I am a focussed, committed and empathetic software engineer with a wide variety of passions and skills. I pride myself on my ability to solve problems across the gamut of engineering domains, to learn quickly and to communicate accurately, honestly and productively.
Following a successful career as a classical violinist, I switched to become a full-time software engineer in 2011. I have matured into a precise, detail-oriented and astute problem-solver, trusted as technical lead for cutting-edge projects for the Financial Times and The Economist, and as the most senior technologist as Just3Things.
Working alongside founders, VPs and CEOs, I have helped shape product strategy and company vision, and have led in a whole spectrum of technical disciplines. I strive to be pragmatic, empathetic and kind, to embrace the web and the technologies which underpin it, to be the first to offer help and support, to learn from those more knowledgeable than myself, and to transfer the best of that knowledge to my colleagues.
- Application Development
- API architecture (Node.js, PHP); REST vs. GraphQL; monolith vs. microservice; relational database design (MySQL & PostgreSQL); offline-capable and embedded/native web apps; JS compilation, bundling, code-splitting; JS frameworks (Svelte & SvelteKit, AngularJS); network optimisation and performance; caching strategies
- Infrastructure & DevOps
- Infrastructure-as-code (Terraform); orchestration (Kubernetes, Helm, Docker); Google Cloud (GKE, IAM, DNS); CLI tooling (oclif); CI/CD (GitLab, GitHub); observability (Sentry, Grafana, Prometheus); CDNs & Serverless; DevOps & team productivity
- User Interfaces
- Typography, balance and visual harmony; semantic HTML; modern CSS; progressive enhancement; rendering performance; design tokens and component libraries; data visualisation; SPA/MPA/SSR tradeoffs
- Product Development
- Information architecture; UX ‘double diamond’; prioritisation frameworks; ‘buy vs. build’; Shape Up; Scrum/Kanban; data-driven product development; A/B testing; long-form communication; knowledge sharing & documentation
Roles & Responsibilities:
- Software Development Lead
- Service and API design (Node.js, Express.js, GraphQL, Redis, PostgreSQL); authentication (Google & Azure SSO, passwordless, 2fa, SAML/SOAP, OAuth2); front-end (Svelte & SvelteKit; migrating from AngularJS/Parcel/Sass/Babel); API integration (Google, Microsoft, Trello, Jira, Slack, Zapier, Mandrill, Webflow); testing: (Playwright, Svelte Testing Library, Vitest, Chai, Mocha, Sinon, Supertest); code review; security audits; tech spikes & design documents.
- DevOps Engineering
- CI/CD configuration (GitLab, Google Cloud Build, Google Container Registry); dev tooling (docker-compose, Nginx, dnsmasq, Vite, Parcel); feature flags (LaunchDarkly); process automation; monitoring (Prometheus, Grafana, Google Cloud Monitoring); error tracking (Sentry, Slack chat-ops, PII anonymisation); logging.
- Infrastructure Engineering
- Infrastructure design and implementation (GKE, GCP); containerisation & orchestration (Docker, Kubernetes, Helm); infrastructure-as-code (Terraform); networking (Google Domains, Google DNS, NGINX Ingress Controller, Let's Encrypt, Cert-Manager); disaster recovery; process isolation; uptime monitoring; pod autoscaling; IP access control; email routing; database automation & provisioning.
- Data & Analytics Engineering
- Data-lake and data-warehouse provisioning (Hevo data pipeline orchestrator, append-only CDC, BigQuery); database design and maintenance (PostgreSQL); analytics (Google Analytics, Pendo, FullStory); data research & analysis (Google Sheets & Airtable, custom SQL reports); data visualisations (Cytoscape.js, D3.js, Highcharts).
- UI/UX & Product Development
- Research, prototyping & wireframing (Miro, Figma, Excalidraw); product vision, strategy & prioritisation, team efficiency improvements; product development workflow support.
- Leadership and Line Management
- Line-managed, coached and mentored five engineers; career progression & evaluation; code reviews & pair programming; Technical Strategy meetings.
- CTO-level responsibilities
- Pen-tests; CISO/GDPR questionnaires; technical pre-sales & account management.
- Growing the engineering team (2021‑2)
- Co-lead on many interviews for roles in Engineering, UX & Design and Product. Worked closely with VP of Product to define new roles, write JDs, lead interviews and summarise findings, onboard new starters.
- Front-end framework migration (2021)
- Initiated and led on a migration from AngularJS 1.8 to Svelte and SvelteKit, in response to multiple driving forces (slow rendering, content layout-shifts, poor RUM data, low developer productivity, and the security concerns of AngularJS reaching End-Of-Life).
- Data lake & warehouse (2021)
- Researched and implemented PostgreSQL to BigQuery data pipeline (PostgreSQL CDC via WAL, Hevo data pipeline, BigQuery data lake, BigQuery views & Python transformations to provide data warehouse) in order to capture changing data in our application, and provide insights both to the customer and to drive feature development.
- Network graph visualisations (2020)
- Implemented a network graph visualiser for goals, teams and users using Cytoscape.js and d3 layout algorithms. Frequently referenced as a ‘wow’ moment in demos, and remains the only way to see the relationships between all the goals, teams or users in the system in one glance.
- Single-Tenant architecture (2020)
- Infrastructure migration to Terraform to improve disaster recovery, and to allow dedicated single-tenant environments to be provisioned for new enterprise customers. Designed, implemented and tested enterprise-grade process/application/data isolation, auditing & log retention, IP-limiting and VPN access, SAML integration, WAF.
- Introducing Shape Up (2019)
- Introduced my team to Shape Up, helping us focus on the business and user problems to be solved, to better evaluate trade-offs, and to deliver more meaningful features at a more predictable cadence.
- Front-end asset pipeline (2018)
- Migration from Gulp/Babel to Parcel Bundler, giving significant benefit to our developers (faster compilation and HMR) and our customers (code-splitting, asset hashing and improved caching).
- Infrastructure & CI/CD migration (2017)
- Tech lead on infrastructure migration from AWS Elastic Beanstalk to Kubernetes on GKE, including monitoring (Prometheus & Grafana), Helm charts, Docker upgrades, SSL provisioning. Led migration from GitHub to GitLab, improved CI/CD pipelines, CLI tooling (Bash & JS) and local dev setup (Minikube and docker-compose).
- Financial Times Distributed Content Team
- Implemented ‘distributed content’ channels for the FT’s articles, including Accelerated Mobile Pages (GitHub) and Facebook Instant Articles (GitHub).
- Data analytics migration
- FT web app
- Developer on the FT’s widely-respected web app. Extensive and varied contributions, including API specification and implementation, caching (Memcache, Varnish, Akamai), data analytics (Splunk), CSS & JS framework, UI design, performance optimisation, automated acceptance testing.
- Economist web app
- Lead Developer of The Economist’s web app, from initial concept in 2011 to the eventual handover to the company in 2015. A groundbreaking product, featuring an offline-first, custom-built JS client (ApplicationCache, WebSQL, IndexedDB) and a custom-built PHP/MySQL backend. Lightweight ‘platform-native’ wrappers for Blackberry OS, Windows tablets, Kindles and an installable Chrome app. Fully involved in all levels of the project: sysadmin, software development & architecture, project & stakeholder management, design & typography.
- Typography, CSS layout & Open-Source
- R&D to improve web typography (e.g. investigating font metrics, also a GitHub project) and columnar layout. Created and maintained FTColumnflow, adopted by our apps for The Economist and the FT. Also a core contributor to a multitude of open-source libraries published by the FT and FT Labs (FastDom, FTScroller, FastClick, FTFruitmachine).
- Automated testing improvements
- Worked with the QA team to improve our automated testing suite. Extensive contributions to WebdriverIO (becoming a member of the core team). Migrated our on-device Appium and Webdriver tests running on real Android and iOS devices to a much more reliable and resilient system, and one which our application developers and QA engineers alike felt they could understand and contribute to.
Freelance Web Developer: 10 years (2002—2011)
Bespoke websites for small organisations and individuals (PHP, MySQL, JS). A wide range of open-source contributions, including Mail2Forum, Zend Framework, and SwapMyVote (a tactical voting tool). Academic projects in collaboration with Goldsmiths & Queen Mary, University of London (OMRAS and ECOLM ).
DevelopMe, Bristol—Course Tutor: Feb 2019
Course tutor for DevelopMe's Coding Fellowship, responsible for lecturing, 1:1 tuition and mentorship across the ‘Authoring Tools & Processes’ and ‘Programming Languages: PHP’ modules.
Violinist: 20 years (2002—present)
Historically-informed performances on Baroque and Classical period instruments. Extensive touring across Europe, Asia, North and South America. Hundreds of concerts in top international venues. Recorded dozens of CDs, winning Gramophone and other awards. Founder and Director of period-instrument ensemble Battuta. Founder of the Hackney Proms charity, producing high-quality, family-friendly concerts. Produced, promoted and directed 13 family-friendly concerts in the Hackney Empire Theatre and Stoke Newington Town Hall, London. Peripatetic violin teacher for the Hackney Music Service.