Solutions Architect
Over 30 years in enterprise software — presales, solutions architecture and product strategy — alongside personal software projects.
Solutions architecture projects with a focus on business intelligence, data analytics, and applying technology to real-world problems.
A desktop application that bridges SAP Business Data Cloud — Datasphere and SAP Analytics Cloud — with Silwood Safyr, the enterprise metadata-governance tool.
It brings SAP BDC metadata into an organisation's existing Safyr-based governance, lineage and impact-analysis practices without manual re-keying. The whole extraction runs from a guided GUI, so data-governance teams can self-serve rather than commissioning developers or one-off scripts.
Under the hood it unifies three distinct API surfaces — OData XML, REST JSON and the Datasphere CLI — into a single normalised schema, written to a database in Safyr's exact import format. Built with PyQt6, SQLAlchemy and Pydantic v2, and packaged with PyInstaller as a self-contained Windows executable that needs no local Python runtime.
Open-source utilities and learning exercises on GitHub, each highlighting a specific technical area.
Command-line tic-tac-toe implementation — a small exercise in game-state modelling, win/draw detection, and turn-based input validation.
View on GitHubDesktop app for adding text, logo, or tiled watermarks to images — with a live preview, drag-to-place positioning, and threaded batch processing.
View on GitHubDesktop typing-speed test with real-time WPM and accuracy tracking — correct and mistyped characters are highlighted live as you type, with a timer that auto-starts on first keystroke and a restart button to load a fresh passage.
View on GitHubClone of the classic 80s arcade game, built with Python’s standard-library turtle module — paddle-angle ball steering, smallest-overlap brick collision to bounce off the correct face, and endless speed-increasing levels at a manual ~60 FPS render loop.
View on GitHubA multi-user task manager built with Flask — each account gets its own private, session-authenticated list. Todos carry due dates with overdue highlighting, priority levels and category tags, and can be filtered by status, text search or priority. Backed by SQLite via SQLAlchemy, with CSRF-protected WTForms and hashed passwords throughout.
View on GitHubA writing app that punishes hesitation — inspired by The Most Dangerous Writing App. Pick a time or word target and keep typing; stop for more than five seconds and your words fade out and are wiped. A Flask backend serves the page, but all the timing, fading and wiping run client-side in vanilla JavaScript, so the draft never touches the server and lost words are truly gone. Built as Day 90 of the 100 Days of Code Python bootcamp.
Live Demo View on GitHubA command-line tool that turns a PDF into speech — read aloud or rendered to a WAV audio file. Text is extracted with pypdf and cleaned so it reads naturally (hyphenated line-breaks rejoined, paragraph breaks turned into pauses), then voiced offline with pyttsx3 — no API key or network needed. Supports page ranges and adjustable rate and volume. Built as Day 91 of the 100 Days of Code Python bootcamp.
View on GitHubA Flask website that finds the most common colours in an uploaded image and shows them as a palette of copyable hex swatches, each labelled with the percentage of the image it covers. Colours are extracted with Pillow using median-cut quantization; uploads are processed in memory and never written to disk. Built as Day 92 of the 100 Days of Code Python bootcamp.
View on GitHubThe classic arcade shooter, built in Pygame and compiled to WebAssembly with pygbag so it plays right here in the browser — the same Python runs on the desktop and on the page, no install. A 5×10 alien fleet marches side to side, drops a row and accelerates as you thin it out, raining bombs from its front line while you shoot back for a row-tiered score. Every sprite is drawn from pixel-art bitmaps at runtime, so the game ships with no image files. Built as Day 95 of the 100 Days of Code Python bootcamp.
Live Demo View on GitHubA bot that plays the Chrome offline dinosaur game by watching the screen — no browser automation, no reading the game's memory. Sixty times a second it captures a narrow strip of pixels just ahead of the dino, re-checks whether the game has flipped to night mode, and counts the pixels contrasting with the sky; enough of them means a cactus is arriving, and it presses jump. The strip drifts steadily forward so the bot reacts earlier as the game accelerates. Built as Day 94 of the 100 Days of Code Python bootcamp.
View on GitHubA personal research tool built around UCL's Legacies of British Slavery database — a core source for my postgraduate genealogical research. It maintains a local working copy so records can be re-examined and cross-referenced offline, with coverage reconciled against the site's own listing counts rather than assumed.
Over 30 years in enterprise software across presales, solutions architecture, consulting, and product strategy — taking emerging technologies to market for blue-chip clients including Deutsche Bank, Barclays, BP, BT, SocGen, Nationwide and Tesco.
Working with ISVs, VARs and VC advisory firms (incl. Guidepoint) on solution design, value engineering, and go-to-market strategy. Currently focused on the SAP Analytics Cloud, Datasphere and BDC ecosystem.
Solution design for Safyr metadata-discovery tooling, surfacing SAP, Oracle and Salesforce application metadata for data integration and migration projects.
Software and services helping Telco, FS and manufacturing clients consolidate virtual and physical infrastructure to meet legislative and efficiency targets.
DCIM solutions for SocGen, Nationwide, Experian and Amadeus.
Led EMEA presales for the Adaptive Cloud Suite, partnering with HP and IBM and delivering for Barclays Capital and Deutsche Bank.
IT process automation. Notable engagement: BP — $850k licence consolidating 18 management tools and reducing fulfilment time from months to days.
Most profitable EMEA team per head within the company (Q3 FY06).
Lead sales engineer for Telewest (£1.5m+); £6m+ in licence revenue closed in 2002.
BI presales for BT, Barclays, CSFB, Tesco and Rolls Royce. Technical Account Manager for British Airways.
Interested in a technical project or advisory engagement?
Get in Touch