Hi, I'm Jack!
I'm a Senior Enterprise Solutions Engineer, where I partner with organisations to architect secure, performant cloud solutions. With 18 years of engineering experience and 13 years focused on cloud technologies, I specialise in zero trust security, edge computing, and modern application architectures that solve complex technical challenges.
My work involves understanding unique organisational requirements, designing tailored solutions using Cloudflare's platform, and guiding technical teams through implementation. I'm particularly passionate about network architecture, security-first design, and edge computing.
I actively share knowledge through technical talks and workshops.
About This Site
This site runs on Cloudflare Workers. It's built with a custom static site generator and has historically used: Wordpress, Silvrback, Ghost, Hugo, Jekyll.
Comments are powered by a home-brew system: D1 for storage, Turnstile for spam protection, and optional GitHub OAuth so you can post with your profile or comment anonymously. New comments go through a Workflows moderation pipeline (AI check + email notifications via Queues).
Posts older than 2015 use Disqus for comments.
Cloudflare Products Used
The blog uses the following Cloudflare products:
- Workers - Runtime for the site and all API routes.
- Workers Assets - Serves the built static site (HTML, CSS, JS) from
dist/. - D1 - SQLite: comments DB (comments, users, sessions) and reactions DB (post reaction counts: thumbs up, heart, etc.).
- KV - Indefinitely cached AI-generated TL;DR summaries (model selectable) and related-posts cache.
- Workers AI - BGE embeddings for semantic search; gpt-oss-120b for post summaries and comment moderation.
- Vectorize - Vector index for semantic search across posts.
- Turnstile - CAPTCHA for the comment form.
- Durable Objects - Live presence: “who’s viewing this post” via WebSockets; view counters (one DO per post slug, strongly consistent counts).
- Queues - Email notifications for new comments and replies (consumer sends via Resend).
- Analytics Engine - Custom analytics: pageviews, reactions, searches, and comment events.
- Workflows - Comment moderation: AI moderation step then email notifications via the queue.
Contact & Verification
Email: jack@jackpearce.co.uk
PGP Key Fingerprint: 941AEC1B4FA55A9F203BA5D1E5D227489E052505
iMessage Public Verification: APKTID4OFSm7bmOg8yhrFCtJPefE1SfoU6V8BSFKX41W0yCRs09w
Certifications
See my LinkedIn certifications for an up-to-date list.
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/comments/:slug |
GET | Fetch comments for a post |
/api/comments |
POST | Create a new comment |
/api/auth/github |
GET | Initiate GitHub OAuth |
/api/auth/callback |
GET | OAuth callback handler |
/api/auth/session |
GET | Get current session |
/api/auth/logout |
POST | Log out |
/api/reactions/:slug |
GET / POST | Get or add a reaction (thumbsup, heart, rocket, eyes, fire) |
/api/search |
GET | Semantic search; ?q=... |
/api/related/:slug |
GET | Semantic related posts (Vectorize); cached in KV |
/api/summary/:slug |
GET | AI-generated TL;DR for a post; optional ?model= (e.g. llama-3.1-8b-instruct); cached in KV indefinitely |
/api/presence/:slug |
WebSocket | Live presence for a post |