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

Archive for the ‘Software Development’ Category

A while ago I bumped into some GPI Mojibake examples, but soon found out I should use the ftfy test cases

Posted by jpluimers on 2022/11/22

I have been into more and more Mojibake example pages like [Wayback] Mojibake: Question Marks, Strange Characters and Other Issues | GPI

Have you ever found strange characters like these ���  when viewing content in applications or websites in other languages?

They made me realise that all these (including the Mojibake examples on my blog) are just artifacts, but the real list of examples is the set of ftfy test cases at [Wayback/Archive.is] python-ftfy/test_cases.json at master · LuminosoInsight/python-ftfy

I got reminded when Waternet moved from paper mail using “Pyreneeën” to email using “Pyreneeën“. Not as bad as Waterschap AGV did earlier: they took it one level further and made “Pyreneeën” out of it, see Last year, a classic Mojibake was introduced when Waterschap Amstel, Gooi en Vecht redesigned their IT systems.

This seems like a trend where newer systems perform worse than older systems. I wonder why that is.

BTW: the trick on the [Wayback/Archive] Python.org shell to run ftfy (which is not installed by default) is first dropping to the shell (see my post How do I drop a bash shell from within Python? – Stack Overflow), then starting python again:

Read the rest of this entry »

Posted in CP850, Development, Encoding, ftfy, ISO-8859, Mojibake, Python, Scripting, Software Development, Unicode, UTF-8, UTF8 | Leave a Comment »

.NET: programmatically cutting and pasting files (as opposed to copy/pasting them)

Posted by jpluimers on 2022/11/17

Some notes for my link archive.

A long time ago, I asked [Wayback/Archive] c# – Console application using Clipboard.GetFileDropList: how to check if that came from a cut or copy operation? – Stack Overflow.

Back then, the use case had disappeared, so I didn’t follow up. But a new use case might appear soon, so here it goes:

–jeroen

Posted in .NET, C#, Development, Software Development, VB.NET | Leave a Comment »

Where can I find a comprehensive list of Delphi “compiler magic” declarations? – Stack Overflow

Posted by jpluimers on 2022/11/16

A long time ago, I posted one of the answers to [Wayback/Archive] Where can I find a comprehensive list of Delphi “compiler magic” declarations? – Stack Overflow

So for my link archive, these are the main ways of assembling an (always incomplete, as only partially documented) list:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, EKON, Event, Software Development, Undocumented Delphi | Leave a Comment »

WordPress.com gets it consistently wrong, Twitter has it right: posting time stamps

Posted by jpluimers on 2022/11/15

UTC and time zones are both hard, especially with respect to scheduling.

The easiest would be to schedule things and store the time zone offsets together with the timestamp, just as ISO 8601 has UTC-relative time zone designators, or alternatively store the region in addition to the timestamp (which can be more user friendly).

When a scheduling system uses local time for schedules, you can expect these will adhere to your local time when the schedule becomes in effect.

So I schedule my posts for 06:00, 12:00 and 18:00 local time during weekdays.

Look what happens:

  1. [Archive.is] Jeroen Wiert Pluimers on Twitter: “Pro-tip for @wordpressdotcom : fix the scheduler so when you schedule in your local time zone, there is no shift during daylight saving time changes. I schedule all my posts to appear at 06:00 12:00 and 18:00 in my local time. 1/… “
  2. [Archive.is] Jeroen Wiert Pluimers on Twitter: “That works fine during winter time, which is ~5 out of 12 months, for example https://t.co/banrMebk2A 2/… “
  3. [Archive.is] Jeroen Wiert Pluimers on Twitter: “However 7 out of 12 months, they get posted at 07:00 13:00 and 19:00 local time, for example  3/3… “

Via [Archive.is] Colin Nederkoorn on Twitter: “Pro tip: Don’t schedule recurring meetings in UTC if you live in a place with daylight savings.… “ (which I do not agree with, see my post UTC and ISO 8601, or GTFO).

–jeroen

Posted in Development, ISO 8601, Power User, Software Development, UTC, Web Development | Leave a Comment »

Exporting your Twitter content, converting to Markdown and getting the image alt-texts (thanks @isotopp/@HBeckPDX/@weiglemc for the info and @kcgreenn/@dreamjar for the comic!)

Posted by jpluimers on 2022/11/12

This is fine #Twitter

This is fine #Twitter (illustration inspired by KC Green; creation video below)

(Edit 20221114: script for high-res images; more tweets from Jan) (Edit 20221116: hat-tip to Sam) (Edit 20221120: archiving t.co links by Michele Weigle) (Edit 20221122: added article by Johan van der Knijff) (20221128 Tapue export tool by Mike Hucka)

Time to be prepared:

The below will help you exporting your Twitter content (Tweets, DMs, media), perform some conversions on them and optionally delete (parts of) your content.

Important: keep your Twitter account afterwards (to prevent someone from creating a new account with the same handle).

Read the rest of this entry »

Posted in *nix, *nix-tools, Awk, Development, Lightweight markup language, MarkDown, Mastodon, Power User, SocialMedia, Software Development, Twitter | Leave a Comment »

Online Image Dimension & Size Finder from URL | MyFreeOnlineTools

Posted by jpluimers on 2022/11/10

This was the only site I could find that can you can enter a URL and get the image dimensions.

[Wayback/Archive.is] Onlie Image Dimension & Size Finder from URL | MyFreeOnlineTools

Yes, you can use web-browser tools for this, but the responsive web usually gives you the wrong size.

And yes, it should be “Online”, not “Onlie”, but I used the web-page title which already has the error.

Read the rest of this entry »

Posted in Bookmarklet, Development, Power User, Software Development, Web Browsers, Web Development | Leave a Comment »

Installing vscode extensions from within the Visual Studio Code terminal was way easier than I anticipated

Posted by jpluimers on 2022/11/09

Having missed quite a lot of Visual Studio Code releases during my metastasised rectum cancer treatment and recovery, it had become both very mature, but also very reliant of having the right extensions installed.

In that period, the extension marketplace grew remarkably, so I really wanted an easy way to install them from within the inside vscode integrated Windows Terminal.

A while ago I wrote How can you export the Visual Studio Code extension list? (via: Stack Overflow), which generated a small script with code --install-extension <extension-name> lines so I could executed those from the command-line for Visual Studio installations on new machines.

Boy was I surprised that you can just as well execute them from the [Wayback/Archive] Integrated Terminal in Visual Studio Code as well (:

When doing so, the Visual Studio Code instance around that Integrated Terminal will automatically pick up the new extension.

I found that with a [Wayback/Archive] vscode install extension from within visual studio code console – Google Search and bumping in the video also embedded below the signature: [Archive] VS Code tips — Installing extensions from the command line using –install-extension – YouTube.

The video also showed that the installation syntax can also include the version number like this:

Read the rest of this entry »

Posted in Console (command prompt window), Development, Power User, Software Development, vscode Visual Studio Code, Windows, Windows 10, Windows Terminal | Leave a Comment »

UTC and ISO 8601, or GTFO

Posted by jpluimers on 2022/11/08

Always schedule your meetings in UTC, and use ISO-8601 date and time notation. Because time zone conversions are hard, especially with so many daylight saving time conventions.

I want not just a “UTC or GTFO” shirt, but a “UTC and ISO-8601, or GTFO” shirt.

It means I do not agree with [Archive.is] Colin Nederkoorn on Twitter: “Pro tip: Don’t schedule recurring meetings in UTC if you live in a place with daylight savings.… “ with multi-time zone teams: having it in UTC will balance out the DST changes over the teams.

Some more relevant Tweets that triggered me writing this post:

Read the rest of this entry »

Posted in Algorithms, Development, ISO 8601, Power User, Software Development, UTC | Leave a Comment »

SQL comma bullet point formatting: because AS is optional

Posted by jpluimers on 2022/11/03

Do you see the error below?

(note: OCR via [Wayback/Archive.is] Best Free OCR API, Online OCR, Searchable PDF – Fresh 2021 OCR Software)

SELECT
  license date
  expiration_date,
  renewal_due_date
FROM license
WHERE expiration_date IS NULL
AND processing != 'Automatic'
AND edition != 'Other'
expiration_date renewal_ due date
1 2016-04-08 09:50:00 [NULL]
2 2013-11-14 11:15:00 [NULL]
3 2014-11-20 14:51:00 [NULL]
4 2017-07-21 16:00:00 [NULL]
5 2018-12-17 14:37:46 2020-12-17 14:37:46

All of the expiration_date columns have values, which is contrary to the WHERE clause. This is because the table itself contains an expiration_date column, and the SELECT part aliases license_date into expiration_date.

The result is that you see rows that have expiration_date being NULL, but license_date having a value.

So I totally agree with [Archive.is] Mathias Magnusson on Twitter: “That is one reason I’m a form believer in comma bullet point in my SQL. Problems like that has bit me far too often due to som issue with commas.… “

This is how the SQL should have looked:

SELECT
  license date
, expiration_date
, renewal_due_date
FROM license
WHERE expiration_date IS NULL
AND processing != 'Automatic'
AND edition != 'Other'

Yes indeed: an alias of a column without the AS keyword is allowed in quite a few SQL dialects (they differ even more widely in SQL extensions like SQL/PSM, T-SQL, PL/SQL, SQL_PL, or ABAB).

Aliases are for output, cannot be used in WHERE (but can in ORDER BY).

You can see what happens (and how hard this can become on one line) with these two dbfiddle queries running on Microsoft SQL Server 2019 dialect (though it works similar in other dialects):

  1. select a b, c from (values (9, 1, 2), (8, 3, 4), (7, 5, 6)) t(a, b, c) order by b
    I saved it as [Wayback/Archive.is] SQL Server 2019 | dbfiddle: select a b, c from (values (9, 1, 2), (8, 3, 4), (7, 5, 6)) t(a, b, c) order by b
    Resulting in

    b c
    7 6
    8 4
    9 2

    It shows only the column names a and b, but note the table itself is aliased to t above as well.

  2. select a, b, c from (values (9, 1, 2), (8, 3, 4), (7, 5, 6)) t(a, b, c) order by b
    I saved it as [Wayback/Archive.is] SQL Server 2019 | dbfiddle: select a, b, c from (values (9, 1, 2), (8, 3, 4), (7, 5, 6)) t(a, b, c) order by b
    Resulting in

    a b c
    9 1 2
    8 3 4
    7 5 6

    It shows only the column names a, b and c, but note the table itself is aliased to t above as well.

I really wish various SQL dialects would force the SQL syntax to be (together with a hint that the alias would overwrite an existing field):

SELECT
  license date AS expiration_date
, renewal_due_date
FROM license
WHERE expiration_date IS NULL
AND processing != 'Automatic'
AND edition != 'Other'

That is not going to happen, so the second best is to wish for tooling to hint/warn about it, and provide better syntax highlighting for it. That seems work in progress by now:

Read the rest of this entry »

Posted in Conventions, Database Development, Development, OracleDB, PL/SQL, SQL, SQL Server, T-SQL | Leave a Comment »

SMLIGHT SLZB-06 – A Zigbee 3.0 to Ethernet, USB, and WiFi adapter with PoE support – CNX Software

Posted by jpluimers on 2022/11/01

Want: [Wayback/Archive] SMLIGHT SLZB-06 – A Zigbee 3.0 to Ethernet, USB, and WiFi adapter with PoE support – CNX Software

Startup SMLIGHT has launched the SLZB-06 Zigbee 3.0 to Ethernet, USB, and WiFi adapter with PoE support that works out of the box with open-source software such as Home Assistant and Zigbee2MQTT.

The device combines Texas Instruments’ СС2652Р microcontroller for Zigbee with ESP32 for WiFi, data transfer to Ethernet or USB, and peripheral functions such as LEDs and a button.The design is complemented with Microchip LAN8720 for Ethernet.

Read the rest of this entry »

Posted in Development, ESP32, Ethernet, Hardware, Hardware Development, Hardware Interfacing, IoT Internet of Things, Matter, MQ Message Queueing/Queuing, MQTT, Network-and-equipment, PoE - Power over Ethernet, Power User, Software Development, USB, WiFi, Z-Wave, Zigbee | Leave a Comment »