As software developers, on the whole, it’s relatively simple to switch to working from home, and many of us work from home regularly, or all the time. However, with a quarter of the world’s population already in lockdown, the circumstances are not exactly the same as your typical week at work.
With a majority of workers now trying to work from home, the daily mix of office news, banter, and general togetherness has been dramatically changed.
This month has seen an ever-changing global situation with the outbreak of the coronavirus. The first time that I can remember I had to radically change / cancel a live event due to circumstances out of our control.
At the start of March we were keeping an eye on the news to see how the spread of the coronavirus had impacted Denmark. With only 2 cases in Denmark, the advice at the time was that it was set to travel and we proceeded with events in Kolding and Copenhagen. Especially nice to see was a growing number of new and younger faces, and a good proportion who’s first-ever version of Delphi or C++Builder what 10.something.
The events were well supported by the local Danish user group, including Danish MVP Jens Fudge, who just so happened to bring along a couple of bottles of his homebrew to share with me afterwards.
The event gave a good chance to discuss the current industry trends, including what end-of-life for Windows 7 means for developers, the current operating system landscape and modern application architectures. Following my 2+ years away at Nokia, it was my first live event in Denmark for over 3 years, so it was a good time to reflect on the dramatic changes in the Idera group over that time too.
This week, I was due to be in Warsaw, Poland. Again we have been closely monitoring advice from local government and our local partners, and on Monday we decided to change the event from being live, to virtual. This is a big change at last minute, but totally the right thing to do. Running a similar event as a webinar is a major challenge, in no small part due to the reduced interaction that you can have with an audience. 3 ½ hours is certainly the longest WebEx I can remember running on my own.
The following is a summary of some key takeaways from the events and hot topics of conversation.
Key Topics – Windows 7 EOL and Rise of Windows 10
The discussion around Windows 7 end-of-life focused around the lowering (but still present) need to support windows 7 and earlier editions, but also how business uses are moving into Windows 10 at a rapid rate, and is driving app modernisation focus. The VCL is, in my opinion, still the best Windows native UI development framework on the market and includes support for the new Window 10 controls in the VCL (that includes support for earlier editions of Windows).
The VCL enables developers to release updated UI’s, including touch enabled controls and wide gesture support to make the most of modern platform hardware. One of the key features with more users now on Windows 10 is HiDPI support.
HiDPI and Per Monitor resolution.
One very important change to keep applications looking good on Windows 10, and in certain places to keep icons being useful, comes from the HiDPI support.
Windows now support multiple DPI’s with each monitor running at its own scale. This can dramatically change the look of the screen as programs move from one screen to another.
If you are needing any reason to move to the latest versions of RAD Studio, this is probably it! – Key to getting ready for HiDPI today is the icons in your applications. Traditionally, these have been served via the TImageList. While this is still the basis for icons in the future, you should also look at the Virtial ImageList components that enable automatic serving of images to match the resolution of the current monitor.
For a deeper dive into using HiDPI support I recommend this video from Den Zubov, Lead Developer at Fast Reports
Windows 10 APPX Distribution
Additionally, we discussed the value of the APPX file generation (that creates a partially-sandboxed application) for support local distribution but also accessing the Windows 10 Store. This is enabled through the Windows 10 Desktop Bridge (something Embarcadero was the first IDE or Installer anywhere globally to support)
We also discussed the future of Windows deployment, and the increased focus Microsoft is putting on deploying via signed packages created with the APPX and future updates to the format. A major benefit here is to lower the amount of Anti-Virus CPU cycles required when applications are created in the partially-sandboxed format. This very much is driven by the success on mobile of containerized applications.
In short, the landscape today is very around 40% Windows 40% Android, with iOS. macOS and Linux making up the rest. – Desktop first, and expand out to mobile is a valid strategy, as is mobile-first, if you have the right backend in place. While you should target and test Android first, the great thing about the FMX framework is you can rapidly get to iOS with the same source code.
One thing that was interesting to see is that many developers are still not aware of RAD Server. REST and JSON is a fundamental element to building modern middle-tier servers and services today.
RAD Server offers a full MEAP, that can be deployed in Linux or Windows and even offers support for Docker Containers. If you are new to Docker and containers and wonder how they can help you with your application development, then I would definitely recommend watching A Practical Introduction to Docker, presented by Malcolm Groves
I would also recommend getting to know the REST Debugger, which is in the bin directory of RAD Studio.
Data Data Data… (and component migration)
Finally, its clear Data is everywhere today, and FireDAC does a great job of providing very fast, and very stable database connectivity that works over Windows, Linux, macOS, iOS and Android Migrating to FireDAC from ADO or the BDE is an important step for many. reFIND is a fantastic tool to use to help that migration. It can help with adding in uses, removing old ones, and even updating component properties. It’s very flexible thanks to the ability to build your own Pearl script that the tool uses. This is very simple to do and when used with a batch file to automate code migration, it can drastically simplify the movement from old DB components to more modern ones. (and in fact, it can be useful for moving almost any other component too).
While a cornerstone of Delphi is code portability, and the ability to keep moving code forward, there are a few things that have had impacts over time. Unicode is one of them, and the introduction of ARC has meant different things to review on mobile for memory management. ARC is on the way out, (as the 10.4 Delphi roadmap shows), and this may actually enable better portability of pre-Unicode code in some regards. So certainly something to keep an eye on. – More information on migrating code is available at the Migration Center.
Programming with Delphi & InterBase