The Essence of Code.

Introduction I’ve spent the largest part of my career as a software developer working on line of business applications in an object oriented programming arena. This has served me well and paid the bills, but the more experience I gain, the more I’m reminded that what I used to really enjoy in programming is not … Read more

Bowling Challenge Solution

Bowling Challenge Solution. For my YouTube channel, I recorded myself solving the Bowling Challenge. This challenge isn’t entirely new to me, I’ve solved it once before as part of the hiring process for an employer. That was several years ago however, and while I remembered that this was an entertaining challenge, I remembered little about … Read more

Schrödinger’s Memory Manager

Schrödinger’s Memory Manager Besides the practice of writing software it’s self, there are few activities more engaging for a software developer, than to watch other developers argue about software development in social media. I’ll admit that while I usually abstain from taking part in such arguments, I am often tempted, and sometimes actually do stoke … Read more

Delphi, the best kept secret.

Delphi, the best kept secret. I tire of hearing it. Who uses Delphi? Isn’t it old? It’s niche? Can I get a job in it? Around 20 years or so of hearing the same ill-considered non-sense perpetuated. It’s time to set the record straight, and to be honest too. Introduction There’s a lot of negative … Read more

Memory Safety and Object Pascal

Memory Safety and Object Pascal Introduction The U.S. government recently made an appeal to the software development industry, to stop using C and C++, and to favor “Memory Safe” languages instead. Object Pascal is recognized by the NSA as a memory safe language, however, there does seem to be some misunderstanding in the community about … Read more

The costs and benefits of Interfaces.

The costs and benefits of Interfaces. Introduction I’m a fan of interface driven development in Delphi, and I am not quiet about that. Like any syntax feature however, it’s important to understand both the benefits, and the costs of the feature. Interfaces have several great benefits, but of course they also come with costs.Today, I’m … Read more

Why not GitHub? – Because not Git…

Why not GitHub? – Because not Git… If you feel you’re having “De ja vu”, this is possibly the third time that I’ve written about not using GitHub, or more specifically, not using Git. I’ve wrestled with this problem for several years now, and finally, I’m just done trying to use GitHub to host my … Read more

Lock-less Multi-Threading in Delphi

Lock-less Multi-Threading in Delphi In this video, I demonstrate a technique for communicating between threads in a Delphi application, without using typical locking mechanisms such as critical sections. I create essentially a ring-buffer based signaling system ( a message pipe ) for sending messages from one thread to another, and then use two such pipes … Read more

Custom VCL Control for getting window handles. (Spy++ style reticle)

Custom VCL Control for getting window handles. (Spy++ style reticle) Introduction Over the years, I don’t think I can count the number of times that I’ve wanted to send window messages to some other application. It can be useful for automating the target application, or even as a primitive form of Inter-process communication. Each time, … Read more

Building REST services with RAD Server

Building REST services with RAD Server for Delphi and C++ Builder. Almost identical videos on how to build REST applications using RAD Server, with either Delphi or C++ Builder.These would have been recorded while I was an employee at Embarcadero, for a skill-sprint, code-rage, or other online community event. (Delphi version, best viewed full-screen >= … Read more

Media file meta-data on Windows in Delphi.

Media file meta-data on Windows in Delphi. Introduction Here’s a little Déjà vu for regular readers of my blog. One of my customers emailed me with an interesting problem this morning. “I need to be able to peek into a video file, specifically a .mp4 file, and determine if it’s PAL or NTSC.”This seemed like a … Read more

Present App, a 23rd birthday present to Delphi

Present App, a 23rd birthday present to Delphi I decided to write an app to celebrate Delphi’s 23rd birthday and valentines day.Happy Birthday my beloved Delphi! The binaries provided here are Debug builds, and should be considered an Alpha version. The following are untested binaries for Mac / iOS provided by Jim McKeeth (Thank you!)Note: … Read more

The Ultimate Developer Keyboard

The Ultimate Developer Keyboard? I never really thought of my keyboard as an important accessory, but rather, as that essential item that you buy for the cheapest price possible and be done with. I mean, a keyboard is a keyboard right? Well, I discovered that your choice of keyboard can make a big difference, and … Read more

From CSV to SQL Server like a JEDI.

From CSV to SQL Server like a JEDI. I needed to get some simple sample data from a CSV file into a SQL database, and it occurred to me that I’d seen a nice CSV component several years ago, in the JEDI component set. In this short video, I’ll demonstrate loading CSV data into a … Read more

Using TPath to locate useful paths

Using TPath to locate useful paths A quick tip for cross-platform development.How to use the TPath class to locate useful directories across multple platforms. – I don’t remember recording this video, but from the sound of my voice and how slowly I appear to be thinking in places, it seems I may have been sick … Read more

REST, You’re doing it wrong.

REST, You’re doing it wrong. Introduction My wife recently expressed her frustration with the abundance of blog posts entitled ‘you’re doing it wrong’, or some approximation there-of; and so I could hardly resist writing one of my own! In this post I’d like to take a look at REST, and how it’s being used, or … Read more

RAD Studio Tip: Using resource scripts to organize project dependencies.

RAD Studio Tip: Using resource scripts to organize project dependencies. RAD Studio has been around for a very long time, and continues to see new feature development. Consequently, it’s sometimes easy to forget some of the great features that have been included in the product for several years. This happened to me recently and so I … Read more

On SoA and SOAP and REST with WebBroker

On SoA and SOAP and REST with WebBroker There has been a lot of talk from Embarcadero recently, regarding their RAD Server product, which is an excellent product, but today I’d like to discuss a far older technology included with RadStudio and related products. Web Broker has been in Rad Studio since the 90’s and … Read more

Windows Media Player in Delphi

Windows Media Player in Delphi Introduction Delphi ships with a component ‘TMediaPlayer’ for playing media files such as video and audio. This component remains in Delphi for the sake of compatibility with older versions, but is quite out-dated and, due to a decreasing number of compatible codecs, it is becoming difficult to maintain. There is … Read more

Configure Delphi and RedHat or Ubuntu for Linux development.

Configure Delphi and RedHat or Ubuntu for Linux development. One of the more exciting features of the pending 10.2 release of Delphi and RAD Studio, is support for targeting Linux. In this post, I’m going to step you through setting up your development environment to deploy applications to either RedHat Enterprise or Ubuntu 16.04. From … Read more

The encapsulation bug that was a feature.

The encapsulation bug that was a feature. The recent release of RAD Studio Berlin 10.1 saw a fix to a long standing bug in the Delphi compiler. That-is, helper classes are no longer able to access the private members of their base class, as they’d been able to do in the past. This put me … Read more

JSON with RadStudio Delphi or C++ Builder

JSON with RadStudio Delphi or C++ Builder An introduction to JSON and using it within RadStudio Delphi or C++ Builder. What is JSON? JSON (JavaScript Object Notation) is a popular format for the encapsulation of structured data. If you’re familiar with XML, you can consider JSON as doing the same job fundamentally, though the two are … Read more

Databases at Runtime with RadStudio

Databases at Runtime with RadStudio It can be advantageous to learn how to connect to a database through code alone for certain scenarios, server-side code for example, where a UI is not required. It’s also useful for separating your code (and therefore logic) from the UI, which is often a beneficial design practice. Before we … Read more