Skip to content

Selected experience

Our experience.

The experience behind Hypnoshroom spans long-lived Scala services, independently built web products and the testing and production work needed to keep software useful.

Selected work

Three areas of applied experience.

The common thread is software that already has users, constraints and consequences when a change goes wrong.

Modern product development

From idea to live product

Independent product engineering

Hands-on experience designing, building and deploying SaaS-style applications as a solo developer, including the product decisions and operational details around the code.

Representative work

  • Building full-stack applications with TypeScript, Nuxt 3 and Vue
  • Implementing authentication and account flows with Auth0
  • Designing database-backed features with Supabase and PostgreSQL
  • Integrating external and geolocation APIs behind application boundaries
  • Working through permissions, configuration and environment separation
  • Deploying to Vercel and considering runtime, load and concurrency behaviour

What this experience brings

The useful experience is not only assembling a technology stack. It is making trade-offs across the interface, server, data model, authentication and deployment path while keeping the product small enough to own.

Technologies

TypeScriptNuxtVueSupabasePostgreSQLVercelTailwind CSSResendCloudflare Turnstile

Projects

Independent product

Tarotea

A SaaS product for teaching Cantonese, built to help learn Cantonese using quizzes, typing exercises and audio recognition.

Read the experience entry →

Product experiment

Lonely Radish

An independent dating app used to explore product discovery, the responsibilities around a social product and remove algorithms from data apps.

Read the experience entry →

Independent product

Hypnoshroom website

The Hypnoshroom website: an independently built consultancy site for explaining specialist services, publishing technical writing and starting project conversations.

Read the experience entry →

Scala & backend systems

Evolving long-lived Scala services

Professional experience · HMRC domain

Around eight years of experience working with Scala services in an established public-sector domain, where changes need to respect existing behaviour, integrations and operational constraints.

Representative work

  • Maintaining and extending Scala 2.13 and Play Framework applications
  • Working with REST APIs, Play JSON, MongoDB and hmrc-mongo
  • Managing sbt, dependencies and compiler configuration
  • Writing unit, integration and acceptance tests around changed behaviour
  • Investigating live issues through logs, monitoring and production evidence
  • Considering safe routes from long-lived Scala 2 systems towards Scala 3

What this experience brings

This experience informs a cautious approach to mature, technical-debt-ridden systems: understand why the code looks the way it does, protect important behaviour and separate necessary change from optional cleanup. It also includes working in large delivery teams and leading, supporting and sharing knowledge with junior, graduate and contractor engineers so that difficult systems do not remain understood by only a few people.

Quality & production delivery

Testing from code to production

Functional, performance and production confidence

Testing is used to answer practical questions: does the code behave correctly, does the complete journey work, and will it remain reliable under realistic load?

Representative work

  • Building focused unit, integration and acceptance suites with ScalaTest, JUnit, Mockito and Cucumber
  • Automating end-to-end browser journeys with Playwright and Selenium
  • Performance testing with Gatling and k6 across load, latency, throughput and failure behaviour
  • Using Grafana to interpret test results alongside application and infrastructure signals
  • Working with Git, GitHub, Jenkins, CI/CD pipelines and Docker
  • Debugging live behaviour using Grafana, Kibana, Splunk and CloudWatch

What this experience brings

The goal is useful evidence rather than a larger test count: fast feedback during development, confidence across real application boundaries and performance results that can support a release decision.

Continuous learning

Staying current. Adopt deliberately.

Software keeps moving. Hypnoshroom keeps pace with the language, framework, tooling and delivery changes that matter to real systems.

That does not mean replacing working technology whenever something new appears. New approaches are explored through research and hands-on testing, then weighed against support, maintainability, migration cost and the needs of the team that will own the result.

Follow the ecosystems
Hypnoshroom follows relevant language releases, framework direction, dependency support and changing production practices.
Learn by building
Small experiments and independently built products reveal how a tool behaves beyond its introductory example.
Modernise with a reason
Newer technology is adopted when it improves support, delivery, reliability or ownership—not simply because it is fashionable.

What Hypnoshroom offers

Choose the support the work needs.

Commission an independent technical review, add experienced engineering capacity to an existing team or agree a defined software outcome for Hypnoshroom to deliver.

Technical Review & Discovery
Investigate one codebase or technical question, establish the evidence and provide prioritised findings with practical recommendations.
Embedded Engineering Support
Add experienced Scala, backend or product engineering directly to an established team with its own backlog, domain knowledge and delivery process.
Defined Outcome Delivery
Agree a bounded software outcome, acceptance criteria and project price, then deliver the implementation, verification evidence and handover.

Start a conversation

Something difficult holding the product back?

A feature that needs shipping, an ageing service that needs attention, or a deployment that has become harder than the code. Talk to us about your problems.

Discuss your project