It’s Time for a Change

You’ve probably heard the old adage, “Change is good” at some point in your life. Although change can be hard, I’ve found that for me personally, it’s the only way to grow and move forward in life. It was a big (and hard) change starting my own company 20 years ago but I wouldn’t trade the experience I’ve gained for anything. To set the stage for this post, let me share a little about what I’ve been doing, walk you through what I’ve been thinking, and then discuss the next big change I’ve decided to make (jump to the bottom […]


Getting Started with Azure Static Web Apps

What does it take to deploy a modern JavaScript web app? Your initial response might be, “Copy the files up to the server – how hard could it be?”. The reality is that deploying modern JavaScript apps is a bit more complicated than simply copying files up to a server. For example, let’s say that you have a Single Page Application (a static web application) built with React, Vue, Angular, or another technology that hits an API, supports user logins and roles, and has to secure specific server-side routes. To deploy the app you’d need to do something like the […]


Video: Building and Running Custom ASP.NET Core Containers

I recently had the opportunity to do a webinar for Pluralsight where I talked about how you can use Docker to build and run custom ASP.NET Core containers. The containers can be run locally on your machine, on a company server within an on-prem data center, or even in the cloud. Here are the specific topics that I covered in this session: Docker Concept Review Docker and ASP.NET Core Creating a Custom Dockerfile Multi-Stage Dockerfiles Running ASP.NET Core Containers in Azure You can view the recording from the webinar below. The slides from the presentation can be found here. Building […]


5 Actions You Can Take To Reduce Anxiety/Stress and Increase Overall Wellbeing

Have you struggled much with anxiety or worry in your life? They can be easy to avoid when things are going good, but how do you handle them in more stressful situations? What can you do to help minimize anxiety, worry, and stress in your job, family, and other areas of life? As someone who has struggled with anxiety and worry from time to time over the years I asked myself the same question and decided that I needed to take action. This post details a few strategies and actions that have really helped me in a big, big way. […]


New Pluralsight Course – Kubernetes for Developers: Deploying Your Code

I’m excited to announce the release of my next course on Pluralsight titled Kubernetes for Developers: Deploying Your Code! This course is the next in the Kubernetes for Developers learning path and focuses on different techniques that can be used to deploy your containerized applications to Kubernetes. It follows the Kubernetes for Developers: Core Concepts course. Here’s the recommended order for taking my courses that cover containers and Kubernetes: Docker for Web Developers Kubernetes for Developers: Core Concepts Kubernetes for Developers: Deploying Your Code Here are a few questions this course will help you answer: What is a Kubernetes Deployment […]


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. […]


New Pluralsight Course: Creating Object-oriented TypeScript Code

I’m excited to announce the release of another course on Pluralsight titled Creating Object-oriented TypeScript Code! If you’ve been wanting to learn more about ES2015 features as well as object-oriented features available in TypeScript then this this is the class for you! Here are a few questions this course will help you answer: What techniques can be used to create objects in JavaScript and TypeScript? What is object-oriented programming? Can I work with classes? What are constructors? What are get/set properties? How do I define functions in classes? Is a static member the same as an instance member? Can classes […]


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 […]