Darragh ORiordan

Hi! I'm Darragh ORiordan. I live and work in Auckland, New Zealand 🥝 enjoying the ocean 🏄 and building things on the web 💻 Contact me on Twitter!


Refactoring conditionals to strategies (in .Net/C#)

December 02, 2019

I’m doing some work on a legacy code base and there are some common refactorings I do over and over. One of my favourite improvements is making long lists of conditionals easier to read and especially test. I use the common refactor-to-strategies pattern from Martin Fowler to deal with these.

read more...

Formalising developer testing in a cross functional team to increase squad velocity

December 01, 2019

In a newly formed cross-functional team one of the more difficult things to get right is balancing the cadence between development and testing. An imbalance can acutely manifest itself in legacy systems where there are no automated regression tests. The testing team members have to perform enormous amounts of regression testing for ALL cases. Developers keep pushing work to some test queue and an undesirable backlog quickly forms.

read more...

Debugging specific mouse clicks in JavaScript

November 30, 2019

I recently needed to trigger the chrome debugger on a mouse click from an element that gets popped up based on a previous mouse click. The problem was that the code is old jQuery code that manually set handlers and it was all a bit spaghetti. I didn’t know where the click was registered to a handler or which parts of the code ran afterwards so adding a call wasn’t a great approach this time.

read more...

How to send a slack webhook message for an Azure DevOps pipeline task

November 03, 2019

I wanted to send a slack message when a deployment completed on Azure. It’s fairly straightforward but there are a couple of things I had to pull together from documentation on slack, PowerShell and azure. Here is the script I finished with.

read more...

Dynamically setting IP to deploy assets to an Azure storage account behind a firewall from DevOps agents

November 01, 2019

If you try to deploy a static React app to an Azure static site on a storage account that’s behind a firewall you need to allow all the IPs that will be connecting to the storage. The problem is that the range of possible IPs the devops agents use is huge and changes regularly.

read more...

Npm timeout when deploying node app to azure app service using yarn

October 29, 2019

I was trying to deploying a node app to azure app service recently but it kept timing out trying to download all the required modules. I was able to fix this by specifying an explicit network timeout for the npm install in my azure-pipelines.yaml file

read more...

How I configure jest on a typescript node application

October 22, 2019

Here is some of the configuration I have for a node application in typescript that builds on a CI system

read more...

How to also update the package.json version when using yarn update

October 21, 2019

If you run on a package, yarn will update the package and your yarn.lock file. This is totally fine. As long as you check in your lock file, your developers and team will all have the correct versions of libraries when they run yarn install. However it will not update the package.json with the new semver for the package. I kind of found this annoying, if only for aesthetic reasons I wanted to quickly see which minimum versions of packages I was using in package.json.

read more...

Adding a junit formatter to jest test results for a node app on Azure Pipelines

October 20, 2019

If you’re publishing a node app on Azure pipelines you will want to publish the output of your tests. The publish tests task on Azure has limited format support so you have to convert the test results to XML for processing.

read more...

How to configure a pipeline on Azure Devops to build and deploy serverless graphql and react client

October 19, 2019

I need to automate deploys on Azure Devops for a project I’m working on. I want it to work as cheaply as possible so serverless or PaaS was desirable. Read on to see the azure-pipelines.yaml file I used to make this work.

read more...

Incorrect integrity when fetching from the cache error when using yarn

October 10, 2019

I’ve found this happens sometimes if I manually change the package config. Simple fix.

read more...

Returning null from a GraphQL mutation in type-graphql

August 06, 2019

Null is not a GraphQL type so to return null from a GraphQL mutation you have to return a GraphQL type that is nullable. All GraphQL types are nullable by default so you can just return a bool in the schema but return void from the implementation. It shouldn’t be too common to have a null response though, even for a mutation it could be better to return a state of the created item.

read more...

Typescript error "does not satisfy the constraint new" when using InstanceType in typegoose

August 06, 2019

If you get an error when trying to use InstanceType from typegoose as a parameter to a method in typescript make sure you are importing it from typegoose explicitly. There is a thing called InstanceType defined in JavaScript already. Typescript will use this by default and that’s where the error is coming from.

read more...

How to find distinct items in an array in javascript or typescript

August 05, 2019

I have to sort a bunch of work items in to organisational areas so I needed to know what were the distinct categories of objects in an array. In C#/Linq there is a nice IEnumerable.Distinct(f(x)) method available but JavaScript doesn’t have something like this yet. I didn’t want to install a helper like lodash if I could avoid it. Luckily my list was simple strings so I was able to use ‘Set()‘.

read more...

How to await async functions in specific sequence using typescript

August 04, 2019

I was posting messages to a slack webhook recently and I wanted to post a list of messages in the correct order. I had to await each one before calling the next. I tried a few different methods but only one worked the way I expected it to.

read more...

How to log full objects in winston (hint... Use meta data)

July 30, 2019

I’m exploring the Azure Devops API at the moment and I find logging out the API responses is far better than trying to understand the documentation. It seems super obvious now but it took me some messing around to figure out that you need to supply the object as meta data to the winston logger!

read more...

How to check bitwise mask in typescript

July 29, 2019

I’m currently building a little app that talks to the Azure Devops API and I had to check a bitwise operator in typescript today. I hardly ever do this these days so it took me a bit of time to get it right!

read more...

A gitignore file for Katalon projects

June 23, 2019

You need to add a gitignore file to your katalon directory or you will have lots of compiled files in your repository and it will be harder to compare changes in diffs when reviewing pull requests. Here is a suitable git ignore file for Katalon projects.

read more...

How to use session cookie authentication for Katalon API integration tests

June 16, 2019

This post describes automatically logging in to a webpage to get a session cookie and subsequently using the cookie for API authentication in Katalon. It shows how you can pass the cookie through a global variable to make authenticated API calls.

read more...

How to force a rebuild on Heroku without pushing using heroku-release-retry plugin

March 02, 2019

I had a deploy on Heroku fail because of a database issue. The code deployed but a dependancy meant that the application couldn’t start. If you try to run you just get “Everything is up-to-date”. My code didn’t need to change but I wanted the “deploy” to be re run WITHOUT pushing a new commit.

read more...

A retrospective on mentoring four new developers

February 12, 2019

Late last year I had the pleasure of helping a team of students build a prototype for a non-profit here in Auckland. The non-profit needed a prototype to raise more funds and get feedback on their plan. I’ve helped run teams and mentor junior developers in large organisations. It’s much easier because the support, tools, frameworks, systems of the organisation are already available. For this project the student teams had a blank slate and had to decide on everything from how they would communicate with the sponsors to how they would host the software. I wanted to write down what I learned and note some of the mistakes I made so that I have a framework for the next time I help new developers!

read more...

When Mocha doesn't run tests in subfolders on either windows or your CI server

January 29, 2019

I use a Windows PC for development and I had a problem where some of my mocha tests were not running on my CI server. The issue was that I use GitLab’s CI system which uses a Linux docker image to run the tests so the difference was the OS. This would also affect teams with developers on both Windows machines and Macs. Here’s how I fixed it…

read more...

Adding static JavaScript files to a react typescript project

January 25, 2019

I had to import a JavaScript in to my React project with typescript and typescript gave me an error. It wasn’t causing my build to fail but it was annoying seeing it in the console. Here’s how I got rid of the error.

read more...

Fixing Docker and docker-compose named pipes error (code2)

January 24, 2019

Docker on Windows 10 sometimes breaks after an upgrade. When you try to list containers or use docker-compose you’ll get an error on the command line. Here is an easy way to fix this issue.

read more...

Be careful of the JWT hype train

January 23, 2019

I’ve been researching using node as a back end for a few months now and SO MANY node articles, courses and project “starters” on GitHub suggest using JWT on your client facing API as a session token. I think there’s way too much hype around it and people are using JWT because it’s shiny!

read more...

3 tips for starting and finishing side projects

January 22, 2019

Some of us like to make things for the web but everyone finds it super hard to find time to start and finish any side projects. If you’ve been thinking about something for a year but haven’t even started, here are some tips to help you start and finish more stuff!

read more...

How to add Bulma and PrismJs to a Gatsby project avoiding CSS conflicts

January 20, 2019

Bulma is a popular CSS library like bootstrap. It’s not too difficult to add to Gatsby but there are some tricky bits where you need some plugins and the CSS classes can conflict.

read more...

How to add cors protection to an express application

January 17, 2019

Cors protection is a recommended security configuration for any api. It protects your customers from unexpected attacks by blocking websites you haven’t approved. If you have a devOps team they will handle this for you. But if you are a single maker with an application on Heroku and front end on Netlify you need to implement this yourself.

read more...

Converting a road bike into an electric bicycle

November 25, 2018

This is the guide I wish I had when I was researching how to convert a 2013 Giant Defy road bike in to an electric bicycle using a Bafang centre drive kit.

read more...

Fuzzy Friday

May 31, 2018

Hi, thanks for signing up to the newsletter. Mary Meeker (Kleiner Perkins) has released the state of the internet report for 2018 - 294 pages of awesome . Personalised shopping and mobile advertising are growing like CRAZY!

read more...

Setting up a macbook for a windows developer

March 25, 2018

I recently got a macbook at work and I’m doing only web development these days so no Visual Studio. I had to do a bit of reading to get things set up and I don’t want to do it again so here is a post for me!

read more...

The Customer Workshop

November 21, 2017

I lead a team of developers that work on one of the busiest New Zealand websites. We have ~4 million members and ~850,000 unique users every day. Working at this kind of scale means the real people who buy and use our products can get lost behind user personas or Jira ticket numbers.

read more...

When agile gets dangerous

September 14, 2017

If you’re selling your teams on some form of agile but the reality they work in is completely different, you are damaging and demotivating your teams through confusion and an impossible to achieve vision. If you’ve adopted ‘agile’ do yourself a favor and check the health of the adoption right now.

read more...

Radical Candor in Practice

August 14, 2017

A.k.a. how to get the truth from your direct reports while you sit back and eat cake. You’ve been a manager for a year and you’re not sure it’s all going OK? You don’t know if you’re providing maximum value to your team or which specific aspects of your people leadership to improve?

read more...

Saving your windows lock screen images

July 26, 2017

Here is a quick one. One of my colleagues was trying to figure out how to get the stunning windows lock screen images. They are hidden away in a folder on windows but this script will get them, rename them to .jpg and place them in a folder on your desktop.

read more...

Giving your first machine learning workshop

June 20, 2017

Last week I offered to give a workshop on machine learning to share some of what I’ve learned so far. I had 2 goals for my workshop – first, I wanted to show everyone that they shouldn’t be afraid of machine learning. Second, I wanted to get people set up with anaconda so they can continue to learn themselves.

read more...

Cats and Dogs

May 25, 2017

Last week I had an amazing opportunity to present about machine learning and innovation to 110 people leaders at my company. It was a mixed audience of technical and non technical people.

read more...

Startup Weekend

May 25, 2017

Wow, it’s a week after Startup Weekend Auckland. I’ve had time to get my thoughts straight about the whole experience. I learned a hell of a lot of positive lessons about idea validation, about myself and about working in teams.

read more...

Create-react-app react-router and Heroku

April 30, 2017

I’ve been putting together a React app and I needed cheap, fast hosting so I went to put it on Heroku.

read more...

Entering my first kaggle competition

February 28, 2017

Three weeks ago I discovered the fast.ai course. They offer a practical deep learning course for coders where you get straight in to building neural networks. They provide a huge amount of support through wikis, forums, aws scripts and tooling, videos and book recommendations.

read more...

Fuzzy Friday

February 24, 2017

From lunch to acquisition, how Atlassian bought Trello . Success stories from developers who started at age 35,40,45 .

read more...

Webstock 2017 Part 1

February 19, 2017

Web Stock is tech conference like no other, held in Wellington, New Zealand. Once again I left feeling energized and impassioned after listening to all the speakers on such a wide range of subjects.

read more...

Webstock 2017 Part 2

February 19, 2017

Web Stock is tech conference like no other, held in Wellington, New Zealand. Once again I left feeling energized and impassioned after listening to all the speakers on such a wide range of subjects.

read more...

Fuzzy Friday

February 14, 2017

Seth Godin wants us to stop calling them soft-skills. A beautiful photo story of Faberge and his eggs.

read more...

Smart Bear Ready API

February 02, 2017

I recently had a problem where our test analysts use Ready API software from Smart bear but our API authentication does a custom hashing function on the content. For tests to work we had to hash the entire request and apply headers for each test step.

read more...

Swagger UI: Custom HMAC hash authentication headers

January 11, 2017

Last year I launched a new API for an integration project. It’s using Microsoft’s WebApi framework. I was looking for a fast way to document the API so I wouldn’t have to do much work and clients could use the API easily. After some research it was obvious that I needed Swagger.

read more...