Skip to main content

John Evdemon

Thursday December 5, 2019

1 min read

Foggy morning

Audiobooks on YouTube!

I knew people were putting music on YouTube. I only recently realized people have also been putting audiobooks on YouTube. I found one of my favorite financial advice books on there.

Judicial abuse (again)

Once again a single judge can overrule the will of the voters. This seems like an abuse of power. I can't say I'm very surprised though - Washington state has a history of corruption around the voting process. I haven't voted in Washington state since the blatant cheating that took place in the 2004 gubernatorial election.

To coup or not to coup

Apparently the plan to impeach Trump was started minutes after he was sworn in.

John Evdemon

Wednesday December 4, 2019

1 min read

I'm not dumb! I'm SMAHHHT!There's an old saying "never meet your idols". There are several people on the web whose work I've admired but their personal opinions are frequently out of touch. Being intelligent in one area doesn't necessarily mean you are intelligent in others.


John Evdemon

Tuesday December 3, 2019

1 min read

Strange that they waited until she died to make a film about Black Widow. This film feels like it should have come out after The Winter Soldier. The trailer looks interesting but Avengers Endgame felt like the end of the Marvel Universe to me.  I'm not sure if I'll bother to see this film.

Setting up Deep Linking on my blog

By jove, I think I've finally got it!  I'm documenting it here so I can easily set it up in the future...

  1. Get AnchorJS and put the anchor.js file in the root folder of your blog
  2. In Known, go to custom CSS settings and add the following:
       :target {padding-top: 50px;}
  3. Again in Known, go to Custom Javascript and add the following (don't forget to include the script tags!):
    Header Code:
    Footer Code:
  4. Save and test. Deep linking should now be enabled.

John Evdemon

Movin' on up

1 min read

I'm in the process of moving into a new blog instance.

I've got lots of older content here and on this blog that I'm in the process of porting over to the new instance.

John Evdemon

Upgrade Time!

3 min read

I love Known - it's an elegant blogging tool that supports most Indieweb standards right out of the box. The biggest challenge I've had with Known is getting it upgraded.  I host my blog with Reclaim - a great little hosting service with excellent customer support.  The challenge I had is Reclaim only supported an older version of Known (0.92 - the latest version as of this writing is 1.0.0-rc.2+2019100601).  Upgrading Know shouldn't be that difficult except the documentation for installing and upgrading it is terrible.  I was finally able to get upgraded to the latest version of Known thanks to some help from Greg McVerry.  Listed below are the steps I followed:

Note: these steps are fairly generic and should work with virtually any hoster capable of running Known 0.92.

1. Create a subdomain under your domain

2. Enable Lets Encrypt for your new subdomain

3. Use Installatron to install the old version of Known into your subdomain - do NOT install Known into a cms folder (blank this default option out)

4. go to Terminal and change to the directory that corresponds to your subdomain

5. install Composer:
    php -r "copy('', 'composer-setup.php');"
    php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"

6. run the following Composer command to install Known into a Known folder within your subdomain folder:

   Install latest stable version:
   composer create-project ido/known

    Install bleeding edge version:
    composer create-project idno/known -s dev
7. cd into the known directory

8. update the Known files using the Composer command:
    composer update
9. copy the updated Known files up over the older Known files that were installed by the Installatron:
    cp -R * ../
10. Go to https://your-subdomain.your-domain to login and start setting up the latest version of Known


  • The Twitter plugin wasn't working - it was causing server 500 errors when I tried to enable it.  I fixed it by starting up Terminal, going to the subdomain folder and entering the following Composer command.  I assume I could also use this command to install/refresh other misbehaving components:

           composer require idno/twitter

Update 2:


John Evdemon

Silence Unknown Callers on Android

1 min read

Apple announced a new IOS feature to Silence Unknown Callers. It seems like an easy to avoid robocalls. I wanted to do it on Android but I didn't want to install any privacy stealing apps.

Here's how you can Silence Unknown Callers on Android wiithout using and 3rd party apps:

Step 1: Turn on Do Not Disturb
Step 2: Define Do Not Disturb exceptions:

John Evdemon

Changes to Azure API Management

1 min read

Azure API Management has made some changes.

It's a pity none of these changes are related to its pricing model. APIM is a nice service but it's very expensive.


John Evdemon

What will happen to the Stock Market if President Trump is impeached?

1 min read

These are the ony presidents to have been impeached (Nixon resigned before he was impeached).The stock market is like a young person with attention deficit disorder (ADD). It tends to place far too much emphasis on political events that are unrelated to the revenues and earnings of private companies. In other words, the stock market overreacts. A lot.

It seems likely that the House is leaning towards impeaching the president. Following an indictment by the House, a “trial” would occur in the Senate. The Senate acts as a jury and decides whether or not to impeach the President.  Impeachment requires two-thirds of the Senate (67 of 100 Senators) to vote YES, Given the current representation in the Senate it seems very unlikely that the President will be impeached. 

This means the House will reprimand the President with impeachment hearings for historical records and no substantive changes will occur. The House impeachment process will only be ceremonial. 

 The last time a president was impeached the stock market remained relatively stable. When it comes to impeachment I hope that past performance is an indicator of future results.


Why "polyticks"?  Because politics derives from poly (meaning "many") and ticks (meaning "blood suckers")

John Evdemon

A Comparison of Azure's Container Services

7 min read

Posting some opinions and info here.  Please consult the official Azure docs on containers if you have any questions.


What to Use When

Use Case

Container Offering

Bursting Workloads

ACI, Azure Batch

On-Demand Workloads

ACI, Azure Functions

Dev/Test/PoC Workloads

ACI, Standalone VM

24/7 Prod Workloads

AKS, Azure Web App for Containers

Web Hosting

Azure Web App for Containers, AKS

Prod Orchestration

AKS, ACS Engine

Custom Orchestration

ACS Engine


Azure Container Service Offerings

- Azure Container Instances (ACI)

  • "containers as a service" - billed only for the time the container is active
  • Excellent for bursty load types or tasks that run on a set schedule
  • use the portal or CLI to create a container
  • no need to worry about provisioning VMs to host the container or installing software.
  • ACI instances can be created with a single line CLI or PowerShell command and are up and running in minutes.
  • If you need multiple containers ACI supports container groups
    • Container groups enable numerous containers on the same host and local network.
  • ACI containers can be configured with CPU and RAM to meet your requirements and support Linux and Windows containers.
  • It is not yet possible to attach ACI instances to an Azure virtual network.
  • Running an ACI instance 24/7 will be slightly more expensive than running a VM of the same size.


- Azure Web Apps for Containers

  • you are billed whether the webapp/container is active or not
  • no container orchestration or discovery support (e.g. no "mesh")
  • use a custom image to create a container for your Web App
    • can only deploy one image to an AppService
  • can scale to multiple instances but each instance uses the same image
  •  containers pull their images from the Azure Container Registry (ACR)
  • create a new web app and configure it to point to your container registry.
  • You pay the standard price for the size of web applications you select - no additional cost for using containers.


- Azure Functions

  • you are billed only when the Function is invoked
  • Limit: 10 minute maximum execution time for consumption based functions.
  • With Azure functions 2.0 and Azure functions on Linux we can use containers
    • Limited to Linux only
    • Need to use the microsoft/azure-functions-runtime as the base image for the container


- Azure Batch

  • Solution for large-scale parallel batch processing.
  • Encapsulates all  application files inside of a container image.
  • Deploys batch VMs but the VMs are running an OS version with container support
    • your image is loaded onto the container
    • container has access to the full resources of the VM it is running on (one container per VM)
  • Can pre-fetch a container image for your batch pool to reduce deployment times.


Orchestrators - used to control multiple containers

- ACS (Azure Container Service - being replaced by AKS)

  • NOTE: ACS will retire on January 31, 2020.  See here for guidance on moving from ACS to AKS.
  • create a container orchestration cluster running Docker Sware, Kubernetes or Mesos.
  • this is IaaS - you are  responsible for managing the VM’s, applying updates etc.
  • ACS is deployed like a PaaS service, but what gets implemented is a set of IaaS infrastructure (vNet, NSG’s, virtual machines etc.)
    • pre-configured to run your selected orchestrator


- AKS (Azure Kubernetes Service - think of it as managed K8S as a Service)

  • semi-managed Kubernetes service and is the replacement for ACS.
  • No cluster-level SLA
    • Azure provides an SLA only for the underlying machines
  • Unlike ACS, only the K8S orchestrator is supported
  • Only for stateless services - state must be stored externally (CosmosDB, SQL DB, file system, etc)
  • While ACS deployed ALL IaaS infrastructure, AKS only offers part of the service as a managed PaaS offering
    • Kuberntes master nodes are hidden from you and are operated by Microsoft
    • the only VM resources you see are the worker nodes
    • worker nodes are IaaS and need to be managed and updated by you
    • you only pay for the worker nodes - the managed part is free
  • No Windows Container support - use ACS for this
  • intended for deploying Microservices
  • AKS is committed to full upstream Kubernetes parity, which means you benefit from the community and ecosystem around Kubernetes.
    • While Microsoft supports AKS, if you have issues with Kubernetes you will have to rely on the community for help.
  • Kubernetes is open source


- Azure Container Service Engine (ACSE)

  • Open sourced engine that ACS and AKS are built on top of
  • uses JSON files to detail the configuration of your orchestrator
  • ACS Engine generates ARM templates which you can deploy to Azure
  •  engine is a container orchestrator running on IaaS infrastructure that is all customer managed (no PaaS service here).
  •  You can use ACS engine to create clusters that aren’t currently supported in AKS
    • like Windows containers, or mixed Windows and Linux clusters, later or beta versions of Orchestrators,
    • support for Orchestrators other than Kubernetes etc.
  • enables more control over the orchestrator cluster that gets created
  • intended for deploying Microservices


- Service Fabric

  • SF is an app server capable of hosting and orchestrating containers
  • Azure itself runs on Service Fabric.  Service Fabric is the "productization" of Azure's hosting fabric.
    • SF is a more mature platform than Kubernetes
  • No cluster-level SLA
    • Azure provides an SLA only for the underlying machines
  •  Stateful services are fully supported using the virtual actor pattern
    • "actors" are shared-nothing units of computation that can maintain their own state
    • Other orchestrators only support stateless  services (state is stored externally via CosmosDB, SQL DB, cache, file system, etc)
  • Billing is hourly for all the VMs, storage and network resources that are used by SF
  • best for legacy .NET Windows applications
  • Service Fabric is open source


- Service Fabric Mesh 

  • SF Mesh is not Service Fabric:
    • SF Mesh is a multi-tenant service for hosting containers.  SF is an app server capable of hosting and orchestrating containers.
    • All deployments to SF Mesh must use containers
    • SF Mesh cannot host Ser­vice Fab­ric Ap­pli­ca­tions (e.g. native SF apps that don't use containers)
  • Capabilities:
    • deploy/operate containerized apps without having to manage VMs, storage or networking
    • you do not manage or see the VMs or the cluster
    • You focus on your application and its associated resources (containers, network, routes etc)
    • Limitations:
      • only available in US West, US East, and Europe West
      • Number of applications: 5
      • Number of cores per application: 12
      • Total RAM per application: 48 GB
      • Number of network and ingress end points: 5
      • Number of Azure volumes that you can attach: 10
      • Number of service replicas: 3
      • Largest container you can deploy is limited to 4 cores, 16-GB RAM.
  • supports both Windows and Linux containers
  • SF Mesh is not open source


- AKS and SF will continue to converge in orchestration capability

  • AKS will most likely never have the stateful capabilities that Service Fabric provides


Related services

- Azure Container Registry (ACR)

  • Private container registry.
  • Create a registry and have AKS connect to it using Azure Role Based Authentication.
  • ACR supports geo-replication - provides an easy way to distribute images globally.


- Azure Files and Managed Disks

  • Tools for persisting data for containers.
    • ACI can only use Azure Files, not Managed Disks
    • AKS and ACS can use Azure Files and Managed Disks
  • Managed Disks enable better performance for container storage