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,854 other subscribers

Archive for the ‘Software Development’ Category

bolkedebruin/rdpgw: Remote Desktop Gateway in Go for deploying on Linux/BSD/Kubernetes

Posted by jpluimers on 2021/12/23

On my list of things to try: an open source golang implementation of the Remote Desktop Gateway protocol: [Wayback/Archive.is] bolkedebruin/rdpgw: Remote Desktop Gateway in Go for deploying on Linux/BSD/Kubernetes.

[Wayback] [MS-TSGU]: Terminal Services Gateway Server Protocol | Microsoft Docs:

Specifies the Terminal Services Gateway Server Protocol, which is a mechanism to transport data-link layer (L2) frames on a Hypertext Transfer

Via: [Wayback] linux – Create RDP gateway in Raspberry Pi or Ubuntu – Super User

–jeroen

Posted in *nix, Development, Go (golang), Power User, Remote Desktop Protocol/MSTSC/Terminal Services, Software Development, Windows | Leave a Comment »

If you change to a 2FA, then do not just mention the month, but also the year

Posted by jpluimers on 2021/12/22

[Wayback] Contact opnemen | Persoonsgebonden budget | SVB had this:

UX: 2FA needed as of October, but which year?

UX: 2FA needed as of October, but which year?

If you are going to introduce a change in a certain period of time, ensure you not just mention only a part of when it occurs: include at least year and month, possibly even day and time.

That way your users know if they still have some time left to setup 2FA, or won’t be able to logon without 2FA at all.

Read the rest of this entry »

Posted in Development, SocialMedia, Software Development, User Experience (ux), WhatsApp | Leave a Comment »

Twitter wayback_exe generates screenshots of old websites in old browsers every two hours

Posted by jpluimers on 2021/12/22

Classic browsers

Classic browsers

Going back to in time old web-pages using old web-browsers is fun!

[Archive.is] wayback_exe (@wayback_exe) | Twitter automatically does it for you.

A short introduction is at [Wayback] muffinlabs – @wayback_exe.

There is a playground at [Archive.is] oldweb.today where you can choose which classic browser to use for viewing and what page to view with it.

You can fiddle around with the node.js based code that is available on GitHub: [Wayback/Archive.is] muffinista/wayback_exe: code for twitter bot @wayback_exe

Some screenshots:

 

–jeroen

Read the rest of this entry »

Posted in Development, Fun, JavaScript/ECMAScript, Node.js, Power User, Scripting, Software Development, Web Browsers | Leave a Comment »

Delphi design-time packages: “%1 is not a valid Win32 application”

Posted by jpluimers on 2021/12/22

For my link archive, as I hardly see this (it happens in many Delphi versions and always has to do with missing/wrong DLLs), so always forget how to solve it.

Basically it is the same fix as for Fixing hg.exe “ImportError: DLL load failed: %1 is not a valid Win32 application.”:

If you get the below error when running hg.exe, then you are mixing a 64-bit Mercurial with 32-bit dependencies.

[Wayback] XE2 – “%1 is not a valid Win32 application” when installing a package – embarcadero.delphi.ide with entries by [Wayback] Remy Lebeau and [Wayback] Jeff Overcash:

I don't know what I did, but when trying to install a set of freshly built 
Delphi Win32 packages into the IDE, XE2 is giving me this error message now:

{quote}
Can't load package ...
%1 is not a valid Win32 application.
{quote}

a


> Often that is caused by the same named 32 and 64 bit run time packages
> and the OS finding the 64 bit first when the IDE must load the 32 bit.  If
> that is the case check your path variable and make sure the 32 bit paths
> appear first.

That was the problem.  The Windows PATH variable had a 64-bit folder in front 
of the 32-bit folder.  Deleted the 64-bit files and the error went away. 
 Noe I'm getting a new error:

{quote}
The program can't start because <RuntimePackage>.bpl is missing from
your computer. Try reinstalling the program to fix this problem.
{quote}

But the "missing" package is in the same folder as the design-time package 
I am trying to install.

Since the design time location is known it is explicitely 
loaded, but the run time is implicitly loaded and follows the dll loading rules. 
  Both are dynamically loaded.

The reason you only see this the next time you restart the IDE is because the 
working directory changes to your project directory when you load a project so 
if the runtime is there it is found that way, but the next time you load the IDE 
the working directory starts in the bin directory.

I thought it was, but turns out the 32-bit output folder had been moved and 
the PATH was not updated accordingly.  Fixed the PATH and now the packages 
install.

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

Busybox ash/dash – Hexadecimal To Decimal in Shell Script (via Stack Overflow)

Posted by jpluimers on 2021/12/21

This works fine on “BusyBox v1.29.3 (2019-05-21 15:22:06 PDT) multi-call binary.” that is included with VMware ESXi 6.5 update 3:

[Wayback] bash – Hexadecimal To Decimal in Shell Script – Stack Overflow

Dealing with a very lightweight embedded version of busybox on Linux means many of the traditional commands are not available (bc, printf, dc, perl, python)

echo $((0x2f))
47

hexNum=2f
echo $((0x${hexNum}))
47

Credit to [Wayback] Peter Leung for this solution.

–jeroen

Posted in *nix, *nix-tools, ash/dash, ash/dash development, Development, Power User, Scripting, Software Development | Leave a Comment »

13 Tips for Writing Useful Unit Tests | by Nick Hodges | Better Programming

Posted by jpluimers on 2021/12/21

[Wayback/Archive.is] 13 Tips for Writing Useful Unit Tests | by Nick Hodges | Better Programming (I made direct links to the topics in the below quote):

How you write your tests is as important as writing them

1. Test One Thing at a Time in Isolation
2. Follow the AAA Rule: Arrange, Act, Assert
3. Write Simple “Fastball-Down-the-Middle” Tests First
4. Test Across Boundaries
5. If You Can, Test the Entire Spectrum
6. If Possible, Cover Every Code Path
7. Write Tests That Reveal a Bug, Then Fix It
8. Make Each Test Independent
9. Name Your Tests Clearly and Don’t Be Afraid of Long Names
10. Test That Every Raised Exception Is Raised
11. Avoid the Use of Assert.IsTrue
12. Constantly Run Your Tests
13. Run Your Tests as Part of Every Automated Build

–jeroen

Posted in Agile, Development, Software Development, Unit Testing | 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 »

Delphi MVVM links

Posted by jpluimers on 2021/12/16

After I did conference presentations and wrote a magazine article and in 2013 about Delphi MVVM using DSharp, I saw a 3 articles in 2018, then I went through a big rollercoaster involving rectum cancer treatment.

After recovering, I found that there is one commercially project working on an MVVM framework implementation.

So here are some links on MVVM from new to old:

In my experience experimenting with MVVM and other three- and four-letter frameworks, I found a recurring concept is “convention over configuration”. This relies heavily on having matching names in the various layers.

There you see a big drawback in the Delphi compiler: it lacks a NameOf expression, which means a lot of literal strings ending in your code. Few of the MVVM frameworks have good logging explaining when literals mismatch.

The C# compiler also took a while (until C# version 6 in 2015) to get one, but now supports the [Wayback] nameof expression – C# reference | Microsoft Docs. Some more documentation about this:

Furthermore, the Delphi compiler lacks helpers on interfaces and helpers for generics (heck, I would actually want full extension methods) and generic parameters for methods on interfaces (which is different from the generic parameters on the interface declaration itself). This lack of these features often cause for convoluted syntax to workaround this. Stefan explains the first lacks more clearly in [Wayback] Delphi sorcery: Why no extension methods in Delphi?.

Requests for the nameof expression and interface helpers have been there since at least 2015:

–jeroen

Posted in Delphi, Development, Software Development, Spring4D | Leave a Comment »

Always develop and test your application on multi-core machines

Posted by jpluimers on 2021/12/15

It’s an advice from a very long time ago, but wort to repeat every 20 years or so.

Develop and test your code on multi-threaded machines, not in single threaded VMs.

[Archive.is] Jeroen Wiert Pluimers on Twitter: “This sounds like @danny_thorpe on a BorCon some 20 years ago in the Windows XP era. Thread slices going down from ~10 millisecond to CPU instruction execution magnitude highly increases the chance of race conditions.… “

–jeroen

Read the rest of this entry »

Posted in Development, Software Development | Leave a Comment »

Easiest way to move the C:\MSOCache directory to another drive is to create symbolic link to the new location

Posted by jpluimers on 2021/12/15

I always forget that, when moving a folder, instead of finding all references to that folder and fixing them, you can create an NTFS symlink from the old location to the new one.

[Wayback] how to move MSOCACHE folder from C-drive to D-drive ?? – Microsoft Community (thanks [Wayback] tgunda numbering and casing updates mine):

There are too much entries in the registry to correct them manually one by one.

An easier and quicker solution is to copy the full MSOCache folder to a new place and to make a soft link to it:
  1. Create a new folder, e.g. F:\MSOCache
  2. Copy everything from C:\MSOCache to the new one.
  3. Rename the old folder  C:\xMSOCache  (Don’t delete it, just in case).
  4. Open a command prompt window in administrator mode.
  5. Write:  mklink /d c:\MSOCache f:\MSOCache
Now there is an MSOCache link at C, pointing to the new place.
If everything is OK, you can delete  C:\xMSOCache

This can be very handy when moving around large software development installations, circumventing a full uninstall/install sequence loosing lots of configuration settings.

–jeroen

Posted in Development, LifeHacker, Office, Power User, Software Development, Windows, Windows Development | Leave a Comment »