2021-10-15

The Stateful Microservice

I did a quick search for the term and did not find anything concrete, so I thought I might as well publicly document my thoughts.

Photo of two elephants friendly interacting with each other, from The Scientific American: Fact or Fiction?: Elephants Never Forget

2021-10-14

On Stateless Microservices

This post discusses the stateless microservice design pattern; it is meant as support material for other posts of mine that discuss microservices.


Dory, the yellow-blue fish (a Royal Blue Tang) that suffered from amnesia in the 2003 movie Finding Nemo made by Pixar and published by Disney Entertainment.

Is statelessness a requirement for a microservice?


In another post of mine I discuss what a microservice really is, and I come to the conclusion that despite various attempts out there to define microservices using twenty-item-long lists of characteristics, a good working definition could be as simple as this: 

A microservice is a scalable and resilient module.
(See michael.gr - So, what is a Microservice, anyway?

Even if you disagree with the terseness of that definition, and you regard microservices as necessarily more than that, I hope you will at least agree that it is precisely scalability and resilience that the stateless microservice design pattern aims to address, so the definition serves its purpose at least in the context of this series of posts.

There are many who will try to convince you that in order to build a scalable and resilient system, you need statelessness; so much so, that microservices have almost come to be regarded as synonymous with statelessness. This post examines whether this is that in fact so, and what is the cost of doing things this way.

So, what is a Microservice, anyway?

This article attempts to shed some light on what a microservice really is; it is meant as support material for other articles of mine that discuss microservices.


2021-10-04

What is wrong with Scala


This is part of a series of posts in which I am documenting what is wrong with certain popular programming languages that I am (more or less) familiar with.  The aim of these posts is to support a future post in which I will be describing what the ideal programming language would look like for me.  

I will be amending and revising these texts over time.

What is wrong with C#

This is part of a series of posts in which I am documenting what is wrong with certain popular programming languages that I am (more or less) familiar with.  The aim of these posts is to support a future post in which I will be describing what the ideal programming language would look like for me.  

I will be amending and revising these texts over time.

What is wrong with Java


This is part of a series of posts in which I am documenting what is wrong with certain popular programming languages that I am (more or less) familiar with.  The aim of these posts is to support a future post in which I will be describing what the ideal programming language would look like for me.  

I will be amending and revising these texts over time.

What is wrong with C++


This is part of a series of posts in which I am documenting what is wrong with certain popular programming languages that I am (more or less) familiar with.  The aim of these posts is to support a future post in which I will be describing what the ideal programming language would look like for me.  

I will be amending and revising these texts over time.

2021-09-12

[SOLVED] In Windows, how to recover an invisible application window

Scenario: 

  • You are using a laptop with one or more external monitors at home and (a different set of external monitors) at the office.

Problem: 

  • Every once in a while, when you switch between home and office, some buggy application will not handle its screen positioning correctly, so it will open up out of the screen. In the taskbar you can see that the application has launched, but the application window is invisible.

Steps to fix:

  1. Switch to the application by clicking on its taskbar icon. 
    • Nothing seems to happen, but the application does receive keyboard focus.
  2. Press [Alt]+[Space].
    • The system menu of the application should now appear on one of the corners of one of your monitors; if not, continue following the instructions anyway.
  3. In the system menu, select "Move".
    • If you cannot see the menu, just press the [Down Arrow] key once, and then the [Enter] key.
  4. Press one of the arrow keys, e.g. the [Left Arrow].
    • This should start the window moving.
  5. Move the mouse.
    • This should bring the window into one of the monitors.
  6. Position the window where you want it, and click the mouse once to drop it there.


2021-07-27

Malicious Inaction

Actor Wayne Knight in the original Jurassic Park movie
playing the role of the unscrupulous programmer Dennis Nedry,
(anagram of "Nerdy",) the main villain.

Malicious Inaction (noun) any situation where a piece of software encounters an unexpected condition and responds by deliberately doing nothing, including not throwing an exception.  Synonyms: Silent Failure; Deliberate Malfunction; Unscrupulous Programming; Undermining; Sabotage; Treachery; Subversion; Vandalism.

I think that the term "Silent Failure" fails to express the amount of harm done.  Sure, the word "failure" indicates that something went wrong, but the word "silent" somewhat lessens the severity of the term, and it makes sound as if no feathers were ruffled, so it may have been alright.

Well, no. It was not alright. It never is. We need a stronger term to better capture the harm caused by the sinister practice of hiding error. We need a term that clearly conveys wrongdoing, a term that assigns blame and shame.

Hence, I present to the world my new and improved term: Malicious Inaction.


2021-02-12

SVG in WPF

My notes on how to use SVG graphics in a WPF application


The Goal


The goal is to be able do do things like this:

    <Button Content="{StaticResource mySvgImage}">

... where mySvgImage somehow stands for a vector image that has somehow been obtained from an SVG file.  

The solution must not involve any proprietary, closed-source libraries.

Naturally, we want one of the following:

  • either directly include SVG files into our application as resources, or, if that is not possible, then 
  • have an "asset pipeline" approach where our SVG files are automatically converted during build into some format which is suitable for inclusion as a resource.