Skip to content
.NET JsonElement Error Handling

.NET JsonElement Error Handling

Ian Griffiths

.NET's System.Text.Json offers very high performance JSON parsing. However, JsonElement's text parsing methods offer a trap for the unwary
Analysing WPF Performance Using ETW and PerfView

Analysing WPF Performance Using ETW and PerfView

Liam Mooney

This post walks through the process of using PerfView to analyse ETW data to get to the bottom of a performance issue in a WPF application.
Learn Reactive Programming for FREE: Introduction to Rx.NET 2nd Edition (2024)

Learn Reactive Programming for FREE: Introduction to Rx.NET 2nd Edition (2024)

Howard van Rooijen

Learn Reactive Programming with our free book, Introduction to Rx.NET 2nd Edition (2024), available in PDF, EPUB, online, and GitHub.
Analyzing WPF performance by enabling ETW

Analyzing WPF performance by enabling ETW

Ian Griffiths

WPF makes extensive performance instrumentation available through ETW. However, in modern .NET, it's not obvious how to get hold of it. This blog shows how
ASP.NET Core 8.0 uses C# 12.0's experimental interceptors to enable AOT

ASP.NET Core 8.0 uses C# 12.0's experimental interceptors to enable AOT

Ian Griffiths

C# 12 includes an experimental 'interceptors' feature. If you use trimming or AOT publishing in ASP.NET Core 8.0, you're already using this.
Boosting string search performance in .NET 8.0 with SearchValues

Boosting string search performance in .NET 8.0 with SearchValues

Ian Griffiths

Learn how .NET 8.0's SearchValues<T> can speed up string searching
How .NET 8.0 boosted JSON Schema performance by 20%

How .NET 8.0 boosted JSON Schema performance by 20%

Matthew Adams

We benchmarked endjin's JSON Schema library on .NET 8.0 and saw large performance gains. There are even more gains to be had with new .NET 8 features.
How .NET 8.0 boosted AIS.NET performance by 27%

How .NET 8.0 boosted AIS.NET performance by 27%

Ian Griffiths

When we benchmarked endjin's AIS.NET library on .NET 8.0, we were delighted to see substantial performance gains, with no extra work required.
Optimising .NET code: Avoiding allocations using Span<T>

Optimising .NET code: Avoiding allocations using Span<T>

Jonathan George

Investigate some ways of working with strings that prevent unnecessary memory allocations.
Optimising .NET code: Let's blame LINQ

Optimising .NET code: Let's blame LINQ

Jonathan George

Investigate the impact of basic LINQ functions on performance and memory allocation.
Optimising .NET code: Hunting for allocations

Optimising .NET code: Hunting for allocations

Jonathan George

Explore basic techniques for benchmarking and identifying allocation sources in code.
Optimising .NET code: Introduction

Optimising .NET code: Introduction

Jonathan George

Explore techniques to boost .NET performance & memory efficiency, identify allocation sources, and optimize data handling.
How .NET 7.0 boosted AIS.NET performance by 19%

How .NET 7.0 boosted AIS.NET performance by 19%

Ian Griffiths

When we benchmarked endjin's AIS.NET library on .NET 7.0, we were delighted to see substantial performance gains, with no extra work required.
C# Design Patterns - Iterator - The Pattern

C# Design Patterns - Iterator - The Pattern

Liam Mooney

Explore the iterator design pattern in C#, its importance in programming, and learn how to implement it.
Rx.NET v6.0 Now Available

Rx.NET v6.0 Now Available

Ian Griffiths

For the first time since 2020, a new release of Rx.NET is available, supporting .NET 6 and .NET 7.
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.
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.
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.
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.
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
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.
An Overview of the Corvus.Retry Library

An Overview of the Corvus.Retry Library

Liam Mooney

Corvus.Retry is an open source repository that provides functionality for building policies and strategies for handling transient faults. This post provides a spotlight on the repository.
How to sign your git commits

How to sign your git commits

Charlotte Gayton

Signing git commits proves that you are the author of the code you are pushing up to GitHub, and helps protect the integrity of your software supply chain.
An Overview of the Corvus.Globbing Library

An Overview of the Corvus.Globbing Library

Liam Mooney

Corvus.Globbing is an .NET open source library that provides high performance, zero allocation functionality for working with globs.
In Defence of Squash Commits

In Defence of Squash Commits

Ian Griffiths

Encapsulation is a powerful tool. Squash commits provide a way to encapsulate Git commit history.
An Overview of the Corvus.Extensions Library

An Overview of the Corvus.Extensions Library

Jessica Hill

Corvus.Extensions is an open source repository that provides a collection of useful helper extension methods to .NET types. This post provides a spotlight on the repository.
Adventures in Dapr: Episode 4 - Containerising with Visual Studio

Adventures in Dapr: Episode 4 - Containerising with Visual Studio

James Dawson

Explore Dapr for cloud migration & simplify containerized dev inner-loop using Visual Studio with the Dapr Traffic Control sample application.
Bye bye Azure Functions, Hello Azure Container Apps: Migration of the existing test environment

Bye bye Azure Functions, Hello Azure Container Apps: Migration of the existing test environment

Jonathan George

The fifth in a series of posts talking about how and why we migrated an application from Azure Functions to Azure Container Apps
High Performance UriTemplate resolution with low-allocation C#

High Performance UriTemplate resolution with low-allocation C#

Matthew Adams

Learn how to use high-performance code constructs like ReadOnlySpan<T> to parse and create UriTemplates for C# developers.
Bye bye Azure Functions, Hello Azure Container Apps: Authentication and CORS issues

Bye bye Azure Functions, Hello Azure Container Apps: Authentication and CORS issues

Jonathan George

The fourth post migrating an app from Azure Functions to Azure Container Apps we examine the challenges around authentication and CORS
Bye bye Azure Functions, Hello Azure Container Apps: Build and deployment pipelines, and our first big problem

Bye bye Azure Functions, Hello Azure Container Apps: Build and deployment pipelines, and our first big problem

Jonathan George

The third in a series of posts talking about how and why we migrated an application from Azure Functions to Azure Container Apps
Bye bye Azure Functions, Hello Azure Container Apps: Migrating from Azure Functions to ASP.NET Core

Bye bye Azure Functions, Hello Azure Container Apps: Migrating from Azure Functions to ASP.NET Core

Jonathan George

The second in a series of posts talking about how and why we migrated an application from Azure Functions to Azure Container Apps
C# Lambda Discards

C# Lambda Discards

Ian Griffiths

C# has gradually been adding support for discards. This article explores how this evolution has led to some surprises.
Bye bye Azure Functions, Hello Azure Container Apps: Introduction

Bye bye Azure Functions, Hello Azure Container Apps: Introduction

Jonathan George

The first in a series of posts talking about how and why we migrated an application from Azure Functions to Azure Container Apps
Service Lifetimes in ASP.NET Core

Service Lifetimes in ASP.NET Core

Elisenda Gascon

Explore Microsoft Dependency Injection container's 3 lifetimes: transient, singleton, scoped. Learn their behaviors & importance in app dependencies.
Using Azure CLI Authentication within Local Containers

Using Azure CLI Authentication within Local Containers

James Dawson

Fix broken dev loop with containerized apps on Azure CLI for Windows. Learn a workaround to avoid using outdated Azure CLI versions.
Adventures in Dapr: Episode 3 - Azure Storage Queues

Adventures in Dapr: Episode 3 - Azure Storage Queues

James Dawson

If you're interested in the Distributed Application Runtime (Dapr) and how it can simplify migrating existing workloads to use cloud platform services, then this series might be for you. In this post, we continue modifying the excellent Dapr Traffic Control sample application by swapping the MQTT-based messaging with Azure Storage Queues. We will also look at how you can use the Dapr programming model as an alternative to cloud-provider SDKs.
Understanding the Stack and Heap in C#

Understanding the Stack and Heap in C#

Liam Mooney

The stack and heap are central components of memory management in C# programs. This post aims to introduce the topic, with a number of worked examples.
Implementing dependency injection in ASP.NET Core

Implementing dependency injection in ASP.NET Core

Elisenda Gascon

In this post, we will be showing how to implement dependency injection in an ASP.NET Core application.
The Perils of Combining Multicast Delegates with Tasks in C#

The Perils of Combining Multicast Delegates with Tasks in C#

Liam Mooney

Explore the complexities of combining async methods with multicast delegates in C# with Liam.
Debugging NuGet Packages: Understanding Debugging Symbols and Using Source Link

Debugging NuGet Packages: Understanding Debugging Symbols and Using Source Link

Elisenda Gascon

Explore debugging NuGet packages, a less straightforward process, to troubleshoot app issues by stepping through code and diving into methods.
Adventures in Dapr: Episode 2 - Azure Key Vault

Adventures in Dapr: Episode 2 - Azure Key Vault

James Dawson

Explore DAPR's role in migrating workloads to cloud services, focusing on integrating Azure Key Vault for secrets management.
Understanding Lambda Expressions in C#

Understanding Lambda Expressions in C#

Elisenda Gascon

Explore C# lambda expressions, a concise method for defining functions, with a focus on syntax and practical examples.
Adding Authentication and Authorisation to ASP.NET Core Web Applications

Adding Authentication and Authorisation to ASP.NET Core Web Applications

Elisenda Gascon

Explore authentication & authorisation in ASP.NET Core web apps using Identity, Razor class libraries, scaffolding, and partial views.
Tag Helpers in ASP.NET Core

Tag Helpers in ASP.NET Core

Elisenda Gascon

Explore tag helpers in ASP.NET Core web apps, learn their uses, and create custom tag helpers with examples in this informative post.
Pattern Matching in C#

Pattern Matching in C#

Jessica Hill

Explore how pattern matching in C# has evolved, and how to use is expressions, switch statements and switch expressions.
C# 11.0 preview: parameter null checking

C# 11.0 preview: parameter null checking

Ian Griffiths

Discover C# 11.0's new !! syntax for detecting & rejecting null arguments. Learn its true purpose and clear up common misconceptions in this post.
C# 10.0 improves handling of nullable references in generic types - no more AllowNull

C# 10.0 improves handling of nullable references in generic types - no more AllowNull

Ian Griffiths

Explore C# 10.0's improved nullability annotations in generic code, replacing AllowNull with more intuitive syntax.
Understanding Middleware in ASP.NET Core

Understanding Middleware in ASP.NET Core

Elisenda Gascon

Explore the Configure method in ASP.NET Core's Startup class, focusing on the middleware pipeline for processing HTTP messages in web applications.
Raising Coding Standards with .NET 6.0 Code Analyzers

Raising Coding Standards with .NET 6.0 Code Analyzers

Ian Griffiths

.NET 6.0 makes it easier to take full advantage of code analyzers that can help you improve the quality of your code.
Model Binding in ASP.NET Core using Razor Pages

Model Binding in ASP.NET Core using Razor Pages

Elisenda Gascon

Explore model binding in web apps, a process that extracts data from HTTP requests & converts it to .NET types for easy input model integration.
Flow control in C#

Flow control in C#

Jessica Hill

This post explains how to control the flow of execution in C# by using if and switch statements and looping with for, foreach, while and do.
Introduction to Containers and Docker

Introduction to Containers and Docker

Liam Mooney

Explore containerisation & Docker for app development & deployment. Learn to create containerised applications with examples in this intro guide.
How .NET 6.0 boosted Ais.Net performance by 20%

How .NET 6.0 boosted Ais.Net performance by 20%

Ian Griffiths

When we tested endjin's AIS.NET library on .NET 6.0, we were delighted to see substantial performance gains, with no extra work required.
Adventures in Dapr: Episode 1 - Azure Service Bus

Adventures in Dapr: Episode 1 - Azure Service Bus

James Dawson

Explore Dapr for migrating workloads to cloud services. Learn to enable PaaS Pub-Sub with Azure Service Bus using the Dapr Traffic Control sample app.
Adventures in Dapr: Episode 0 - Introduction

Adventures in Dapr: Episode 0 - Introduction

James Dawson

Explore Dapr's role in simplifying cloud migration using Azure services, based on the Dapr Traffic Control sample app.
How C# 10.0 and .NET 6.0 improve ArgumentExceptions

How C# 10.0 and .NET 6.0 improve ArgumentExceptions

Ian Griffiths

C# 10.0's support for CallerArgumentExpression and some new helpers in .NET 6.0 make throwing argument exceptions more succinct and less error prone.
Month one at endjin

Month one at endjin

Nehemiah Campbell

In this post, Nehemiah reflects on his first month at endjin as an apprentice engineer.
C# 10.0 implicit global using directives

C# 10.0 implicit global using directives

Ian Griffiths

C# 10's new implicit global imports can make your code more communicative. This article shows how the magic works, and how you can control the feature.
C# serialization with JsonSchema and System.Text.Json

C# serialization with JsonSchema and System.Text.Json

Matthew Adams

Learn how code generation can build on System.Text.Json and JSON Schema to create a great experience for C# developers.
Configuration in Azure Functions - What's in the box?

Configuration in Azure Functions - What's in the box?

Jonathan George

The first in a series of posts talking about how to best work with configuration in Azure Functions
How to trigger an Azure Synapse pipeline run from C#

How to trigger an Azure Synapse pipeline run from C#

Jonathan George

A rundown of how to trigger an Azure Synapse pipeline run from C# code.
Installing Mattermost using the Azure CNAB Quickstart Library

Installing Mattermost using the Azure CNAB Quickstart Library

Mike Evans-Larah

Get started with Mattermost on Azure using the Mattermost on AKS quickstart from the Azure CNAB Quickstart Library.
Design patterns in C# - The Proxy Pattern

Design patterns in C# - The Proxy Pattern

Carmel Eve

Explore the proxy pattern in this blog post, a design pattern used for controlling access to underlying objects and remote server communication.
How to consume a NuGet package in PowerShell

How to consume a NuGet package in PowerShell

Ed Freeman

Learn how to import .NET packages from NuGet into PowerShell and utilize their classes/methods, while avoiding PowerShell NuGet provider pitfalls.
How to update credentials for an on-prem Power BI data source using PowerShell

How to update credentials for an on-prem Power BI data source using PowerShell

Ed Freeman

Learn to automate Power BI data source credential updates using RSA-OAEP encryption and .NET SDK helper classes for on-premises data sources.
When C# 9.0 patterns go wrong: mechanism over intent

When C# 9.0 patterns go wrong: mechanism over intent

Ian Griffiths

C# 9 enhances pattern matching capabilities. Ian Griffiths advises caution to avoid complexity.
Does your GitHub Repo need 'Code Operations'?

Does your GitHub Repo need 'Code Operations'?

James Dawson

CodeOps enables you to layer standards, automation, and governance to your source control repositories, decreasing manual effort and increasing productivity.
Design patterns in C# - The Facade Pattern

Design patterns in C# - The Facade Pattern

Carmel Eve

This blog is part of a series around design patterns. This post focuses on the facade pattern. The facade pattern provides an interface into a complex system, in order to simplify access to the functionality.
C# 8.0 nullable references: defeating the point with empty strings

C# 8.0 nullable references: defeating the point with empty strings

Ian Griffiths

Enabling C# 8's nullable references feature often produces a lot of warnings. Avoid the temptation to make some go away by initializing properties to empty strings.
Design patterns in C# - The Decorator Pattern

Design patterns in C# - The Decorator Pattern

Carmel Eve

Investigate the decorator pattern in this blog post, a design pattern used to dynamically enhance object functionality.
GitOps: Not Just For Kubernetes!

GitOps: Not Just For Kubernetes!

James Dawson

Discover how GitOps, often used for Kubernetes management, can benefit a broader audience.
C# 8.0 nullable references: prepare today by not misusing 'as'

C# 8.0 nullable references: prepare today by not misusing 'as'

Ian Griffiths

Prepare for using C# 8.0 nullable references by not misusing the 'as' operator.
Design patterns in C# - The Adapter Pattern

Design patterns in C# - The Adapter Pattern

Carmel Eve

Explore the adapter pattern in this design patterns series, enabling use of incompatible classes within your solution's interfaces/architecture.
Where are you going wrong when choosing to buy, not build?

Where are you going wrong when choosing to buy, not build?

Carmel Eve

Often when building software we need to outsource part of the solution to a third party. Common examples include authentication, payment, and email, but there are many others. When first designing a solution the decision around which provider to use can be difficult to tackle. At endjin we have developed a system for answering the question "which provider should I use?".
Streamline .NET Dependency Management with NuGet Meta Packages

Streamline .NET Dependency Management with NuGet Meta Packages

James Dawson

Simplify dependency consumption & streamline integration with meta/virtual NuGet packages and tools like Dependabot.
ArrayPool vs MemoryPool—minimizing allocations in AIS.NET

ArrayPool vs MemoryPool—minimizing allocations in AIS.NET

Ian Griffiths

Tracking down unexpected allocations in a high-performance .NET parsing library.
A simple pattern for using System.CommandLine with dependency injection

A simple pattern for using System.CommandLine with dependency injection

Carmel Eve

Explore building a command line tool with System.CommandLine packages, using dependency injection for quick and easy initialization.
C# 8.0 nullable references and serialization

C# 8.0 nullable references and serialization

Ian Griffiths

C# 8's nullable references feature can clash with common serialization techniques. This article shows how to deal with that.
A simple invite user flow for AAD B2C (without custom policies)

A simple invite user flow for AAD B2C (without custom policies)

James Broome

Explore an alternative "invite user" flow for Azure AD B2C, simplifying authentication without custom policies in SaaS applications.
C# 8.0 nullable references: when methods don't return

C# 8.0 nullable references: when methods don't return

Ian Griffiths

Explore the importance of DoesNotReturn & DoesNotReturnIf attributes in C# 8 nullable references, enhancing their long-standing role in C#.
How to fully initialize types in their constructor with C# nullable using the async factory pattern

How to fully initialize types in their constructor with C# nullable using the async factory pattern

Carmel Eve

Explore a pattern for async initialization, enabling readonly object construction & leveraging nullable references for fully instantiated classes.

Reactive Extensions for .NET at dotnetsheff

Ian Griffiths

Ian Griffiths is talking about the Reactive Extensions for .NET at dotnetsheff. Learn the ideas behind Rx, and see it applied in an IoT applicable to upload clinical monitoring data to the cloud.
C# 8.0 nullable references: supporting older runtimes

C# 8.0 nullable references: supporting older runtimes

Ian Griffiths

See how to use C# 8.0 nullable references even when targetting older versions of .NET that don't officially support it.
Using Azure Key Vault for Encryption in C# - A Simple Tutorial

Using Azure Key Vault for Encryption in C# - A Simple Tutorial

Ed Freeman

Learn to encrypt data in your app using C# and Azure SDK libraries, and secure keys with Azure Key Vault. Discover the easy setup process in this blog.
C# 8.0 nullable references: more type system transcendence with DisallowNull

C# 8.0 nullable references: more type system transcendence with DisallowNull

Ian Griffiths

C# 8.0 nullable references help identify potential null-related bugs. DisallowNull attribute enhances properties and generics.
C# 8.0 nullable references: conditional post-conditions

C# 8.0 nullable references: conditional post-conditions

Ian Griffiths

Explore C#8's NotNullWhen, MaybeNullWhen, & NotNullIfNotNull attributes for improved nullability warnings, aiding method output inference from inputs.
Debugging web apps in Visual Studio with custom browser configurations

Debugging web apps in Visual Studio with custom browser configurations

Mike Evans-Larah

Discover how to auto-open browsers in private mode or with custom profiles for web app debugging in Visual Studio.
C# 8.0 nullable references: MaybeNull

C# 8.0 nullable references: MaybeNull

Ian Griffiths

The MaybeNull attribute enables C#8's nullable references feature to provide more useful warnings, by helping it infer information about a method output.
C# 8.0 nullable references: NotNull

C# 8.0 nullable references: NotNull

Ian Griffiths

The NotNull attribute enables C#8's nullable references feature to provide more useful warnings, by helping it infer information about a method argument.
Using multiple azure-cli credentials within automation

Using multiple azure-cli credentials within automation

James Dawson

Discover a technique for setting up multiple, concurrent authenticated sessions using azure-cli in this post.
Does Azure Synapse Analytics spell the end for Azure Databricks?

Does Azure Synapse Analytics spell the end for Azure Databricks?

James Broome

Explore why Microsoft's new Spark offering in Azure Synapse Analytics is a game-changer for Azure Databricks investors.
C# 8.0 nullable references: transcending the type system with AllowNull

C# 8.0 nullable references: transcending the type system with AllowNull

Ian Griffiths

Explore C# 8.0 nullable references & AllowNull attribute for better null-related bug detection and enhanced expressiveness in properties & generics.
C# 8.0 nullable references: get better results with nullability attributes

C# 8.0 nullable references: get better results with nullability attributes

Ian Griffiths

C# 8.0 nullable references enable us to annotate our code with information that lets the compiler discover possible null-related bugs.
Why Power BI developers should care about the read/write XMLA endpoint

Why Power BI developers should care about the read/write XMLA endpoint

James Broome

Whilst "read/write XMLA endpoint" might seem like a technical mouthful, its addition to Power BI is a significant milestone in the strategy of bringing Power BI and Analysis Services closer together. As well as closing the gap between IT-managed workloads and self-service BI, it presents a number of new opportunities for Power BI developers in terms of tooling, process and integrations. This post highlights some of the key advantages of this new capability and what they mean for the Power BI developer.
5 tips for an awesome Windows Terminal experience

5 tips for an awesome Windows Terminal experience

Mike Evans-Larah

Improve the already-great Windows Terminal experience by following these tips for customizing the application to work best for you.
C# 8.0 nullable references: getting started in an existing codebase

C# 8.0 nullable references: getting started in an existing codebase

Ian Griffiths

C# 8.0's nullable references feature dramatically changes a fundamental aspect of the language. In this post, Ian explains how to you can soften the impact by enabling gradually across your projects.
Testing Power BI Reports using SpecFlow and .NET

Testing Power BI Reports using SpecFlow and .NET

James Broome

Ensure Power BI report quality by connecting to tabular models, executing scenario-based specs, and validating data, business rules, and security.
C# 8.0 nullable references: inferred (non-)nullness

C# 8.0 nullable references: inferred (non-)nullness

Ian Griffiths

Ian discusses inferred nullness and its significance in C# 8.0's new Nullable References feature.
Testing Power BI Dataflows using SpecFlow and the Common Data Model

Testing Power BI Dataflows using SpecFlow and the Common Data Model

James Broome

Ensure reliable insights with endjin's automated quality gates for validating Power BI Dataflows in complex solutions.
C# 8.0 nullable references: embrace the expressiveness

C# 8.0 nullable references: embrace the expressiveness

Ian Griffiths

C# 8.0 nullable references detect null-related errors and enhance code expressiveness.
Azure Analysis Services - how to save money with automatic shutdown

Azure Analysis Services - how to save money with automatic shutdown

James Broome

Explore Azure Analysis Services for scalable analytics. Control costs via automation with Powershell & Azure DevOps in multi-environment setups.
Building a proximity detection pipeline

Building a proximity detection pipeline

Carmel Eve

Endjin's blog post details their project with OceanMind, using a serverless architecture and machine learning to detect illegal fishing.
Using complex objects in BDD Scenarios with SpecFlow

Using complex objects in BDD Scenarios with SpecFlow

Jonathan George

Explore Behavior Driven Development using SpecFlow. Learn to create complex test data objects in Gherkin feature files with Corvus.NET project.
C# 8.0 nullable references: non-nullable is the new default

C# 8.0 nullable references: non-nullable is the new default

Ian Griffiths

Explore C# 8.0's nullable references feature, as Ian discusses its impact on default nullability assumptions in this informative post.
C# teamwork: share project config with common Nuget Build Asset Packages

C# teamwork: share project config with common Nuget Build Asset Packages

Ian Griffiths

See how to manage consistent default configuration across all your .NET projects by using NuGet build assets.
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.
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.
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.
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.
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#.
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.
An Overview of the Azure CNAB Quickstarts Library

An Overview of the Azure CNAB Quickstarts Library

Howard van Rooijen

The Azure CNAB Quickstarts Library helps you get up and running with CNAB and Porter. We've built quickstarts covering solutions like WordPress, Ghost, Mattermost, and data platforms like Apache Airflow, SQL Server AlwaysOn clusters and Kubernetes features like an nginx ingress controller and an Azure AD enabled OAuth2 Proxy. We've condensed all our learnings from the past 9 months of working on the project and turned them into a 10 minute video which explains all the key concepts. We hope this video helps accelerate your own CNAB & Porter epiphanies!
Introducing the Azure CNAB Quickstarts Library

Introducing the Azure CNAB Quickstarts Library

Mike Evans-Larah

In partnership with Microsoft, we have released Azure CNAB Quickstarts Library on GitHub. CNAB (Cloud-Native Application Bundle) is a new specification designed for facilitating the packaging, installation, upgrading and uninstallation of cloud-native solutions in the cloud, on-premise or on the edge. We've created a number of quickstarts covering Apache Airflow, Azure Kubernetes Service, Ghost, Kubeflow, SQL Server Always On and Wordpress to help demonstrate the power of CNAB and Porter.
Azure Analysis Services - How to query all the measures in a model from .NET

Azure Analysis Services - How to query all the measures in a model from .NET

James Broome

Explore .NET querying methods for integrating Azure Analysis Services beyond data querying into dynamic UIs and APIs.
Azure Analysis Services: How to open a connection from .NET

Azure Analysis Services: How to open a connection from .NET

James Broome

Learn to integrate Azure Analysis Services in apps by establishing server connections. Follow this guide with code samples for essential scenarios.
NDC London 2020 - My highlights

NDC London 2020 - My highlights

Ed Freeman

Ed attended NDC London 2020, along with many of his endjin colleagues. In this post he summarises and reflects upon his favourite sessions of the conference including; "OWASP Top Ten proactive controls" by Jim Manico, "There's an Impostor in this room!" by Angharad Edwards, "How to code music?" by Laura Silvanavičiūtė, "ML and the IoT: Living on the Edge" by Brandon Satrom, "Common API Security Pitfalls" by Philippe De Ryck, and "Combatting illegal fishing with Machine Learning and Azure - for less than £10 / month" by Jess Panni & Carmel Eve.
NDC London Day 1

NDC London Day 1

Ian Griffiths

In this post, Ian describes some of the highlights from the NDC London conference
NDC London Day 3 Retrospective - from personal projects to developer comedy

NDC London Day 3 Retrospective - from personal projects to developer comedy

Jonathan George

Along with several of my endjin colleagues, I attended NDC London in January this year - here's a run through of the sessions I attended on Day 3 and my thoughts. This final day was a mixed bag, taking in talks on drumming and AKKA.net, as well as something a bit more close to home - a session from endjin's own Jess Panni and Carmel Eve on our recent project for OceanMind.
NDC London Day 2 Retrospective - Full Stack, from SPAs to high performance .NET Core via Websockets

NDC London Day 2 Retrospective - Full Stack, from SPAs to high performance .NET Core via Websockets

Jonathan George

Along with several of my endjin colleagues, I attended NDC London in January this year - here's a run through of the sessions I attended on Day 2 and my thoughts. This day was UI heavy, with sessions on Vuejs and UI testing, but I also learned more about GraphQL and writing high performance C# code.
NDC London Day 1 Retrospective - dangerous AI, microservices, diagnostics and Blazor

NDC London Day 1 Retrospective - dangerous AI, microservices, diagnostics and Blazor

Jonathan George

A retrospective of my first day at NDC London 2020, taking in sessions on AI and Machine Learning, Capability Mapping, Micro Frontends, Diagnostics and Blazor.
Azure Analysis Services - integration options using .NET, REST APIs and PowerShell

Azure Analysis Services - integration options using .NET, REST APIs and PowerShell

James Broome

Explore Azure Analysis Services in custom apps using SDKs, PowerShell cmdlets & REST APIs. Learn to choose the right framework in this guide.
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.
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.
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.
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.
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.
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.
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.
Incorporating software architecture into agile projects

Incorporating software architecture into agile projects

Carmel Eve

Software architecture and Agile project planning are often seen to be at odds. However, here at endjin we think that the way in which they intersect solves a lot of the common issues surrounding architecture. The key to successful architecture is constantly keeping the drivers in mind and having a tight communication loop as the architecture is implemented. These concepts are ones which are key to agile project management, and the combination of these two disciplines can be extremely powerful and successful when applied correctly.
Snowflake Connector for Azure Data Factory - Part 2

Snowflake Connector for Azure Data Factory - Part 2

Jess Panni

A code review with NDepend Part 2: The initial review

A code review with NDepend Part 2: The initial review

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 second in a blog series written as we carried out that process. This post focuses on the insight you can quickly gain just by glancing at the NDepend UI.
Enforce resource tagging with Azure Policy

Enforce resource tagging with Azure Policy

Mike Evans-Larah

Explore Azure Policy for proper tagging on resources and enabling tag inheritance from parent resource groups.
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.
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.
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.
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.
Async pitfalls: deferred work and resource ownership

Async pitfalls: deferred work and resource ownership

Ian Griffiths

Combining deferred execution with asynchronous operations can cause subtle problems. This post shows how to ensure correct operation when these idioms combine.
Whose package is it anyway? Why it's important to minimise dependencies in your solutions...

Whose package is it anyway? Why it's important to minimise dependencies in your solutions...

Carmel Eve

This is a post about the importance of reducing your dependencies as much as possible when designing solutions.If as much as possible is under your own control, there is far less room for synchronization errors and update conflicts.
Garbage collection, a memorandum on memory in C#

Garbage collection, a memorandum on memory in C#

Carmel Eve

Explore the process of .NET garbage collection and understand the behind-the-scenes of writing C# code in this insightful post.
Configuring SpecFlow for XUnit using new-style csproj

Configuring SpecFlow for XUnit using new-style csproj

Matthew Adams

We're talking about Cosmos DB at Future Decoded 2017!

We're talking about Cosmos DB at Future Decoded 2017!

Howard van Rooijen

We have lots of experience working with Azure Cosmos DB, and we're sharing some of our knowledge at Microsoft's Future Decoded event.
My first month as an apprentice at endjin

My first month as an apprentice at endjin

Ed Freeman

Structured apprenticeships provide a great way to build skills whilst getting real-life experience. Endjin's apprenticeship scheme has been refined over years, with an optimal mixture of training, project work, and exposure to commercial processes - a scheme which is designed to build strong foundations for a well-rounded Software Engineering consultant. This post explains the transition from university to an apprenticeship at endjin, including the types of work an apprentice could end up doing, and some examples of real-life learnings from a real-life apprentice.
How to choose the right .NET technology or "learn to stop worrying and love NetStandard2.0"

How to choose the right .NET technology or "learn to stop worrying and love NetStandard2.0"

Matthew Adams

The evolution of .NET is a complex one. We've put together a deck to help you understand what you should choose to use when.
Azure Tech Selector - 2017 Edition

Azure Tech Selector - 2017 Edition

Matthew Adams

We've just released an updated version of our Azure Technology Selector poster - helping you to choose the right Azure service, based on your use-case.
2 Day Microsoft Bot Framework Hackathon with Watchfinder

2 Day Microsoft Bot Framework Hackathon with Watchfinder

Howard van Rooijen

We ran a two day hackathon with Watchfinder and Microsoft to build a conversational experience to automate the 'sell your watch experience'.
My final year as a software engineering apprentice at endjin

My final year as a software engineering apprentice at endjin

Alice Waddicor

Alice reflects on her final year and an apprentice, what she's learned over the past three years, and the new skills and capabilities she's developed.
Is JavaScript still dead?

Is JavaScript still dead?

Matthew Adams

JavaScript is one of the most popular programming languages, but is it past its sell by date?
Advanced Azure Resource Manager template patterns – t-shirt sizing and optional resources

Advanced Azure Resource Manager template patterns – t-shirt sizing and optional resources

Richard Kerslake

Implement using parameters in Resource Manager templates for optional resource deployment and configuration.
Automating office security with Synology, Surveillance Station, OneDrive and Power Automate

Automating office security with Synology, Surveillance Station, OneDrive and Power Automate

Mike Evans-Larah

Read about how we set up automated backups of our office security camera footage and used Power Automate to alert us if anything went wrong
Welcome to an internship at endjin!

Welcome to an internship at endjin!

Ed Freeman

A career in software engineering doesn't need to start with a Computer Science degree. The underlying traits of problem solving, a willingness to learn and the ability to collaborate well can be built in any field. Internships provide a great way to get your foot-in-the-door in the professional world, and arm you with some real-life experience for future endeavours. This post describes an internship at endjin, including the type of work you could be asked to do and what you could learn.
How to package a web project for deployment from the command line

How to package a web project for deployment from the command line

Richard Kerslake

Creating a package to deploy a web project from the command line (for deployment into Azure) is not as easy as it should be. In this post we cover the whole process.
How to use Power BI Embedded with AspNetCore

How to use Power BI Embedded with AspNetCore

Matthew Adams

This post shows how to add a Power BI Embedded report to an ASP.NET Core application.
AWS vs Azure vs Google Cloud Platform - Mobile Services

AWS vs Azure vs Google Cloud Platform - Mobile Services

Jess Panni

My internship at endjin – New Proposition Development, Programming, and a very long list of acronyms

My internship at endjin – New Proposition Development, Programming, and a very long list of acronyms

Carmel Eve

During her two month internship we tried to expose her to as many different aspects of endjin as possible; from New Proposition Development, marketing, partner & business development activities, as well as our software engineering processes and the Microsoft Azure ecosystem.
Automating creation of new ALM environments using PowerShell and Azure DevOps

Automating creation of new ALM environments using PowerShell and Azure DevOps

Richard Kerslake

Did you know that you can fully automate the bootstrapping process of setting up an Azure DevOps enviornment? This post shows you how.
Deploying to Azure using Azure Resource Manager templates and Octopus Deploy

Deploying to Azure using Azure Resource Manager templates and Octopus Deploy

Richard Kerslake

Learn how to combine the power of Azure Resource Manager and Octopus Deploy for a frictionless Azure DevOps experience.
Using Postman to load test an Azure Machine Learning web service

Using Postman to load test an Azure Machine Learning web service

Richard Kerslake

Explore creating and testing an Azure ML Studio web service using Postman for efficient machine learning model production.
My Apprenticeship Retrospective

My Apprenticeship Retrospective

Mike Evans-Larah

In this post, Mike Larah reflects on his experiences going through the endjin three-year apprenticeship scheme
Using Azure Automation to run VMs during office hours only – using graphical runbooks

Using Azure Automation to run VMs during office hours only – using graphical runbooks

Richard Kerslake

We've improved our approach for saving money by turning off our virtual machines outside of office hours. This post explored how to do it using graphical runbooks.

Improve your Windows Command Prompt and PowerShell experience with ConEmu

Mike Evans-Larah

Mike Larah shares his tips for how to best customize ConEmu to improve your terminal experience for Windows Command Prompy and PowerShell
SpecFlow 2.0, NUnit3, Visual Studio and TeamCity

SpecFlow 2.0, NUnit3, Visual Studio and TeamCity

Matthew Adams

We recently upgraded our TeamCity based CI/CD environment, but we had to make some adjustments to fix failing tests.
Azure Resource Manager authentication from a PowerShell script

Azure Resource Manager authentication from a PowerShell script

Richard Kerslake

Learn how to authenticate against Azure Resource Manager using PowerShell, for fully automated deployments.
Endjin.Licensing now supports SHA256

Endjin.Licensing now supports SHA256

Howard van Rooijen

Microsoft have added SHA256 support to Signed XML, and Endjin.Licensing has been updating to take advantage of this breaking change.

CucumberJS Visual Studio Test Runner

Matthew Adams

We've built and open-sourced a Visual Studio Extension that provides basic support for discovering and running CucumberJS tests with Node.JS, in the Visual Studio Test Environment.
Using Lazy and ConcurrentDictionary to ensure a thread-safe, run-once, lazy-loaded collection

Using Lazy and ConcurrentDictionary to ensure a thread-safe, run-once, lazy-loaded collection

Mike Evans-Larah

In this post, Mike Larah discusses how to ensure your C# collections are thread-safe, only run-once, and are lazy-loaded.
Azure Batch - Time is Money in Big Compute

Azure Batch - Time is Money in Big Compute

James Broome

Consumption based pricing is a one of the USPs of Cloud PaaS services, but the default settings aren't necessarily optimised for cost. Significant savings can be made from understanding your workload.
A Step-by-step guide to setting up CucumberJS in Visual Studio 2015

A Step-by-step guide to setting up CucumberJS in Visual Studio 2015

Matthew Adams

This is a quick guide to setting up cucumber JS in Visual Studio with grunt.
Using Azure Resource Manager and PowerShell DSC to create and provision a VM

Using Azure Resource Manager and PowerShell DSC to create and provision a VM

Richard Kerslake

Explore Azure Resource Manager and PowerShell Desired State Configuration for provisioning and configuring Azure virtual machines.
Reduce Merge Conflicts in .NET Solutions with PowerShell based Git Hooks

Reduce Merge Conflicts in .NET Solutions with PowerShell based Git Hooks

Howard van Rooijen

Git has powerful extensibility points, which you can harness to automate your dev inner loop. In this post we examine how to use Git Hooks to reduce the occurrence of merge conflicts.
SpecFlow Extensions for Azure Storage Emulator

SpecFlow Extensions for Azure Storage Emulator

Howard van Rooijen

We use SpecFlow to write integration tests against Azure. In this post we share an Open Source SpecFlow extension for the Azure Storage Emulator.
Speed kills: decrease page load time and increase conversions with Azure CDN

Speed kills: decrease page load time and increase conversions with Azure CDN

Pascal Arnould

A CDN, short for Content Delivery Network, is essentially a network of servers set-up, in various geographic locations, with the aim of speeding up the delivery of content to end-users across the Internet.
Azure Automation scheduler and daylight saving time

Azure Automation scheduler and daylight saving time

Richard Kerslake

Everything in Azure runs in Coordinated Universal Time; learn how to deal with Daylight saving time in Azure Automation, so your jobs still run on time.
Visualise your Azure Table Storage data with Power BI

Visualise your Azure Table Storage data with Power BI

Alice Waddicor

You can easily visualise data stored in Azure Table Storage in Power BI. This guide shows you how.
Azure Web Apps: Package Restore against a private NuGet Feed

Azure Web Apps: Package Restore against a private NuGet Feed

Howard van Rooijen

If you have private NuGet feeds, restoring packages during a CI/CD process can be a challenge. This post provides a solution when working with Azure App Service.
Using Git for .NET Development: Part 5 – Staging Some Changes In A File But Not Others

Using Git for .NET Development: Part 5 – Staging Some Changes In A File But Not Others

Alice Waddicor

How do you selectively stage some of your changes in GIT? How does Visual Studio help? How can you do this on the command line?
Improve your SpecFlow scenarios with custom step argument transformations

Improve your SpecFlow scenarios with custom step argument transformations

Mike Evans-Larah

Explore how to use SpecFlow for human-readable specs and create reusable step argument transformations for easy readability.
25 useful steps missing from SpecFlow

25 useful steps missing from SpecFlow

Howard van Rooijen

We're huge fans of SpecFlow. We harvested 25 reusable steps from our various open source projects into a new extension that you can use to reduce your own boilerplate.
Amazingly Useful Chrome Developer Tips: #1 Inspecting dynamically created DOM elements

Amazingly Useful Chrome Developer Tips: #1 Inspecting dynamically created DOM elements

Alice Waddicor

Using a different New Relic application name per environment with Azure Cloud Services

Using a different New Relic application name per environment with Azure Cloud Services

Richard Kerslake

Just because you're using the cloud, doesn't mean you don't use traditional DTAP environments. But you do need to configure your cloud services to understand them.
You're hiring the wrong people: 10 tips to find great developers

You're hiring the wrong people: 10 tips to find great developers

Matthew Adams

Hiring developers is hard. Really hard. Here are some tips on how to make it easier on yourself.
Which programming language should I learn in 2015?

Which programming language should I learn in 2015?

Matthew Adams

If you were learning to programme today, which language should you choose, and why?
Reporting errors to New Relic from an Azure Worker Role

Reporting errors to New Relic from an Azure Worker Role

Richard Kerslake

In this post we demonstrate how to use New Relic to monitor an Azure Cloud Service Worker Role, step by step.
Extending Endjin.Retry with custom Retry Policies

Extending Endjin.Retry with custom Retry Policies

Howard van Rooijen

Endjin.Retry is our simple .NET library for handling transient errors, to make your Cloud applications more resilient and reliable.
Endjin.Licensing - Part 5: Real world usage patterns

Endjin.Licensing - Part 5: Real world usage patterns

Howard van Rooijen

We've open sourced a lightweight .NET based licensing framework we've been using internally over the last couple of years; in this post I'm going to highlight some real world usage scenarios.
Endjin.Licensing - Part 4: How to implement custom validation logic

Endjin.Licensing - Part 4: How to implement custom validation logic

Howard van Rooijen

Endjin.Licensing is our .NET based licensing framework; in this post we highlight its extensibility features, demonstrating how to add custom license validation logic.
Endjin.Licensing - Part 3: How to create and validate a license

Endjin.Licensing - Part 3: How to create and validate a license

Howard van Rooijen

Endjin.Licensing is our .NET based licensing framework; in this post we show how to create and validate a license using C#
Endjin.Licensing - Part 2: Defining the desired behaviour

Endjin.Licensing - Part 2: Defining the desired behaviour

Howard van Rooijen

We've open sourced a lightweight .NET based licensing framework; in this post we flesh out the behaviours we want the framework to support using Gherkin flavoured BDD specifications.
Endjin.Licensing - Part 1: Why build another licensing system?

Endjin.Licensing - Part 1: Why build another licensing system?

Howard van Rooijen

We've open sourced a lightweight .NET based licensing framework we've been using internally over the last couple of years. In this post I explain why we created it in the first place, rather than using existing offerings.
Generating and using a certificate to authorise Azure Automation

Generating and using a certificate to authorise Azure Automation

Alice Waddicor

Explore how to use Azure Automation for running VMs during office hours. Learn to create runbooks for automated tasks at pre-defined times.
Diagnostic logging with Azure SDK 2.5

Diagnostic logging with Azure SDK 2.5

Richard Kerslake

Learn how to use diagnostics in Azure Virtual Machines and Cloud Service Web or Worker Roles using the Azure SDK.
Refactoring by pattern using Regular Expressions and ReSharper search by pattern

Refactoring by pattern using Regular Expressions and ReSharper search by pattern

Alice Waddicor

Using SmartGit to follow the GitFlow branching and workflow model

Using SmartGit to follow the GitFlow branching and workflow model

Alice Waddicor

How do you use SmartGit to simplify your development workflow by using GitFlow?
TPL Dataflow by Example code samples for LINQPad

TPL Dataflow by Example code samples for LINQPad

Howard van Rooijen

TPL Dataflow, a potent yet lesser-known .NET framework, is ideal for high-performance data processing.
Using Azure Automation to run VMs during office hours only

Using Azure Automation to run VMs during office hours only

Richard Kerslake

Discover cloud computing's pay-as-you-use model and how turning off VMs outside office hours can save costs.
Elasticsearch gotchas and tips - part 2

Elasticsearch gotchas and tips - part 2

Richard Kerslake

We've delivered a number of Elasticsearch solutions on Azure. In this second post in the series, we share some useful tips.
Avoid circular dependencies with AngularJS Directives

Avoid circular dependencies with AngularJS Directives

Matthew Adams

How to use an $injector service to avoid a circular dependency error dynamically resolving templates in a templateRepository.
Using AngularJS decorators to resolve view templates by resource content type

Using AngularJS decorators to resolve view templates by resource content type

Matthew Adams

In this post we show how you can render a container based on content-type
Jasmine MetaRunner for TeamCity

Jasmine MetaRunner for TeamCity

Howard van Rooijen

Meta-Runners allow you to easily create reusable build components for TeamCity, in this post I demonstrate how to create a Meta-Runner to wrap Jasmine BDD Framework test runner.
Unit testing AngularJS with Visual Studio, ReSharper and TeamCity

Unit testing AngularJS with Visual Studio, ReSharper and TeamCity

Mike Evans-Larah

In this post, Mike demonstrates how you can test AngularJS with Visual Studio, ReSharper and TeamCity for the full local and CI/CD DevOps experience.
Using SemanticMerge to fix Git merge conflicts

Using SemanticMerge to fix Git merge conflicts

Alice Waddicor

How can you use the SemanticMerge tool to help you deal with GIT merge conflicts? Here's an overview of the process.
Gotchas when installing an Elasticsearch cluster on Microsoft Azure

Gotchas when installing an Elasticsearch cluster on Microsoft Azure

Richard Kerslake

We've built a number of Elasticsearch clusters on Microsoft Azure. This blog post contains some of our top tips and gotchas.
A Step by Step Guide to Testing NuGet Packages Locally

A Step by Step Guide to Testing NuGet Packages Locally

Pascal Arnould

Discover our tutorial on local NuGet package testing, filling documentation gaps with a concise, step-by-step guide.
How to retry commands in PowerShell

How to retry commands in PowerShell

Richard Kerslake

Transient failures can happen at any time. There are many useful frameworks for .NET, but what about PowerShell?
Create a custom TeamCity PowerShell MetaRunner to Notify NewRelic that new deployment has occurred

Create a custom TeamCity PowerShell MetaRunner to Notify NewRelic that new deployment has occurred

Howard van Rooijen

You can easily notify NewRelic that a deployment has occured. In this post I demonstrate how to turn a script into a reusable TeamCity Metarunner.
Using Git for .NET Development: Part 4 - Resolving Merge Conflicts

Using Git for .NET Development: Part 4 - Resolving Merge Conflicts

Alice Waddicor

How do you resolve GIT merge conflicts? Can Visual Studio help you at all? What are the best tactics?
Button Visual States in Xamarin.iOS

Button Visual States in Xamarin.iOS

Pascal Arnould

One way to manage a button visual state in iOS is by setting a different background image for each one of the UIControlState values available...
Event stream manipulation using Rx – Part 2

Event stream manipulation using Rx – Part 2

Richard Kerslake

Having described the problem space using Marble Diagrams, it's now time to create a real solution using Rx and the Observer pattern to process data from Windows Event Log.
Event stream manipulation using Rx – Part 1

Event stream manipulation using Rx – Part 1

Richard Kerslake

This blog post delves into using Rx to process the messages received from Windows Event Logs, so that they can be shaped in a way that is useful to us to consume.
Understanding dependency injection

Understanding dependency injection

Alice Waddicor

What is Dependency Injection? How does it help you develop software? Why should you use it? Is it a silver bullet for creating loosely coupled components?
Getting started with semantic logging

Getting started with semantic logging

Richard Kerslake

Implement semantic logging on Windows & .NET for richer diagnostics & analysis. Learn how Reactive Extensions enable powerful scenarios in this series.
A Step by Step Guide to Connecting to an Azure Virtual Machine with PowerShell Remoting

A Step by Step Guide to Connecting to an Azure Virtual Machine with PowerShell Remoting

Howard van Rooijen

Learn how to use PowerShell Remoting to connect to an Azure Virtual Machine; a useful technique for managing servers like cattle, not pets.
Using Git for .NET Development: Part 3 – branching and pushing your changes

Using Git for .NET Development: Part 3 – branching and pushing your changes

Alice Waddicor

How do you created branches in GIT? How do you push your changes to a remote server? How does Visual Studio help?
Using Git for .NET Development: Part 2 – basic operations and tools

Using Git for .NET Development: Part 2 – basic operations and tools

Alice Waddicor

How do you get started with GIT? How do you install it? What are the basic commands? How does Visual Studio help you?
Configuring TeamCity and YouTrack to use Office 365 for Email Notifications

Configuring TeamCity and YouTrack to use Office 365 for Email Notifications

Howard van Rooijen

This post shows how to use your Office 365 SMTP relay to enable email notification from TeamCity and YouTrack hosted in Azure.
Using Git for .NET Development: Part 1 – What is Git?

Using Git for .NET Development: Part 1 – What is Git?

Alice Waddicor

What is GIT? Why should you use it as a .NET Developer? How do you incorporate it into your workflow? How does Visual Studio help?

Downloading Windows Azure Subscription Files

Pascal Arnould

If you use Azure Management Studio, you can quickly setup your connections by importing your publish settings...
Reclaiming Space after updating to Windows 8.1

Reclaiming Space after updating to Windows 8.1

Howard van Rooijen

A quick tip of how to reclaim up to 10GB of space after updating to Windows 8.1
Azure From The Trenches: Updating Service Configuration Whilst Running In The Emulator

Azure From The Trenches: Updating Service Configuration Whilst Running In The Emulator

Mike Evans-Larah

A quick tip for updating your Azure cloud service configuration while running in the emulator
Azure Table Storage throws a StorageException when using DateTime.Min

Azure Table Storage throws a StorageException when using DateTime.Min

Pascal Arnould

1601 was the year that Pierre de Fermat and King Louis XIII of France were born, Robert Devereux was beheaded in the Tower of London, the Dutch defeated the Portuguese navy in the battle of Bantam Bay and the year Shakespeare's Hamlet is thought to have been performed for the first time. Monday January, 1st 1601 (in the Gregorian calendar) was a pretty uneventful day yet the first day of the 17th century is affecting millions today.
Bootstrap 3 At A Glance - Part One - Motivations

Bootstrap 3 At A Glance - Part One - Motivations

Matthew Adams

In this post we look at the history and motivations behind the Bootstrap CSS library, and the goals of the project.
Learning to Program – A Beginners Guide – Part Twelve – Dealing with Repetitive Tasks - Recursion in F#

Learning to Program – A Beginners Guide – Part Twelve – Dealing with Repetitive Tasks - Recursion in F#

Matthew Adams

In this post we'll look at recursion in F#...In this post we'll look at recursion in F#...
A Step by Step Guide to Automating TeamCity Backups

A Step by Step Guide to Automating TeamCity Backups

Howard van Rooijen

In this blog post, I provide a how-to guide for automating your TeamCity backups using a PowerShell script.
Learning to Program – A Beginners Guide – Part Eleven – More With Functions and Logic in F#: Minimizing Boolean Expressions

Learning to Program – A Beginners Guide – Part Eleven – More With Functions and Logic in F#: Minimizing Boolean Expressions

Matthew Adams

In this post we delve deeper into Function and Logic and look at minimizing Boolean Expressions with F#
A Step by Step Guide to Migrating a TeamCity Instance from One Server to Another

A Step by Step Guide to Migrating a TeamCity Instance from One Server to Another

Howard van Rooijen

Migrate your TeamCity instance with this guide, covering the step-by-step process when in-place upgrades aren't viable.
Learning to Program – A Beginners Guide – Part Ten – Getting Started With Operators in F#

Learning to Program – A Beginners Guide – Part Ten – Getting Started With Operators in F#

Matthew Adams

In this post, we'll look at how our function can work more like the other logical F# operators we've already used.
Assign a keyboard shortcut to collapse all projects in Solution Explorer

Assign a keyboard shortcut to collapse all projects in Solution Explorer

Pascal Arnould

Just so that I never ever forget this again. Here's how to assign a keyboard shortcut to collapse all projects in Visual Studio Solution Explorer.
Learning to Program – A Beginners Guide – Part Nine – Introducing Functions in F#

Learning to Program – A Beginners Guide – Part Nine – Introducing Functions in F#

Matthew Adams

In this post, we'll learn how to use F# to ease the pain for us.

What does sudo mean?

Pascal Arnould

I've always wondered what sudo means when I use it to run a command in a terminal.
Example of a full-width bleed using Bootstrap 3

Example of a full-width bleed using Bootstrap 3

Matthew Adams

See how to use Bootstrap 3 to create a full-page bleed.
Learning to Program - A Beginners Guide - Part Eight - Working With Logic

Learning to Program - A Beginners Guide - Part Eight - Working With Logic

Matthew Adams

In this post, we'll look at how we can bring logic to bear on our problems.

Xamarin platform setup gotchas: Final Edition!

Pascal Arnould

Last post on the topic and links to all the other entries centred around troubleshooting/setting up your Xamarin mobile dev environment.

Visual Studio, Xcode and VMware Fusion Shared Folders

Pascal Arnould

Xamarin lets you develop iOS applications using Visual Studio. This is obviously great for .NET Developers except that you currently have to go to Xcode (Apple's Developer tool) if you want to create the UI using a designer tool.
Learning to Program - A Beginners Guide - Part Seven - Representing Numbers

Learning to Program - A Beginners Guide - Part Seven - Representing Numbers

Matthew Adams

In post, we're going to look at the data memory in more detail, and learn how we can represent numbers in a computer.

Running the Windows Phone Emulator in VMware Fusion

Pascal Arnould

If you run Windows 8 on your Mac with VMware Fusion 5.0 , you might get the following error message when starting the Windows Phone emulator for the first time: The Windows Phone Emulator wasn't able to create the virtual machine.

More Xamarin platform setup gotchas

Pascal Arnould

Today my Xamarin trial expired - Sadface. But endjin generously supplied me with a new Xamarin.Android and Xamarin.iOS Business edition license, things were looking up - Happyface! However after activating the new license and upgrading to a newer version of Xamarin Studio on both my Mac and the guest Windows 8 OS, my master solution containing all the projects for the different platforms (Android, iOS and Windows Phone) was no longer building.
Angular.JS ngRepeat and Bootstrap layout bug on IE7

Angular.JS ngRepeat and Bootstrap layout bug on IE7

Matthew Adams

In this post we delve into a bug we discovered with Angular.JS and Bootstrap that appears in IE 7.
Learning to Program - A Beginners Guide - Part Six - A First Look at Algorithms

Learning to Program - A Beginners Guide - Part Six - A First Look at Algorithms

Matthew Adams

In this post we're going to take a look at algorithms.

Android Device Manager and SDK Location

Pascal Arnould

After going through the Xamarin installation instructions for Mac and Windows , I ended up in a situation where the AVD Manager ( Android Virtual Device Manager ) on my Windows VM would not let me create a new AVD...
Learning to Program – A Beginners Guide – Part Five – Running a program

Learning to Program – A Beginners Guide – Part Five – Running a program

Matthew Adams

Let's start our exploration of this architecture by looking at the Program Instructions memory.
Windows Phone Capabilities and enabling the camera in the emulator

Windows Phone Capabilities and enabling the camera in the emulator

Pascal Arnould

A short explanation of Windows Phone capabilities and how to enable the camera.
Introducing endjin composition framework 2.0 : Part 5 - Debugging

Introducing endjin composition framework 2.0 : Part 5 - Debugging

Mike Evans-Larah

Learn how to debug the endjin composition framework.
Learning to Program - A Beginners Guide - Part Four - A Simple Model of a Computer

Learning to Program - A Beginners Guide - Part Four - A Simple Model of a Computer

Matthew Adams

In this post, we're going to be taking a look at one representation of the hardware box - from a programmer's perspective.
Windows Phone Registration Failure: Error 0x64

Windows Phone Registration Failure: Error 0x64

Pascal Arnould

A quick fix to error 0x64 when registering a new Windows Phone device.
Introducing endjin composition framework 2.0 : Part 4 - ASP.NET MVC/WebAPI

Introducing endjin composition framework 2.0 : Part 4 - ASP.NET MVC/WebAPI

Mike Evans-Larah

Learn how to use the endjin composition framework inside ASP.NET MVC or Web API
Learning To Program - A Beginners Guide - Part Three - How Does a Computer Work?

Learning To Program - A Beginners Guide - Part Three - How Does a Computer Work?

Matthew Adams

Windows Run Commands for Developers

Pascal Arnould

The other day I wanted to bring up the Windows "Program and Features" panel using the run command (Win+R or just start typing in the Start screen in Win 8). Something I've done countless number of times in the past. For some reason, I had a complete blank and couldn't recall what that particular command was. So I thought it would be good to have a couple of tips and some of the most useful run commands for Developers (and everybody else) in one place.
Introducing endjin composition framework 2.0 : Part 3 - Using the content factory

Introducing endjin composition framework 2.0 : Part 3 - Using the content factory

Mike Evans-Larah

Learn how to use the endjin composition framework content factory
Retrying tasks with TPL, async and synchronous code

Retrying tasks with TPL, async and synchronous code

Matthew Adams

Dealing with Transient Faults is absolutely essential when working in The Cloud. We delve into the library we've created for dealing with this situation.
Learning To Program - A Beginners Guide - Part Two

Learning To Program - A Beginners Guide - Part Two

Matthew Adams

In this post, we're going to set up the tools that we're going to use in the rest of this course on Windows or Linux.
A step by step guide to installing an F# REPL environment on Linux

A step by step guide to installing an F# REPL environment on Linux

Matthew Adams

In this step-by-step guide, we'll take you through the process of setting up an F# REPL environment on Linux.
A step by step guide to installing an F# REPL environment on Windows

A step by step guide to installing an F# REPL environment on Windows

Matthew Adams

In this step-by-step guide, we'll take you through the process of setting up an F# REPL environment on Windows.
Xamarin platform setup gotchas

Xamarin platform setup gotchas

Pascal Arnould

Yesterday I attended the "C# and Mvvm - Developing apps for all of Android, iPhone and Windows" event hosted by Stuart Lodge at Modern Jago. In preparation for the day I had the daunting task of setting up my Mac for cross platform development with Xamarin. While most of it was fairly straight forward and well documented, I came across a few gotchas worth blogging about.
Introducing endjin composition framework 2.0 : Part 2 - Getting Started

Introducing endjin composition framework 2.0 : Part 2 - Getting Started

Mike Evans-Larah

Learn how to use the endjin composition framework for dependency injection.
Learning To Program - A Beginners Guide - Part One

Learning To Program - A Beginners Guide - Part One

Matthew Adams

Introducing endjin composition framework 2.0 : Part 1

Introducing endjin composition framework 2.0 : Part 1

Mike Evans-Larah

Learn why we created the endjin composition framework for dependency injection.
High-Res Prototyping Tips: How we eliminated waste and enabled collaboration

High-Res Prototyping Tips: How we eliminated waste and enabled collaboration

Paul Waller

This post discusses the importance of collaboration between designers and developers, including communication tips and a step-by-step guide.
PowerShell Best Kept Secrets: Splatting

PowerShell Best Kept Secrets: Splatting

Howard van Rooijen

Splatting is one of the most powerful, yet underused features of PowerShell. In this post we cover a walk-through of how to use this feature.
Prototyping and Proof of Concept: Charting and Data Visualization on the Microsoft Platforms

Prototyping and Proof of Concept: Charting and Data Visualization on the Microsoft Platforms

Matthew Adams

A proof of concept is not a quick and dirty hack, it's not a demo, or a technical spike.
A Step by Step Guide to using GitFlow with TeamCity – Part 4 – Feature Branches in TeamCity

A Step by Step Guide to using GitFlow with TeamCity – Part 4 – Feature Branches in TeamCity

Howard van Rooijen

In the final part of this series, we cover how to use TeamCity's feature branch abilities to support the GitFlow process.
Example Responsive Layout Using Bootstrap

Example Responsive Layout Using Bootstrap

Matthew Adams

See how to create a responsive website layout using Bootstrap.
Tips for implementing responsive designs using Bootstrap 3

Tips for implementing responsive designs using Bootstrap 3

Matthew Adams

We ran a retrospective of our first few Bootstrap-based HTML5/Javascript projects a few weeks back, and distilled some of the output into these top tips
Which programming languages should I learn: Beginners Edition

Which programming languages should I learn: Beginners Edition

Matthew Adams

If you were learning to programme today, which language should you choose, and why?
Which programming languages should I learn?

Which programming languages should I learn?

Matthew Adams

If you were learning to programme today, which language should you choose, and why?
A Step by Step Guide to using GitFlow with TeamCity – Part 3 – GitFlow Commands

A Step by Step Guide to using GitFlow with TeamCity – Part 3 – GitFlow Commands

Howard van Rooijen

This post finally covers the nitty-gritty of how you use the GitFlow extensions to drive the workflow.
A Step by Step Guide to using GitFlow with TeamCity – Part 2 – GitFlow - a Branching Model for a Release Cycle

A Step by Step Guide to using GitFlow with TeamCity – Part 2 – GitFlow - a Branching Model for a Release Cycle

Howard van Rooijen

In this post we show you how to get up and running with GitFlow.
A Step by Step Guide to using GitFlow with TeamCity - Part 1 - Different Branching Models

A Step by Step Guide to using GitFlow with TeamCity - Part 1 - Different Branching Models

Howard van Rooijen

Adopting Git means creating an entirely new mental model about how to version control your source code. Once you make the jump, there's no going back.

Back to the Future: HTML and Javascript in 2013

Matthew Adams

We take a look at the state of HTML and JavaScript in 2013; the good, the bad and the ugly.

RavenDB in the Cloud

Matthew Adams

Some thoughts on RavenDB after using it to build a content-managed website.
A step by step guide to building a Twilio voice app with Web API

A step by step guide to building a Twilio voice app with Web API

Mike Evans-Larah

Discover how to build Twilio voice apps using asp.net MVC and debug it using port forwarding tools.
Integration testing with Web API

Integration testing with Web API

Mike Evans-Larah

A quick example of how to set up integration testing for HttpClient and HttpServer

Agile:MK January 2013 Meeting

Howard van Rooijen

Endjin are proudly sponsoring the Agile Milton Keynes user group.
Calculating Distance using SQL Server Spatial CLR Types

Calculating Distance using SQL Server Spatial CLR Types

Howard van Rooijen

Sql Server Spatial Types Assembly is a hidden gem. In this post we show how to use SqlGeography.STGeomFromText and STDistance distance (in meters) between the two points.
Using the endjin composition framework in an MVC application

Using the endjin composition framework in an MVC application

Mike Evans-Larah

A quick guide to using the endjin composition framework with ASP.NET MVC Applications.

Windows 8 Development Camp

Mike Evans-Larah

A review of the Windows 8 App bootcamp help at Microsoft.
Day 1: PowerShell, BDD and Git

Day 1: PowerShell, BDD and Git

Mike Evans-Larah

Mike starts his first day as an Apprentice with an introduction to PowerShell and being onboarded to endjin's various tools and platforms, while attempting to automate the entire process.
TeamCity PowerShell

TeamCity PowerShell

Howard van Rooijen

To celebrate joining JetBrains Development Academy Board, we release a PowerShell modules to make working with TeamCity easier.
An Omega Geek's Guide to Learning PowerShell

An Omega Geek's Guide to Learning PowerShell

Howard van Rooijen

PowerShell is fantastic language for DevOps, automation and general scripting. Every developer should be familiar with it; here's a guide to some useful resources to help you learn it.
Where do my Visual States come from in Blend?

Where do my Visual States come from in Blend?

Matthew Adams

How does Expression Blend managed to find the Visual States exposed by the standard controls? How could you do the same with your own code?
Work Smarter with Convention Over Configuration and the Endjin Composition Framework

Work Smarter with Convention Over Configuration and the Endjin Composition Framework

Howard van Rooijen

We've added convention over configuration features to our Dependency Injection library - the endjin composition framework, to help improve your productivity.
Component Discovery and Composition II - Abstracting the container implementation

Component Discovery and Composition II - Abstracting the container implementation

Matthew Adams

A Step by Step Guide to MongoDB for .NET Developers

Howard van Rooijen

MongoDB has been taken a large amount of mindshare in the NoSQL space. In this blog post we share a simple step-by-step guide on how to get started as a .NET developer.
Component discovery and composition Part 1f: Fundamentals – Generalizing Registration

Component discovery and composition Part 1f: Fundamentals – Generalizing Registration

Matthew Adams

A follow up to "A Short Tale of a Deceptively Slow LINQ Expression"

A follow up to "A Short Tale of a Deceptively Slow LINQ Expression"

Howard van Rooijen

My last post caused a number of responses from the community. I discuss them here and provide a little bit more context.
A Short Tale of a Deceptively Slow LINQ Expression

A Short Tale of a Deceptively Slow LINQ Expression

Howard van Rooijen

In this post I delve into some performance analysis of an expensive loop that was taking over 200 seconds to run.
Component discovery and composition Part 1e: Fundamentals – Componentizing Registration

Component discovery and composition Part 1e: Fundamentals – Componentizing Registration

Matthew Adams

Component discovery and composition Part 1d: Fundamentals – Introducing Conventions

Component discovery and composition Part 1d: Fundamentals – Introducing Conventions

Matthew Adams

Component discovery and composition Part 1c: Fundamentals – Castle.Windsor

Component discovery and composition Part 1c: Fundamentals – Castle.Windsor

Matthew Adams

Component discovery and composition Part 1b: Fundamentals - MEF

Component discovery and composition Part 1b: Fundamentals - MEF

Matthew Adams

Component discovery and composition Part 1: Fundamentals

Component discovery and composition Part 1: Fundamentals

Matthew Adams