Endjin - Home

Open Source

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

by 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

by 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!


Over the last few months, endjin have been working together with Microsoft to create the Azure CNAB Quickstarts Library in GitHub. CNAB (Cloud-Native Application Bundle) is a new specification designed for facilitating the bundling, installing and managing of cloud-native or distributed apps. It provides you with a way to containerise your installation process, and easily […]


NDC London Day 1

by Ian Griffiths

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


Survey: Expression Trees use cases in .NET

by Howard van Rooijen

I’m of the opinion of that Expression Trees are one of the most powerful, yet under-used features of the .NET Framework. I’m currently doing research for a bit of thought leadership about how Expression Trees can be used and I’m looking for feedback from the community. If you currently are, or have used Expression Trees […]


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.


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

by Howard van Rooijen

I’ve very pleased to announce that endjin has become a Snowflake partner. This fantastic “designed for the cloud” data platform redefines what a data warehouse can be in the age of cloud. With features such as data sharing, usage based billing, and availability on Microsoft Azure, it has won our hearts. Over the last three years, we’ve […]


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.


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

by Howard van Rooijen

In my previous post I documented a technical spike I carried out to see how I could take the OpenAPI.NET SDK and create a Custom Tool in Visual Studio, in particular a Single-File Generator, that could be used to improve the Azure Functions v1 local development experience. Since then the OpenAPI.NET SDK reached v1.0 and while I was […]


OpenAPI code generators for Visual Studio

by Howard van Rooijen

Building RESTful APIs is a common activity at endjin. If you’ve seen our API Maturity Matrix, you’ll realise that we spend quite a lot of time thinking about the strategy, governance, legal, commercial, and operational side of building APIs along with the standard concerns of design, development, quality, infrastructure and support. One of the most […]


How to use Power BI Embedded with AspNetCore

by Matthew Adams

If you are looking to build an AspNetCore website, and take advantage of Power BI embedded, you’ve probably found that there isn’t any SDK support for basic report rendering (yet). While the underlying PowerBI.Core and PowerBI.Api assemblies work just fine, there is no equivalent to PowerBI.MVC, and PowerBI.Javascript fails to install correctly in the new […]


Microsoft Azure Most Valuable Professional 2016

by Howard van Rooijen

I’m honoured to announce that I’ve been awarded an Azure MVP award for 2016. I’m excited to have finally achieved a career goal I’ve been hankering after for almost a decade! I wanted to say a big thank you to Ed Price for noticing that I wasn’t an MVP already and submitting the nomination! I’m […]


We’re currently working on a project to migrate a customer from AWS to Azure. As always, we like to put a Continuous Delivery pipeline at the heart of the project to ensure there is zero friction pushing out changes across all dev, test and production environments. Two years ago I wrote about the process we […]


Mike Larah shares his tips for how to best customize ConEmu to improve your terminal experience for Windows Command Prompy and PowerShell


As I mentioned in a previous post (and also covered by Matthew) at the start of every year we clean up our core intellectual property (~100 projects), and re-evaluate our tool-chain. NuGet Packages are now the de facto standard (for better or worse) in the .NET ecosystem, and have become one of the biggest causes […]


ILMerge Meta-Runner for TeamCity

by Howard van Rooijen

At the start of every year we do a spot of spring cleaning; we tidy up all of our core intellectual property, harvest any useful code that we’ve written in the previous year, then give it all a thoroughly good refactoring; to ensure that the code is self-referencing all the new patterns and concepts. This has […]


Endjin.Licensing now supports SHA256

by Howard van Rooijen

Last year we open sourced an extensible licensing framework we created for an Azure / .NET based content platform we’re developing. We’ve just pushed an update that supports SHA256 for signing the license XML document. As this is a breaking change we’ve bumped the version number of the NuGet package to 2.x. For more information […]


1 2 3