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.

This flexibility comes with a cost: when your job is to develop and/or maintain multiple projects, you are now required to manage specific OS and framework versions in order to promote consistency within the broader development team. Can you imagine having to upgrade/downgrade Node or dotnet versions between projects?

Enter: Docker. Docker allows you to manage OS and framework versions within images, and those images run in containers that are completely independent of each other and the host OS. What that means for you is that you can run a Node 6.x container next to a Node 8.10.0 (current LTS) without needing to even install Node on your host. I'm going to show you not only how to load your code into containers that support specific frameworks, but also how to connect those containers to your host's file system to allow hot reload -- meaning, whenever you update the code on your file system, the container automatically restarts with the latest version. How cool is that??

Read more

Dev standards: Source control guidelines

VSTS Git Source Control

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

Internet of Things: Enterprise Edition

IoT Azure Scale

September 08, 2017

The Internet of Things (IoT) is upon us whether you have noticed it or not – in fact, not only is Gartner predicting 8.4B (yes, that's B for Billion) devices to be in active use by the end of this year, but the rate of deployment is accelerating. By 2020, Gartner has estimated 20.4B connected devices. There's no doubt that those numbers are impressive, but what does it mean?

Read more

Running ASP.NET 4.6 web apps on both Windows and macOS

.NET Mac VS 2017

August 04, 2017

The .NET world is hot on .NET Core right now, and why not? As the next iteration of the framework, it also allows developers more freedom to use their device and hosting platform of choice. While I use a PC at work, I have a Mac at home and love the idea of collaborating on projects from either device. .NET Core is the natural, easy way to do that.

But wait -- what about legacy applications? Not everyone can upgrade yet, given the expense of refactoring an entire application. This is especially true if you don't expect ROI from a migration.  Good news: Visual Studio for Mac has a solution for you. The debugger uses Mono now, which means you can fire up a framework 4.6 application and debug as if you were on your Windows machine.

Read more

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

Angular Azure Azure AD SPA .NET Core

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

.NET Core Angular SPA

June 08, 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

.NET Core Configuration

June 07, 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

Azure SSL Let's Encrypt PaaS Umbraco

April 30, 2017

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

Azure Azure Functions Deployment

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.

Read more

Achieving Enterprise Scale with Azure Functions

Azure Azure Functions

November 12, 2016

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

Azure Azure WebJobs

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

Graph Databases Neo4j

March 09, 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.

Read more

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

Windows Universal Apps

March 07, 2015

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

Windows Universal Apps

March 06, 2015

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

Windows Universal Apps

March 05, 2015

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