19 June, 2020
1 min read
127 words
Pulling request logs out of Cloudflare with the log API: zone ID, scoped API key, the field list and a worked curl query.
13 June, 2020
1 min read
187 words
Attaching a UniFi UDM to an AWS Transit Gateway over VPN, using static routing because the UDM does not speak BGP.
15 May, 2020
1 min read
112 words
Relaying mail through Amazon SES from Postfix on Ubuntu, filling in the steps the AWS documentation leaves out.
12 May, 2020
1 min read
206 words
Running Selenoid beside the test runner in CI for parallel browser tests, with video recording and one Selenoid per build agent.
28 June, 2019
1 min read
160 words
Running the Salesforce CLI in Docker on AWS, with the browser-based auth replaced by an auth URL kept in SSM Parameter Store.
14 January, 2018
2 min read
342 words
Watching Pooq from Australia with a Korean Lightsail host, an nginx proxy and dnsmasq entries, good enough for 4K over NBN.
19 November, 2017
1 min read
141 words
Generating a custom x509 certificate for an Okta app over the API, capturing the kid, and injecting it back into the app.
23 May, 2017
1 min read
124 words
A docker-compose file and matching Nightwatch config for running Selenium standalone Chrome next to the app under test.
18 May, 2017
1 min read
76 words
Two-line AWS CLI recipes for encrypting and decrypting with KMS, for both binary and base64 ciphertext.
15 January, 2017
1 min read
12 words
The Windows user profile service logon error, the Microsoft article for it, and the default profile file you have to ask support for.
15 December, 2016
1 min read
141 words
Curl scripts that log the CloudFront X-Amz-Cf-Id whenever a response is slower than a threshold, plus a full connection timing breakdown.
21 November, 2016
1 min read
89 words
A dealer quoted $300 for a Mercedes B250 cabin filter. A German eBay seller wanted $42, and the swap takes ten minutes with no tools.
8 June, 2016
1 min read
132 words
Moving a large MongoDB dump into DynamoDB with dyngodb2, including the sed passes and file splitting needed to survive the JSON format.
28 April, 2016
8 min read
1592 words
Three weeks through Turkey, Greece, Hungary, Poland, Czech, Germany, Italy, Switzerland, Austria, France, the UK and the Netherlands.
18 November, 2015
1 min read
133 words
Renewing a Let's Encrypt certificate from cron with the webroot plugin, the matching nginx SSL block, and a stronger dhparam.
16 November, 2015
1 min read
58 words
Caching app generated pages on F5 AAM: the headers it needs, the policy setting that honours them, and the debug commands.
11 November, 2015
1 min read
45 words
Firing an ad-hoc HTTP POST from the Chrome devtools console with XMLHttpRequest, and why to load a same-origin page first.
2 September, 2015
2 min read
378 words
What TAC actually covers after a Victorian crash that was not your fault, and the income and loss gaps you are left carrying.
13 May, 2015
1 min read
98 words
Contracting pays about 30% more, but super, agency fee, annual and personal leave eat about 25% of it. The maths on whether it is worth it.
9 May, 2015
1 min read
128 words
Unlocking an Optus ZTE F286 with a generated NCK code and a dial string, instead of paying an unlock service for a $15 phone.