AI & LLM tooling
RAG, embeddings and vector search, MCP servers, agent pipelines and LLM features in production, across Claude, Gemini, OpenAI and local models.
Senior engineer, shipping software since 1986. Scala, TypeScript, Python and LLM tooling today; C, C++ and plenty of Java before that. I build backends, full-stack products and AI features, and I pick up whatever the job needs.
Backend, front end, data, integration, AI and tech lead: I’ve done most of it, in most of the languages that mattered at the time. What doesn’t change is functional thinking, small sharp code and finishing what I start.
RAG, embeddings and vector search, MCP servers, agent pipelines and LLM features in production, across Claude, Gemini, OpenAI and local models.
Modern web products end to end: React and Next.js in front, Bun or Node with Elysia behind, deployed to the edge.
Typelevel and ZIO stacks, Play and Akka, and Java since 1996. New services, upgrades and the refactoring that makes a codebase pleasant again.
Electronic trading, risk and derivatives messaging for hedge funds and investment banks, plus serious XSLT and XQuery for finance and publishing.
Contracting through my own company, Felstar Ltd, since 2000. The CV has the full detail.
Document management for the construction industry (xmitted.com): a TypeScript stack on Cloudflare Workers, with RAG and LLM features built on Gemini and Claude.
Front-office technology for a hedge fund: electronic trading, risk analytics and portfolio management. First hire on a new OMS team. Two engagements.
Microservices behind credit scores, loans, credit cards and car finance.
Identity verification for Government Gateway, across 20+ microservices. Two engagements.
Launch of talentclub.house, a GDPR- and COPPA-compliant site for young creatives.
GDPR automation: subject-access and erasure requests fanned out to 20+ systems, and a Python codebase ported to Scala.
Help to Save and Tax-Free Childcare: features, code review, major refactoring and the move to Play 2.5.
Train ticketing.
Proof of concept for an out-of-home advertising platform.
A 3D bookstore built on Amazon data.
EMIR delegated reporting for the Data Services Layer, via Oracle Consulting.
Pingit for corporates, a strategic mobile payments platform.
Unifying the UK government gazettes into The Gazette: an HTML5 UI in XSLT 2.0, plus an XForms engine.
Real-time trade bus migration: changed the on-the-wire FpML for 60+ instruments without breaking anything downstream.
Replaced manual and Excel-based procedures with an Ajax web UI.
FX and FX options front office.
XQuery transforms mapping derivative trade messages onto a new canonical format.
Imported multi-gigabyte Thomson data feeds into Oracle, before and after the merger.
Risk analytics platform for credit derivatives in the synthetic CDO market.
Two decades before this list begins: C and C++, then Java from 1996. Ask me about it.
Dino was my first hire on the new OMS team I had to build. He quickly learnt the architecture and data flows and even spotted issues with the specification for new work (the trader was wrong!). He helped on-board the new team members, contributed Scala code through the entire stack and could pair or work independently to deliver solutions. A great team member who I would enjoy working with again.
Dino is hands down the strongest developer that I have met. Why is that? He does not rest on his laurels. Dino seeks and finds the truth.
Define a problem space, then solve that problem effectively. Thus his work reaches the sweet spot of being precisely what it needs to be. Hire a professional, cry once.
Dino offers his wisdom to those willing to grow. His advice is insurmountable to my growth as a programmer and individual.
His depth of expertise will benefit any project. I look forward to working with him in future.
Working at Caxis, Dino produced Scala code of a consistently high quality – a true talent. Generous with his knowledge, honest with his feedback. This wasn’t the first time I’ve worked with Dino, and I would gladly work with him again.
I was particularly impressed by Dino’s ability to handle and manage a high amount of work on such tight deadlines and has always delivered, but also the ability to juggle his workload and to support other members of his team, this showed that he made a dramatic difference in the teams productivity level. This seemed to come very naturally to him.
Without Dino and his Scala skills, there would have been so much we wouldn’t be able to deliver on time and up to such an amazing standard.
We kept Dino’s contract for almost 2 years till the end of the programme for his knowledge and wealth of experience. We tried to tempt him to join other projects, but Scala has spoiled him compared to other languages. I would certainly employ Dino again.
Dino is an exceptional developer with a forward looking and analytic mind. He went though all the requirements and identified the items that were incomplete or conflicting. His experience in Scala and XML is exceptionally valuable. The insights and value that Dino brought to the team were invaluable. It was a pleasure to work with Dino.
Dino is an avid developer, with a great understanding of Scala. He’s constantly looking to develop his skillset and challenge himself, despite his extensive experience. He’s a great contractor who delivers results and has an eye for detail. I’m looking forward to working with him again one day.
I’ve had the pleasure of working with Dino for a few months and watching him grapple with the complexities of the software that my team curates has been something of a treat. I found that he was both effective and conscientious. His contribution boosted our team’s effectiveness immeasurably.
I’ve worked with Dino before and he helped me get hired here. Dino was very helpful onboarding me as he’d worked extensively on the codebase. Dino is a top quality Scala Developer with a massive amount of real world I.T. experience and a strong knowledge of many technologies. He would be an asset to any team.
I worked with Dino on 2 separate Scala & Play Framework projects within Atos. Dino’s Scala knowledge really helped the team as a whole, providing specialist knowledge to us as well as suggesting and implementing code improvements to make our code more readable and efficient. Dino’s skills and ability to assist others with his knowledge of Scala and the Play Framework would be of great benefit for future employment and his colleagues.
Dino worked on Scala project for us for 3 months. The client was based in a remote area of Scotland and so Dino had to travel up there initially and then undertake the work remotely from home. Dino was reliable and trustworthy producing high quality work 99% of which he was not onsite for and was working under his own volition.
Despite this the client also noted as well as the high quality of work produced Dino also integrated well into the team. Pleasure to work with, and I hope to work with Dino again very soon.
Dino was ready to take on tasks within a couple of days of joining the team. This was a marked contrast to several others that joined the project. … He is intelligent and has very good developer habits (config control, code style, tests etc).
Dino was one of several contractors to join a mixed skills development team on an initial contract of 3 months to support the closing stages of a project. I’m one of the team leads on the project, that means I do more management than programming.
Having followed the joining instructions and set up all the necessary software tools and dependencies with minimal fuss, Dino was ready to take on tasks within a couple of days of joining the team. This was a marked contrast to several others that joined the project.
The project consisted of a number of related web portals (over 200 unique pages) and the service layer to provide the data storage and complex business logic to support them. The portals were built using Scala on Play framework, the service layer (which Dino didn’t work on) was built in Java using a Redhat stack.
Dino initially took on the challenge of restructuring the web portals to reduce the complexity of the builds and to factor out some of the common/repeated code into more reusable modules. This was carried out as a series of Stories over a couple of 2 week Sprints and significantly improved the state of the code base.
Some of his other tasks included:
- changing the API’s between the portals and the service layer to resolve issues with stored data and user friendly presentation of previous user selections
- updating HTML/CSS for a better user experience on mobile devices
- numerous minor bug fixes and miscellaneous tasks
The final piece of work Dino carried out was to upgrade all the portals from Play 2.4 to Play 2.5. This was a significant task due to fundamental changes and deprecation’s in the Play framework. Again this was delivered with no fuss, just a few jokes along the way.
As it turned out the expected loss of 4 staff did not happen and so Dino was no longer required. So, is Dino the perfect contractor, no – but then who is? He is intelligent and has very good developer habits (config control, code style, tests etc). Dino is able to research techniques and tools that he has not used before and then apply them effectively with the added bonus of his years of experience. On the other hand, working remotely on large tasks, he can go quiet for long periods – it would be nice to get progress updates a little more frequently.
Working with Dino has been easy. He has taught us a few tricks and I think all parties have benefited from the experience. Ultimately, if I was in need of extra staff on another project I wouldn’t hesitate to request Dino.
Mostly from the last couple of years. Plenty more on GitHub, Hugging Face and in my gists.
A personality questionnaire built as a PocketFlow node pipeline, with an LLM analysing the answers.
Finds people in CCTV footage with OpenCV, has an LLM describe what they’re doing, and builds browsable HTML viewers.
An MCP server built with FastMCP and deployed to Hugging Face Spaces without Gradio.
Piano audio in, MIDI out, using a PyTorch transcription model.
Watches a Gmail inbox, classifies new mail with a Hugging Face transformer and moves the spam out of the way.
A collection of small LangChain applications: retrieval with ChromaDB, Hugging Face and OpenAI models, Flask front ends.
A full-stack starter on Bun 1.3: Elysia API and React, bundled by Bun itself with no Vite or Webpack.
End-to-end type safety from API to UI with Elysia and Eden Treaty on Node, React via Vite.
Search across YouTube video transcripts and jump straight to the right moment.
A 2D horde-survival roguelite with weapon fusions and meta-progression, in React and TypeScript.
Motion-graphics experiments in Three.js, built with Claude Code.
Neon Ouroboros, a cyberpunk take on Snake, in Flutter with the Flame engine.
Also lately: games in Go with Ebitengine and Cogent Core, a Gin web app, Kotlin with Jetpack Compose, Rust in an 11 MB Docker image, Pygame running in WebAssembly, and VHDL on an FPGA.
Scala & functional programmingScala.js bindings for Vue.js, with an example application.
A ZIO 2 REST service covering zio-http, zio-json, Quill, streams, caching, actors and OpenAI.
XQuery for Scala.
FS2 and ZIO streaming: file IO, moving averages, queues, an echo server and a REPL.
Actor-model examples on Cats Effect with cats-actors.
An http4s server with a range of example endpoints.
Paper in the XML London 2014 proceedings.
Article for xml.com.
Contracts through Felstar Ltd: outside IR35 and fully remote. Scala, TypeScript, Python, AI or something else entirely; email is the quickest way to reach me.
dino@felstar.com