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 ‘Pascal’ Category

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 »

Brush up on your knowledge of the elements with this Chrome Experiment, an interactive Periodic Table by Sarath Saleem: goo-gl/HJ9O31 #fridayfun

Posted by jpluimers on 2024/09/03

[Wayback/Archive] https://plus.google.com/+Chrome/posts/AgtEDd7ngEJ “Brush up on your knowledge of the elements with this Chrome Experiment, an interactive Periodic Table by Sarath Saleem: goo-gl/HJ9O31

This reminded me so much about the atom spin tables I wrote some Turbo Pascal code for in the late 1980s to help a university professor. Maybe one day, I will find that code back.

(note: I expanded the actual googl link because Google URL Shortener was killed in 2019 with links stopping to work in 2025, see [Wayback/Archive] Google Graveyard – Killed by Google)

The links:

--jeroen

Posted in Development, JavaScript/ECMAScript, Pascal, Scripting, Software Development, Turbo Pascal | Leave a Comment »

Oh boy, VB.NET and JavaScript both have a `with` keyword too!

Posted by jpluimers on 2024/03/05

Last year, within a week, I saw two tweets of languages that, like Pascal, have a with statement as well:

  1. [Archive.is] Shawn Wildermuth 💻☕🎸🎥🎮 on Twitter: “JavaScript’s Forgotten Keyword (with)”
  2. [Archive.is] John Kaster #BlackLivesMatter on Twitter: “@suited_aces @marcocantu @delphijunkie @JimMcKeeth @jpluimers I present “with”… “

The first points to an article that shows the JavaScript implementation of with is very similar to the Pascal one: [Wayback] JavaScript’s Forgotten Keyword (with) – DEV Community.

Just in case some of my readers do not know my opinion of the Pascal with statement  (it even has it’s own blog category), I really think you should not use it Delphi: you should avoid the with statement as it makes your code less future proof.

The reason not to use it is called [Wayback] Accidental Shadowing in computer language speak (it also can rear its head when you define variables at different block levels like for instance this golang example: [Wayback] Warning for accidental variable shadowing with block scope – Technical Discussion – Go Forum).

Even the JavaScript specification advises against using the with keyword in [Wayback] with – JavaScript | MDN

**Warning:**Use of the with statement is not recommended, as it may be the source of confusing bugs and compatibility issues. See the “Ambiguity Contra” paragraph in the “Description” section below for details.

There have been various proposals to extend the Delphi implementation of the with statement to make it more resilient to Accidental Shadowing by forcing the usage to be prepended by a . (dot) or alias, as for instance seen in [Wayback] Re: “with” Coders are Monsters – delphi / [Wayback] delphi • View topic • “with” Coders are Monsters:

This is in fact what the second twitter messages pointed to: a VB.NET example doing just that: prepend with a dot: [Wayback] Maarten Balliauw on Twitter: “Looks like using With makes it pretty clean!… “

I was not even aware that VB.NET had it, but it has: [Wayback] With…End With Statement – Visual Basic | Microsoft Docs

And it has similar debugging issues as with Delphi as per [Wayback] The VB.NET ‘With’ Statement – embrace or avoid? – Stack Overflow:

Find the beginning of a With statement and set a breakpoint. Step to the next line (so you’re hiding the first line right under the if block). Highlight it, then ‘Add Watch’. You should see this: ‘With’ contexts and statements are not valid in debug windows.

–jeroen

Posted in .NET, Delphi, Development, Go (golang), JavaScript/ECMAScript, Pascal, Scripting, Software Development, VB.NET, With statement | Leave a Comment »

Happy birthday Turbo Pascal! Some marketing and Borland Conference videos

Posted by jpluimers on 2023/11/20

Some of you might remember [WayBack] Borland – Wikipedia, that today in 1983 shipped the first version of Turbo Pascal [Wikipedia].

It was of great influence, leading to other Turbo languages, Delphi, and – through it’s creator Anders Hejlsberg – eventually C#, .NET and TypeScript.

From the mid 1990s until the early 2000s, the Borland organised conferences (having various names, like Borland Language Conference, Borland Conference, Borland Developers Conference, Inprise Conference) had famous opening videos, and product marketing videos.

Some of them are below the signature.

Hopefully by the time of publishing, all of them are still there.

Edit 20231202:

I scheduled this post back in Winter 2019/2020 in between radiation therapy and surgery.

By now, more information on the anniversary has appeared online.

For more Turbo Pascal history, including – in reverse chronological order – old screenshorts and the first advertisements (and how quickly they changed from the pink on white to full colour ones), see my 2021 blog post Much Turbo Pascal history (via What is a Delphi DCU file? – Stack Overflow). It had many screenshots including a Turbo Pascal 1.0 screenshot, which I have added it here to the right. By now  Turbo Pascal – Wikipedia and Borland Graphics Interface – Wikipedia are quite complete history of Turbo Pascal.

Read the rest of this entry »

Posted in .NET, C#, Delphi, Development, Pascal, QC, Software Development, Turbo Pascal | Leave a Comment »

Bruce Tate on Twitter: “What’s the most unique feature of your favorite programming language?”

Posted by jpluimers on 2023/08/24

For my link archive: [Wayback/Archive] Bruce Tate on Twitter: “What’s the most unique feature of your favorite programming language?” / Twitter

From the languages that I have been using most:

It was a kind of follow-up on his earlier tweet that also sparked nice responses at [Archive] Bruce Tate on Twitter: “What is a #programming technique or construct that other people like but you think is overused?” / Twitter.

In my respons I phrased my decades long pet peeve [Archive] Jeroen Wiert Pluimers on Twitter: “@redrapids OOP: inheritance over composition. This leads to deep hierarchies that eventually nobody understands.” / Twitter.

Whereas with OOP (object-oriented programming) one should use composition over inheritance, often the reverse is true.

Actually my take can be generalised into two directions as these hierarchies:

  1. often crowd a single namespace, so: crowding namespaces is bad.
    One does see this outside the Object Oriented realm a well.
  2. often have many levels of indirection, so: overdoing indirection is bad
    One does see this outside the Object Oriented realm a well, just not as pronounced.

–jeroen

Posted in .NET, C#, Conference Topics, Conferences, Delphi, Development, Event, JavaScript/ECMAScript, Pascal, Scripting, Software Development | Leave a Comment »

The Delphi and Turbo Pascal tools page by Duncan Murdoch has moved domain from www8.pair.com to murdoch-sutherland.com

Posted by jpluimers on 2022/07/13

For a very long time (about 2 decades) Duncan Murdoch had his home page at www8.pair.com/dmurdoch which somewhere in 2021 has moved to

I figured that out thanks to some help from [Wayback/Archive] Pair Networks (@pairnetworks) / Twitter.

So you need to do a replacement of many URL link prefixes

  • from http://www8.pair.com/dmurdoch/
  • to: http://murdoch-sutherland.com/

For instance some old and new pages:

Read the rest of this entry »

Posted in Borland Pascal, Delphi, Development, Pascal, Software Development, Turbo Pascal | Leave a Comment »

A twitter call to say nice things about technology sparked interesting threads

Posted by jpluimers on 2022/05/27

A while ago [Archive.is] Adam Jacob on Twitter: “Let’s say nice things about technology today. I’ll start. If it wasn’t for @lkanies and @puppetize, there is no way we would have been able to adapt as an industry to the rise of the cloud. Quote tweet me with your own.” sparked some interesting threads.

First posts are below; click on them to see the full threads.

Read the rest of this entry »

Posted in Chrome, Configuration Management, Development, DevOps, Firefox, History, IaC - Infrastructure as Code, Infocom and Z-machine, Infrastructure, KVM Kernel-based Virtual Machine, LSI/3ware, Open Source, PDP-11, Power User, PowerShell, Puppet, Python, Qemu, Rust, Safari, Scripting, Software Development, UCSD Pascal, Vagrant, Veewee, Virtualization, Web Browsers, Xen | Leave a Comment »

On Windows, keep the lifetime of relative pathnames as short as possible because of thread-safety issues

Posted by jpluimers on 2022/05/18

Subtitle:

GetFullPathName thread-unsafety because of SetCurrentDirectory isn’t, so derived functions (like Delphi GetDir/ChDir/TPath.GetFullPath, or .NET System.IO.Path.GetFullPath) are not thread-safe either (via The Old New Thing)

A while ago I got a big reminder because of [Wayback] What are these dire multithreading consequences that the GetFullPathName documentation is trying to warn me about? | The Old New Thing:

Read the rest of this entry »

Posted in Delphi, Development, Pascal, Software Development, Turbo Pascal, Windows Development | Leave a Comment »

Happy 20th Anniversary, .NET!

Posted by jpluimers on 2022/02/13

I almost missed this: [Wayback/Archive] Happy 20th Anniversary, .NET! – .NET Blog.

Given I am still recovering from the long period of cancer treatments, I am glad that Beth Massi reminded me (a “thank you” is below the signature):

https://twitter.com/BethMassi/status/1492893829535514634

To keep the story about myself short: currently I am cancer free, long term (i.e. 10 years) looks dim, but my mental focus has recovered and I am getting joy again doing technical stuff. I am still working on the increasing my mental and physical endurance, so real work is not yet possible but unlike half a year ago, I am confident I will be able to eventually.

Back to the .NET story (as I have learned when to conserve energy): I kept track of Anders Hejlsberg ever since Turbo Pascal 1.0 on CP/M (see The calculators that got me into programming (via: calculators : Algorithms for the masses – julian m bucknall)) and when after the Visual J++ lawsuits things a first got a bit too silent to my liking.

Read the rest of this entry »

Posted in .NET, .NET 1.x, About, Conferences, DevDays09, Development, Event, History, Pascal, Personal, Software Development, Turbo Pascal, Visual J++ | Leave a Comment »

Jeff Duntemann on Twitter: “I adapted my book Borland Pascal 7 From Square One for FreePascal. This involved cutting out obsolete stuff like the BGI and TurboVision, and adding a few things here and there. I then released it as a free PDF ebook

Posted by jpluimers on 2021/12/21

Cool!

{Wayback] www.copperwood.com/pub/FreePascalFromSquareOne.pdf

This is the FreePascal adoption of Borland Pascal from Square One: Duntemann, Jeff

Via: [Archive.is] Jeff Duntemann on Twitter: “I adapted my book Borland Pascal 7 From Square One for FreePascal. This involved cutting out obsolete stuff like the BGI and TurboVision, and adding a few things here and there. I then released it as a free PDF ebook: #pascal #programmingisfun … “

–jeroen

Posted in Borland Pascal, Development, FreePascal, Pascal, Software Development | Leave a Comment »