RSSAmplifier

Blog

Jack Histon

Recent content on Jack Histon

jackhiston.comRSS feed ↗21 posts

Latest posts

About Me

Background I started my career as an intern C# developer, and ever since I have been hooked on all that is software. I have developed software such as security applications, eCommerce systems, data integration platforms, and much more.

Ideas of an Imposter

The Imposter Syndrome is like the fog of war: The term seeks to capture the uncertainty regarding one’s own capability, adversary capability, and adversary intent during an engagement, operation, or campaign. This definition is in regards to military operations. However, the definition can be applied to the imposter syndrome as well. Like most psychological states, it makes us see life…

Automating The Arrange Phase With AutoFixture

In a previous article, we refactored a unit test in two ways. The builder and fixture patterns encapsulated an object’s creation, which simplified the arrange phase of a unit test. These two patterns produced a lot of boiler-plate code. It would be nice to never have to create an arrange phase in the first place. AutoFixture tries to produce unit tests with no arrange phase. As the…

Extending The Razor View Engine With View Location Expanders

In a previous post, I dived into view results, and how the razor view engine executes a razor view. Part of the post discussed a feature called view location expanders. An expander does what its name describes. It expands on locating a view within your application, that is, a way to change how your .cshtml files are located. View Localisation A good example of a view location expander, is the…

MSBuild Maintenance Made Easy With Shared Properties

The New MSBuild MSBuild is the build engine for .NET and Visual Studio. It is written in such a way to be composable, allowing you to combine project files. If you have ever used Visual Studio, then you have indirectly used MSBuild. When you open Visual Studio, it is using MSBuild to restore, build, and manage your projects. Recently, a new version of MSBuild has hit the streets. This came out…

ASP.NET Core 2.0 - Repository Overview: Action Results

In This Series ASP.NET Core MVC - Repository Overview: Model Binding ASP.NET MVC Core - Repository Overview: Value Providers ASP.NET Core 2.0 - Repository Overview: Action Discovery ASP.NET Core 2.0 - Repository Overview: Action Selection ASP.NET Core 2.0 - Repository Overview: Razor Pages ASP.NET Core 2.0 - Repository Overview: Action Results Contents Introduction What is the View Result…

2 Simple Ways To Improve Your Unit Tests

Over the past 20 years, testing has become a cornerstone of software development. To turn software development into a true profession, we need to create robust, secure, safe, and efficient systems. The simplest tool in our toolbox starts us on this road: the unit test. Like an accountant, the unit test is a fantastic way for us to perform double-entry bookkeeping. The unit test double checks our…

How to Create Bogus Data in C#

Programmers are lazy. We love tools that automate our lives. Why not automate data? A time-consuming but necessary part of a programmers job is seeding data into a database. Demonstrations, load performance, styling, testing, all need a way to generate data. A rudimentary way of doing this is by hand. Spending days, sometimes weeks, inputting data into a system until it represents a realistic…

Trust Your Data, Not Your Mind

When you add decor to your home, previous decor can look worse. You paint one wall a bright blue, but at the same time, the shine of the wall next to it dulls a little. Your codebase is a never-ending cycle of refactoring. Small improvements to one part, makes you see small improvements for another part. Shining a light on a piece of your code, shines problems on code around it.

ASP.NET Core 2.0 - Repository Overview: Razor Pages

Previously in this Series ASP.NET Core MVC - Repository Overview: Model Binding ASP.NET MVC Core - Repository Overview: Value Providers ASP.NET Core 2.0 - Repository Overview: Action Discovery ASP.NET Core 2.0 - Repository Overview: Action Selection Contents Introduction What is Razor Pages? How to setup Razor Pages Creating your first Razor Page The RazorProjectPageRouteModelProvider Class Razor…

Making a Master Puppeteer

There are many ways to test a program. From starting miniscule with unit testing, to more grandiose UI testing. Puppeteer falls firmly in the latter category. Puppeteer advertises itself as a Node library which provides a high-level API to control headless Chrome over the DevTools Protocol That is a lot of words. Puppeteer is a walking advertisement of the true potential the Chrome DevTools…

ASP.NET Core 2.0 - Repository Overview: Action Selection

Previously in this Series ASP.NET Core MVC - Repository Overview: Model Binding ASP.NET MVC Core - Repository Overview: Value Providers ASP.NET Core 2.0 - Repository Overview: Action Discovery Contents Introduction The ActionSelector Class Dependencies The Route Value Cache Conventional Routing A Note on Cache Efficiency Attribute Routing Attribute Routing with Route Templates Selecting the Best…

The Wonderful World of Webpack

Webpack is a JavaScript module bundler, or so the blurb goes. This is an apt name for it. However, what I would like to do in this article, is to expand on the true power of Webpack. This article will not explain how to use Webpack. Rather, explain the reasoning behind it, and what makes it more special than just a bundler. Webpack is still a Bundler One of the main reasons for tools like Webpack…

ASP.NET Core 2.0 - Repository Overview: Action Discovery

Previously in this Series ASP.NET Core MVC - Repository Overview: Model Binding ASP.NET MVC Core - Repository Overview: Value Providers Contents Introduction Registering Actions Finding Controller Actions The Controller Feature Provider The Default Application Model Provider Customising Controller Action Discovery Finding Razor Pages The Razor Project PageRouteModel Provider The Compiled…

A type-safe REST

In the current age of microservices, we have communication between different processes across a wide variety of hosts and platforms. At other times, we integrate with 3rd party libraries, downloading information and metadata that may be necessary for our current application. On some of those occasions, we need to interact with a REST API. Wouldn’t it be nice if when interacting with REST…

ASP.NET MVC Core – Repository Overview: Value Providers

Value providers are part of the model binding ecosystem, and so if you want a more general overview, please see the first post within this series. Contents Introduction What is a value provider? How it all works MvcOptions Value Provider Factories The Controller Context The Composite Value Provider Binding Sources Why? Creating your own Value Provider Summary Introduction This is the second…

Docker Compose for a Simpler Life

Docker is a tool that allows you to create containers on the fly, allowing you to easily deploy applications on any environment. This blog post won’t give you the in’s and out’s of all that is Docker. Docker is too big to delve into as a whole in one blog post. This post will discuss docker-compose; a tool that runs and synchronises containers simultaneously. I am a windows man…

Sharing Controller and Views in ASP.NET Core

This post will describe how to share controllers and views across ASP.NET Core applications, shared via an ASP.NET Core library. Best practices within the model-view-controller (MVC) world dictate that we should keep our controllers as thin as possible. Controllers should be extracted away from business logic, operational logic, and any sort of decision making. The only real thing controllers…

The Interface Segregation Principle

Why is the single responsibility principle (SRP) so hard to define? From my experience, SRP stumbles people much more than any other SOLID principle. I thought back to my own struggles with the five principles, and thought it would be better to explain SOLID in a different way; or rather, a different order. What is an interface? a point where two systems, subjects, organizations, etc. meet and…

Using IConfigureOptions<T>

The configuration API in ASP.NET core is now a first-class citizen. It is now easier than ever to configure applications within a .NET application. If you visit the main documentation page Configuration in ASP.NET Core it will give you detailed instructions on how to use it. One part of the documentation discusses the IOptions snapshot. This allows you to take a configuration file - typically json…

What is DevOps?

&ldquo;Are you a software developer that spends hours setting up your development environment? Do you hate the fact that it works on your box but not theirs? Do you have to spend hours setting up other people&rsquo;s environments to work with you? Does this sound like your job? DON&rsquo;T FRET! Docker is here!&rdquo; - Mr. Joe Sales for all things Docker. This is what software development looks…