Write Delphi Object Pascal Code – and out comes a fully working web app

A few days ago I helped host an Embarcadero webinar featuring representatives from TMS Software and AtoZed. This presentation featured a round-up of recent presentations on TMS WEB Core and Intraweb which are two of the THREE web frameworks Embarcadero are currently including in their special holiday promotion which you can find here: Special Offers on RAD Studio, Delphi & C++Builder – Embarcadero. The other framework is UniGui. Click on the preceding link to read more about it all. The same offer also gives you three years of update subscription updates – i.e. upgrades to the latest versions for the next free years included – along with other mind-boggling things like Architect for Enterprise pricing and so on. I’m not an Embarcadero employee although I am an Embarcadero MVP but this is a pretty good offer, I think.

Anyway – on the video replay the Q & A section doesn’t have any slides but we do mention some links being pasted into the chat window which you can’t see in the video. Those links are listed below so you don’t miss out.

I’ve used all three of these web frameworks at one time or another. I have particularly used both Intraweb and TMS WEB Core for commercially available products I’ve written and which are in use in 1000+ customer locations. I can vouch for both systems – and each has their own strengths.

Intraweb is a lot more like creating a Delphi app which then runs either as an ISAPI dll or stand-alone web server exe or service. It has a few idiosyncrasies which you very quickly get used to but overall it’s great to use and has been around for many years. Many Delphi programmers are already familiar with it due to the inclusion of a ‘free’ Embarcadero version of Intraweb and the ability to upgrade that free version to remove some of its restrictions like number of concurrent connections and so on. Go to the AtoZed site to read more. Chad mentions in his section of the video that they’re currently working on version 17 of Intraweb which will add a load of new functionality. I can’t wait to see that in action and I’ll do some reviews once I get my hands on stable copy.

TMS WEB Core I’ve discussed before both here and at a few webinars. It produces pure HTML 5, CSS and JavaScript right from your regular Delphi code. In essence you write a normal Delphi program and when you hit compile out comes the app as a set of web pages with the JavaScript and CSS to make it work on any standard web host or web server such as Apache. If you have a TMS All Access subscription you get WEB Core included and if you use their FNC components you can write code and generate forms which will work cross platform on Windows, macOS, Linux and the web. TMS WEB Core also allows you to easily turn that set of web pages into a stand-alone progressive web app (PWA) and an Electron app. I took part in some comparitive research recently and created the required test app as a WEB Core app in around 40 minutes and then took that and produced a PWA in an additional 6 minutes including writing notes and in a further 7 minutes after that created the same app as an Electron app. I reused the forms and the back-end code. It was that easy.

Anyway, the participants in the above video are:

and myself who was hosting on behalf of Embarcadero’s Jim McKeeth (Jim was unable to make it at short notice). Video playback was managed by April Calderon of Embarcadero.

Comparative Research Project

I’m going to publish the comparative research project code in the next day or so.

The comparative research code can be found here: ComparisonResearch/calculator/delphi-vcl/barker at main · Embarcadero/ComparisonResearch (github.com)

This code contains the same program produced as a bunch of apps written in pure VCL, Fluent UI VCL, WEB Core, PWA and Electron. It was a fun project to be involved in and really demonstrated the power and brevity of Delphi’s Object Pascal language and how with a bit of thought the amount of code reuse you can achieve without compromising on the power or syntax is pretty extraordinary.

Will December be as busy as November?

So… best laid plans and all that jazz. I did intend to do some streams in November and a few articles but, life being what it is, this didn’t happen, at least not on my blog here although you can catch up with some Embarcadero sessions I appeared on last month.

I am offensively busy with some pretty intense coding at the moment. Pandemic or not I am pleased to say things are doing OK. I know that’s not true for everyone.

In my 38+ years as a professional developer I’ve seen and worked at everything from start-ups which were an inferno of blazing code sessions stretching over several non-stop sleepless caffeine-fueled days and nights, to working at ‘blue chip’ organizations which filed one entire department into one area and another into a hastily-assembled meeting place where they found out we had survived the “refocusing of business direction” and they had not and were consequently out of work as of ten minutes prior to the meeting start.

The first time was in the ’80s. It has repeated itself every decade or so. It never hurts less and, since I have the luck of a leprechaun with two rainbows, I seem to survive those kind of down-sizing decisions and get left with a brutally conflicting sense of relief and sadness as others are slapped in the face by being wrenched from their keyboards and, with it, the code in which they had invested a large part of their emotional and professional well-being, not to mention personal and financial security followed by being discarded, back on a job market, ego crushed, worse fears piqued.

I hope that, if you’re currently becalmed on the Covid seas of despair, things pick up for you soon. {hugs} I can do nothing more than offer you my empathy and, as Roald Dahl would say “think beautiful thoughts” for you.

If you ever need someone to talk to please reach out to me. I might only be able to offer a friendly ear – but sometimes that might help. This time will pass. Things will brighten.

So what DID happen in November?

DelphiCon 2020 happened. DelphiCon was kind of like CodeRage with less rage and more smoothly-targeted sessions using the new session managing software Embarcarcadero have recently used for a few things. Nearly everyone who took part – with the possible exclusion of myself – has at least one book published or well-loved products they curate. They were all bang-on useful sessions which I enjoyed as a viewer as well as a participant.

In particular I took part in the DelphiCon 2020 VCL panel

You can catch the official replay of the VCL session session here:

I’m also taking part in a brand new session next week, December 16th – “Powering The Web with Intraweb and TMS WEB Core“. This is an information-packed session where representatives from TMS Software and AtoZed, as well as myself, are going to show off how to EASILY create some truly powerful web apps targeting straight-forward web servers, Electron apps, progressive web apps (PWA) and other such delights. I’m going to show you a web app created with TMS WEB Core and written in Delphi which I’ll then recreate as a stand-alone cross-platform Electron App in less than five minutes and, just for good measure, a PWA which can either run in your browser, connected, or can run disconnected and stand-alone on your machine or mobile device; once again, in less than five minutes.

Heady stuff.

You can register with the official Embarcadero link here:

Fluent UI

I haven’t forgotten about the second part / follow-up to the Fluent UI session either… I have just been completely flooded with ‘the day job’ writing Delphi code every single day. I have a plan. Hopefully it will be of the best laid kind and, bucking the trend, will happen shortly!

Book Review – TMS WEB Core Author: Dr. Holger Flick

Picture of Margaret Hamilton with a printout of her source code for the Apollo navigation system - source: https://commons.wikimedia.org/wiki/File:Margaret_Hamilton_-_restoration.jpg
Not Ian Barker

I’ve become book-wealthy. This is the status you achieve when you have lots of books stacked up and their critical mass is such that they start to softly cry out to you for attention. I am the kind of programmer who revels in – and is still slightly awed by – the fact that he is paid to write programs when really it’s the thing he loves to do most in the whole world. Programming: I love it. I love designing code. I love writing code. I love writing about code and I love reading about code.

Right now, sitting on my “do this” shelf I have just shy of a half-dozen of Delphi coding books. New Delphi coding books too, not slightly moth-eaten getting-a-bit-out-of-date Delphi coding books. And because they are all shiny spanking new books, I’ll write some reviews here in case it helps you out.

The first one to join my wonderous collection is specifically about TMS WEB Core from TMS Software which is perhaps why it’s called “TMS WEB Core, Web Application Development With Delphi by Dr. Holger Flick”.

Before I dip into the review, I feel I should point out a few things. Those of you who follow along with the Embarcadero Webinars and conferences may have seen me talk about TMS WEB Core before. I make no secret of the fact I think it’s an excellent framework. You may even have seen me jointly present a couple of videos with the author, Dr. Holger Flick. Holger and are friends. We originally bonded over our shared love of Delphi and as fellow MVPs based in the USA; but we share some other interests since we are both Europeans from slightly liberal socialist-leaning countries who are married to Americans and live in the Southern United States. It’s a challenge sometimes but I think we both like the sunshine here a little more than the wonderous damp gray of your average Northern European climate. That said, Holger is far enough away I can say mean things in this review safe in the knowledge I will be hidden in a tool shed before he can drive up and wreak Teutonic revenge.

Holger’s written style is, much like his spoken English, precise, brutally accurate and perfectly proper in the way only an English-speaking German can be. Where I err on the side of colloquial with a plump vocabulary of fluffiness, Holger writes like he cut each sentence into the paper with a razor blade. Given that he used to work for Borland in a QA position back in the mists of time it’s no surprise that he slots together the chapters and examples like a finely engineered craftsman. I know in the past he’s had some discomfort from someone trying to score low blows by trying to criticize his writing and sneeringly saying that “a native English-speaking author would have written things differently” but <politician mode>let me be clear</politician mode> that’s a stack of jealous, whiny, claptrap. There are some syntactical constructs Holger uses which are perfectly valid yet hint at his German origins but you’ve got to be a bit of a pedantic word wanger like me to be in any kind of position to throw some shade. As my daughter would say: fight me.

The book is written so that it comes in the form of sections. Each section starts with a contents page. It doesn’t include an index. Personally, I think an index in any technical book is, for me, pretty useful when it comes to the point where you’ve read the book and return to it later as a reference. It’s a lot harder to find “that bit where it tells you how to parse JSON” without an index. When Holger reads this, I’m sure he and I will have some kind of frank exchange of views but, to coin an Americanism, it’s a hill I’ll die on. There is a master contents page at the start which helps make up for it. If you’re an author and you’re reading this – add an index to your book if it’s a technical book. Please?

But this is the only thing I can waft a critical finger at – the rest is an absolute cornucopia of Very Good Things.

Honestly, it’s a cracking good book. It’s a solid inch and a quarter thick and covers just about everything you need to know with regard to TMS WEB Core ranging from installing and configuring it in RAD Studio / Delphi, through basics like a simple single page app, debugging, progressive web apps or PWAs, Electron apps (shriek!) to full client-server database-driven web apps, drag and drop, bootstrap, maps, interacting with web services and even the Swagger UI. There is more to TMS WEB Core. You could write another three or four books about it and still not cover everything. It’s a nebulous subject.

I don’t want to go into massive detail about the contents because it’s pretty comprehensive – but you will learn, with Holger’s help, how to go from knowing nothing about TMS WEB Core to being able to write fairly complex web apps using nothing more than pure Delphi Object Pascal code.

If you want to know some more detail go to the Amazon link here: https://www.amazon.com/dp/B086G6XDGW/ their “look inside” feature will allow you to browse the full main contents page.

One of the key strengths of TMS WEB Core is that you don’t need to know HTML or CSS, although it helps, and you will be thoroughly shielded from the depths of unpleasantness that is JavaScript. You write regular Delphi code – and out comes regular HTML website pages with CSS and JavaScript, all ready to go. You either just put it up on some normal web space like GoDaddy or, (even better) DreamHost – or some other place with a webserver such as your a corporate intranet – and it works just like a regular web page, except it’s a program you wrote, using Delphi code. It’s magical. Holger fully covers this, of course.

This book, combined with the attendant code samples which are available online, as well as the excellent sample apps from TMS themselves, will get you to some basic but fundamental mastery of creating web apps using Delphi. When I have demoed Web Core in the past it always blows people’s minds that I hit F12 on the web browser, set a breakpoint and up pops lines of Delphi source code. Yes, you can set breakpoints and debug the website and it shows your DELPHI object Pascal code. It’s a total mind-frack. Add into that things like the TMS FNC Components and some database stuff like XData – and you have some true power going on there; in fact things which would be quite long-winded and fiddly with other languages such as .Net. With Dr. Flick’s TMS WEB Core book you’ll know how to do all of this and a lot more besides.

Book: TMS WEB Core.  Web Application Development with Delphi
Author: Dr. Holger Flick
Author Website: https://flixengineering.com/books
Available in: English, German
Amazon US Direct Link: https://www.amazon.com/dp/B086G6XDGW/

For more about TMS WEB Core: https://www.tmssoftware.com/site/tmswebcoreintro.asp

Creating interactive web sites with Delphi

Earlier this week I presented a webinar with fellow Embarcadero MVP and TMS Evangelist Dr. Holger Flick about the superb TMS Web Core product.

You can view the official replay here:

TMS Web Core allows you to create fully interactive web pages using Embarcadero Delphi as the ‘back end’ programming language. When you hit the compile button instead of a traditional Windows executable being created you get instead pure HTML pages with CSS ready to copy over to a plain old regular web server – no further requirements beyond that.

The programmable functionality of the web application is delivered as a JavaScript file. You don’t have to write or even understand JavaScript – you just write Delphi code and the compiler converts that code into the JavaScript for you.

Web Core really highlights how easy and yet powerful the Delphi language is for writing programs. The ‘strong typing‘ is part of the secret sauce and the “R” in RAD truly demonstrates itself to mean “rapid”. Using Delphi you can frequently and repeatedly produce robust, performant and richly functional applications with embarrassingly minimal effort. Seriously, it’s sometimes a little too easy and you think to yourself, “did I miss something?” – but no, it doesn’t have to be hard to create applications – and TMS Web Core extends that understated power to creating interactive web sites using Delphi.

I can’t even begin to tell you how game- changing TMS Web Core is for Delphi programmers. There are creditable alternatives such as the venerable IntraWeb, but TMS Web Core feels a little more ‘right’, to me, and genuinely the experience is one of creating a regular Delphi application which just happens to pop out as a set of HTML pages. No mess, no fuss and easy to put up on to any web host on any hosting service of your choice.

I’m going to stream some more about this soon as I think the way I would present the product is slightly different to Holger – not better or worse, just an alternative angle!

Holger has written several excellent books on using Web Core and Delphi in general. He’s an excellent developer with broad experience, even working for a time for Borland. I recommend taking a look at the books by clicking here.

This I deign, for delicious Delphi

I thought, given my past as a published poet, that I would at least use a more rare word in a title for a Delphi blog post I was prompted to produce and, with that, add some pseudo-pentameter look and feel. In short, having a little lyrical laugh, to show that density of prose and a divers or archaic choice of words does not always serve to promote clarity. To say more sometimes is to say less and by saying less I mean this to say you, who I choose to hope to help by writing will gain more when I write the right thing succinctly, without literary ornamentation and, I believe, even more is to be gained by you if I show you things, by streaming, either live or re-recorded so you can, should you elect, pause, rewind, stop, skip through any boring bits and get value from it in and of itself, as I, in my mind, perhaps in a folly of imagination, like to think you do.


Those proceeding 170 words are a bit of a word spaghetti aren’t they? Here’s the thing (to be said in your mind like Adrian Monk) – I always, when I write on this blog and when I stream, strive to be clear and approachable. Not only that, I will try and be as honest as I can and show you code and techniques that are not fancy for the sake of being fancy – I want to show things that maybe you don’t know how to do (otherwise, what’s the point?) and will really help you, generally because they helped me.

With this in mind, August is going to be a little bit of a tsunami of me taking part in some streams. Texas is way too hot to go outside in August anyway so I may as well spend an extra amount of time scrunched over a clicky keyboard and putting my reputation at the mercy of several webinars. Ah, what could possibly go wrong? 😋

Plus, it appears, that this brutal pandemic seems to be not quite ready to ride off into the sunset. Social distancing and the temporary interruption to what we’ve all previously thought is normal: going out, having a social life; even the simple pleasure of eating is curtailed – so we have a little more time on our hands to learn new things, myself included.

I really think Delphi is my super-power. If that sounds like a sales line, it’s not. If you watched the recent Fireside Chat session I had with Jim McKeeth you’ll hear me go into a lot more detail about what it is I do for a ‘day job’, my background and history as well as a few of my thoughts on Delphi and code in general. It’s that faith in the ability of Delphi to produce ROCK SOLID stable applications in a very short space of time using a language which has an elegance to it which totally clicks for me and has the power to Get Stuff Done that enthuses me to write things here and to take part in the webinars and so on.

So, all that said and done, what have I got planned for August?

On Wednesday 19th August…

How to give your apps the REALLY COOL Windows 10 Fluent UI look and feel with Delphi

(Note that I originally had planned this for 5th August but that proved to be too short notice).

Fluent UI is the new hotness. If you have a recent version of Windows 10 then you’ve surely noticed it by now. Buttons with very cool grad fills which follow the mouse as it hovers over them, icons which are either scaled vector graphics (SVGs) or are drawn from the epic Font Awesome set, plus a whole raft of other subtle and not so subtle gizmos like borders which add affordance to windows to help you spot which ones are active or inactive.

And I haven’t even mentioned the ‘acrylic’ look and feel where portions of your screen are semi-transparent and allow a portion of the background to show through, slightly blurred. It’s cooler than ice cold.

Fluent UI is, without doubt one of the best things to happen to Microsoft Windows in the past few years – and I’m going to show you how to do it, in Delphi. There will be a full blog post backing it up along with some sample code on GitHub.

Speaking of GitHub…

On Wednesday 12th August

Using Git source code control with Delphi and RAD Studio – all the reasons WHY and EVERYTHING you need to know

Over the past few months we MVPs have been canoodling together in our secret chat rooms and darkened corners of the web and we’ve come to realize something: there are a heck of a lot of people out there who either don’t use source code control or use it but have this horrible nagging doubt that they’re only using a tiny fraction of its capabilities.

It’s a common theme for people to say “I back everything up to an external hard drive”.

I live in Tornado Alley in Texas. In fact I’ve always lived in the most active tornado zones ever since I emigrated to the USA. Mother Nature can go from blazing hot sunny day to house destroying poop your pants F5 tornado in a very few short minutes here. That gives you a whole new perspective on whether or not your code is really backed up properly. Git and GitHub, GitLab, BitBucket or one of the many and multiplying git hosting services can make this sort of life-changing destruction less… terrifying… and, if you charge for your services, less likely for you to be sued.

But that said, the main point about Git is sharing code with others, controlling the chaos that occurs when you try that – there’s a reason why nearly all verbs to do with source code collaboration are aggressive: blame, force, commit (like a crime), pull (why not sync or combine?)

Rad Studio has all the things you need in it to use Git (and SVN but I’m going to focus on Git). I’m going to show you every single aspect of Git from the why to how to when. I’ll show you some very cool tools which will make the whole process a lot less painless. Git is notorious for being a little reticent to mere mortal programmers like you and I. I’m going to pull back the kimono a little in this webinar. Even Marco Cantu (who apart from being a Delphi legend is also a certified genius) said he was looking forward to the Git webinar. No pressure, Ian, no pressure! 😁

and finally, Esther, we come to a webinar which we’re doing because so many people asked us to at a previous webinar…

On Wednesday 26th August

I’ll be co-hosting with TMS Product Evangelist Dr Holger Flick a webinar titled :-

Creating fully interactive web applications using Rad Studio, Delphi and TMS Web Core

If you’re a Delphi developer there are more than a few different ways of producing web apps. I’ve personally used the excellent Intraweb. I’ve also used Web Broker and Datasnap. However the thing which really clicked for me when I first came across it was Web Core from TMS Software.

Honestly, you pretty much write regular Delphi code, design the screens the way you would normally – and out pops a proper web app: HTML, CSS and JavaScript all ready to run on any web server. It can also produce Electron Apps as well as Progressive Web Apps (PWAs).

Holger will whizz through what TMS Web Core can do and show some excellent, easy to digest demos. He’s also got a few books available which will give you a leg up too should you need it.

So.. August…

All of these webinars will start at 11:00am CST, 4pm UTC, 5pm BST. You can check the times in your time zone via Embarcadero. I’ll update this blog post with the links when I have them.

I intend to write some fairly extensive blog posts to accompany the webinars. If you have any other ideas for Delphi-related subjects we could cover – let me know.

August is going to be an interesting time. Wait until you find out what’s planned for September!