Leaving features behind

August 9, 2019

Leaving features behind

Every project has constraints; be aware of what they are, and be relentless and practical in your approach. Don’t make too many assumptions on your customers’ behalf by overloading your product with your favorite features.

Read More

Why isn't Azure App Service Deploy copying files to my Web App's wwwroot?

February 20, 2019

_config.yml

I was recently working with a collegue to deploy a Sitecore app to Azure via Pipelines. The release was running successfully, but the deployed files didn’t seem to be overlaying the required, pre-loaded Sitecore files. When we viewed /site/wwwroot from Kudu, we were seeing only the files from the build artifacts; when we viewed the same directory from FTP, we were seeing only the Sitecore files. What gives?

Read More

Accessing Azure Artifacts from a docker container in a Pipelines build

January 17, 2019

_config.yml

In my previous post I talked about how our team is publishing NuGet packages using Azure Pipelines to a DevOps Artifacts feed. Now it’s time to consume those packages. There are plenty of examples on how to connect to a feed in Build, but our case is a bit different because our applications are containerized. The purpose of this post is to share specifically how we authorize access to Artifacts from a docker build context in an Azure DevOps Build.

Read More

Using Azure Pipelines to publish NuGet packages to a private Artifacts feed

January 16, 2019

_config.yml

My team is building a suite of small ASP.NET Core WebAPI projects for one of our clients - call it dabbling in microservices - and we have applied a few standards (e.g., implementing Swagger and a X-Correlation-ID header) across all of the apps. Instead of repeating the same configuration code many times, we have decided to use Azure Artifacts to manage a common NuGet package across all implementations. This post explains how we automated publishing of one of our packages using Azure Pipelines.

Read More

Deploying Web Apps for Containers with Azure Pipelines

January 4, 2019

_config.yml

I am currently working on a project where we have elected to use .NET Core and have been asked to allow deployment flexibility. The platform versatility of .NET Core allows us the option to containerize our apps, which is exactly what we’re doing. But instead of diving into the deep end of what could eventually become Kubernetes right off the bat, we want to keep things simple. In this case, we’ve chosen to use Azure Web Apps for Containers. This post walks through our code management process and continuous delivery of infrastructure and containers.

Read More

The basics of Helm

May 30, 2018

What is Helm?

Helm calls itself the package manager for Kubernetes. That’s true, but I think I can help simplify: Helm provides a way to package multiple Kubernetes resource templates that can be released, upgraded and rolled back together. It allows you to define a much larger and cohesive atomic deployment unit as a collection of multiple resources and dependencies.

Read More

Lightweight images with multi-stage builds in Docker

May 10, 2018

Size matters. When you’re shipping code in containers, it’s important to remember that your container images are pulled on every node within your Swarm or Kubernetes clusters. This means that as you scale out your cluster nodes or schedule workloads on new nodes in your cluster, the size of your image becomes non-trivial for cold start time.

It’s a best practice to use containers to resolve dependencies (dotnet restore, npm install) and build (dotnet build, webpack) code because it ensures a consistent environment where the team’s specific version of Node.js becomes less important. Unfortunately, this also requires that the containers in which we build code must also have build dependencies installed, such as the .NET Core SDK or Node.js. Since you don’t need all those dependencies in production, how can you slim down your images?

Read More

Creating portable development environments with Docker

March 26, 2018

The rate of change in software development tools has never been faster, which has allowed developers to continue to demand increased flexibility in how they deliver. Gone are the days of an entire development team sharing consistent hardware (PC vs Mac), and I have seen a massive uptick in once-Windows-only devs moving to MacOS. Enabling this change are the framework giants like Microsoft, who have been moving toward OS-agnostic frameworks - for example, .NET Core running on Windows, MacOS and Linux.

Read More

Dev standards: Source control guidelines

November 17, 2017

As technology companies continue to grow and project teams expand to deliver larger projects, it is important to reflect and make sure your organization’s foundation skills are strong. By no means would I say that learning Git will solve all of your problems, but I think it is fair to say that there are a few basic guidelines out there that keep your projects hovering at least closer to the “pit of success.”

These are guidelines that serve to document basic process around how I deliver all technical phases of our projects. While this process serves as the default, there are potentially reasons to change based on specific needs. If you do not follow this process, please be prepared to defend your decision(s) with your leadership.

Read More

Reference architecture: Angular 4 and Web API on .NET Core 2.0 Preview 1 with Azure AD authentication

June 13, 2017

The more time I spend in the tech community and market these days, the more it has become clear that the appetite for newer, more cutting-edge technologies has gone up. Lately, the new kids on the block that we’re tending to build more apps in right now are .NET Core 2.0 and Angular 4, and since we typically build internal applications, I’m seeing Azure AD used a lot for authentication. Since I am seeing this type of application so often, I thought it would be a good idea to build a reference architecture to tie it all together as a quickstart.

Read More

Hosting Angular 4 in a .NET Core 2.0 Preview 1 application

June 8, 2017

For reasons I’ll detail in a later post, I prefer to host my SPA and API applications separately. Combine that with the fact that I prefer to stay on the Microsoft stack and it raises the question: what is the best hosting environment for my Angular (or any SPA) application?

If you’re from the JavaScript/Node side of town, the answer is easy: Node is a great because it’s lightweight and configuration is very simple. Thankfully these days Microsoft has a real competitor in .NET Core – you get all the benefits of a serious application without the bloat that comes with a ASP.NET 4.x application. So now if I’ve bought in and decided on .NET Core, how do I actually serve my application? Let’s do a little bit of configuration to use the /wwwroot directory that comes with .NET Core applications.

Read More

Including custom configuration files in .NET Core 2.0 Preview 1

June 7, 2017

I’m doing some modernizing of legacy apps and decided to use it as an opportunity to play with some new technologies - in this case, we’re talking about .NET Core 2.0 Preview 1. While building a reference architecture to talk about on Github, I ran into a snag while trying to figure out how to hide my Azure AD credentials. I want to include a config section, but don’t want to commit it with the rest of my appsettings.json file.

Read More

Implementing SSL via Let's Encrypt on an Umbraco Azure Web App

April 30, 2017

_config.yml

Why SSL?

I’m a big believer in SSL, especially lately - privacy on the internet has never been such a divisive topic. Like most people who build and own a blog site like this, I find it hard to stomach spending a few hundred bucks a year to secure a site that doesn’t have any forms or collect any kind of information from users. When it comes down to it, though, I love seeing the big green padlock in Chrome from SSL sites, and I’ll also take the Google SEO boost to boot.

Read More

Source control, development and deployment of Azure Functions using Visual Studio

November 13, 2016

In my last post on Achieving Enterprise Scale with Azure Functions, I gave a high-level overview why and when to use Azure Functions and some basics around how they work. As a continuation, I’d like to dive a little deeper and share some things I’ve learned around development process from within Visual Studio. Throughout this post, I will be referencing an example implementation I created on GitHub if you want to follow along.

Read More

Achieving Enterprise Scale with Azure Functions

November 12, 2016

_config.yml

A few months ago, I posted about creating a decoupled, scalable web store order fulfillment app using an Azure Web App (as a webhook), WebJobs and storage queues. This is great for ensuring that orders don’t overwhelm your infrastructure, but it makes an assumption that queue consumers will handle the peak traffic over time and a single instance of these WebJobs is enough to handle all of your orders.

But what about when that’s not enough? In enterprise solutions with enough throughput, we need a way to keep up with demand. In this post, I will talk about the basics of Azure Functions and will follow up with a subsequent post that talks more about development, source control and deployment options.

Read More

Creating a scalable web store order fulfillment app powered by Azure

September 22, 2016

Modern technology as we know it has become analogous to automation, and its distance from the consumer is decreasing. What was once reserved for production lines and the like has quickly expanded to handle everyday transactional workloads. I recently had such a challenge from a client wanting to decrease the time and effort to notify their warehouse of completed orders on their Shopify eCommerce platform.

Read More

Takeaways from the 2016 Neo4j GraphDays: Chicago Conference

March 9, 2016

As a developer, my favorite part of my job is that I get (and am encouraged) to play around with all kinds of new technologies to test for instances where we could add a new tool to Rightpoint’s ever-expanding toolbox. One of my latest finds is called Neo4j, an industry leader in the Graph Database space. While technically the product has been around for nine years, it seems that they’re just starting to become broadly relevant within the mainstream technology market.

It has been a while since I started tinkering with Neo4j, and today I got the opportunity to attend a Neo4j-sponsored Graph Database conference in Chicago. I would like to share a few learnings for those who want a TL;D[Attend] of the action. Firstly, let’s dive into a bit of quick context.

Read More

Windows Universal App Series - Extending XAML Controls to Bind with Prism 5.0

March 7, 2015

Introduction

While I was completing a project for a client of mine, I was working with a ListView that we wanted to create interactions on the screen, such as displaying details of the selected item in bound controls. We were using Prism, however, which naturally (and very deliberately) blocks the developer from making concrete references to Views from ViewModels. The issue that creates is that you cannot subscribe to events generated from a control like a ListView, which is exactly what we needed to do.

Read More

Windows Universal App Series – Implementing the CQRS Pattern with a Segregated Data Model to Persist & Sync Offline Data to Azure DB via Azure Mobile Services

March 6, 2015

Introduction

In the last post in my Windows Universal App Series, I talked about building a Line of Business app for an amazing client of ours that is used for on-site inventory management with their respective client(s). One of the major challenges that our client faced was that when they went on-site, it’s typically in large buildings whose structures aren’t conducive to 3G/4G signal, and therefore wanted an application that would allow their reps to download data to their devices before beginning their work – while they are outside and had signal. They wanted the device to queue all changes and synchronize at the rep’s request once finishing their service call.

Read More

Windows Universal App Series - Creating a Windows Universal App with Prism 5.0 & SQLite for Offline Persistence

March 5, 2015

Introduction

I recently had the pleasure of working with a client who wanted to upgrade the platform of their Windows Mobile 6.5 Line of Business, inventory management app to something a bit more recent and cutting-edge. Their goal was to modernize their devices (the old device was a Motorola ES400), and update their software to something significantly more maintainable, scalable and extensible.

Read More