Darragh ORiordan

Hi! I'm Darragh ORiordan.

I live and work in Auckland, New Zealand enjoying the mountains and the ocean.

I build and support happy teams that create high quality software for the web.

Contact me on Twitter!


Get new posts, curated tech articles and coding tips!

Articles

Azure App Service reuse node modules on host for speed

October 04, 2020

If you are deploying a node app to Azure App Services you can deploy the node_modules folder as part of the deploy, or you can reinstall the runtime node modules on the host each time. There are some advantages and disadvantages to taking either option.

read more...

Which http status code to use for no search results found?

July 04, 2020

I was implementing a search REST API and was thinking about the no results status. There are a couple of options that are somewhat valid. There is no perfectly “right” answer and the discussion exposes care for API design, knowledge of http and care for developers who will be consuming the api.

read more...

Add AWS OpenApi extensions to your Swagger specification on NestJS

March 19, 2020

I recently had to add open api extensions for an AWS gateway to the output of Nest’s swagger/openAPI tool. This is how I did it and what I learned.

read more...

@Decorator caching in NestJS with type-cacheable

March 11, 2020

I needed to cache some data in a NestJS application. Nest provides an awesome module for caching responses from nest http or microservice responses from controllers. But this Nest caching module doesn’t easily allow you to cache from any method using the decorators.

read more...

TSLint is deprecated: How to upgrade to ESlint

March 06, 2020

I recently upgraded a typescript project from TSLint to ESLint. I started with the migration tool but ended up just doing it manually. Here’s why and how it went…

read more...

How to setup TSLint and Prettier for TypeScript projects

February 11, 2020

TSLint will help us identify potential issues in our code by examining how we use language features. Prettier will format code consistently but needs some configuration to work with TSLint. Together they make code-reviews easier and faster because if you run both of them you will identify many common code review errors before pushing your code. There needs to be some configuration to have both work together. Here is my cheatsheet for setting this up on a project.

read more...

10 RFP response signals to watch out for

January 30, 2020

When you’re reviewing RFP (Request for proposal) responses you make sure that the provider has met all your specified requirements. A provider missing a requirement on the proposal is a bad signal. Then you weigh the response details against each other and finally the price gets calculated and you choose. But here are 10 specific signals outside of the standard stuff above that I look for.

read more...

How to have fewer, more effective meetings

January 26, 2020

According to research by Professor Steven Rogelberg 50% of meetings are seen as engaging, this means that 50% are not. From my own experience I would have to agree that most meetings are not very useful. So many meetings would be better as an email or a wiki document.

read more...

Should I apply for a team lead role if I'm not 'technical'?

January 13, 2020

I was asked for some advice recently - “Should I apply for this open team lead role if I am not technical?” In this case I found out that “technical” meant “is a software engineer”. If you’re employed in a software product development organisation already then the short answer is yes, you absolutely should.

read more...

4 hacks for lazy team leads

January 10, 2020

I’m a lazy team lead. I like to ‘free up’ as much time as possible at work. I run away from ‘busy work’ like it’s on fire. Here are four rules of thumb I use to decrease the amount of time I spend doing some management stuff so I have time to think and work on more valuable things.

read more...

How I enhance pull request quality on GitHub and Azure DevOps

December 29, 2019

Code reviews and PRs are deservedly known as a fantastic way to improve code and product quality. I find that having a checklist is super handy for remembering all the checks to perform and the context to give a reviewer.

read more...

How to prioritize too many feature requests

December 18, 2019

There’s always more work to do than time available to do it. Effective prioritisation is very important to provide the focus to be successful at work. In general prioritisation is some product of or applied to possible tasks. The tasks should be aligned to your strategy. There are some well known frameworks for prioritisation that I find useful. I’ll describe them here and talk about how to choose one with your team.

read more...

Some errors to avoid in JavaScript

December 12, 2019

I was refactoring some legacy JavaScript recently and saw some things I needed to improve. Here are the things I noticed with some descriptions.

read more...

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...

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...

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...

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 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...

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...

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...