June 8, 2020

Fix Macbook Pro Unstable Bluetooth

Solved problems with bluetooth audio crackling, cutting out and disconnecting, on MacBook Pro by running this: sudo defaults write /Library/Preferences/com.apple.airport.bt.plist bluetoothCoexMgmt Hybrid

July 16, 2019

Multi-File CircleCI Config

CircleCI configuration for complex projects can grow very large. By default you have to store all that configuration in a single .circleci/config.yml which quickly gets unmanageable. Compounded with that, is that if you are using the on-prem CircleCI Enterprise, you are limited to using CircleCI 2.0 syntax, which is missing some really useful code reuse features like Commands, Executors and Orbs. I was frustrated by these problems on a recent project with complex CI requirements, so, with a little nudge by a colleague who knew the CircleCI CLI inside out, I came up with a solution… Read more

July 4, 2019

How to SHELL for compatible Makefiles

The upshot is if you care about maximum compatibility with different versions of GNU Make, don’t use .SHELLFLAGS just put all your args in-line in the SHELL variable, and make sure to always always use -c as your last argument. E.g. for bash in “strict mode” SHELL := /usr/bin/env bash -euo pipefail -c But why? I really care about the out of the box development experience on projects I maintain. For me, this currently means ensuring that you can at least build and run tests on vanilla macOS and GNU/Linux distros, without having to upgrade standard tools like, for example, make. Read more

June 25, 2019

YES/NO Boolean Env Vars

I use YES and NO in environment variables to store Boolean values. I have come to the conclusion that this is in some way optimal after trying all the other obvious options and finding that each has readability flaws: 0 and 1 are confusing in POSIX shells like bash, because return 0 and exit 0 usually mean “success” (the command did not fail) which we think of as truthy. Likewise, 1 or any other non-zero number is treated as failure in these contexts, which intuitively feels falseish. Read more

March 3, 2019

Hugo Makefile

This blog is hosted on GitHub Pages and published using Hugo. Since Go is my preferred language at the moment, Hugo seemed attractive. There are 2 Git repos for this website: Source code: github.com/fieldnotes-tech/fieldnotes.tech Rendered static site: github.com/fieldnotes-tech/fieldnotes-tech.github.io Publishing involves updating the source, and having Hugo generate the static site. To make this easier to use I’ve added a Makefile which pulls the rendered site as a submodule in the public/ directory, which is Hugo’s default place to write the rendered site. Read more

March 3, 2019

Hello World

Hello world, welcome to fieldnotes.tech! Here I intend to keep my notes-to-self, code snippets, musings and other short bits & pieces on the subject of software engineering and tech in general. Most of what I’ll write here will be gleaned from working in the field and solving real issues as they arise. Some of it will be pretty esoteric, rough, unfinished and maybe even controversial or just plain wrong; but all will be in the spirit of earnestly trying to be better at what I do. Read more

© Sam Salisbury 2019 | Last build: 2020-06-10 11:55:31.96117461 +0000 UTC