Sign in

This post is for users of Google Alerts who feel frustrated by its inconsistency, its lack of social media penetration, or its limited integration options.

Photo by Mitchell Luo on Unsplash

This post was inspired by Plausible’s Why you should stop using Google Analytics.

This is Google Alerts:


My current customer has what we call “configuration sprawl”: many types of configuration supporting many different environments living in many different places. They have hundreds of environments supporting a suite of applications, each supported by a diverse collection of infrastructure and release tools. The configuration supporting these environments is being duplicated across components and stored in many different ways which means that updating something as simple as a server credential is extremely risky. Below is a high-level overview of the problem and how I’m tackling it.

The Problem

My initial goal was small: Automate smoketests. The customer was manually running…


Software development is tough, but software delivery is tougher. Development is just the tip of the iceberg; delivery involves coordination between people across testing, QA, UI/UX, product management, project management, database administration, architecture, business analysis, infrastructure, and of course — the end users of the software you’re building. Figuring out how to orchestrate software delivery across these roles in a manner that maximizes your team’s ROI is what DevOps is all about. Maximizing ROI means reducing costs while increasing value. This can be achieved through:

  • Simplifying the processes that bring your products to your users. …


GuardMyPad is a web application that allows you to turn the devices you already own into a home security solution. This means you can use any of the following to remotely monitor your space:

  • Your old Android Phone
  • Your spare laptop
  • Your old desktop computer
  • Your Chromebook
  • Soon: Your iOS devices

This is really exciting because it significantly reduces the cost of security setup. You can now secure and monitor your space as easily as you can watch Netflix — no installations, no phonecalls, no shipping hardware. …


WebRTC is exciting technology. It’s lowering the cost of communications by equipping browsers with peer-to-peer technology that supports voice and video transmission without the overhead of VoIP hardware and its integration costs.

I wanted to get my feet wet with WebRTC; I learn by building so I decided to apply the technology to the home security domain. The result: GuardMyPad.com.

GuardMyPad is a web application that allows you to repurpose the devices you already own into a free home security solution.

My mission was to offer a beautiful, easy-to-use, free core product that offers the following:

  • Cross-platform support
  • A dead-simple…

One of my apps uses Markdown for content editing, just like StackOverflow. Fortunately, the folks over at SO decided to open-source their code for that feature set. It’s broken into two parts:

  1. MarkdownSharp: Serverside markdown compiler
  2. Pagedown: Clientside markdown converter/preview generator

So, why do we need both of these?

Well, you could just stick with pagedown, store the markdown in your server, and serve the markdown back up to browsers for them to render every time they load some markdowned content. But there are a few problems with this:

  1. Search engines won’t see the content since they don’t run the…


In summary: Start with EF when you need to remain nimble. Move to Dapper when you’re ready to commit to your business logic and optimize performance.

Entity Framework vs Dapper. Which do you pick?

Entity Framework and other ORMs are convenient, but they come with a catch. Performance isn’t all that great if you’re comparing them to raw SQL due to the costs of abstraction.

Dapper might not be as accessible, but it’s a step away from stored procedures in terms of performance and a couple steps away from ORMs in terms of developer experience (you have to know a…


Busting cache in MVC is pretty easy stuff — just leverage .NET MVC bundling to detect changes and append a unique identifier to your bundles.

Things get trickier when users aren’t always refreshing though. Consider the following scenario:

  1. Frank visits FStop.fm and downloads the FStop v1.0 SPA from your site to his browser. He uses it nonstop without refreshing his browser because your app is awesome.
  2. You ship an update, FStop v1.1.
  3. Frank hasn’t refreshed his browser in a year because he’s been glued to FStop.
  4. Frank’s v1.0 client-side code makes a request to v1.1 API endpoints, which are delivering…

One of my colleagues fell in love with this photo gallery: Gamma Gallery

It uses the device width to determine which images to load to achieve a fluid, responsive, mobile-friendly image grid. Cool stuff. But it requires that seven different sizes be available for each image. For him, that meant manually resizing around 100 photos, or trying to find a tool that could do it. We couldn’t find anything so I created a script for it.

If you look at the plugin, it requires the following:

<ul class="gamma-gallery"> 
<li>
<div data-alt="img01"…


Release Management brings a lot to the table as far as DevOps go. Automating and controlling your releases is hairy business; this tool takes a swing at making it easy. While the original on-prem product is a bit rough around the edges, it’s good enough that we use it for my current customer — a school district serving almost a million students.

One feature of Release Management is Tokenization. This is an alternative to Web.config transforms and allows you to leverage Release Manager’s component paradigm to — in its most common use-case — define web.config …

Mick B

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store