Skip to content
  1. We help small teams achieve big things.
  2. Our Technical Fellow just became a Microsoft MVP!
  3. We run the Azure Weekly newsletter.
  4. We just won 2 awards.
  5. We just published Programming C# 8.0 book.
  6. We run the Power BI Weekly newsletter.
  7. Our NDC London 2020 is now available online!
  8. We are school STEM ambassadors.
5 tips for an awesome Windows Terminal experience

5 tips for an awesome Windows Terminal experience

Mike Larah

Improve the already-great Windows Terminal experience by following these tips for customizing the application to work best for you.
Using complex objects in BDD Scenarios with SpecFlow

Using complex objects in BDD Scenarios with SpecFlow

Jonathan George

During our projects at endjin, we often find ourselves evangelising Behaviour Driven Development, and specifically SpecFlow. In this post we look at a technique for defining complex test data objects in your Gherkin feature files, which we've also made available via the endjin-sponsored Corvus.NET project.
C# teamwork: share project config with common Nuget Build Asset Packages

C# teamwork: share project config with common Nuget Build Asset Packages

Ian Griffiths

See how to manage consistent default configuration across all your .NET projects by using NuGet build assets.
Introducing Ais.Net - High-Performance Parsing in C#

Introducing Ais.Net - High-Performance Parsing in C#

Ian Griffiths

As part of our work with OceanMind, endjin wrote a high performance .NET AIS parser. AIS (Automatic Identification System) is how commercial ships report location information. This blog describes the parser, and the performance techniques it uses.
Setting up Porter on Windows

Setting up Porter on Windows

Mike Larah

Porter is a tool based on the CNAB (Cloud Native Application Bundle) spec. It can be used for building, managing, and installing application bundles. This guide will walk you through how to get set up with Porter on Windows.
An Overview of the Azure CNAB Quickstarts Library

An Overview of the Azure CNAB Quickstarts Library

Howard van Rooijen

The Azure CNAB Quickstarts Library helps you get up and running with CNAB and Porter. We've built quickstarts covering solutions like WordPress, Ghost, Mattermost, and data platforms like Apache Airflow, SQL Server AlwaysOn clusters and Kubernetes features like an nginx ingress controller and an Azure AD enabled OAuth2 Proxy. We've condensed all our learnings from the past 9 months of working on the project and turned them into a 10 minute video which explains all the key concepts. We hope this video helps accelerate your own CNAB & Porter epiphanies!
Introducing the Azure CNAB Quickstarts Library

Introducing the Azure CNAB Quickstarts Library

Mike Larah

In partnership with Microsoft, we have released Azure CNAB Quickstarts Library on GitHub. CNAB (Cloud-Native Application Bundle) is a new specification designed for facilitating the packaging, installation, upgrading and uninstallation of cloud-native solutions in the cloud, on-premise or on the edge. We've created a number of quickstarts covering Apache Airflow, Azure Kubernetes Service, Ghost, Kubeflow, SQL Server Always On and Wordpress to help demonstrate the power of CNAB and Porter.
NDC London Day 1

NDC London Day 1

Ian Griffiths

In this post, Ian describes some of the highlights from the NDC London conference

Survey: Expression Trees use cases in .NET

Howard van Rooijen

Expression Trees are one of .NET's super powers; but they are hugely overlooked and misunderstood. They can be used for on-the-fly code generation; building DSLs, and producing high performance computational algorithms. I'm trying to gather evidence about how you are using them, to make a case for future investments in the Expression Tree subsystem in .NET Core / .NET 5.0
Increasing performance via low memory allocation in C#

Increasing performance via low memory allocation in C#

Carmel Eve

We worked on a project recently which required us to build a highly performant system for processing vast quantities of messages in real time. We had made the decision to run this processing using Azure Functions with C#. This post runs through some of the techniques we used for writing highly performant, low allocation code, including data streaming, list preallocation and the relatively new C# feature: Span<T>.
Using Databricks Notebooks to run an ETL process

Using Databricks Notebooks to run an ETL process

Carmel Eve

Here at endjin we've done a lot of work around data analysis and ETL. As part of this we have done some work with Databricks Notebooks on Microsoft Azure. Notebooks can be used for complex and powerful data analysis using Spark. Spark is a "unified analytics engine for big data and machine learning". It allows you to run data analysis workloads, and can be accessed via many APIs. This means that you can build up data processes and models using a language you feel comfortable with. They can also be run as an activity in a ADF pipeline, and combined with Mapping Data Flows to build up a complex ETL process which can be run via ADF.
Endjin is a Snowflake Partner

Endjin is a Snowflake Partner

Howard van Rooijen

Using Step Argument Tranformations in SpecFlow to pass null values into scenarios

Using Step Argument Tranformations in SpecFlow to pass null values into scenarios

Ed Freeman

A good test suite should validate behaviour across your code base, testing as many edge cases as reasonably possible. A common "edge case", is passing a null value when a value isn't expected to be null. In Specflow, all values used in scenario examples are treated as strings, so it isn't possible (by default) to pass in a null value. However, using "Step Argument Transformations", we can achieve the desired behaviour. Read this blog to learn how this can be implemented.
A tentative step into the worlds of asymmetric encryption and Blockchain

A tentative step into the worlds of asymmetric encryption and Blockchain

Carmel Eve

Here is a quick dive into encryption and blockchain. This post goes into the ideas behind hashing, and how these translate into encrypted messaging techniques. It also delves blockchain and how signing and versioning allow for consistent and immutable transactions. Definitely worth a read if you're interested in these concepts!
OpenAPI Document Converters for Visual Studio 2017

OpenAPI Document Converters for Visual Studio 2017

Howard van Rooijen

OpenAPI code generators for Visual Studio

OpenAPI code generators for Visual Studio

Howard van Rooijen

How to use Power BI Embedded with AspNetCore

How to use Power BI Embedded with AspNetCore

Matthew Adams

Microsoft Azure Most Valuable Professional 2016

Microsoft Azure Most Valuable Professional 2016

Howard van Rooijen

It is with a huge amount of honour to announce that endjin co-founder, Howard van Rooijen, has been awarded an Azure MVP award for his contributions to the Azure ecosystem.
TeamCity MetaRunner for creating Release Annotations in Azure Application Insights

TeamCity MetaRunner for creating Release Annotations in Azure Application Insights

Howard van Rooijen

Improve your Windows Command Prompt and PowerShell experience with ConEmu

Mike Larah

Mike Larah shares his tips for how to best customize ConEmu to improve your terminal experience for Windows Command Prompy and PowerShell
An experiment to automatically detect API breaking changes in .NET assemblies and suggest a Semantic Version number

An experiment to automatically detect API breaking changes in .NET assemblies and suggest a Semantic Version number

Howard van Rooijen

ILMerge Meta-Runner for TeamCity

ILMerge Meta-Runner for TeamCity

Howard van Rooijen

Endjin.Licensing now supports SHA256

Endjin.Licensing now supports SHA256

Howard van Rooijen

CucumberJS Visual Studio Test Runner

Matthew Adams

We&apos;ve built and open-sourced a Visual Studio Extension that provides basic support for discovering and running CucumberJS tests with Node.JS, in the Visual Studio Test Environment.
Reduce Merge Conflicts in .NET Solutions with PowerShell based Git Hooks

Reduce Merge Conflicts in .NET Solutions with PowerShell based Git Hooks

Howard van Rooijen

25 useful steps missing from SpecFlow

25 useful steps missing from SpecFlow

Howard van Rooijen

Extending Endjin.Retry with custom Retry Policies

Extending Endjin.Retry with custom Retry Policies

Howard van Rooijen

Endjin.Licensing - Part 5: Real world usage patterns

Endjin.Licensing - Part 5: Real world usage patterns

Howard van Rooijen

Endjin.Licensing - Part 4: How to implement custom validation logic

Endjin.Licensing - Part 4: How to implement custom validation logic

Howard van Rooijen

Endjin.Licensing - Part 3: How to create and validate a license

Endjin.Licensing - Part 3: How to create and validate a license

Howard van Rooijen

Endjin.Licensing - Part 2: Defining the desired behaviour

Endjin.Licensing - Part 2: Defining the desired behaviour

Howard van Rooijen

Endjin.Licensing - Part 1: Why build another licensing system?

Endjin.Licensing - Part 1: Why build another licensing system?

Howard van Rooijen

TPL Dataflow by Example code samples for LINQPad

TPL Dataflow by Example code samples for LINQPad

Howard van Rooijen

Jasmine MetaRunner for TeamCity

Jasmine MetaRunner for TeamCity

Howard van Rooijen

Guest Blog Post: Work Experience at endjin - Week 1

Guest Blog Post: Work Experience at endjin - Week 1

Howard van Rooijen

Introducing endjin composition framework 2.0 : Part 5 - Debugging

Mike Larah

Introducing endjin composition framework 2.0 : Part 4 - ASP.NET MVC/WebAPI

Mike Larah

Introducing endjin composition framework 2.0 : Part 3 - Using the content factory

Mike Larah

Retrying tasks with TPL, async and synchronous code

Retrying tasks with TPL, async and synchronous code

Matthew Adams

Introducing endjin composition framework 2.0 : Part 2 - Getting Started

Mike Larah

Introducing endjin composition framework 2.0 : Part 1

Introducing endjin composition framework 2.0 : Part 1

Mike Larah

Templify 0.7.0.25 is available.

Templify 0.7.0.25 is available.

Howard van Rooijen

TeamCity PowerShell

TeamCity PowerShell

Howard van Rooijen

Dev4Good July 2011

Howard van Rooijen

On .NET Rocks! Talking about Sharp Architecture, Templify and StyleCop

Howard van Rooijen

StyleCop and StyleCop for ReSharper have merged

Howard van Rooijen

Where do my Visual States come from in Blend?

Matthew Adams

Work Smarter with Convention Over Configuration and the Endjin Composition Framework

Howard van Rooijen

Component Discovery and Composition II - Abstracting the container implementation

Matthew Adams

Introducing Templify

Howard van Rooijen