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

How Discord Supercharges Network Disks for Extreme Low Latency

Posted by jpluimers on 2024/12/27

A while ago there was an interesting point of using tiered md to both obtain low read latency and write safety on the Google Cloud Platform in [Wayback/Archive] How Discord Supercharges Network Disks for Extreme Low Latency

It is an interesting approach to universally tune performance within the sketched boundaries, but raised some questions as their aim was improving ScyllaDB performance and Unix-like platforms on Google Cloud Platform can supports ZFS.

In this case Discord wanted to improve their ScyllaDB that was already read/written from GCP Persistent Storage and used tiered md to improve that.

Read the rest of this entry »

Posted in *nix, *nix-tools, Cloud, GCP Google Cloud Platform, Google, Hardware, Infrastructure, NVMe, Power User, RAID, SSD | Leave a Comment »

The Prince of Persia as a hanging Lego ornament

Posted by jpluimers on 2024/12/26

Prince of Persia took a big gap out of my high school time back in the mid 1980’s (:

So I am really glad with the recent revival which besides new material from the original author [Wayback/Archive] Jordan Mechner (@jmechner) / X, also leads to interesting other posts including the LEGO ornament (given the size likely from big Duplo bricks) on the right from:

[WaybackSave/Archive] Mike Mika on X: “Pretty much the coolest Lego thing ever.”

[WaybackSave/Archive] B1PtQSkCUAApXis.png (675×1200)

[WaybackSave/Archive] Tweet JSON

Merry X-mas!

 

NB: It’s not the original, but it’s hard to find as the original is at least 10 years old.

This is the oldest I could find was this 2014-10-30 one [Wayback/Archive] Imgur: Lego Prince of Persia via [Wayback/Archive] Lego Prince of Persia : r/gaming which has a lot of nice little details on the game its development.

Oh: the skin colour isn’t exactly what’s in the Apple ][ character either, see the first picture below, but it’s close enough.

--jeroen

Read the rest of this entry »

Posted in About, Personal | Tagged: , , , , , | Leave a Comment »

HInvoke and avoiding PInvoke | drakonia’s blog

Posted by jpluimers on 2024/12/26

On my research list [Wayback/Archive] HInvoke and avoiding PInvoke | drakonia’s blog.

A very minimalistic approach of calling .net runtime functions or accessing properties using only hashes as identifiers. It does not leave any strings or import references since we dynamically resolve the required member from the mscorlib assembly on runtime.

Read the rest of this entry »

Posted in .NET, C#, Development, Encryption, Hashing, Power User, Red team, Security, Software Development | Tagged: , , , , , , , | Leave a Comment »

x86 assembly – Difference between JE/JNE and JZ/JNZ – Stack Overflow

Posted by jpluimers on 2024/12/25

This brought back memories of some 40 years ago during my first steps learning x86 assembly language, realising the first comment: [Wayback/Archive] assembly – Difference between JE/JNE and JZ/JNZ – Stack Overflow

Q

In x86 assembly code, are JE and JNE exactly the same as JZ and JNZ?

C

Long answer: yes.

C

TL:DR: same machine operation, different semantic meaning. Just like jb / jc / jnae all testing CF=1. See felixcloutier.com/x86/jcc

Merry X-mas everyone!

And thanks [Wayback/Archive] Daniel Hanrahan for asking, [Wayback/Archive] Hans Passant and [Wayback/Archive] Peter Cordes for commenting.

Be sure to read the rest of the comments and answers to read on the WHY these instructions are the same. That insight made me realise I was finally understanding the x86 architecture at a deeper level.

Related:

  • [WaybackSave/Archive] Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes 2A, 2B, 2C, and 2D: Instruction Set Reference, A-Z
  • [Wayback/Archive] Jcc — Jump if Condition Is Met

    Sorted by Opcode column (with a little bit of help from Excel, Notepad++ and [Wayback/Archive] HTML Tables generator – TablesGenerator.com; then bolded or italicised the Description column of equivalent entries:

    Opcode Instruction Op/En 64-Bit Mode Compat/Leg Mode Description
    0F 80 cd JO rel32 D Valid Valid Jump near if overflow (OF=1).
    0F 80 cw JO rel16 D N.S. Valid Jump near if overflow (OF=1). Not supported in 64-bit mode.
    0F 81 cd JNO rel32 D Valid Valid Jump near if not overflow (OF=0).
    0F 81 cw JNO rel16 D N.S. Valid Jump near if not overflow (OF=0). Not supported in 64-bit mode.
    0F 82 cd JB rel32 D Valid Valid Jump near if below (CF=1).
    0F 82 cd JC rel32 D Valid Valid Jump near if carry (CF=1).
    0F 82 cd JNAE rel32 D Valid Valid Jump near if not above or equal (CF=1).
    0F 82 cw JB rel16 D N.S. Valid Jump near if below (CF=1). Not supported in 64-bit mode.
    0F 82 cw JC rel16 D N.S. Valid Jump near if carry (CF=1). Not supported in 64-bit mode.
    0F 82 cw JNAE rel16 D N.S. Valid Jump near if not above or equal (CF=1). Not supported in 64-bit mode.
    0F 83 cd JAE rel32 D Valid Valid Jump near if above or equal (CF=0).
    0F 83 cd JNB rel32 D Valid Valid Jump near if not below (CF=0).
    0F 83 cd JNC rel32 D Valid Valid Jump near if not carry (CF=0).
    0F 83 cw JAE rel16 D N.S. Valid Jump near if above or equal (CF=0). Not supported in 64-bit mode.
    0F 83 cw JNB rel16 D N.S. Valid Jump near if not below (CF=0). Not supported in 64-bit mode.
    0F 83 cw JNC rel16 D N.S. Valid Jump near if not carry (CF=0). Not supported in 64-bit mode.
    0F 84 cd JE rel32 D Valid Valid Jump near if equal (ZF=1).
    0F 84 cd JZ rel32 D Valid Valid Jump near if 0 (ZF=1).
    0F 84 cd JZ rel32 D Valid Valid Jump near if 0 (ZF=1).
    0F 84 cw JE rel16 D N.S. Valid Jump near if equal (ZF=1). Not supported in 64-bit mode.
    0F 84 cw JZ rel16 D N.S. Valid Jump near if 0 (ZF=1). Not supported in 64-bit mode.
    0F 84 cw JZ rel16 D N.S. Valid Jump near if 0 (ZF=1). Not supported in 64-bit mode.
    0F 85 cd JNE rel32 D Valid Valid Jump near if not equal (ZF=0).
    0F 85 cd JNZ rel32 D Valid Valid Jump near if not zero (ZF=0).
    0F 85 cw JNE rel16 D N.S. Valid Jump near if not equal (ZF=0). Not supported in 64-bit mode.
    0F 85 cw JNZ rel16 D N.S. Valid Jump near if not zero (ZF=0). Not supported in 64-bit mode.
    0F 86 cd JBE rel32 D Valid Valid Jump near if below or equal (CF=1 or ZF=1).
    0F 86 cd JNA rel32 D Valid Valid Jump near if not above (CF=1 or ZF=1).
    0F 86 cw JBE rel16 D N.S. Valid Jump near if below or equal (CF=1 or ZF=1). Not supported in 64-bit mode.
    0F 86 cw JNA rel16 D N.S. Valid Jump near if not above (CF=1 or ZF=1). Not supported in 64-bit mode.
    0F 87 cd JA rel32 D Valid Valid Jump near if above (CF=0 and ZF=0).
    0F 87 cd JNBE rel32 D Valid Valid Jump near if not below or equal (CF=0 and ZF=0).
    0F 87 cw JA rel16 D N.S. Valid Jump near if above (CF=0 and ZF=0). Not supported in 64-bit mode.
    0F 87 cw JNBE rel16 D N.S. Valid Jump near if not below or equal (CF=0 and ZF=0). Not supported in 64-bit mode.
    0F 88 cd JS rel32 D Valid Valid Jump near if sign (SF=1).
    0F 88 cw JS rel16 D N.S. Valid Jump near if sign (SF=1). Not supported in 64-bit mode.
    0F 89 cd JNS rel32 D Valid Valid Jump near if not sign (SF=0).
    0F 89 cw JNS rel16 D N.S. Valid Jump near if not sign (SF=0). Not supported in 64-bit mode.
    0F 8A cd JP rel32 D Valid Valid Jump near if parity (PF=1).
    0F 8A cd JPE rel32 D Valid Valid Jump near if parity even (PF=1).
    0F 8A cw JP rel16 D N.S. Valid Jump near if parity (PF=1). Not supported in 64-bit mode.
    0F 8A cw JPE rel16 D N.S. Valid Jump near if parity even (PF=1). Not supported in 64-bit mode.
    0F 8B cd JNP rel32 D Valid Valid Jump near if not parity (PF=0).
    0F 8B cd JPO rel32 D Valid Valid Jump near if parity odd (PF=0).
    0F 8B cw JNP rel16 D N.S. Valid Jump near if not parity (PF=0). Not supported in 64-bit mode.
    0F 8B cw JPO rel16 D N.S. Valid Jump near if parity odd (PF=0). Not supported in 64-bit mode.
    0F 8C cd JL rel32 D Valid Valid Jump near if less (SF≠ OF).
    0F 8C cd JNGE rel32 D Valid Valid Jump near if not greater or equal (SF≠ OF).
    0F 8C cw JL rel16 D N.S. Valid Jump near if less (SF≠ OF). Not supported in 64-bit mode.
    0F 8C cw JNGE rel16 D N.S. Valid Jump near if not greater or equal (SF≠ OF). Not supported in 64-bit mode.
    0F 8D cd JGE rel32 D Valid Valid Jump near if greater or equal (SF=OF).
    0F 8D cd JNL rel32 D Valid Valid Jump near if not less (SF=OF).
    0F 8D cw JGE rel16 D N.S. Valid Jump near if greater or equal (SF=OF). Not supported in 64-bit mode.
    0F 8D cw JNL rel16 D N.S. Valid Jump near if not less (SF=OF). Not supported in 64-bit mode.
    0F 8E cd JLE rel32 D Valid Valid Jump near if less or equal (ZF=1 or SF≠ OF).
    0F 8E cd JNG rel32 D Valid Valid Jump near if not greater (ZF=1 or SF≠ OF).
    0F 8E cw JLE rel16 D N.S. Valid Jump near if less or equal (ZF=1 or SF≠ OF). Not supported in 64-bit mode.
    0F 8E cw JNG rel16 D N.S. Valid Jump near if not greater (ZF=1 or SF≠ OF). Not supported in 64-bit mode.
    0F 8F cd JG rel32 D Valid Valid Jump near if greater (ZF=0 and SF=OF).
    0F 8F cd JNLE rel32 D Valid Valid Jump near if not less or equal (ZF=0 and SF=OF).
    0F 8F cw JG rel16 D N.S. Valid Jump near if greater (ZF=0 and SF=OF). Not supported in 64-bit mode.
    0F 8F cw JNLE rel16 D N.S. Valid Jump near if not less or equal (ZF=0 and SF=OF). Not supported in 64-bit mode.
    70 cb JO rel8 D Valid Valid Jump short if overflow (OF=1).
    71 cb JNO rel8 D Valid Valid Jump short if not overflow (OF=0).
    72 cb JB rel8 D Valid Valid Jump short if below (CF=1).
    72 cb JC rel8 D Valid Valid Jump short if carry (CF=1).
    72 cb JNAE rel8 D Valid Valid Jump short if not above or equal (CF=1).
    73 cb JAE rel8 D Valid Valid Jump short if above or equal (CF=0).
    73 cb JNB rel8 D Valid Valid Jump short if not below (CF=0).
    73 cb JNC rel8 D Valid Valid Jump short if not carry (CF=0).
    74 cb JE rel8 D Valid Valid Jump short if equal (ZF=1).
    74 cb JZ rel8 D Valid Valid Jump short if zero (ZF = 1).
    75 cb JNE rel8 D Valid Valid Jump short if not equal (ZF=0).
    75 cb JNZ rel8 D Valid Valid Jump short if not zero (ZF=0).
    76 cb JBE rel8 D Valid Valid Jump short if below or equal (CF=1 or ZF=1).
    76 cb JNA rel8 D Valid Valid Jump short if not above (CF=1 or ZF=1).
    77 cb JA rel8 D Valid Valid Jump short if above (CF=0 and ZF=0).
    77 cb JNBE rel8 D Valid Valid Jump short if not below or equal (CF=0 and ZF=0).
    78 cb JS rel8 D Valid Valid Jump short if sign (SF=1).
    79 cb JNS rel8 D Valid Valid Jump short if not sign (SF=0).
    7A cb JP rel8 D Valid Valid Jump short if parity (PF=1).
    7A cb JPE rel8 D Valid Valid Jump short if parity even (PF=1).
    7B cb JNP rel8 D Valid Valid Jump short if not parity (PF=0).
    7B cb JPO rel8 D Valid Valid Jump short if parity odd (PF=0).
    7C cb JL rel8 D Valid Valid Jump short if less (SF≠ OF).
    7C cb JNGE rel8 D Valid Valid Jump short if not greater or equal (SF≠ OF).
    7D cb JGE rel8 D Valid Valid Jump short if greater or equal (SF=OF).
    7D cb JNL rel8 D Valid Valid Jump short if not less (SF=OF).
    7E cb JLE rel8 D Valid Valid Jump short if less or equal (ZF=1 or SF≠ OF).
    7E cb JNG rel8 D Valid Valid Jump short if not greater (ZF=1 or SF≠ OF).
    7F cb JG rel8 D Valid Valid Jump short if greater (ZF=0 and SF=OF).
    7F cb JNLE rel8 D Valid Valid Jump short if not less or equal (ZF=0 and SF=OF).
    E3 cb JCXZ rel8 D N.E. Valid Jump short if CX register is 0.
    E3 cb JECXZ rel8 D Valid Valid Jump short if ECX register is 0.
    E3 cb JRCXZ rel8 D Valid N.E. Jump short if RCX register is 0.

    Original table from the above Jcc link:

    Opcode Instruction Op/En 64-Bit Mode Compat/Leg Mode Description
    77 cb JA rel8 D Valid Valid Jump short if above (CF=0 and ZF=0).
    73 cb JAE rel8 D Valid Valid Jump short if above or equal (CF=0).
    72 cb JB rel8 D Valid Valid Jump short if below (CF=1).
    76 cb JBE rel8 D Valid Valid Jump short if below or equal (CF=1 or ZF=1).
    72 cb JC rel8 D Valid Valid Jump short if carry (CF=1).
    E3 cb JCXZ rel8 D N.E. Valid Jump short if CX register is 0.
    E3 cb JECXZ rel8 D Valid Valid Jump short if ECX register is 0.
    E3 cb JRCXZ rel8 D Valid N.E. Jump short if RCX register is 0.
    74 cb JE rel8 D Valid Valid Jump short if equal (ZF=1).
    7F cb JG rel8 D Valid Valid Jump short if greater (ZF=0 and SF=OF).
    7D cb JGE rel8 D Valid Valid Jump short if greater or equal (SF=OF).
    7C cb JL rel8 D Valid Valid Jump short if less (SF≠ OF).
    7E cb JLE rel8 D Valid Valid Jump short if less or equal (ZF=1 or SF≠ OF).
    76 cb JNA rel8 D Valid Valid Jump short if not above (CF=1 or ZF=1).
    72 cb JNAE rel8 D Valid Valid Jump short if not above or equal (CF=1).
    73 cb JNB rel8 D Valid Valid Jump short if not below (CF=0).
    77 cb JNBE rel8 D Valid Valid Jump short if not below or equal (CF=0 and ZF=0).
    73 cb JNC rel8 D Valid Valid Jump short if not carry (CF=0).
    75 cb JNE rel8 D Valid Valid Jump short if not equal (ZF=0).
    7E cb JNG rel8 D Valid Valid Jump short if not greater (ZF=1 or SF≠ OF).
    7C cb JNGE rel8 D Valid Valid Jump short if not greater or equal (SF≠ OF).
    7D cb JNL rel8 D Valid Valid Jump short if not less (SF=OF).
    7F cb JNLE rel8 D Valid Valid Jump short if not less or equal (ZF=0 and SF=OF).
    71 cb JNO rel8 D Valid Valid Jump short if not overflow (OF=0).
    7B cb JNP rel8 D Valid Valid Jump short if not parity (PF=0).
    79 cb JNS rel8 D Valid Valid Jump short if not sign (SF=0).
    75 cb JNZ rel8 D Valid Valid Jump short if not zero (ZF=0).
    70 cb JO rel8 D Valid Valid Jump short if overflow (OF=1).
    7A cb JP rel8 D Valid Valid Jump short if parity (PF=1).
    7A cb JPE rel8 D Valid Valid Jump short if parity even (PF=1).
    7B cb JPO rel8 D Valid Valid Jump short if parity odd (PF=0).
    78 cb JS rel8 D Valid Valid Jump short if sign (SF=1).
    74 cb JZ rel8 D Valid Valid Jump short if zero (ZF = 1).
    0F 87 cw JA rel16 D N.S. Valid Jump near if above (CF=0 and ZF=0). Not supported in 64-bit mode.
    0F 87 cd JA rel32 D Valid Valid Jump near if above (CF=0 and ZF=0).
    0F 83 cw JAE rel16 D N.S. Valid Jump near if above or equal (CF=0). Not supported in 64-bit mode.
    0F 83 cd JAE rel32 D Valid Valid Jump near if above or equal (CF=0).
    0F 82 cw JB rel16 D N.S. Valid Jump near if below (CF=1). Not supported in 64-bit mode.
    0F 82 cd JB rel32 D Valid Valid Jump near if below (CF=1).
    0F 86 cw JBE rel16 D N.S. Valid Jump near if below or equal (CF=1 or ZF=1). Not supported in 64-bit mode.
    0F 86 cd JBE rel32 D Valid Valid Jump near if below or equal (CF=1 or ZF=1).
    0F 82 cw JC rel16 D N.S. Valid Jump near if carry (CF=1). Not supported in 64-bit mode.
    0F 82 cd JC rel32 D Valid Valid Jump near if carry (CF=1).
    0F 84 cw JE rel16 D N.S. Valid Jump near if equal (ZF=1). Not supported in 64-bit mode.
    0F 84 cd JE rel32 D Valid Valid Jump near if equal (ZF=1).
    0F 84 cw JZ rel16 D N.S. Valid Jump near if 0 (ZF=1). Not supported in 64-bit mode.
    0F 84 cd JZ rel32 D Valid Valid Jump near if 0 (ZF=1).
    0F 8F cw JG rel16 D N.S. Valid Jump near if greater (ZF=0 and SF=OF). Not supported in 64-bit mode.
    0F 8F cd JG rel32 D Valid Valid Jump near if greater (ZF=0 and SF=OF).
    0F 8D cw JGE rel16 D N.S. Valid Jump near if greater or equal (SF=OF). Not supported in 64-bit mode.
    0F 8D cd JGE rel32 D Valid Valid Jump near if greater or equal (SF=OF).
    0F 8C cw JL rel16 D N.S. Valid Jump near if less (SF≠ OF). Not supported in 64-bit mode.
    0F 8C cd JL rel32 D Valid Valid Jump near if less (SF≠ OF).
    0F 8E cw JLE rel16 D N.S. Valid Jump near if less or equal (ZF=1 or SF≠ OF). Not supported in 64-bit mode.
    0F 8E cd JLE rel32 D Valid Valid Jump near if less or equal (ZF=1 or SF≠ OF).
    0F 86 cw JNA rel16 D N.S. Valid Jump near if not above (CF=1 or ZF=1). Not supported in 64-bit mode.
    0F 86 cd JNA rel32 D Valid Valid Jump near if not above (CF=1 or ZF=1).
    0F 82 cw JNAE rel16 D N.S. Valid Jump near if not above or equal (CF=1). Not supported in 64-bit mode.
    0F 82 cd JNAE rel32 D Valid Valid Jump near if not above or equal (CF=1).
    0F 83 cw JNB rel16 D N.S. Valid Jump near if not below (CF=0). Not supported in 64-bit mode.
    0F 83 cd JNB rel32 D Valid Valid Jump near if not below (CF=0).
    0F 87 cw JNBE rel16 D N.S. Valid Jump near if not below or equal (CF=0 and ZF=0). Not supported in 64-bit mode.
    0F 87 cd JNBE rel32 D Valid Valid Jump near if not below or equal (CF=0 and ZF=0).
    0F 83 cw JNC rel16 D N.S. Valid Jump near if not carry (CF=0). Not supported in 64-bit mode.
    0F 83 cd JNC rel32 D Valid Valid Jump near if not carry (CF=0).
    0F 85 cw JNE rel16 D N.S. Valid Jump near if not equal (ZF=0). Not supported in 64-bit mode.
    0F 85 cd JNE rel32 D Valid Valid Jump near if not equal (ZF=0).
    0F 8E cw JNG rel16 D N.S. Valid Jump near if not greater (ZF=1 or SF≠ OF). Not supported in 64-bit mode.
    0F 8E cd JNG rel32 D Valid Valid Jump near if not greater (ZF=1 or SF≠ OF).
    0F 8C cw JNGE rel16 D N.S. Valid Jump near if not greater or equal (SF≠ OF). Not supported in 64-bit mode.
    0F 8C cd JNGE rel32 D Valid Valid Jump near if not greater or equal (SF≠ OF).
    0F 8D cw JNL rel16 D N.S. Valid Jump near if not less (SF=OF). Not supported in 64-bit mode.
    0F 8D cd JNL rel32 D Valid Valid Jump near if not less (SF=OF).
    0F 8F cw JNLE rel16 D N.S. Valid Jump near if not less or equal (ZF=0 and SF=OF). Not supported in 64-bit mode.
    0F 8F cd JNLE rel32 D Valid Valid Jump near if not less or equal (ZF=0 and SF=OF).
    0F 81 cw JNO rel16 D N.S. Valid Jump near if not overflow (OF=0). Not supported in 64-bit mode.
    0F 81 cd JNO rel32 D Valid Valid Jump near if not overflow (OF=0).
    0F 8B cw JNP rel16 D N.S. Valid Jump near if not parity (PF=0). Not supported in 64-bit mode.
    0F 8B cd JNP rel32 D Valid Valid Jump near if not parity (PF=0).
    0F 89 cw JNS rel16 D N.S. Valid Jump near if not sign (SF=0). Not supported in 64-bit mode.
    0F 89 cd JNS rel32 D Valid Valid Jump near if not sign (SF=0).
    0F 85 cw JNZ rel16 D N.S. Valid Jump near if not zero (ZF=0). Not supported in 64-bit mode.
    0F 85 cd JNZ rel32 D Valid Valid Jump near if not zero (ZF=0).
    0F 80 cw JO rel16 D N.S. Valid Jump near if overflow (OF=1). Not supported in 64-bit mode.
    0F 80 cd JO rel32 D Valid Valid Jump near if overflow (OF=1).
    0F 8A cw JP rel16 D N.S. Valid Jump near if parity (PF=1). Not supported in 64-bit mode.
    0F 8A cd JP rel32 D Valid Valid Jump near if parity (PF=1).
    0F 8A cw JPE rel16 D N.S. Valid Jump near if parity even (PF=1). Not supported in 64-bit mode.
    0F 8A cd JPE rel32 D Valid Valid Jump near if parity even (PF=1).
    0F 8B cw JPO rel16 D N.S. Valid Jump near if parity odd (PF=0). Not supported in 64-bit mode.
    0F 8B cd JPO rel32 D Valid Valid Jump near if parity odd (PF=0).
    0F 88 cw JS rel16 D N.S. Valid Jump near if sign (SF=1). Not supported in 64-bit mode.
    0F 88 cd JS rel32 D Valid Valid Jump near if sign (SF=1).
    0F 84 cw JZ rel16 D N.S. Valid Jump near if 0 (ZF=1). Not supported in 64-bit mode.
    0F 84 cd JZ rel32 D Valid Valid Jump near if 0 (ZF=1).

--jeroen

Posted in Software Development, Development, Assembly Language, x86 | Leave a Comment »

Likely the best Xmas commercial this year: Bubbles | Deutsche Telekom | Christmas Ad 2024 – YouTube

Posted by jpluimers on 2024/12/25

Watch till the very end: [Wayback/Archive]  Bubbles | Deutsche Telekom | Christmas Ad 2024 – YouTube

Related:

Read the rest of this entry »

Posted in Awareness | Leave a Comment »

Test Automation Code Smells – Angie Jones

Posted by jpluimers on 2024/12/25

Cool presentation: [Wayback/Archive] Test Automation Code Smells – Angie Jones.

A recording is at [Wayback/Archive] What’s That Smell? Tidying Up Our Test Code – YouTube (and embedded below the signature).

The code is at [Wayback] code_smells_workshop.zip.

Read the rest of this entry »

Posted in Agile, Development, Software Development, Testing, Unit Testing | Leave a Comment »

“Incompatible parameter lists” when using Types.T*DynArray? – VCL – Delphi-PRAXiS [en]

Posted by jpluimers on 2024/12/24

Reminder to self: Delphi 11.3 (Alexandria update 3), mid-product added a compiler changing kind of deprecating using types of this form (including ones defined in the System, System.Types and other RTL/VCL units):

Overview of “deprecated” * and alternative array types
“deprecated” alternative: write it all out
TBooleanDynArray TArray<Boolean>
TByteDynArray TArray<Byte>
TCardinalDynArray TArray<Cardinal>
TStringDynArray TArray<string>
  • technically not deprecated, as deprecated is a hinting directive and despite these having existed for almost 25 years now**, hinting directives like platform, deprecated, or library cannot be used on array types:a bug has been filed for this in 2017 but still has not been addressed, see my earlier blog post Delphi Declarations and Statements: Hinting Directives.

Read the rest of this entry »

Posted in Delphi, Delphi 11.0 Alexandria (Olympus), Development, Software Development | Leave a Comment »

Bell’s Theorem: The Quantum Venn Diagram Paradox – YouTube and Twitter explained with polarised filters

Posted by jpluimers on 2024/12/24

These are cool explanations of Bell’s Theorem:

–jeroen

Posted in LifeHacker, Power User, science | Leave a Comment »

Our visits to the @NPORadio2 #Top2000 Café 2018

Posted by jpluimers on 2024/12/23

Video links from [WayBack] Kijk en luister de Top 2000 terug – Nieuwsbericht – NPO Radio 2.

Photos:

--jeroen

PS: Forgot to post this in 2018, and starting in 2019 I got treated against cancer.

Posted in Uncategorized | Leave a Comment »

Some thoughts and experience by isotopp on solar panels and batteries

Posted by jpluimers on 2024/12/23

For my link archive the thread leading up to [Wayback/Archive] Kris on Twitter: “@mterwoord @mausdompteur Das ist ein 15 kWh LFP-Klotz, der Problemlos ins Kabuff neben den Inverter passt und nicht im Weg ist. Nachdem ich nun noch einmal 21% BTW von den 10100 Euro Solarpanels zurück bekommen habe wäre das Ding also praktisch unter 5000 Euro zu haben. Ein No-Brainer quasi.”

–jeroen

Posted in LifeHacker, Power User, Solar Power | Leave a Comment »