Skip to content
A code review with NDepend Part 1: Quality metrics

A code review with NDepend Part 1: Quality metrics

Carmel Eve

At endjin we have a high quality bar when it comes to our code. As part of this we carry out regular code reviews. One of the tools we have used for these code reviews is NDepend. This is the first in a blog series written as we carried out that process. This post runs through the different metrics used by NDepend, and the reasons that each of these can be an indication of code quality.
C# faux amis 3: variable declarations and type patterns

C# faux amis 3: variable declarations and type patterns

Ian Griffiths

Ian Griffiths discusses C# 8 features, highlighting how 'var' can enhance compile-time type checking in his final series article.
C# faux amis 2: tuple deconstruction and positional patterns

C# faux amis 2: tuple deconstruction and positional patterns

Ian Griffiths

C# v8.0 introduces various new patterns. In this article, part of a series on how the evolution of the language has added complexity, Ian Griffiths shows how the strong resemblance between the new Positional Patterns and Deconstruction can be misleading.
A beginner's guide to agile estimation and planning

A beginner's guide to agile estimation and planning

Carmel Eve

Discover agile estimation principles & planning methods for project success. Dive into uncertainty, valuable estimates & agile delivery processes.
C# faux amis 1: discards and underscores

C# faux amis 1: discards and underscores

Ian Griffiths

Visual Studio 2019 saw the arrival of C# v8.0. This article shows the first of a series of examples of how friction can arise when integrating new features into a mature language: the relatively late addition of 'discards' causes some surprises.
C# 8 surprising patterns

C# 8 surprising patterns

Ian Griffiths

Visual Studio 2019 saw the arrival of C# v8.0. A programming language cannot evolve for 20 years without developing a few quirks. Ian Griffiths writes about a surprising aspect of the new pattern matching features, and what this reveals about how the language has changed.
11 cheers for binary (And 3 for hexadecimal)!

11 cheers for binary (And 3 for hexadecimal)!

Carmel Eve

Explore the basics of binary and hexadecimal numbers and their role in daily computing.
Rx operators deep dive Part 5 – Thank you for joining me on this journey

Rx operators deep dive Part 5 – Thank you for joining me on this journey

Carmel Eve

This is the final blog in a series which delves into how the Rx operators work under the covers. This series aims to provide a greater understanding of Rx and its operators. This post focuses on the JOIN operator.
Avoiding deployment locking errors by running Web and Functions Apps from packages

Avoiding deployment locking errors by running Web and Functions Apps from packages

Carmel Eve

Fix DLL locking errors in Azure Function deployment by using "deploy from package" option. This runs the function from a package file, resolving issues.
ML.NET, Azure Functions and the 4th Industrial Revolution

ML.NET, Azure Functions and the 4th Industrial Revolution

Howard van Rooijen

There is a lot of hype around AI & ML. Here's an example of using ML.NET & Azure Functions to deliver a series of micro-optimisations, to automate a series of 1 second tasks. When applied to business processes, this is what the 4th Industrial Revolution could look like.
Rx operators deep dive Part 4: A window into scheduling in Rx

Rx operators deep dive Part 4: A window into scheduling in Rx

Carmel Eve

Fourth in a series, this blog post explores the inner workings of the Rx WINDOW operator for better Rx understanding.
How to run a script on an existing Azure Virtual Machine

How to run a script on an existing Azure Virtual Machine

Mike Evans-Larah

Using PowerShell and the VM Custom Script Extension to download and execute scripts on existing Azure VMs
Rx operators deep dive Part 3: Re-grouping our thoughts

Rx operators deep dive Part 3: Re-grouping our thoughts

Carmel Eve

This is the third blog in a series which delves into how the Rx operators work under the covers. This series aims to provide a greater understanding of Rx and its operators. This post focuses on the GROUP operator.
Managing applications using Azure AD, service principals and managed identities: A permissions story

Managing applications using Azure AD, service principals and managed identities: A permissions story

Carmel Eve

Explore Azure Active Directory's key concepts: AAD apps, service principles, managed identities, with setup examples.

Good Reads in 2018

Howard van Rooijen

Here's a list of books from my reading list; some technical, some business, some focusing on personal development. All were worth reading.
A conversation about .NET, The Cloud, Data & AI, teaching software engineers and joining endjin with Ian Griffiths

A conversation about .NET, The Cloud, Data & AI, teaching software engineers and joining endjin with Ian Griffiths

Ian Griffiths

When he joined endjin, Technical Fellow Ian sat down with founder Howard for a Q&A session. This was originally published on LinkedIn in 5 parts, but is republished here, in full. Ian talks about his path into computing, some highlights of his career, the evolution of the .NET ecosystem, AI, and the software engineering life.
Rx operators deep dive part 2: Slowly aggregating knowledge

Rx operators deep dive part 2: Slowly aggregating knowledge

Carmel Eve

This is the second blog in a series which delves into how the Rx operators work under the covers. This series aims to provide a greater understanding of Rx and its operators. This post focuses on the AGGREGATE operator.
Explicit interface implementation

Explicit interface implementation

Ed Freeman

Two of the main use-cases for explicit interface implementation are: 1. to hide members of the interface in a class which inherits from that interface, and 2. to work around the scenario when a class is inheriting from two interfaces which share a member of the same name. Take a look at this blog to go into more depth about each of those scenarios.
Cosmos DB - Request Units charged for processing a Gremlin API request

Cosmos DB - Request Units charged for processing a Gremlin API request

Howard van Rooijen

If you're using the Gremlin API for Cosmos DB, you can now see how much each operation costs in Request Units.
Rx operators deep dive part 1: Where observables meet LINQ

Rx operators deep dive part 1: Where observables meet LINQ

Carmel Eve

Explore the workings of Rx operators in this series. This first post delves into the WHERE operator for a deeper Rx understanding.
Using Step Argument Tranformations in SpecFlow to pass null values into scenarios

Using Step Argument Tranformations in SpecFlow to pass null values into scenarios

Ed Freeman

Learn to handle null values in Specflow using Step Argument Transformations for comprehensive test suites and edge case validation in this blog post.
Understanding Rx: Making the interfaces, subscribing and other Subject<T>s finally click

Understanding Rx: Making the interfaces, subscribing and other Subject<T>s finally click

Carmel Eve

Explore endjin's introduction to reactive data processing, covering Rx.NET's main classes and simplifying this complex .NET area for easy understanding.
Overflowing with dataflow part 2: TPL Dataflow

Overflowing with dataflow part 2: TPL Dataflow

Carmel Eve

Explore TPL dataflow in this second blog of our series. Learn how this .NET library simplifies parallel data processing with a pipeline model.
Overflowing with dataflow part 1: An overview

Overflowing with dataflow part 1: An overview

Carmel Eve

This is the first blog in a series about dataflow. The series focuses on TPL dataflow, but this post gives an overview of dataflow as a whole.The crucial thing to understand when using dataflow is that the data is in control. In most conventional programming languages, the programmer determines how and when the code will run. In dataflow, it is the data that drives how the program executes. The movement of data controls the flow of the program.
Women in technology: Driving positive change in the industry

Women in technology: Driving positive change in the industry

Carmel Eve

Anyone can be a role model. You don't have to be a veteran in the industry to inspire someone. There are constantly people coming through the pipeline behind you, and in that there is an opportunity to make a real difference.What can you do to drive positive change and help combat the gender imbalance in the tech industry?