An easy, delicious and cheap way to enjoy coffee

This is not my home, but sometimes I pretend it is (Photo by Grant Durr on Unsplash)

I don’t know about you, but I’m currently stuck at home because of a global pandemic. Since advice from professionals with a lot of isolation experience is to focus on what you can control, I’m writing this post to help you control the amount of cold brew coffee in your home. If you are reading this in a future time where you’re not stuck at home and just want to make cheap delicious coffee, this article is also for you.

There are many reasons to make cold brew. My reasons are because it is tasty, cheap, and very easy to…


Talking about technical debt so that everyone can understand

Well, hopefully everyone (Photo by Priscilla Du Preez on Unsplash)

I work for a software engineering consultancy firm. During deployments, we’re often required to describe technical concepts to people across all levels of the client’s business. This can be challenging because of the wide range of contexts and technical knowledge possessed by people in different roles.

Clear descriptions and analogies are helpful because they increase the chance that everyone is on the same page. When everyone is on the same page, it is much easier to align goals and determine priorities that everyone can understand or get behind.

Technical debt is especially important to understand in a start-up environment —…


Do it right, so you don’t have to redo it when your application load increases

Don’t tell anyone your secrets. Do tell people how to store secrets. (Photo by Kristina Flour on Unsplash)

Most Lambda deployments use environment variables to pass configuration to the deployed function. It’s the recommendation that AWS makes in the documentation, and it’s an attractive choice because it’s easy, encrypted at rest, and allows for flexibility in how you get the values there in the first place.

There are many articles with good recommendations about lambda configurations already. Why should you read this one?

Instead of comparing and contrasting approaches, this is a how-to guide for anyone whose primary values are minimising cost without compromising scalability or security. …


Read this if you want your AWS CodePipeline build agents to have access to git history

Hopefully your pipeline doesn’t disappear into the mist (Photo by JJ Ying on Unsplash)

Here’s the scenario: Attracted by the ease of using one cloud service for everything, you’ve got a build pipeline set up in AWS. You’re using CodeCommit for the source, a CodeBuild instance for your build target, and you’re using CodePipeline to hang it all together. Everything seems great- deployment into the rest of your AWS infrastructure is easy, builds kick off from commits, and everything is working well.

Until you decide you want to use the git metadata, like say using the output of git describe to figure out what version you’re building. …


A helpful error that there will be no helpful errors (Photo by specphotops on Unsplash)

In my previous post, I wrote about writing unsurprising bash scripts. The last guideline was not to write complex programs — trying to use no more than one or two functions, and as little branching logic as possible. Like all guidelines, sometimes they’re meant to be broken.

Error handling is the place I most commonly break this guideline. This post is about why, and some new guidelines I’d like to recommend instead.


Helpful guidelines for writing robust Bash scripts

A surprising way to write bash scripts (Photo by Eddie Kopp on Unsplash)

Even though the first version of Bash was released over 30 years ago, people are still publishing best practice guides for writing Bash scripts (even Google has a bash style guide). If you’re just starting out with Bash, there are no shortage of good options out there (I heartily recommend this excellent cheat sheet).

As a consultant, I frequently see Bash scripts written for different purposes and environments, and after various stages of knowledge decay.

I want to share the guidelines that I’ve found most helpful when writing robust Bash scripts that run cross-platform and are pleasant to revisit months…

Timothy Jones

Principal Engineer and software consultant, ex-data scientist, ex academic. Programming for 27 years, writing about it here since much more recently.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store