24 Aug, 2018 - Continuing Technology Link Dumps

More Tech link dumps

23 Aug, 2018 - Random Link Dump

Some things in my Feedly that aren’t tech or space or food related, but I want to keep (and not just with a bookmark)

16 Jul, 2018 - Technical Link Dump

More Links, More Dump

Visual Studio Code Metrics – Guide on how to analyze your code via metrics in Visual Studio

How to Write Test Cases that don’t suck – A panel of answers from Professionals answering how to write good testing code

11 Jul, 2018 - Technical Link Dump

Again, more links I want to keep track of as I go through my saved Feedly RSS backlog:

ReFit, API interfaces – Nice blog post from Hanselman on a library for type safe APIs

.NET Architecture Guidance eBooks – Great resource from Microsoft

Crash Course in Async / Await pt 1 & 2 – Guide from Raymond Chen

Imposter Syndrome pt 1 & 2 – From Jon Skeet

Annnnd Imposter Syndrom p1 & 2 – From Scott Hanselman

Web Architecture 101 – Nice concise descriptions of a lot of the fundamental components of Web Architecture

JS Promises – Deep Dive into JS Promises

10 Jul, 2018 - Technical Link Dump

Some more links I want to keep track of as I go through my saved Feedly RSS backlog:

Visual Studio Debugging Tips – Microsoft blog explaining some VS debugging tools

How to be Awesome – Stack Overflow blog post on writing an interesting resume

Performance exercise (in C#) on ContainsToken – Stack Overflow employee who explains his entry in a benchmarking exercise (Longer post)

How Stack Overflow does Deployments (2016) – Stack Overflow employee explains their deployment process

.NET API versioning package – Nice little package for versioning APIs, As explained by Scott Hanselman

Benefits of Pair Programming – A nice succinct article on the benefits of Pair Programming

Wizards and Warriors – 5 pt blog series by Eric Lippert on OO Class design

10 Jun, 2018 - Technical Link Dump

I keep links in Feedly, the RSS feed reader I use, for months.  I’m going to move them to a post here to clear them out of Feedly.

Is C# a strongly typed or weakly typed language – Eric Lippert – A good explanation on the ambiguity of the terms “Strongly Typed” vs “Weakly Typed” and the more definitive terms “Statically Typed” vs “Dynamically Typed”.

DRY out your policies – Eric Lippert – A nice article on what actually constitutes repeating yourself in code

Identifying Code Quality from Source Code – A few points on how to demonstrate code quality from measurable metrics

C# Tools – List of various tools for C# development

HttpClientFactory in .NET Core 2.1 – Update usage pattern for consuming Web APIs

15 tips for performance tuning your website – Nice beginning list for what to look at to gain performance in your site

.NET Ecosystem Explanation – What are all the different flavours in .NET now (Core, Framework, Standard)

10 Jun, 2018 - Cooking Link Dump

Link dump from Feedly on recipes that I’ve wanted to try, but after months (or years) of never trying them I figure it’s time to move them to somewhere else.

Chicken Potato Chowder

Seared Scallops with Leek Risotto

Croque Madam

10 Jun, 2018 - Space Link Dump

Space link dump

Awesome Jupiter Photos

10 Jun, 2018 - Visual Studio 2017 Productivity Guide

 

http://aka.ms/vs2017guide

A guide from Microsoft for keyboard shortcuts and other productivity tools in Visual Studio 2017.

Ctrl-F12 & Shift-F12

I use F12 a lot to “Go to Definition”, but I always forget these short cuts for “Go to Implementation” and “Show All references”, two context menu items I click on regularly

Ctrl-T – Go to All

I was used to Eclipse’s shortcut for navigating to a type or file (Ctrl-T / Ctrl-R if I remember correctly), but I never found the same functionality in VS work as well.  I’ll have to try to remember to use this sometimes.

Refactoring

There are some useful refactorings that I always seem to do manually.  VS 2017 has utilities for various refactors including Null Checks, Extract Method, Generate Method / Constructor and some others.

Live Unit Testing

Once I get myself and my team more Testing focused, we should try out VS 2017’s Live Unit Testing feature.

 

A few neat items in the guide that could help my productivity.  I think the Live Unit Testing and the Refactor helpers would benefit me the most at this time.

11 Feb, 2018 - Continuing with Microservices pt. 3

Last two articles from that series on Microservices:

Choosing a Deployment Strategy

There are multiple patterns for deployment.  Monolith applications are usually deployed in their entirety to multiple hosts, but that does not have to be the case for Microservices.

The Mutliple Services per Host pattern is exactly what it sounds like, you deploy an instance of multiple services to the same host / vm.  Whether they be in the same container / web server or running as separate processes.  Some benefits is that you can share resources of the underlying server / host.  Deployment can be fast and easy.  Some draw backs are that you are coupling services together by their resources.  One service could hog all the resources, starving the other services.

An alternative pattern is One Service per Host. Each deployed service instance has it’s own host / server and set of resources. There are two flavours of this, Service Instance per VM & Service Instance per container.  (And deploying items to the cloud in serverless offerings gives us another flavour with Azure WebApps or AWS Beanstalk or FaaS).  Service Instance per VM uses VM images to package up the VM which is then instantiated as many times as you need.  Packaging your services into VMs gives you a reusable template that you can deploy over and over, which can also take advantage of other modern cloud benefits such as load balancing and auto scaling.  Deploying becomes reliable.  Downsides are that you have the overhead of an entire VM per service instance, including the OS.  That’s where per container patterns can help, as they package a smaller footprint that can be deployed with fewer resources. Some downsides to Containers are the newness of the technology.  It’s rapidily becoming more mature, but they’ve only been around for a couple of years. If you don’t use a managed container service, you are also responsible for the container infrastructure and underlying OS / VM.

Refactoring a Monolith Application

When refactoring a monolith application to Microservices, it’s best to break off pieces of the application into services gradually, rather than rewriting the entire application at once.  You can shrink the functionality in the monolith by running Microservices along side, shifting more and more features to services until the monolith disappears, or becomes one of many Microservices.

When you have a monolith and Microservices you will need both a router (to route incoming traffic to the appropriate code) and some glue code to get both working together.

An initial split of your Monolith can naturally happen between the different layers, specifically the presentation and the business & data access layers.

When you begin to break things up further, start small, and start with the low hanging fruit to get more familiar with Microservices and it’s quirks.  Modules and functionality that change frequency are also good candidates for breaking off early, as it frees you from having to build and deploy the whole app for the frequent changes.

 

That’s the end of the Microservices article series.  I feel like I got a good glimpse into the elements that a Microservices architecture encompass. I wish that I had a code base to work with / tutor to help guide me through a real world example, but I feel more confident in having discussions about this architecture type.  I think a lot of the projects I have at work right now are a bit too small to consider converting (although, we do have semblances of Microservices in some sites).  Glad I read through them all.