/var/log/career
Career
Written as system logs, because that is what a career is — a sequence of events with timestamps. In terminal mode these are real files, and grep searches every job at once.
System Officer
currentArchaeology Data Service
Mar 2025 — present
Responsible for the VPS estate behind a national archaeology archive: patching, TLS, backups, disaster recovery and edge security. Also the person who works out why something is slow and moves it somewhere sensible. Most of what was manual when I arrived now runs on its own.
- Linux
- Bash
- Python
- PHP
- Symfony
- Docker
- PostgreSQL
- MySQL
- Oracle
- Cloudflare
- Lucee
- AWS S3
- Windows Server
- NFS
2025-03-31 09:00:00 [INFO ] promoted role="System Officer" org="Archaeology Data Service"2025-04-04 10:30:00 [WARN ] incident every stakeholder metrics request answered by writing SQL by hand, worst at financial year end2025-04-16 11:40:00 [WARN ] incident disaster recovery planning found old data was not maintained beyond 90 days2025-04-17 09:20:00 [INFO ] onboarded approval to investigate phishing simulation testing, off the back of the disaster recovery work2025-04-22 15:20:00 [OK ] shipped metrics dashboard on Node, Express and React — joins, date-range rollups and Matomo stats behind self-service endpoints2025-05-09 09:30:00 [WARN ] incident remote staff pulling NFS filestore transfers back down the VPN and across several hops — archive conversions and downloads were crawling2025-05-09 14:30:00 [WARN ] incident distributed denial of service against a public archive service2025-05-09 18:00:00 [OK ] resolved mitigated at the Cloudflare edge with challenge rules; SNORT evaluated as a longer-term detection layer2025-05-16 10:10:00 [OK ] resolved archive search server recovered after an outage, then monitored through the following days2025-05-16 15:45:00 [INFO ] automated fuzzy matching script reconciling a rock art image archive against its records, after exact filesize and reference matching proved too brittle2025-06-02 10:15:00 [WARN ] incident database backups for every Oracle, PostgreSQL and MySQL instance were being run by hand2025-06-09 16:20:00 [OK ] automated scripted backups across all three engines — no manual step left in the routine2025-06-11 10:00:00 [INFO ] shipped API Platform service exposing collection, object and representation metadata to STFC Hartree, bearer authenticated and IP restricted2025-06-20 12:05:00 [OK ] automated every backup job wired to its own Slack webhook and bot, plus a log file — a silent failure is no longer possible2025-06-30 11:30:00 [INFO ] liaised technical contact for the partner API and for questions about ADS data; weekly meetings with the partner team2025-07-04 16:00:00 [INFO ] hardened disaster recovery plan written — DR team and escalation path, business impact analysis with RTO and RPO per system, dependency mapping, risk controls and response scenarios2025-07-08 08:05:00 [WARN ] incident web server crashing under normal traffic — a ColdFusion search tool was filling the Java heap on every request2025-07-10 17:30:00 [OK ] resolved found it in the Lucee exception logs: de-nested the query loops, preloaded thumbnails from the database ahead of the query, raised the heap ceiling from 512MB to 3GB, and confirmed with a heap dump in Eclipse MAT that it was on-heap pressure rather than a leak2025-07-18 10:45:00 [OK ] resolved retention raised and agreed: most databases now kept twelve months before deletion, up from 90 days2025-07-25 14:00:00 [OK ] resolved specified and rolled out a Windows Server remote desktop with university ITS; transfers now run local to the filestore, ~15 staff phased on in stages2025-08-05 11:40:00 [INFO ] hardened TLS certificate renewal and configuration taken over across public-facing services2025-08-26 09:45:00 [INFO ] migrated staff estate moved to Windows 11 ahead of the Windows 10 end-of-support deadline2025-09-22 10:30:00 [OK ] onboarded first staff enrolled onto the remote desktop after a testing period2025-10-06 09:50:00 [INFO ] adopted sole ownership of the remote desktop server — accounts, software updates and capacity planning2025-10-07 13:20:00 [INFO ] resolved unblocked a colleague's GitHub auto-deployment — directory permissions and group membership on the deploy account2025-12-08 11:20:00 [INFO ] automated Google Apps Script issuing grant review packs to reviewers, and an image backup that copies only what is new2026-01-13 11:30:00 [INFO ] reviewed reviewing colleagues' pull requests as a routine part of the team's workflow, not just raising my own2026-01-20 13:25:00 [INFO ] shipped Python and bash pipeline mirroring archive files to partner S3 storage, cron-scheduled at weekends — 26.7 TB transferred, routed by whether a collection is heritage science2026-02-02 15:05:00 [OK ] shipped first pull request raised and merged on my own, against a codebase I did not write2026-02-02 16:30:00 [OK ] hardened ClamAV scanning scheduled on cron across the estate2026-02-24 09:15:00 [OK ] automated daily reconciliation job comparing the S3 mirror against the archive and reporting any missing files2026-03-05 11:15:00 [WARN ] incident remote desktop crawling under concurrent transfers — the ceiling was scratch disk I/O saturation, not CPU2026-03-12 15:40:00 [OK ] resolved second physical drive added and users split across both; original sizing had come from watching real laptop workloads in Task Manager2026-03-17 11:00:00 [OK ] tested restore performed from an automated backup and verified clean2026-05-14 10:00:00 [INFO ] presented presented and joined the roundtable at the MAIA COST Action stakeholder workshop in Lisbon — AI in archaeology, and why training data quality decides whether it helps2026-06-08 15:10:00 [INFO ] automated Google Apps Script and Qualtrics tooling built for research teams collecting survey data2026-08-03 09:40:00 [WARN ] incident WordPress instance exposed to wp2shell — two chained flaws allowing code injection with no login and no user interaction; sole responder on call that day2026-08-03 11:20:00 [ERROR] incident unauthorised administrator accounts present — the exposure had been acted on, not just theoretical2026-08-03 14:15:00 [OK ] hardened patched, then worked the incident: unauthorised administrator accounts found and removed, all admin credentials rotated, logs swept for further indicators2026-08-11 14:05:00 [INFO ] shipped Tabby SFTP plugin built to an accessibility requirement — dark-mode transfer client with copy/paste and edit-in-place saving straight back to the server2026-08-18 10:20:00 [INFO ] shipped Tabby server health plugin polling top for CPU, memory load and uptime at the terminal2026-08-19 14:20:00 [INFO ] tested phishing simulation close to deploymentDigital Archives Assistant
Archaeology Data Service
Apr 2024 — Mar 2025
Archive ingest and preservation work, increasingly automated. Building tooling in this role is what led to the System Officer post.
- Python
- SQL
- Windows
2024-04-01 09:00:00 [INFO ] hired role="Digital Archives Assistant" org="Archaeology Data Service"2024-06-11 10:15:00 [INFO ] onboarded OASIS helpdesk support, answering tickets and writing up the common queries as a blog post2024-07-15 11:20:00 [WARN ] incident archiving a digital asset meant repeating the same manual steps on every deposit2024-09-02 16:45:00 [OK ] automated built a set of Python executables collapsing those steps into a single run2024-10-08 13:40:00 [INFO ] cataloguedHS2 GIS archiving2024-11-19 10:30:00 [INFO ] tested test cycles for the new Depositing Ingest tool, defects fed back to the developers2025-02-06 14:15:00 [INFO ] resolved workstation hardware faults diagnosed and repaired in houseVLE Support Officer
University of York — Digital Education Team
May 2023 — Apr 2024
Took departments across the university through the migration to Blackboard Ultra — training, documentation and at-desk support. Heavily public-facing, and the role where I learned to explain technical change to people who did not ask for it.
- Blackboard Ultra
- MkDocs
- Git
- GitHub
- Camtasia
2023-05-01 09:00:00 [INFO ] hired role="VLE Support Officer" org="University of York, Digital Education Team"2023-07-24 13:00:00 [INFO ] onboarded weekly workshops and drop-ins teaching staff to build modules in Blackboard Ultra2023-09-11 10:40:00 [INFO ] shipped video guides written and edited in Camtasia for the Ultra transition2023-10-30 15:20:00 [INFO ] migrated VLE support documentation rebuilt in MkDocs, maintained through git and GitHub2023-11-20 14:00:00 [INFO ] reviewed shared and reviewed code through GitHub with the Digital Education Team — first professional experience of working that way2024-01-15 11:05:00 [INFO ] liaised point of contact between academic departments and the VLE Transformation Project team2024-03-04 12:00:00 [OK ] awarded Making the Difference award, Student and Academic Services — customer service excellence, continuous improvement, student experienceDigital Archives Assistant
Archaeology Data Service
Mar 2021 — May 2023
Day-to-day curation of a national archaeology archive. Where I learned SQL properly, and where preservation formats stopped being an abstraction.
- SQL
- OpenRefine
2021-03-01 09:00:00 [INFO ] hired role="Digital Archives Assistant" org="Archaeology Data Service"2021-05-12 10:25:00 [INFO ] queried daily SQL against the archive database to correct and update collection metadata2021-09-08 14:50:00 [INFO ] migrated format assessment work — lossy against lossless, and what survives long-term storage2022-06-15 11:30:00 [INFO ] cataloguedcollection records maintained at volume, accuracy checked against deposited material2022-10-05 09:30:00 [INFO ] presented represented the organisation at 3D modelling and XML ontologies workshops in Pisa2023-04-03 14:00:00 [INFO ] presented wrote and delivered a paper at CAA Amsterdam on HS2 and UNPATH'D Waters against FAIR principlesPlacement Student
Archaeology Data Service
Apr 2020 — Jul 2020
First contact with the archive, and with the idea that cataloguing at scale is a data problem.
- OpenRefine
2020-04-01 09:00:00 [INFO ] hired role="Placement Student" org="Archaeology Data Service"2020-05-20 13:10:00 [INFO ] cataloguedDerbyshire archaeological journals catalogued; subject terms consolidated for retrieval2020-06-24 15:35:00 [INFO ] shipped monograph volumes added and edited for the Oxford University School of Archaeology series2020-07-01 16:00:00 [OK ] left placement complete; OpenRefine used throughout to reconcile catalogue data