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:
    8:00:00 AM
    CloudFront
    Requests
    Fetched at:
    8:00:00 AM
    Log Stream NameTimestampMessageIngestion TimeEvent ID
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f81761566540604INIT_START Runtime Version: nodejs:22.v59 Runtime Version ARN: arn:aws:lambda:us-east-1::runtime:9ff8926a0b8f846a2bd170efff02668e0f0f00b647d56d4fdc31c22b5cef37a8 176156654382039284246572266852993521105179245167423152927289912459264
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f81761566540787START RequestId: 05ba1049-01cf-46ce-a6c1-70a33eec4a80 Version: $LATEST 176156654382039284246576347889364852209214146203867047577445506875393
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f81761566542110END RequestId: 05ba1049-01cf-46ce-a6c1-70a33eec4a80 176156654382039284246605851775262508223630397959141761359717918965762
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f81761566542110REPORT RequestId: 05ba1049-01cf-46ce-a6c1-70a33eec4a80 Duration: 1322.41 ms Billed Duration: 1502 ms Memory Size: 1024 MB Max Memory Used: 125 MB Init Duration: 178.85 ms 176156654382039284246605851775262508223630397959141761359717918965763
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f81761566783771START RequestId: f2b35a63-21aa-4662-bb07-c967e6bbbebc Version: $LATEST 176156679279639284251995072160684617142938054502913185851978899193856
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f817615667844172025-10-27T12:06:24.417Z f2b35a63-21aa-4662-bb07-c967e6bbbebc 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 176156679279639284252009478442082867925487486576917316693511762542593
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f81761566784523END RequestId: f2b35a63-21aa-4662-bb07-c967e6bbbebc 176156679279639284252011842321073912171540489363054217419831396466690
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f81761566784523REPORT RequestId: f2b35a63-21aa-4662-bb07-c967e6bbbebc Duration: 751.41 ms Billed Duration: 752 ms Memory Size: 1024 MB Max Memory Used: 143 MB 176156679279639284252011842321073912171540489363054217419831396466691
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f81761566784642START RequestId: 24965441-338f-4dc5-9e7b-22a68642fe1a Version: $LATEST 176156679279639284252014496109752537315694332113528662574850608136196
    2025/10/27/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]c519a6ecb9bc46a9b593964b7edba1f81761566788602END RequestId: 24965441-338f-4dc5-9e7b-22a68642fe1a 176156679279639284252102807060738718583334813557888350086414290583557
    616 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