Browse our archives by topic…
Blog

Using Cloud CI/CD in Zero Trust Environments
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 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
Learn about the thinking behind endjin's Power BI Maturity assessment by applying Wardley Doctrine, and asking more questions.

SQLbits 2023 - The Best Bits
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
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
Learn to configure AAD or MSA 2FA profiles for UI automation testing with Time-based One-Time Passwords.

Creating Pester Unit Tests in PowerShell
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 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
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
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
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 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 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
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
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
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
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 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
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
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
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
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
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
When implementing OpenChain, understanding the specification will help guide your organisation to having processes in place to review and manage open-source software

What are the risks with open-source software?
The key risks associated with open-source software, from whether you use it minimally, to using it throughout all your systems.