Blog

Posts on software development, careers, and craft.

Seven Reasons Clean Code Matters

Anyone who knows me well knows the one technical topic I’m unapologetically religious about is the importance of clean code. I recently wrote a guest post on th…

This is somewhat embarrassing, isn’t it?

It seems we can’t find what you’re looking for. Perhaps searching, or one of the links below, can help. Search Recent Posts AngularJS: The De Facto Standard for…

Programming Your Brain: The Art of Learning in Three Steps

From time to time, I run into people who are interested in breaking into programming. Last night at the company holiday party a guy (we’ll call him Sam) walked …

Writing in a Dynamic Language? Naming Matters More.

Sure, well-named variables and functions are important in all programming languages. But when is a name good enough? And when is it especially critical? I just …

Writing Code? Know Your Boundaries.

Today’s developers are cursed blessed with a massive list of libraries and technologies for solving problems. And some of the worst sins against code stem from …

JavaScript Configuration Object Pattern: JSON Saves the Day

So you’re building a modern web app? That means you’re likely running a variety of client-side libraries and custom business logic in JavaScript. And one of the…

KnockoutJS: Maintain Input Focus While Tabbing and Rebinding

Single page applications pose a unique and interesting set of problems. Libraries that offer two-way binding like KnockoutJS and AngularJS make it trivial to co…

Warn Users of Unsaved Changes with jQuery

In web apps it’s helpful to warn the user if they attempt to navigate away after making changes without hitting save. But the tricky part is, how do you track w…

Debugging JavaScript in Chrome with frames

When debugging JavaScript on a page with frames, it’s easy to find yourself running commands in the console in the wrong frame. I’ve hit this wall many times an…

JavaScript Breakpoints in Chrome

When doing front-end dev, I set breakpoints in Chrome all the time. Here’s the quickest way to set a JavaScript breakpoint in Chrome: F12 if dev tools aren’t al…

I’ll keep my 4 year old laptop, thanks.

I enjoy shopping around for computer equipment and like Joel Spolsky, I’m a big believer in using the best tools money can buy. And yet, I’ve held on to my trus…

Highlights from Codepalousa 2013

This was my first time attending CodepaLOUsa, and I was not disappointed. The always entertaining Carl Franklin got things rolling with a nostalgic keynote on h…

Serializing Knockout ViewModels to JSON: Quotes matter

The Knockout MVVM framework makes it dirt simple to serialize your ViewModels to JSON: ko.toJSON(viewModel); However, if you’re wondering why some observables a…

Nebraska Code Camp 2013 – Lessons Learned

Rethinking Enterprise – Ted Neward Ted started the day off with a bang. He has a knack for pulling in interesting tidbits from other disciplines and weaving the…

Are You a Resume’ Driven Developer?

I’ve had the pleasure of working with many exceptionally talented developers over the years. Yet I’ve noticed the downfall of a few of the brightest minds is a …

Strongly Typed .NET Session Pattern

When working in a strongly typed language like C#, I prefer to avoid being “stringly typed“. Thus I typically wrap .NET’s session object with a custom wrapper. …

Kill the Zombies in Your Code

With Halloween nearly upon us, it seems appropriate to discuss a widespread problem in software development: zombie code. Nearly every codebase I work with is l…

How RESTful is Your API?

It’s been over a decade since Roy Fielding wrote his seminal dissertation on Representation State Transfer (REST). Over this period we’ve seen SOAP/WSDL fall ou…

The Joy of Prototype Driven Development

I’m a big believer in PDD. Why? Because we clearly need another TLA in our lives. Okay, as a good developer seeing an unfamiliar acronym you likely just Googled…

Visual Studio Tip: Locate Current File in Solution Explorer on Demand

Visual Studio doesn’t offer an easy way to locate the current file you’re editing in the Solution Explorer on demand. You can set the solution explorer to alway…

Not Enough Time To Build It Sloppy

“Just write it quick and dirty. We can clean it up later.” When deadlines loom and clients are angry it’s hard to argue. Yet the hard truth is most technical de…