Skip to content
Skip to main content
TOOLS

My tools

The hardware and software I lean on day to day. Mostly QA work, a bit of photography on the weekends. I update this when something gets replaced, not on a schedule.

Hardware

Where everything else runs.

  • Daily driver. Light enough that I don't dread packing it for a trip. Battery makes it through a full day of testing.

  • Second screen. Browser under test on one half, test runner output on the other. Doubles as a TV when I clock off.

  • Mechanical, 75% layout. Keeps the arrow keys, drops the numpad I never used.

  • Quiet and low profile. Pairs with the MX Master 3S on the same Bolt receiver. Stays on the office desk; the home setup needs its mechanical click.

  • Everyday mouse. Horizontal scroll for moving across wide traces and Jira boards. Quiet clicks are the upgrade over the original 3.

  • Noise cancelling for open-plan focus. Comfortable enough to forget I have them on.

Editor & shell

Where the test code is written and the logs are read.

  • Primary editor. I keep two extensions installed: Playwright Test (for running and debugging specs inline) and ESLint. The rest I delete after a week.

  • Default terminal on my LXDE setup. Fast to launch, doesn't fight me for keybindings.

  • Structured-data shell. Pipelines pass tables and JSON instead of strings. Useful when I'm digging through Playwright trace output.

  • Pair-programming agent in the terminal. I let it scaffold Page Objects and write first-pass fixtures. I read every diff before it lands.

Design

Mockups and visual design work.

  • I design in Figma. Mockups, wireframes, the occasional logo. Free tier covers personal projects.

  • I use Claude for design feedback. Quick second opinion on a layout, and a drafting partner for the copy that sits on it.

Test automation

The runners and frameworks the regression suite executes on.

  • Default for new browser automation work. Cross-browser, with tracing built in. Makes debugging flaky failures much easier.

  • Still here for legacy projects. I keep it installed for the time-travel debugger, which has saved more than one evening when I'm trying to figure out why a suite someone else wrote is breaking.

  • Unit and integration tests on .NET services. `[TestCase]` keeps edge-case coverage from turning into copy-paste.

  • Same job on the Java side. `@ParameterizedTest` for table-driven specs.

  • Android UI testing. Instrumentation against real Activity state, not a screen scrape. Open alongside Android Studio, never on its own.

  • Visual regression built into the runner I already use. No separate vendor, no extra subscription.

Load & performance

How does it behave under stress, not does it work at all.

  • I pull this out when someone asks for a load model on a service. Not in regular rotation. The JMX format is ugly but the recorder gets you to a working scenario faster than writing it from scratch.

API & network

Poking at endpoints by hand before writing the automated check.

  • Where API collections live. Workspaces let me hand a flow to a developer without an email chain about which environment they're hitting.

  • What I reach for on a one-off sanity check. `curl | jq` turns a noisy JSON response into something I can read.

  • For traffic the browser DevTools can't see. Mobile apps, native clients, anything not in a tab. Map Local and breakpoints do most of the work.

Local stack

Database clients and the runtime everything else depends on.

  • MySQL and MariaDB. Fast, free, and the session manager remembers every connection I've ever made without nagging me to upgrade.

  • Postgres, SQL Server, SQLite, Oracle. ER diagrams and data compare across environments are the bits I use most.

  • Spins up databases, queues, and mock APIs for local testing. Keeps my host machine clean and the test environment reproducible.

Accessibility & quality gates

Catching the issues users would have caught for me.

  • The accessibility tree visualiser is the best of any browser. Quickest way to confirm the ARIA you wrote turns into the thing a screen reader will read aloud.

  • Performance, accessibility, SEO, PWA in one pass. Hooked into the CI for this repo. If a regression sneaks past code review, the build catches it before anyone else has to.

Cross-browser & device

Confirming the build works somewhere other than my laptop.

  • Real devices

    An iPhone, a mid-range Android, and an older Android stay on my desk. I don't sign anything off in a simulator if there's a real phone within reach.

Tracking & comms

Where bugs land and reports go.

  • Where the work is tracked and, when something slips, where the post-mortem starts. I live in two filters: 'mine open' and 'mine in review'. The rest is noise.

  • Test cases bolted onto Jira so coverage links to requirements without a separate tool. Imports Playwright and JUnit reports cleanly.

  • Screen recording for longer bug reproductions and demos.

  • Screenshots, GIFs, short captures with annotation. Keyboard-driven, so a clip gets attached to a ticket in seconds.

  • Shrinks OBS recordings to a Jira-friendly MP4 without trashing the quality. Not an editor, just a converter.

Notes & journaling

Where the thoughts that aren't code go.

  • Apple Journal

    Where I write all my thoughts down. Pulls in photos and locations from the day on its own, so the entry has context I'd never remember to add.

  • I track my reading on StoryGraph. Currently reading, finished, ratings, all in one place.

Photography

What I carry for the shots that end up on the travel pages.

  • Daily body. Small enough that I bring it on walks I wouldn't otherwise bring a camera on. IBIS rescues handheld low light, and the film simulations do most of the work I would have done in Lightroom.

  • Walkaround zoom. 24 to 122mm equivalent covers most travel framing in one lens. Weather sealed, so it stays on when it rains.

  • Variable ND for long shutters in bright conditions. Silky water, motion blur on busy streets, without pushing ISO into noise.

  • Bought to give the ND filter something useful to stand on. Reaches eye level at 72", folds down short enough to clip onto the bag. I chose aluminium over carbon to save the money. I feel the difference every time I lift it.

  • Snap clips on both ends. Body comes off for tripod work, back on when I want to walk. Comfortable and out of the way.

  • Holds the body, one lens, a filter. That's all I want it to do. The cream colour gets compliments, though it shows dirt quickly.

  • RAW processing and the rare composite. One-time purchase, no subscription. Adobe isn't getting another payment out of me.

Infrastructure

The plumbing under everything I ship.

  • I host my frontends here. Preview URLs per branch, fast deploys. It's so easy to use, and reliable.

  • I host my backends here. Small machines, simple scaling. It's so easy to use, and very powerful.

  • I package my services with Docker. The image I run locally is the same one that goes to production. Reliable, and easy to ship.

  • All my domains live here. DNS, email routing, edge caching, the lot. Free tier handles everything I throw at it.

  • Outbound transactional mail. Sits between my apps and SMTP so I don't have to think about deliverability or per-provider auth headaches.

  • S3-compatible object storage with zero egress fees. The first time I uploaded something heavy I started budgeting for the bandwidth out of habit, then remembered I didn't have to.

  • Every line of code I've written lives here. Actions handles the CI on every push, and the PR review interface is the one I find least painful.