I'm a software engineer by trade, specialising in node.js and backend technology. That will be my focus but I also run the business, so I might post some business chat too.


Latest blog posts

Rootless DIND for self-hosted GitHub Actions runners

technology rootless docker github github-actions by Simon Mayes (@msyea)

TL;DR checkout [github-actions-runner](https://github.com/msyea/github-actions-runner) running with rootless DIND on ubunu

Self-hosted GitHub Actions on ECS

technology github ecs github-actions by Simon Mayes (@msyea)

GitHub Actions are awesome right? They’re not perfect - but what tool is? Some 3rd party CICD tools are probably better but they would have to be significantly better to get over the native/3rd party barrier. After thoroughly reviewing features and competitors I don’t think any 3rd party is signifantly better and the native integration is first class. For better functionality you would have to migrate completely (inc. VCS) to a different platform (eg. GitLab).

Migrating to Sauce Labs

technology testing integration-tests sauce-labs selenium by Simon Mayes (@msyea)

Sauce Labs is an automated web and mobile testing cloud. They take on the difficulty of managing browsers, VMs, devices and emulators and allow you to concentrate on code.

Running mocha tests in parallel

technology testing mocha by Simon Mayes (@msyea)

Mocha by design runs tests in series. Often this is not efficient and you might want to run some or all of the tests in parallel.

Recommending VBA in 2018

technology excel vba programming by Simon Mayes (@msyea)

Update in 2021

It may not be VBA anyone but I still stand by my original advice:

Excel formulas, the world’s most popular programming language, is now Turing-complete. Go check it out! - Satya Nadella - Microsoft CEO

Introducing Edilora

technology edilora by Simon Mayes (@msyea)

I'm proud to introduce my new side-project: Edilora, the C2 and Planning app for organisations deploying teams in an outdoor environment.

Running a Windows app headless in a debian/node container

technology nodejs by Simon Mayes (@msyea)

Skip to “Now the meat of the post” if financial data doesn’t interest you.

I had a problem. I have been building a data analysis/visualisation app in Node/React for a client and have been sourcing my data from the undocumented/deprecated Yahoo Finance API. It turns out that (surprisingly) the undocumented/deprecated Yahoo Finance API doesn’t provide complete or consistent data for UK stocks (we’re interested in the fundamental and technical data points). So we had to find an alternative datasource, and boy was this hard.

Portable Tough Computing

technology nodejs galaxy 8+ by Simon Mayes (@msyea)

tl;dr I spent a long time establishing that OS and hardware doesn’t matter. It’s all about whether I can run my code and being productive. Luckily for me, my preferred tech stack runs pretty much consistently across most devices. I believe that Samsung Dex is the best option in the phone/desktop like environment category. Dex works pretty well but it’s hobbled by poor third-party software support and the fact you have to carry a giant puck-dock with you when a simple cable converter will do.

Stanford moves to Javascript

technology compsci by Simon Mayes (@msyea)

I came across this article on The Register this morning whilst perusing the tech press over a coffee.

Quick Rave About CircleCI

technology circleci vetcraft github composer npm bower gulp laravel by Simon Mayes (@msyea)

I’ve just deployed CircleCI {:target=“_blank”} for a VetCraft {:target=“_blank”}, a client of mine. Continuous Integration {:target=“_blank”} and Delivery {:target=“_blank”} is always impresses me. It follows our GitHub {:target=“_blank”} repository and when we commit to the development branch, it checks out the code, downloads our dependencies (Composer {:target=“_blank”}, NPM {:target=“_blank”} and Bower {:target=“_blank”}), runs our build script (Gulp {:target=“_blank”} for Laravel {:target=“_blank”}) and runs our tests (PHPUnit {:target=“_blank”}). If all is successful it gzips the results and scps it to our development server, brings the server down, runs database migrations, a few more tests and then brings the server back up.