Replace old systems without switching them off.

Sharpsoft is Luc. I take software that has been running for decades and that nobody wants to touch, and rebuild it piece by piece — while it keeps running. Alongside that, new things get built: on the web, on Android, in the cluster.

What gets replaced

From real migrations: the system that was running — and what runs in its place today.

BeforeAfter
Delphi client on every PC
Angular in the browser
Sybase ASE
PostgreSQL
Java monolith
Go, decoupled services
HTML from the server
Angular, prerendered to static files
Full export overnight
Delta sync, minutes apart
Invisible to search engines
Structured data, sitemaps, Google Merchant

Case study

ABW Autoverwertung abw.ch

The business ran on a Delphi application with a Sybase database — stock, prices, invoices. It was moved to Java first, then piece by piece to Go. Next to it there is now a webshop that makes the entire inventory publicly searchable, without ever touching that database directly.

108,300parts pages per language, German and French — each prerendered with its own title, description and structured data.

A Java worker mirrors only what changed from Sybase into PostgreSQL and transcodes the images to WebP. A Go API serves PostgreSQL and nothing else. Orders run through Swiss QR-bill, TWINT and PayPal. The whole catalogue also goes to Google Merchant Center as a feed — every part as its own product.

What I do

Legacy migration

The old system stays in production and becomes the source of truth. The new architecture grows next to it, takes over load and function, until what remains of the old system is only the part that genuinely earns its place. No cutover date, no downtime, no lost records.

Sybase, Oracle, DB2, PostgreSQL, Java, Go

New applications

Web applications, internal tools, interfaces, and the infrastructure underneath them. From the first sketch to running in a Kubernetes cluster — from one person who also understands the database.

Angular, Go, Rust, PostgreSQL, Kubernetes

AI agents and Claude

Agents that work on real systems — the codebase, the ticket queue, the database — rather than on a demo. With harnesses that measure whether the result is actually better, and the honesty to say where the effort does not pay off.

Claude, Claude Code, MCP, agents, RAG, evaluation

Search visibility

SEO as an engineering problem: pages delivered as finished HTML instead of an empty JavaScript shell, structured data, clean sitemaps, fast loads. So that a catalogue of tens of thousands of items can actually be found.

Prerendering, JSON-LD, sitemaps, Google Merchant, Core Web Vitals

What I have built

lernja lernja.ch

A learning platform for Swiss schools and adult learners. Five languages including Romansh, exercises as independent micro-frontends, multi-tenant.

Angular, Go, gRPC, Kubernetes

KISSDesk

Remote desktop over a single port. No VPN, no port forwarding, no plugin — the machine dials out on its own, and the browser decodes the picture directly.

Rust, WebCodecs, Redis, Kubernetes

MuPlay

An Android player for music and audiobooks on your own server. Every book keeps its own position; playback on Sonos and in the car.

Android, Kotlin, Subsonic, DLNA

helios57/muplay

FamilyGuard

Device management for families on hardware they own. Rules for apps and screen time, without the data leaving the house.

Android Device Owner, Go, PostgreSQL

helios57/familyguard

Open source

Tools that came out of real projects and stayed public.

mtrail/adjudicatoradjudicator.ch

A contest platform for chess-playing agents. FIDE-compliant rule enforcement, clocks, Elo ratings and a dashboard that follows games as they happen — built for programs rather than people, so the interface comes first.

Go, gRPC, gRPC-Web, Angular, MIT

helios57/protogen

A Maven plugin that turns .proto files into Java records running on the JDK alone: no protobuf library, no Netty, no protoc in the build. The bytes stay compatible with protoc, checked by a differential suite.

Java 17, Maven Central, MIT

helios57/NgGoRPC

gRPC over a single WebSocket connection, straight between Angular and Go. No Envoy proxy in between, many calls multiplexed on the same connection.

TypeScript, Go, WebSocket, MIT

helios57/palworld

A breeding planner for Palworld. The save file is read in the browser itself, and the tool works out the shortest path from the pals you already own to the one you want. Nothing is uploaded; there is no server.

TypeScript, GitHub Pages, MIT

Get in touch

An old system that needs replacing, or something new that needs building? Send me a message.

Sharpsoft