Skip to content

Training

Adapt or Disappear: How AI Turned a 2-Year Project Into a 1-Week Sprint

The Delphi community has strong opinions about AI — and I get it. Privacy concerns, code quality worries, the instinct that real developers should not need a machine to help them write code. I have heard every argument in the book, and honestly, some of them are fair. The skepticism is real, though the tide may be turning. Still, the doubters outnumber the converts, and I am not here to pretend otherwise. But after what I just witnessed on a real-world migration project, I think even the skeptics will have a hard time arguing with the results. This is not about replacing developers — it is about what happens when developers stop fighting the tool and start using it.

The Project

A customer approached us with a legacy desktop application built in Delphi 7. Let that sink in for a moment. Delphi 7 — released in 2002. No Unicode support. No HiDPI awareness. Running on Firebird 1.5 — a database engine so old its last update predates the iPhone. The application had been serving its purpose for over two decades, but the world had moved on. No responsive design. No web access. No mobile support. Customers had been begging for a web-based solution for years, but the cost and complexity of a ground-up rewrite in the legacy stack — let alone migrating to a modern platform — had always been prohibitive.

The target: a full-stack TypeScript application built on Next.js with server-side rendering, a component-based UI, Prisma ORM for database access, and a responsive design that works on both desktop and mobile devices. Not just a facelift — a complete architectural transformation from a Win32 desktop application to a modern, deployable web platform.

This was not a toy project. It involved user authentication, role-based access control, property management workflows, incident tracking, image handling, complex relational data models, and a migration pipeline to move real production data from the legacy Firebird database. The kind of application that, in any traditional development shop, would require a team and a timeline measured in months — which is precisely why it had not been done in over twenty years of customers asking for it.

AI Won't Replace Delphi Developers. But...

Grayscale Bitmap

Invent Your Own Controls and Libraries!

The other day I saw a post on a Delphi developer forum. A fellow developer had been struggling for days trying to convert a bitmap to grayscale. Days. He had tried multiple third-party components, downloaded libraries, read through outdated documentation, and was still stuck. The forum thread was filling up with suggestions for yet more components to install, each with its own quirks, licensing, and version compatibility headaches.

I asked AI. It took about two minutes.

Not two days. Not two hours. Two minutes.

Book Review: Apps and Services with .NET 10 (Third Edition) by Mark J. Price

Mark J. Price has done it again. After his excellent C# 14 and .NET 10 – Modern Cross-Platform Development Fundamentals, I could hardly wait for this third edition of Apps and Services with .NET 10 to be released — and it absolutely does not disappoint. This is the third book in Mark's four-volume .NET 10 learning quartet, and it is exactly where the series hits its stride: broad in scope, practical in approach, and packed with real-world examples for every single topic it covers.

If you are a .NET developer looking to move beyond the fundamentals and into the technologies that actually power modern applications and services, this book belongs on your desk.

TMS Training Days 2026 in Rotterdam – April 23-24!

I'm thrilled to announce that I'll be speaking at TMS Training Days 2026 in Rotterdam, and I hope to see you there! After successful events in Lille and Bruges, the TMS team is bringing this incredible two-day developer conference to the Rotterdam Marriott Hotel (right across from Rotterdam Central Station) on April 23-24, 2026.

GitHub Is Not a Backup (And Why That Matters)

I came across something this morning that made me pause: a developer celebrating their move from daily ZIP files to GitHub, calling it their "backup solution." While I'm genuinely happy they've discovered version control, this statement reveals a dangerous misconception that's worth addressing.

Let me be clear: GitHub is not a backup. Version control is not backup. Full stop.

Looking Forward to Speaking at TMS Training Days 2026 in Rotterdam!

I’m very excited to share some great news — TMS Software has announced the next edition of TMS Training Days, which will take place in Rotterdam, the Netherlands, on April 23–24, 2026!

This isn’t my first time being part of a TMS event, and even though I’ve been a bit quiet lately when it comes to TMS and Delphi, I’m proud and truly honored to be invited again to speak at yet another TMS Days.

Why Mark J. Price’s “C# 14 and .NET 10” Belongs on Every Modern .NET Developer’s Desk

A Comprehensive Update That Justifies Its Place on Your Shelf

This is a book review for C# 14 and .NET 10 – Modern Cross-Platform Development Fundamentals by Mark J. Price (Packt Publishing)

As someone who has followed the evolution of development platforms across decades, I can confidently say this is the essential purchase for any C# developer looking to stay current with .NET 10. Even if you own the .NET 9 edition, this book earns its place in your library.

Why This Edition Matters

Mark Price has put considerable effort into updating every page for this new version—and it shows. This isn’t a lazy refresh with minor tweaks; it’s a thorough revision that covers the meaningful changes in C# 14 and .NET 10, from the new NumericOrdering option and OrderedDictionary enhancements to field modifiers, partial events, and instance constructors.

The book excels at its stated purpose: providing an easy-to-follow guide through the fundamentals. It strikes that sweet spot between beginner-friendly and substantive enough for intermediate developers to learn something new.

Migrationsstrategie und Planung: Von Delphi zu Next.js (Teil 5 von 5)

Das große Ganze

Wir haben TypeScript-Grundlagen, React-Komponenten und die Next.js-Architektur behandelt. Jetzt sprechen wir über das, was wirklich zählt: Wie Sie Ihre Delphi-Anwendungen tatsächlich ins Web migrieren, ohne dabei Ihr Unternehmen zu zerstören.

Hier geht es nicht mehr um Code. Es geht um Strategie, Risikomanagement und kluge Geschäftsentscheidungen.

Das Dilemma des Delphi-Entwicklers

Sie befinden sich in einer schwierigen Lage. Sie haben:

Vermögenswerte:

  • Anwendungen, die perfekt funktionieren
  • Jahre oder Jahrzehnte der Geschäftslogik
  • Ein Team, das in Delphi produktiv ist
  • Kunden, die (meistens) zufrieden sind
  • Umsätze, die von diesen Systemen abhängen

Druck:

  • Kunden fragen nach Web-/Mobilzugang
  • Schwierigkeiten beim Einstellen von Delphi-Entwicklern
  • Steigende Lizenzkosten
  • Moderne UX-Erwartungen
  • Konkurrenz mit neueren Plattformen

Sorgen:

  • "Können wir uns eine komplette Neuentwicklung leisten?"
  • "Was ist, wenn die Migration fehlschlägt?"
  • "Wird sich unser Team anpassen?"
  • "Können wir beide Systeme während der Übergangszeit pflegen?"
  • "Was ist, wenn wir Kunden während der Umstellung verlieren?"

Das sind berechtigte Sorgen. Lassen Sie uns sie systematisch angehen.

Migration Strategy and Planning: From Delphi to Next.js (Part 5 of 5)

The Complete Picture

We've covered TypeScript fundamentals, React components, and Next.js architecture. Now let's talk about what really matters: how to actually migrate your Delphi applications to the web without destroying your business in the process.

This isn't about code anymore. This is about strategy, risk management, and making smart business decisions.

The Delphi Developer's Dilemma

You're in a tough spot. You have:

Assets:

  • Applications that work perfectly
  • Years or decades of business logic
  • A team that's productive in Delphi
  • Clients who are (mostly) happy
  • Revenue that depends on these systems

Pressures:

  • Clients asking for web/mobile access
  • Difficulty hiring Delphi developers
  • Rising licensing costs
  • Modern UX expectations
  • Competition using newer platforms

Concerns:

  • "Can we afford a complete rewrite?"
  • "What if the migration fails?"
  • "Will our team adapt?"
  • "Can we maintain both systems during transition?"
  • "What if we lose clients during the change?"

These are legitimate concerns. Let's address them systematically.

Next.js verstehen: Struktur und Architektur (Teil 4 von 5)

Das große Ganze

Sie haben TypeScript (Teil 2) und React Components (Teil 3) gelernt. Jetzt lassen Sie uns verstehen, wie Next.js alles zu einem vollständigen Application Framework zusammenbringt.

Denken Sie an Next.js als das Äquivalent zu Delphis Projektstruktur, Runtime Library und Deployment Tools - alles kombiniert. Es ist nicht nur eine Library - es ist ein vollständiges Framework für das Erstellen von Web-Anwendungen.

Warum Next.js zusätzlich zu React?

React ist eine UI Library - sie hilft Ihnen beim Erstellen von Komponenten. Aber eine echte Anwendung braucht mehr:

  • Routing (Navigation zwischen Seiten)
  • Data Fetching (Laden von Informationen aus Datenbanken)
  • API Endpoints (Backend Logic)
  • Deployment und Optimierung

Next.js stellt all das zur Verfügung. Es ist wie der Unterschied zwischen nur der VCL versus der kompletten Delphi IDE und Runtime.

Understanding Next.js: Structure and Architecture (Part 4 of 5)

The Big Picture

You've learned TypeScript (Part 2) and React components (Part 3). Now let's understand how Next.js brings it all together into a complete application framework.

Think of Next.js as the equivalent of Delphi's project structure, runtime library, and deployment tools all combined. It's not just a library—it's a complete framework for building web applications.

Why Next.js on Top of React?

React is a UI library—it helps you build components. But a real application needs more:

  • Routing (navigating between pages)
  • Data fetching (loading information from databases)
  • API endpoints (backend logic)
  • Deployment and optimization

Next.js provides all of this. It's like the difference between having just the VCL versus having the complete Delphi IDE and runtime.

React Components: Das Web UI Model verstehen (Teil 3 von 5)

Der konzeptionelle Wandel

Erinnern Sie sich an das erste Mal, als Sie verstanden haben, wie Delphis Komponentenmodell funktionierte? Sie konnten einen TButton auf ein Form ziehen, seine Properties setzen, einen OnClick Handler schreiben, und plötzlich hatten Sie ein funktionierendes User Interface. Komponenten waren wiederverwendbar. Sie konnten eigene Komponenten erstellen und sie überall verwenden. Die VCL machte Desktop-Entwicklung intuitiv.

React ist dieselbe Idee für Web-Anwendungen. Anstatt Desktop Controls haben Sie Web Components. Anstatt Forms haben Sie Pages. Aber das fundamentale Konzept—Interfaces aus zusammensetzbaren, wiederverwendbaren Teilen zu erstellen—ist identisch.

Dieser Artikel handelt nicht davon, Ihnen beizubringen, React Code zu schreiben. Es geht darum, Ihnen zu helfen, das mentale Model zu verstehen, damit Sie bewerten können, ob Ihre Delphi-Anwendungen zu diesem Ansatz übertragen werden können.

React Components: Understanding the Web UI Model (Part 3 of 5)

The Conceptual Shift

Remember the first time you understood how Delphi's component model worked? You could drop a TButton on a form, set its properties, write an OnClick handler, and suddenly you had a working interface. Components were reusable. You could build custom components and use them everywhere. The VCL made desktop development intuitive.

React is the same idea for web applications. Instead of desktop controls, you have web components. Instead of forms, you have pages. But the fundamental concept—building interfaces from composable, reusable pieces—is identical.

This article isn't about teaching you to write React code. It's about helping you understand the mental model so you can evaluate whether your Delphi applications can translate to this approach.

TypeScript für Delphi-Entwickler: Die Grundlagen verstehen (Teil 2 von 5)

Willkommen zurück

In Teil 1 haben wir besprochen, warum der Übergang von Delphi zu Next.js geschäftlich Sinn macht. Jetzt erkunden wir TypeScript selbst und warum es sich überraschend vertraut für Delphi-Entwickler anfühlt.

Denken Sie daran: Diese Serie handelt nicht davon, Ihnen beizubringen, TypeScript zu programmieren. Es geht darum, Ihnen zu zeigen, dass die Konzepte, die Sie in Delphi gemeistert haben, direkt übertragbar sind, und dass die Lernkurve kürzer ist, als Sie befürchten mögen.

TypeScript for Delphi Developers: Understanding the Fundamentals (Part 2 of 5)

Welcome Back

In Part 1, we discussed why the transition from Delphi to Next.js makes business sense. Now, let's explore TypeScript itself and why it feels surprisingly familiar to Delphi developers.

Remember: this series isn't about teaching you to code TypeScript. It's about showing you that the concepts you've mastered in Delphi translate directly, and that the learning curve is shorter than you might fear.