<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Brad Westness |Wisconsinite, .NET software engineer, Brewers baseball fan, he/him</title>
  <link href="https://brad.westness.cc/atom.xml" rel="self"/>
  <link href="https://brad.westness.cc"/>
  <updated>2026-04-07T10:33:52-05:00</updated>
  <id>https://brad.westness.cc/</id>
  <author>
    <name>Brad Westness</name>
    <email>brad@westness.cc</email>
  </author>
  
  <entry>
    <title>Testing Software at the Right Focal Length</title>
    <link href="https://brad.westness.cc/2026/04/02/testing-software-at-the-right-focal-length/"/>
    <updated>2026-04-02T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2026/04/02/testing-software-at-the-right-focal-length</id>
    <content type="html">When it comes to discussing what types of tests should be in place for a software project to ensure bugs are not shipped to production, communication often breaks down when weighing the alternatives of the different types of automated tests. Everyone agrees that tests are good and that we should have them, but nobody agrees on what exactly “unit test” means versus “integration test,” which tests should use mocked dependencies, and which should talk to real databases, external APIs, etc.

</content>
  </entry>
  
  <entry>
    <title>Build Software Like a Sitcom Writers Room</title>
    <link href="https://brad.westness.cc/2025/07/31/build-software-like-a-sitcom-writers-room/"/>
    <updated>2025-07-31T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2025/07/31/build-software-like-a-sitcom-writers-room</id>
    <content type="html">In 2007, the Writers Guild of America went on strike for 99 days, from November 5, 2007 to February 12th, 2008. The strike had the effect of interrupting the production of TV series midway through their seasons. The writers were on strike over their lack of residuals from DVD sales, but actors and crews (being represented by separate unions) were not. Many shows were required by contract to continue filming any already-scripted episodes, but without input from the striking writers.

</content>
  </entry>
  
  <entry>
    <title>The 100% Human Generated Content Quality Assurance Guarantee</title>
    <link href="https://brad.westness.cc/2024/04/19/genuine-human-content-guarantee/"/>
    <updated>2024-04-19T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2024/04/19/genuine-human-content-guarantee</id>
    <content type="html">In the closing credits of his 2007 movie RATATOUILLE, director Brad Bird included a little easter egg for animators - a “Quality Assurance Guarantee” badge in the credits which informs the viewer that “no motion capture or other performance shortcuts were used in the production of the film.”

</content>
  </entry>
  
  <entry>
    <title>Creating a Smart 'On Air' Light with Home Assistant - Part 2</title>
    <link href="https://brad.westness.cc/2024/04/16/on-air-light-with-home-assistant-part-2/"/>
    <updated>2024-04-16T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2024/04/16/on-air-light-with-home-assistant-part-2</id>
    <content type="html">In part 1, I covered setting up Home Assistant and HASS.Agent, so that I could trigger automations based on Zoom calls starting and ending on my PC. But for now, I just have the automation sending a notification to the Home Assistant app on my phone. In this part, I’ll cover actually connecting it to an IoT-connected smart bulb.

</content>
  </entry>
  
  <entry>
    <title>Creating a Smart 'On Air' Light with Home Assistant - Part 1</title>
    <link href="https://brad.westness.cc/2024/04/15/on-air-light-with-home-assistant-part-1/"/>
    <updated>2024-04-15T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2024/04/15/on-air-light-with-home-assistant-part-1</id>
    <content type="html">I’ve been working from home full time since March of 2020 (before that I was working from home two days a week for about a decade). Personally, I love not having to commute for half an hour just to sit at a computer somewhere else, along the flexibility being remote gives me to let the dog out, throw in a load of laundry over my lunch break, and pick up and drop off my kids from school.

</content>
  </entry>
  
  <entry>
    <title>Internal is your friend. Projects are interfaces. Oceans are battlefields.</title>
    <link href="https://brad.westness.cc/2024/04/09/projects-are-interfaces/"/>
    <updated>2024-04-09T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2024/04/09/projects-are-interfaces</id>
    <content type="html">In addition to the great info about limiting the “blast radius” of your code, there was a segment in Steve Smith’s recent appearance on the .NET Rocks podcast where he discussed a pattern I really like when it comes to structuring .NET code: heavily using the internal keyword.

</content>
  </entry>
  
  <entry>
    <title>Organizing Your Code to Minimize the 'Blast Radius'</title>
    <link href="https://brad.westness.cc/2024/04/07/organizing-your-code-to-minimize-the-blast-radius/"/>
    <updated>2024-04-07T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2024/04/07/organizing-your-code-to-minimize-the-blast-radius</id>
    <content type="html">I was recently listening to an episode of the .NET Rocks podcast with guest Steve “Ardalis” Smith and Steve articulated an issue I’ve tried to highlight in code reviews many times in the past in a very succinct way that I loved: you want to organize your code in such a way as to minimize the “blast radius” when you inevitably make a change.

</content>
  </entry>
  
  <entry>
    <title>Software Engineering Character Classes</title>
    <link href="https://brad.westness.cc/2024/02/05/software-engineering-classes/"/>
    <updated>2024-02-05T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2024/02/05/software-engineering-classes</id>
    <content type="html">Much like a role-playing game, software engineers come in a variety of types, or “builds.” In gaming, these are referred to as “character classes.” Which are you?

</content>
  </entry>
  
  <entry>
    <title>Dynamically Compiling Protobuf Schemas from Confluent Schema Registry</title>
    <link href="https://brad.westness.cc/2024/01/05/dynamically-compiling-protobuf/"/>
    <updated>2024-01-05T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2024/01/05/dynamically-compiling-protobuf</id>
    <content type="html">We’re using Kafka in the Confluent Cloud platform with Protobuf schemas a lot at work, and a recent need that came up was for a testing tool which would enable our QA engineers to produce messages to our topics at will, without needing to write a bunch of code first.

</content>
  </entry>
  
  <entry>
    <title>Assigning a Fixed IP Address to a NIC Team in Windows Server</title>
    <link href="https://brad.westness.cc/2023/12/06/nic-team-fixed-ip/"/>
    <updated>2023-12-06T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2023/12/06/nic-team-fixed-ip</id>
    <content type="html">Ever since setting up a Lack Rack Plex NAS a few years ago (which I have since upgraded to a “real” rack),
I’ve had trouble with the fixed IP address I assigned to the server in my Unifi network setup.

</content>
  </entry>
  
  <entry>
    <title>The Load-Bearing Spreadsheet</title>
    <link href="https://brad.westness.cc/2023/09/13/load-bearing-spreadsheet/"/>
    <updated>2023-09-13T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2023/09/13/load-bearing-spreadsheet</id>
    <content type="html">Daniel Holmes, a developer at Bluesky (my favorite of the emerging Twitter alternatives in the wake of the Musk-pocalypse) recently made a post referencing the idea of a “load-bearing bug”:

</content>
  </entry>
  
  <entry>
    <title>Of Daylight and Savings</title>
    <link href="https://brad.westness.cc/2023/07/17/of-daylight-and-savings/"/>
    <updated>2023-07-17T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2023/07/17/of-daylight-and-savings</id>
    <content type="html">The “right” way to persist and transmit dates and times seems like it should be a solved problem, yet ask any three software engineers how it should be done, and you’ll get three separate answers.

</content>
  </entry>
  
  <entry>
    <title>Generating PDFs with ASP.NET Core and WKHtmlToPDF</title>
    <link href="https://brad.westness.cc/2023/03/17/generating-pdfs-with-asp-net-core/"/>
    <updated>2023-03-17T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2023/03/17/generating-pdfs-with-asp-net-core</id>
    <content type="html">It’s the bane of every web developer’s existence (perhaps I’m projecting there?), but if you work on web applications long enough - eventually, you’re going to be asked to dynamically generate some PDFs.

</content>
  </entry>
  
  <entry>
    <title>Behold, the Perfect Nintendo Switch Controller</title>
    <link href="https://brad.westness.cc/2023/03/10/behold-the-perfect-switch-controller/"/>
    <updated>2023-03-10T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2023/03/10/behold-the-perfect-switch-controller</id>
    <content type="html">On this Mar10 Day, I’d like to take a moment to celebrate the conclusion of an epic quest that I’ve been on. Namely, to find the “perfect” Nintendo Switch controller.

</content>
  </entry>
  
  <entry>
    <title>Record Collection Equality in C#</title>
    <link href="https://brad.westness.cc/2022/04/12/record-collection-equality/"/>
    <updated>2022-04-12T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2022/04/12/record-collection-equality</id>
    <content type="html">I’ve seen this come up a few times at work, so I figured I’d dig in a bit and expound on how equality does and does not work with C# 9 record types and collections.

</content>
  </entry>
  
  <entry>
    <title>Yes, Dark Mode Reduces Eyestrain</title>
    <link href="https://brad.westness.cc/2022/02/11/dark-mode/"/>
    <updated>2022-02-11T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2022/02/11/dark-mode</id>
    <content type="html">Like so many other debates on the internet, we seem to be doomed to forever relitigate the question of whether “Dark Mode” color schemes are actually easier on the eyes than their “Light Mode” counterparts.

</content>
  </entry>
  
  <entry>
    <title>Hosting Wildcard Subdomains from Home for Free</title>
    <link href="https://brad.westness.cc/2021/01/11/wildcard-domain-hosting/"/>
    <updated>2021-01-11T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2021/01/11/wildcard-domain-hosting</id>
    <content type="html">Despite an overflowing number of options for hosting your own blog or website these days, I still feel like the best bang for your buck is GitHub Pages (if you’re a developer, that is). It’s free and does SSL and you can set it up to work with a custom domain name, something that’s a “premiere” option requiring paid service at most other blogging/website platforms.

</content>
  </entry>
  
  <entry>
    <title>Switching Your Home Network to UniFi</title>
    <link href="https://brad.westness.cc/2020/08/08/switching-to-unifi/"/>
    <updated>2020-08-08T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2020/08/08/switching-to-unifi</id>
    <content type="html">I recently switched over my home network to all UniFi based gear, and I’ve had several co-workers and friends ask about it, there’s a bit of a learning curve to figure out what exactly you actually need to get a network put together with UniFi, so I figured I’d write up my thoughts in the form of a blog post so I can refer folks to it in the future.

</content>
  </entry>
  
  <entry>
    <title>Paper Mario Party - Build Your Own Mario Party Style Board Game</title>
    <link href="https://brad.westness.cc/2020/05/26/paper-mario-party/"/>
    <updated>2020-05-26T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2020/05/26/paper-mario-party</id>
    <content type="html">I bought Super Mario Party for the Nintendo Switch for my kids as an Easter present (although, honestly, it was more of a “something to do during the Covid-19 safer-at-home order” present), and it’s been a big hit.

</content>
  </entry>
  
  <entry>
    <title>Running Entity Framework Queries from Embedded Resource SQL Files with EFQueryScript</title>
    <link href="https://brad.westness.cc/2020/05/04/efqueryscript/"/>
    <updated>2020-05-04T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2020/05/04/efqueryscript</id>
    <content type="html">Persistence, Neglected

</content>
  </entry>
  
  <entry>
    <title>Better Home/Away Smart Thermostat Detection via Wifi and IFTTT</title>
    <link href="https://brad.westness.cc/2020/02/24/smart-thermostat-home-away-with-ifttt/"/>
    <updated>2020-02-24T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2020/02/24/smart-thermostat-home-away-with-ifttt</id>
    <content type="html">In 2018 I put in a smart thermostat, a Honeywell T5+, specifically. The thermostat works with an app called Honeywell Home that supports geofencing to detect when one or more users are home or away based on their device’s location services data.

</content>
  </entry>
  
  <entry>
    <title>Building a LACK Rack Plex NAS From a Refurbished Rackmount Server, Part 2</title>
    <link href="https://brad.westness.cc/2020/02/03/lack-rack-plex-nas-part-2/"/>
    <updated>2020-02-03T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2020/02/03/lack-rack-plex-nas-part-2</id>
    <content type="html">In part 1 of this blog series, I talked about the reasoning behind my decision to build a Plex server out of a refurbished Dell PowerEdge R710 server. In this second part, I will cover the process of getting the OS and GPU installed.

</content>
  </entry>
  
  <entry>
    <title>Building a LACK Rack Plex NAS From a Refurbished Rackmount Server, Part 1</title>
    <link href="https://brad.westness.cc/2020/02/01/lack-rack-plex-nas-part-1/"/>
    <updated>2020-02-01T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2020/02/01/lack-rack-plex-nas-part-1</id>
    <content type="html">Last year, I invested in a Plex Premium lifetime subscription, and I really like it. Previously, I had been relying on my Roku player’s built-in Media Player app to play video files stored on a network share on my PC, which it was a pain to navigate.

</content>
  </entry>
  
  <entry>
    <title>Things I Wish I Had Known Before Painting My House</title>
    <link href="https://brad.westness.cc/2019/07/22/things-i-wish-i-had-known-before-painting-my-house/"/>
    <updated>2019-07-22T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2019/07/22/things-i-wish-i-had-known-before-painting-my-house</id>
    <content type="html">Over the course of the five years I lived in it, I painted every room
of my first house. I moved a couple years ago to a new place, but have
only just recently started painting again.

</content>
  </entry>
  
  <entry>
    <title>In Praise of Small Market Teams</title>
    <link href="https://brad.westness.cc/2019/02/05/in-praise-of-small-market-teams/"/>
    <updated>2019-02-05T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2019/02/05/in-praise-of-small-market-teams</id>
    <content type="html">One of my clearest memories of going to games there as a kid. The Brewers
were really not very good for most of my childhood, and games were sparsely attended. My 
folks would always get the cheapest tickets possible, so our ticketed seats were always in
basically the last row of the highest nosebleed section.

</content>
  </entry>
  
  <entry>
    <title>Syncing Your Music Library with Resilio</title>
    <link href="https://brad.westness.cc/2018/12/30/syncing-your-music-library-with-resilio/"/>
    <updated>2018-12-30T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2018/12/30/syncing-your-music-library-with-resilio</id>
    <content type="html">I’m a little bit of a luddite when it comes to my media library. I still
buy all my music on compact disc, and rip them into my MP3 library myself
using Exact Audio Copy.

</content>
  </entry>
  
  <entry>
    <title>Introducing Collate.NET - A Filtering Sorting and Paging Library</title>
    <link href="https://brad.westness.cc/2018/03/13/collate-dot-net/"/>
    <updated>2018-03-13T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2018/03/13/collate-dot-net</id>
    <content type="html">Here’s a new project I finally got put up on NuGet which is a more generalized
version of a set of extension methods that I helped write for a project at work (note:
this is all new code as the stuff for work was highly coupled to our code base).

</content>
  </entry>
  
  <entry>
    <title>The Gravity Well</title>
    <link href="https://brad.westness.cc/2018/03/12/the-gravity-well/"/>
    <updated>2018-03-12T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2018/03/12/the-gravity-well</id>
    <content type="html">Confession time. My whole adult life, I’ve had problems with binge drinking. For whatever reason,
I have the predisposition for it, and once I have one or two drinks, I can’t stop until I’ve had
ten and blacked out and ultimately passed out. It’s been this way pretty much since I turned 21.

</content>
  </entry>
  
  <entry>
    <title>Mixing and Matching .csproj Formats</title>
    <link href="https://brad.westness.cc/2017/11/08/mixing-and-matching-csproj-formats/"/>
    <updated>2017-11-08T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2017/11/08/mixing-and-matching-csproj-formats</id>
    <content type="html">The Visual Studio Build Tools 15.x installers do not include all the necessary dependencies to build a solution containing projects using both the classic “Full Framework” .csproj format and the new “VS 2017” .csproj format out of the box.

</content>
  </entry>
  
  <entry>
    <title>The Pit of Poor Performance - Part 2</title>
    <link href="https://brad.westness.cc/2017/11/07/the-pit-of-poor-performance-part-2/"/>
    <updated>2017-11-07T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2017/11/07/the-pit-of-poor-performance-part-2</id>
    <content type="html">In the first part of this post, I laid out the problem at hand and the code for some of the more high-level business logic. I left off by mentioning that the calls to the “repository” classes were hiding complexity which resulted in disastrously poor performance. In this post, I’ll dig into those methods and how I ultimately refactored them to increase the performance by over an order of magnitude.

</content>
  </entry>
  
  <entry>
    <title>The Pit of Poor Performance - Part 1</title>
    <link href="https://brad.westness.cc/2017/10/19/the-pit-of-poor-performance-part-1/"/>
    <updated>2017-10-19T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2017/10/19/the-pit-of-poor-performance-part-1</id>
    <content type="html">This is a story about some code I recently refactored at work, which resulted in a process that previously took double-digit numbers of hours down to about 20 minutes. I think it’s an interesting case because it was such a dramatic performance increase, and the root cause for the performance problem was something I think software developers run into a lot.

</content>
  </entry>
  
  <entry>
    <title>Nintendo Switch First Impressions, Part 4</title>
    <link href="https://brad.westness.cc/2017/03/22/nintendo-switch-first-impressions-part-4/"/>
    <updated>2017-03-22T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2017/03/22/nintendo-switch-first-impressions-part-4</id>
    <content type="html">In Part 1 of this series, I talked about my overall impressions of the Switch and its
place in the spectrum of “home console” versus “handheld” gaming system. Part 2 covered some more detail about the ingenious Joy Con controllers as well as the Pro Controller, and the different modes of play that the system supports. Part 3 covered the software end of things, including the system software, Snipperclips, and 1-2-Switch. This post will focus on The Legend of Zelda: Breath of the Wild.

</content>
  </entry>
  
  <entry>
    <title>Nintendo Switch First Impressions, Part 3</title>
    <link href="https://brad.westness.cc/2017/03/21/nintendo-switch-first-impressions-part-3/"/>
    <updated>2017-03-21T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2017/03/21/nintendo-switch-first-impressions-part-3</id>
    <content type="html">In Part 1 of this series, I talked about my overall impressions of the Switch and its
place in the spectrum of “home console” versus “handheld” gaming system. Part 2 covered some more detail about the ingenious Joy Con controllers as well as the Pro Controller, and the different modes of play that the system supports. In this
part I will focus on the software, both the main system software as well as some games. I will leave discussion of the flagship Zelda game for its own post.

</content>
  </entry>
  
  <entry>
    <title>Nintendo Switch First Impressions, Part 2</title>
    <link href="https://brad.westness.cc/2017/03/20/nintendo-switch-first-impressions-part-2/"/>
    <updated>2017-03-20T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2017/03/20/nintendo-switch-first-impressions-part-2</id>
    <content type="html">In Part 1 of this series, I talked about my overall impressions of the Switch and its
place in the spectrum of “home console” versus “handheld” gaming system. In this
part I will focus more on the hardware and different “modes” of play, including
the various ways the Joy Con can be used and the Pro Controller.

</content>
  </entry>
  
  <entry>
    <title>Nintendo Switch First Impressions, Part 1</title>
    <link href="https://brad.westness.cc/2017/03/19/nintendo-switch-first-impressions-part-1/"/>
    <updated>2017-03-19T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2017/03/19/nintendo-switch-first-impressions-part-1</id>
    <content type="html">For the past decade at least, I’ve been a “gamer” in so much as I always play the new
Zelda and Mario games when they are released, but that’s pretty much it. So the
release of a new AAA game in either of those franchises is a pretty seismic event
as far as I’m concerned.

</content>
  </entry>
  
  <entry>
    <title>Delete Your Facebook Account</title>
    <link href="https://brad.westness.cc/2016/11/12/delete-your-facebook-account/"/>
    <updated>2016-11-12T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2016/11/12/delete-your-facebook-account</id>
    <content type="html">In addition to being a huge time-sink, since allowing anyone to join
(versus only college students), Facebook has turned into an echo chamber
for right-wing misinformation. Misinformation isn’t really the right
word, it’s more like slander and libel, with often racist or misogynist
motivations.

</content>
  </entry>
  
  <entry>
    <title>Introducing Mod 5 - A Table Tennis Game</title>
    <link href="https://brad.westness.cc/2016/10/06/mod-5-ping-pong/"/>
    <updated>2016-10-06T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2016/10/06/mod-5-ping-pong</id>
    <content type="html">Mod 5 is a game for 3 or more people that can be played using standard
table tennis  equipment. It is a variant of
Cutthroat, but with different scoring.

</content>
  </entry>
  
  <entry>
    <title>Build-time Minification of Web Assets in ASP.NET</title>
    <link href="https://brad.westness.cc/2016/07/07/build-time-minificiation-asp-net/"/>
    <updated>2016-07-07T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2016/07/07/build-time-minificiation-asp-net</id>
    <content type="html">For a recent project, I wanted to do build-time minification of
the CSS and JavaScript files that are part of an ASP.NET web application,
so that I could deploy pre-minified files rather than doing the
work to minify files at AppStart or during page load.

</content>
  </entry>
  
  <entry>
    <title>Introducing Dossier.NET - A Transactional File Manipulation Library</title>
    <link href="https://brad.westness.cc/2016/06/25/dossier-dot-net/"/>
    <updated>2016-06-25T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2016/06/25/dossier-dot-net</id>
    <content type="html">Here’s a new project I just started over the weekend that I’m
pretty excited about: it’s called Dossier.NET and it’s a transactional
file management library for the .NET Framework.

</content>
  </entry>
  
  <entry>
    <title>Living in the Problem Domain</title>
    <link href="https://brad.westness.cc/2016/01/15/living-in-the-problem-domain/"/>
    <updated>2016-01-15T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2016/01/15/living-in-the-problem-domain</id>
    <content type="html">There’s a general guideline in software development that states you should always work at
the highest level of abstraction you can, so that as much of your time is spent as possible
“living in the problem domain.” I wanted 
to look at how this could be applied in life as well as software.

</content>
  </entry>
  
  <entry>
    <title>In Defense of The Phantom Menace</title>
    <link href="https://brad.westness.cc/2015/11/28/defense-phantom-menace/"/>
    <updated>2015-11-28T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2015/11/28/defense-phantom-menace</id>
    <content type="html">I’ve been working my way through the Star Wars films in a modified Machete Order to
prepare for the release of Episode VII next month. The true Machete Order dictates to
skip Episode I entirely, but my modified version retains the order but keeps all six films,
because I’m a completist. I also think Episode I gets an unfairly bad reputation and has
a lot of good to offer.

</content>
  </entry>
  
  <entry>
    <title>*The Muppets* TV Series Initial Reaction</title>
    <link href="https://brad.westness.cc/2015/09/23/the-muppets-tv-series-reaction/"/>
    <updated>2015-09-23T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2015/09/23/the-muppets-tv-series-reaction</id>
    <content type="html">Time for a new installment in my series of Muppets-related reviews and reactions! 
To sum up: I liked the 2011 The Muppets film,
and I loved the 2014 Muppets Most Wanted follow-up.
Yesterday saw the premiere episode of the new The Muppets TV series on ABC.

</content>
  </entry>
  
  <entry>
    <title>The Incredibles isn't Fascist or Objectivist or Whatever</title>
    <link href="https://brad.westness.cc/2015/05/29/the-incredibles-isnt-randian/"/>
    <updated>2015-05-29T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2015/05/29/the-incredibles-isnt-randian</id>
    <content type="html">Popular consensus seems to have settled on the idea that 
The Incredibles (along with most of Brad Bird’s other films) 
espouses 
Ayn Rand-ian politics, 
by depicting the protagonists 
as inherently special (and therefore “greater than” everyone else) 
and decrying 
“participation trophy” culture 
and “everyone is special” philosophising.

</content>
  </entry>
  
  <entry>
    <title>The Roodian Transformation - One Simple Trick for Comparing Addresses Programmatically</title>
    <link href="https://brad.westness.cc/2015/05/28/the-roodian-transformation/"/>
    <updated>2015-05-28T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2015/05/28/the-roodian-transformation</id>
    <content type="html">It’s easy to wind up with redundant address data when operating institutional systems: people register more than once with different e-mail addresses, they register for other users and don’t have all their information correct, they make a typo or use an abbreviation in their billing address but spell their home address out completely.

</content>
  </entry>
  
  <entry>
    <title>EPPlusEnumerable - Easily Create Multi-Worksheet Excel Spreadsheets from any .NET object collection</title>
    <link href="https://brad.westness.cc/2015/02/05/epplusenumerable/"/>
    <updated>2015-02-05T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2015/02/05/epplusenumerable</id>
    <content type="html">Let’s say you’re working on an ASP.NET web app and want to create a report of all users and orders. I created a little utility built on top of the excellent (and open source) EPPlus to make this as easy as possible.

</content>
  </entry>
  
  <entry>
    <title>Not Invented Here Mechanic</title>
    <link href="https://brad.westness.cc/2014/12/05/not-invented-here-mechanic/"/>
    <updated>2014-12-05T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2014/12/05/not-invented-here-mechanic</id>
    <content type="html">Here’s a little thought experiment: What if industries other than software development
suffered from ‘Not Invented Here’ as much as we do*?

</content>
  </entry>
  
  <entry>
    <title>Peach Driven Development</title>
    <link href="https://brad.westness.cc/2014/10/13/peach-driven-development/"/>
    <updated>2014-10-13T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2014/10/13/peach-driven-development</id>
    <content type="html">There’s a virtually infinite number of ways to structure projects when working in an IDE like Visual Studio. Lately I’ve been thinking a lot about how I structure my solutions, and I’d like to establish a convention that I can use when beginning a new project that helps do the following:

</content>
  </entry>
  
  <entry>
    <title>Client-side File Upload Size Validation in ASP.NET MVC</title>
    <link href="https://brad.westness.cc/2014/09/24/client-side-file-upload-validation/"/>
    <updated>2014-09-24T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2014/09/24/client-side-file-upload-validation</id>
    <content type="html">Here’s a little ASP.NET MVC validation attribute you might find useful: file size validation, complete with client-side validation using the HTML5 File API. We’re using bytes for the file size, just for simplicity’s sake.

</content>
  </entry>
  
  <entry>
    <title>Commute RPG Review - Volume One</title>
    <link href="https://brad.westness.cc/2014/09/03/commute-rpg-review-volume-one/"/>
    <updated>2014-09-03T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2014/09/03/commute-rpg-review-volume-one</id>
    <content type="html">Earlier this year, I purchased my first real smartphone, a Lumia 928. It’s a solid phone and takes great photos, and I really like the Windows Phone 8 operating system. It’s nice that by enrolling in the Preview for Developers program, I can get new versions of the OS as Microsoft releases them, rather than whenever Verizon feels like releasing them (which they have very little motivation to do for devices that are already sold).

</content>
  </entry>
  
  <entry>
    <title>Engineering versus Research and Development</title>
    <link href="https://brad.westness.cc/2014/06/25/engineering-versus-research-and-development/"/>
    <updated>2014-06-25T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2014/06/25/engineering-versus-research-and-development</id>
    <content type="html">While listening to an episode of the .NET Rocks podcast on my commute, as is my wont, something that guest Doc Norton said really resonated with me.

</content>
  </entry>
  
  <entry>
    <title>AngularJS and the Post Graceful Degradation Era</title>
    <link href="https://brad.westness.cc/2014/05/09/angularjs-and-the-post-graceful-degradation-era/"/>
    <updated>2014-05-09T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2014/05/09/angularjs-and-the-post-graceful-degradation-era</id>
    <content type="html">The term “graceful degradation” refers to the idea of fault tolerance, that a system continues to function in the event that one or more of its component parts fails. In web development, this concept is most commonly applied to the usage of JavaScript.

</content>
  </entry>
  
  <entry>
    <title>Muppets Most Wanted - Now We're Here and There's No Need Remembering When</title>
    <link href="https://brad.westness.cc/2014/03/22/muppets-most-wanted-now-we-re-here-and-there-s/"/>
    <updated>2014-03-22T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2014/03/22/muppets-most-wanted-now-we-re-here-and-there-s</id>
    <content type="html">Compare the poster for the newly released Muppets Most Wanted to the poster for 2011’s The Muppets and you may notice something telling: while similar in design, the former features Muppets front and center with the human characters in the rear, and the latter is the opposite. This is just one indicator that the focus of the movie is back where it should be in any Muppet vehicle: on the Muppets themselves.

</content>
  </entry>
  
  <entry>
    <title>The Gift of Honesty</title>
    <link href="https://brad.westness.cc/2014/01/05/the-gift-of-honesty/"/>
    <updated>2014-01-05T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2014/01/05/the-gift-of-honesty</id>
    <content type="html">
  Does not Dionysius seem to have made it sufficiently clear that there can be nothing happy for the person over whom some fear always looms?

  -Cicero


</content>
  </entry>
  
  <entry>
    <title>Why I Program - Game Genie</title>
    <link href="https://brad.westness.cc/2013/03/19/why-i-program-game-genie/"/>
    <updated>2013-03-19T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2013/03/19/why-i-program-game-genie</id>
    <content type="html">You can ask anyone who knew me when I was little, I was very obsessed with the NES. My childhood reaction to receiving one for Christmas is the sort of thing that your family likes to bring up to embarrass you in front of girls.

</content>
  </entry>
  
  <entry>
    <title>Please Learn to Do It Yourself</title>
    <link href="https://brad.westness.cc/2012/05/16/please-learn-to-do-it-yourself/"/>
    <updated>2012-05-16T00:00:00-05:00</updated>
    <id>https://brad.westness.cc/2012/05/16/please-learn-to-do-it-yourself</id>
    <content type="html">There’s been a recent spate of controversial articles online lately suggesting that everyone should learn to program (“Please Learn to Code”), or that no-one should learn to program (“Please Don’t Learn to Code”), or that everyone should learn to be a plumber, or a writer, or something (“Please Learn to Write”), or nobody should learn anything (“Please Don’t Become Anything, Especially Not A Programmer”), or what have you.

</content>
  </entry>
  
  <entry>
    <title>'The Muppets' - The Greatest Work of Fan Fiction Ever Made</title>
    <link href="https://brad.westness.cc/2011/11/30/the-muppets-the-greatest-work-of-fan-fiction/"/>
    <updated>2011-11-30T00:00:00-06:00</updated>
    <id>https://brad.westness.cc/2011/11/30/the-muppets-the-greatest-work-of-fan-fiction</id>
    <content type="html">I was excited, but also trepidatious, when I heard they were making a new Muppet movie. I love the first two movies, The Muppet Movie and The Great Muppet Caper – the former has been my answer to “What’s your favorite movie?” for a couple decades now, and the latter has the distinction of being perhaps the most worn-out VHS tape in my parents’ basement. Additionally, the Muppet Christmas Carol is still my favorite (and, if you ask me, the most true to the novel) version of A Christmas Carol, and I own all the (released) DVDs of The Muppet Show.

</content>
  </entry>
  
</feed>
