Browse our archives by topic…
Engineering Practices
C# 11.0 new features: ref fields and the scoped keyword
C# 11.0 expanded high-performance, low-allocation functionality. This post describes the importance of the added support for ref fields, and how the scoped keyword relates.
adr - A .NET Tool for Creating & Managing Architecture Decision Records
Architectural Decision Records (ADRs) capture context, options, decisions, and consequences. dotnet-adr is a .NET tool for managing ADRs.
Data and AI Engineering Maturity - Fix our problems before we hit the buffers
As data and AI become the engine of business change, we need to learn the lessons of the past to avoid expensive failures.
No-code/Low-code is software DIY - how do you avoid DIY disaster?
No-code/Low-code democratizes software development with little to no coding skills needed. But how do you evaluate if software DIY is the right choice for you?
Architecture Decision Records
Explore the benefits of Architecture Decision Records (ADRs) in technical design, with real-world examples applied to different scenarios.
Agile teams often get their planning and priorities wrong
Do you struggle to manage conflicting demands from multiple stakeholders, even when they have agreed about the relative priority of their requests? Apply a budgeting methodology to agile projects for better planning and communication with the team and wider stakeholders.
Rx.NET v6.0 Now Available
For the first time since 2020, a new release of Rx.NET is available, supporting .NET 6 and .NET 7.
Version Control in Databricks
Explore how to implement source control in Databricks notebooks, promoting software engineering best practices.
Exploring OpenChain: From License Compliance to Security Assurance
Open-source software has become an essential part of many organisation's software supply chain, however, this poses challenges with license compliance and security assurance.
C# 11.0 new features: Span<char> pattern matching
C# 11.0 adds some new pattern matching features. In this post, Ian shows the new support for matching lists.
Ask the right questions to get your data insights projects back on track
Learn about the thinking behind endjin's Power BI Maturity assessment by applying Wardley Doctrine, and asking more questions.
Using the Playwright C# SDK to automate 2FA authentication for AAD and MSA
Learn to configure AAD or MSA 2FA profiles for UI automation testing with Time-based One-Time Passwords.
Creating Pester Unit Tests in PowerShell
Why you should make writing unit tests a regular practice and how they will improve your code. This blog explains how to write unit tests in PowerShell using Pester.
C# 11.0 new features: list pattern matching
C# 11.0 adds some new pattern matching features. In this post, Ian shows the new support for matching lists.
Data validation in Python: a look into Pandera and Great Expectations
Implement Python data validation with Pandera & Great Expectations in this comparison of their features and use cases.
How to setup Python, PyEnv & Poetry on Windows
Explore using Python virtual environments & Poetry on Windows for smoother workflows, with a script & guide to enhance your dependency management experience.
C# 11.0 new features: newlines in string interpolation expressions
C# 11.0 enhances string literals with new features. Discover how multiline interpolated strings boost readability in Ian's insightful post.
C# 11.0 new features: UTF-8 string literals
C# 11.0 adds various improvements to string literals. In this post, Ian explains how we can now create UTF-8 string literals.
Adventures in GitHub Actions: Episode 1 - Goodbye Azure DevOps, Hello GitHub Actions
This series will follow our ongoing journey of migrating the CI/CD pipelines for our many Open Source repositories, from Azure DevOps to GitHub Actions.
How To Implement Continuous Deployment of Python Packages with GitHub Actions
Discover using GitHub Actions for auto-updates to Python packages on PyPI, assessing its role in Continuous Deployment.
C# 11.0 new features: raw string literals
C# 11.0 adds various improvements to string literals. In this post, Ian explains how raw string literals can make your code more readable.
How to design APIs for Accessibility
Learn how accessibility-aware API design creates a great experience for all developers, not just those with accessibility needs.
Lazy and once-only C# async initialization
Performing lazy and/or just-once initialization is a simple optimization. But what if the initialization is async?
How to sign your git commits
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.
In Defence of Squash Commits
Encapsulation is a powerful tool. Squash commits provide a way to encapsulate Git commit history.
Continuous Integration with GitHub Actions
This post gives an overview of Continuous Integrations and shows how you can implement it with GitHub Actions, with an accompanying example Python project
Publishing Scripts to the PowerShell Gallery
Explore how to share a function from a PowerShell module as a standalone script, without maintaining two code versions.
Using Azure CLI Authentication within Local Containers
Fix broken dev loop with containerized apps on Azure CLI for Windows. Learn a workaround to avoid using outdated Azure CLI versions.
How to apply behaviour driven development to data and analytics projects
In this blog we demonstrate how the Gherkin specification can be adapted to enable BDD to be applied to data engineering use cases.
Extract insights from tag lists using Python Pandas and Power BI
Discover how to extract insights from spreadsheets and CSV files using Pandas and Power BI in this blog post.
Testing Power BI Reports with the ExecuteQueries REST API
Explore DAX queries for scenario-based testing in Power BI reports to ensure data model validity, rule adherence, and security maintenance.
Introduction to Containers and Docker
Explore containerisation & Docker for app development & deployment. Learn to create containerised applications with examples in this intro guide.
Why you should care about the Power BI ExecuteQueries API
Explore the benefits of Power BI's new ExecuteQueries REST API for developers in tooling, process, and integrations.
Setting up multiple WSL distribution instances
This blog post explains how to set up multiple instances of a Linux distribution in the Windows Subsystem for Linux.
Flex Your DevSecOps Muscles With Bicep (and get started with our cheat sheet)
Bicep provides a significant improvement in tooling for organisations seeking to deploy infrastructure as code on Microsoft Azure.
How to enable intra-business communication using user stories, BDD specs and a ubiquitous language
Endjin uses user stories, BDD specs, and a ubiquitous language to bridge the communication gap between stakeholders and tech teams.
How to test Azure Synapse notebooks
Explore data with Azure Synapse's interactive Spark notebooks, integrated with Pipelines & monitoring tools. Learn how to add tests for business rule validation.
How do I know if my data solutions are accurate?
Data insights are useless, and even dangerous (as we've seen recently at Public Health England) if they can't be trusted. So, the need to validate business rules and security boundaries within a data solution is critical. This post argues that if you're doing anything serious with data, then you should be taking this seriously.
The importance of specific & immutable dependency versions
This post describes the reasons for choosing specific & immutable dependency versions in your software.
GitOps: Not Just For Kubernetes!
Discover how GitOps, often used for Kubernetes management, can benefit a broader audience.
Where are you going wrong when choosing to buy, not build?
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?".
How to use Axios interceptors to poll for long running API calls
Explore using Axios interceptors to streamline UI logic for async HTTP APIs, addressing long-running operations and client coordination efficiently.
A simple invite user flow for AAD B2C (without custom policies)
Explore an alternative "invite user" flow for Azure AD B2C, simplifying authentication without custom policies in SaaS applications.
Reactive Extensions for .NET at dotnetsheff
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.
Debugging web apps in Visual Studio with custom browser configurations
Discover how to auto-open browsers in private mode or with custom profiles for web app debugging in Visual Studio.
Why Power BI developers should care about the read/write XMLA endpoint
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.
C# 8.0 nullable references: getting started in an existing codebase
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
Ensure Power BI report quality by connecting to tabular models, executing scenario-based specs, and validating data, business rules, and security.
Testing Power BI Dataflows using SpecFlow and the Common Data Model
Ensure reliable insights with endjin's automated quality gates for validating Power BI Dataflows in complex solutions.
Azure Analysis Services - how to save money with automatic shutdown
Explore Azure Analysis Services for scalable analytics. Control costs via automation with Powershell & Azure DevOps in multi-environment setups.
Building a proximity detection pipeline
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
Explore Behavior Driven Development using SpecFlow. Learn to create complex test data objects in Gherkin feature files with Corvus.NET project.
Azure Analysis Services: How to update the expression for a calculated column from .NET
Learn how to update Azure Analysis Services model schemas in .NET apps using AMO SDK for user-driven analysis.
C# teamwork: share project config with common Nuget Build Asset Packages
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
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
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
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
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
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.
Optimising C# for a serverless environment
Tour our OceanMind project using Azure Functions for real-time marine telemetry processing. Learn optimization techniques for serverless environments.
High-performance C#: a test pattern for ref structs
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
Endjin applies scientific experimentation to software development for validated solutions, using hypotheses for confident designs.
Azure Analysis Services - How to process an asynchronous model refresh from .NET
Learn to use Azure Analysis Services in custom apps via REST API in .NET for efficient async model refreshes.
Power BI Data Type Mappings
Explore Power BI data types across mediums, learn their corresponding names, and simplify query conversions with this informative blog and report.
C# developers! Your scoped components are more dangerous than you think.
Discover the challenges and alternatives of managing scoped component lifetimes with dependency injection.
Azure Analysis Services: How to execute a DAX query from .NET
Explore endless possibilities with dynamic DAX queries in C# for Azure Analysis Services integration in custom apps using the provided code samples.
An Overview of the Azure CNAB Quickstarts Library
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
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
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
Learn to integrate Azure Analysis Services in apps by establishing server connections. Follow this guide with code samples for essential scenarios.
NDC London Day 1
In this post, Ian describes some of the highlights from the NDC London conference
Comparing GitHub Actions and Azure Pipelines: High-level concepts
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.
Design patterns in C# - The Builder Pattern
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
Explore using AzureAD with Az module in PowerShell Core, as Az may not fully replace AzureAD. Learn to utilize both for optimal functionality.
How to create a Power BI workspace in an Azure DevOps Pipeline using Powershell
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
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.
Agile Architecture: Painting by Numbers
Creating a architecture in an iterative and incremental solution delivery is challenging. I've evolved an approach akin to Painting By Numbers, and am inspired by a quote from the artist and film maker Dave McKean.
A code review with NDepend Part 2: The initial review
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
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
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.
ML.NET, Azure Functions and the 4th Industrial Revolution
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.
A conversation about .NET, The Cloud, Data & AI, teaching software engineers and joining endjin with 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
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
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.
Using Step Argument Tranformations in SpecFlow to pass null values into scenarios
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
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
Explore TPL dataflow in this second blog of our series. Learn how this .NET library simplifies parallel data processing with a pipeline model.
Async pitfalls: deferred work and resource ownership
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...
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.
Thoughts about .NET, The Cloud, AI, ML, and teaching software engineers
Ian Griffiths recently joined endjin as a Technical Fellow. We had a long fireside chat, which has been broken down into a 5 part series covering .NET, the Cloud, AI, ML, teaching software engineering, and why he joined endjin.
OneNote - helping me to find my feet in research
Everyone learns differently. In this post Carmel describes how OneNote can be used to aid and enhance research. As an avid note taker and blogger, she highlights how the ability to Ctrl-F into written text in OneNote has greatly improved her productivity!
Garbage collection, a memorandum on memory in C#
Explore the process of .NET garbage collection and understand the behind-the-scenes of writing C# code in this insightful post.
Branches, builds and modern data pipelines. Let's catch-up!
As an apprentice engineer at endjin, you cover a lot of ground, especially at a consultancy which works with the latest and greatest tools to solve its clients' problems. Learn about endjin's Modern Data Platform, which is a culmination of IP, processes and knowledge built from years of implementing high-performance data-driven solutions. Also learn about the types of tools an apprentice gets to use, and the types of things an apprentice learns along the way.
OpenAPI code generators for Visual Studio
Using the recently Open Sourced OpenAPI SDK, we create a Visual Studio extension from converting OpenAPI specificaitons between YAML and JSON formats.
How to choose the right .NET technology or "learn to stop worrying and love NetStandard2.0"
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.
Advanced Azure Resource Manager template patterns – t-shirt sizing and optional resources
Implement using parameters in Resource Manager templates for optional resource deployment and configuration.
Automating creation of new ALM environments using PowerShell and Azure DevOps
Did you know that you can fully automate the bootstrapping process of setting up an Azure DevOps enviornment? This post shows you how.
"But it works on my cloud!" - are your developers still making the same mistakes in a world of DevOps and PaaS services?
In the world of DevOps, cloud and platform services, how does a developer's "definition of done" need to change? This post argues that as the silos of development and operations are broken down, the responsibility of understanding the whole solution increases meaning, to truly take advantage of the cloud, the need for quality and professionalism is critical for success.
Deploying to Azure using Azure Resource Manager templates and Octopus Deploy
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
Explore creating and testing an Azure ML Studio web service using Postman for efficient machine learning model production.
TeamCity MetaRunner for creating Release Annotations in Azure Application Insights
Meta-Runners allow you to easily create reusable build components for TeamCity, in this post I demonstrate how to create a Meta-Runner to create Azure Application Insights Release Annotations.
Year 2 as a software engineering apprentice at endjin
Alice reflects on year 2, being given more responsibility, diving deeper into all aspects of software delivery, and the good habits she's been building.
Machine Learning - the process is the science
What do machine learning and data science actually mean? This post digs into the detail behind the endjin approach to structured experimentation, arguing that the "science" is really all about following the process, allowing you to iterate to insights quickly when there are no guarantees of success.
Improve your Windows Command Prompt and PowerShell experience with ConEmu
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
We recently upgraded our TeamCity based CI/CD environment, but we had to make some adjustments to fix failing tests.
ILMerge Meta-Runner for TeamCity
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 ILMerge functionality.
Azure Resource Manager authentication from a PowerShell script
Learn how to authenticate against Azure Resource Manager using PowerShell, for fully automated deployments.
CucumberJS Visual Studio Test Runner
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.
Chaos with a rhythm - controlling innovation
Running a start-up or bootstrapping a new product within an established business can feel pretty chaotic. We talk about strategies for managing the time of a team, and ensuring that you become predictable.
A Step-by-step guide to setting up CucumberJS in Visual Studio 2015
This is a quick guide to setting up cucumber JS in Visual Studio with grunt.
Reduce Merge Conflicts in .NET Solutions with PowerShell based Git Hooks
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
We use SpecFlow to write integration tests against Azure. In this post we share an Open Source SpecFlow extension for the Azure Storage Emulator.
Using Git for .NET Development: Part 5 – Staging Some Changes In A File But Not Others
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
Explore how to use SpecFlow for human-readable specs and create reusable step argument transformations for easy readability.
You're hiring the wrong people: 10 tips to find great developers
Hiring developers is hard. Really hard. Here are some tips on how to make it easier on yourself.
A step by step guide to choosing the right Azure technology for your solution
To help guide the client through the selection process (and to act as an aide memoire when we come to try and remember why particular choices were made), we created a handy flow-chart to take you through the technology landscape, and suggest some recommended-practice solutions.
Generating and using a certificate to authorise Azure Automation
Explore how to use Azure Automation for running VMs during office hours. Learn to create runbooks for automated tasks at pre-defined times.
Refactoring by pattern using Regular Expressions and ReSharper search by pattern
Using SmartGit to follow the GitFlow branching and workflow model
How do you use SmartGit to simplify your development workflow by using GitFlow?
Elasticsearch gotchas and tips - part 2
We've delivered a number of Elasticsearch solutions on Azure. In this second post in the series, we share some useful tips.
Using SemanticMerge to fix Git merge conflicts
How can you use the SemanticMerge tool to help you deal with GIT merge conflicts? Here's an overview of the process.
A step by step guide to developing Visual Studio item templates using SideWaffle
In this post, we explore the use of SideWaffle to create a frictionless experience for developers wanting to create repeatable plugins.
A Step by Step Guide to Testing NuGet Packages Locally
Discover our tutorial on local NuGet package testing, filling documentation gaps with a concise, step-by-step guide.
Create a custom TeamCity PowerShell MetaRunner to Notify NewRelic that new deployment has occurred
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
How do you resolve GIT merge conflicts? Can Visual Studio help you at all? What are the best tactics?
Understanding dependency injection
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
Implement semantic logging on Windows & .NET for richer diagnostics & analysis. Learn how Reactive Extensions enable powerful scenarios in this series.
Using Git for .NET Development: Part 3 – branching and pushing your changes
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
How do you get started with GIT? How do you install it? What are the basic commands? How does Visual Studio help you?
Using Git for .NET Development: Part 1 – What is Git?
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?
Apprenticeship Week 2 – Getting Started with Behaviour Driven Development
Delving a little deeper into Behaviour Driven Development and Specification by Example.
A Step by Step Guide to Automating TeamCity Backups
In this blog post, I provide a how-to guide for automating your TeamCity backups using a PowerShell script.
A Step by Step Guide to Migrating a TeamCity Instance from One Server to Another
Migrate your TeamCity instance with this guide, covering the step-by-step process when in-place upgrades aren't viable.
Introducing endjin composition framework 2.0 : Part 1
Learn why we created the endjin composition framework for dependency injection.
A Step by Step Guide to using GitFlow with TeamCity – Part 4 – Feature Branches in TeamCity
In the final part of this series, we cover how to use TeamCity's feature branch abilities to support the GitFlow process.
A Step by Step Guide to using GitFlow with TeamCity – Part 3 – GitFlow Commands
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
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
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.
Integration testing with Web API
A quick example of how to set up integration testing for HttpClient and HttpServer
Day 1: PowerShell, BDD and Git
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
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
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.
On .NET Rocks! Talking about Sharp Architecture, Templify and StyleCop
Long time listener, first time guest. I was invited to speak on the .NET Rocks! Podcast, to talk about Sharp Architecture and various other Open Source projects I've been involved with.
StyleCop and StyleCop for ReSharper have merged
We've decided to combine the StyleCop and StyleCop for ReSharper code bases to make long term maintenance easier.
A Step by Step Guide to Hosting YouTrack in IIS 7
Step-by-step guide on setting up YouTrack and using IIS as a reverse proxy for custom domain access.
A Step by Step Guide to Hosting TeamCity in IIS 7
Step-by-step guide on setting up TeamCity and using IIS as a reverse proxy for custom domain access.