Skip to content
Careers in software development - different paths into the industry

Careers in software development - different paths into the industry

Carmel Eve

There are many different paths into the tech industry, Carmel has been speaking at some local schools about joining the industry from a scientific background. In this post she discusses the crucial tools which science gives you which can help you succeed in tech!
Building a secure data solution using Azure Data Lake Store (Gen2)

Building a secure data solution using Azure Data Lake Store (Gen2)

Carmel Eve

In this blog we discuss building a secure data solution using Azure Data Lake. Data Lake has many features which enable fine grained security and data separation. It is also built on Azure Storage which enables us to take advantage of all of those features and means that ADLS is still a cost effective storage option!This post runs through some of the great features of ADLS and runs through an example of how we build our solutions using this technology!

Speaking at NDC London: Combatting illegal fishing with Machine Learning and Azure

Carmel Eve

In January 2020, Carmel is speaking about creating high performance geospatial algorithms in C# which can detect suspicious vessel activity, which is used to help alert law enforcement to illegal fishing. The input data is fed from Azure Data Lake Storage Gen 2, and converted into data projections optimised for high-performance computation. This code is then hosted in Azure Functions for cheap, consumption based processing.
Troubleshooting "NotImplemented / Access is denied" error when integrating Azure App Service with Azure Virtual Network (VNet)

Troubleshooting "NotImplemented / Access is denied" error when integrating Azure App Service with Azure Virtual Network (VNet)

Ed Freeman

Are you configuring your Azure App Service to use a VNet? The regional VNet integration for an Azure App Service is a preview feature, and so comes with some quirks. One of the documented limitations of this preview feature is that "The feature is only available from newer App Service scale units that support PremiumV2 App Service plans." This has interesting implications as to how you need to deploy your App Service, otherwise you could end up with a rather perplexing pattern of errors. Read about how we came about this error, and how we ended up fixing it.
C# 8 Positional Patterns Custom Deconstructor Pitfall

C# 8 Positional Patterns Custom Deconstructor Pitfall

Ian Griffiths

Discover 'positional patterns' in C# 8, their interaction with custom desconstructors, and unexpected behaviors.

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
C#, Span and async

C#, Span and async

Ian Griffiths

Explore how ref struct types like Span<T> in C# enhance performance but pose async method challenges, and learn mitigation techniques.
Rising Stars - Cloud Apprentice & Apprentice Engineer of the Year

Rising Stars - Cloud Apprentice & Apprentice Engineer of the Year

Howard van Rooijen

Both of endjin's apprentices won in their categories of Apprentice Engineer and Cloud Apprentice at the Rising Star Awards.
Comparing GitHub Actions and Azure Pipelines: High-level concepts

Comparing GitHub Actions and Azure Pipelines: High-level concepts

Mike Evans-Larah

GitHub Actions is GitHub's new CI/CD platform. It is comparable with Azure Pipelines, which forms part of the Azure DevOps suite. In this post, Mike Larah looks at the similarities and differences in the high-level concepts and terminology between the two platforms.
Long Running Functions in Azure Data Factory

Long Running Functions in Azure Data Factory

Jess Panni

Explore Azure Durable Functions as an alternative to long-running operations, overcoming HTTP Triggers' 230s limit in Azure Load Balancer.
How Azure DevTestLabs is helping me climb Everest

How Azure DevTestLabs is helping me climb Everest

Carmel Eve

Remote working allows us to work from anywhere we want. This brings a huge amount of flexibility in freedom, however we do need the help of a working laptop! When Carmel's laptop gave in just before a trip, she used Azure DevTestLabs to allow her to continue to work using a 10 year old Mac that probably couldn't wouldn't have been up to the task alone...
Passwordless SSH from Windows 10 to Raspberry Pi

Passwordless SSH from Windows 10 to Raspberry Pi

Mike Evans-Larah

A guide to enabling SSH on Raspberry Pi, accessing it via Windows 10, and setting up passwordless SSH access.
Increasing performance via low memory allocation in C#

Increasing performance via low memory allocation in C#

Carmel Eve

Explore techniques for high-performance, low-allocation code in Azure Functions using C#, including data streaming, list preallocation, and Span&lt;T&gt;.
Running Azure Functions in Docker on a Raspberry Pi 4

Running Azure Functions in Docker on a Raspberry Pi 4

Jonathan George

Running an Azure Function in a Docker container on Raspberry Pi 4 with this step-by-step guide and ready-to-use code for your projects.
Import and export notebooks in Databricks

Import and export notebooks in Databricks

Ed Freeman

Learn to import/export notebooks in Databricks workspaces manually or programmatically, and transfer content between workspaces efficiently.
Donut chart corkscrew entry animation with d3.js

Donut chart corkscrew entry animation with d3.js

Jonathan George

In this post we show a smooth entry animation for D3.js donut (or pie) charts, using a combination of a sweep and a zoom to give a corkscrew-like effect.
Demystifying machine learning using neural networks

Demystifying machine learning using neural networks

Carmel Eve

Machine learning often seems like a black box. This post walks through what's actually happening under the covers, in an attempt to de-mystify the process!Neural networks are built up of neurons. In a shallow neural network we have an input layer, a "hidden" layer of neurons, and an output layer. For deep learning, there is simply more hidden layers which allows for combining neuron's inputs and outputs to build up a more detailed picture.If you have an interest in Machine Learning and what is really happening, definitely give this a read (WARNING: Some algebra ahead...)!
Azure Databricks CLI "Error: JSONDecodeError: Expecting property name enclosed in double quotes:..."

Azure Databricks CLI "Error: JSONDecodeError: Expecting property name enclosed in double quotes:..."

Ed Freeman

Explore solutions for JsonDecodeError in Databricks CLI & Clusters. Learn how pre-built CLIs/SDKs simplify requests & authentication in REST APIs.
Design patterns in C# - The Composite Pattern

Design patterns in C# - The Composite Pattern

Carmel Eve

This blog is part of a series around design patterns. This post focuses on the composite pattern. The composite pattern is often used in situations where you want to me able to treat groups and individuals in the same way during processing.
Secure Azure Function-to-Function authentication without the need for credentials

Secure Azure Function-to-Function authentication without the need for credentials

Carmel Eve

Explore how to build secure solutions on Azure using Azure Functions and Managed Identities, eliminating the need for storing credentials.
Design patterns in C# - The Builder Pattern

Design patterns in C# - The Builder Pattern

Carmel Eve

Traverse the builder pattern in this design patterns series, simplifying complex object creation and separating construction from usage.
How to use the AzureAD module in PowerShell Core

How to use the AzureAD module in PowerShell Core

James Broome

Explore using AzureAD with Az module in PowerShell Core, as Az may not fully replace AzureAD. Learn to utilize both for optimal functionality.
Reactive data processing and a huge wealth of learning - A year as an Apprentice II at endjin

Reactive data processing and a huge wealth of learning - A year as an Apprentice II at endjin

Carmel Eve

Here is a blog written by our apprentice Carmel after her second year of the apprenticeship. We think it demonstrates the huge variety of things we get to work on here at endjin, and highlights the best of the blogs that Carmel produced through during the year - of which there were a lot!If you think an apprenticeship with us is something which might interest you - send a CV through to hello@endjin.com!
Design Patterns in C# - Factory Method and Abstract Factory

Design Patterns in C# - Factory Method and Abstract Factory

Carmel Eve

Investigate the differences between factory method and abstract factory design patterns in this first blog of our series.
How to create a Power BI workspace in an Azure DevOps Pipeline using Powershell

How to create a Power BI workspace in an Azure DevOps Pipeline using Powershell

James Broome

Automate Power BI workspaces creation & security using PowerShell & Azure DevOps pipelines in a wider DevOps strategy with Azure data platform services.