Notes
-
After seeing an ex-colleague release details of their AI second brain, I was curious. Not because I want to outsource the process of note taking, but because I wanted to know how he had any confidence in this process at all.
A quick look at their git repository shows very little code beyond some Python helper scripts for requesting page summaries from Gemini. I had questions:
- Why did they require Google’s Antigravity to run the workflow?
- Why was there no coordination code?
- Why couldn’t I use a local model for this?
At the heart of the workflow are Agent Skills.
-
Episodes from “Me, Myself and I”, a podcast I started with Jen Su. She has plans to revive the podcast with new themes and a new guests. I’ll update this note with a link as soon as it goes live.
- 🎤 001 - Hello World
- 🎤 002 - Reward and Accountability
- 🎤 003 - Self Promotion
- 🎤 004 - Intentions
- 🎤 005 - Intervention
- 🎤 006 - Asking for Help
- 🎤 007 - Giving Help
- 🎤 008 - Dealing with Frustration
- 🎤 009 - How to re-Learn
- 🎤 010 - Motivation in the Face of Rejection
- 🎤 011 - Styles of Communication
- 🎤 012 - Professional Networking
- 🎤 013 - Imposter Syndrome
- 🎤 014 - ChatGPT
- 🎤 015 - This Next Thing
If you are interested in speaking to Jen on a future episode, let me know and I’ll put you in touch.
-
Listening to People Watching by Sam Fender after seeing it mentioned on Doug Belshaw’s favourite music albums of 2025.
Need to listen to this one again before deciding if it has a place in my collection.
-
I went into the office yesterday and found myself wondering whether I miss the commute.
I miss:
- The opportunity to listen to audiobooks/podcasts
- The chance to read a book
- Watching other people and wondering what they are thinking
I don’t miss the commute.
-
Found myself pondering a question:
“What would a course in AI look like at various stages of the education system?”
To be clear, I’m not thinking of this as a “learn ChatGPT in 10 minutes” style course. I’m wondering what coursework I’d set, what discussions I’d want to have. I’m curious what I’d learn by running such a course.
-
The excellent talk by bunnie and xobs cover what it takes to build an open operating system and manufacture the open processor required to run it. It turns out that you can squeeze open processor cores into the unused silicon on a typical SoC.
An incredible feat of engineering: 39c3 - Xous: A Pure-Rust Rethink of the Embedded Operating System
-
Beautiful walk along the river this morning.
-
Really enjoyed this series of 100 photographs from 2025 by Hyde. He’s doing #the100pics challenge again this year and I’m looking forward to seeing what he releases. I love the raw humanity on display in his photographs.
-
I’ve been working on a new way to publish notes here. The formatting is all out of whack, but this is my first note.
-
At some point (2020) Thunderbird stopped using Enigmail. Native support for GPG doesn’t (easily) allow you to use sub-keys stored on a Yubikey for signing or encryption. It is possible to tell Thunderbird to use one external key but this doesn’t work if you have separate sub-keys for both message signing and encryption.
This guide shows how to create and export a temporary key containing both the signing and encryption keys for use in Thunderbird.
-
I gave a talk titled, Caching, Data Grids and More. The talk was targetted at Platform Engineers who were aware of caching solutions, supported them, but with little experience of having used them in application development. It was a fun talk to give.
-
If you’d asked me to define the internet, I’d probably have offered up something involving networks, computers, protocols and information. I prefer this definition by Winnie Lim.
“a medium that brings the strangeness of strangers together”
– i’m just as strange as you, Winnie Lim -
Using FFmpeg is more art than science. Every time I reach for it, I find myself trawling the internet for various incantations of the command that result in a playable video. These are commands that have worked for me.
Blu-ray
ffmpeg -i input.mkv -c:v libx265 -crf 18 -c:a aac -b:a 160k -tag:v hvc1 -ac 6 output.mp4This results in an mp4 container with h265 video and aac sound. The file should be playable on Apple devices. The resulting file will also be significantly smaller than the original.
-
For years I’ve been building container images by using the
COPYcommand to bring files from my Docker context into the build container.FROM golang:1.22 AS build WORKDIR /src/build COPY . . RUN go mod verify RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o /app . FROM scratch COPY --from=build /app . CMD ["./app"]Today I came across the following section in the Docker documentation.
“You’ll mostly want to use COPY for copying files from one stage to another in a multi-stage build. If you need to add files from the build context to the container temporarily to execute a RUN instruction, you can often substitute the COPY instruction with a bind mount instead.”
-
A rare moment of pride. My son picked out one of the slips in our family gratitude jar and read it without hesitation. His reading is really coming along. But it was conclusion that had me smiling more than anything:
“Mum your Chinese writing is so good.”
I have to keep working on it though. His writing (second strip) is catching up fast.
-
This note isn’t intended to be a guide on how to develop film at home. This is a collection of tips and notes from my development experience.
Tip: Download the Massive Dev Chart Timer App (£8.99).
The app will help lookup and calculate developer times and mix ratios. But the most valuable feature is the timer. I kept second guessing myself on everything until I started using the timer. With the timer I have the confidence to develop a tank and clean up as I go. -

How application teams are organised
Organisation chart showing that multiple application teams are supported by both Platform Engineering and Site Reliability Engineering teams. Application teams measure success with business KPIs. Platform and SRE teams measure success with SLOs
-
- Author: Emily M. Bender
- Full Title: ChatGP-why: When, if ever, is synthetic text safe, appropriate, and desirable?
- Slides: Bender-GRAILE-2023.pdf
- Talk: YouTube
Notes
- There is a long list of examples of where the use of ChatGPT hasn’t turned out the way people expect.
- Language form does not contain meaning and this explains why language models don’t understand.
- Large language models are corpus models
- Claude Shannon worked on early language models
- Unigram language model models frequency of single words
- Bigram language model models frequency of words given previous word
- Trigram language model models frequency of words given previous two words
- Good uses for language models include:
- Spell checkers
- Machine transcription
- Machine translation
- Text input
- Neural networks are made of of perceptrons
- A perceptron is a simplified model of a neuron
- Transformer architecture is an arrangement or perceptrons
- Language models use word embeddings
- The number of words in training data determines the size of a language model
- Generative AI is a mis-use of a classification and ranking tool
- Generative AI produces plausible output not intelligence
- In order to determine whether a machine can understand and infer meaning, we need definitions understanding and meaning.
- Language competency makes it hard to separate form from meaning
- Form refers to the marks on a page for language, the arrangement of pixels for images or video, etc.
- Language meaning is the relationship between form and something external
- Understanding is the recovery of communicative intent from form
- Virtual assistants can understand limited instructions
- Language models exposed only to form can never learn meaning
- Language models do not learn the same way as babies
- Babies learn the relationship between form (sound, mouth movement) and meaning by forming connections with external cues that hint at communicative intent.
- The Octopus Paper show that form does not contain meaning
- Large language models have a significant environmental impact
- Environmental cost of large language models impacts marginalised communities
- The contents of the internet do not represent a balanced view of humanity
- The young and those from developed countries are more likely to have contributed to the volume of work available on the internet.
- Sampling the internet without bias is hard
- Large language models are too big
- Generative AI output does not contain communicative intent
- We bring our own understanding to language form
- When reading generative text, it is important to remember that the inference of meaning is our own.
- A Stochastic Parrot refers to the stitching together of form without meaning
- Coherence is in the eye of the beholder
- Synthetic text lacks accountability
- There is no Who behind generative text
- Generative AI pollutes the information ecosystem
- Information retrieval is a terrible use-case for a large language model
- The more accurate generative text becomes the more dangerous it is
- Chatbots hide the sources of the information they regurgitate
- Responsible use-cases for generative AI include:
- where the only thing that matters is form
- text must not confuse author with a person
- text needs to clearly articulate biases
- consider labor practices
- consider data theft
- Good use-cases for generative AI include:
- a dialogue partner for language learning
- a non-playable character
- writing support
- Good use-cases for generative text must consider the costs
- Be a critical consumer of AI
- We need to understand how the AI technology was evaluated in the context in which it is being used.
- We need to understand who benefits from the use of AI instead of a human?
- You are responsible for your use of generative text
- We must insist on transparency of source material in the training data.
- Talk to students about what generative AI is
- Use of generative AI in education is a missed learning opportunity
- Use of generative AI by students indicates broader problem
Further Information
Three podcasts worth subscribing to on AI:
-
Day 25
Name Las Uvas Grower Marina Ramirez Origin Honduras Variety Bourbon Process Washed Roast Light Acidity Grape Mouthfeel Silky Hints of Blackberry & black tes Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 97.5ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds reminded me of a the vegetable isle in a Chinese supermarket. An earthy mix of smells that all felt alien.
2022 Dec 24
-
Day 24
Name El Durazno Grower Venutra Family Origin Guatemala Variety Bourbon Process Honey Roast Medium Acidity Grape Mouthfeel Chewy Hints of Plum, brown sugar & liquorice Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 96.4ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds reminded me of a sweet wood with hints of apple vinegar.
2022 Dec 23
-
Day 23
Name La Pedregosa Grower Mauricio Vega Origin Colombia Variety Castillo Process Washed Roast Medium Acidity Grape Mouthfeel Round Hints of Raspberry cream chocolate Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 96.2ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds reminded me of an apple wood. When wet the smell was creamy soft.
2022 Dec 22
-
Day 22
Name Muthua-ini Grower A collective of smallholder farmers Origin Kenya Variety SL-28, SL-34 Process Washed Roast Light Acidity Grape Mouthfeel Silky Hints of Blackcurrant coulis Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 95.4ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The grounds smelled like cloves. Not the strong fresh clove smell, but the weaker, more subtle smell of cloves that have been allowed to sit in the open for a while.
2022 Dec 21
-
Day 21
Name Chapanda Grower Marcus Carvalho Origin Brazil Variety Sucupira Process Natural Roast Medium Acidity Apple Mouthfeel Heavy Hints of Dark chocolate & glaće cherry Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 95.1ºC. Measured 21g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds gave off a plum like fruitiness. When wet the smell was more chocolatey.
2022 Dec 20
-
Day 20
Name El Aguacate Grower Saturnino Bejarano Aguilar Origin Honduras Variety Catuai Process Washed Roast Medium Acidity Grape Mouthfeel Silky Hints of Panela/Muscovado Sugar Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 95.2ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds reminded me of a sweet, spiced plum.
2022 Dec 19
-
Day 19
Name Cafeina Blend Grower Adalgisa S.M. Vilela, Julia Figueiredo and Elza Leopoldino Origin Brazil Variety Mundo Novo, Acauã Process Natural Roast Medium/Dark Acidity Apple Mouthfeel Creamy Hints of Dark chocolate & apricot Preparation
Time: 16:00
Washed the filter, warmed the mug and prepared hot water. Water temperature was 94.4ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
2022 Dec 18
-
Day 18
Name Kimunye Grower A collective of smallholder farmers Origin Kenya Variety SL-28, SL-34 Process Washed Roast Light Acidity Grape Mouthfeel Juicy Hints of Blackberry Preparation
Time: 12:00
Washed the filter, warmed the mug and prepared hot water. Water temperature was 95.2ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds reminded me of a fruity bramble, perhaps freshly picked berries.
2022 Dec 17
-
Day 17
Name Finca El Zapote Grower Julio Roberto Meléndez Peréz Origin Guatemala Variety Caturra Process Natural Roast Medium Acidity Orange Mouthfeel Creamy Hints of Peach cheesecake Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 96.3ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The grounds smelled of pistachio with a sweetness that I attributed to rose.
2022 Dec 16
-
Day 16
Name Kaiguri Grower A collective of smallholder farmers Origin Kenya Variety SI-28, SL-34 Process Washed Roast Light Acidity Grape Mouthfeel Round Hints of Blackcurrant Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 96.2ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds reminded me of fresh kindling. A freshness about to be lost to the smell of a roaring fire.
2022 Dec 15
-
Day 15
Name El Silencio Grower Oscar Ortiz Gonzalez Origin Colombia Variety Castillo, Colombia Process Washed Roast Light Acidity Grape Mouthfeel Syrupy Hints of Strawberry liquorice Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 95.6ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds reminded me of toasted hazelnuts, in those moments just before they catch and burn.
2022 Dec 14
-
Day 14
Name San Jeronimo Grower Bressani family Origin Guatemala Variety Caturra Process Washed Roast Light Acidity Orange Mouthfeel Creamy Hints of Orange cheescake Preparation
Time: 10:15
Washed the filter, warmed the mug and prepared hot water. Water temperature was 96.9ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds convinced me this was a dark roast. There were hints of an acidic fruit but I couldn’t place which one.
2022 Dec 13
-
Day 13
Name El Zapote Grower Francisco Alvarado Origin Honduras Variety Bourbon Process Washed Roast Light Acidity Apple Mouthfeel Round Hints of Black tea & cranberry Preparation
Time: 10:15
Washed the filter, warmed the mug and prepared hot water. Water temperature was 94.2ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds gave off a strong toasted nutty aroma.
2022 Dec 12
-
Day 12
Name Karango Grower A collective of smallholder farmers Origin Democratic Republic of the Congo Variety Bourbon Process Washed Roast Light Acidity Grape Mouthfeel Juicy Hints of Blackcurrant & apricot Preparation
Time: 12:00
Washed the filter, warmed the mug and prepared hot water. Water temperature was 95.2ºC. Measured 21g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds smelled like the bark of a sour fruit tree. I couldn’t place the fruit.
2022 Dec 11
-
Day 11
Name Capim Seco Grower Rafael Dias Pereira Origin Brazil Variety Icatu Process Pulped Natural Roast Medium Acidity Apple Mouthfeel Round Hints of Picnic bar Preparation
Time: 11:15
Washed the filter, warmed the mug and prepared hot water. Water temperature was 96.9ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds had a spicy but earthy smell that I struggled to place. When wet they reminded me of freshly turned earth in the spring.
2022 Dec 10
-
Day 10
Name La Esperanza Grower Javier Ortega Origin Colombia Variety Castillo, Colombia Process Washed Roast Medium Acidity Apple Mouthfeel Smooth Hints of Raspberry & green apple Preparation
Time: 10:15
Washed the filter, warmed the mug and prepared hot water. Water temperature was 94.6ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds had one of the strongest aromas yet. A toasted bark smell with a hint of fruit.
2022 Dec 09
-
Day 9
Name Remera Natural Grower A collective of smallholder farmers Origin Rwanda Variety Bourbon Process Natural Roast Medium Acidity Creamy Mouthfeel Creamy Hints of Strawberry & cream Preparation
Time: 10:15
Washed the filter, warmed the mug and prepared hot water. Water temperature was 96.9ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds reminded me of a sweet chinese plum, the sticky kind that are almost dry but still retain enough moisture to keep them soft.
2022 Dec 08
-
Day 8
Name Filadelfia Grower Roberto Dalton Origin Guatemala Variety Bourbon, Caturra Process Washed Roast Medium Acidity Apple Mouthfeel Coating Hints of Dark chocolate tiffin Preparation
Time: 11:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 96.2ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The coffee grounds had a distinct aroma of indian spices.
2022 Dec 07
-
Day 7
Name Buenos Aires Grower José Ramón Collazos & MarÃa Del Rosario Ariza Coy Origin Colombia Variety Caturra, Castillo Process Washed Roast Medium Acidity Grape Mouthfeel Round Hints of Ripe plum Preparation
Time: 12:00
Washed the filter, warmed the mug and prepared hot water. Water temperature was 94.4ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
A very light smell, hints of apple and freshly sanded floorboards. It is entirely possible that recent floor sanding has clouded my sense of smell.
2022 Dec 06
-
Day 6
Name El Derrumbo Grower Joaquin Martinez Origin Honduras Variety Lempira Process Washed Roast Light Acidity Apple Mouthfeel Silky Hints of Peach, nectarine & white tea Preparation
Time: 10:45
Washed the filter, warmed the mug and prepared hot water. Water temperature was 93.6ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
There was a dampness to the smell of the grounds. Sweet, fruity but distinctly the strength of aroma that comes off damp mossy wood.
2022 Dec 05
-
Day 5
Name Ndundu Grower A collective of smallholder farmers Origin Kenya Variety SL-28, SL-34 Process Washed Roast Light Acidity Grape Mouthfeel Tea-like Hints of Blackcurrant & bergamot Preparation
Time: 10:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 94.2ºC. Measured 21g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
The grounds reminded my of freshly pealed parsnip. Distinctly sweet but earthy, with a hint of apple. In the mug the armoa shifted, giving off a hint of berry or bramble.
2022 Dec 04
-
Day 4
Name Sertão Grower Nazareth Dias Pereira Origin Brazil Variety Bourbon Process Natural Roast Medium / Dark Acidity Creamy Mouthfeel Round Hints of Dark chocolate, cherry & almond Preparation
Time: 10:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 96.2ºC. Measured 22g coffee and poured 50ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
This coffee smelled toasted, a dark roast. The smell ends with a syrupy sweetness. In the mug the smell shifts towards the middled of the nose. The sweet notes fade leaving a strong woody smell.
2022 Dec 03
-
Day 3
Name Muungano Grower A collective of smallholder famrers Origin Democratic Republic of the Congo Variety Bourbon Process Natural Roast Light Acidity Orange Mouthfeel Velvety Hints of Maraschino cherries Preparation
Time: 15:30
Washed the filter, warmed the mug and prepared hot water. Water temperature was 98.6ºC. Measured 20g coffee and poured 25ml over the coffee to wet it. Waited 30s and pured over a further 300ml water, keeping the filter funnel about half full.
Observation
If the smell of the coffee were a musical note it would be high pitched. The smell itself was subtle but with hints of an earthy bitterness. In the mug, the musical notes drop a few octaves and we start to detect smells of toasting.
2022 Dec 02
-
Day 2
Name Zaroca Grower Gilberto Basilo Origin Brazil Variety Mundo Novo Process Pulped natural Roast Dark Acidity Apple Mouthfeel Creamy Hints of Dark chocolate & cocoa nibs Preparation
Time: 11:40
Washed the filter, warmed the mug and prepared hot water. Water temperature was 95.6ºC. Measured 22g coffee and poured 25ml over the coffee to wet it. Waited 30s and pured over a further 260ml water, keeping the filter funnel about half full.
Observation
Smelling the coffee when wet I was again reminded of smells that would put me right off coffee. A mushroom scent mixed with damp wood was something I couldn’t shake. This scent was interesting in that I could only sense it at the back of my nose right at the top. It’s rare to have such a localised sense of smell.
2022 Dec 01
-
Day 1
Name El Tolú Grower Manuel Duarte Orduz Origin Columbia Variety Castillo Process Washed Roast Light Acidity Orange Mouthfeel Silky Hints of Lavender & Honey Preparation
Time: 11:00
Washed the filter, warmed the mug and prepared hot water. Water temperature was 95.6ºC. Measured 21g coffee and poured 25ml over the coffee to wet it. Waited 30s and pured over a further 250ml water, keeping the filter funnel about half full.
Observation
Smelling the coffee when wet I was instantly reminded of Chinese food which I couldn’t quite place. I eventually settled on something that reminded me of roast meat accompanied by radish. A description that, if it appeared on the side of a bag of coffee, would almost instantly put me off buying it.
2022 Oct 20
-
If you are running a private container registry and using a certificate provided by LetsEncrypt, make sure you are using
fullchain.pemand notcert.pem. If you miss this, the Docker CLI will report that your certificate is signed by an unknown authority.I have an instance of Harbor running as a private container registry. The certificate used by this instance is provided by LetsEncrypt and yet the Docker CLI refused to let me log in.
2022 Sep 02
-
How to upgrade Ubuntu on Digital Ocean
When canonical release a new version of Ubuntu, you are prompted to run this command to upgrade.
do-release-upgradeRunning this command on a Digital Ocean droplet will give you the following warning.
“Some third party entries in your sources.list were disabled. You can re-enable them after the upgrade with the ‘software-properties’ tool or your package manager.”
You can continue the upgrade but it will fail and roll-back to the previous version. The error you are given includes the following phrase.
2022 Jun 01
-
Whenever I want to work with a forked Go module, I have to look up how to do so. It doesn’t feel immediately obvious what to change. This note documents my current approach.
I need to do this when a third party module I depend on doesn’t include features I need. I fork the third party module and make some changes. But these changes are only available in my fork. These may get merged into a new version of the module but in the meantime I want to continue working off my fork.
2022 May 24
-
Problem: I needed to copy some database files into a container running on Kubernetes without modifying the image or restarting the parent Pod.
Solution: The Kubernetes CLI includes a sub-command for copying files into and out of a running container:
kubectl cp /tmp/foo <some-pod>:/tmp/barBackground
I’ve never found the need to copy files into a running container without issuing an updated image. This is somewhat of an anti-pattern as modifications to containerised filesystems that aren’t mounted externally are lost when the container process terminates.
2022 May 19
-
I recently deployed Harbor and Trivy with automatic updating disabled. I hadn’t realise that this would prevent images from being scanned at all and so needed to trigger a manual update. This note describes how to manually trigger an update to the Trviy database in Harbor deployed on top of VMware Tanzu Kubernetes Grid.
Demo
Instructions
Switch context to the cluster where you have deployed Harbor.
2022 Apr 01
-
Back in 2018, I wrote about Multi-Architecture Docker Builds. My main aim then was to run the occasional container image on a Raspberry Pi. Apple’s transition to M1 based machines has increased demand for multi-architecture container images. In this post, I document an improved approach to building multi-architecture images.
I’ll use a Go application to show the build process. It prints the current runtime OS and CPU architecture to the terminal and then exits.
2022 Mar 24
-
Problem: I wanted to use a shell script to write multi-line strings into a text file. I didn’t want parameters or commands to be substituted in the text being written.
Solution: You need to quote the limit string when specifying your here-document.
References
My fist discovery was that the pattern for doing this in a shell script was called a “Here Document”. I don’t think I have ever looked up the
bashmanual before. But this is where I found the solution.
2022 Mar 21
-
Every now and again you stumble across a command that solves a problem you didn’t realise you had. Recently, I discovered
envsubst.“Substitutes the values of environment variables.”
I’ve found myself substituting environment variables in configuration files increasingly often (see: Kubernetes). On more than one occasion I’ve tied myself in knots trying to do this with scripts. It turns out that
envsubstdoes most of what I need.Take the following file, example.yaml:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-