Skip to content

Commit de1de09

Browse files
authored
Merge pull request #33 from gawbul/spm/update-about-add-precommit-claude-md
chore: update about page, add pre-commit config and CLAUDE.md
2 parents 295b00d + 36357ef commit de1de09

File tree

25 files changed

+441
-401
lines changed

25 files changed

+441
-401
lines changed

.github/workflows/hugo.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,4 @@ jobs:
124124
steps:
125125
- name: Deploy to GitHub Pages
126126
id: deployment
127-
uses: actions/deploy-pages@v4
127+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
.DS_Store
2-
.hugo*
2+
.hugo*

.pre-commit-config.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
repos:
2+
- repo: https://github.com/pre-commit/pre-commit-hooks
3+
rev: v6.0.0
4+
hooks:
5+
- id: trailing-whitespace
6+
- id: end-of-file-fixer
7+
- id: mixed-line-ending
8+
args: [--fix=lf]
9+
- id: check-merge-conflict
10+
- id: check-yaml
11+
- id: check-toml
12+
- id: no-commit-to-branch
13+
args: [--branch, main]

CLAUDE.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Commands
6+
7+
```bash
8+
hugo # Build site into public/
9+
hugo server # Serve locally with live reload (http://localhost:1313)
10+
hugo server -D # Serve including draft posts
11+
pre-commit run --all-files # Run all linting hooks manually
12+
```
13+
14+
CI builds with `hugo --gc --minify` — the local `hugo` command does not minify.
15+
16+
## Architecture
17+
18+
This is a Hugo static site deployed to GitHub Pages via `.github/workflows/hugo.yaml`. Pushes to `main` trigger an automated build and deploy.
19+
20+
- **`hugo.toml`** — site configuration: base URL, theme, social links, menus, analytics (Google), comments (Disqus)
21+
- **`content/about/index.md`** — the About page (TOML front matter, `+++`)
22+
- **`content/posts/*.md`** — blog posts (YAML front matter, `---`)
23+
- **`themes/hugo-goa/`** — theme, managed as a git submodule; do not edit directly
24+
- **`public/`** — Hugo build output committed to the repo; regenerate with `hugo` after any content change
25+
- **`static/`** — files copied verbatim into `public/` (images, PGP key, etc.)
26+
27+
## Content conventions
28+
29+
Blog post front matter fields: `title`, `author`, `date`, `lastmod`, `description`, `subtitle`, `image`, `images`, `tags`, `categories`, `draft`, `showpagemeta`, `showcomments`.
30+
31+
The About page uses minimal TOML front matter (`date`, `draft`, `title`) with free-form Markdown body. Link non-obvious terms to their Wikipedia articles.
32+
33+
## Pre-commit hooks
34+
35+
`.pre-commit-config.yaml` enforces: trailing whitespace removal, LF line endings, single trailing newline, YAML/TOML validity, no merge conflict markers, and **no direct commits to `main`**. Always work on a feature branch.

CNAME

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
www.gawbul.io
1+
www.gawbul.io

content/about/index.md

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,20 @@ title = 'About'
55
+++
66
I’m Steve Moss — a scientist, technologist, and engineer.
77

8-
I grew up in a small seaside town in the UK, spent years as a bouncer, became a Doctor of [Computational Genomics](https://en.wikipedia.org/wiki/Computational_genomics), and now work at the bleeding edge of [Site Reliability Engineering (SRE)](https://en.wikipedia.org/wiki/Site_reliability_engineering).
8+
I grew up in a small seaside town on the Yorkshire coast, spent years working the doors as a bouncer, and eventually found my way into the world of science and technology. That path led me to a PhD in [Computational Genomics](https://en.wikipedia.org/wiki/Computational_genomics) — the discipline at the intersection of [computer science](https://en.wikipedia.org/wiki/Computer_science), [statistics](https://en.wikipedia.org/wiki/Statistics), and [molecular biology](https://en.wikipedia.org/wiki/Molecular_biology) — studying how life encodes and transmits information at scale. My research focused on [Bioinformatics](https://en.wikipedia.org/wiki/Bioinformatics) and [Molecular Evolution](https://en.wikipedia.org/wiki/Molecular_evolution) at the Universities of [Hull](https://www.hull.ac.uk/) and [York](https://www.york.ac.uk/).
99

10-
For a long time, my goal was to collect Kubernetes certifications. But the landscape has shifted, and so have I.
10+
That foundation in large-scale data, systems thinking, and scientific rigour led me naturally into [Site Reliability Engineering (SRE)](https://en.wikipedia.org/wiki/Site_reliability_engineering) the discipline of applying software engineering to infrastructure and operations. SRE is about keeping complex [distributed systems](https://en.wikipedia.org/wiki/Distributed_computing) available, performant, and resilient; treating reliability not as an afterthought, but as a feature. I work at the bleeding edge of this field, building and operating the kind of secure, scalable systems that modern workloads demand.
1111

12-
I am now focused on [Agentic AI](https://en.wikipedia.org/wiki/AI_agent) and [Autonomous Systems](https://en.wikipedia.org/wiki/Autonomous_agent). I believe the future isn't just about managing infrastructure; it's about building expert systems that can manage themselves. I use tools like [Gemini](https://geminicli.com) and [Claude](https://claude.com/product/claude-code) to build autonomous agents that can reason, code, and solve complex problems.
12+
I am now focused on [Agentic Engineering](https://en.wikipedia.org/wiki/Intelligent_agent) — the practice of building [AI agents](https://en.wikipedia.org/wiki/AI_agent) and [autonomous systems](https://en.wikipedia.org/wiki/Autonomous_agent) that can perceive their environment, reason about it, and take action with minimal human intervention. I believe the future isnt just about managing infrastructure; its about building expert systems that can manage themselves. I use tools like [Gemini](https://geminicli.com) and [Claude](https://claude.com/product/claude-code) to build autonomous agents that can reason, code, and solve complex problems.
1313

14-
I still care deeply about reliability — you can't run stochastic models on fragile systems. My work sits at the intersection of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) and SRE:
14+
I still care deeply about reliability — you cant run [stochastic models](https://en.wikipedia.org/wiki/Stochastic_process) on fragile systems. My work sits at the intersection of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) and SRE:
1515

16-
1. Architecting Systems: Building the secure, scalable [distributed systems](https://en.wikipedia.org/wiki/Distributed_computing) required to run modern AI.
16+
1. Architecting Systems: Designing secure, scalable [distributed systems](https://en.wikipedia.org/wiki/Distributed_computing) to run modern AI workloads — resilient by design, observable by default.
1717

18-
2. Engineering Agents: Using Polyglot engineering (Python, Go, Rust) to create digital agents that handle the toil.
18+
2. Engineering Agents: Writing [polyglot](https://en.wikipedia.org/wiki/Polyglot_(computing)) software in [Python](https://en.wikipedia.org/wiki/Python_(programming_language)), [Go](https://en.wikipedia.org/wiki/Go_(programming_language)), and [Rust](https://en.wikipedia.org/wiki/Rust_(programming_language)) to create digital agents that handle the toil. Python for rapid prototyping and ML integrations, Go for performant concurrent services, and Rust where safety and raw speed are non-negotiable.
1919

20-
My background is in [Bioinformatics](https://en.wikipedia.org/wiki/Bioinformatics) and [Molecular Evolution](https://en.wikipedia.org/wiki/Molecular_evolution) (Universities of [Hull](https://www.hull.ac.uk/) and [York](https://www.york.ac.uk/)). I am passionate about closing the loop between my past and present by applying these autonomous agents to [Genomics](https://en.wikipedia.org/wiki/Genomics) and [Personalised Medicine](https://en.wikipedia.org/wiki/Personalized_medicine).
20+
I am passionate about closing the loop between my past and present applying autonomous agents to [Genomics](https://en.wikipedia.org/wiki/Genomics) and [Personalised Medicine](https://en.wikipedia.org/wiki/Personalized_medicine). I want to build systems that don’t just process biological data, but understand it.
2121

22-
I want to build systems that don't just process biological data, but understand it.
22+
When I’m not arguing with an LLM or fixing a production outage, I’m a Dad, a husband, and a mental health advocate. I also enjoy boxing, films, and gaming.
2323

24-
When I'm not arguing with an LLM or fixing a production outage, I'm a Dad, a husband, and a mental health advocate. I also enjoy boxing, films, and gaming.
25-
26-
Reach out if you want to talk about the intersection of biological evolution and digital intelligence.
24+
Reach out if you want to talk about the intersection of biological evolution and digital intelligence.

content/posts/building-a-four-node-raspberry-pi-5-cluster.md

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -122,28 +122,28 @@ Once I got downstairs, I plugged the switch into my router and connected the Ank
122122
I went upstairs to my laptop and was able to ascertain the IPs of each Pi by checking my router’s client list, however, the ethernet ports didn’t show up. Once I had the IPs for all four Pis, I edited my SSH config on my laptop to include the name of each of the Pis as follows:
123123

124124
```text
125-
Host eniac-node1
126-
Hostname 192.168.50.129
127-
Port 22
128-
User gawbul
129-
IdentityFile /Users/gawbul/.ssh/id_rsa
130-
131-
Host eniac-node2
132-
Hostname 192.168.50.31
133-
Port 22
134-
User gawbul
135-
IdentityFile /Users/gawbul/.ssh/id_rsa
136-
137-
Host eniac-node3
138-
Hostname 192.168.50.167
139-
Port 22
140-
User gawbul
141-
IdentityFile /Users/gawbul/.ssh/id_rsa
142-
143-
Host eniac-node4
144-
Hostname 192.168.50.111
145-
Port 22
146-
User gawbul
125+
Host eniac-node1
126+
Hostname 192.168.50.129
127+
Port 22
128+
User gawbul
129+
IdentityFile /Users/gawbul/.ssh/id_rsa
130+
131+
Host eniac-node2
132+
Hostname 192.168.50.31
133+
Port 22
134+
User gawbul
135+
IdentityFile /Users/gawbul/.ssh/id_rsa
136+
137+
Host eniac-node3
138+
Hostname 192.168.50.167
139+
Port 22
140+
User gawbul
141+
IdentityFile /Users/gawbul/.ssh/id_rsa
142+
143+
Host eniac-node4
144+
Hostname 192.168.50.111
145+
Port 22
146+
User gawbul
147147
IdentityFile /Users/gawbul/.ssh/id_rsa
148148
```
149149

@@ -194,9 +194,9 @@ One thing I noticed while trying out various commands on the Pi was that my term
194194
I updated the terminfo as follows:
195195

196196
```bash
197-
infocmp -x | ssh eniac-node1 -- tic -x -
198-
infocmp -x | ssh eniac-node2 -- tic -x -
199-
infocmp -x | ssh eniac-node3 -- tic -x -
197+
infocmp -x | ssh eniac-node1 -- tic -x -
198+
infocmp -x | ssh eniac-node2 -- tic -x -
199+
infocmp -x | ssh eniac-node3 -- tic -x -
200200
infocmp -x | ssh eniac-node4 -- tic -x -
201201
```
202202

@@ -1007,8 +1007,8 @@ I created a `/etc/modules-load.d/containerd.conf` file with the modules listed a
10071007
Additionally, I needed to add the following to `/etc/sysctl.d/kubernetes.conf` and run `sudo sysctl --system`:
10081008

10091009
```text
1010-
net.ipv4.ip_forward
1011-
net.bridge.bridge-nf-call-iptables
1010+
net.ipv4.ip_forward
1011+
net.bridge.bridge-nf-call-iptables
10121012
net.bridge.bridge-nf-call-ip6tables
10131013
```
10141014

content/posts/optimising-kubernetes-deployment-with-local-continuous-development-tooling.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@ skaffold verify
166166
Which should return the following:
167167

168168
```text
169-
Loading images into kind cluster nodes...
170-
Images loaded in 41ns
169+
Loading images into kind cluster nodes...
170+
Images loaded in 41ns
171171
[kubernetes-example-application-health-check] Hello from Kubernetes!
172172
```
173173

@@ -213,7 +213,7 @@ skaffold delete
213213
To build and test a standalone image, you can do the following:
214214

215215
```bash
216-
skaffold build --filename=skaffold.yaml --file-output=build.json
216+
skaffold build --filename=skaffold.yaml --file-output=build.json
217217
skaffold test --build-artifacts=build.json
218218
```
219219

public/404.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@
77
<meta http-equiv="content-type" content="text/html; charset=utf-8">
88
<meta http-equiv="X-UA-Compatible" content="IE=edge">
99

10-
10+
1111
<meta name="description" content="Dr Stephen P. Moss - Scientist, technologist, engineer, and technical leader.">
12-
12+
1313
<meta name="keywords" content="gawbul,kubernetes,devops,sre,bioinformatics,genomics,evolution">
1414

1515
<title>
16-
Dr Stephen P. Moss - 404 Page not found
16+
Dr Stephen P. Moss - 404 Page not found
1717
</title>
1818

19-
<meta name="generator" content="Hugo 0.154.5">
19+
<meta name="generator" content="Hugo 0.157.0">
20+
2021

21-
2222
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css">
23-
23+
2424

2525
<link rel="stylesheet"
2626
href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Roboto+Slab:wght@400;700&family=Roboto:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700" />
@@ -48,19 +48,19 @@ <h1 class="text-center">404</h1>
4848

4949
<footer class="text-center footer">
5050
<hr />
51-
51+
5252
<h6 class="text-center copyright">This work is licensed under a <a href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a></h6>
53-
53+
5454
<h6 class="text-center powered"><a href="https://gohugo.io/">Hugo</a> <a
5555
href="https://github.com/shenoydotme/hugo-goa">Goa</a> by <a href="https://shenoy.me">shenoydotme</a> and <a
5656
href="https://incirclemedia.com">Incircle Media</a></h6>
57-
58-
57+
58+
5959
<h6>
6060
<a href="https://www.gawbul.io/index.xml" aria-label="RSS Feed"><i class="fas fa-rss" aria-hidden="true"></i></a>
6161
</h6>
62-
63-
62+
63+
6464

6565
</footer>
6666
</div>

public/C0D6248439F1D5604AAFFB4021D900FFDB233756.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@ iUEkmW4vl7+0Jrzl0iCbzx/l2MuBH2voDaNKLsgfkgPTZEIHKHm19ZnYHNA6IlHP
4848
RZ4RmloarS1tqXx1d1iQo5RntAlVqCCjSaYAK8v4Osu3FcSQ0gIpSEozWdmPUxA5
4949
e/UmebzRXkFZe8aHO6ZnNj8DjzeGPBwjOnIywzhE6Sq7rDr/0AXwz14=
5050
=3h05
51-
-----END PGP PUBLIC KEY BLOCK-----
51+
-----END PGP PUBLIC KEY BLOCK-----

0 commit comments

Comments
 (0)