Blog
Learning, Ownership, and When to Pick Up the Shovel
Learning, Ownership, and When to Pick Up the Shovel
Read more →Consistency Is Underrated
Consistency Is Underrated
Read more →When Validated Frameworks Stop Being True
When Validated Frameworks Stop Being True
Read more →The Books That Shape How Systems Think
The Books That Shape How Systems Think
Read more →Common Knowledge Is Why Employees Leave Before You Expect It
There’s a concept in economics and game theory called common knowledge.
Read more →Hiring, Vendors, and the Cost of Cornering People
Hiring, Vendors, and the Cost of Cornering People
Read more →Where the Magic Metaphor Breaks
Where the Magic Metaphor Breaks
Read more →Negotiation Is Closer to Magic Than Chess
Negotiation Is Closer to Magic Than Chess
Read more →Outcomes, Not Optics: Why Misalignment Breaks Teams
Outcomes, Not Optics: Why Misalignment Breaks Teams
Read more →Defensive Professionalism: The Quiet Cousin of Defensive Medicine
Defensive Professionalism: The Quiet Cousin of Defensive Medicine
Read more →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 →Clarity Is Expensive. Confusion Is Catastrophic.
Clarity Is Expensive. Confusion Is Catastrophic.
Read more →You Win Most Problems Before They Start
My mom was an attorney.
Read more →When “Within Normal Limits” Is the Most Dangerous Result
When “Within Normal Limits” Is the Most Dangerous Result
Read more →How Systems Drift: The Hidden Ways Organizations Lose Clarity
# How Systems Drift: The Hidden Ways Organizations Lose Clarity
Read more →Urgency Without Panic: The Discipline of Moving Fast Without Falling Apart
Urgency Without Panic: The Discipline of Moving Fast Without Falling Apart
Read more →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 →On Pattern, Practice, and the Books That Built My Mind
On Pattern, Practice, and the Books That Built My Mind
Read more →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 →The Leadership Trap of Perfection: What Tom West Taught Me
Most people misunderstand perfection.
Read more →Failure as a Clue: What Postmortems Get Wrong
Failure as a Clue: What Postmortems Get Wrong
Read more →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →Never Start
layout: post title: “Why Small Steps Beat Big Goals Every Time” date: 2025-02-19 —
Read more →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 →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 →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 →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 →Looking back at C#
Happy Holidays! This is my post for the C# advent calendar!
Read more →Looking back at C#
Happy Holidays! This is my post for the C# advent calendar!
Read more →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 →What is says not how it looks
Control Shift V to paste without formatting.
Read more →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 →Dynamic Testing Is Better Than No Testing At All
https://github.com/PombeirP/T4Factories/blob/master/T4Factories.Testbed/CodeTemplates/VisualStudioAutomationHelper.ttinclude
Read more →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →C# 7 Additions – Out Variables
C# 7 removes the need for out variables to be predeclared before passing them into a function.
Read more →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 →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 →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 →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 →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 →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 →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 →Pushing Data
Consider the following two pieces of code:
Read more →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 →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 →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 →Compile Time Stored Procedures
(code for this project can be found here)
Read more →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 →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 →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 →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 →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 →Wait Wait Don't Tell Me.....On Second Thought
Consider the following:
Read more →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →Language Comparison Euler Problem One
Question:
Read more →You Get an Update, and You Get an Update, and You Get an Update
What’s the difference between
Read more →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 →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 →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 →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 →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 →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 →The Book Of F#
Read more →
The Book Of F#
Read more →
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 →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 →