Virtual Network Verification using SMT Solvers

Verifying proper connectivity within virtual networks (VNET's) is a critical step in ensuring compliance, security, and correct application behaviors. However, it can be challenging to properly assess "unknown" or unintentional network paths without resorting to methods such as brute-force port scanning (which can be expensive in terms of computation, time, as well as financially). In this post, we'll cover leveraging SMT solvers as one method to assess VNET configuration and ensure there are no unintended communication paths using a fraction of the time and resources.

Michael Yeaney May 14, 2021

Simple Network Connectivity Monitor

Last week, the local power company contacted me to say the following morning they would be shutting off power to my home for a few hours. This meant that my home router would be down, and therefore so would all network access to remote meetings / code / documents / etc. So in the spirit of a #30MintueDrill, I decided to see if I could somehow monitor when my network was back up from the outside without requiring inbound access. And of course, also have some fun doing it :-).

Michael Yeaney May 9, 2021

30 Minute Drills: What are they?

Often times I find myself (as many of us do) "paralyzed" by the myriad of ways in which to solve a particular problem. This is generally because I start thinking of all the ways a given approach could go wrong, and end up focusing on what won't work instead of the MVP-style approach of what will work. In this post, I want to share a method I've been using to help break through these blockers and help myself get to a "version 1" deliverable.

Michael Yeaney May 9 2021

Lightweight Coordination on Azure App Service

In this post I want to share an approach used to ensure serial execution of business logic across multiple instances of Azure App Service - even when the logic isn’t suited to this type of environment. However, what makes this solution unique is that it doesn’t rely on any external services to provide this functionality, even between multiple instances of of the application.

Michael Yeaney January 11, 2019

Query Azure VM Tags from Log Analytics

A common issue I encounter when working with customers is how to best expose Azure Resource Manager tag values in Log Analytics queries. While this feature isn’t available natively in Log Analytics at the moment, we can leverage Azure serverless offerings (including Logic Apps and Functions) to pull this data into your Log Analytics workspaces. This data can then be used to create tag-driven alerts or augment queries with tag information that may have been previously unavailable.

Michael Yeaney June 5, 2018

Message Lifetimes and Faulty Clocks

Sending messages between two computers is a common task, especially in the context of modern cloud applications and Internet-of-Things (IoT) deployments. One common requirement that arises is to not process messages that are older than some established threshold. However, this seemingly simple requirement relies on a level of time synchronization that can be more difficult to achieve than it seems.

Michael Yeaney August 14, 2017

Cache Consistency: Avoiding Common Issues

Leveraging a cache is an effective way to increase the performance of many applications, and can dramatically reduce the load on backend components as we are no longer repeatedly fetching the same data over and over. Since a lack of caching is often considered a performance anti-pattern, many systems tend to add in caches only after they have exhibited latency and/or performance that is unacceptable - in other words, added caching is often an afterthought.

Michael Yeaney August 7, 2017

Interacting with Azure Queues from PowerShell

In this post, I want to show how you can communicate between 2 (or more) machines with Azure Storage Queues using PowerShell. This type of communication naturally gives way to the competing consumer pattern, which is found throughout many high-scale systems. This pattern is quite useful for spreading work items across a pool of available compute resources in order to optimize throughput and availability.

Michael Yeaney March 30, 2017

PowerShell Fun: Recursive Folder Size

While playing around with some PowerShell scripts today, I was looking for some fun (??) ways to get a view of how big a folder and all of its' contents are. This is arguably pretty trivial, but we're just having fun, right? :-)

Michael Yeaney March 29, 2017

Ramblings and thoughts on cloud, distributed systems, formal methods...maybe even some code, too!