-
GitHub AT-AT v1.0.23: Crafting VM-Based GitOps with Packer — No Redstone Required!
I’m excited to share how GitHub AT-AT v1.0.23 is branching into Virtual Machine–based GitOps. Previously, the GitHub AT-AT was geared toward Azure Functions microservices, but this latest extension demonstrates a fresh approach by integrating Packer and Azure Shared Compute Gallery. I wanted to tackle an operational model that, while perhaps mor... Read More
-
Why Day 2 Ops Must Be Front and Center to Succeed with Infrastructure-as-Code
Infrastructure-as-code promises a new way of bringing consistency and repeatability to cloud environments. Yet, it’s easy to get caught up in designing and implementing these infrastructures purely as if they are software artifacts divorced from operational realities. This separation can leave developers unprepared for the complexities of managi... Read More
-
3 Essential Tips for Success in Virtual Machine Image Development with HashiCorp Packer
Packer is an incredibly powerful tool for automating the creation of machine images, but it serves two distinct purposes. On one side, it is a production tool, responsible for generating final, immutable artifacts that will be deployed to run real workloads. On the other side, it is a development tool, used to iterate, refine, and troubleshoot t... Read More
-
Secure and Scalable: Running Packer in GitHub Actions with Federated Identity Authentication
Historically, I’ve used an Entra ID Service Principal and Client Secret to authenticate Packer builds in my automation workflows, whether in Azure DevOps or GitHub Actions. While functional, this approach had significant downsides: it required embedding a secret in the pipeline environment, leading to ongoing maintenance to renew the secret and ... Read More
-
Fixing Minecraft Bedrock Server Automation with Packer: Adapting to Mojang’s URL Changes
Automating Minecraft Bedrock server deployment with Packer has been a fun and useful project for me, but like all automation scripts, it requires occasional maintenance. Recently, I discovered that my existing automation script for setting up Minecraft Bedrock servers on Azure (or any cloud, really) had stopped working. The culprit? Mojang chang... Read More
-
GitHub AT-AT v1.0.22 adds Static Web Site Publishing on Azure with Jekyll
The GitHub AT-AT project has reached another milestone with the release of version 1.0.22, which includes a new template for provisioning a Jekyll-based static web site. This addition demonstrates how the Terraform module library can support two dramatically different architectures under one umbrella: a static site and an Active-Active Multi-Reg... Read More
-
Nets Are Overrated: Spearfishing Your Way to Serverless Microservices on Azure
In today’s cloud-native landscape, many organizations are turning to microservices architectures to build agile, scalable, and maintainable software systems. This article explores how to implement serverless microservices using Azure Functions, Event Grid, Azure Storage, and Cosmos DB. One of the biggest takeaways is that there is no one-size-fi... Read More
-
Azure Event Grid Trigger Functions’ Two-Step Tango: Why One ‘Terraform Apply’ Isn’t Enough
Infrastructure as code (IaC) promises a clean, repeatable, and reliable way to provision cloud resources without having to rely on the state or availability of the actual application code. However, as developers dive into serverless solutions on Azure, there’s a hidden wrinkle that can undermine this idempotent ideal — particularly when using Az... Read More
-
GitHub AT-AT v1.0.19 Release Notes: Target Event-Driven Microservices toil — fire at will! For the glory of the Automation Empire!
Executive Summary This version of the GitHub AT-AT (Automate the Automation with Terraform) module introduce Azure cloud native EventGrid-based messaging empowers teams to rapidly build true event-driven microservices using Microsoft Azure serverless infrastructure with minimal toil. Enhanced Event-Driven Capabilities: Seamlessly provision ... Read More
-
From Pandemonium to PubSub: Taming .NET 8 Azure Functions and Event Grid with Terraform
Welcome to this deep dive on creating a Custom Event Grid Topic and Subscription for an Azure Function running on .NET 8.0 in the isolated worker model. In this walkthrough, I chronicle my journey of setting up the infrastructure with Terraform while simultaneously writing the application code for two Azure Functions: an HTTP trigger (InternalPu... Read More
-
Mastering Last Mile Configuration Automation — Part 3: Terraform Takes Over
In the final part of our series on mastering last mile configuration automation, we focus on how Terraform provisions the environment and ensures everything is in place for Blobfuse to function. By leveraging Terraform’s ability to dynamically inject configuration values into a virtual machine (VM) via a custom script, we overcome the challenge ... Read More
-
Mastering Last Mile Configuration Automation — Part 2: Let’s Bake a Packer Image
In the first part of this series, we explored the solution blueprint for automating the setup of a Virtual Machine that has a Blobfuse mount backed by an Azure Blob Storage container. Now, we’ll move on to the next critical stage: creating a Packer templatethat lays the groundwork for Blobfuse to function seamlessly. This Packer template serves... Read More
-
Mastering Last Mile Configuration Automation — Part 1: Understanding the Architecture
Blobfuse, Azure’s solution for mounting Blob Storage as a filesystem, is a powerful tool for streamlining cloud storage operations. But setting up Blobfuse in an automated and reusable way requires careful planning and orchestration between Packer and Terraform. In this first article of our three-part series, we’ll explore the high-level archite... Read More
-
2024 Year in Review: Terraforming My Way Through Microsoft, HashiCorp, YouTube, and Beyond
What an incredible year. I’ve learned so much and made so many new friends. I’d like to recap what my 2024 looked like as I contemplate what’s next for 2025. My Role at Microsoft 2024 marked my second year at Microsoft, working on the Azure engineering team. I can’t express how blessed I feel working at such a wonderful organization and compan... Read More
-
Slash the Hassle: Making Terraform Test Pathing Seamless Across Operating Systems
Terraform has become an essential tool for infrastructure-as-code practitioners, enabling efficient and repeatable provisioning of cloud resources. Recently, the terraform test command has added a new dimension to this, allowing developers to validate their modules with confidence. However, as with any new feature, some rough edges emerge, and o... Read More
-
Ruby 3.4.0 vs. My Jekyll Workflow: How Ignored Warnings Came Back to Bite Me
Automation is supposed to make life easier — until it doesn’t. Two weeks ago, my GitHub Actions workflow for building and publishing updates to my personal blogs was working great. Today it decided to break. It wasn’t my code, my configuration, or even my hosting. The culprit? Ruby 3.4.0. My clean and simple Jekyll setup, built on the Jekyll tem... Read More
-
Writing Good Terraform Tests
I have been exploring the relatively new world of native Terraform testing that arrived in Terraform 1.7. The approach is built around a fresh command, terraform test, which follows a workflow similar to our beloved terraform plan, terraform apply, and terraform destroy commands. Like those core commands, terraform test also requires you to run ... Read More
-
Terraforming Beyond Infrastructure: GitHub AT-AT v1.0.10 and Application Lifecycle Management
Version 1.0.10 of the GitHub AT-AT project marks a significant evolution in the initiative to provide seamless infrastructure and application deployment solutions. In this release, we introduced a new sub-module, azure-fn-app, that builds upon the foundation established in the previous version with azure-fn-core. While azure-fn-core focused on ... Read More
-
GitHub AT-AT Now Supports Active-Active Azure Functions Scenario
I have developed a new module in the GitHub AT-AT designed to provision a multi-region active-active Azure Functions core environment. This new module significantly expands on the original GitHub AT-AT capabilities by adding a scenario that focuses on automating a hosting environment for an active-active Azure Functions solution. Just like the e... Read More
-
The Four Pillars of Enterprise IT Management
In an era where organizations continually expand and evolve their digital footprints, the challenge of managing complex enterprise environments demands a structured, comprehensive, and nuanced approach. The rapidly shifting technology landscape, fueled by the allure of cloud computing, managed services, and on-demand resource provisioning, often... Read More
-
Rethinking the GitHub AT-AT Design: Balancing Simplicity and Extensibility for the Future
As I reflect on the design and functionality of the GitHub AT-AT, particularly the atat-application-environment module, I find myself at a crossroads. The module was originally created to fill a specific gap in the GitHub AT-AT setup, adding a layer between the GitHub root module and the core hosted components: the branch structure, source code ... Read More
-
Effortless Azure Terraforming with GitHub AT-AT v1.0.7: A Step-by-Step Setup Guide
In this quick and concise walkthrough, we’ll guide you through setting up GitHub AT-AT v1.0.7, from configuring your backends to deploying your first application environment on Azure. By the end, you’ll have a fully functional setup with dual backends for both Non-PROD and PROD environments, seamlessly integrated with GitHub repositories and Ter... Read More
-
Unleashing the Power of GitFlow: GitHub AT-AT v1.0.7 Refines Terraform Automation
The GitHub AT-AT project has undergone significant enhancements, especially in its support for GitFlow. This iteration is a substantial update from the previous version, providing better modularity and flexibility in how environments are managed. The new design splits the Terraform state backend setup to accommodate multiple environments — makin... Read More
-
Unlocking the Power of Terraform: How the GitHub AT-AT is Evolving to Simplify Multi-Environment Automation
The evolution of the GitHub AT-AT model has been an exciting journey — one that began with the goal of automating infrastructure provisioning across multiple platforms and has now expanded to accommodate more complex, flexible scenarios. Originally, the GitHub AT-AT was designed as a simple, one-shot deployment to get users up and running with T... Read More
-
Leadership Lessons from The Walking Dead: Why Cross-Training Is Always the Right Move
SPOILER WARNING: IF YOU HAVEN’T SEEN SEASON 6 OF THE WALKING DEAD, PLEASE STOP NOW YOU’VE BEEN WARNED One of my favorite shows is AMC’s “The Walking Dead.” It’s impressive how long it managed to stay consistently good — really good — across multiple seasons. Few series maintain such a high level of writing, production, and acting quality over t... Read More
-
Unit Tests and Code Coverage in GitHub Actions: A Developer’s Guide to Streamlining .NET Workflows
After successfully setting up unit tests and code coverage in Azure DevOps, I decided to replicate the process in GitHub Actions. This comparison would allow me to explore the differences between the two environments. Unlike Azure DevOps, GitHub Actions doesn’t have built-in, sleek graphical interfaces for reviewing outcomes, but it offers flexi... Read More
-
Exploring the Potential of Cosmos DB Serverless
Cosmos DB has always been one of my favorite tools in the Azure ecosystem. Its unique combination of global distribution, multi-model support, and industry-leading SLAs makes it a standout for building modern applications. When I discovered that Cosmos DB now offers a serverless mode, I was excited to give it a try. The promise of a truly pay-pe... Read More
-
From Code to Cloud: Automating NuGet Package Publishing with GitHub Actions
As a developer, there’s a particular sense of satisfaction in seeing your work come to life in a tangible way, and that’s exactly what happened when I authored a .NET SDK for BlueSky, the decentralized social media platform. Aptly named BlueSky.NET, this library bridges the gap between .NET developers and the BlueSky API. If you’re on BlueSky, y... Read More
-
Breaking the Cycle of Fragility: Setting Up Unit Tests and Code Coverage in Azure DevOps…Yet Again
Unit tests and code coverage reports are essential components of a robust CI/CD pipeline. Azure DevOps (AzDO) provides an intuitive interface for visualizing test results and code coverage for every pipeline execution. This not only enhances build validation pipelines but also empowers code reviewers with crucial data points, boosting their conf... Read More
-
One-Shot: Azure Static Websites with Custom Domains Using Terraform
Custom domains add professionalism and credibility to static websites, especially when hosted on Azure Storage Accounts. However, achieving this configuration with Terraform in a single terraform apply is currently not possible due to co-dependencies between DNS configuration and Azure’s domain verification process. This article walks you throug... Read More
-
Installing WSL 2 on Windows 11
The Windows Subsystem for Linux (WSL) is a powerful tool that allows developers to run a Linux environment directly on Windows without the need for a virtual machine. With WSL 2, you can enjoy a full Linux kernel, enhanced performance, and compatibility with a wide range of Linux applications. Here’s how you can set up WSL 2 on Windows 11. Insta... Read More
-
Medium Rare: The Case for Reviving an API That’s Still Half-Baked
Medium is a platform built for creators. It provides an elegant space to share ideas, tell stories, and build communities. But the decision to deprecate its API — a core tool for integration and innovation — feels like a step back from its potential as a modern publishing platform. Here’s why Medium should reconsider, revive, and fully support i... Read More
-
Embracing Iteration: The Path to Better Software Design
In software development, no design choice is set in stone. What seems like the perfect solution today may reveal its flaws tomorrow as requirements evolve or new insights emerge. The key is not to fear iteration but to embrace it. As I told my mentee during a mentoring session: “Sometimes you make a design choice that seems right at the time, an... Read More
-
Synchronizing In-Memory Data with Persistent Storage: A Guide to Avoiding Desynchronization
In software development, one of the most critical responsibilities of a class managing persistent data is ensuring synchronization between its in-memory representation and the external storage mechanism (in this case the file system, but this could apply to any external persistent storage). It’s not enough to trust that everything will align its... Read More
-
Side Effects in Code: Why They Matter and How to Avoid Them
In software design, side effects are like hidden tripwires. They’re the unpredictable behaviors that occur when a method does more than its primary job, often relying on internal assumptions or changing external state. As I explained during a recent mentoring session, “Side effects are inherently unpredictable. When methods have clear inputs and... Read More
-
Terraforming Azure Databricks Part 3: Automating Workflows with Notebooks and Jobs
Welcome to the third part of our Terraforming Databricks series, where we dive into setting up automated workflows in Databricks. In this part, we’ll create a notebook, configure it to execute a Python script, and use it as the backbone of a Databricks job. This approach will streamline data processing and help manage complex workflows efficient... Read More
-
Terraforming Azure Databricks Part 2: Unlocking Unity Catalog and Provisioning Clusters
This is the second part of our series on setting up Databricks on Azure using Terraform. In the previous article, we laid the foundation by creating the Azure resources required for a Databricks environment. Now, we move forward to configure the Databricks provider, set up Unity Catalog, and provision a Databricks cluster, diving deeper into the... Read More
-
Mastering Terraform for Azure Databricks: Building Your Foundation
The journey of provisioning Azure Databricks with Terraform often begins like any other Azure resource deployment: creating a resource group, a storage account, and a blob container. But soon, things start to diverge. Databricks brings unique challenges and nuances, particularly when it comes to permissions, access control, and the inherent regi... Read More
-
Meet the New GitHub AT-AT: Automate the Automation with Terraform, GitHub Edition
Welcome to the GitHub AT-AT (Automate the Automation with Terraform), an innovative Terraform module library that combines the power of GitHub Actions, Azure, and Terraform to streamline the process of building and managing cloud-based application environments. The GitHub AT-AT simplifies the creation of end-to-end infrastructure-as-code (IaC) p... Read More
-
Mocked and Confused: When Terraform Tests Troll Your AzureAD Logic
Testing Terraform modules can often be challenging, especially when the resources rely on external providers with strict validation requirements. In my case, I encountered issues while trying to test the logic of my GitHub Federated Identity Credential module using Terraform’s new mocking feature. Below, I’ll walk through the use case, setup, ch... Read More
-
6 Critical Terraform Resource Formatting Tips Everyone Should Know
Terraform is a powerful tool for managing infrastructure, and its clarity and readability are vital to ensuring that code remains maintainable and understandable over time. Proper formatting isn’t just an aesthetic choice; it’s a practice that enhances collaboration and minimizes errors. This guide explores three essential principles of formatti... Read More
-
No, ‘Serverless’ and ‘Cloud’ Are Not ‘Scams’ — But They Do Come with Trade-Offs
I recently read an article by a popular blogger here on Medium. This person had over 12,700 followers at the time of this writing — now they have over 13,000. The article is titled: “Why Serverless Is A Scam” Bold? Check. Provocative? Check. Accurate? No. Now, don’t get me wrong, if the article was written in such a way that actually a... Read More
-
GitHub Actions And The Case of the Missing Environment: Part 3— The Dummy Job Solution
In this part of the journey, we implement the dummy job technique to overcome GitHub Actions’ restrictions on directly using vars. variables in reusable workflows. This solution introduces a preparatory job to extract environment variables and pass them to the reusable workflow via outputs. Here’s the code for atat-manual-trigger-terraform-plan-... Read More
-
GitHub Actions And The Case of the Missing Environment: Part 2 — The Reusable Workflow Conundrum
Managing complex GitHub Actions workflows can feel like untangling a knot when dynamic inputs, reusable workflows, and environment variables collide. Recently, I encountered a specific issue while trying to streamline the execution of Terraform plan commands using GitHub Actions. My goal was to create a flexible, reusable setup while preserving ... Read More
-
Making GitHub Actions Workflows More Modular and Efficient: A Deep Dive into My Setup
As someone who frequently uses GitHub Actions for managing Terraform workflows, I’ve always been keen to streamline processes and avoid redundancy. My traditional approach to GitHub Actions workflows has been effective, but over time, I’ve noticed it’s also become quite verbose and repetitive. This realization has led me on a journey to explore ... Read More
-
From DEV to PROD Without Breaking a Sweat: Shepherding Azure Images Like a Pro (and Avoiding the Rebuild Rodeo)
Introduction Maintaining consistency across environments is a cornerstone of robust cloud operations. In Azure, separating Compute Galleries for development (Dev) and production (Prod) environments ensures a clean boundary between experimental and mission-critical workloads. This separation allows for innovation and iteration in Dev while prote... Read More
-
Interview with the Author of Mastering Terraform
I was recently interviewed about my book, Mastering Terraform (available now on Amazon.com). Here’s what I had to say! What sets this book apart from other similar resources available on the market? Mastering Terraform offers a balanced approach to multi-cloud infrastructure automation. Unlike resources that focus on a single cloud provider, t... Read More
-
Unlocking Content Creation with Azure Cognitive Speech-to-Text and OpenAI
Imagine effortlessly turning your spoken words into polished, engaging written content. Thanks to Azure Cognitive Speech-to-Text and OpenAI, this dream is entirely achievable. By combining these tools, you can transform raw video or audio footage into coherent articles, summaries, or social media posts — all while staying true to your voice and ... Read More
-
The Foundations of Infrastructure as Code: Managing Environments with Terraform
Infrastructure as Code (IaC) has revolutionized how we design, deploy, and manage cloud environments. By treating infrastructure configuration as version-controlled code, IaC empowers teams to create repeatable, reliable processes for building and managing complex systems. At its core, IaC is not just a toolset but a mindset that leverages princ... Read More
-
Destroy-Time Failures when Terraforming GitHub
In my experience building AT-AT modules — Terraform modules designed to “automate the automation” — I’ve found that automating infrastructure and tools must extend to the automation setup itself. The silent “W” in “automation” is deliberate; it’s about creating systems that minimize manual intervention even in the deployment of automation proces... Read More
-
Why Does My New Microsoft 365 Account Have Two Identical Billing Accounts?
I recently set up a brand-new Microsoft 365 account for an experiment: what is the experience of a Technology Startup that wants to use M365 and Azure look like? Everything seemed to go smoothly during the signup process — name, address, subscription preferences — until I logged into the billing section and was hit with a surprise: my account h... Read More
-
Azure Billing Labyrinth: How My ‘Startup Experiment’ Spawned a Tale of Two Accounts and Zero Subscriptions
Setting up an Azure subscription should be a straightforward process, but my experience was anything but. It all started when I tried to set up my first Azure subscription for my business entity. Along the way, I unintentionally ended up creating not just one, but two Azure billing accounts, each with its own unique challenges and confusion. I ... Read More
-
Announcing BlueSky.NET: A .NET SDK for Automating BlueSky Social Media Platform
As a technologist, I’m always drawn to platforms where innovation and adoption intersect. Recently, I’ve noticed a growing migration of tech folks from Twitter/X to BlueSky. I was intrigued by the platform’s decentralized nature and its potential for reshaping social media, I decided to explore a new angle: automating BlueSky interactions with ... Read More
-
Setup Office 365 Custom Domain with CloudFlare Terraform Provider
After you have your office 365 account setup you will have a bunch of wizards to help you finish the configuration of your environment. You just need to go to the Microsoft 365 Admin Center. https://admin.microsoft.com/ From there you will be greeted. On the left hand side you should set a “Setup” menu option. This will give you that check... Read More
-
Managing DNS on CloudFlare with Terraform
Setup a new domain name on CloudFlare. Previously I used GoDaddy for all my DNS needs but they lack a Terraform provider so I have been let’s just say, less than satisfied with the arrangement. Setup the Terraform Provider CloudFlare appears to have a rather mature Terraform provider. It is published in the official HashiCorp Terraform registr... Read More
-
FinOps Challenge: Running a ‘Free’ Blog on Azure Storage
Setting up a free blog on my own domain, marktinderholt.com, has been a rewarding experiment in low-cost publishing, combining Jekyll with an Azure storage account. On October 23, 2024, I deployed the initial version, and it’s been running for a total of 20 days (that’s about 28,800 minutes as of now). So far, I’ve registered about 90,000 blob... Read More
-
AzureRM vs AzAPI: A Tale of Two Terraform Providers
Now some of my colleagues have been making the case that we Azure Terraformers should exclusively be using the AzAPI provider in lieu of our dear old friend the “AzureRM”. So I decided to take them up on this challenge. Now as you know, I am no stranger to the AzAPI. I have used it for quite a while. I use it when I run into a gap or whitespace... Read More
-
Terraform Entra ID Saves the Day by automating External User Invitations for Hack-a-Thon Tenant
I inherited some responsibility for the One Fleet Platform Hack-a-Thon, which kicks off tomorrow! Yes, I am so prepared! But its not all procrastination as some people might have signed up for the event very late. Anyways, I need to get all the project leads their own Azure Subscription and make them owners. Now, I probably could’ve automated th... Read More
-
Democratizing Group Management in Entra ID: Individual Ownership with ‘ReadWrite.Mine’ Permissions
In modern organizational management, especially with Infrastructure-as-Code (IaC) tools like Terraform, precise permission control is essential. Azure Active Directory (AAD), ahem, Entra ID, offers permission levels to manage and control resources, yet there’s often a gap between what’s allowed and what would be ideal for secure, granular access... Read More
-
BlueSky is Trending, but do we really need another Twitter?
So I noticed a lot of people start joining BlueSky. Notably after the election. I decided to join just to see how it is. I definitely enjoy getting my fill of memes on Twitter — or X — or whatever it’s called these days. One cool feature is the ability to create these “starter packs” which helps people figure out who to follow as you might imag... Read More
-
The Philosophy of Code Reviews: Building Better Software Together
Code reviews are a unique opportunity to mentor, collaborate, and build better software together. Reflecting on my experience reviewing code for junior developers at Microsoft, I’ve come to see code reviews as much more than a process for catching bugs. They’re about guiding developers toward clarity, simplicity, and maintainability, while also ... Read More
-
New Developer Essentials: Seed Data or Junk Data?
When working with beginner developers, one challenge that often comes up is understanding what constitutes “junk data” versus “seed data.” I encountered this distinction recently when a new developer submitted their first pull request, which included several JSON files they’d generated during local testing. We had a conversation about whether th... Read More
-
Fundamentals of Writing Robust Code
After reflecting on a series of code reviews I’ve done for junior developers I’m mentoring at Microsoft, I’ve distilled some key takeaways about what it takes to write truly robust code. Writing robust code isn’t just about getting something to work — it’s about creating solutions that are clear, maintainable, and adaptable. The best code doesn... Read More
-
Testing Like a Pro: Strategies for Reliable Code
Post-mortem reflections on code reviews I’ve conducted at Microsoft have revealed recurring lessons about what makes testing truly effective. Testing is where the rubber meets the road in software development. It’s not just about verifying functionality — it’s about building confidence in your code and ensuring it behaves as expected under all ... Read More
-
Breaking Up is Hard to Do: From Nested Blocks to Stand-Alone Resources with Azure Storage Network Rules
The Azure Storage Account resource has a nested block called network_rules. Often times when resources in the azurerm are first authored, there is one monolithic resource that has everything on one big resource type with a plethora of nested blocks. As the provider matures over time these monolithic resource types start getting split up into su... Read More
-
Au Deux, Access Keys! Securely Locking Down Azure Storage Accounts with Entra ID Authentication
One of the big security wave items that is becoming pervasive internally at Microsoft even for the most mundane of use cases is that the antiquated, yet all too convenient, Storage account Access Keys are going the way of the dodo. The shared_access_key_enabled flag will disable your ability to use the Storage Access Keys to access the Storage ... Read More
-
Quick Drop Deluxe: Snag Config Files to Parameterize and Include in Your Packer Templates
I was recently setting up Minecraft Dedicated Server Java Edition. Most of my work with Minecraft has been with Bedrock edition which has a similar setup. Both have a server.properties file but the Java Edition has some different settings that I needed to configure. I wanted to build these settings into my Packer template so that I can bake an ... Read More
-
Terraform Testing Unleashed: From Examples to Assertions in Real-World Scenarios
Terraform’s test command, introduced in version 1.6.0, opens up the possibility to integrate testing directly within Terraform configurations. This feature allows module developers to verify functionality, ensure compatibility, and simulate different scenarios that the module might encounter. Like in traditional software development, when writi... Read More
-
Ghosted by ARM? How to Import 'Lost' Azure Resources into Terraform
Provisioning resources through Terraform is generally smooth, but anyone who has worked extensively with any cloud provider knows that issues sometimes arise from unexpected places. When working with Azure, for instance, we can encounter cases where the response is either a “false negative” (the request was recorded as failed but actually succee... Read More
-
Oops, Wrong Module Name! How to Rename Your Terraform Resources Without Destroying Everything!
Ever provisioned a Terraform module with a name you instantly regretted? Well, if you’ve set up a resource with a totally misleading reference—like calling a Virtual WAN module azure-terraformer—-and don’t want to redo hours of provisioning, here’s a quick guide to fixing it without the hassle. module "azure-terraformer" { source = "markti/a... Read More
-
Building a Baseline Azure Environment with Terraform
Not everybody has the luxury of starting fresh, but if you’re going to start fresh and want to keep it simple but still have a good foundation from which to work in the enterprise, this is an excellent place to start. This article details a baseline Azure DevOps environment that leverages a layered architecture, allowing for secure image buil... Read More
-
Setup Google Analytics on your Jekyll Static Web Site
I recently setup Google Analytics to track activity on my Jekyll generated website that I host on Azure Blob Storage. The first thing you have to do is go and sign up for Google Analytics. Once you’re in you need to create a new property. so start by opening the menu navigation and clicking at the bottom and selecting “Admin”. Then click t... Read More
-
Let's Talk About Blob Storage Container Role Assignments
A colleague of mine reached out to me asking a question about Terraform. This happens from time to time to me at Microsoft. Sometimes its somebody I know, sometimes its somebody that is totally new and that is totally OK. This time, it was a colleague from my city of residence, Columbus, Ohio, which is always fun when I get to interact with coll... Read More
-
Automating Jekyll with Terraform: A Serverless Approach to Static Site Hosting on Azure
My plan is to create a private repository on GitHub to be the source of all of the content for my blog posts. This is where I will write and where I will maintain the original copy of every blog post I make. I can then distribute the blog posts to any online forum that I choose (e.g., Medium, etc.) but I will publish the original on my official ... Read More
-
How to Build & Scale an Infrastructure-as-Code Organization: Keep It Simple, Stupid
I start any Terraform project with a very simple, standard Terraform folder structure, which, to some, might appear rather Spartan. I don’t use fancy tools or abstractions. I don’t strive for technical elegance. I focus on meat and potatoes: readability, maintainability and infusing high cohesion in my solutions. I’m a firm believer that simplic... Read More
-
Stop the Guesswork: How to Find Azure VM SKUs That Actually Work
One of the common frustrations in managing Azure resources is encountering errors when provisioning virtual machines (VMs) due to unavailable SKUs. Azure’s console might redirect you to a page that supposedly helps resolve the issue by using the Azure CLI to query SKUs in your region. However, the results can be overwhelming and misleading, as t... Read More
-
Decoding Azure Monitor: Mastering Log Categories and Category Groups with the Azure Portal’s JSON Export Tool
When working with Azure Monitor to configure diagnostic settings, one of the challenges is understanding the log categories and category groups for a specific Azure service. Each service exposes its telemetry through these categories, which can be configured to stream logs and metrics to destinations such as Log Analytics, Event Hubs, or Storage... Read More
-
HashiConf 2024: Inside Look from a HashiCorp Ambassador
Attending this year’s HashiConf was an unforgettable experience that exceeded all my expectations. Over the course of two days, I immersed myself in the vibrant energy of the community, connected with fellow HashiCorp Ambassadors, and shared in the excitement of new developments in the world of Terraform and cloud automation. From the inspiring ... Read More
-
Terraforming Minecraft on Azure
I recently gave a talk at HashiConf 2024 titled “Let’s Punch Some Trees: Learning Infrastructure as Code Through Minecraft.” It was a lighthearted exploration into the world of Infrastructure-as-Code (IaC), using Minecraft as our application of choice to deploy onto Azure infrastructure. In this scenario, Minecraft didn’t just serve as a game; i... Read More
-
Backstage at HashiConf 2024: A Day in the Life of the Azure Terraformer
Yesterday was a whirlwind of excitement and connection, starting with the Ambassador breakfast at the Omni Hotel in Boston, where all the HashiCorp ambassadors gathered. It was an amazing opportunity to connect with familiar faces and new ones. I met Mattias Fjellström at registration, where I was issued a blue attendee badge. They reserved the ... Read More
-
Yes, it’s OK to run Terraform locally, just enjoy responsibly
When managing infrastructure with Terraform, I highly recommend surrounding your automation pipeline with a disciplined GitFlow process. This ensures your changes are trackable, maintainable, and consistent across environments. However, despite your best efforts to automate, there are times when you need to execute things locally — by “locally,”... Read More
-
Setting up Point-to-Site (P2S) VPN on Azure V-WAN with Terraform
In my previous article on how to setup an Azure Virtual WAN with Terraform, I talked about how useful V-WAN was and showed how to setup a multi-region Hub-and-Spoke network with it using Terraform. I may have alluded to some of the shared network services that could be attached. After you have your V-WAN setup, you’re probably gonna want to conn... Read More
-
Dynamically Lookup Your Public IP Address to create Network Security Group Rules
When managing access to cloud resources, one common challenge is dynamically updating network security rules to allow access based on the current public IP address of the user or system. Whether you’re connecting to a virtual machine for administrative purposes or creating secure connections to other resources, manually updating your IP address ... Read More
-
Attack of the Terraform Mega Module!!! How to know your Terraform Module is too big (and what to do about it)!
Terraform is an extremely powerful tool. It can be a lot of fun and truly empowering but like any tool it can be misused — usually unintentionally — in ways that can lead to tremendous toil and calamity. One of those ways is the slow and gradual birthing of a Mega-Module. That is, a module so huge it can take hours to run Terraform Apply. I k... Read More
-
Setting up HashiCorp Packer with Proxmox Part 2: Build a Baseline Patch Virtual Machine Image using Clone VM
In Part One, I walked through how to use Packer with Proxmox to set up an Ubuntu 22.04 VM image, leveraging the proxmox-iso builder to install from Ubuntu installation media. This process, while effective, is not for the faint of heart — it involves a lengthy installation that can take up a significant amount of time. Now, in Part Two, I’ll dem... Read More
-
Setting up HashiCorp Packer with Proxmox Part 1: Build a Baseline Ubuntu Image from Installation Media ISO
I recently set up Proxmox in my home lab. I wanted something easier to automate using Terraform, and I saw that ProxMox has a Terraform provider and a Packer plugin. Therefore, I completely wiped (no, not with a cloth) my Dell PowerEdge R820 server (the one labeled ‘DUMBLEDORE’ because it’s an aged beast of a Wizard), which used to run Windows S... Read More
-
Setting up a Multi-Region Hub-and-Spoke Network using Azure V-WAN with Terraform
Terraform often requires network line-of-sight in order to manage Azure service data planes like Azure Storage and KeyVault once public network access has been disabled. Which, if you are in the enterprise, it probably should be. This situation can also arise when creating a Terraform double-decker — or triple-decker — sandwich using other Terra... Read More
-
Automating Grafana Dashboards on Azure with Terraform — Part 4: Creating an Azure DevOps Pipeline for Multiple Terraform Stacks
Throughout this series, I’ve been automating the deployment of an Azure Managed Grafana instance to simplify the process of building a telemetry dashboard for an Azure-based solution. This solution consisted of an Azure Data Explorer (ADX) cluster to store the telemetry data and a Grafana Dashboard to display that telemetry in meaningful ways. ... Read More
-
Automating Grafana Dashboards on Azure with Terraform — Part 3: Automating Dashboards with the Grafana Terraform Provider
This is Part Three of a four-part series about mashing up the Azure and Grafana Terraform providers together. In Part One, I gave an introduction to the genesis of this topic how I ended up giving a presentation about this at HashiDays 2024 and started with the technical bits about setting up an Azure Grafana Managed instance using the azurerm p... Read More
-
Automating Grafana Dashboards on Azure with Terraform — Part 2: Setting Up Just-in-Time Authentication with the Grafana Terraform Provider
This is Part Two of a four-part series about mashing up the Azure and Grafana Terraform providers together. In Part One, I gave an introduction to the genesis of this topic how I ended up giving a presentation about this at HashiDays 2024 and started with the technical bits about setting up an Azure Grafana Managed instance using the azurerm pro... Read More
-
Automating Grafana Dashboards on Azure with Terraform — Part 1: Provisioning an Azure Managed Grafana Instance
I love mashing up Terraform providers. It’s one of the superpowers of Terraform that no other first-party infrastructure-as-code tool has been able to replicate. Bicep is trying with the recent introduction of Entra ID support, but it seems unlikely that Bicep-alone will be able to replicate the kind of ecosystem that Terraform has. There’s some... Read More
-
Secure Your SSH Keys: Automating Key Generation and Key Vault Secret Creation with Terraform
Infrastructure-as-Code (IaC) isn’t just about provisioning resources — it’s about creating secure, scalable, and maintainable solutions. A great example of this is managing SSH keys in a secure way. In this guide, we’ll walk through the process of creating an SSH key using the tls provider in Terraform and securely storing the key in Azure Key V... Read More
-
Seamless Azure VM Access: Automate SSH Key Management with Terraform
When working with Azure Virtual Machines, secure and efficient access is critical, especially for development and administration tasks — or adhoc labs where you are just kicking the tires. Using SSH keys simplifies this process by offering a password-less method of authentication that enhances security. In this guide, we’ll walk through generati... Read More
-
Upgrading to Azure Terraform v4.0 - How to Handle Deprecated Resources
As I cover extensively in my book, Mastering Terraform, one of Terraform’s superpowers is its extensibility. This extensibility allows it to essentially act as a one-stop-shop for controlling any platform’s control plane with the same familiar language, command line tool and core workflow. Each provider is its own [semi-]independent piece of so... Read More
-
Should the Azure Terraform Provider “azurerm” Support Multi-Subscription Deployments?
Each Terraform provider is, in its own right, an independent piece of software. Sure, it has contracts that allow it to be integrated with the Terraform core executable but it lives in its own GitHub repository, authored and maintained by different people, and is free to make it’s own design choices about how it will work. This flexibility in th... Read More
-
Managing Azure Data Explorer using Terraform - Part 4: Setup Azure Monitor Ingestion
In this installment of the series, we’ll explore how to manage database schemas for Azure Monitor telemetry in Azure Data Explorer (ADX) using Terraform. Azure Monitor provides two types of telemetry: logs and metrics. Each has its own schema and ingestion process, which requires transforming raw data into structured, type-safe tables for optima... Read More
-
Managing Azure Data Explorer using Terraform - Part 3: Add Telegraf Metrics
Managing database schemas efficiently is a cornerstone of scalable infrastructure. This is especially true for Azure Data Explorer (ADX), where dynamic and flexible configurations can make a significant impact on performance and maintainability. In this article, we focus on configuring tables to capture Telegraf metrics using Terraform. Telegraf... Read More
-
Managing Azure Data Explorer using Terraform - Part 2: Pick the Right Provider
Terraform is a versatile tool that supports a wide array of providers. When most people think of Terraform, they often associate it with the big three cloud providers: AWS, Azure, and GCP. Admittedly, I’ve contributed to this mindset. In my book, Mastering Terraform, I cover these three clouds extensively and equally. However, the reality is tha... Read More
-
Managing Azure Data Explorer using Terraform - Part 1: Setup your Cluster
Azure Data Explorer (ADX), often referred to as Kusto, is one of the most popular and powerful services within Microsoft. Renowned for its speed and scalability, ADX is designed to handle large volumes of structured, semi-structured, and unstructured data, making it a go-to solution for logs and telemetry analysis. Many internal solutions at Mic... Read More
-
Dispose Done Right: Avoiding Common Pitfalls in .NET Resource Management
The Dispose method in .NET is a powerful tool for managing resources, but it’s often misunderstood or misused. While it’s designed for cleaning up unmanaged resources, developers sometimes overload its responsibilities, leading to unintended consequences. As I told my mentee during a mentoring session: “The Dispose method only gets called when t... Read More
-
Single Responsibility Principle in Practice: Designing Self-Sufficient Classes
The cornerstone of good software design is focus. A class should do one thing, do it well, and not rely on external assumptions to fulfill its responsibilities. This is the essence of the Single Responsibility Principle (SRP). As I explained to my mentee during a mentoring session: “Think about this component as if it’s the only thing in the uni... Read More
-
The Who’s Who of the Azure Configuration Management Landscape
I recently had a conversation with Matthew Bonig and we discussed configuration management options on Microsoft Azure. It got me thinking, with so many services we can host our applications — from serverless, to containers, to traditional Virtual Machines — what are all the ways we can get configuration into our applications across Azure? I mad... Read More
-
Revisiting Unify Dream Machine Pro & Azure Site-to-Site
I received a question on GitHub regarding an old post / repository that setup Site-to-Site Connectivity between my Home Network (running Unify Dream Machine Pro) and Azure. I decided to do more troubleshooting and add some creature comforts to the Terraform solution to help diagnose any issues that arise. I added the following things: Log A... Read More
-
Adventures in AAD B2C with UWP WinUI 3 SDK: Part 4
Add a new platform to your B2C application’s Authentication configuration. Need to Add the Android Platform For android you need a couple things: package name grab from the Android manifest file signature hash generate using a command line utility ran into this problem… Read More
-
Adventures in AAD B2C with UWP WinUI 3 SDK: Part 3
So we went about setup up, breaking and re-setting up Microsoft Account logins for our AAD B2C WinUI 3 App. Now let’s try enabling an Azure Active Directory Tenant to allow us to login to our B2C app using our organizational identities. I follow this documentation to setup the new IdP inside my B2C tenant. Finally, I add the OpenID Connect I... Read More
-
Adventures in AAD B2C with UWP WinUI 3 SDK: Part 2
So after getting everything working by the book, I decided to break everything and see how much trouble I could get into by doing it from memory. Well trouble ahoy! After working through all the issues that I ran into I decided to break down everything that needs to be created and how it all works. The below diagram should help illustrate this.... Read More
-
Adventures in AAD B2C with UWP WinUI 3 SDK: Part 1
So I’ve been working with an internal customer on leveraging Azure Active Directory B2C. I noticed that the demo code is a bit dated so I thought I would put together some updated guidance. It’s been a while since I worked with UWP apps so I thought I would reboot that as well and get the latest bits working with UWP apps and AAD B2C. I’ve publ... Read More
-
Adventures in AAD B2C with UWP WinUI 3 SDK: Part 1
A relatively new resource to the AzureRM provider for Terraform is the Azure Active Directory B2C resource that allows you to create a B2C tenant using Terraform, but with a big catch. Many mature DevOps shops utilize CI / CD pipelines to provision infrastructure and manage its configuration over time. This is the biggest advantage to using Ter... Read More
-
Using Terraform to Provision Microservices with Azure API Management Backed by Azure Functions
At home, I use Ubiquiti network equipment. My main router / firewall is a DreamMachine Pro. It’s relatively inexpensive, feature rich and easy to use. I wanted to connect my local network to my Azure environment so that I didn’t have to open up my Azure environment with too many PIPs so I thought I would setup a Site-to-Site VPN and do it with m... Read More
-
New at Microsoft! Returning to my engineering roots!
I’m excited to announce that I have joined Microsoft within Azure Core Engineering! For years, I’ve worked in or around the Microsoft ecosystem, spending my formative years at a Microsoft joint venture, Avanade, as a .NET developer and architect, building web and native client solutions for customers using Microsoft technology. Later, I helped c... Read More
-
Setting up Key Vault secured Pipelines with Azure DevOps
One of the first things you need to do when setting up a new Azure DevOps pipeline is to pull secrets from Azure Key Vault into a Variable Group. Variable Groups can be used by your project to setup how things like Terraform in your pipelines will authenticate themselves with Azure, AWS, or GCP. By default, when setting up a Variable Group, y... Read More
-
Improving CosmosDB Test Automation Reliability with Retry Logic
You will find that CosmosDB Emulator will fail, randomly, for no apparent reason doing simple things like get an instance of a container or create the database. In the world of cloud, it’s important to handle Transient Faults, or errors that are not repeatable or consistent in when the appear. They might look like this: Business.Tests.Building... Read More
-
Cosmos DB Emulator on Azure DevOps
The cosmos DB Emulator is a custom action available on the Azure DevOps portal, however, that doesn’t exactly make it turnkey to use. The custom task will spin up a container running Cosmos DB, however it does so with a specific local DNS / port that you need to pipe into your test running. There is documentation but it’s a bit dated. It w... Read More
-
Azure Functions + EventGrid Subscriptions With Terraform
I think I figured it out. I have been working with Serverless Microservices Architecture on Azure for quite some time. I’ve been trying to leverage Terraform to effectively manage the extensive configuration of PaaS services on Azure. Due to immaturity of the Terraform AzureRM provider I’ve encountered well-documented challenges. This is the las... Read More
-
Using Terraform to Provision Microservices with Azure API Management Backed by Azure Functions
So I’ve talked about the fact that the Azure Function resource in the AzureRM provider does not support the exporting of the Key necessary to integrate Azure Functions with Azure API Management. However, I have recently employed a work around, whereby you are able to export the Azure Function Key using the Resource Group Template Terraform Resou... Read More
-
Azure API Management Backend Management with PowerShell
If you are using API Management you Might have noticed that there is no Azure Portal Access to view the Backends that are created automatically when you import you API from wherever. You might have also noticed it takes a ridiculously long time to provision and API Management resource. Therefore, destroying it completely and re-creating is less ... Read More
-
Terraform + Azure DevOps Environment Variable Piping Tips
When establishing good security processes around your software release pipeline it’s important to ensure that secrets are handled with care. As a best practice, I always ensure secrets that need to be used in a CI / CD pipeline are stored in Key Vault and imported into an Azure DevOps Variable Group. This allows the secrets to be reused across m... Read More
-
Azure Serverless Architecture Automation with Terraform Explained
Here is a higher level view of the architecture and all the things that Terraform is provisioning. Based on my previous post, we know that certain things still require manual intervention but Terraform can provision a lot of stuff: Resource Group Event Grid Topics (but no Topics Subscriptions due to Function Access Key limitation) Cosmos... Read More
-
Challenges using Terraform with Azure Serverless Architecture
We’ve been exercising the AzureRM and AzureAD Terraform providers with a healthcare client who wants to go serverless with a new product they are building. We’ve been able to automate a significant portion of the infrastructure with relative ease, however, there are limitations to both the Terraform providers and the operational models of Azure ... Read More
-
Azure Speech API is a game changer
For advanced speech based use cases never before has so much power been put in the hands of developers. Whether you are transcribing customer calls to improve your customer service or using chat bots to create new speech based interfaces with your employees the Azure Speech API has a sophisticated feature set that opens up a flurry of new opport... Read More
-
Cloud Platform Comparison: IAM
There are many similarities between the three biggest cloud platforms on the market today. However, there are many subtle differences, glossary conflicts and feature gaps. Here is a table of some of the common functionalities and how they are implemented on each of the three major cloud platforms: Function Azure AWS ... Read More
-
Cloud Platform Comparison: Monitoring
AWS CloudWatch Azure Azure Monitor and App Insights GCP Stackdriver. Some overlap between Admin Activity and CloudTrail. Administrator Activity Admin Activity on Stackdriver GCP CloudTrail on AWS Read More
-
Cloud Platform Comparison: Networking
AWS: VPC. Subnets. Route Tables. SGs. NACLs. IG. NAT GW/NAT Instance. Azure: VPC is called Virtual Network, which I think is a better name personally. NSG and ASG. GCP: VPC is tied to a single region. Subnets can span multiple zones within the region. Network tags, applies firewall rules to instances with a specific network tag. Firewall rules... Read More
-
Cloud Platform Comparison: Database
AWS RDS: MySQL, SQL Server, PostgresSQL, etc. A/B Failover. Azure GCP Cloud SQL: MySQL, PostgresSQL only. You can create A/B Failover. Read replica supported but load is not automatically load balanced. You’ll have to manually configure your application to use the read replicas. The larger your disk the more I/O performance you can get out o... Read More
-
Configuring AzureAD provider in Terraform to manage App Registrations
Automating the provisioning of Application Registrations (i.e. App Registrations) can be a very useful way of organizing your application’s Infrastructure as Code. Keeping track of all these disparate app registrations, who they belong to, what they are for, can be very tedious and challenging. It can get messy very quickly as well and a wary A... Read More
-
Xamarin UI Test Automation Android Setup
I guess my expectations are a bit high that when I install Visual Studio 2019 to include cross-platform mobile development (Xamarin.Forms) it would properly configure itself. It turns out that when you try and get UI Test Automation working with Xamarin.Forms that is just not the case. Let’s peel this onion. Missing ANDROID_HOME environment va... Read More
-
Plex Server Setup - Part II: Making a Filesystem
After the clean install of ubuntu, I only had a 4GB OS partition setup for me. This partition lived on a single physical volume (PV), volume group (VG) and logical volume (LV). These are important concepts to understand Linux filesystem structures. The first step in expanding my storage is to create a separate logical volume within my volume gr... Read More
-
Plex Server Setup - Part I: Resizing OS Volume
Full disclosure, as someone who’s spent most of his career designing and building software, I don’t often get the opportunity to tackle good old fashioned system administration tasks, especially on Linux. However, since my introduction to PLEX –an open source home media server—I’ve had more opportunities. I’ve recently acquired a new server tha... Read More
-
Building a SmartThings Automation
I’ve been digging into the SmartThings Automation platform a bit. Admittedly, I’m fumbling around a bit. 😊 According to the definitions in the documentation, I think I want to build a WebHook automation. As per the documentation, one should consider an “when the end-user configures the Automation to monitor an open/close sensor, the Automation ... Read More
-
Ready to Re:Invent 2018
I traversed the barren landscape and followed the AWS neck chains to the Venetian Sands Showroom to register for AWS Re:Invent 2018 last night. The Ping Pong tables and heavy beats were in full force. Love the geometric furniture this year! The registration was seamless but albeit on clunky HP laptops. Took my picture and printed my badge.... Read More
-
Mocking Service Fabric & Azure Services with Dependency Injection vs. Inversion of Control (IoC)
In retrospect, in my youth as a software designer I recognize that I often had a preference for the technically elegant. This would sometimes override what was practical from a maintainability standpoint. I was recently asked about the Dependency Injection approach on a project and why we weren’t using an Inversion-of-Control (IoC) Container su... Read More
-
SmartThings Battery Replacement Cheat Sheet
I’m a heavy SmartThings user. Sometimes it can be pretty tricky knowing what batteries I need when I get notifications from different sensors telling me that they are running low and need a replacement. Battery Cheat Sheet: Sensor Location Battery SmartThings Multi-Purpose Sensor Doors / W... Read More
-
Planning a Home Automation System using SmartThings
I recently helped my Aunt and Uncle in California to plan a home automation / home security system using SmartThings and Arlo. In order to get the system setup they needed to make some upgrades to their home network. Their objectives were the following: Add better security to their detached garage Prevent packages from being stolen from their ... Read More
-
Unit Test Service Fabric Actors when Actors call other Actors
In order to be able to effectively unit test Azure Service Fabric Actors we use a NuGet package called “ServiceFabric.Mocks”. It’s truly fantastic. As the name implies it allows you to Mock all Service Fabric services, not just Actors but the Actor model has unique structure that makes it exceptionally helpful in testing. The way it works is wh... Read More
-
Updating Service Fabric version for an Actor: Step by Step
ONE. Upgrade Actor Projects to .NET Core 2.1 TWO. Update Remoting Provider Decorator [assembly: FabricTransportActorRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V2, RemotingClientVersion = RemotingClientVersion.V2)] THREE. Remove all references from Tests Project First remove all references to dependent projects (Ac... Read More
-
DLLHell 2018: Upgrading Service Fabric Project from v3.1.283 to v3.2.176
I’m getting an error from each of my xUnit test projects that there is a package downgrade from Microsoft.NETCore.App from 2.0.9 to 2.0.0. I tried isolating the issue to one project so I unloaded all the test projects in my solution. Then I tried upgrading the version of .NET Core from v2.0 to v2.1. However that produced the following error: ... Read More
-
Reading List: How to Win Friends and Influence People
I recently finished reading a fantastically timeless book “How to Win Friends and Influence People”. This book was originally written in 1939! Read More
-
Reading List: The Five Dysfunctions of a Team
I recently read the book “The Five Dysfunctions of a Team: A Leadership Fable”. It was referred to me by one of my mentors. It was a very enlightening read. I identified with many of the people in the team described in this book. Sometimes the protagonist and often times with the antagonists. It was a good awakening in terms of self-awareness of... Read More
-
Terraform on Alibaba Cloud
So let’s get a basic instance stood up on Alibaba Cloud. It’s surprisingly easy and parallels how its done on AWS. I’ve published my source code on GitHub so you can get started quickly just by pulling the code. You may want to check out my other post on getting started with Alibaba Cloud. Provider The provider specifies the configuration you... Read More
-
Public Cloud in China: Getting Started with Alibaba Cloud
Setting up Alibaba Cloud is very similar to AWS. However you need to do a couple of extra steps. Activate RAM Cloud Service Every service on Alibaba Cloud requires you to authorize its use. I think this is to make it clear that each service could result in costs being incurred. I actually like this feature of AliCloud as it makes it very clear... Read More
-
Creating Service Account for Terraform in Azure
Getting an automation tool like Terraform the privileges to manage resource groups within Azure requires a bit of up front setup work. Here is a video demonstrating all that is required. Step 1: Install the Azure CLI The first step is to get the Azure CLI (command line interface) which will allow you to issue commands using your Azure Active D... Read More
-
Using Custom Dimensions in Application Insights Analytics
Application Insights provides a powerful and easy to use solution for application monitoring. Both for server-side components and client-side components as well. Application Insights captures a plethora of information about clients by default but you can also add custom fields (also referred to as custom dimensions). When the information gets l... Read More
-
Bangalore Terraform Training: It's a wrap!
This past week has been a whirlwind! I just wrapped up my first Terraform training in Bangalore, and I’m still processing how it all went down. We had about 50 people in the classroom, and it was such a great experience to meet everyone face-to-face. Over the course of five days, we dug into the basics of Terraform, provisioned AWS EC2 virtual m... Read More
-
Switching from 'Azure' to 'AzureRM' Terraform Backend
Terraform no longer supports “azure” as a backend. So if you have a backend configuration that makes reference to the “azure” backend provider you will get the following warning: All you need to do is change the following property in your backend configuration file: To the following: Nothing else has to change. Just re-initialize your t... Read More
-
Setting up Packer and Azure
You should follow the documentation here. However, one thing is missing. When you use the Azure CLI to generate a service account you are not provided with the accurate ObjectId for the Active Directory Service Principal. As a result, if you put the wrong value in the “object_id” field in the packer variables file you will invariably run into t... Read More
-
Using an Azure Marketplace Image with Packer
Packer is a fantastic tool that lets you automatically build AMIs on AWS or machine images on Azure. It’s common to start from an operating system machine image published by Microsoft but sometimes you may want to try out (and eventually use) a marketplace image. If you’re not familiar with Azure Resource Group Templates or at least to the point... Read More
-
ZXing QR Code Display in Xamarin.Forms
You can find my source code here. So Xamarin and I have this love-hate relationship. I love it because it makes it super productive for a C# developer to build iOS and Android apps with one codebase but on the other hand, when using third party libraries its an absolute confusing mess. It’s really a non-trivial thing to figure out which version... Read More
-
Publish NuGet Package using VSTS Build Pipeline
Generating a nugget package during build is as simple as the following steps: Define the NuGet Specification Pack the NuGet Package Push the NuGet Package to your repository Now the implementation gets a bit tricky. Define the specification You will need to ensure that nuget.exe is in your path. It’s as simple as creating a folder an... Read More
-
Easy Hack to get a .NET Standard REST API
Everyone’s favorite Visual Studio Feature! LINKED ITEMS! 😊 I literally generated a client using the ‘Add REST API Client’ in the .NET Framework project and the PCL project and then linked them into a .NET Standard project and neither codebases threw compiler errors. However, this is no reason for the good folks on the Visual Studio tooling f... Read More
-
Generating a REST API in Visual Studio with the many flavors of .NET
I remember a time when there was just .NET. .NET Framework 1.0, 1.1, 2.0, 3.5, 4.0 etc. but all .NET. Then came Silverlight, Windows Phone Silverlight, Windows Universal-ish, Universal Windows Platform, Xamarin.xyz, .NET Core, .NET Standard. Now my head hurts. Seriously. I just want to build a WebAPI client that I can use in a Xamarin app. App... Read More
-
Swagger UI on Service Fabric with Stateless ASP.NET Core WebAPI
I just found that I needed to add the following NuGet package in order to get this to work: Microsoft.AspNetCore.StaticFiles I was using a vanilla configuration in my code where I setup swagger endpoint: And where I setup Swagger UI… Before I installed this package I was getting an HTTP error 500 from http://localhost:8308/swagger and ... Read More
-
Standalone Cluster On a Single Machine: Same Rules Apply
I am running a stand alone service fabric cluster on a single, albeit beefy, physical server. This cluster has three virtual nodes. That’s because I am using a modified version of the Unsecure.DevCluster configuration template. There are other templates that will allow you to deploy to multiple physical (or virtual) machines but I don’t see the ... Read More
-
Actors Referencing .NET Standard 'Works On My Machine'
So the age old ‘works on my machine’ is back at it again with Service Fabric Reliable Actors and likely Reliable Services in general (Stateless or Stateful). As you can see from the status my local dev cluster is reporting ‘it works on my machine’. I should be done right? 😊 I have been trying to deploy some Actors that I developed to a Stand ... Read More
-
Deploying to Standalone Cluster: FileNotFoundException
In my previous post, I demonstrated how I overcame some remote connectivity challenges that were preventing me from accessing my Service Fabric Cluster via PowerShell from other machines on my local network. Since then I have been able to deploy to my Standalone cluster using Visual Studio tools. Error event: SourceId=’System.Hosting’, Proper... Read More
-
Standalone Service Fabric PowerShell Remote Connectivity Challenges with DevCluster
So after I got my Standalone Service Fabric Cluster setup and working I decided the Unsecure template wasn’t good enough and I wanted to try my hand at the x509 template. I went through the entire process (I’ll post on that later) however I was unable to access the Service Fabric Administration Console nor was I able to connect via PowerShell…ev... Read More
-
Attaching the Bearer Token to Claims Identity in ASP.NET Core to implement On-Behalf-Of Flow
When you setup an ASP.NET Core web API project and go through the wizard to associate it with an Azure Active Directory tenant it will add the necessary plumbing within your project to get it all working. However, if you are ever in a place where you need to use on-behalf-of flow to obtain another token maybe for a different service like Azure A... Read More
-
First Impressions: HMD Odyssey and Windows Mixed Reality
I just unboxed my new Samsung HMD Odyssey and got it setup on my home workstation. I needed a new video card just to get started so I went and picked up a graphics card that met the “ULTRA” standards of the Windows Mixed Reality hardware pre-requisites. The one I ended up getting was this the GeForce GTX 1050 Ti 4GB GDDR5. It was only $150 a... Read More
-
Azure AD B2C Error Code: AADSTS50011 Tip: Don't botch the Reply Address
Application ID ‘c8f9a6ef-a5c6-4d19-993d-2c4ded2b55d6’ is a Web app / API. AADSTS50011: The reply address ‘https://localhost:44318/’ does not match the reply addresses configured for the application: ‘c8f9a6ef-a5c6-4d19-993d-2c4ded2b55d6’. Do not get reply URL confused with home page URL. There is a dedicated place for Reply URLs and you... Read More
-
Azure Active Directory B2C Global Administrator can't login to B2C tenant app
I have been doing some testing with the Azure Active Directory Graph API and encountered some issues when using my global administrator account to attempt login to one of the application’s I registered within the B2C tenant. In doing so, I discovered something interesting about the Global Administrator accounts within the Azure AD B2C tenant. T... Read More
-
Migrating SmartThings Hubs
I have dozens of SmartThings Open/Close Sensors. I have several SmartThings Outlets. I found that I was able to easily remove them from the Hub just by selecting the outlet in the SmartThings app and click remove. User Manual I have Schlage BE468 locks on every exterior door. Here’s the manual but you really only need to know this: I hav... Read More
-
Setting up and Managing Azure Active Directory B2C: The Complete Guide to Azure Portal Weirdness
So I’ve been working a lot with Azure Active Directory B2C recently and thought I would jot down some of the idiosyncrasies I’ve found while using the Azure Portal. The implementation leaves much to be desired and can be very jarring and seem disjointed to new users. I’ll focus on a few of the common tasks: Create Azure Active Directory Tenant... Read More
-
AspNetCore.TestHost + Azure Active Directory (Part II)
So in my last post on the topic, I was describing some challenges I faced when receiving 401 not authorized errors when attempting to pass a seemingly correct bearer token to my Azure Active Directory protected WebAPI. I’ve discovered the solution. Not only was I able to get it working but it also works flawlessly on Azure Active Directory B2C (... Read More
-
Azure AD B2C Tip: Make sure you explicitly grant permissions between apps with delegated permissions
I’ve been continuing my journey to deepen my understanding of Active Directory and Active Directory B2C and establish best practices and a reference architecture for creating automated integration tests for a Web API protected by either Azure Active Directory or Azure Active Directory B2C. I wanted to write about an issue that I encountered whe... Read More
-
Enable Swagger to authenticate against Azure AD (Revised)
I’ve been hankering to enable my Azure AD protected WebAPI to be manually testable using Swagger UI. In order to do that, I need Swagger UI to authenticate against Azure Active Directory and make calls to my Azure-AD protected WebAPI. I’ve had to take a step back as my first attempt to do it with ASP.NET Core + Azure AD B2C failed. So my first s... Read More
-
AspNetCore.TestHost + Azure Active Directory (Part I)
I have been evaluating new practices for implementing Integration Testing WebAPIs and I’ve been trying to use TestHost to test a WebAPI that I have secured with Azure Active Directory. I am able to use PostMan to obtain a bearer token from Azure AD’s oauth2/token endpoint and call HTTP GET on ‘/api/Values’. However, when I do the same to the Tes... Read More
-
Swagger UI authentication with Azure AD B2C on Service Fabric .NET Core
I’ve been trying to figure out how to enable authentication on Swagger UI setup on an ASP.NET Core API hosted on Service Fabric (currently hosted locally). I initially setup the Service Fabric project using the wizard and immediately connected it with an application in my Azure AD B2C tenant. This appears to work but when using the ‘try it out’ ... Read More
-
Tips for Trello: How to use Kanban more effectively
I use Trello frequently as my digital Kanban system of choice. Here are a few tips that I used when using Trello and what I advise those on my team to follow. Limit Work In Progress. Focus is hard to achieve if you are split in 100 different directions at the same time. Your Kanban board can be a helpful tool for you to keep razor focus on the ... Read More
-
Xamarin.Forms with Azure AD B2C
I pulled the code provided here but its built using an old version of the “Microsoft.Identity.Client” nuget and is essentially broken. After working through the errors: ‘authority’ should be in Uri format Parameter name: authority API does not accept client id as a user-provided scope No suitable identity providers found Issue #1: I fixed the... Read More
-
Installing Homebrew Azure Stack on a Budget
Equipment: Dell R820 w/ dual socket 8 core xeon (16 cores total), 32GB RAM, 4 x 250GB - $800 +96GB RAM - $??? Software: Windows Server 2016 – Jan ’17 Release (MSDN Subscriber’s Downloads) Azure Stack Technical Preview 1 – Apr ’16 Release (MSDN Subscriber’s Downloads) Step 1: Prepare the OS I bought this R820 from a local dealer on the ... Read More
-
Getting Started with CosmosDB
I’ve been looking for a global scale storage solution for a long time where you could start small and grow huge with minimal growing pains over time. CosmosDB from Microsoft Azure sounds like the solution I’ve been looking for. Some of the weaknesses of previous approaches I’ve taken previously got the job done but you either ran into Azure Ta... Read More
-
Three Types of Teams
The Baseball Team Highly specialized positions each with distinct functions. Discrete Hand off when playing. When you are up to bat, you stand alone. The Football Team More flexible roles rather than fixed positions. Teams play together on the same field. The Tennis Doubles Team Interchangeable pair. The Rugby Team Commonly used to repres... Read More
-
Breaking up is hard to do...
After close to seven long years my relationship with Windows Phone is over. It was fun while it lasted but I can’t in good conscious stay with the platform. Windows 10 Mobile was an architectural feat. It was the unifying code base that achieved true universal application platform support. It’s wicked fun to develop applications on the platform.... Read More
-
Principles of Enterprise
Management is about human beings. Joint performance. Strengths effective, weaknesses irrelevant. Deeply embedded in culture. What they do is the same. How they do it is different. Adapt to a culture’s unique attributes. Every enterprise requires to commitment to common goals and shared values. Simple, clear and unifying objectives. Clear,... Read More
-
Three Characteristics of a Knowledge Economy
Borderless-ness. Knowledge transfers easier than money or capital. Upward mobility. Potential for success or failure Read More
-
Dimensions of Management
Think through the purpose of the organization Make work productive Manage social impacts and social responsibilities Read More
-
Maximum GP2 Storage Limit 20TB per region
Be warned, you may run into a storage limit when attempting to provision an EBS volume. The limits are set on a combination of volume type and region. If you hit the limit, you’ll just have to contact AWS support to have them increase your limit. When in doubt, check the EBS limits. At the time of this writing, they are: Reso... Read More
-
Setting up Swagger in ASP.NET Core
Swagger is one of my favorite tools when building a WebAPI. It’s good to see support quickly coming to ASP.NET Core from the folks at Swashbuckle. For those of you that might be unfamiliar, Swashbuckle is a framework that enables swagger generation in ASP.NET (and now ASP.NET Core). It’s only in pre-release, so if you have your filters on you... Read More
-
What Makes a Good Leader
I’ve been reading “Management” by Peter F. Drucker. It’s one of his foundational works that essentially defined management as a discipline in the early 1970’s. It’s been a great read, very insightful, and provides an impressive foreshadowing of things to come (given that it was originally published in 1974). Early on, Drucker posits his definiti... Read More
-
OpsWorks + Windows: Alternate user identity execute support
A common scenario when configuring an environment is that certain elements of the scripts may need to be executed using a specific user’s credentials. If you’ve looked at the documentation for the various means of execution within Chef you might have noticed the “user”, “domain” and “password” parameters. The “powershell_script” action is parti... Read More
-
Entity Framework + LocalDB Connection String Changes
Apparently there was a change in how you connect to SQL Server LocalDb after version v11. I ran into this when I used some old code still configured for version 11. I received this error: “A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify t... Read More
-
Git + OpsWorks: Getting Organized
In OpsWorks, each “Layer” can be linked to its own repository. You can also specify a branch of your choosing. The terminology mapping between AWS, Git and Application Architecture can sometimes be a bit confusing and can lead to mal-configured OpsWorks stacks which can subsequently lead to OpsWorks being used inappropriately due to perceived te... Read More
-
Manually Run a Chef Script on OpsWorks
Let’s say you’re manually testing a recipe on one of your OpsWorks instances. This recipe is the nth step in a multi-step process and you’ve fully tested and integrated into your “Setup” lifecycle event all the recipes that handle steps 1 through n-1. The highlighted recipe is such a recipe. It resides within a parent recipe that resides in t... Read More
-
The Three 'Don'ts' of OpsWorks
Don’t Treat Them Like Regular Virtual Machines I’ve seen OpsWorks used as a round about way to provision EC2 instances. This is not the purpose of OpsWorks. OpsWorks provides an orchestration mechanism that triggers configuration management events at key events in the life of a virtual machine allowing us to respond to change in our environment... Read More
-
VPN doesn't work in 'Enhanced' Hyper-V Session
I started getting this message from one of my customer’s VPN client after setting up a new Hyper-V Generation 2 Virtual Machine. It connects and then immediately disconnects saying “VPN Session ended”. I took a closer look at the log and found something puzzling. It appeared that the VPN was rejecting my connection due to a policy being en... Read More
-
OpsWorks + Auto-scaling Windows Stacks
AWS has multiple ways of enabling Auto-scaling of EC2 instances. Two of which are Auto-Scaling Groups and OpsWorks. When setting up a stack in OpsWorks you’ll notice that you can add Load-based instances to scale the stack beyond the fixed instances you establish. The scale configuration that you specify on the below screen should be reminiscen... Read More
-
Installing .NET Core on Raspberry Pi 3
I got a new Raspberry Pi 3 last week while I was buying a new Raspberry Pi Zero that I bought for $5. I decided I wanted to try to install .NET Core on my new Raspberry Pi after installing a fresh copy of Raspbian on it. The problem is there is no official build of .NET Core for Raspbian. However, since Raspbian was built from Debian I figure... Read More
-
Raspberry Pi Zero Review
So I saw an ad for a Raspberry Pi Zero for a mere $5 at my local electronics shop and figured I’d give it a go. The board is much smaller than it’s kin. The Pi 2 and Pi 3 being almost twins. This board had a distinctive ‘baby brother’ feel. The specs aren’t too bad considering how small it is. That is, in terms of raw computing power. A ke... Read More
-
Installing .NET Core Preview 2.1 on Ubuntu Linux 16.10 Yakkety
So I followed the official instructions on how to install .NET Core on Ubuntu but ran into some lock issues at the very last command. Some might call it ‘clutch’. I initially received the following errors: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily available) E: Unable to lock the administration director (/var... Read More
-
File Upload Handler built using Azure Service Fabric
I’ve been experimenting with different scenarios on Service Fabric and one came to mind immediately. Uploading large, multi-part files. I got a working prototype working in short order. I still need to fully vet it to ensure that it scales but it “works on my machine”. 😊 You can go get my code from GitHub. Since the files that I’m uploading are... Read More
-
Service Fabric Samples Dissection: Visual Objects
Azure Service Fabric is not for the faint of heart. It is extremely cool but it’s a bit different than the traditional way of doing things in .NET projects. Thanks to a particularly persuasive client of mine, I’ve decided to dissect some of the samples available from Microsoft so that someone new to Service Fabric can get a bit more familiar wit... Read More
-
Setting up a Service Fabric Cluster in my Home Lab
I setup a Service Fabric Cluster on a physical server in my Home Lab. The server that I deployed it to has decent specs as I originally bought it to do work with Azure Stack (more on that later). However, I’ve been working with Service Fabric pretty heavily lately and decided to focus my attention there and get a good development cluster setup ... Read More
-
Hosting a Console Application as a Guest Executable in Service Fabric
I’ve been experimenting with the efficiency of Guest Executable workloads hosted in Service Fabric. One of the key benefits of Service Fabric is that you can host applications that weren’t originally designed for the cloud but enable them to be hyper scalable. That’s great but could it be done with an application that was designed without even t... Read More
-
HoloLens: Deploying (and remotely debugging) a Blank UWP App Over Wireless
As I mentioned in my HoloLens talk last Friday, there are two paths to build HoloLens apps. The Easy Path: UWP First, you can build a Universal Windows Platform (UWP) App. It’s amazingly simple and if you’ve been working in Visual Studio (like me) for a long time, you’ll feel right at home. This is what UWP apps look like on HoloLens: What... Read More
-
Interaction Design for Multiple Form Factors
I did a quick update today to the TripleA UWP codebase by adding the Hamburger Control for the main navigation and the Blade View for the control panels that overlay the map view during game play. I think the Blade View Control might make a good choice for the user action options such as buying and placing units. In terms of troop movements ... Read More
-
Code Drop: TripleA for Windows 10
Over the weekend I spent a little bit of time working on an open source game that I’ve discussed in a pervious post. It’s called TripleA (Axis And Allies, hence three A’s). I’ve been working on a Universal Windows Platform version of this extremely flexible and powerful turn-based strategy game framework. I’ve finished implementing the configur... Read More
-
Playing with WPF Custom Panels
I just dug up a whole bunch of custom panels that I wrote, complete with a nifty demo application I built way back in 2010 (when WPF was all the rage). It’s pretty fun stuff actually. I posted all the code on GitHub here. Diagonal Panel This one is pretty basic, it’s essentially a slightly modified version of Stack Panel. I didn’t implement an... Read More
-
How to Sterilize your Docker Host
Here is a pretty handy set of commands that will clean out your Docker host of all containers and images. It’s useful when resetting a demo environment to start fresh. Step 1: Stop all docker images docker stop $(docker ps -aq) Step 2: Remove all containers docker rm $(docker ps -aq) Step 3: Remove all images docker rmi $(docker images -... Read More
-
Hidden XAML Feature: Dependency Properties on Converters
Over the years I’ve written my fair share of BooleanToVisibilityConverter classes. The are so drop dead to implement if you are bootstrapping a small project or proof-of-concept it almost doesn’t make sense to add a nugget package just to bring in a standard BooleanToVisibilityConverter. However, after using the UWP Toolkit’s implementation, I m... Read More
-
An Agile Team's Progression Through the Stages of Team Development
I read an old colleague’s article about ‘Adaptive Leadership’. I really enjoyed it. He posted it on LinkedIn. Go check it out, it’s a good read. It’s his fifth article on there and I hope to see more. In it, Brian discussed and explained the different leadership styles used during different team development stages (you know, forming-storming-nor... Read More
-
So you wanna be multi-tenant...
I’ve recently been having some conversations with clients who currently provide an on premise software solution. Their product started out as a two-tier thick client and has moved towards a cloud-hosted N-tier web application. Currently they deploy their solution on premise for each of their customers. They think they need to become multi-tenant... Read More
-
BackgroundDownloader in MVVM
So I’ve been working on a new view in the Blob Storage Explorer app for Windows 10 today. The transfers view. I have a navigation item for it but right now the screen doesn’t do anything. The user story for this is: As a user, I want to be able to see the progress of my downloads so that I know how long before they are done downloading. The... Read More
-
AWS Certified SysOps Administrator Part IX: Miscellaneous
As part of my AWS SysOps Administrator certification study, I’ve been focusing on some essential AWS services, including Identity and Access Management (IAM), CloudWatch, Relational Database Service (RDS), and AWS backup strategies. These services form the foundation for managing users, monitoring cloud resources, ensuring high availability, and... Read More
-
AWS Certified SysOps Administrator Part VIII: Route53
As part of my AWS SysOps Administrator certification study, I’ve been diving into Amazon Route 53, AWS’s highly available and scalable DNS web service. Route 53 allows you to manage your domain name system (DNS) and route end-user requests to the appropriate AWS resources. This post will cover Route 53’s key characteristics, different DNS record... Read More
-
AWS Certified SysOps Administrator Part VII: ELB
As I continue preparing for the AWS SysOps Administrator certification exam, I’ve been diving into Elastic Load Balancer (ELB) and Auto Scaling, two essential services that work together to ensure application availability, scalability, and performance. In this post, I’ll cover the key features of ELB, its configuration process, and how Auto Scal... Read More
-
AWS Certified SysOps Administrator Part VI: S3
Amazon Simple Storage Service (S3) is a fundamental building block of AWS, providing scalable, durable, and secure object storage. As part of my AWS SysOps Administrator certification exam preparation, I’ve been studying the core features and capabilities of S3. Here’s a breakdown of what I’ve learned, including storage types, replication, featu... Read More
-
AWS Certified SysOps Administrator Part V: EBS
As part of my preparation for the AWS SysOps Administrator certification exam, I’ve been studying Amazon Elastic Block Store (EBS), a core storage service in AWS. EBS provides persistent block storage for EC2 instances and comes in different volume types tailored for various workloads. Here, I’ll share key insights about the different storage op... Read More
-
AWS Certified SysOps Administrator Part IV: EC2
As I continue preparing for the AWS SysOps Administrator certification exam, I’ve been exploring the various pricing models and instance families that AWS offers for EC2 (Elastic Compute Cloud) instances. Understanding these models is crucial for optimizing costs and ensuring that the right resources are used for specific workloads. Below, I’ll ... Read More
-
AWS Certified SysOps Administrator Part III: VPC Access & VPC Peering
As part of my study for the AWS SysOps Administrator certification exam, I’ve been digging into Virtual Private Cloud (VPC) access methods, including VPN types, Direct Connect, and VPC Peering. These options are crucial for connecting on-premises resources or other networks to AWS in a secure, scalable way. Here’s a breakdown of the key concepts... Read More
-
Holograms App @ United Club
I place a holographic tiger on the floor of the United Club @ EWR and make some observations about the experience. Sure, the Holograms app is more of a toy than anything else. Microsoft released to as a way to allow people to experience Mixed Reality by placing static and moving holograms within their reality. That being said, I think a more r... Read More
-
HoloLens: Deploying (and remotely debugging) a Blank UWP App Over Wireless
I paired an Xbox Wireless Controller (Bluetooth) and decided to try Xbox streaming from my HoloLens. I had some networking issues but other than that it worked relatively smoothly. [youtube https://www.youtube.com/watch?v=0VAO2QcKzF4] I was playing one of my favorite Xbox One games, Star Wars Battlefront, on the Death Star DLC. The Xbox app wa... Read More
-
TripleA for UWP: Cross-Platform Turn-Based Strategy Game
I started a new open source project where I am going to be experimenting with creating a UWP client application that takes full advantage of the Windows stack in a cross-form factor way. I will be doing custom tailoring of the game experience for Mobile, Desktop, Xbox One, and HoloLens experiences. The open source project I picked is called Trip... Read More
-
AWS Certified SysOps Administrator Part II: Security Groups & NACLs
As part of my preparation for the AWS SysOps Administrator certification exam, I’ve been diving deep into AWS security fundamentals, particularly around layered security. AWS employs a multi-layered approach to securing resources within a Virtual Private Cloud (VPC). Here, I’ll break down key concepts related to Security Groups and Network ACLs ... Read More
-
AWS Certified SysOps Administrator Part I: VPC
As part of my preparation for the AWS SysOps Administrator certification exam, I recently studied the “Amazon Web Services (AWS) Fundamentals for System Administrators” course on Pluralsight. Below, I’ve distilled my key takeaways and observations regarding AWS networking, particularly focusing on Virtual Private Clouds (VPCs), which are essenti... Read More
-
AWS Fundamentals for System Administrators: A Comprehensive Overview
I recently went through the Pluralsight course “Amazon Web Services (AWS) Fundamentals for System Administrators,” a 7-hour course designed to provide an in-depth understanding of AWS. Below, I’ll share my key takeaways, observations, and comparisons with Microsoft Azure, which might be useful for those who already have cloud experience, especia... Read More
-
Confidence Vote: Everybody Votes
I was recently coaching an Agile Release Train where when they were doing the confidence vote during PI Planning the managers sat around a table and had the teams each sequentially vote on the confidence in their plans. The confidence vote in PI Planning is to capture the entire Agile Release Train’s confidence in the plan. Not just the confide... Read More
-
What is Commitment?
Commitment is a huge concept in agile. So many teams are so used to treating commitments as if they are really the ‘good ole’ college try’ and can you blame them? When a couple smart guys get into a room and come up with some Ludacris plan and sign the whole team up for it what option do they really have? This is why, in agile, we estimate and ... Read More
-
Checkbox Scrum Roles
Recently I was coaching an Agile Release Train where they were struggling with the concept of a Product Owner. The teams were organized with a Scrum Master and a Product Owner each. This organization’s product management team was very resource constrained so one technique employed was the use of “Product Owner Proxies”. Product Owner Proxies wa... Read More
-
Conversations about Forming an Agile Team: Part II
So in Part I, we started the conversation about taking a siloed team each with its own individual objectives and forming a single team out of it. We overcame some key hurdles such as overcoming latency in hardware fabrication and high levels of specialization within the team and think we have a plan that will work in theory. But we know better, ... Read More
-
Conversations about Forming an Agile Team: Part III
In Part II, we discussed how we measure people impacts the dynamic of the team. We channeled some W. Edwards Deming and recognized the fact that we need to establish measurements that optimize the whole and discourage individual success at the expense of the success of the entire team. The idea sounds great in principle but when we sit down to ... Read More
-
Conversations about Forming an Agile Team: Part I
I had a really interesting conversation with a customer in Shanghai. In terms of taking on an agile transformation, let’s just say that they’re on the edge. They know what they are doing now isn’t making them competitive in the marketplace but they are concerned. They’re concerned about how things will change. Will they be able to incentivize th... Read More
-
Plan in the Same Room
I recently facilitated a PI Planning workshop where we had, well, let’s just say—erm—less than optimal facilities. To be fair, the Release Train Engineer (RTE) did the best they could given other constraints. Our train was conducting it’s planning somewhere in Europe (I know, I know, I sound like a secret agent). If you’ve been following my oth... Read More
-
Minimize Team Churn
One behavior pattern I have observed in traditional management structures is the idea that human beings are essentially replaceable parts. You take one cog in the machine and if its about the right size you can jam it somewhere else to make the system move faster. The reality is much different. Even the smallest change to a team’s dynamic can... Read More
-
HoloLens: Deploying (and remotely debugging) a Blank UWP App Over Wireless
Ok. So this sounds lame but I just want to get the hang of remote debugging on my HoloLens device so I thought I would get things all setup and tell you all about it. Amazingly, after enabled debug mode on my HoloLens it automatically detected it in the remote debugging tool within Visual Studio 2015. Awesome. Let’s roll. However, when I tr... Read More
-
Raspberry Pi 2 and Windows IoT Core: Getting Started with Blinky
I finally busted out my Raspberry Pi 2. It’s been sitting on a shelf for far, far too long. I purchased an Azure IoT starter kit many moons ago thinking I would have the time to tinker with it but up until this point, embarrassingly, I haven’t found the time. But today, that all changed. Today, I wired my Raspberry Pi 2, configured it for remot... Read More
-
Goodbye Avanade!!! Hello, Harman!!!
It’s with mixed emotions that I share today was my last day at Avanade. It’s been an incredible 9.9 years—so close to ten, but who’s counting? I’m grateful for all the memories, opportunities, and the amazing people I’ve had the privilege to work with along the way. I’m excited to announce that I’ll be pursuing a new opportunity at Harman Inter... Read More
-
Continuous Integration with Azure API Apps + VSO
I recently setup continuous integration from my Visual Studio Online to my Azure API App. It was a little tricky but it works. So I did the usual lot and setup Gated Check-in. Used the standard template for continuous deployment… Then the fun begins… Originally, the Windows Azure Deployment environment was blank. I clicked the “…” button... Read More
-
Streaming Content using Azure Media Services to a Windows Universal App
I have been dabbling at the intersection of Windows Universal apps and Azure Media Services. I uploaded a video file that I produced using Camtasia Studio. I encoded it as H264 Adaptive Bitrate MP4 1080p output. The final video was about 6GB in size. So I found a few great resources and was able to piece it together. Many of the demos and samp... Read More
-
SortDescription values null using Kendo UI and ASP.NET MVC3
I have been working on some admin screens for an internal application and we recently purchased the Telerik Dev Tools library for use on the site. The first scenario I tackled was displaying a list of the application’s active users. The Kendo UI Grid supports both client side rendering and server side rendering. Client-side rendering uses HTML... Read More
-
Windows Azure Multiplayer Game Event Notifications: Making it perform
As both the author of Game Fabric and games using the platform, sometimes I might be a better platform developer than a game developer. The GameFabric Action Service provides a mechanism to push down events to all the connected users in the game. These events then get picked up by your game UI and are used to update the visuals. The GameFabric... Read More
-
GameFabric Update
As many of my frequent readers may already know, my nights and weekends are filled with work on a platform I have dubbed GameFabric. Windows Azure powered multi-player gaming platform with client accelerators currently for Windows Phone and Windows 8. I knee deep in a major optimization of the platform. In version 1.2 I plan to add a ton of bug... Read More
-
Windows 8 + Azure Mobile Services Overview
For today’s weekly Windows Azure community call I decided to demo Azure’s new Mobile Services Feature. Microsoft provided a surprisingly easy tutorial to follow and I was able to get up and running within 30 minutes with an application that saves to Azure storage and authenticates using Windows Live (is it called that anymore, I’m confused). He... Read More
-
Game Fabric Update
Last post I outlined a couple major updates to both the Game Fabric framework and my first game built on the platform, Euchre. In my quest to add these features I am adding another feature that allows users not in a game to ‘watch’. This I hope will allow for more interactivity between players even when they are not playing each other and could ... Read More
-
Game Fabric Update
So I launched Euchre. With mixed success. SUCCESS: I have over 600 registered users within the first two months. FAILURE: Ad Revenue is extremely weak. So why is my ad revenue so weak? I have a couple theories: My eCPM sucks People aren’t playing games I can’t do much about my eCPM so I really need to focus on getting people playing my ... Read More
-
Game Fabric Update
1. XML Configuration The XML configuration allows me some conveniences of changing which environment I am playing on. This means I will be able to have several Game Fabric environments in order to conduct testing, staging and switch over. For game developers, this will be where you can configure aspects of your game. The big one right now bein... Read More
-
Game Fabric Update
Executive Summary ‘Euchre with Friends’ and Game Fabric v1.0 are very close to marketplace release. Gameplay is very stable with most edge cases tested and regression tested with each update. I made the following additions to Game Fabric: User Profile Tile (2x1) User Stats Tile (1x1) Leaderboard Tile (demoted to 1x1) 1. User Profile T... Read More
-
Storage Transactions: The Silent Killer for Ad-Supported Apps
Compute is often considered the most expensive resource in cloud computing solutions however there is one resource that can add up quick if you are not careful: Storage Transactions. Yes at only $0.01 per 10,000 transactions these pesky things look very cheap. Very, very, very cheap in fact. However, in just a few days of testing with my server... Read More
-
Game Fabric Update
Executive Summary I continue to expand on the stability and feature set of the Lobby Service of Game Fabric by hitting edge cases within functional testing of Euchre. As testing progresses, additional user stories make their way into my product backlog and are prioritized. This week the following items made it there: Go to Game Quick Tile Read... Read More
-
Game Fabric New Features
1. Allow users to quickly resume or start a game directly from the start screen of your game Game Fabric will automatically detect if the current user is in a game and display a “Start Game” tile if the user is not in a session or a “Resume game” tile if they are in the middle of a game. This feature got bubbled up after I noticed that it was ... Read More
-
Cloud Scan for Windows Phone 7
Cloud Scan is a solution that I built using Windows Phone, .NET and Windows Azure technologies. Here is a video that demonstrates the functionality of the Windows Phone application. The application has the following features: Windows Client to Upload to Azure Storage Account Windows Phone Client to categorize uploaded docume... Read More
-
Game Fabric V1.0
So I have been laying the foundations for my avalanche of upcoming multi-player games. I call it the GameFabric. It’s a set of reusable services and client APIs that make getting the plumbing of multi-player games going easy. Last weekend was a busy one. Here is a synopsis of the features that I have implemented. 1. Authentication GameFabric... Read More
-
Improved Identity Provider Selection
I have further enhanced the AccessControlServiceSignIn.xaml control to use a more tile based user interface. I am debating whether I should leave the textual names on there or the icons are enough to get the point across. Hopefully people know about Google, Yahoo and Windows Live but then again, you wouldn’t want the lack of text to be a barrie... Read More
-
SL.Phone.Federation, I made it better
There is the Windows Phone Azure Toolkit. It has these fancy project templates that load your Windows Phone app up with an Azure Storage Service Proxy, ACS, Table or SQL Azure based AuthZ, etc. Once you are done you have a behemuth of a Windows Phone app and everything ticks and ties (for the most part). But try and learn what they are doing or ... Read More
-
Adventures in Building Windows Phone Multi-Player Games
My previous dabblings in Windows Phone development have been miserable failures. I admit and accept that. I have decided building apps for personal utility (Per Diem, Loyalty) or convenience of data provider (Ohio Roads) just doesn’t work. It gave me some practical exercise and experience building apps but the financial returns were uninspiring.... Read More
-
ADFS Setup Troubleshooting
Go through the ‘Add STS Reference’ process. 1. Service Certificate Location Make sure you remove the defaults that the ASP.NET MVC 3 project put into your web.config on the element. StoreLocation and StoreName must be removed. Otherwise you get the following error. Your element (full path is “/microsoft.identityModel/service”) should be cha... Read More
-
Error Attaching the debugger in Windows Azure SDK 1.6
Working on a PivotViewer mini-project for a political initiative I am involved in and I ran into this silly dev environment error. I found this brilliant post. I looked through all the Options that Dhananjay listed and eliminated 1, 2, and 4 as possibilities. I have been around enough to know that Microsoft’s SDKs have their fair share of quirk... Read More
-
Rendering a tree view using ASP.NET MVC 3 + Razor
I modified the Html Helper created by Mike Hadlow based on the answered provided by marcind over on Stack Overflow and it works pretty beautifully. I also made a couple “improvements”: Updated to use the HtmlTextWriter provided by the HtmlHelper so that it is compatible with MVC 3. Added a children expression so you don’t need the IComposite i... Read More
-
Exploring Scalable Polling Duplex with RCA
Standing up my own copy of ‘Rich Cloud Application Framework and Sample 2.0’ or RCA. Wanted to get the Push Messaging working in an isolated environment but kept getting problems with the client actually receiving message notifications. Read More
-
Silverlight TreeView: Dragging Up vs. Dragging On
So I have been trying to fix a bug in an application that uses a TreeView and a TreeViewDragAndDropTarget pretty extensively. I am writing custom logic on drag over to set Handled to true when I do not want the drop to be allowed. However, my logic is based on the data context of the object you are hovering on. The problem I encounter relates t... Read More
-
Silverlight Toolkit for Silverlight 5 beta
Since Microsoft has chosen not to update the Silverlight Toolkit on their official web site. I downloaded the code, manually fixed their projects to compile on the Silverlight 5 beta so I didn’t have to deal with any more weird errors like the one I got with the TreeViewDragDropTarget. Here is a link to the compiled assemblies. I have made no c... Read More
-
Mango does not support in-browser Silverlight 4
Very disappointed to see that in browser Silverlight 4 is not supported in the Mango bits that were released yesterday. As you can see here, the Phone emulator is showing that Silverlight is not installed when I browsed to www.silverlight.net Read More
-
Making a Slider work nice with the Pivot [or Panorama] controls in Windows Phone 7
So in my first app, I had this great UI built that heavily utilized the Slider control since ComboBox is…well…not an option. Luckily slider works brilliantly for what I want it to do. So I built my app and had it pretty much done when I thought up some cool new features that I wanted to expose. I ultimately decided to use a Pivot control to navi... Read More
-
A Silverlight Developer’s Experience with Windows Phone 7
So I have been working with Windows Phone 7 since it was originally released this March and after early concerns about platform consistency I must say in the latest version I am using I am very, very impressed. Yeah the build increments the Silverlight 4 version number wreaking all kinds of havoc when I try and work on Desktop software that will... Read More
-
Epic Failure: IsolatedStorageException 'Initialization Failed'
So today, like any other day I opened up my laptop to work on my Silverlight 4 project that I have been working on for over a year and I start the debugger and the application errors out on this simple line of code. IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication(); Nothing can explain why this happens. I found a coup... Read More
-
Frutiger: Not just a TTF file in your Fonts Folder
While researching Windows Phone 7’s design metaphor “Metro”, I ran across this blog article which included as an attachment a Slide Show by Mark Simonson about Adrian Frutiger. Not being at all educated in typography I still found it immensely informative and interesting. I would highly recommend it. Read More
-
Silverlight 4: PRISM TabControlRegionAdapter ItemTemplate
The TabControlRegionAdapter is really awesome but what happens when you want to provide a simple way to change the content of the TabItem without completely overriding the entire ItemContainerStyle. In the version of PRISM that I bundle with the Avanade Silverlight Accelerator I modified the TabControlRegionAdapter to include a property for the ... Read More
-
Silverlight 4: IFRAME HtmlDocument is null
We are using an internal HTML-based single sign on page to authenticate users. In order to avoid reloading the Silverlight application into memory twice, we are rendering this login page inside of a dynamically generated IFRAME that Silverlight generates. This single sign on HTML page is located on a different server than our Silverlight applica... Read More
-
Using SketchFlow as tool during Analysis
I have been a fan of SketchFlow from the beginning. It’s one of those tools that is just ridiculously useful in so many ways. It truly is a game changer which is why we even see HTML-based software shops using it to rapidly prototype and capture feedback on their solutions. I wanted to highlight one of my favorite (and most notably unsung) feat... Read More
-
Insurance & Technology Webcast LIVE (Tomorrow)
I am going to be talking about Silverlight, RIA, and how my team is leveraging with enterprise applications in the insurance industry. This will be a LIVE webcast tomorrow at 10:30 AM CST. Please join us. Read More
-
.NET Framework vs. Silverlight Minimum System Requirements
I get this question a lot from the Why-Not-WPF-Crowd so I thought I would post it out there. .NET Framework 4.0 32-bit 64-bit Mac OS **Processor** 1 GHz 1 GHz N/A **RAM** 512 MB 512 MB N/A **Disk Space** 850 MB ... Read More
-
Aspect Oriented UI: Building an OS with Silverlight
Just got down presenting at Stir Trek 2010 and wanted to thank all who attended my presentation. Attached the sample code that I demonstrated in my presentation today. Download the code! Read More
-
Social Wendy Interview @ MIX’10
While out at MIX I sat down and spoke with Social Wendy about some of the work I am doing for my current client. http://vimeo.com/moogaloop.swf?clip_id=10451809&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1 Mix 10: Microsoft DPE: Mark Tinderholt Interviews with SocialWendy from Microsof... Read More
-
Thirsty Developer Podcast #90
Go check out Clark Sell (MSFT) and myself chatting while at MIX’10 about Silverlight on the Thirsty Developer Podcast. Show Notes Mark on Twitter: @markti Mark’s Blog Prism (CodePlex project site) MEF (CodePlex project site) Prism and MEF (David Hill’s WebLog) Download / Listen to the Show http://shows.thirstydeveloper.com/TD090.MP3 Read More
-
Toggling IsChecked property of a RadioButton using a custom behavior in Silverlight 4
I like to use Silverlight controls in interesting ways so that I can re-use their control logic to simplify my own implementations. Most controls at their core represent common scenarios such as selection, state, and enumerated content display. My scenario was I had a collection of fly out panels that I wanted to display one at a time. The radio... Read More
-
Building an OS with Silverlight+PRISM
So after a long time coming, I have finally fallen for PRISM. I am working with a customer to build a highly extensible presentation layer platform that will accomplish the following goals: Speed Time-to-Market Lower UI Development Costs We are achieving these goals by of course leveraging Silverlight as our development platform but more impor... Read More
-
HTML5 vs Silverlight?…really Google vs Microsoft
I don’t know why I respond to so many ill-informed bloggers posts about Silverlight…but I do. Something about their ill-inform-ed-ness just gets me all riled up. Dave Methvin’s article “Windows 7 Phone: Hail Mary” showed up on my Google Alerts for Silverlight. I was hoping to read an informed opinion about Microsoft’s mobile…err…sorry…”Phone” s... Read More
-
Entity Framework Missing in VS2010 RC?
After upgrading to VS2010 RC I no longer see Entity Framework in the Data sub-category. In its place is that friendly old LINQ to SQL. After installing the POCO template I am able to see it under the “Code” sub-category. However when I try to add it to a project I get this error message: All I have to say is: What the heck Microsoft? UPDATE:... Read More
-
Silverlight 4 Toolkit Drag & Drop
So I have been working with the Toolkit’s new Drag & Drop features. And design pattern aside, it’s pretty cool. I’m not sure why they had to implement the drag drop target as an actual set of controls vs attached behaviors but beggars can’t be choosers. <toolkit:ListBoxDragDropTarget AllowDrop="true" > <i:Interaction.... Read More
-
Experiencing an AddressFilter mismatch when deploying a service to Windows Azure
So I got my service all ready and working by setting the web role as the startup project. But when I wanted to go test my service in my local development fabric I kept getting the following error: DestinationUnreachable__V_V___xml_lang_en-USThe message with To 'http://mybox:82/Services/DataService.svc/binary' cannot be processed at the receiver... Read More
-
Silverlight + Citrix = Vindication
While combining Silverlight and Citrix together doesn’t take full advantage of the Silverlight platform in some organizations Citrix is more than just an option, it is the standard. Recently, at my client there was a lot of hub-bub about memory consumption of Silverlight spiraling out of control thus making performance planning impossible for Si... Read More
-
Silverlight & WCF Service Reference Weirdness
SOLVED: Custom tool error: Failed to generate code for the service reference ‘ServiceReference1’. Please check other error and warning messages for details. Added a service reference as usual. Got a single error message that referenced “other errors and warnings”. No other errors and warnings : No code was generated in my service reference. ... Read More
-
'Method Binding' in Silverlight 3 using Custom Behaviors
With all the religion being built around commanding. Does it seem overly complex to anybody else out there? I have an approach that I came up with to use a custom behavior to simply enable binding of various physical events to specific View Model operations that need to be invoked. I posted some code and sample project on how to get a Silverlig... Read More
-
PDC09 Laptop: Unboxed
Check out my new laptop. Downloading VS2010 so I can put the new Silverlight 4 bits on it tonight! Read More
-
Data Binding with Bing Maps
After much searching I couldn’t find a downloadable project that demonstrated how to use the MapItemsControl in the Silverlight Bing Maps Control. I thought this was a little strange. The CHM file that came with the SDK mentions the MapItemsControl as a way to enable data-binding on the map. The Bing Maps Silverlight Interactive SDK is helpful ... Read More
-
Columbus Dogfood Conference 2009
Thanks to everyone who attended my presentations on “Expression Blend+SketchFlow” and “Silverlight: Beyond the Flying Shoe”. I sincerely hope you enjoyed them as much as I enjoyed giving them. I posted my decks and demo solutions on SkyDrive. Please feel free to reach out to me if you have any questions or want to talk more about Silverlight o... Read More
-
Columbus Dogfood Conference
Please join us for the 2nd Annual Dog Food Conference; sponsored by the partner community. We will have MS speakers, MS partners, ISVs, MS MVPs and community leads presenting over 40 topics. Around half of the speakers are community leads; and half are MS specialists. As seating is limited, we encourage you to knowledge share with your peers,... Read More
-
How does RIA stack up against its competitors?
I recently started thinking about quality factors for measuring a user interface, especially when comparing different technology platforms. UI Quality Factors: Richness Efficiency Cost Usability Flexibility Scalability Applications with Generated UIs Examples: MOSS, Cognos, Pega Pros: Cost Cons: Richness, Flexibility, Scala... Read More
-
Even Flash Developers Like Silverlight
Joey Devilla posted an interesting article about a Flash developer’s reflections upon delivering with Silverlight. It’s worth a read. Read More
-
Silverlight Toolkit Accordion Control: Layout Error Code 4008
So after much banging our heads against the wall we discovered that because our root visual was a ScrollViewer that contained a Content Control which we use to swap content in and out of we ran into this Layout Error Code due to a race condition within the ScrollViewer and the contained content. Lesson Learned: Don’t but an Accordion Control in... Read More
-
Bing: Silverlight in Action
I have another reason to love Bing. Check out this new visual search engine brought to you by…of course…Microsoft Silverlight. Read More
-
Multi-Page Document Generation with XPS Part I: The Problem
Here is a sample of the multi-page xps document generation code. I tried a wide variety of techniques, some more elegant than others. Method 1: Single Xps.DocumentWriter.Write(Visual) This approach is by far the most elegant and would be perfect if it actually worked as I expect it to. However, everything that I am seeing is that this will not... Read More
-
In Memory File Attachments to MailMessage
Encountered a problem when attaching file attachments to mail messages that are handled by a BizTalk orchistration. Our application basically had a dynamically generated PDF document that needed to be attached to an e-mail and sent to an intake center. The funny business started when we got a call that nobody was getting our PDFs. After further... Read More
-
Using Behaviors to Enhance Silverlight MVVM support
I really love Expression Blend now that we have version 3. I have been spending quite a bit of time in the prototyping tools and been thinking about ways I can get some of those goodies to integrate with real world solutions. One of the big pain points when implementing MVVM in Silverlight (and WPF for that matter) is you need to invoke some log... Read More
-
iPhone OS 3.0 = Sluggish Performance on the iPhone 3G
I excitedly downloaded and installed iPhone OS 3.0 and all was well in the world. Until about 3 days later, everything on my iPhone began to slow down. The animations that were once fluid and elegant were now choppy and rough. It might have been that I installed an iPhone settings profile which enables tethering with my laptop. Has anybody else... Read More
-
How to Staff a Silverlight RIA Project
In order to staff a Silverlight project its generally a good idea to fill three roles: UX Creative Technical UX is typically a front loaded activity that operates primarily during analyze and design and whose deliverables input into build. Creative gets brought in during design. Creative has two basic roles: Visual Designer and Intera... Read More
-
Merged Dictionaries Not Working in Silverlight 3 RTM?
So a big pain point for me is that all my resource dictionaries stopped working with the move to RTM. What boggles my mind is that I had it working in Silverlight Beta 1 but now it stopped working. I just want to reference a resource dictionary in a referenced assembly. Assembly name: ResourceTest.Content Resource Dictionary Path: ./Dictionar... Read More
-
What sets Application.Current?
So I have been hitting my head against a wall regarding the Application class in Silverlight. I have several XAP files deployed and I want to join them into a common solution. So I setup a web client downloader to pull down the XAP files, open them and activate some classes inside them. The problem that I am running into is if I activate an inst... Read More
-
Reusing XAML from Silverlight in WPF
Here is a trick you could use. Make sure your Silverlight Views and View Models are isolated within their own assembly that is easily referenceable by your WPF application. Add a reference to the Silverlight class library that houses the Views & View Models in the WPF application. Move the contents of the UserControl, “CustomerView” ... Read More
-
Silverlight + Windows Azure Speech
I was recently invited to speak at Ohio Dominican University located in Columbus, Ohio. My topic was leveraging Windows Azure and Silverlight technology to build next generation web applications. Read More
-
Silverlight @ Stackoverflow
Recently, I have been dedicating some of my spare cycles answering a few questions over at Stack Overflow. I really like this community as I think it takes a fresh look at developer communities. If Stack Overflow hasn’t made it on your list of places to go to find answers, go check it out today! Read More
-
RadioButtonListBox using the ListBox control in Silverlight
You always hear of Win and Web Forms developers complaining about the lack of controls in WPF and Silverlight. This can be attributed to the CISC vs. RISC paradigm shift of WPF. Simply by using this as the ItemContainerStyle of a ListBox your ListBox will magically turn into a RadioButtonListBox. The style provided by the ItemContainerStyle pr... Read More
-
Model-View-ViewModel: View Model Composition Approach
ViewModel composition is where you have multiple complex view parts that need to bind to their own ViewModel entity. The approach entails constructing a root ViewModel with properties for each child ViewModel. Then the root View is bound to the root View Model and each View (whether displayed or collapsed) is bound to the corresponding property ... Read More
-
Silverlight 3: Taking an application offline
One of the exciting new features of Silverlight 3 is the ability to take an application offline. In order to take advantage of this feature you must do three things: Establish Application’s Offline Identity. Detach the application. Handle when running offline. Step 1: Establish Application’s Offline Identity The application’s offline ... Read More
-
Silverlight to replace .NET
I am going to come out and say what a lot of us Silverlight junkies may have been thinking but too afraid to say. I think Silverlight will eventually eat its older, bigger brother and become the de facto enterprise platform. The case for Silverlight: Managed Code: Developers can write client side code in manage code. More Powerful Client-Side ... Read More
-
The WPF Umbrella: How WPF is driving Microsoft’s UI platforms
I get a lot of confusion from non-techie types about what WPF is versus Silverlight, Surface and the like. So after noticing myself right paragraph after paragraph, to person after person. I realized that the relationships between these technologies and products can be pretty easily visually representing. You might notice that something interes... Read More
-
Silverlight + Mac Pro = Heaven
Lately, I have been doing a lot of testing with Silverlight as the front end for various Microsoft products such as MOSS, CRM, Commerce Server and it has been great having the horse power and flexibility to run all these guys on one machine while being a single Control-Arrow away from a Mac desktop to conduct testing, graphics editing and conver... Read More
-
Silverlight Custom Panels Part III : Sine Panel
The next panel is one that has been done before but before I extend it in the next chapter I wanted to explain how the original panel worked. Basically we take the number of children we have and divide 360 degrees by that number. This gives us our angle increment which we then use to calculate our X position. The Y position is calculated by usin... Read More
-
Silverlight Custom Panels Part II : Fermat Spiral Panel
This next panel demonstrates that truly any mathematical algorithm can be leveraged to efficiently produce custom layout logic. In this case rather than using the boring old circular panel trick I thought I would pick a new algorithm to see what its affect was. I chose Fermat’s Spiral. Fermat’s spiral takes in two parameters: a radius and an ang... Read More
-
Silverlight Custom Panels Part I : Ellipse Panel
This is the first part of a multi-part panel series. One of the areas that I was so impressed with WPF and Silverlight was the power of the layout system. An element’s layout is truly decoupled from the visual rendering of elements and as WPF/Silverlight developers we wield full control over that through something called a Panel. A panel is res... Read More
-
WPF Data Binding Cheat Sheet
So as I was scouring the web for the best way to access a parent data context from within an ItemsControl Item Template. I found this fantastic cheat sheet for WPF binding. Of course it didn’t have exactly what I was looking for but it is a great reference. <Button Content="Move Up" Command="{Binding RelativeSource={RelativeSource... Read More
-
Silverlight: United States Map ListBox
Recently, one a Silverlight POC, my team built a Map Area Control. This control constructs a zoom-able, pan-able vector map of geo-political territories. The particular domain we used was the United States. We setup an XML Data File that contains the rendering instructions for each state such as X, Y, Width, Height and Path, then we used Linq—&g... Read More
-
Silverlight Model-View-ViewModel-Presenter
Terms Defined Model: C# Classes that model the business domain View: XAML Markup that contains declarative rendering instructions and mappings to a model. Presenter: C# Classes that contain imperative presentation logic and event targets. View Model: C# classes that model the visual domain M-V-P (em-vee-pee) Strengths: Provides clear separati... Read More
-
Do you need a table?
I have received a few questions recently about whether or not a Surface Table is actually necessary to build something worthwhile on the Surface platform. My answer: absolutely it is! For all the benefits of the Surface Simulator, all tools have their limits. While the Simulator may provide a pretty realistic reproduction of how the computer w... Read More
-
Donut Shape in WPF
Its true that you can do a lot of very interesting things with path manipulation inside Expression Blend but there is no way to programmatically do such combine operations. The output of a Blend path combination is a new path whose points are fixed. This means that any scaling transformations are going to cause loss of fidelity of your new shape... Read More
-
Silverlight 2: ComboBox Selection / Source Conflict
To reproduce: Bind the ItemsSource to a View Model property of type List, we’ll call it “EntityList” User selects an option from the ComboBox. Set EntityList to a new List Results: The next time UpdateLayout is called you will get a System.ArgumentException. System.ArgumentException: Value does not fall within the expected range. at ... Read More
-
Physics on Surface
While the ScatterView has some interesting effects that somewhat resemble the way things work in real life its missing a pretty big feature: you can’t bang stuff into each other! So I decided to solve that problem by wiring up a real physics engine to a Surface app. I used the WPF version of the Farseer Physics Engine and setup a simple soluti... Read More
-
Testing Surface Applications with the Surface Simulator
The Surface SDK comes with an awesome tool that is called the Surface Simulator. This tool allows you to test your applications that have been built with the Surface SDK. It even simulators multiple contact points when you plug multiple USB mice into your computer! Sweet! Right? Well, yes and no. After opening the Surface Simulator you will not... Read More
-
Surface Hospitality Demo
The hospitality and gaming industries are a perfect avenue for applications of Surface technology. I led a team of 3 developers and 2 designers who had zero Surface experience before the project to build a application that I think is not just smoke and mirrors (as a lot of Surface demos tend to be) but definitely potentially shippable software. ... Read More
-
Searching with Surface
Surface Computing offers some interesting challenges for software designers when trying to adapt even the most typical desktop or web usage scenarios onto the table. One such example is searching and filtering data. This may seem a silly topic of reflection as search on the desktop is so ubiquitous. However, the anatomy of a desktop search appli... Read More
-
Silverlight + Surface CONDG Presentation
A colleague of mine (Jason Kerns) and I spoke at last night’s CONDG event. It was a great time getting out there and sharing what is possible with Silverlight and Surface. Here are some pictures from the event: Read More
-
RE: Size Matters (when comparing Adobe Flex and Silverlight)
I just read a lovely article on RIA FLEX about how you could walk on water in Adobe Flex and how you would be stuck coding zillions of lines of code in Silverlight. The post had some quantitative data to support its claim, that data as follows: Some value object class: Adobe Flex: 19 lines Silverlight: 164 lines Some Data Entry Screen ... Read More
-
Is Surface Ready for the Workplace?
Surface Computing, unlike Desktop and Mobile, enables a new breed of user experiences. Social experiences. With a Surface Computer we can sit down, face-to-face, explore and analyze information to solve our business problems without the latency of electronic communication. For decades our business processes have revolved around the limitations ... Read More
-
Creating Business Applications with Silverlight...as easy as 1, 2, 3.
On my current project we are building an enterprise line of business application using Silverlight. What drew us to this platform was the lightweight framework that packed a serious punch when it came to developer productivity. Of course, we started very early on with Silverlight 2.0 Beta 1 (the first real release in my opinion) and overcame man... Read More
-
Migrating Apps from Silverlight Beta 1 to Beta 2
Here’s the process: Removed Windows.Controls.* from project ClientBin Added reference to System.Net so that WebClient would be recognized Changed accessibility for OnApplyTemplate from protected to public on all custom controls Changed PropertyChangedCallback to PropertyMetadata. Removed FontSize and FontFamily Dependency Properties ... Read More
-
Silverlight and the case of the Ginormous App.xaml
So I just fell in love…with the Visual State Manager in Silverlight 2.0 Beta 2. This thing is sweet. You can cleanly manage the visual appearance for various states. Not only does this tool make it ridiculously simple to create animations that alter the state it also provides a tool that makes it easy to review these states and how they look. ... Read More
-
Silverlight and the case of the Ginormous App.xaml
Many of you may have noticed that Microsoft did not include a DropDownList in the Beta 2 of Silverlight. So I thought I would take a stab at it. 1. The Parts Contract The first thing that you need to think about when creating a custom control is what are the visual elements that you need to expose to people that are going to reskin your contro... Read More
-
Silverlight and the case of the Ginormous App.xaml
So I am loving Silverlight 2.0 beta 1. Fantastic release. 1.1 got me to the stadium and 2.0 really knocked the ball out of the park. Coming from WPF, however, Silverlight can leave you…let’s say…unsatisfied. It’s the little things really, like being able to create BasedOn Styles or use Element Binding, that tend to make that little guy in my hea... Read More
-
BUG: Center DataGridCell Content in Silverlight
So I have been banging my head against a wall on this one. It appears that this is a bug. I am trying to apply a Horizontal Alignment of text within a given DataGridColumn’s cells. I am able to set the horizontal alginement on the Column Header to be Center but not on the individual elements. <Style x:Key="centeredCell" TargetType="swcd:Data... Read More
-
How to eliminate the RowHeader within a Silverlight DataGrid
I am not a huge fan of the default templates for the Silverlight Controls but, hey at least we have controls now right? I wanted to eliminate that bulky cell to the left of each row to allow for my DataGrid’s to be a little more concise. Below you will find a complete Style that will accomplish this. You can copy & paste & use in your S... Read More
-
'Freeze' that VisualBrush
So you can’t “freeze” a VisualBrush. But you can create an ImageBrush from a VisualBrush! Visual Brushes are great but sometimes you want to use exactly on the screen without it changing if you obscure it from view or apply render transformations! This is really handy for situations, say like a ScatterViewItem. I created a method that, given a ... Read More