Skip to content
Vince.

Java · Middleware · Kafka · Cloud

Dann Vincent Palmes.

Software engineer — backend Java, middleware and real-time data

I build backend services and integration layers for telecom systems. Four years of Java: at Vocus, the middleware carrying orders between Australia’s national broadband network and the providers reselling it, and before that the Kafka pipelines and microservices at Globe Telecom that carried subscriber data for more than 70 million people.

Currently

Software Engineer — Java / Middleware

Vocus (via Tech Mahindra) · Jul 2026 – Present

Middleware and web-service integration for Vocus's wholesale broadband business — the systems carrying orders between NBN, Australia's government-owned national network, and the retail providers reselling it — across the full lifecycle from interpreting a requirement through development and testing to production support.

Full background
  • Order and provisioning traffic in both directions: a reseller's order turned into a request NBN will accept, and NBN's response turned back into something the reseller's own systems can act on.
  • Integration over SOAP and REST across BSS, OSS and product platforms, exercised and debugged with SoapUI — the far end is somebody else's system, so most of the work is agreeing precisely what each side promises.
  • Core Java middleware — EJB, JPA and Hibernate, built with Maven and deployed to JBoss/WildFly.
  • Production support on that integration — tracing an order that stalled somewhere between the two sides and establishing which side it stalled on, working the data back through SQL Server in SSMS.
  • Java
  • Spring Boot
  • Quarkus
  • EJB
  • JPA
  • Hibernate
  • Apache Camel
  • Maven
  • Python
  • TypeScript
  • R
  • Flutter
  • Kafka
  • REST

Backend

Java services, built to be tested

Streaming, middleware and API security — the same problems as the day job, taken apart in repositories you can build and run. Each one is covered by a suite that needs no broker, no backend and no Docker.

Streaming · Kafka · Quarkus

Stream processor

Subscriber usage in real time, on Kafka Streams

A pipeline that parses raw usage events, de-duplicates redeliveries, aggregates volume per subscriber into event-time windows, raises threshold alerts, and dead-letters anything unusable. The whole topology is tested without a broker.

  • Java 21
  • Kafka Streams
  • Quarkus
  • JUnit

Read case study

23 tests

Middleware · Camel · Spring Boot

Integration gateway

One REST interface over a SOAP backend and a REST one

A middleware layer that gives callers one interface over two very different provisioning backends, and answers the questions a gateway exists for: what to retry, what to give up on, and what a caller gets back when the far end is down.

  • Java 21
  • Apache Camel
  • Spring Boot
  • WireMock

Read case study

26 tests

API security · Spring Security

Secure API

Personal data behind authorization that actually checks the record

A subscriber API carrying personal data, with JWT authentication, object-level authorization, field-level encryption, per-caller rate limiting and an audit trail that records refusals as well as successes.

  • Java 21
  • Spring Security
  • OAuth2 / JWT
  • AES-GCM

Read case study

38 tests

Products

Three products, built from the rules outward

A resort booking engine, a coffee shop's reservations and menu, and a store's inventory and till. Each one is the half of the product worth building carefully — the rules that decide what can be sold, and what happens when the answer is no.

Product · Booking · Pricing

Resort booking

Availability that counts units, not overlaps

The booking half of a resort site: per-night availability across room types, seasonal and length-of-stay pricing, and refusals that name the night that blocked the stay rather than shrugging.

  • TypeScript
  • React
  • Vitest

Open demo

33 tests

Product · Reservations · Menu

Coffee shop

Reservations that know a table is busy for ninety minutes

Table reservations with turn times and table combining, plus a menu whose modifiers actually affect the price. Slots are offered only when a real table can seat the party for as long as it will be sitting there.

  • TypeScript
  • React
  • Vitest

Open demo

31 tests

Product · Inventory · Billing

Sari-sari store

Stock as a ledger, so a wrong count can be explained

Inventory, costing and billing for a neighbourhood shop. Quantities are derived from stock movements rather than stored, costs are weighted-average, and receipts extract VAT from prices that already include it.

  • TypeScript
  • React
  • Vitest

Open demo

33 tests

Product · Identity · Consent

CRM

Knowing that three records are one person

One CRM across the resort, the coffee shop and the store. Scored identity resolution rather than a customer table, segments derived from transactions rather than tags, and consent that has to be proved before anybody can be contacted.

  • TypeScript
  • React
  • Vitest

Open demo

55 tests

Lab

And three that run on algorithms

Pitch detection, sample-accurate scheduling and chord-shape search, written from the algorithms up with no audio libraries. Same instinct as the backend work, somewhere you can hear the result.

τ = 200.5 sampleslag →220.00 Hz → A3
The YIN difference curve, computed at build time by src/lib/audio/yin.ts on a synthetic A3. The dip is the period; the dashed line is the detection threshold.

Web Audio · DSP

Tuner

Real-time pitch detection from the microphone

A chromatic instrument tuner that listens through the microphone and reports the note and its deviation in cents. The pitch detection is a from-scratch implementation of the YIN algorithm — no library — and it is accurate to under a cent on synthetic signals.

  • Web Audio API
  • TypeScript
  • Canvas

Open demo

Web Audio · Timing

Sequencer

Sample-accurate drum machine with synthesised voices

A step sequencer whose timing does not drift, does not stutter under load, and does not fall apart in a background tab. Every drum sound is synthesised from oscillators and shaped noise, so the whole instrument ships as zero bytes of audio assets.

  • Web Audio API
  • TypeScript
  • React

Open demo

Search · Music theory

Fretboard

Chord shapes derived, not tabulated

An interactive fretboard that finds playable fingerings for any chord in any tuning by searching the neck under physical constraints. It ships no chord dictionary, which is why it works in tunings nobody has tabulated.

  • TypeScript
  • SVG
  • Web Audio

Open demo

How it is built

Tests
442

Across four repositories, Java and TypeScript

Infrastructure to run them
None

No broker, no database, no Docker, no backend

Pitch accuracy
<1¢

Across the guitar range, on synthetic tones

Timing drift
0

Proven over 200 irregular polling intervals

The same rule runs through all of it: keep the logic that matters away from the infrastructure it happens to run on. A Kafka topology is a pure function from config to a topology object, so the whole pipeline runs under a test driver with event time controlled to the millisecond. Pitch detection takes an array of samples and a sample rate. Neither knows what it is deployed into, which is why the awkward cases — a duplicate delivery, an event arriving after its window closed, a backend that fails twice and then recovers — are ordinary unit tests instead of a QA exercise.

Contact

Get in touch

The quickest way to reach me is email. I read everything.