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:
    6:00:00 AM
    CloudFront
    Requests
    Fetched at:
    6:00:00 AM
    Log Stream NameTimestampMessageIngestion TimeEvent ID
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa321791367227491START RequestId: 3729852b-f4c2-420e-a547-c4811149da4c Version: $LATEST 179136723656339948824097275032746279034230714192940093064711412711424
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa3217913672275772026-10-07T10:00:27.577Z 3729852b-f4c2-420e-a547-c4811149da4c INFO {"event":"r2.query.start","queryName":"otel.load_trace","traceId":"a3e8380e325b9cba7e91c9deb21ab9fd","spanId":"7f51e38ec311a0d0"} 179136723656339948824099192896833352667820886264711540823800927027201
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa3217913672275772026-10-07T10:00:27.577Z 3729852b-f4c2-420e-a547-c4811149da4c INFO {"event":"r2.query.start","queryName":"otel.list_traces","traceId":"a3e8380e325b9cba7e91c9deb21ab9fd","spanId":"37581f169bc402df"} 179136723656339948824099192896833352667820886264711540823800927027202
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa3217913672284482026-10-07T10:00:28.448Z 3729852b-f4c2-420e-a547-c4811149da4c INFO {"event":"r2.query.finish","queryName":"otel.list_traces","traceId":"a3e8380e325b9cba7e91c9deb21ab9fd","spanId":"37581f169bc402df","durationMs":871,"readMs":869,"rows":40} 179136723656339948824118616845901272840577163875327017546672635969539
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa3217913672286942026-10-07T10:00:28.694Z 3729852b-f4c2-420e-a547-c4811149da4c INFO {"event":"r2.query.finish","queryName":"otel.load_trace","traceId":"a3e8380e325b9cba7e91c9deb21ab9fd","spanId":"7f51e38ec311a0d0","durationMs":1117,"readMs":1116,"rows":2} 179136723656339948824124102829220111373869981662022089043603107151876
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa321791367229103END RequestId: 3729852b-f4c2-420e-a547-c4811149da4c 179136723656339948824133223834006310398734869770795602223459053142021
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa321791367229103REPORT RequestId: 3729852b-f4c2-420e-a547-c4811149da4c Duration: 1611.43 ms Billed Duration: 1612 ms Memory Size: 2048 MB Max Memory Used: 758 MB 179136723656339948824133223834006310398734869770795602223459053142022
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa321791367291137START RequestId: 9ce23581-b74e-48dc-afbf-b176d693fc55 Version: $LATEST 179136730015639948825516628261651959074773775647697105970033693818880
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa3217913672912272026-10-07T10:01:31.227Z 9ce23581-b74e-48dc-afbf-b176d693fc55 INFO {"event":"r2.query.start","queryName":"otel.list_traces","traceId":"aa3caf617d39ac1e9bef0499db91067a","spanId":"b23d3cb4fbb6aeba"} 179136730015639948825518635328719826830856513862341644322569232056321
    2026/10/07/web-production-MyWebServerUseast1Function-tohtrofa[$LATEST]93ce57efccc048a182c3ecc51904aa3217913672912272026-10-07T10:01:31.227Z 9ce23581-b74e-48dc-afbf-b176d693fc55 INFO {"event":"r2.query.start","queryName":"otel.load_trace","traceId":"aa3caf617d39ac1e9bef0499db91067a","spanId":"0fb1fe8c6ef34135"} 179136730015639948825518635328719826830856513862341644322569232056322
    0 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