The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,860 other subscribers

Archive for the ‘EKON’ Category

Not just for Delphi, but any environment: Why You Should Use NowUTC Instead of Now in Delphi: A Quick Guide

Posted by jpluimers on 2025/07/30

The video is from a while back, but very relevant and shows in Delphi what I have been advocating to software developers for a very long time:

  • when timestamping use UTC
  • when storing the timestamp store both the UTC timestamp and optionally the UTC timezone/offset and optionally daylight saving indicator of the region it was recorded from

This holds for any environment, so .NET / C#, Python, Delphi and many others as well:

Read the rest of this entry »

Posted in Conferences, Delphi, Development, EKON, Event | Leave a Comment »

Laurensvanrun/Delphi-Promises: Delphi implementation of promises for asynchronous programming.

Posted by jpluimers on 2025/03/19

On my research list after making this short note April 2024: [Wayback/Archive] GitHub – Laurensvanrun/Delphi-Promises: Delphi implementation of promises for asynchronous programming.

My first impression is that this might be on the same level of usefulness and influention as these two:

Notes:

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Development, EKON, Event, ITDevCon, Software Development | Tagged: , | Leave a Comment »

Old programming books had cool little “puns” in their references, modern lack them in their indices. On the why, and history of them.

Posted by jpluimers on 2025/01/01

I wrote a two earlier blog posts around puns in programming book indices before:

  1. the 1992 Turbo Pascal 7.0 Language Guide having both entry in the manual about Recursion (“recursive loop, see recursive loop”) which of course is similar to “infinite loop” and entries for “infinite loop See loop, infinite” and “loop, infinite See infinite loop”.
  2. infinite loop in “LaTeX: A Document Preparation System” by Leslie Lamport, printed in 1994.

In the last one, I promised to list more occurrences which I now finally had time for to do.

But let me first elaborate more on the observation that modern computer books (like for instance on C# and Delphi beyond version 1) lack these kinds of index pun.

On the Delphi side, the index entry joke for recursion got removed no later than Delphi 3 (I am still looking for a Delphi 2 version of the Object Pascal Language Guide, see further below) even before the book being fully redone electronically and the index pages generation being automated in

I think I even understand why that is: the process of creating of indices. By the start of this century, more and more indices were automatically being generated and for the last 2 decades or so, all of them are. Back in the days however, indices were mostly done by hand. Nowadays, with everything automated, it is actually pretty tricky in most environments to add such an “infinite loop” index entry like in the Turbo Pascal book, as it would require two things at once:

Read the rest of this entry »

Posted in .NET, C, C#, C++, Conference Topics, Conferences, Delphi, Delphi 1, Delphi 2, Development, EKON, Event, History, LaTeX, LifeHacker, LISP, Mathematics, Pascal, Perl, PL/I (a.k.a. PL/1), Power User, science, Software Development, Turbo Pascal, Typesetting | Tagged: , | 4 Comments »

GitHub – src-d/hercules: Gaining advanced insights from Git repository history.

Posted by jpluimers on 2024/11/12

[Wayback/Archive] GitHub – src-d/hercules: Gaining advanced insights from Git repository history.

This project, with the command-line tools hercules and labours is on my research list as it can get pretty good long-term insights on project health (the tool is programming language independent).

Especially the half-life of code is a good measurement, as well as the existence of code bursts (hello major version increments!).

This research part is important: [Wayback/Archive] Change Bursts as Defect Predictors – Publications – Software Engineering Chair (Prof. Zeller), by Nachiappan Nagappan, Andreas Zeller, Thomas Zimmermann, Kim Herzig, Brendan Murphy

Read the rest of this entry »

Posted in BASTA!, Conference Topics, Conferences, Development, DVCS - Distributed Version Control, EKON, git, ITDevCon, Software Development, Source Code Management, Static Code Analysis | Leave a Comment »

Kevlin Henney on generative AI creating job security for programmers:

Posted by jpluimers on 2024/08/13

Kevlin Henney being interviewd by Richard Seidl

Kevlin Henney being interviewd by Richard Seidl [Wayback/Archive] MDVxFQrqZnh1OxlP.jpg (1200×675)

The quote from this abstract of the January 2024 interview with Kevlin Henney by Richard Seidl  is important:

You really need to understand history. First of all, you need to understand history. Then, you need to understand language. And you need to go and talk to some customers. And then, you will realize how safe your job is. Because programming is not merely the assembly of syntax. It is the application of precision. It is the seeking of precision.And what is the answer? What is it that I’m trying to do?And it turns out that if you specify something badly in natural language, it works out even worse than if you did it in code.And we already know, for example– we can actually take inspiration from the most widely used programming paradigm on the planet, the spreadsheet. What we know from the spreadsheet is that most people who use a spreadsheet do not have a software development background.

Yes.

We also know that most spreadsheets are unmaintainable, incomprehensible, and buggy. If we are saying that the future of software development is people who are not software experts doing this stuff, your job is safe.

It is a fragment of the vodcast episode [Wayback/Archive] Software Engineering im Jahr 2034 – Richard Seidl which limits the quote to this:

Read the rest of this entry »

Posted in AI and ML; Artificial Intelligence & Machine Learning, Conference Topics, Conferences, Development, EKON, Event, GitHub Copilot, LLM, Software Development | Leave a Comment »

Delphi has had a more type safe FreeAndNil or a while now, but in order to do so it lies to you

Posted by jpluimers on 2024/06/26

During my year+ of cancer treatments, Embarcadero did a tiny thing that makes [Wayback/Archive]FreeAndNil safer to use. In order to do so, the method now lies to you by taking a const [ref] parameter which technically it is not allowed to change, but the internal hackery allows it to. Dalija Prasnikar explained it in 2020: [Wayback/Archive] Magic behind FreeAndNil.

The new signature is this:

procedure FreeAndNil(const [ref] Obj: TObject); inline;

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Delphi 10.4 Sydney (Denali), Delphi 11.0 Alexandria (Olympus), Development, EKON, Event, Software Development | 2 Comments »

Where can I find a comprehensive list of Delphi “compiler magic” declarations? – Stack Overflow

Posted by jpluimers on 2022/11/16

A long time ago, I posted one of the answers to [Wayback/Archive] Where can I find a comprehensive list of Delphi “compiler magic” declarations? – Stack Overflow

So for my link archive, these are the main ways of assembling an (always incomplete, as only partially documented) list:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, EKON, Event, Software Development, Undocumented Delphi | Leave a Comment »

+Stefan Glienke​ at EKON21: I don’t count sheep, I count references.

Posted by jpluimers on 2019/07/08

+Stefan Glienke​ at EKON21:

I don’t count sheep, I count references.

Response from +Roald van Doorn​:

When you reach -1 you wake up from a nightmare.

Source: [WayBackJeroen Wiert Pluimers – G+

Posted in Conferences, EKON, Event, Fun, Quotes, T-Shirt quotes | Leave a Comment »

Note that the Delphi superobject library has changed to “not maintained” in december 2018, has problems with large address aware

Posted by jpluimers on 2019/05/02

A while ago I found out the [WayBack] not maintained status · hgourvest/superobject@f1c42db · GitHub.

This means you should not use the [WayBack] superobject JSON library in Delphi any more: there won’t be any fixes.

Many people use it, especially because it used to be much more stable than the built-in JSON support of Delphi.

One breaking issue in superobject is the lack of large address space support: due to the pointer calculations in various places, it does not support pointers above the 2 gibibyte boundary as filed in the 2016 [WayBack] Issues with {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} · Issue #22 · hgourvest/superobject · GitHub

This gives problems in at least this case:

  • enabling {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} (in older Delphi 7 through 2006 also versions this was {$SetPEFlags $20})
  • using top-down memory allocation, for instance by:
    • a user setting HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management value AllocationPreference to hex value 00100000
    • using FastMM4 with the (default) {$define AlwaysAllocateTopDown} setting

Example registry file and batch file to enable top-down memory (reboot afterwards):

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"AllocationPreference"=dword:00100000

Command to view:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" | findstr "AllocationPreference"

Command to enable:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v AllocationPreference /t REG_DWORD /d 00100000 /f

Command to disable:

reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v AllocationPreference /f

Large Address Aware is a nightmare

Be very very very careful with this, and by enabling Large Address Aware to your executables, as many times they can load 3rd party libraries that often are beyond your control.

Even if there is a slight chance that your code is being used with Large Address Aware enabled, then follow guidelines line in [WayBack] windows – Unit Testing for x86 LargeAddressAware compatibility – Stack Overflow

Summary of [WayBack] memory – Drawbacks of using /LARGEADDRESSAWARE for 32 bit Windows executables? – Stack Overflow:

blindly applying the LargeAddressAware flag to your 32bit executable deploys a ticking time bomb!

by setting this flag you are testifying to the OS:

yes, my application (and all DLLs being loaded during runtime) can cope with memory addresses up to 4 GB.
so don’t restrict the VAS for the process to 2 GB but unlock the full range (of 4 GB)”.

but can you really guarantee?
do you take responsibility for all the system DLLs, microsoft redistributables and 3rd-party modules your process may use?

Edit 20240628

Earlier this year, the SuperObject Delphi library got archived on GitHub. Definitely unmaintained: [Wayback/Archive] GitHub – hgourvest/superobject: This repository has been archived by the owner on Feb 27, 2024. It is now read-only.

The XSuperObject library mentioned below in a comment has not been maintained for 4 years either ( [Wayback/Archive] GitHub – onryldz/x-superobject: Delphi Cross Platform Rapid JSON: “vkrapotkin Now ParseFromFile can read UTF8-BOM files (#136) 2d3ec01 · 2020-12-09”), so I wonder what alternatives are still available.

--jeroen

Posted in Conference Topics, Conferences, Delphi, Development, EKON, Event, Software Development | 4 Comments »

EKON 21 – The Conference for Delphi & More

Posted by jpluimers on 2017/10/24

I barely made it to EKON21 mainly because of extensive family members care-taking, so could not attend everything and archived the site for

The Conference for Delphi & More | 23 – 25 October 2017, Cologne | presented by Entwickler Akademie and Entwickler Magazin

[WayBackEKON 21 – The Conference for Delphi & More:

It seems one older conference is archived.

–jeroen

Posted in Conferences, Delphi, Development, EKON, Event, Software Development | Leave a Comment »