Skip to content
Exploring OpenChain: From License Compliance to Security Assurance

Exploring OpenChain: From License Compliance to Security Assurance

Charlotte Gayton

Open-source software has become an essential part of many organisation's software supply chain, however, this poses challenges with license compliance and security assurance.
Using Cloud CI/CD in Zero Trust Environments

Using Cloud CI/CD in Zero Trust Environments

James Dawson

Performing certain deployment operations from a cloud-based CI/CD agent against resources that are only accessible via private networking are problematic. The often-cited solution is to use your own hosted agents that are also connected to the same private networks, however, this introduces additional costs and maintenance overhead. This post discusses an approach that combines the use of cloud-based CI/CD agents with 'just-in-time' allow-listing as an alternative to operating your own private agents.
C# 11.0 new features: Span<char> pattern matching

C# 11.0 new features: Span<char> pattern matching

Ian Griffiths

C# 11.0 adds some new pattern matching features. In this post, Ian shows the new support for matching lists.
Ask the right questions to get your data insights projects back on track

Ask the right questions to get your data insights projects back on track

Matthew Adams

Learn about the thinking behind endjin's Power BI Maturity assessment by applying Wardley Doctrine, and asking more questions.
SQLbits 2023 - The Best Bits

SQLbits 2023 - The Best Bits

Barry Smart

This is a summary of the sessions I attended at SQLbits 2023 in Newport Wales, which is Europe's largest expert led data conference.
Working with JSON in Pyspark

Working with JSON in Pyspark

Charlotte Gayton

This blog shows how to transform a document based format to a tabular format whilst managing all the nested properties
Using the Playwright C# SDK to automate 2FA authentication for AAD and MSA

Using the Playwright C# SDK to automate 2FA authentication for AAD and MSA

Howard van Rooijen

Learn to configure AAD or MSA 2FA profiles for UI automation testing with Time-based One-Time Passwords.
Creating Pester Unit Tests in PowerShell

Creating Pester Unit Tests in PowerShell

Charlotte Gayton

Why you should make writing unit tests a regular practice and how they will improve your code. This blog explains how to write unit tests in PowerShell using Pester.
C# 11.0 new features: list pattern matching

C# 11.0 new features: list pattern matching

Ian Griffiths

C# 11.0 adds some new pattern matching features. In this post, Ian shows the new support for matching lists.
Data validation in Python: a look into Pandera and Great Expectations

Data validation in Python: a look into Pandera and Great Expectations

Liam Mooney

Implement Python data validation with Pandera & Great Expectations in this comparison of their features and use cases.
How to setup Python, PyEnv & Poetry on Windows

How to setup Python, PyEnv & Poetry on Windows

James Dawson

Explore using Python virtual environments & Poetry on Windows for smoother workflows, with a script & guide to enhance your dependency management experience.
My Year in Industry so far

My Year in Industry so far

Charlotte Gayton

Charlotte is studying for a Bachelor of Engineering - BEng (Hons), Computer Science at the University of York. She was part of our 2021 internship cohort, and is spending her Year in Industry placement with endjin too. In this post she reflects on her first 6 months.
C# 11.0 new features: newlines in string interpolation expressions

C# 11.0 new features: newlines in string interpolation expressions

Ian Griffiths

C# 11.0 enhances string literals with new features. Discover how multiline interpolated strings boost readability in Ian's insightful post.
C# 11.0 new features: UTF-8 string literals

C# 11.0 new features: UTF-8 string literals

Ian Griffiths

C# 11.0 adds various improvements to string literals. In this post, Ian explains how we can now create UTF-8 string literals.
Adventures in GitHub Actions: Episode 1 - Goodbye Azure DevOps, Hello GitHub Actions

Adventures in GitHub Actions: Episode 1 - Goodbye Azure DevOps, Hello GitHub Actions

James Dawson

This series will follow our ongoing journey of migrating the CI/CD pipelines for our many Open Source repositories, from Azure DevOps to GitHub Actions.
How To Implement Continuous Deployment of Python Packages with GitHub Actions

How To Implement Continuous Deployment of Python Packages with GitHub Actions

Liam Mooney

Discover using GitHub Actions for auto-updates to Python packages on PyPI, assessing its role in Continuous Deployment.
How to develop an accessible colour palette for Power BI

How to develop an accessible colour palette for Power BI

Paul Waller

Explore how we developed an accessible color palette for Power BI reports, considering color vision deficiency and data visualization.
Adventures in Dapr: Episode 5 - Debugging Containers with Visual Studio

Adventures in Dapr: Episode 5 - Debugging Containers with Visual Studio

James Dawson

Explore Dapr for cloud migration & use Visual Studio container tools to debug containerized services.
C# 11.0 new features: raw string literals

C# 11.0 new features: raw string literals

Ian Griffiths

C# 11.0 adds various improvements to string literals. In this post, Ian explains how raw string literals can make your code more readable.
How to design APIs for Accessibility

How to design APIs for Accessibility

Matthew Adams

Learn how accessibility-aware API design creates a great experience for all developers, not just those with accessibility needs.
Correctly configuring ASP.NET Core MVC authentication when hosting in Azure Container Apps

Correctly configuring ASP.NET Core MVC authentication when hosting in Azure Container Apps

Jonathan George

A short rundown of why you need the ForwardedHeadersMiddleware when using Azure Container Apps to host an ASP.NET Core MVC app requiring authentication
My first year as an apprentice software engineer at endjin

My first year as an apprentice software engineer at endjin

Jessica Hill

Jessica joined endjin as part of the Software Engineering Apprenticeship 2021 cohort. In this post, Jessica reflects on her first year.
Lazy and once-only C# async initialization

Lazy and once-only C# async initialization

Ian Griffiths

Performing lazy and/or just-once initialization is a simple optimization. But what if the initialization is async?
Bye bye Azure Functions, Hello Azure Container Apps: Conclusions

Bye bye Azure Functions, Hello Azure Container Apps: Conclusions

Jonathan George

In the sixth and final post we draw our conclusions about migrating an application from Azure Functions to Azure Container Apps.
The OpenChain specification explained

The OpenChain specification explained

Charlotte Gayton

When implementing OpenChain, understanding the specification will help guide your organisation to having processes in place to review and manage open-source software