Where NOT to put your Delphi components

This is just a bit of an observation of things I’ve noticed in the past month or so.

As an MVP I often have several copies of Delphi, both release and beta, installed on multiple machines. I also have a burgeoning amount of components on those machines; either ones I use or ones I want to write about or ones I’ve been sent by the vendors for me to comment on and provide feedback.

I know I’m not totally typical but I’m also a professional software developer writing code day in and day out using Delphi and using the component-based ecosystem to its full advantage.

So, in the style of a battle-hardened action movie character: “I’ve seen things… things you wouldn’t believe“.

It’s common for some Delphi component suppliers to install things into your documents folder. I have no problem with that and it’s quite often just documentation which makes a lot of sense.

However, I’ve noticed a few components, for whatever reason, actually installing the source code of the components into the “My Documents” folder. I’m not sure if it has been because of a default I might have picked eons ago or a general default but right now, if you use OneDrive or Windows 10 it’s a Very Bad Thing. Windows 10 changed quite a lot of things over the years, drip-feeding new features bit by bit into the desktop experience. That’s a great idea and helps ease people into a forward direction without overwhelming them with too many changes all at once.

However, one of those more recent features is that, for Microsoft Office users at least, many things are actively being stored on Microsoft’s OneDrive cloud storage solution. In latter versions of Windows 10 this means that files you copy to the “My Documents” folder are then synced to ‘the cloud’ and become available on any of your other machines.

Except they’re not really there. There is a file system ‘stub’ entry and when you look at those files in Explorer you’ll see a little ‘cloud’ icon:

The cloud means that the file is not physically present on your machine.

That’s when the trouble starts.

If you install a set of Delphi components and the destination is anywhere under one of the ‘special’ Windows folders such as “My Documents” or “Desktop” (seriously I have seen a Delphi developer doing that – don’t do that) then any of your other PCs which are running Windows 10 and are signed in using the same Microsoft account will ‘magically’ get those component folders appear on their machine in the same places… except those files aren’t really there.

When you go to compile a project on your other machine – the one without the actual files but with those cloud icons – the whole process will either fail or go very slowly – and I mean like MINUTES slowly. The reason it goes so slow is that Windows actually creates a deliberate pause accessing the virtual/cloud files while it syncs with OneDrive and downloads them for real onto your PC. Even on a machine with a 1GB fiber connection like mine this is still relatively slow – and in the case of a bigger library it’s going to take quite some time.

Then there’s an even worse problem. Let’s say you now decide to uninstall the components from that second synced machine. The uninstall removes all the source code (as it should) and any BPLs and so on. Now you install a later version of the component set, once again into one of the OneDrive synced folders. When you swap back to your original machine OneDrive starts to sync the changes… and disaster unfolds. You start to get mismatched source and BPLs along with Delphi project and DFM files which are from the later version of the components on your secondary machine.

You’ll also find that – at least currently – OneDrive will spend a VERY long time trying to sync all the file changes between the two machines. You will also get warnings from OneDrive that you “recently deleted a large number of files” and asking if you want to clean out the trash folder with no indication of whether or not this is a good or bad thing. Spoiler alert: do it. 😉

If you have more than one PC and are using OneDrive and you have one or more machines going more slowly than you expect then this could well be what appears to be a problem with OneDrive at the moment; never-ending or very slow synchronizing of files. On a machine which I found to have this problem I temporarily disabled the OneDrive sync and suddenly the machine was back to normal speed.

Also, for any component developers reading this: don’t store things in the program files folders, especially source code and examples. Increasingly these folders are heavily restricted and in many customer configurations they are virtualized. %PROGRAMDATA% and %APPDATA% (depending on your use case) is the correct place for all of that. You can read more here: What Is the ProgramData Folder in Windows? (howtogeek.com)

If you store your samples/demos in the program files folders your users will get error messages trying to run the projects since by default the folders are not writable by mere mortals.

To return to “where to store your components” – I’d suggest you create a folder called "\comps\" and use that as the target destination when installing new components from vendors. This has a couple of advantages –

  • If you have more than one machine all your components will be in the same place rather than program files (86)\name_of_vendor or program files\name_of_vendor
  • It will not get synced by OneDrive by default and you avoid the problems I described above.
  • The path is SHORT which is currently quite significant for RAD Studio which uses the Windows PATH environment variable and you’ve probably seen by now a warning stating the maximum path length is close to being reached.

Of course, none of this may affect you. Perhaps you don’t knowingly use OneDrive (don’t get too complacent, Microsoft are pushing OneDrive and cloud storage hard) or maybe you only use one PC or already store your components in an alternate folder. All good.

But if not then maybe this post might save you some of the grief I’ve experienced in the past few months.

UPDATE: A small update to this – this applies to ANY component library good, bad or ugly – and some people have suggested that their copy of OneDrive doesn’t sync documents folders automatically although I have checked this on a collection of machines both in the UK and US and it definitely affected all of them. A quick Google search shows it to be a common problem too: https://www.google.com/search?q=onedrive+constantly+processing+changes

I’m definitely NOT calling out any component vendors and saying this is their fault but what I am saying is, based on my experience, putting stuff in the documents folder when it is synchronized to the OneDrive cloud can be a major problem; it certainly was for me and even this morning a couple of days after I originally wrote this article I had the problem occur again with a component library and had to manually stop things syncing and delete files to overcome it.

Feel free to contact me directly if you think I’m wrong – my details are public; go for it!

I’m kind of crushed that people thought I was being negative about Delphi and particularly about some components – have you not all been paying attention? 😵

How to write Delphi apps to run and look great on Windows, macOS and Linux

Last Wednesday I presented an Embarcadero webinar “Cross Platform to Windows, macOS and Linux with Firepower”. Participating in the live Q & A after the demo was Roy Woll of Woll2Woll Software. I think we had a lot of fun doing it and there were tons of questions about Roy’s great components as well other subjects such as making your own components be available for multi-device apps when the user swaps to the FMX Linux target, for example.

Here’s the official Embarcadero replay of the webinar complete with the lively Q & A…

Roy also mentioned a code you can use at check-out for the Woll2Woll components too. The coupon code to use is IBFIREPOWER15 – which should save you 15% on FirePower X.

The Woll2Woll site has demos and a trial copy of the Firepower X components you see me using in the video so you can try things out for yourself.

The first demo app is based on part of a commercially available Delphi program which I work on as part of my ‘day job’. It is a “key personnel display” or “In/Out Board” which shows the in/out work status of employees. We quickly produce a brief version of this module running on Windows and Linux. We then swap to deploying one of Woll2Woll’s demo apps and show it running on Windows 32 and 64 bit, Linux and macOS – all from the same piece code. Pretty cool stuff.

If I can do all this in 29 minutes I think it does demonstrate why I call Delphi “my secret superpower”. Honestly, it’s not difficult to target all those platforms – the hardest part is the initial set up of the paServer and SDK but once that’s done you don’t need to do it again and deploying apps cross platform to the various operating systems is literally a matter of selecting the operating system as a target and hitting compile in the RAD Studio / Delphi IDE.

Jim McKeeth, who steered the webinar has also blogged about it on the Embarcadero Blogs site here: https://blogs.embarcadero.com/cross-platform-to-windows-macos-linux-with-firepower-replay/

If you want a copy of the slides or have questions feel free to get in touch; we present these webinars so it might help and to generally educate people about what a great development tool Delphi and RAD Studio is and I hope this comes across – it’s all about Delphi but, most especially, it’s all about you.

Here are some of the key slides…

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

Here’s a replay of the video played during the webinar – obviously it doesn’t contain the Q & A because that was live. As soon as the Embarcadero’s official recording of the webinar is available I’ll swap it out.

Note that the link to the repo shown in the video is incorrect – it’s actually ->

https://github.com/checkdigits/fancy_ui

Here’s the slides from the webinar…

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:
https://register.gotowebinar.com/register/6443217715002654221


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!

Delphi things planned for November

I thought I’d put a quick post here, partly as a reminder for me and partly to whet your appetites, for planned upcoming Delphi things in November.

On the 17th November is the “DelphiCon Worldwide 2020”. I am not doing any sessions for this as there was a specific limited and smaller cadre needed but there are some more events planned and I will be involved in them. You can read all about DelphiCon and register here: https://delphicon.embarcadero.com

Due to COVID-19 sucking all the joy out meeting up in person CodeRage has morphed a little into a new beast and it’s going to be a more hybrid offering of things like DelphiCon and a collection of related webinars.

I am planning:

A follow-up “How to use the Fluent UI look and feel with your Delphi apps” presentation. This will follow on from my previous session for the Desktop First Summit – Developing Fluent UI Apps with Delphi. This turned out to be a pretty hot topic with a lot of positive feedback. As I promised in the presentation I’m going to do a follow-up – a part two if you like – of how to actually code the Fluent UI look and feel in Delphi. The first presentation was specifically created for the Desktop First UI Summit and since we knew there were going to be a considerable number of visitors to that summit who were not Delphi ‘people’ I tried to keep the actual showing of the Delphi code to a minimum so as not to alienate them.

The Fluent UI with Delphi Part Two follow-up in November will be much more heavily code-focused with lots of video of the actual RAD Studio Delphi IDE with links to the Delphi / Object Pascal code to make it happen. I’ll also cover the components I used plus I think I might take a stab at trying to reproduce at least part of the effects using pure FireMoney FMX code.

Also, following in the theme of follow-ups I’m going to do a part two video of using Git with Delphi. This will build on my first video on the subject: Using Git Source Control with Delphi. You’ll find it, like the Fluent UI video, at the top of the Welcome Page in the RAD Studio IDE if you have it turned on.

For the follow-up I want to cover the actual Git workflow, branches, pull requests, merge requests, using GitHub issues for bug/change request tracking and other “how to actually use Git for real” type things. I notice on the Embarcadero Events page that fellow Delphi MVP Patrick Prémartin has a webinar planned for December 29th on the same subject. His presentation will be in French but I’ll try and get in touch with Patrick and see if we can’t co-ordinate some of the content.

Also, planned in November are some book reviews:

  • Books 1 and 2 by Holger Flick. I’ve already covered Holger’s excellent TMS Web Core book but blow me down if he hasn’t got at least two more to read and review. He’s a scarily prolific writer of demonic proportions. Clearly he never sleeps.
  • I have my hands on a copy the new Delphi book by the wonderful Alister Christie of LearnDelphi.tv fame. Surely by now you’ve seen at least some of Alister’s education videos? He’s been doing it for YEARS and he’s now distilled some of his epic knowledge into a book called Code Faster in Delphi.
  • And just because I can I’m also in the middle of going through a whole bunch of on-line educational courses from Wagner Langraf of TMS business components fame, especially XData. It’s going to take a little while to whip through the content since it’s extremely comprehensive but I reckon I’ll be able to produce a creditable review some time in November.

I have other things in the pipeline plus the usual heavy ‘day job’ workload – and to add to it November is personally a busy month since it includes the 11th anniversary of me emigrating from England and coming to live in the USA. It is also my wedding anniversary, US Thanksgiving (a big deal here, even with a pandemic) and my birthday too. Does real life not realize I have important Delphi things to do instead of celebrating and having fun?

Oh and the small matter of the US Presidential Election on the 3rd November too. At least I voted early so that’s one less thing to do. Election night promises to be a nail-biter. 😀

Anyway – I’m off to get back to coding in #Delphi!

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

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

Here are the slides and links for the “Fluent UI” session at the Desktop First Summit.

PART TWO OF THIS VIDEO CAN BE FOUND HERE: How to give your apps the REALLY COOL Windows 10 Fluent UI look and feel with Delphi – Part Two (codedotshow.com)

I’ll link to the replay here when it becomes available. Be sure to catch my other session: “How to terrify your users into submission and look cool at parties“.

I am also speaking on two of the panels this week too. Register now if you haven’t and catch the sessions ‘on demand’ and say hi to me in the chat window if you’re around for the panel meetings.

How to terrify your users into submission and look cool at parties

Here are the slides and links for the “how to terrify your users” session at the Desktop First Summit.

There’s a ton of extra useful links regarding UI and UX design at the end of this post.

I’ll link to the replay here when it becomes available. Be sure to catch my other session: “How to Give your Apps the REALLY COOL Windows 10 Fluent UI Look and Feel with Delphi“.

I am also speaking on two of the panels this week too. Register now if you haven’t and catch the sessions ‘on demand’ and say hi to me in the chat window if you’re around for the panel meetings.

(Photo by Maxime Roedel on Unsplash)
Picture source: https://medium.com/@artofofiare/neumorphism-the-right-way-a-2020-design-trend-386e6a09040a

Useful UI and UX links

Order Form Toy
https://codepen.io/jkantner/pen/xxVPbeB

CSS only elastic hover effect · Muffin Man
https://muffinman.io/elastic-hover-effect/

Wacky Buttons #3
https://codepen.io/AlexTaietti/details/rNewQgK

CodePen: Build, Test, and Discover Front-end Code.
https://codepen.io/

What’s a progressive web app, and why should designers care? | Inside Design Blog
https://www.invisionapp.com/inside-design/whats-a-pwa/

Building Spotify’s New Web Player : Spotify Engineering
https://engineering.atspotify.com/2019/03/25/building-spotifys-new-web-player/

Electron | Build cross-platform desktop apps with JavaScript, HTML, and CSS.
https://www.electronjs.org

Electron Apps | Electron
https://www.electronjs.org/apps

Amazon.com: Hooked: How to Build Habit-Forming Products (Audible Audio Edition): Nir Eyal, Ryan Hoover
https://www.amazon.com/Hooked-How-Build-Habit-Forming-Products/dp/B00HZY1N0K

Home | Laws of UX
https://lawsofux.com

A11y accessibility check for text colour on background image
http://www.brandwood.com/a11y/?ref=designgems.co

Fresh Background Gradients | WebGradients.com 💎
https://webgradients.com/?ref=designgems.co

Beautiful Free Images & Pictures | Unsplash
https://unsplash.com/

Neumorphism/Soft UI CSS shadow generator
https://neumorphism.io/#55b9f3

My Experience with Neumorphism (tips and resources)
https://blog.uidesigndaily.com/my-experience-with-neumorphism/

Neumorphism the right way — A 2020 Design Trend | by David Ofiare | Medium
https://medium.com/@artofofiare/neumorphism-the-right-way-a-2020-design-trend-386e6a09040a

Neumorphism in user interfaces. How UI trends reach for inspiration… | by Michal Malewicz | UX Collective
https://uxdesign.cc/neumorphism-in-user-interfaces-b47cef3bf3a6

Skeuomorph Mobile Banking | Dark Mode 🌘 by Alexander Plyuto 🎲 for Heartbeat Agency on Dribbble
https://dribbble.com/shots/8557373-Skeuomorph-Mobile-Banking-Dark-Mode

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.