I refactor your old code for free!
Do you have an old project that still uses AnsiStrings, pointers in arrays or TStringLists, hardcoded typecasts, goto, timers, Application.ProcessMessages, global variables, etc?
Would like to get it up to date, by all modern programming standards, and compatible with 64 bit and the latest Delphi edition? I will do it for free.
Amsterdam Delphi Summit 2025
If you have been to the Delphi Summit and we had the chance to talk and I haven’t sent you yet and email back, please drop me an email.
I have contacted some of the people I meet there, but for some others I have lost the contact details.
Hi there!
I’m Gabriel, a seasoned software engineer (MVP) based in EU with over two decades of hands-on experience in both software and hardware. I have a bachelor degree in applied electronics (UPIT) and a Master of Science in Engineering (University of Liverpool). I’ve embarked on a fascinating journey through the ever-evolving programming landscape. My programming odyssey began in 1992 when I put my hands on a Z80 computer. Pascal followed in 1995 and I kept using Delphi until today (Delphi 11). Since then, I’ve traversed multiple programming languages, but Delphi has always been my cherished “home.”
I am interested in all the nitty-gritty aspects of low-level coding, binary files, speed optimizations, memory management, etc.
I am adept of clean, secure and modular code, with zero global variables, zero compiler hints/warnings, zero memory leaks. I develop my own software products under the CI/CD philosophy. Still I am a FreeAndNil-er*.
Back in the 2000s, I developed a popular wallpaper manager in Delphi that reached over 1,000 downloads per day.
I also wrote about 100 visual components (VCL) and quite a bunch of libraries. One of them, the general-purpose Light Saber library, consists of about 300 files and it is distributed with Delphi (via GetIt). The latest addition is an image recognition library, the only one of this kind for Delphi.
In 2006, I switched to the medical field and co-founded a bioinformatics-focused company, specializing in software solutions for molecular biology. We developed over 20 bioinformatics products, all written in Delphi. Our flagship product (close to 400,000 lines of code) was a DNA sequence assembler for Sanger chromatograms.
The software has been sold worldwide and is used by universities, research institutes, hospitals, and government bodies, and has been cited in thousands of scientific articles and over 200 books and patents. For example, one cool place where it was used, is scientific research about storing binary information in the DNA of a bacteria. How great is the technology today?
In the last years I released four Delphi books, but I won’t stop to this number! Two more are under production.
In the free time I build electronic projects with my son, read science fiction, science news and listen to my music and do (looong) bicycle rides.
Code is like humor…. When you have to explain it, it’s bad. – Cory House
Recent blogs:
-
Is it wise to use OnSaveState in FMX?
Android’s lifecycle model is a mess. The OS freely kills your process whenever it needs RAM, and you—the app developer—are expected to deal with the fallout. Android shifts its memory problems onto the app layer, leaving you to rebuild your internal state because the OS felt like freeing 200 MB. FireMonkey tries to give you…
-
Why we can’t close a form that runs a tight FOR loop, even if we are using Application.ProcessMessages?
A stackOverflow user wanted to know why clicking on the form’s close button while some FOR loop is running does nothing: procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 0 to 9999999 do begin Memo1.Lines.Add(‘hi’); Application.ProcessMessages; end; end; The issue comes from the lack of understanding of how the forms work. Here is…
-
The new PUSH/POP directive in Delphi 13
The {$PUSHOPT} and {$POPOPT} directives introduced in Delphi 13 are used to save and restore the current set of compiler options and warning configurations. Useful when we want to include .inc files or code sections that might alter compiler settings, and we want to ensure that these changes do not affect the rest of your…
-
AI client library for Delphi
I decided to open source my AI client. For the moment it only supports Gemini, but it can be easily supported to support multiple LLMs by extending TLLMObject. * Support for sending multiple files to AI * Support for multi-turn chat * GUI to set up the LLM parameters * Save settings to disk for…
-
About the new Delphi 13 “magic” routine NameOf (also UnitName)
NameOf is a magic function introduced in Delphi 13. What it does is return the identifier name of a symbol (routine, variable, etc) as a string, as resolved by the compiler. It can be used for: Consistent naming Its main advantage is that if we later rename the function, the compiler forces the change…
-
How to easily port the IDE (registry) settings when you reinstall or upgrade Delphi
When I upgrade to the next Delphi version, instead of re-configuring the IDE from zero, I usually “port” the settings from the old version to the new version. For this: I extract some registry keys to text (reg) files In each file I (batch) replace the old version to new version (for example “21.0” to…
