Build Goodwill with Your Software Client

It’s important for your software team to build goodwill when you’re facing tough conversations around scope, budget, or rotating team members. | Continue reading


@spin.atomicobject.com | 2 years ago

When Leaders Ride Shotgun: Managers and Mentors as Guides

Not all managers and mentors are shaped equally, but the role they play is significant. Their influence is critical to meaningful growth and development. | Continue reading


@spin.atomicobject.com | 2 years ago

Should I Stay or Should I Go? A Compass for Difficult Decisions

As you make decisions to stay or move on to new things, take some time to reflect on what you're moving toward or leaving behind. | Continue reading


@spin.atomicobject.com | 2 years ago

The Surprising Way AirPods Helped Me Adjust to Hearing Loss

I have high-frequency hearing loss that makes the world sound muffled. But, I've found that AirPods have been a helpful tool. | Continue reading


@spin.atomicobject.com | 2 years ago

Podcasts That Help Make Me a Better Software Consultant

I love podcasts. Here are some favorites that help me provide great consulting to our clients in the pre-project consulting phase. | Continue reading


@spin.atomicobject.com | 2 years ago

What Makes a Good Job? Feeling Invested in the Company’s Success

What makes a good job? For me, it means working for a company that you like enough that you feel invested in that company succeeding. | Continue reading


@spin.atomicobject.com | 2 years ago

Runtime Configuration for Spas

We recently had a need for runtime configuration in our web app’s frontend. In this post I’ll describe what that means and how we achieved it. | Continue reading


@spin.atomicobject.com | 2 years ago

Great Software Requires Both Managing Risk and Exploiting Opportunities

Great software development projects require building a skill at identifying and exploiting opportunities while also managing risks. | Continue reading


@spin.atomicobject.com | 2 years ago

Lessons Learned from Customer Usage

Getting your app into the hands of customers as soon as possible is highly recommended. Here are a few stories that illustrate the utility of user testing. | Continue reading


@spin.atomicobject.com | 2 years ago

How to Program Yourself to Program Better

Today I’d like to share with you how to program yourself. And, maybe you'll gain some empathy for the computer you're always bossing around. | Continue reading


@spin.atomicobject.com | 2 years ago

What Your More Experienced Programming Partner Learns from You

A lot of developers worry that they’re a drag on a more experienced programming partner. That couldn’t be farther from the truth. | Continue reading


@spin.atomicobject.com | 2 years ago

F# Pipelining vs. Composition

If you’re new to F#, you’ll see both the pipeline and composition operators. Decide which one to use by finding which approach leads to more readable code. | Continue reading


@spin.atomicobject.com | 2 years ago

Dart: The Features I Wish It Had

The Dart team has made incredible changes to Dart (the language and the platform) in recent years. I hope to see these Dart features added in the future. | Continue reading


@spin.atomicobject.com | 2 years ago

Rethinking Problem Solving: Starting with Feelings and Problems

Software is nothing but a specialized version of problem-solving. To do it well, we need to deal with our emotions and zoom in on the right problem. | Continue reading


@spin.atomicobject.com | 2 years ago

Why I Still Recommend Learning Elm

Elm has something for everyone to learn. Its principles are nearly universally applicable to other development environments. | Continue reading


@spin.atomicobject.com | 2 years ago

Why I Started Keeping a Career Reflection Journal

I hope that my career reflection journal will document my growth and help me provide relevant guidance and advice to others. | Continue reading


@spin.atomicobject.com | 2 years ago

The Case for the Dvorak Keyboard Layout

You should consider using the Dvorak keyboard layout if you want to increase your efficiency or improve typing-related finger pain | Continue reading


@spin.atomicobject.com | 2 years ago

Self-Hosting Your Own Cloud: Monthly Optical Data Backups

Monthly optical data backups in addition to hard drive backups create an extra level of insurance for me in the event of hardware failure. | Continue reading


@spin.atomicobject.com | 2 years ago

Code Quality Metrics Are Guides, Not Goals

Measuring your code quality with metrics can be a mistake. Instead, you can use the metrics as a guide — showing you potential opportunities to improve. | Continue reading


@spin.atomicobject.com | 3 years ago

Do You Need Redis? How to Get Away with Just PostgreSQL

It's a common architecture to have PostgreSQL and Redis serve as the backbone of your app, but PostgreSQL may be capable of everything you use Redis for. | Continue reading


@spin.atomicobject.com | 3 years ago

Visualizing Garbage Collector Algorithms

Developers take garbage collection for granted, but it's hard to see how it works. Watch 5 different GC algorithm visualizations. | Continue reading


@spin.atomicobject.com | 3 years ago

I Prefer Makefiles over Package.json Scripts

Does your package.json file have a large scripts section? If you have more than a handful of extremely simple npm scripts, try Makefiles. | Continue reading


@spin.atomicobject.com | 3 years ago

Software Development as Digital Construction: Tools of the Trade

Software development is not online wizardry. It's more like digital construction using many of the same tools you do every day. | Continue reading


@spin.atomicobject.com | 3 years ago

I Threw Out My To-Do List and Started Making Appointments with Myself

While a list can grow forever, my calendar has finite space. Creating a daily agenda helps me think critically about how much I can accomplish and spend my time on what really matters. | Continue reading


@spin.atomicobject.com | 3 years ago

A Simple Approach to Complicated Database Defaults

Database tables rarely stay the same over the course of a project. Here is a simple pattern for migrating data into non-nullable columns. | Continue reading


@spin.atomicobject.com | 3 years ago

Scripts to Clone Prod Data Locally

My latest shell scripts to clone a remote Postgres database (in AWS RDS) through an SSH tunnel and load it locally. | Continue reading


@spin.atomicobject.com | 3 years ago

Exploratory Testing a Long-Running Project? Switch It Up

When I'm testing a long project, I find my self following the same paths to get to the new features and functionality. Here are six ways I switch it up. | Continue reading


@spin.atomicobject.com | 3 years ago

Are You Sympathetic to Others’ Joy, or Just Their Sorrow?

Today’s difficulties cannot eclipse or erode the joy that remains. Small victories are the stuff of life, and they need celebrating. | Continue reading


@spin.atomicobject.com | 3 years ago

How to Run Plex via LinuxServer.io's Docker Image

How I play my movie collection with a system that runs Plex via the LinuxServer.io Plex image on a Docker host in my basement. | Continue reading


@spin.atomicobject.com | 3 years ago

How I Stayed Focused and Motivated While Working Solo

While working alone was less than ideal, I was able to make the best of it by leaning on others for collaboration and by consciously managing my time. | Continue reading


@spin.atomicobject.com | 3 years ago

Screen – My Favorite Multi-Purpose Tool for Pair Programming

Stop bouncing between Zoom, Discord, Miro, and VSCode Live Share. Screen lets you move smoothly among pair programming, diagramming, and screen sharing. | Continue reading


@spin.atomicobject.com | 3 years ago

How to Hold on to a Growth Mindset in the Face of Failure or Criticism

Life is full of things that can pull you into a fixed mindset. Here are four things I do to bring myself back into a healthy growth mindset again. | Continue reading


@spin.atomicobject.com | 3 years ago

Setting Up React Native Localization for Multi-Language Apps

React Native Localization is a great tool for handling multiple languages or locales in a React Native application. Here's how to set it up. | Continue reading


@spin.atomicobject.com | 3 years ago

How to Build Consensus When Your Team Can't Agree

What sets high-performing teams apart is how they approach disagreements. Use them as an opportunity to align, reflect, and commit to an outcome as a team. | Continue reading


@spin.atomicobject.com | 3 years ago

How to Use a List of Results from One Splunk Panel in Another

Setting and using tokens in Splunk is generally straightforward, but in some cases, we might want to use a list of results from one panel in another panel. | Continue reading


@spin.atomicobject.com | 3 years ago

How to Remove Gender Bias from Early UX Design Phases

What we say about users often includes things like their name, age, and gender. But these bring stereotypes that keep us from being inclusive. | Continue reading


@spin.atomicobject.com | 3 years ago

How to Remove Gender Bias from Early UX Design Phases

What we say about users often includes things like their name, age, and gender. But these bring stereotypes that keep us from being inclusive. | Continue reading


@spin.atomicobject.com | 3 years ago

Better Remote Pairing with Keycastr and Presentify

I’ve added a couple more tools to my belt when remote pairing — Presentify for screen scribbling and Keycastr for keystroke visualization. | Continue reading


@spin.atomicobject.com | 3 years ago

Creating Type-Safe Paths for Formik Forms with TypeScript

How to create a lightweight wrapper around Formik's useField hook to provide a more type-safe way to specify which field a user input is tied to. | Continue reading


@spin.atomicobject.com | 3 years ago

AWS Cloudwatch and PagerDuty Integration

How to integrate PagerDuty with AWS Cloudwatch. They're very powerful tools to use in unison with each other. | Continue reading


@spin.atomicobject.com | 3 years ago

Onomatopoeia and Code Readability

In some code patterns, the structure resembles its intent. This sort of code tends to be easier to scan and understand quickly. | Continue reading


@spin.atomicobject.com | 3 years ago

Stop Trying to Optimize Your New Developers

New developers can only learn so many things at once, and they need to tackle high-value skills first. Optimizing their workflow can — and should! — wait. | Continue reading


@spin.atomicobject.com | 3 years ago

Should I Ask for Help or for Keeping Working at It? – 3 Ways I Decide

It's possible to ask too many questions and rob yourself of the opportunity to learn through failure. Here's how I decide if I should ask for help or keep trying. | Continue reading


@spin.atomicobject.com | 3 years ago

Styling Modern Web Apps – CSS Frameworks vs. Component Libraries

Pre-built CSS frameworks and component libraries offer a great starting point for web app styling, but which one is right for your project? | Continue reading


@spin.atomicobject.com | 3 years ago

How to Rekindle That Small-Team Feeling

Short of actually breaking up the large team, what can you do to reinvigorate a team and reestablish some of the things you love about small teams? | Continue reading


@spin.atomicobject.com | 3 years ago

Refining Our Sales Process

We've been focusing on improving our sales process. At each stage, leads are now given a dollar value and confidence weighting. | Continue reading


@spin.atomicobject.com | 3 years ago

Developer/Designer Collaboration on Single-Page Web Apps

Single-page web apps are an ideal environment for designer/developer collaboration, which yields faster implementation of designs that represent the designer's intent. | Continue reading


@spin.atomicobject.com | 3 years ago

Use Reflection to Find Azure Function Methods

Part of a series on writing request tests for a C# Azure Functions API in xUnit, this post shows how to use reflection to locate the HTTP triggered methods. | Continue reading


@spin.atomicobject.com | 3 years ago