Skip to content
Wardley Maps - Explaining how OceanMind use Microsoft Azure & AI to combat Illegal Fishing

Wardley Maps - Explaining how OceanMind use Microsoft Azure & AI to combat Illegal Fishing

Jess Panni

Wardley Maps are a fantastic tool to help provide situational awareness, in order to help you make better decisions. We use Wardley Maps to help our customers think about the various benefits and trade-offs that can be made when migrating to the Cloud. In this blog post, Jess Panni demonstrates how we used Wardley Maps to plan the migration of OceanMind to Microsoft Azure, and how the maps highlighted where the core value of their platform was, and how PaaS and Serverless services offered the most value for money for the organisation.
Learning DAX and Power BI – Calculated Columns and Measures

Learning DAX and Power BI – Calculated Columns and Measures

Carmel Eve

Dive into DAX and Power BI in our blog. Learn about calculated columns, measures, and their use in complex visuals.
Integration Testing Azure Functions with SpecFlow and C#, Part 5 - Using Corvus.SpecFlow.Extensions in a build pipeline

Integration Testing Azure Functions with SpecFlow and C#, Part 5 - Using Corvus.SpecFlow.Extensions in a build pipeline

Jonathan George

If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. Even now, several years after their introduction, the testing story for Functions is not hugely well defined. In the final post in this series, we show how to ensure specs written using Corvus.Testing can run as part of your build pipeline.
Integration Testing Azure Functions with SpecFlow and C#, Part 4 - Controlling your functions with additional configuration

Integration Testing Azure Functions with SpecFlow and C#, Part 4 - Controlling your functions with additional configuration

Jonathan George

If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. Even now, several years after their introduction, the testing story for Functions is not hugely well defined. In the fourth of this series of posts, we look at how configuration can be supplied from your tests to the functions apps being tested.
Integration Testing Azure Functions with SpecFlow and C#, Part 3 - Using hooks to start Functions

Integration Testing Azure Functions with SpecFlow and C#, Part 3 - Using hooks to start Functions

Jonathan George

If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. Even now, several years after their introduction, the testing story for Functions is not hugely well defined. In the third of a series of posts, we look at using classes in the Corvus.Testing library to run functions apps via scenario and feature hooks.
Integration Testing Azure Functions with SpecFlow and C#, Part 2 - Using step bindings to start Functions

Integration Testing Azure Functions with SpecFlow and C#, Part 2 - Using step bindings to start Functions

Jonathan George

If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. Even now, several years after their introduction, the testing story for Functions is not hugely well defined. In the second of a series of posts, we look at using step bindings provided by the Corvus.Testing library to run functions apps as part of your SpecFlow scenarios.
Integration Testing Azure Functions with SpecFlow and C#, Part 1 - Introduction

Integration Testing Azure Functions with SpecFlow and C#, Part 1 - Introduction

Jonathan George

If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. Even now, several years after their introduction, the testing story for Functions is not hugely well defined. In the first of a series of posts, we look at some different approaches to testing your functions apps, and introduce the Corvus.Testing library.
Office 365 Wardley Mapping Templates

Office 365 Wardley Mapping Templates

Jess Panni

Utilize our Wardley Mapping Templates for PowerPoint & Visio; and enhance your situational awareness and technical decisions with this technique.
Optimising C# for a serverless environment

Optimising C# for a serverless environment

Carmel Eve

Tour our OceanMind project using Azure Functions for real-time marine telemetry processing. Learn optimization techniques for serverless environments.
High-performance C#: a test pattern for ref structs

High-performance C#: a test pattern for ref structs

Ian Griffiths

Explore C# 7.2's ref structs, use in high-performance scenarios, their constraints, and techniques for overcoming challenges in unit testing the Ais.Net parser.
An experimental approach to software development

An experimental approach to software development

Carmel Eve

Endjin applies scientific experimentation to software development for validated solutions, using hypotheses for confident designs.
Learning DAX and Power BI – Row Contexts

Learning DAX and Power BI – Row Contexts

Carmel Eve

Here is the second blog in a series around learning DAX and Power BI. This post focuses on row contexts, which are used when iterating over the rows of a table when, for example, evaluating a calculated column. Row contexts along with filter contexts underpin the basis of the DAX language. Once you understand this underlying theory it is purely a case of learning the syntax for the different operations which are built on top of it.
Help for the new CTO: Getting to know your team

Help for the new CTO: Getting to know your team

Matthew Adams

As part of my series on guidance for CTOs, I discuss using the Office of the CTO (OCTO) approach to management, its strengths and limitations.
Azure Analysis Services - How to process an asynchronous model refresh from .NET

Azure Analysis Services - How to process an asynchronous model refresh from .NET

James Broome

Learn to use Azure Analysis Services in custom apps via REST API in .NET for efficient async model refreshes.
Introducing Ais.Net - High-Performance Parsing in C#

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

Ian Griffiths

Explore endjin's high-performance .NET AIS parser, developed for OceanMind, used for tracking commercial ships.
Learning DAX and Power BI - Filter Contexts

Learning DAX and Power BI - Filter Contexts

Carmel Eve

Explore the basics of DAX and Power BI in this series. This first post focuses on filter contexts, a key concept for effective DAX usage.
Power BI Data Type Mappings

Power BI Data Type Mappings

Ed Freeman

Explore Power BI data types across mediums, learn their corresponding names, and simplify query conversions with this informative blog and report.
C# developers! Your scoped components are more dangerous than you think.

C# developers! Your scoped components are more dangerous than you think.

Jonathan George

Discover the challenges and alternatives of managing scoped component lifetimes with dependency injection.
Azure Analysis Services: How to execute a DAX query from .NET

Azure Analysis Services: How to execute a DAX query from .NET

James Broome

Explore endless possibilities with dynamic DAX queries in C# for Azure Analysis Services integration in custom apps using the provided code samples.
Help for the new CTO: Transparent salaries and the gender pay gap

Help for the new CTO: Transparent salaries and the gender pay gap

Matthew Adams

Salaries. What a nightmare! Hardly anyone likes talking about money. Technical people don't like talking about money. Even a lot of sales people don't like talking about money. When a CTO comes into an organization (even a brand new start-up) one of the first things you need to sort out is the salary quagmire. In this article we look at the strategies and pitfalls of introducing open, capability-based pay levels for a product development team.
British Science Week - inspiring the next generation of data scientists

British Science Week - inspiring the next generation of data scientists

James Broome

The theme of this year's British Science Week (6 - 15 March 2020) is "Our Diverse Planet". We'll be getting involved by speaking to school children about the work we've been doing with Oxfordshire-based OceanMind (part of the Microsoft AI for Good programme) to help them combat illegal fishing, hopefully inspiring some of the next generation of data scientists!
Why You Should Buy My Book: Programming C# 8.0

Why You Should Buy My Book: Programming C# 8.0

Ian Griffiths

Ian spent a big chunk of last year writing an update to his book, Programming C# 8.0. Books continue to be Ian's preferred source of learning because nothing else offers the combination of depth, breadth, and coherence. His goal with Programming C# 8.0 (and its predecessors) was very clear: to write the book that he would want to read if he were learning C# today. It is Ian's attempt to distil around 18 years of experience with C# (part of almost 30 years of work as a programmer) into a coherent, complete description of what you'll need to know to be productive today in C#.
How can I contribute to the Azure CNAB Quickstarts Library?

How can I contribute to the Azure CNAB Quickstarts Library?

Howard van Rooijen

The Azure CNAB Quickstart Templates we've created are only half the story. Much of the work we've done over the last few months involved the authoring, contribution and DevOps pipelines required to support an open source project. The project is inspired by the original Azure Quickstart Templates - which over the last 5 years has grown to over 850 templates. In this post we're going to explain how you can author CNAB templates and contribute them.
Setting up Porter on Windows

Setting up Porter on Windows

Mike Evans-Larah

Porter: a CNAB-based tool for building, managing, and installing app bundles. Learn to set up Porter on Windows with this guide.
Setting up Windows Subsystem for Linux (WSL) 2 for Windows 10 & Docker

Setting up Windows Subsystem for Linux (WSL) 2 for Windows 10 & Docker

Mike Evans-Larah

Learn how to enable WSL 2 on Windows 10 and use its features with Docker for Windows.