[Wayback/Archive] ashmind/SharpLab: .NET language playground is hosted on [Wayback/Archive] SharpLab.io and has this README:
Archive for the ‘C#’ Category
sharplab.io – ashmind/SharpLab: .NET language playground
Posted by jpluimers on 2024/05/08
Posted in .NET, C#, C# 10, C# 11, Development, F#, Software Development, VB.NET | Leave a Comment »
Not sure I like this without tail recursion
Posted by jpluimers on 2024/05/07
A while ago Andy Gocke posted this bit of C# 11 code:
[Wayback/Archive] Andy Gocke on Twitter: “Can’t believe none of that “C# is turning into F#” people have noted that this is legal code in C# 11″
Posted in .NET, C#, C# 10, C# 11, Development, F#, Software Development | Leave a Comment »
Please do not make your C# code an obfuscation contest
Posted by jpluimers on 2024/04/23
You. This is valid C# code. Guess what it does [Wayback/Archive]:
for ( var (f,l) = (1, 10); f <= 10; Console.WriteLine($"{f} + {l} = {f + l}"), f++, l-- );
Via [Wayback/Archive] Khalid 🐕🦺🐕🐩 on Twitter: “I’m trying some programming in #csharp today. Am I doing this right? #dotnet”
–jeroen
Posted in .NET, C#, C# 10, C# 11, Development, Software Development | Leave a Comment »
C# List Patterns: csharplang/list-patterns.md at main · dotnet/csharplang
Posted by jpluimers on 2024/02/07
For my URL list:
Posted in .NET, C#, C# 11, Development, Software Development | Leave a Comment »
awaescher/Fusion: 🧰 A modern alternative to the Microsoft Assembly Binding Log Viewer (FUSLOGVW.exe)
Posted by jpluimers on 2023/12/18
[Wayback/Archive] awaescher/Fusion: 🧰 A modern alternative to the Microsoft Assembly Binding Log Viewer (FUSLOGVW.exe)
So, do you know what “Enable immersive logging” means? Or why you should separate log categories from “Default” and “Native Images”? Did you ever forget to disable the log again and wondered why every .NET application was that slow and your disk ran out of space?
…
Forget all the setup upfront – just hit “Record” to capture your assembly logs. If you are done, click “Stop” again. That’s it.
Via [Wayback/Archive] Meik Tranel on Twitter: “@Nick_Craver Take this: github.com/awaescher/Fusion Nice UI and never forget to disable that env var ever again.”.
–jeroen
Posted in .NET, C#, Development, F#, Software Development, VB.NET | Leave a Comment »
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
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:
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 »
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 »








