WORK, WRITING, STUFF

Projects.

Some things I made

Cloudfront viewer info

Various viewer request info generated at edge by this website’s CDN. While this overview page is a static route and is composed of several other page.tsx components, via @slots, the viewer request feature uses the Next.js dynamic headers()  API so it has to live on its own dedicated route. (See Next.js parallel routes docs).

→ Go to viewer info

Go in browser

This widget executes a WASM program, built from Go. The program itself interprets arbitrary JavaScript text input, and evaluates it as Go, using Yaegi.

Output

    CloudFlare turnstile

    A playground to familiarize myself with CloudFlare’s turnstile service. Again, this overview route is static, and the @turnstileslot/page component is an async server component. While parts of it can be statically rendered, it uses the Next.js dynamic cookies() API to power both the "Client" and "Server" results. You can still view the playground below,you'll need to go to the dedicated route for a full working example.

    → Go to working turnstile playground

    Turnstile Playground#

    SiteKeyDescriptionVisibilityDemo
    1x00000000000000000000AAAlways passesvisible
    2x00000000000000000000ABAlways blocksvisible
    1x00000000000000000000BBAlways passesinvisible
    2x00000000000000000000BBAlways blocksinvisible
    3x00000000000000000000FFForces an interactive challengevisible

    https://developers.cloudflare.com/turnstile/troubleshooting/client-side-errors/error-codes/

    https://developers.cloudflare.com/turnstile/get-started/client-side-rendering/#configurations

    Logs viewer

    Pulling logs from AWS CloudWatch logs and displaying them in a reasonably pretty format.

    Function URL Latency
    Latency in milliseconds
    Lambda
    Invocations
    Fetched at:
    11:00:00 PM
    CloudFront
    Requests
    Fetched at:
    11:00:00 PM
    Log Stream NameTimestampMessageIngestion TimeEvent ID
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf1778814055250START RequestId: 6abbbc39-9c82-4ae3-b8cb-fe24a98dd5d3 Version: $LATEST 177881406427339668879001695224093855099983884684908242529997611270144
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf17788140554102026-05-15T03:00:55.410Z 6abbbc39-9c82-4ae3-b8cb-fe24a98dd5d3 WARN Skipping CRC64NVME checksum validation: Please check whether you have installed the "@aws-sdk/crc64-nvme-crt" package explicitly. You must also register the package by calling [require("@aws-sdk/crc64-nvme-crt");] or an ESM equivalent such as [import "@aws-sdk/crc64-nvme-crt";]. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt 177881406427339668879005263343325619999686530399831866267838568136705
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf1778814055450END RequestId: 6abbbc39-9c82-4ae3-b8cb-fe24a98dd5d3 177881406427339668879006155373133561224612191828562772202298807353346
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf1778814055450REPORT RequestId: 6abbbc39-9c82-4ae3-b8cb-fe24a98dd5d3 Duration: 199.09 ms Billed Duration: 200 ms Memory Size: 1024 MB Max Memory Used: 161 MB 177881406427339668879006155373133561224612191828562772202298807353347
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf1778814055911START RequestId: 7adf4bad-11f0-4208-afa8-49c1f58053e8 Version: $LATEST 177881406427339668879016436016670083841880439794686463096953064325124
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf1778814055916END RequestId: 7adf4bad-11f0-4208-afa8-49c1f58053e8 177881406427339668879016547520396076494996147473277826338760594227205
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf1778814055916REPORT RequestId: 7adf4bad-11f0-4208-afa8-49c1f58053e8 Duration: 4.30 ms Billed Duration: 5 ms Memory Size: 1024 MB Max Memory Used: 161 MB 177881406427339668879016547520396076494996147473277826338760594227206
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf1778814056328START RequestId: eb793c04-7778-4b61-8eb8-9a8fd8bece38 Version: $LATEST 177881406427339668879025735427417871111730460189206157463701058158599
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf1778814056434END RequestId: eb793c04-7778-4b61-8eb8-9a8fd8bece38 177881406427339668879028099306408915357783462975343058190020692082696
    2026/05/15/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]f40c24967d7c4d968b1b662e870c67cf1778814056434REPORT RequestId: eb793c04-7778-4b61-8eb8-9a8fd8bece38 Duration: 105.06 ms Billed Duration: 106 ms Memory Size: 1024 MB Max Memory Used: 163 MB 177881406427339668879028099306408915357783462975343058190020692082697
    451 ms ago

    nextjs-components

    React components that I transcribed from Vercel’s Design System, years ago. — See the code on GitHub

    OpenGraph image for the nextjs-components GitHub repository