Brad Birney, CPA
& Software Developer

.NET

post

With the backing of Microsoft, the .NET Ecosystem has a lot of going for it. It works seamlessly with tools that can do anything from migrating a database to building a web app. And with the release of .NET core and Blazor, things are getting a whole lot more exciting.

C#

Most of my work has been centered around C#. I like that it's not only a friendly language to use, but it has a strong community of users and a strong backing by Microsoft. It's helpful to have C#'s frameworks and common architectures such as MVC because it allows me to pick up someone else's code and understand the architecture without putting in too much work.

I've built websites in ASP.Net Core/Framework doing both the MVC route, and the SPA route with React and Blazor. ASP.Net provides an excellent and efficient backend. It has great tools to pull data from the database, and quickly start working with them in the application layer. It offers many tools for authorization using managed identities, testing within VS, connecting to cloud services for anything from storage to secrets, and eliminating the need for writing additional SQL queries outside of the application logic. It has great patterns for creating API endpoints that are de-coupled from the logic in the application layer while giving us the capability to share the object data structure between the server app and client apps such as Blazor preventing duplication and data errors.

I can also appreciate the simplicity of C# through the .Net Console apps or Azure Functions. It's easy to trigger some code using task scheduler, and have it talk to whatever service needs to run on that schedule. C# integrates nicely with Azure Services such as Azure Functions making it easy to bind to many different triggers out of the box. I can connect to an Azure Table, SQL Database, or Blob and Azure takes care of most of the heavy lifting. Triggering Azure functions from a Queue, Event Grid, Timer, or HTTP request is as easy as adding a binding. Ultimately, it allows for greater flexibility on how, when, and where the app is run.

Azure

One of my favorite things about the .Net environment is that it's a major contender in cloud infrastructure. Azure's IAAS solutions have helped me remove a large amount of IT overhead that is needed to deploy our applications. By using Bicep/ARM templates I'm able to deploy infrastructure for a new app in a matter of seconds rather than weeks. Deploying infrastructure in code prevents costly little errors from holding up projects and allows changes in infrastructure to be deployed across several apps very easily. It offers change tracking that is enormously valuable for peer review, and tracking changes over the years. As technology progresses, I now have templates I can reference to remind myself how I had previously set up our environment rather than futzing about trying to re-invent the wheel every time.

The cool thing about Azure is it means that a developer like me is now capable of managing or at least understanding the FULL stack when things are deployed entirely on the cloud. Azure has moved much of IAAS up a level of abstraction that is now accessible to developers who can help take the burden off of the Plat Ops and Net Ops guys. I can now be sure that when a new feature is added, that the appropriate infrastructure such as logging, eventing, or networking gets deployed alongside it.

Sometimes Azure's solutions seem to differ drastically from the on-prem solutions such as AD working entirely differently from AAD. The complexity of moving on-prem solutions to the cloud and maintaining both at the same time can seem daunting. But, having developers available to manage some of the added complexity of the cloud solution can go a long way in ensuring a smooth transition.

My final observation about Azure is that it excels at offering SAAS and PAAS services that go above and beyond what other cloud providers offer all under one roof. Most businesses are familiar with using Microsoft's products. Many businesses use products like Exchange, office, or even Dynamics 365 to handle everything from collaboration to finance. Microsoft is already a leader in providing SAAS solutions and has moved much of that effort onto providing great development experiences. The tooling in VS, ADO, and the Azure portal can easily be integrated. I've found the user experience and documentation for Azure services to be extremely helpful. And i've watched as their compute, analytics, and data services have become easier and easier to use.

PowerShell

Although not particularly useful as a development language, I've found Powershell to be a very handy tool in my arsenal. Being able to quickly automate time consuming tasks, or quickly scripting something to run on a schedule has proven to be helpful on enough occasions that I figured it deserved an honorable mention.

VB

I'll admit that VB is not my favorite language. Not even close. But since I've worked with it more than I'd care to admit, I'll mention it here.

© 2020 — Designed & developed in React by Bradley Birney