The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • 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

Ten Commandments For Naming Your Code

Posted by jpluimers on 2020/06/23

Be clear, be consistent, don’t be clever, and follow these rules for naming your code.

[WayBack] Ten Commandments For Naming Your Code investigates these:

  1. Thou shalt be specific.
  2. Thou shalt not use unnecessary words.
  3. Thou shalt not use abbreviations.
  4. Thou shalt use the code’s primary human language.
  5. Thou shalt not make up words.
  6. Thou shalt not include type.
  7. Thou shalt only use non-obvious words if the meaning is obvious.
  8. Thou shalt prefer active voice.
  9. Thou shalt use consistent syntax.
  10. Thou shalt break these rules if necessary.

–jeroen

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

.NET Rocks: How do you do concurrency?

Posted by jpluimers on 2020/06/23

Since it was quite a while ago I wrote heavily concurrent code in .NET, I wanted to know about the starte of the art.

This pod cast and the book discussed in it helped a lot: [WayBackHow do you do concurrency? Carl and Richard talk to Riccardo Terrell about his book on Concurrency in .NET. https://www.manning.com/books/concurrency-i… – .NET Rocks! – Google+

Links referenced:

–jeroen

Posted in .NET, Development, Multi-Threading / Concurrency, Software Development | Leave a Comment »

Git submodule inside of a submodule (nested submodules) – Stack Overflow

Posted by jpluimers on 2020/06/23

Not sure why yet, but with a nested pacapt git submodule inside another git submodule bash.aliases, when pulling bash.aliases it did pull the actual content of pacapt, only the reference.

I wanted this because this allowed me to abstract installation of common packages no matter if the system was using the apt-get, zypper, homebrew or other package managers. [WayBack] GitHub – icy/pacapt: An Arch’s pacman-like package manager for some Unices supports many in a coherent way (I’m way past the not-invented-here syndrome:[WayBack] linux – A universal bash script for installing with apt-get and yum – Stack Overflow).

A git pull --recurse-submodules failed.

Even executing git submodule update --init --recursive at the top-level did not get it.

Forcing a submodule to update after a shallow clone

I had to to inside the bash.aliases submodule and perform git submodule update --init <submoduleName>:

$ git submodule update --init pacapt
Submodule 'pacapt' (https://github.com/icy/pacapt.git) registered for path 'pacapt'
Cloning into '/home/jeroen_pluimers_com/bash.aliases/pacapt'...
Submodule path 'pacapt': checked out '31f43d901055e3c361dfbcefdf50231442da13de'

I got this workaround at [WayBack] Git submodule inside of a submodule (nested submodules) – Stack Overflow.

It might mean I need to read more deeply into these asgit submodule update --init --recursive might by now need to be git submodule update --init --recurse-submodules, but the docs are not clear on that:

Forcing a recursive clone including submodules

This worked out of the box on a Git > 2.13:

D:\Versioned\github.com\project-jedi>call git clone --recurse-submodules -j8 https://github.com/project-jedi/jcl.git
Cloning into 'jcl'...
remote: Enumerating objects: 79, done.
remote: Counting objects: 100% (79/79), done.
remote: Compressing objects: 100% (46/46), done.
Receiving objects: 100% (82053/82053), 78.7delta 33), pack-reused 81974 eceiving objects: 100% (82053/82053), 72.05 MiB | 7.14 MiB/s
9 MiB | 3.77 MiB/s, done.
Resolving deltas: 100% (65056/65056), done.
Checking out files: 100% (3461/3461), done.
Submodule 'jcl/source/include/jedi' (https://github.com/project-jedi/jedi.git) registered for path 'jcl/source/include/jedi'
Cloning into 'D:/Versioned/github.com/project-jedi/jcl/jcl/source/include/jedi'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 379 (delta 0), reused 3 (delta 0), pack-reused 375
Receiving objects: 100% (379/379), 123.87 KiB | 568.00 KiB/s, done.
Resolving deltas: 100% (120/120), done.
Submodule path 'jcl/source/include/jedi': checked out 'd04f4d341051c1245c06c822468ea927073e26eb'

–jeroen

Posted in Development, DVCS - Distributed Version Control, git, Source Code Management | Leave a Comment »

browser – How to connect a website has only IPv6 address without domain name? – Super User

Posted by jpluimers on 2020/06/22

For my link archive: [WayBack] browser – How to connect a website has only IPv6 address without domain name? – Super User (thanks haimg):

According to RFC2732, literal IPv6 addresses should be put inside square brackets in URLs, e.g. like this:

http://[1080:0:0:0:8:800:200C:417A]/index.html

If you also need to specify a port other then 80 to access the server it has to be placed after the closing bracket:

http://[1080:0:0:0:8:800:200C:417A]:8888/index.html

Of course, you have to have end-to-end IPv6 connectivity to that host. E.g. if the server is not inside your own local network, you need to have IPv6 connectivity, either via your ISP (rare), or via some kind of IPv6 in IPv4 encapsulation (tunnel).

Related: [WayBack] RFC 2732 – Format for Literal IPv6 Addresses in URL’s

–jeroen

Posted in Chrome, Firefox, Internet Explorer, Opera, Power User, Web Browsers | Leave a Comment »

How to Merge Folders on Mac OS X Without Losing All Your Files (Seriously)

Posted by jpluimers on 2020/06/22

And still the UI has not improved:

The default folder-merge behavior in Mac OS X is to erase the existing folder, deleting all its files rather than offering to merge them intelligently. Windows and Linux file managers have offered folder-merging for decades, but Macs still don’t.

[WayBack]How to Merge Folders on Mac OS X Without Losing All Your Files (Seriously)

Via: [WayBack] Yes, you’re reading that right — try to merge a folder like you would on Windows or Linux and you’ll lose all the old folder’s files if you click Replace… – Roderick Gadellaa – Google+

–jeroen

Posted in Apple, Mac, Mac OS X / OS X / MacOS, Power User | Leave a Comment »

Linux Containers – LXD – Try it online

Posted by jpluimers on 2020/06/22

Cool: live container for some 20 minutes usage at [WayBack/Archive.is] Linux Containers – LXD – Try it online.

Via: [WayBack] New European Data Protection Law coming soon! Beginning with May, 25 you’re no longer allowed to host private data outside the EC, e.g. in the U.S. or … – Joe C. Hecht – Google+

–jeroen

Posted in Cloud, Containers, Infrastructure | Leave a Comment »

“This app can’t run on your PC – To find a version for your PC, check with the software publisher.”

Posted by jpluimers on 2020/06/19

I had a problem running wmic. It was no a Dutch Windows 10, but the same will happen with any locale, so in English the error looks like this:

This app can't run on your PC

To find a version for your PC, check with the software publisher.

After which you get this on the command-line:

Access is denied.

In the Dutch version, the error is called this:

Deze app kan niet worden uitgevoerd op uw pc

Vraag bij de software-uitgever na of er een versie bestaat voor uw pc.

After which you get this on the command-line:

Toegang geweigerd.

Apparently, an executable is now an app, and PC is uppercase in English, but not in Dutch. I digress.

The un-cool thing is that [WayBack] Process Monitor – Windows Sysinternals | Microsoft Docs showed no Access Denied message at all.

What happened however, was that there was an empty %SystemRoot%\System32\wmic.exe, which gets executed because %SystemRoot%\System32 is earlier on the path than C:\Windows\System32\wbem\WMIC.exe.

Note that %SystemRoot% seems to be the new %windir%.

You can reproduce this by doing this on a command prompt window:

cd %temp%

rem > wmic.exe

wmic

The rem will create an empty wmic.exe. Because on Windows, the current directory is always on the path, it tries to execute the empty wmic.exe, which causes the error.

Do not run an administrative in the default %SystemRoot%\System32 directory

The actual cause was a combination of this:

  1. When running cmd as Administrator, it starts in %SystemRoot%\System32
  2. %SystemRoot%\System32 is early on the path
  3. Copy/Paste through a remote desktop connection is unreliable
  4. I copied a big bunch of output from the RDP session to my host to write some documentation
  5. I copied a new command from the host to run in the Administrative cmd
  6. What got pasted instead was the output, which created these empty files (which has some typos, I know) because output is of the form C:\path>filename:

    C
    conrol
    control
    defrag
    del
    Disable-ComputerRestore
    exit
    Get-ComputerRestorePoint
    net
    powercfg
    powershell
    powrcfg
    SystemProperties.exe
    vssadmin
    wmic
    wmic.exe

  7. I did not notice these files were created in  %SystemRoot%\System32

–jeroen

Posted in Power User, Windows, Windows 10 | Leave a Comment »

Computing History – The UK Computer Museum – Cambridge

Posted by jpluimers on 2020/06/19

On my places to visit:

The Centre for Computing History is a computer museum based in Cambridge, UK. With a collection of vintage computers and game consoles, many of the exhibits are hands on and interactive.

[WayBackComputing History – The UK Computer Museum – Cambridge.

When I bumped into it, this was their collection size, ranging from the 1960s until recent history:

Archive Statistics :

  • Computers = 993
  • Peripherals = 1446
  • Mobile Devices = 31
  • Game Consoles = 213
  • Video Games = 10259
  • Software Packages = 2605
  • Books = 2045
  • Manuals = 4106
  • Magazines = 9057

Looking at their archived brands (having [WayBack] MITS – Altair and [WayBack] Raspberry Pi in the collection) is such a joy.

Archiving the older parts is a tough job, as they stem from way before the web era, so information has been lost, parts are hard to source, a lot of hardware got thrown away or is hard to find at all, people have died. More on that at [WayBack] About – Computing History.

Without a physical visit, you can find what they have at [WayBack] Search Our Archive – Computing History.

The video below on their archive is impressive.

–jeroen

Read the rest of this entry »

Posted in 6502, 68k, Apple I, BBC Micro B, BBS, C64, Commodore, CP/M, dial-up modems, FidoNet, History, IBM SAA CUA, PowerPC, Tesseract, VIC-20, Z80 | Leave a Comment »

Creating a properly aligned partition with parted – twm’s blog

Posted by jpluimers on 2020/06/19

I like the deceptively simple, if you remind that percent signs are the way to go for GNU parted (not to be confused with gparted which is Gnome parted).

At [WayBack] Creating a properly aligned partition with parted – twm’s blog:

mkpart /dev/somedevice ext4 0% 100%

It gets rid of the dreaded “The resulting partition is not properly aligned for best performance”.

References:

Via: [WayBack] Parted is a flexible tool for working with partition tables under Linux. Unfortunately it sometimes seems rather stupid… – Thomas Mueller (dummzeuch) – Google+

–jeroen

Posted in *nix, *nix-tools, parted, Power User | Leave a Comment »

tfs – How to retrieve the hash for the current commit in Git? – Stack Overflow

Posted by jpluimers on 2020/06/18

Based on [WayBack] tfs – How to retrieve the hash for the current commit in Git? – Stack Overflow

Get current hash:

git rev-parse HEAD

Show summary of current commit, including hash:

git show --summary

Show all hashes of all branches (both in heads and in remotes) and tags:

git show-ref

Get current hash with a * marking if it is dirty:

git describe --always --abbrev=0 --match "NOT A TAG" --dirty="*"

The last one was [WayBack] answered by [WayBack] Rado:

display the full sha1 of the commit, but append an asterisk to the end if the working directory is not clean. …

Here is the one liner that does:
git describe --always --abbrev=0 --match "NOT A TAG" --dirty="*"
Result: f5366ccb21588c0d7a5f7d9fa1d3f85e9f9d1ffe*

Explanation: describes (using annotated tags) the current commit, but only with tags containing “NOT A TAG”. Since tags cannot have spaces, this never matches a tag and since we want to show a result --always, the command falls back displaying the full (--abbrev=0) sha1 of the commit and it appends an asterisk if the working directory is --dirty.

–jeroen

Posted in Development, DVCS - Distributed Version Control, git, Software Development, Source Code Management | Leave a Comment »