Macfarlanes
Senior Full Stack Developer
Full-stack applications in secure Azure cloud environments; AI-assisted document processing tooling and monorepo architecture.
Available for new opportunities
Senior Full Stack / AI-Enabled JavaScript Engineer
10+ years building scalable, production-grade web platforms across legal, media, telecoms, travel and e-commerce. Specialising in React and Next.js frontends, Node.js microservices, and modern cloud architectures on AWS and Azure.
Highlighted postyana-stocks: A Next.js Microservices Platform →Senior Full Stack Developer
Full-stack applications in secure Azure cloud environments; AI-assisted document processing tooling and monorepo architecture.
Senior Full Stack Developer
Migrated EasyJet platform from .NET to modern Node.js and React/Next.js stack, with automated Playwright testing pipelines.
Senior Full Stack Developer
Greenfield Next.js platform supporting the Gousto Ireland market launch; pair-programming, TDD, trunk-based development.
Senior Full Stack Developer
Migrated betting and gaming platform to modern React/Next.js and Node.js; serverless backend with AWS Lambda.
An 11-service polyglot platform for real-time stock data, portfolios and ML predictions — service boundaries, layered caching, tracing, and change-aware CI.
How ops-agent’s orchestrator delegates to fifteen scoped subagents, and the LangGraph mechanics — interrupt/resume, a CNPG-backed checkpointer — behind it.
What retrieval-augmented generation actually is, and how a RAG chatbot over k8s-apps’ docs was built with OpenAI embeddings and Claude for cited answers.
The cluster didn’t start on Cilium. Why Flannel’s silently-unenforced NetworkPolicies forced a migration, and what eBPF native routing and Hubble buy you.
Replacing three duplicated SMTP2GO integrations with one Kafka-mediated email service — the Harbor robot account gotcha, and whether it was over-engineered.
Putting every on-prem cloud service behind single sign-on with Authentik — the forward auth pattern, the auth-url hostname gotcha, and native OIDC for Grafana.
Sync waves, ignoreDifferences, the Argo Rollouts diff gotcha, permanent OutOfSync apps, and the valuesObject pitfall — ArgoCD on real workloads.
Using CloudNativePG for database-per-service Postgres — shared vs dedicated clusters, barman WAL backups to MinIO, and the kured drain gotcha.
Three scenarios where standard NetworkPolicy breaks down in Cilium native routing mode, and how CiliumNetworkPolicy’s toEndpoints and toCIDR solve them.
Connecting a Ceph cluster to Kubernetes via the CSI driver for dynamic RBD provisioning — including the Cilium native routing gotcha that blocks OSD traffic.
What I learned building a production Kubernetes cluster at home — Proxmox, Cilium native routing, Ceph CSI, ArgoCD, and the gotchas not in the docs.