All Posts

A List of Posts

When will it be done?

“When will it be done?”

It is a reasonable question. Your organization coordinates releases, customer commitments, and budget cycles around answers to it. The people asking are not being unreasonable.

Read more

Story Points Are Not Days

It starts innocently enough.

Sprint four. Someone from finance asks how many days a five-point story takes. Your Scrum Master gives a number, meaning well. By sprint six, that number is in a spreadsheet. By sprint eight, the spreadsheet is attached to a quarterly delivery forecast.

Read more

Your company says it does Agile (Except not really)

You aren’t imagining it.

You have sprints, standups, story points, and a Jira board. Someone on your team is probably called a Scrum Master. There is a planning ceremony, a retrospective, maybe even a definition of done posted somewhere.

Read more

My AI Broke My Book. And Then AI Fixed It

I’m writing an update to my book P-AI-R Programming about AI-assisted software development. This is the story of something that happened to me during the writing process, an incident that became one of the most compelling arguments for version control I’ve ever experienced, and a perfect demonstration of what AI pair programming actually looks like in practice.

Read more

How to Disagree Without Risking Your Job

In any career worth having, you’ll eventually find yourself at odds with a colleague, a manager, or an entire organization.

The question isn’t whether you’ll disagree. It’s how you’ll handle it when you do.

Get it right, and you earn respect, influence, even promotion. Get it wrong, and you can derail everything you’ve built.

I’ve done both. Here’s what I’ve learned.

Read more

What 30 Years Taught Me About Saying No

Early in my career, I said yes to everything.

Extra project? Yes. Weekend work? Yes. Task that wasn’t my job? Yes. Meeting that could have been an email? Yes.

I thought this was how you got ahead. Show willingness. Demonstrate commitment. Be the person who never says no.

I was wrong.

Here’s what I’ve learned about saying no — and more importantly, how to do it without destroying your reputation.

Read more

I Lost My Job for Being Right

I lost my job for being right. Not for being wrong — for being right, but saying it the wrong way, to the wrong people, at the wrong time. That experience taught me something no bootcamp or MBA ever will: how you communicate matters as much as what you know.

Let me tell you what happened.

Read more

A Better (Software Development) Book Authoring Process

When I began rewriting Angular Advocate, preparing it to be my first traditionally-published book, I saw a chance to streamline my writing and editing process. Through trial and error, I came up with some optimizations that not only made my work easier but also more enjoyable.

Read more

The $1000 Bitcoin Hack

I woke up one morning to find a notification on my phone that said my $1000 Bitcoin purchase was successful. The timestamp was approximately 3:40 AM. I thought maybe I had set up an automatic purchase or something. That didn’t make sense, though. I don’t have $1000 sitting around I can simply blow on a Bitcoin gamble. Something else must have happened.

Read more

When in Doubt, Choose Honesty

Honesty and integrity are absolutely essential for success in life — all areas of life. The really good news is that anyone can develop both honesty and integrity.

— Zig Ziglar

Read more

Melding Feature Development and Sustainment into a Seamless Workflow

In the realm of software development, two core activities dominate the scene – Feature Development and Sustainment. The former is about adding new capabilities to the system, while the latter deals with maintaining and refining the existing system to ensure its steady and reliable operation. Traditionally, these two are seen as separate tracks, often managed by distinct teams with different sets of priorities and timelines. However, as the industry evolves towards more agile and lean practices, it’s time to question this division and advocate for a more unified approach.

Read more

Evolving the Developer-QA Dynamics

The quest for efficiency and quality in software development beckons a paradigm shift, where Quality Assurance (QA) is not seen as a separate entity, but as an integral part of the development lifecycle. Automation stands as a cornerstone of this transformation, offering a myriad of benefits when adopted in the QA process. When sustainment developers and the QA team collaborate in the same repository, contributing to the code as equal partners, a new horizon of productivity and quality unveils.

Read more

Greetings from Post-DEVIntersection

Note: the fake template string below is intentional

Dear {{firstName}},

I’m sure you’ve received marketing emails that start like this. It’s obvious that someone botched the mail merge. It feels lazy or incompetent, definitely unprofessional. But what if they got it right? What if your name was correct in the greeting? Is that really any better? Honestly, have you ever truly believed they were sending emails just to you?

Read more

Watch Your Writing - Tips to Improve Your Written Communications (Revised Dec 2021)

With the explosion of social media over the past decade or so, the written word is often the first, and sometimes the only, exposure other people will ever have of you. There are hundreds, perhaps thousands, of people who who will only ever know you through your writing. Fair or not, many of them will judge you on how well you express yourself. This article is an attempt to provide some simple guidance to improve your language and your writing, to make that first impression a positive one.

Read more

Mike's Mics - A Simple Test of Common Microphones in Virtual Meetings

Like most of you, I have attended countless online virtual meetings over the past couple of years. In every one of those meetings, there is always someone who sounds truly awful. Most people, I presume, do not give much thought to how they sound when they buy a new headset. They are more concerned with the quality of their speakers. I wondered, “If others sound horrible, what do I sound like? Am I using the best microphone to make it easy for others to understand me?” These meetings are bad enough as it is; I hate to complicate them by not being understood when I speak. That is when I decided to find out.

Read more

No Good (Zoom) Deed Goes Unpunished

Earlier this year the leader of our church congregation asked me to take over the Zoom meetings for our weekly services. We meet in person, but some of our members still do not feel comfortable gathering indoors. The church pays for a Zoom license, so we set up a recurring webinar for them. All I need to do each week is provide a device, log on, start the Zoom meeting, and monitor the chat for any issues. I’m a technical guy. I can manage a Zoom meeting. It sounded like a simple enough assignment, so I agreed. It has been anything but simple, but I’ve learned a lot along the way, some of which may be useful to others.

Read more

An Exercise Routine for the Sedentary Developer

Sitting behind a desk all day is a typical part of a software developer’s life. It is easy to become lazy and sedentary, which describes me over most of my career. That all changed in 2020. The COVID pandemic brought on a new era of remote work. Not having a daily commute gave me the chance to come up with a new morning routine.

Read more

Diagnosing Random Angular Test Failures

Have you ever had an intermittent or random failure in your unit tests? I did, and I was pulling my hair out trying to figure out the problem. Below I will describe how I finally managed to find the offending tests and solve the problem.

Read more

What Did Prettier Do to My HTML?

I have resisted installing and using Prettier for a long time now, mostly because I was happy enough with the job VS Code does formatting my code. Then over the Christmas break, my son convinced me to install it. After I did, he said, “Now open an HTML file and I’ll show you something you aren’t going to like.” Sure, now he tells me! That struck me as ominous, but I decided to go along for the ride.

Read more

Upgrading an AngularJS Project to Angular

For the past few months I have been involved with migrating an AngularJS 1.4 app to a more modern version of Angular. Below I will describe some of the processes, techniques, and issues I have encountered to make the migration successful.

Read more

Upgrading Angular from 8 to 10

Angular is on a six-month release cadence, which means you need to stay on top of them in your own projects. The last thing you want to do is wake up one day and find that the latest version was just released and you are stuck on a version from two and a half years ago. Fortunately, the Angular team has made it very easy to upgrade.

Read more

Guns in the Office

What do you get when you combine a bunch of software developers with a perceived impending disaster? In one case, we got guns, and lots of them! The weirdest thing is how normal it all seemed.

Read more

Pixabay.com - a Review

The other day I was looking for a picture of a swimming pool for a mobile app I am writing (more on that later). Much to my excitement, I stumbled upon an online image catalog called Pixabay.

Read more

How I Got My First Programming Job

I wanted to become a software developer from the time I wrote my first “Hello World” app in 9th grade. After graduating high school in 1985, I entered the University of Maryland’s Computer Science program. It did not go well. I completed only four semesters of college over the next five years. My dream of becoming a professional developer faded. In 1995, nearly ten years after high school, I finally landed my first paid programming job. Here is how I did it.

Read more

My Disastrous 3-Year Programming Hiatus

Ten years into an otherwise successful software development career, I experienced significant burnout and walked away from a 6-figure salary. I quit my job, sold my house, moved to a remote part of New Hampshire, and did not work again in software development for almost three years.

Read more

Debugging AngularJS from VS Code with Docker Containers

This post describes how I built a docker container that runs an express server, which serves an AngularJS app, written in TypeScript, with live reloading, remote Chrome debugging, with Source Maps served from a different directory, and VS Code breakpoints.

Read more

Passive Income from Side Gigs

My side gigs have brought in almost $7000 in passive income through the first half of this year, mostly by formatting and editing content I already had lying around. Here is why and how I did it.

Read more

Hybrid Mobile Development at Disney

One hot summer day, my team received a somewhat frantic email. Due to some hardware support issues, a very large and visible part of our business was at risk of being shut down. They wanted to know what we could do about it. This post will provide some of our challenges, and the solution we ultimately provided, to keep the business running.

Read more

Why I Work at Disney, Part 1

I am currently in my tenth year as a Disney Technology Cast Member. As the tenth year is a milestone year at the company, I have spent some time reflecting on my time here, my career, and where I want to go over the next decade. My conclusion is that I cannot imagine working anywhere else. This post describes some of my reasons why.

Read more

Walt Disney's Four Keys (Of Software Development)

I recently celebrated nine years as a software developer at Walt Disney World in Florida. It is the longest I have ever stayed with a single company in my nearly 30-year software development career. Not coincidentally, it has also been one of my most rewarding. In this post I will describe a philosophy of Guest Service known as Walt Disney’s Four Keys Basics. In a follow-up, I will discuss how to apply these basics to software development.

Read more

The Most Magical Job on Earth

I normally ignore unsolicited emails from recruiters. They are almost never a good match, and feel as though they are “shotgun” email blasts sent to hundreds or thousands of people. This one was different, though. It had the word “Disney” in the subject line.

Read more

How to Create an Effective Ionic Menu With and Without a Split Pane

One of my blind spots when creating apps with the Ionic Framework is adding a side-menu after the fact. Even after using it for so many years, it seems I always need to look up how to do it. So I created this post to remind me (and you) how to create an effective Ionic Menu with and without an Ionic Split Pane View in an Ionic Angular application.

Read more

I Finally Understand Ionic Menu Types

It took some experimenting and creating a video, but I finally figured out what the difference is between the three types for an ion-menu component in the Ionic Framework.

Read more

Displaying "Network Offline" in an Angular and Ionic Application

One of the key features of Progressive Web Applications is the ability for them to function without a network connection. Angular makes it really easy to turn any web app into a PWA. Believe it or not, though, having a PWA that works offline does come with some downside, primarily due to it caching much of your application. If your users are expecting current data, but your service worker is serving cached data, there could be some confusion. So in this post, I will show you how to provide​ a small visual indicator to your users whenever the app is offline​.

Read more

My PWA Journey

Deploying to app stores is painful. It is hard. There are many aspects of deploying apps that you must get right, and the process differs between the Apple App Store and the Google Play Store. This post describes my experience with that process, and why I became so captivated with Progressive Web Applications (PWAs).

Read more

Watch Your Language - Spelling and Grammar Tips for Developers (Updated April 2020)

At the risk of offending some of my peers, I want to make an observation. As a group, we tend to be horrible at written communication. Software developers are some of the worst writers I have ever read. We make sloppy mistakes, both in spelling and in grammar. Whether you write technical articles for a living, blog posts for a hobby, or pull request comments, this article is an attempt to provide some simple guidance to improve your language and your writing.

Read more

Online Course - Ionic and React, Zero to App Store

A while ago I made a post I titled “Confessions of a Reluctant Ionic-React Fan”. That post led to an experiment where I began to recreate using Ionic-React a subset of one of my existing Ionic v4 apps written in Angular. That in turn led to my latest online video course, Ionic and React, Zero to App Store. This is my most ambitious course idea yet, which I explain in more detail below.

Read more

A Few Days with Twilio Flex

Have you ever needed to create an application for customer engagements? Imagine building a call center application from scratch that needs to support phone calls, web chat, and SMS messages, interactive voice response, speech recognition, and more. If the thought of doing all of that makes you cringe, you might want to consider Flex from Twilio.

Read more

Ionic-React, Upgrading to Ionic v5

Ionic v5 has been released, right in the middle of the conversion of one of my Ionic apps to Ionic-React. So in this post, I will describe what I had to do to upgrade this work-in-progress to the latest version.

Read more

Ionic-React, a Brief Introduction

The other day I made a post I titled “Confessions of a Reluctant Ionic-React Fan”. That post contained some snippets that got added to the default Ionic SideMenu template, but it neglected to provide any real functionality. In this post, I will attempt to recreate using Ionic-React a subset of one of my existing Ionic v4 apps written in Angular.

Read more

Confessions of a Reluctant Ionic-React Fan

What happens when a committed Angular developer crosses over and experiments with React, while working on an Ionic application? Would it work out well, or result in catastrophe? As it so happens, I did that exact thing over the 2019/20 New Year’s break. I was asked to come up with some sample questions to test someone’s knowledge of Ionic. “Angular or React?” I asked. “How about both?” was the reply. So I set out to create some Ionic questions, based on some real issues I had faced, creating both Angular and React examples. This meant learning at least some of Ionic-React. This post summarizes some of the things that I found pleasantly surprising.

Read more