Though after C# 4 (covariance and contravariance) and C# 5 (async/await) the evolvement of C# might have seemed to slow down a bit, the big picture hasn’t as shown in the [Wayback/Archive] Why is C# Evolving This Way? – YouTube video by Zoran Horvat which comes down to:
Archive for the ‘.NET’ Category
Watching “Why is C# Evolving This Way?” strengthened my realisation that the Delphi 12 language by now is light years behind C# 12
Posted by jpluimers on 2023/12/07
Posted in .NET, C#, Delphi, Development, Software Development | 9 Comments »
With Unicode symbols and the ever rising number of operators, C# sometimes seems steadily to evolve into APL
Posted by jpluimers on 2023/11/27
Finally someone phrased the feeling I had for almost a decade about the ever evolving C#: with the increasing number of operators and allowing Unicode symbols, it is slowly turning into something like APL: harder and harder to read for the majority of C# developers.
[Wayback/Archive] Matthew Crews on Twitter: “@buhakmeh Let’s be honest, we should all just be working in APL”
Via [Wayback/Archive] Khalid Needs A New Car on Twitter: “C# needs more operators.”
Related:
- [Wayback/Archive] Maarten Balliauw on Twitter: “@buhakmeh It’s already quite expressive! …”
[Wayback/Archive] Gist: Disapprove exception – from https://twitter.com/maartenballiauw/status/1508785216613199876
throw new ಠ_ಠ(); class ಠ_ಠ : public class : Exception { } - [Wayback/Archive] Look of disapproval and other emoticons · GitHub
- [Wayback/Archive] Look of disapproval and other emoticons (updated fork)
–jeroen
Posted in .NET, APL, C#, Development, History, Software Development | 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.
Posted in .NET, C#, Delphi, Development, Pascal, QC, Software Development, Turbo Pascal | Leave a Comment »
C#/.NET: for personally identifiable information, use Gaev.Blog.Examples/PiiString.cs at 3.1.1 · gaevoy/Gaev.Blog.Examples
Posted by jpluimers on 2023/10/12
A while ago [Wayback/Archive] Vladimir Gaevoy wrote a great blog post which I bumped into through his tweet [Wayback/Archive] “Blogged: .NET type for personally identifiable information (PII). Working with PII with the help of .NET String is painful. Let’s see the benefits of PiiString as explicit .NET type instead of .NET String #pii #dotnet #gdpr #security “
The tweet does not fully do justice to his blog post [Wayback/Archive] .NET type for personally identifiable information (PII), as the post not only discusses the background (GDPR and other requirements, for instance the [Wayback/Archive] GDPR compliance checklist – GDPR.eu) and the class, but also with examples how to use it for:
- conversion to/from user interface plain text
- hashing to pseudonymized/anonymized form
- encryption for more secure storage
In addition, more examples cover JSON, Entity Framework, [Wayback/Archive] NLog, and [Wayback/Archive] Serilog — simple .NET logging with fully-structured events.
Posted in .NET, C#, Development, Power User, Privacy, Security, Software Development | Leave a Comment »
Seams I might in part be the cause of (#3186) Remove easter egg “You are smarter than the average bear …” by pauby · Pull Request #3276 · chocolatey/choco
Posted by jpluimers on 2023/09/11
Only having really learned to speak English starting in my late teens, I never got the “smarter than the average bear” reference, so I filed what I thought was a bug early 2019: [Wayback/Archive] “You must be smarter than the average bear…” after upgrading to 7zip.install v18.6 and notepadplusplus.install v7.6.2 · Issue #1700 · chocolatey/choco which last year got this useful comment
I had this for several packages now, since I am updating them daily.
I am assuming there is a way to remove versions, which leads to this error until there is a new update.
It was confirmed this summer from
I’m smarter than the average bear at least once or twice a month. I think it might be packages which are pulled back and you happen to have installed that version
The bug got referenced this summer from [Wayback/Archive] Remove warning message about “smarter than the average bear” · Issue #3186 · chocolatey/choco.
This in turn lead to [Wayback/Archive] (#3186) Remove easter egg “You are smarter than the average bear …” by pauby · Pull Request #3276 · chocolatey/choco
That made me realise that for large groups of English speaking people “smarter than the average bear” would actually be a well known thing.
So I searched and learned a thing or two:
Posted in .NET, Chocolatey, CommandLine, Development, Power User, PowerShell, PowerShell, Scripting, Software Development, Windows | Leave a Comment »
.NET/C#: Small command-line tool to query REST JSON results from a batch file.
Posted by jpluimers on 2023/08/29
Often the power is in the combinations of tools.
Read until the epilogue…
Prologue
In this case, I needed to be able to query the JSON results of calls to REST services from the command-line so I could process them in Batch files.
Since I could not find anything readily available, I originally Originally I opted for the PowerShell command-line scripting tool, as that ships with recent Windows versions and can re-use anything that .NET brings. But though [Wayback/Archive] .NET has built in JSON serialization support, there is [Wayback/Archive] no querying support in it.
Then I thought about Delphi, as it [Wayback/Archive] too has a built-in JSON parser, but even the well known [Wayback/Archive] JSON SuperObject library has no query support.
Back to .NET, which – like Delphi – has a well known and respected third party JSON library as well: [Wayback/Archive] NewtonSoft JSON aka JSON.net and that one [Wayback/Archive] does have support for querying JSON with the SelectToken function.
That’s the fundament of the rest of this article, with the potential to be used in a cross-platform as well.
So no need for a plan B.
Posted in *nix, *nix-tools, .NET, Batch-Files, Conference Topics, Conferences, Development, Event, JavaScript/ECMAScript, jq, JSON, Power User, Scripting, Software Development, Windows, Windows Development | 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:
- [Wayback/Archive] Jeroen Wiert Pluimers on Twitter: “@redrapids Delphi having had virtual constructors since version 1. Wrote a blog post only years after it was introduced as too few developers (still!) realise the power of it: …” / Twitter
- [Wayback/Archive] Marco Wobben on Twitter: “@redrapids @jpluimers Perhaps not terribly unique, but definitely my favorite: Strong typing in Delphi/Pascal.” / Twitter
- [Archive] Jeroen Wiert Pluimers on Twitter: “@redrapids C#: extension methods on interfaces. Without this, things like LINQ would have been impossible. ” / Twitter
- [Wayback/Archive] c# – Can extension methods be applied to interfaces? – Stack Overflow (thanks [Wayback/Archive] Greg and [Wayback/Archive] Aaronaught):
Of course they can; most of Linq is built around interface extension methods.Interfaces were actually one of the driving forces for the development of extension methods; since they can’t implement any of their own functionality, extension methods are the easiest way of associating actual code with interface definitions.See the Enumerable class for a whole collection of extension methods built aroundIEnumerable<T>. To implement one, it’s the same as implementing one for a class
- [Wayback/Archive] c# – Can extension methods be applied to interfaces? – Stack Overflow (thanks [Wayback/Archive] Greg and [Wayback/Archive] Aaronaught):
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:
- often crowd a single namespace, so: crowding namespaces is bad.
One does see this outside the Object Oriented realm a well.
JavaScript for instance takes the crowded global namespace one step further by many libraries taking
$q,$_or$x, which is part of my take[Wayback/Archive] Jeroen Wiert Pluimers on Twitter: “@redrapids Mutation of global state followed by an overly crowded global namespace. Example on the JavaScript side: too many libraries and projects using the global `$` and `_` symbols.”.
- 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.
[Wayback/Archive] joao on Twitter: “@redrapids But to be more specific, I think sometimes there’s too much indirection with very deep class hierarchies. In the same vein those rules of “functions should have at most 6 arguments and 5/10/20 lines” can lead to a ton of indirection chasing the subfunctions being called”.
–jeroen
Posted in .NET, C#, Conference Topics, Conferences, Delphi, Development, Event, JavaScript/ECMAScript, Pascal, Scripting, Software Development | Leave a Comment »
SignalR and Design Patterns for .NET developers
Posted by jpluimers on 2023/08/22
Posted in .NET, Design Patterns, Development, R (statistics/graphics), Software Development | Leave a Comment »
Troubleshoot black screen or blank screen errors
Posted by jpluimers on 2023/08/08
Via Jan Gentleman, I learned
- about the Ctrl+⇧ Shift+⊞ Win+B shortcut on Windows 10 and 11 that restarts starts video driver
- that documentation is in [Wayback/Archive] Troubleshoot black screen or blank screen errors as
Action 1: Try a Windows Key sequence to wake the screen.
If you’re using a device with a keyboard connected to it, select Windows logo key + Ctrl + Shift + B. If you’re in tablet mode, press the volume-up and volume-down buttons simultaneously three times within two seconds. If Windows is responsive, a short beep will sound and the screen will blink or dim while Windows attempts to refresh the screen.
Via:
- [Archive] Jen Gentleman 🌺 on Twitter: “
WIN+CTRL+Shift+B: Tells the computer you’re experiencing a black screen and tries to fix it” / Twitter - [Archive] Jen Gentleman 🌺 on Twitter: “@ThomasBurkhartB It’s in the black screen documentation: https://…” / Twitter
Later I found out it also is in Table of keyboard shortcuts – Wikipedia: General shortcuts
Restart Video Driver Windows 10: Ctrl+⇧ Shift+⊞ Win+B[2][3]
Also I learned how people order the modifier keys is varying.
–jeroen
Posted in .NET, Development, Power User, Software Development, Visual Studio and tools, Windows, Windows 10, Windows 11 | Leave a Comment »
State machines in Delphi and .NET
Posted by jpluimers on 2023/02/15
Forgot to schedule this in 2014, so here it finally is, as the content is still relevant:
A long time ago (almost 10 years) I did some stuff with State Machines in .NET.
Since then the world has changed, and a lot more libraries have become available.
As I mainly use .NET and Delphi and there is a reasonable chance I need to do some more state machine work, here are some links about State Machines in both environments.
Posted in .NET, C#, Conference Topics, Conferences, Delphi, Development, Diagram, Event, Java, Java Platform, Software Development, UML | Leave a Comment »








