Cybersecurity & IT
- Security+ fundamentals
- Threats & vulnerabilities
- Access control
- Network security
- Incident response & reporting
- Access-control systems
- Service-desk / ticketing workflows
- System hardening
- Governance & compliance principles
London · open to cyber/IT apprenticeships & junior roles
Entry-Level Cybersecurity and IT Support
CompTIA Security+ certified, based in London. Currently a Security Officer at the British Museum and moving into tech. I run a hardened Linux server at home and host everything I build on it.
This site is served from a server in my house that I built and secured myself.
I built a server in my house and now my wife and four of my friends won't get off it.
It started because I didn't want to keep paying Google and Apple to hold our photos. Now every photo the two of us take backs itself up at home overnight, there's an ad blocker running for the whole house, and I host the things I build on it: a daily puzzle game, and a board my wife keeps her knitting and clothes-making ideas on. Plex runs on it too, and four of my friends are on it constantly. Honestly, that's the best part of the whole thing. People I know use something I built, every day, and none of them are paying a subscription for it. It's just fun.
Securing it is the part I got properly into. Key-only SSH, a default-deny firewall, fail2ban, two-factor auth on the management interface, TLS on anything reachable from outside, and backups on more than one drive. Everything I learned for CompTIA Security+ I've now configured myself, broken myself and fixed myself, which is a different thing from having read about it.
Right now I'm a Security Officer at the British Museum. It's genuine responsibility, and it's taught me to stay calm and write an incident up properly while it's still going on, which counts for more on a service desk or in a SOC than people expect. But I want work that keeps teaching me things. I try to talk about tech with my colleagues at lunch and I've yet to find anyone who's interested, which is a fair sign I'm in the wrong room. I love computers and servers. I love researching parts, building the thing, and then working out why it isn't doing what I expected. I want to do that with people who feel the same way, somewhere with a path to keep climbing.
I studied Computer Science at London South Bank University and completed two of the three years. I build my own PCs, I fix my own things when they break. I've had a PS4 in pieces on the kitchen table, and the house is wired up with Alexa and Google Home routines and motion sensors that I maintain when they inevitably drift.
English — fluent Bengali — fluent Eligible to work in the UK — no sponsorship required
Everything here is running right now, and most of it is used daily by people I know.
A Linux server in my house running seven isolated containers, locked down with key-only SSH, a default-deny firewall, fail2ban, 2FA, TLS and backups across more than one drive. My family and friends use it every day.
I got tired of paying Google and Apple to hold our photos, so I put Proxmox on a refurbished Dell OptiPlex and started moving things onto it. It now runs seven isolated containers: Plex, network-wide DNS filtering, private photo backup, an e-book library, one holding the apps I've built, a read-only operations console, and one that holds nothing but the public demos, deliberately kept away from everything else. I specced the console and had an agent write it. This website is served from the same container as the apps.
A reverse proxy sat in the middle of all this for a while and did the TLS. The tunnels took that job over, so I checked nothing was still pointing at it and deleted it.
The hardening is where most of the time went: the lockdown described above, plus Cloudflare in front of anything public. Backups run on a schedule to more than one drive, and a watchdog checks nightly that they can actually be restored. I added that last part after finding out the hard way that a backup you haven't tested isn't really a backup.
To stop renting our own photos and files back from cloud companies, and to have somewhere real to learn on. Reading about hardening is not the same as running something that other people depend on and that is reachable from the internet.
sshd, TOTP 2FA on the management interface, least-privilege read-only API tokens.--delete, so a file deleted in Google Drive doesn't disappear from the backup with it.smartd, UUID-based mounts, and cron-driven scripted automation.One evening a backup drive wasn't showing up. I assumed it had died. It turned out to be a loose connection. But rather than plug it back in and move on, I went and checked whether the backups on it were any good. A month of one app's snapshots were zero bytes. The cron job had been writing empty files and reporting success the entire time, and nothing had ever told me. A copy on a second drive covered most of it; one app's history was gone for good.
So I rewrote both backup scripts to verify a snapshot before publishing it and to refuse to run at all if the target isn't mounted, then added a watchdog that checks every night that each backup is genuinely restorable. Then I broke it on purpose to make sure the watchdog actually complained. Reading the other scheduled jobs afterwards turned up a worse version of the same bug: two of them were mirrors that would have copied "empty" over the only other copy of our family photos if their source ever went missing. Both now check both ends before they run.
The lesson I actually took from it: a backup you have never restored from is a guess, and monitoring that only reports success is not monitoring.
A browser game I built by directing AI coding agents, deployed on my own server, and then reviewed for security myself. The review found three real problems, which was the point of doing it.
Three modes, all single-player: an open arena with about twenty bot snakes, classic grid Snake, and a maze run. The server is Node and Express. The game itself is plain JavaScript on a Canvas, with no framework and no build step, and the whole thing has two dependencies at runtime. It started out multiplayer, because I wanted something to play with friends. Single-player turned out cooler and more stable, and it means the scores actually compare.
Moved thousands of photos off iCloud and Google onto my own server, using command-line tooling that de-duplicated them and kept the metadata intact. Our documents sync there too, backed up, with read-only access where read-only is all that's needed.
A calm daily-puzzle app with one real daily user. 17 puzzle types, no timers, no streaks, nothing that nags. The test suite fails the build if a countdown or a line of pressure language ever creeps back in.
The mainstream puzzle apps are built to drive engagement: ads, streak guilt, countdown timers, noise everywhere. I wanted the opposite. I didn't want to guess at what "calm" ought to mean, so I went and read the published research on ADHD- and autism-friendly design. It's the most rigorous work out there on interfaces that don't overwhelm people. I wrote the findings down as rules and held every feature to them. No timers, no streaks, no pressure language, sound off unless you turn it on. It runs privately on my own server, invite-only, with automated backups. It gets opened most days, which is the only metric I wanted.
Something someone would happily open every day, with nothing in it designed to make anyone feel bad for missing a day. That's a harder brief than it sounds, because almost every convention in the genre exists to drive engagement. I worked from the research on how those interfaces land rather than trusting my instincts, and turned that into rules I couldn't talk myself out of.
My wife wanted somewhere calm to keep her knitting and clothes-making ideas. I built it by running a team of AI coding agents: writing the specs, splitting the work between them, and reviewing every change myself before it went live.
The idea was my wife's, and she still directs it: what it looks like, how it should feel, what's allowed in. I engineered it. The part I find interesting is how: I ran the build like a small engineering team, except the engineers were AI agents. I wrote the specs and the acceptance criteria, gave each agent a bounded lane, made them review each other's code, then reviewed and tested every change myself in a real browser before it shipped.
Most of the code came from the agents. What I'd actually claim is the judgement around it: deciding what was correct, what was safe, and what was good enough to ship.
It watches the server and it cannot touch it. Ten of the things it tracks sit on one machine, so when that machine goes they all go red together. I get a single incident with a timeline, rather than ten alerts and a guess about which came first.
I wanted to know when something broke without going and looking. I built it with an AI
coding agent working to my spec, and the read-only rule was the one line of that spec I
would not let move. Anything that can fix the server can also break it, and I didn't want
that running unattended. So this one can't. It reads
Proxmox telemetry, backup job state, HTTPS responses and certificate expiry, and it has
no Docker socket and no service account with a shell, every one of
them nologin. There isn't one subprocess call in the whole
backend, so it cannot run anything on the box even if it wanted to, and you can check
that yourself.
Read-only was the requirement from the first line, not a decision I came to later. There is no way for it to restart a service and nothing happens automatically. If it finds a problem, I go and fix it. That reads like a limitation and it is the entire point, because the worst thing a monitoring tool can do is become the reason the server went down.
I scan a lot of paperwork, and every tool for turning it into a PDF wanted me to upload it somewhere first. This one does the job on the machine, with no account, and the files never leave.
I built it with AI coding agents and then went through the result myself, which turned
up seven defects the tests had missed. One could leave the window permanently
unresponsive, with Task Manager the only way out. The eighth is the one I would have
hated to ship: the binary carried the full path it was built from, so running
strings on a download would have shown the account name and folder layout
of my machine. A checksum does not catch that. It only proves the file is the one that
was built. It is all in the changelog, because agents writing the code is not the
interesting part. What reviewing it turned up is.
Pick photos or scans, put them in order, get a PDF. It runs offline and there is no account to make. The one thing it reaches the internet for is checking whether a newer version exists, and only when you press the button.
SHA256SUMS.txt and a software bill of materials, all produced by the tagged build. I checked it by downloading the release back the way a stranger would. The copy sitting on my own disk proves nothing.A university team project: a case-management site where the public submit legal cases, solicitors pick them up and admins oversee the lot. React, Node/Express and MySQL. The team's source was never published, so there's no repo worth linking.
You paste in a plain-text weekly study plan and it works out the days and tasks for itself, then nags you about them each morning. Built it because I wanted it. Widgets, progress tracking, no accounts, nothing leaves the phone.
I picked the parts and built the PC I use every day, and I fix my own things instead of replacing them. A PS4 taken apart on the kitchen table and put back together working, an iPhone battery swapped out.
Alexa and Google Home routines running off motion sensors and IoT devices. The bathroom has no window, so a sensor handles the light, and when it drifts or the clocks change and it stops behaving, I go and find out why.
A Raspberry Pi running Python that controls a music player from a sound sensor. My first go at making something in the physical world trigger something in software, over GPIO. The original code was lost years ago, so what's on GitHub is me rebuilding it.
Exam timetables are almost always laid out badly, so I rebuilt ours as a site you could actually read at a glance. Front-end basics against a real annoyance. The original files are long gone, so the repo is a rebuild.
Python scripts for cleaning up messy datasets: stripping duplicates, checking things are consistent, and reshaping the data so a report built on it is actually right. That code is lost too, so the repo rebuilds the same idea.
My first ever program, in C. My first ever git push silently failed and I didn't notice for years. The repo sat here empty. I rebuilt it and finally gave it its code.
August 2024 — Present
November 2022 — August 2024
January 2024 — March 2024
October 2021 — December 2023
Globally recognised cybersecurity certification — threats & attacks, security architecture, identity & access management, risk & compliance, incident response. Valid until October 2028.
SIA Door Supervisor licence, CCTV (Public Space Surveillance) licence and First Aid certificate. These are professional monitoring and incident-response credentials.
Studied Computer Science at degree level, completing two of three years at London South Bank University.
I run and defend my own server every day, which is where most of my practice actually comes from. TryHackMe SOC Level 1 is what I'm starting next.
I'm after my first role in cybersecurity or IT: an apprenticeship, a SOC Tier 1 / Security Analyst role, or an IT Service Desk position. I'd rather be somewhere I'm learning constantly than somewhere I've already got it figured out. If that sounds like your team, get in touch.
Based in London · Eligible to work in the UK (no sponsorship required)