Archive

Blog

January 07, 2026

Learning, Ownership, and When to Pick Up the Shovel

Learning, Ownership, and When to Pick Up the Shovel

Read more →
January 06, 2026

Consistency Is Underrated

Consistency Is Underrated

Read more →
January 04, 2026

When Validated Frameworks Stop Being True

When Validated Frameworks Stop Being True

Read more →
January 02, 2026

The Books That Shape How Systems Think

The Books That Shape How Systems Think

Read more →
January 01, 2026

Common Knowledge Is Why Employees Leave Before You Expect It

There’s a concept in economics and game theory called common knowledge.

Read more →
December 29, 2025

Hiring, Vendors, and the Cost of Cornering People

Hiring, Vendors, and the Cost of Cornering People

Read more →
December 28, 2025

Where the Magic Metaphor Breaks

Where the Magic Metaphor Breaks

Read more →
December 27, 2025

Negotiation Is Closer to Magic Than Chess

Negotiation Is Closer to Magic Than Chess

Read more →
December 26, 2025

Outcomes, Not Optics: Why Misalignment Breaks Teams

Outcomes, Not Optics: Why Misalignment Breaks Teams

Read more →
December 22, 2025

Defensive Professionalism: The Quiet Cousin of Defensive Medicine

Defensive Professionalism: The Quiet Cousin of Defensive Medicine

Read more →
December 20, 2025

We Measure Time Because It’s Convenient. Not Because It’s Correct.

Across almost every industry, we obsess over one thing more than anything else: time.

Read more →
December 19, 2025

Clarity Is Expensive. Confusion Is Catastrophic.

Clarity Is Expensive. Confusion Is Catastrophic.

Read more →
December 18, 2025

You Win Most Problems Before They Start

My mom was an attorney.

Read more →
December 15, 2025

When “Within Normal Limits” Is the Most Dangerous Result

When “Within Normal Limits” Is the Most Dangerous Result

Read more →
December 12, 2025

How Systems Drift: The Hidden Ways Organizations Lose Clarity

# How Systems Drift: The Hidden Ways Organizations Lose Clarity

Read more →
December 10, 2025

Urgency Without Panic: The Discipline of Moving Fast Without Falling Apart

Urgency Without Panic: The Discipline of Moving Fast Without Falling Apart

Read more →
December 10, 2025

You Don’t Need Expertise Today — You Need Documentation Today

You Don’t Need Expertise Today — You Need Documentation Today Why most people lose construction, legal, and medical battles before they ever start

Read more →
December 10, 2025

On Pattern, Practice, and the Books That Built My Mind

On Pattern, Practice, and the Books That Built My Mind

Read more →
December 08, 2025

The Calm Leader: How Perception, Preparation, and Clarity Change Everything

There’s a moment in your career when you realize the real crisis isn’t the broken system, the failed deployment, or the impossible deadline. It’s you — or more accurat...

Read more →
December 08, 2025

The Leadership Trap of Perfection: What Tom West Taught Me

Most people misunderstand perfection.

Read more →
December 07, 2025

Failure as a Clue: What Postmortems Get Wrong

Failure as a Clue: What Postmortems Get Wrong

Read more →
December 05, 2025

I Didn’t Plan to Become an Expert in Concrete Forensics — But Then a Client’s $100K Project Failed in Front of Me

At Echelon Foundry, we’re used to being pulled into unusual problems.

Read more →
December 04, 2025

The Cost of Keeping Something: A Real-World Lesson in Incentives, Technology, and Human Behavior

When you spend enough time doing diagnostics — the technical kind or the human kind — you eventually notice something: most conflicts don’t resolve because one side “w...

Read more →
December 03, 2025

A Rejection, a Misconception, and What It Actually Means

Early in my career, I encountered one of the more formative professional experiences I have had, though not in the way I expected. The company I was working for at the...

Read more →
July 15, 2025

Bad Assumptions

Over the past few days, I’ve seen a number of posts questioning how employees handle adversity, often framed as tests of character. One story criticized a new hire who...

Read more →
June 05, 2025

The $45 Tool That Saved My $35K Bathroom—And What It Taught Me About Building Software

I recently spent over $35,000 having a bathroom professionally built. New tile, new layout, high-end finishes—the works. I trusted the process and assumed the price ta...

Read more →
May 28, 2025

The One Who Showed Up

We were shopping for higher-end lighting—ceiling fans, fixtures, and accent pieces that would complement the design of our home while solving some practical issues. Th...

Read more →
May 20, 2025

The Coffee Queue: How Developers Solve Real Problems

At a company I once worked for, we had a very specific rule: only one carafe of coffee in the office at a time.

Read more →
May 07, 2025

Observing

Years ago, I was fortunate enough to take a class on experimental design. Paraphrasing the professor: “The great thing about animals is they don’t talk—whatever they s...

Read more →
May 07, 2025

The Coffee Queue: How Developers Solve Real Problems

At a company I once worked for, we had a very specific rule: only one carafe of coffee in the office at a time.

Read more →
April 30, 2025

A Lesson in Blind Trust

Years ago, I worked for a company with several sister organizations that sold products to both consumers and businesses. One of these organizations operated much like ...

Read more →
April 16, 2025

Not Afraid of AI

Everyone talks about how AI is going to replace jobs, put people out of work, and do the thinking for the rest of us. Like every other machine, it’s really good at int...

Read more →
April 08, 2025

Great Ideas

One conversation that’s always stuck with me was about the role of ideas in the creative process. I was speaking with someone who owned a software company specializing...

Read more →
March 25, 2025

Start Feeling the Vibe

In 1947, an engineer named Percy Spencer made an accidental but groundbreaking discovery—one that would lead to a revolutionary invention. What he stumbled upon became...

Read more →
March 22, 2025

Reduce over functions or Data, Data Everywhere

Walking through the concept of functions as data and applying it can lead to applying and manipluating different code. Assuming that code is a series of steps, then co...

Read more →
March 22, 2025

Intuitive, what is it?

We often make the same mistake repeatedly. We look at a problem or an existing product and think, “This can be better.” We say, “We’re going to create something new be...

Read more →
March 15, 2025

AI and our Obsession with Authenticity

Years ago, a family friend of ours was a talented picture framer, highly regarded both for his artistic sensibility and technical precision. One day, he unexpectedly d...

Read more →
March 07, 2025

Finding the right person

When I ran the intern program at a previous company, we gave applicants a small coding test—not to weed people out but to ensure they had a basic ability to reason thr...

Read more →
February 19, 2025

Never Start

layout: post title: “Why Small Steps Beat Big Goals Every Time” date: 2025-02-19 —

Read more →
February 09, 2025

The Meeting That Wasn't a Discussion

Most people walk into a meeting thinking it is a discussion. But sometimes… it is actually a negotiation.

Read more →
February 08, 2025

The Deadline That Nearly Broke Me

Early in my career, I almost burned myself out over a deadline that was impossible from day one.

Read more →
January 15, 2025

What is AI good for?

I recently participated in a discussion that centered around the question, “What is AI good for?” The general sentiment seemed to be one of indifference—most people we...

Read more →
January 15, 2025

Stop Measuring the Gap. Measure the Next Step.

When people start something new—learning a skill, changing careers, getting in shape, trying a new craft—they almost always make the same mistake:

Read more →
December 24, 2021

Looking back at C#

Happy Holidays! This is my post for the C# advent calendar!

Read more →
December 23, 2021

Looking back at C#

Happy Holidays! This is my post for the C# advent calendar!

Read more →
December 23, 2021

I thought (var) Gozer was a man. It's whatever it wants to be.

Tom Hacohen wrote a great post about his view of types and their place in development. At the end, he asked for different views, and so I thought I would oblige and pa...

Read more →
December 01, 2021

What is says not how it looks

Control Shift V to paste without formatting.

Read more →
December 01, 2021

Language Comparison Euler Problem Two

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

Read more →
December 01, 2021

Dynamic Testing Is Better Than No Testing At All

https://github.com/PombeirP/T4Factories/blob/master/T4Factories.Testbed/CodeTemplates/VisualStudioAutomationHelper.ttinclude

Read more →
December 01, 2021

It's Time For All You SQL Objects to get in Your Proper Execution Order

One of the biggest difficulties with moving database objects from one environment to another is getting the execution order correct. It’s possible to script all the o...

Read more →
December 26, 2017

Always Answer the Phone, Respond to the Email, and Go to the Interview

Several years ago I worked with someone who really felt he was happy at his job. Was he? I don’t know. He never mentioned not liking where we worked, but at the same t...

Read more →
November 19, 2017

Are you Null?

Within the last couple of days Microsoft released a proposed update for the next major release of C# version 8.  Over the past several years, there has been a large de...

Read more →
November 05, 2017

Functional Languages in the Workplace

On a semi regular basis, people question why I choose to use F# to implement projects. They question why use a lesser known language when one like C# has a larger deve...

Read more →
September 29, 2017

Regular Expressions Presentation

I have uploaded my notes from my presentation on Regular Expressions.  Currently, I am flushing out my presentation notes into a more readable format in the readme fil...

Read more →
July 10, 2017

A Stroll Around C# 7 Remote Viewing

If you would like to attend my talk on C# 7, and you can’t attend or don’t happen to live in Indianapolis, you can watch remotely at 11:30 EDT Thursday July 20th.

Read more →
July 02, 2017

Practice

When was the last time you sat down and talked to your team about problems?  What was the last task or procedure you changed because it was a bad fit for the project? ...

Read more →
June 23, 2017

A Stroll Around C# 7

If you want to take a peek at the new C# 7, come stop by the TCC Lunch and Learn on July 20th!  We’ll try and have a remote option too if you can’t make it in person t...

Read more →
June 05, 2017

Quirks with Pattern Matching in C# 7

With C# 7, Microsoft added the concept of pattern matching by enhancing the switch statement. Compared to functional languages (both pure and impure), this seems to b...

Read more →
March 02, 2017

Happy Birthday Visual Studio!

I’m hosting a Visual Studio launch party on March 21st.  If you are in the Indianapolis area and want to come check out what’s new, you should stop by and have pizza a...

Read more →
March 01, 2017

Indy.Code()

I have been fortunate enough to be allowed to speak at Indy.Code() which really means I’m grateful to get the chance to listen to all the other speakers. If you live a...

Read more →
March 01, 2017

Indy.Code()

I have been fortunate enough to be allowed to speak at Indy.Code() which really means I’m grateful to get the chance to listen to all the other speakers. If you live a...

Read more →
September 07, 2016

C# 7 Overview

I’ll be talking about C# 7 on, Friday September 9th at 9 A.M. Come and listen, or if you can’t make it and are interested, view it remotely.

Read more →
September 06, 2016

C# 7 Additions - Pattern Matching

C# 7 has started to introduce Pattern Matching. This is a concept found in functional programming, and although it isn’t fully implemented compared to F#, it is a ste...

Read more →
September 02, 2016

C# 7 Additions – Literals

A small, but nice chance in C# 7 is increased flexibility in literals. Previously, large numeric constants had no separator, and it was difficult to easily read a lar...

Read more →
September 01, 2016

C# 7 Additions – Throw Expressions

In previous versions, throwing exceptions had certain limitations where they could be used. Although not hampering, at times it caused additional work to validate and...

Read more →
August 31, 2016

C# 7 Additions – ref Variables

C# 7 expands the use of the ref keyword. Along with its previous use, it can now be used in return statements, and local variables can store a reference to the object ...

Read more →
August 30, 2016

C# 7 Additions – Out Variables

C# 7 removes the need for out variables to be predeclared before passing them into a function.

Read more →
August 29, 2016

C# 7 Additions – Deconstructors

C# has a new type of method, the Deconstructor. When a type implements this method type with the name of Deconstruct, multiple variables maybe directly assigned as a ...

Read more →
August 28, 2016

C# 7 Additions – Local Functions

In C# 7 it is now possible to create a function within a function termed a Local Function. This is for instances where a second function is helpful, but it’s not real...

Read more →
August 27, 2016

C# 7 Additions - Tuples

In C# 7 Microsoft has introduced an updated Tuple type. It has a streamlined syntax compared to it’s predecessor making it fall it look more like F#. Instead of declar...

Read more →
July 06, 2016

It's OK, My eval is Sandboxed (No It's Not)

The idea of using eval has always been in interesting debate. Instead of writing logic which accounts for possibly hundreds of different scenarios, creating a string w...

Read more →
March 21, 2016

Project Oxford - Image Text Detection

Microsoft has a new set of services which use machine learning to extrapolate data from images and speech called Project Oxford. Each service has a public facing REST...

Read more →
March 14, 2016

Minutes and Seconds

When dealing with dates in .NET, most applications use the System.DateTime struct to store and manipulate dates. It has a natural conversion from MSSQL Server’s DateT...

Read more →
March 07, 2016

Configuring Logic

This question talks about removing a switch statement so that every time the business logic changes concerning a multiplier value, the C# code itself doesn’t have to b...

Read more →
February 29, 2016

Pushing Data

Consider the following two pieces of code:

Read more →
February 22, 2016

Just write it here, I'll handle the rest

It’s pretty common knowledge in a .NET console application using the following command will produce the following result.

Read more →
February 09, 2016

Application Performance Monitoring in .NET

I’ll be talking on Application Performance Monitoring in .NET on the 16th at TCC. Come listen and get free pizza!

Read more →
October 19, 2015

Quick and Dirty Data Auditing

A lot of times a project, especially as it progresses, lacks proper requirements, time, or the resources, and tracking changes to data is often an afterthought. Rapid ...

Read more →
April 25, 2015

Compile Time Stored Procedures

(code for this project can be found here)

Read more →
March 30, 2015

I thought you were the new method?

In C#, the concept of a virtual method is not new. It’s a simple concept in which a child class may change the functionality of certain parent methods which have the ...

Read more →
January 12, 2015

It's O.K. It's Just Us Two Rows Joined: Vertical Partitioning Or When a 1x1 Table Relationship Makes Sense

From a theoretical sense, there would never be any reason to segregate data which has a one to one relationship. Multiple tables were meant to allow one datum to link...

Read more →
January 05, 2015

Reclaiming Stored Procedure Code

One of the largest problems people have with keeping stored procedures in source control is not a disagreement that they should be but the change to the process in whi...

Read more →
December 15, 2014

Did You Forget to Create a Nuget Package Again?

The biggest problem with managing Nuget packages for internal applications is creating and publishing the correct versions for others to consume. It’s not hard, but i...

Read more →
December 01, 2014

Are you finally going to do something about this?

There is often a lot of questions about the execution of finally statements in C#. It is a common assumption that finally blocks reliably execute, but even in the C# ...

Read more →
November 24, 2014

Wait Wait Don't Tell Me.....On Second Thought

Consider the following:

Read more →
November 09, 2014

Mockups - Now with moving pictures

Wireframing applications are great for creating quick visuals of what a screen or series of screens may look like. The quality of the picture compared to the time r...

Read more →
October 26, 2014

I'm out of Range? You're out of Range!

In IIS there are several different options allowing you to control the behavior of an application. With all of these settings Microsoft attempts to validate the enter...

Read more →
October 26, 2014

I'm out of Range? You're out of Range!

In IIS there are several different options allowing you to control the behavior of an application. With all of these settings Microsoft attempts to validate the enter...

Read more →
August 03, 2014

Under The Mattress (or Compiled Code) is Not a Good Place to Hide Passwords

The question comes up from time to time about storing passwords in code, and is it secure. Ultimately, it’s probably a bad idea to store passwords in code strictly fr...

Read more →
July 13, 2014

Can I at Least Get Your Name Before We do This?

As applications grow in size and age, they can become difficult to navigate and unruly to manage. Most organizations give little thought to spending extra time to mai...

Read more →
June 15, 2014

Environments, You All Look the Same to Me

Several years ago, I was working on moving data from the reporting server to the development environment so I could test structural changes. Thinking I was in the dev...

Read more →
June 11, 2014

The Shake and Bake Dashboard

A few weeks ago, someone asked me if it is possible to create a server dashboard (real time processor usage, available memory etc.) using web technologies. Quickly th...

Read more →
May 27, 2014

Return From The Void

In a recent project, we were tasked with making a service layer more manageable and efficient, and with a tight deadline each minute needed to count. My teammate and ...

Read more →
April 16, 2014

Adding New Web Applications

Using PowerShell to create new web applications with the IIS PowerShell Snap-In is incredibly easy. Just use New-WebApplication and specify Site : Site to put it...

Read more →
April 13, 2014

Cut the Header Off and the Body will Die (Well not really)

Recently, I had to work on an audit item concerning removing the “X-Powered-By” header from the IIS websites.

Read more →
April 06, 2014

JSIooa nvrtai Sncgtpi -> Sorting In JavaScript

JavaScript has built in functionality to sort arrays, but it doesn’t always work the way you think it would.

Read more →
April 02, 2014

Oh Snap! (Restore)

One of the most difficult aspects of the software development process is developing for and testing database updates. Unlike updating web sites, and executables which...

Read more →
March 29, 2014

Language Comparison Euler Problem One

Question:

Read more →
March 28, 2014

You Get an Update, and You Get an Update, and You Get an Update

What’s the difference between

Read more →
March 23, 2014

Please Spell For Me

One thing that always frustrated me about writing in technology (documents, resumes etc.) was the abnormal spelling of companies, technologies, and languages. Almost ...

Read more →
March 20, 2014

Where's The Scope

When I started programming, it was customary to declare the variables at the top of the method. Many people stated that it was clearer to declare everything at the be...

Read more →
March 20, 2014

Where's The Scope

When I started programming, it was customary to declare the variables at the top of the method. Many people stated that it was clearer to declare everything at the be...

Read more →
March 16, 2014

Find a Guid In a Haystack

A little while ago we had a problem when an unidentified Guid came up in an error email. Whoever wrote the original message, knew exactly where to look to find the as...

Read more →
March 12, 2014

Non Failing Scripts

One of the most frustrating parts of database development is double applying scripts. If you are working directly on the production server, this problem is alleviated...

Read more →
March 12, 2014

Non Failing Scripts

One of the most frustrating parts of database development is double applying scripts. If you are working directly on the production server, this problem is alleviated...

Read more →
March 10, 2014

The Book Of F#

Read more →
March 10, 2014

The Book Of F#

Read more →
March 09, 2014

Brackets

When writing a language where { ... } or BEGIN ... END are optional, I always put them in. Some people say this takes up space when not required, but I find it usef...

Read more →
January 15, 2014

Generating SQL

Generally, I don’t like writing code more than once if I can avoid it.  Most people apply the DRY principle to application code, but I also find it a good idea to foll...

Read more →