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

Archive for the ‘Development’ Category

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 »

DroidCam – Webcam for PC – Apps on Google Play

Posted by jpluimers on 2021/12/21

Since most phones still have better cameras than most laptops, this is on my list of things to try:

Android app: [Wayback/Archive] DroidCam – Webcam for PC – Apps on Google Play (there is also an iOS app, but I don’t use iOS devices)

Client software for Windows and Linux:  [Wayback/Archive] Dev47Apps

DroidCam turns your phone/tablet into a webcam for your PC.
Use it with chat programs like Zoom, MS Teams, and Skype.

Main Features:
– Chat using “DroidCam Webcam” on your computer, including Sound and Picture.
– Connect over WiFi or USB cable.
– Unlimited free usage at standard definition.
– Keep using your phone with DroidCam in background (Android).
– Simple, safe, efficient, and trusted by millions of people worldwide.

DroidCamX Pro Features:
– Switch to HD Mode for 720p/1080p high definition video.
– Camera controls: toggle light, enable continuous auto focus, zoom in/out.
– Rotate, Flip & Mirror the video to better match your setup.
– Adjust brightness, contrast, add video delay and adjust audio volume (Windows).
– USB-Only mode for extra privacy and security.
– Option to auto-mute phone calls.
– No Ads.

I am really curious how they did this on the software side: developing and signing drivers; low-latency communications protocol, etc.

Via: [Wayback/Archive] Apple deelt workaround die scherm verkleint voor MacBook Pro-notch-problemen – Computer – Nieuws – Tweakers

–jeroen

Posted in Development, Hardware Interfacing, Power User, USB, WebCam | 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 »

BHACP021 Chime Pro (2nd Generation) Teardown Internal Photos EMC TEST REPORT Ring

Posted by jpluimers on 2021/12/16

So you do not have to do a tear-down yourself: [Wayback] BHACP021 Chime Pro (2nd Generation) Teardown Internal Photos EMC TEST REPORT Ring

Chime Pro (2nd Generation) Internal Photos details for FCC ID 2AEUPBHACP021 made by Ring LLC. Document Includes Internal Photos EMC TEST REPORT

–jeroen

Posted in Development, Hardware Development, IoT Internet of Things, Network-and-equipment, Power User, Ring Doorbell/Chime (Amazon) | 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 »