Brandon Nicoll

Building a Microsoft Teams Integration with Elastic Watcher

Logging and monitoring: two of my favorite pastimes. Throughout my career, many tools to get the job done have come and gone. I could wax poetic and reminisce for hours about all the times I tried to keep a cool head while scanning logs for any hint as to why my software wasn’t working the way I expected. Today, I added one more tool to my toolkit and I’d like to share my experience. Read more →

ButterCMS: A Headless CMS on Google Cloud Platform

In October of 2016, I authored the C# library for ButterCMS, a “headless” CMS with a SaaS offering. Recently, the folks at Butter reached out to me again to write an article to highlight the benefits of running a headless CMS on Google Cloud Platform. The resulting article was posted as a Google Cloud Platform Partner Solution and can be found at the following link: https://cloud.google.com/solutions/partners/butter-headless-cms-on-gcp. Thanks to the folks at Butter for giving me the opportunity! Read more →

Building the Fonts.com Browse Filters Using Redis

Recently on fonts.com, we released a new way to browse and discover fonts. We wanted this tool to be easy to use and return results quickly. In order to accomplish the latter, I made heavy use of Redis data structures and built-in commands. You can find the finished product at fonts.com/browse. The book Redis in Action by Dr. Josiah Carlson helped out immensely while building this feature. Specifically, Chapter 7 - Search-Based Applications. Read more →

High Availability Web Server Caching with Redis

Over the past few weeks, I’ve had the privilege of re-architecting the fonts.com web server caching strategy. The design isn’t anything groundbreaking, but it was still fun to build and worth sharing. Architecture Diagram Figure 1.) My arrow game is on point Breakdown There are a few ideas at play here: The front-end web servers will attempt to serve data from their local read replica Sentinel instances will be running on each web server An additional failover replica is standing by in case the master goes down A stand-alone, tiebreaker Sentinel instance can achieve quorum with the web servers Local Reads Fonts. Read more →

Querying Release Progression from the Octopus Deploy API

I built a tool this week that required retrieving release progression information from the Octopus Deploy API. While this information is exposed through the API, as of this writing, the API documentation is lacking for this functionality, and the Octopus.Client library doesn’t provide an out-of-the-box way to query progressions. “Paste JSON as Classes” (aka Cheating) In order to get some objects to deserialize the Octopus JSON reponse into, first I queried my Octopus Server for a past release’s progression. Read more →