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

Archive for the ‘Systems Architecture’ Category

Beyond the Cloud: Brooklyn Zelenka on Local-First Software | gotopia.tech

Posted by jpluimers on 2025/09/17

I bumped into [Wayback/Archive] Beyond the Cloud: Brooklyn Zelenka on Local-First Software | gotopia.tech

It is a great session with guidance how to kind of go “back to the future” by amending cloud based applications to run locally by means of caching and syncing data. No small feat, but very convenient for end-users to have their – recently regarded as old-fashioned – local running applications back.

There is a – member’s only – video of it as well at [Wayback/Archive] Beyond the Cloud: The Local-First Software Revolution • Brooklyn Zelenka & Julian Wood • GOTO 2025 – YouTube

--jeroen

Posted in Cloud Development, Development, Software Development, Systems Architecture | Leave a Comment »

Kevlin Henney on encapsulating and restricting Mutability of State to improve software quality

Posted by jpluimers on 2025/06/04

Important read (5 minutes or so): [Wayback/Archive] Restrict Mutability of State. When it is not necessary to change, it is necessary not to change… | by Kevlin Henney | Feb, 2025 | Medium

Via [WaybackSave/Archive] Kevlin Henney on X: “Blogged: Restrict Mutability of State “What appears at first to be a trivial observation turns out to be a subtly important one: a great many software defects arise from the (incorrect) modification of state.” “

--jeroen

Posted in Conference Topics, Conferences, Design Patterns, Development, Event, Software Development, Systems Architecture | Leave a Comment »

Naming things isn’t hard: if it contains a number, include the unit in the name (your timeout might not be in nanoseconds)

Posted by jpluimers on 2025/05/27

This case, it was C# accessing a SQL back-end, but the responses to the Tweet how so many more examples not even related to software development.

Remember that plane crashing because they overloaded while they thought the fuel load numbers were in Imperial pounds where in fact they were in metric kilograms?

That’s why naming things that contain numbers should contain the unit in their name!

Related blog post: Watch “Felienne Hermans: How patterns in variable names can make code easier to read” on YouTube

Tweet: [Wayback/Archive] Nick Craver on Twitter: “Troubleshooting a hanging test suite and godDAMMIT. “In seconds”. Integer timeouts should be a felony offense punishable by an indeterminate amount of seconds/milliseconds/hours/fortnights/whatever the judge chooses.”

var csb = new SqlConnectionStringBuilder(TestConfig.Current. SQLServerConnectionString){ ConnectTimeout = 2000 }; int SqlConnectionStringBuilder.ConnectTimeout { get; set; } Gets or sets the length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error. Returns: The value of the SqlConnectionStringBuilder, ConnectTimeout property, or 15 seconds if no value has been supplied.

var csb = new SqlConnectionStringBuilder(TestConfig.Current. SQLServerConnectionString) { ConnectTimeout = 2000 }; int SqlConnectionStringBuilder.ConnectTimeout { get; set; } Gets or sets the length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error. Returns: The value of the SqlConnectionStringBuilder, ConnectTimeout property, or 15 seconds if no value has been supplied.

Read the rest of this entry »

Posted in .NET, Agile, C#, Code Quality, Conference Topics, Conferences, Database Development, Development, Event, Software Development, SQL, SQL Server, Systems Architecture | Leave a Comment »

nginxinc/kic-reference-architectures: MARA: Modern Application Reference Architecture

Posted by jpluimers on 2025/01/16

Interesting: [Wayback/Archive] nginxinc/kic-reference-architectures: MARA: Modern Application Reference Architecture

Read the rest of this entry »

Posted in *nix, *nix-tools, Cloud Development, Development, nginx, Power User, Software Development, Systems Architecture, Web Development | Leave a Comment »

Every conversation about dependencies since 2020 uses the same XKCD 2347 based image, which is a problem on multiple levels

Posted by jpluimers on 2024/08/01

The below picture is a modification of [Wayback/Archive] 2347: Dependency – explain xkcd

Title text: Someday ImageMagick will finally break for good and we’ll have a long period of scrambling as we try to reassemble civilization from the rubble.

It actually emphasises the problem both that [Wayback/Archive] xkcd 2347: Dependency is way too optimistic, and that everyone uses that to point out dependency issues or worse as a thought-terminating cliché .

The second problem amplifies itself by increasing the popularity of the comic, and the attracts people to use it even if they hardly know about dependencies.

In turn it diminishes the meaning of it, kind of making it more optimistic by basically amplifying the message “there is just one really fragile project our design/infrastructure depends on” (the infamous “A project some random person in Nebraska has been thanklessly maintaining since 2003”).

The sad reality is that this single fragile project is just not true. Modern development and infrastructure systems usually are underpinned by package managers installing the complex graphs of dependencies of which dozens, heck thousands are maintained for “free” by, more often than not, a single worn out maintainer per dependency.

It’s just that over the last few decades usually only one such package at a time posed a serious problem. But with dependencies on very small building blocks, the amount of blocks is rising as is their usage. Just two examples out of the Node JS world (mind you, each development and infrastructure stack lives in comparable worlds):

Mind you, these links are 2021 and 2022, so the numbers have increased.

Many think such problems are limited to programming errors, but over the last decade these have become the tip of the iceberg. The real problems now are that maintainers are fading away as they have for instance been worn out for too long, or simply are aging. So what we have seen over the last decade is the rise of supply chain attacks.

One such example was the XZ utils backdoor which was, by sheer luck because one guy tried to investigate why connecting over ssh had become much slower than before, barely detected in time. It had a CVSS score of 10.0, the highest possible score.

So be prepared that the below picture will have “your business structure” on the top, and towards the bottom a bunch of small fragile pillars with the text “many projects, each maintained by a worn out person on the verge of collapse”.

Read the rest of this entry »

Posted in Awareness, Conference Topics, Conferences, Design Patterns, Development, Event, Fun, Software Development, Systems Architecture, Technical Debt, xkcd | Leave a Comment »

Watch “Felienne Hermans: How patterns in variable names can make code easier to read” on YouTube

Posted by jpluimers on 2024/05/21

A while ago, various sources pointed me to the great video below by [Wayback/Archive] Felienne Hermans: How patterns in variable names can make code easier to read – YouTube.

I responded to the first Tweet with a series of tweets describing my two pet-peeves that I see going wrong when teaching new programmers how to name things (the examples are in Delphi, but I have seen similar shortcuts being taken in C#, VB.NET, and JavaScript being taught in both courses and conference sessions).

The two pet-peeves are:

  • avoid abbreviations as those are context sensitive; given software development already mixes technical context (it’s software development!) and domain/semantic context it makes it extra hard to decipher abbreviations
  • if you want/need to mix technology and semantics in names (most often you do), start with the most meaningful semantics and end with the least meaningful technology
    • if you don’t need technology in your names, at least put the most meaningful semantics and end with the least meaningful technology

Both very well amend what Felienne – a university professor – states in her research backed video:

“Their results show that ‘linguistic code smells’ actually increase cognitive loads,” she said. “Your brain has to work harder to process code that has these type of code smells. So that’s not what we want.”

I saved the [Wayback/Archive] tweets in the [Wayback/Archive] ThreadReader as this text (slightly edited for formatting):

Read the rest of this entry »

Posted in Agile, Code Quality, Conference Topics, Conferences, Development, Event, Software Development, Systems Architecture | Leave a Comment »

Lot’s of Software Development principles are like real life; next to technical debt, be also aware of the second law of thermodynamics (via Florian Haas on Twitter)

Posted by jpluimers on 2024/03/07

I like this very interesting take: [Wayback/Archive] Florian Haas on Twitter: “For people who keep arguing that an inherently complex system can be permanently reduced in complexity (frequently, such people are software engineering managers, executives, or product managers), I sometimes wonder if they’ve ever heard of the second law of thermodynamics.

Like technical debt, this is another take from the real world that you can apply to software development.

–jeroen

Posted in Development, Software Development, Systems Architecture | Leave a Comment »

Avoid a software rewrite: it usually brings more trouble and puts you at a distance to competitors

Posted by jpluimers on 2023/11/22

[Wayback/Archive] lisacrispin on Twitter: “👇 This. If you want a new architecture, use the strangler fig pattern, and as he says in the thread, do it in prod. If you spend all your time rewriting, and your competitors spend that time adding new features for customers, your product will be in trouble.” / Twitter pointed me to the below thread.

The urge of rewrite often comes from a feeling of too much technical debt to carry. Preventing that technical debt in the first place would make this feeling go away in the first place so please strive for bringing down and limiting technical debt in the first place.

More about the above tweet further on in this blog post, but now back to the “rewrite everything” pit many fall into.

I saved the whole thread in [Wayback/Archive] Thread by @andrestaltz on Thread Reader App – Thread Reader App of which this are a few highlights:

Read the rest of this entry »

Posted in Agile, Code Quality, Design Patterns, Development, Software Development, Systems Architecture, Technical Debt | Leave a Comment »

The CPU load average metric often is not a good one to alert on

Posted by jpluimers on 2023/04/20

Boy I wish threads with more than one person could be saved by the ThreadReaderApp.

Anyway:

[WayBack] Thread by @mipsytipsy: oh boy.. i was just idly musing over how the single most ubiquitous/useless metric is “CPU load average”, lol i wonder if you could use CPU…

oh boy.. i was just idly musing over how the single most ubiquitous/useless metric is “CPU load average”, lol

i wonder if you could use CPU load alerts to score how modern and powerful a team’s toolchain is, like a Waffle House Index for tooling. 🤔

 

…oh oh! but i was gonna say, this thread between @drk and @shelbyspees is a killer nanotutorial in how to ask better questions about your code — where to start, how to drill down and dig in, how to instrument, and how to approach such an open-ended exploratory jaunt. 👏🐝❤️

it’s a really good illustration of this thing we end up saying all the time, which is “don’t fear the future, it is simpler and clearer and *easier* here! the way you are doing it NOW is the hard way!” 😖

time for cpu load average to go the way of the PC LOAD LETTER …

0:00
/ 0:01

 

 

Read the rest of this entry »

Posted in *nix, Cloud, Development, DevOps, Infrastructure, Power User, Software Development, Systems Architecture | Leave a Comment »

Katie Anderson on Twitter: “Saw this on Facebook and it’s my new favorite PaaS (Pizza as a Service) breakdown”

Posted by jpluimers on 2021/11/30

Legacy/IaaS/PaaS/SaaS explained by “Pizza as a service”: from home made, take and bake, pizza delivery to full dining out.

[Archive.is] Katie Anderson on Twitter: “Saw this on Facebook and it’s my new favorite PaaS (Pizza as a Service) breakdown https://t.co/INKKG9UOAK” / Twitter

–jeroen

Read the rest of this entry »

Posted in Cloud, Conference Topics, Conferences, Development, Event, Infrastructure, Software Development, Systems Architecture | Leave a Comment »