Endjin - Home

Engineering Practices

Async pitfalls: deferred work and resource ownership

by Ian Griffiths

Asynchronous code has many traps for the unwary. In fact, it has plenty of ground that’s treacherous even for pathologically careful coders. For example, certain ways of using asynchrony can reduce the control you have over concurrency and ordering. This can result in subtle bugs, particularly when the asynchronous work operates on shared underlying resources. […]


(TL;DR This month I learnt a lot about the importance of package management, maintenance and the minimisation of dependencies.) It’s been a little while since my last blog, I’ve been pretty bogged down in a world of packages, .NET frameworks and testing. And it all started with what I thought would be a simple update […]


I’m very excited that Ian Griffiths has joined endjin as a “Technical Fellow”. This is a new career pathway branch we created especially for Ian, as he didn’t really fit into any of our existing roles; his skills and expertise exemplify a pathway that many software engineers desire, but few have the opportunity to achieve […]


Not coming from a background in computer science, the inner workings of a computer have always been somewhat of a mystery to me. This is something I’ve always meant to remedy but never quite gotten around to. When I transitioned from C++ to C# my main thought surrounding memory management was “well thank god I […]


I’m back! Hi everyone. It’s been a long while since my last blog. *Bows head in shame* Blogging is one of those things I know I should do more often, but I’m still not in the routine in which one needs to be in order to do it regularly. As a consequence, what usually happens […]


OpenAPI code generators for Visual Studio

by Howard van Rooijen

Building RESTful APIs is a common activity at endjin. If you’ve seen our API Maturity Matrix, you’ll realise that we spend quite a lot of time thinking about the strategy, governance, legal, commercial, and operational side of building APIs along with the standard concerns of design, development, quality, infrastructure and support. One of the most […]


The diversification of .NET technologies – from Windows Desktop Applications using WPF and WinForms, UWP, ASP.NET and ASP.NET Core, “portable” libraries, the various flavours of .NET Standard, .NET Core (and portable executables on MacOS and Linux) – have brought with them incompatibilities, and a huge problem with older (but well-used) libraries that aren’t built for […]


One very useful but little used pattern when working with Resource Manager templates, is the ability to use parameters to optionally deploy resources, constrain certain resource configurations based on other user defined parameters, or to toggle parameters based on other values. To give a couple of concrete examples, imagine we have a highly reusable template […]


I guarantee that any of you who have ever worked as, or with, a software engineer will have heard the phrase “it works on my machine!” before. This statement is so infamous that there’s even a certificate for it, that can be handed out to those who have defiantly claimed that the feature that they’ve […]


Automating R Unit Tests With VSTS

by Jess Panni

I recently demonstrated how it was possible to automate the deployment of R models to Azure Machine Learning through VSTS. Of course, this is only part of the story; what about testing? It is important to ensure that all production code is adequately tested, and R is no different. Writing unit tests for R models is straight-forward […]


1 2 3 6