Using the Kubernetes JavaScript Client Library

I’ve been working with Kubernetes a lot and focusing on various deployment techniques that can be used (such as Blue-Green Deployments) for a Pluralsight course I’m creating called Kubernetes for Developers: Deploying Your Code. If you’re new to Blue-Green Deployments, here’s a quick overview: While I was working on the course, Dr. Christian Geuer-Pollmann and I had chatted on Twitter about a Blue-Green dashboard he wrote. He did a great job on it! I’ve been wanting to experiment with the JavaScript Kubernetes Client library so I decided to see what could be done to create a simple Blue-Green Deployment “dashboard” […]


Enabling Metrics Server for Kubernetes on Docker Desktop

Lately we’ve been working on a new Docker and Kubernetes instructor-led training class that we’ll be running onsite at several companies this year. The class uses Docker Desktop and the Kubernetes features it provides for several of the chapters. We needed to get the local cluster students will use to match as closely as possible to a cloud-based Kubernetes cluster that would be found on Azure, AWS, or GCP. The class covers using AKS as well, but most of the lab exercises rely on Kubernetes in Docker Desktop so running key features like the dashboard and Metrics API was important. […]


Observable Store – Now with Support for the Redux DevTools

Observable Store now supports extensions! These can be added when the application first loads by calling ObservableStore.addExtension(). The first built-in extension adds Redux DevTools integration into applications that use Observable Store. The extension can be found in the @codewithdan/observable-store-extensions package. If you’re new to the Redux DevTools, they can be used to “time travel” through your application to see what happened at particular times. This feature is extremely useful when you’re trying to track down a problem or simply want to see what state flows through your application. You can get more details on the various Redux DevTools extension features […]


Using the Docker "before" Filter to Remove Multiple Images

I recently needed to cleanup a bunch of old Docker images on a VM that I run in Azure. While I could remove each image one by one using the standard docker rmi [IMAGE IDS] command, removing multiple images all at once as a batch was preferable. It turns out that removing a specific range of images is fairly straightforward using the “before” filter. You can do the following to list all images that exist before a particular image: Running the command will show all of the images that existed before the danwahlin/nginx-codelabs:1.15 image (basically the older images). Once you […]


Installing MongoDB on Mac Catalina using Homebrew

I recently bought a new iMac and moved all of my files over using Time Machine. The migration went really well overall and within a few hours I had my development machine up and running. After starting an application I’m building I quickly realized that I couldn’t get MongoDB to start. Running the following command resulted in an error about the data/db directory being read-only: I tried every chmod and chown command known to man and woman kind, tried manually changing security in Finder, compared security to my other iMac (they were the same), and tried a bunch of other […]


Observable Store 2.0 Released on npm!

I’m excited to announce the release of Observable Store 2.0 on npm! You can get started using it with the standard npm install command: The Github repository provides information about the specific steps to get started and how Observable Store can be used with various front-end projects. Why Observable Store? Before jumping in to what’s new in 2.0, let me give a quick overview of the Observable Store project in case you’re new to it. Several years ago I was working with a few large companies here in the United States who were building Angular and React apps. One in […]


New Pluralsight Course – Kubernetes for Developers: Core Concepts

I’m excited to announce the release of my next course on Pluralsight titled Kubernetes for Developers: Core Concepts! Since creating the Docker for Web Developers course I’ve been wanting to create a course that takes developers to the “next level” with containers and the new Kubernetes for Developers course does that! Here are a few questions this course will help you answer: Why should I learn about Kubernetes if I’m a developer? What are the core concepts that I should know about to get started? How can I get Kubernetes running on my development machine? What is the role of […]


RxJS Error: “Types of property ‘source’ are incompatible” and How to Fix It

I’m working on an npm package that requires RxJS as a peerDependency which means that whatever app uses the package must also install RxJS. Since my npm package project needs RxJS to build, I add it as a devDependency which of course adds it into the node_modules folder of the project. To use my npm package locally in sample apps I have I do the following which is a nice trick to avoid having to publish the package to npm (which I don’t want to do when I’m still working on it): Run npm link [package-name] where package-name is name […]


Debugging jasmine-ts Unit Tests in VS Code

I’m currently working on a project that relies on jasmine-ts to run unit tests. While it’s been working great, I encountered a bug in a unit test that required a lot more than a simple console.log() statement to figure out. I needed real debugging! Since my unit tests were running and providing output directly to the console, the question became, “How do you attach to a jasmine-ts unit test in VS Code?”. I found a few StackOverflow posts and finally went with something mentioned here (shout-out to isaacfi for providing the answer that actually worked). To debug a jasmine-ts unit […]


Angular Architecture Concepts – ngVikings Keynote

The ngVikings conference was held in Copenhagen, Denmark this year and I had a great time speaking at it and talking with the people that attended. One of the more fun aspects of attending any conference is listening to and learning from what others are doing, hearing about problems they’re trying to solve, helping out where possible, and making new friends along the way. I had the opportunity to give one of the keynote talks this year and focused on a topic that is near and dear to me – architecture. Some companies seem to have the viewpoint that because […]