Back to notes

Index

2026 May

Building a data analyst agent on Cloudflare Workers

May 2, 2026 — Cloudflare Workers, R2, Queues, MiniMax

An async analyst API that can take uploaded files, hosted data, BigQuery results, or inline JSON and turn them into answers, analysis, or Vega-Lite charts.

Read context

The interesting part is the runtime shape: Hono on Cloudflare Workers for the API, R2 for uploaded datasets, Queues for long-running analysis, KV for history and memory, and MiniMax M2.7 through Cloudflare AI Gateway for the heavy reasoning step.

It is moving from a simple "ask a dataset" endpoint toward a more complete analyst workflow: structured output, metrics, visualization validation, session context, streaming events, and notebook-style exports.

2026 April

Modeling soccer recruitment with similarity scores

April 30, 2026 — ML, FastAPI, Player Analytics

A player-similarity and recruitment modeling platform around the kind of comparisons scouts actually make.

Read context

This came from treating recruitment like a practical matching problem instead of a generic prediction demo. The useful layer is comparing players across measurable traits, surfacing similar profiles, and giving scouts a reason to inspect a recommendation instead of blindly trusting a score.

The stack direction was intentionally simple: Python for modeling, FastAPI for serving, and enough ML tracking to keep experiments reproducible.

Trying Vertex AI Search from a small TypeScript surface

April 30, 2026 — Vertex AI, Search, TypeScript

A focused search experiment to understand the practical shape of Google's managed retrieval stack.

Read context

The point was not to make a large product around search. It was to understand what Vertex AI Search feels like from a developer surface: setup, request shape, response handling, and where managed retrieval helps or gets in the way.

This belongs in the timeline because search and retrieval show up repeatedly in the portfolio, especially around RAG and agent workflows.

Testing image-generation workflows on Vertex AI

April 30, 2026 — Vertex AI, Images, TypeScript

A lightweight pass at image generation APIs, request shape, and how the output could fit into app flows.

Read context

This was an API-shape exploration: how image requests are formed, how generated assets come back, and what the minimum app wrapper needs to look like.

It pairs with the Vertex AI Search work because both are about learning the edges of managed AI services from a real code surface rather than from documentation alone.

A tiny preflight script for Cloudflare deploys

April 28, 2026 — Cloudflare, Deploy Checks, GitHub

Not a big project, just a practical check for platform fit before wasting time on a deploy path.

Read context

This is deliberately framed small. It is a utility idea: inspect a repository and catch obvious Cloudflare deploy blockers early, before turning a simple deployment into a debugging session.

The lesson is operational, not glamorous: a boring preflight check can save time when moving static sites, workers, or small apps between environments.

Turning a jobs dashboard into something I can rerun and inspect

April 27, 2026 — Flask, DigitalOcean, Runbooks

The useful part was making the dashboard operational: bootable, inspectable, and easy to verify later.

Read context

The jobs dashboard was less about a new UI and more about maintainability. A dashboard becomes more valuable when there is a clear way to start it, check it, inspect logs, and understand whether the data path is still healthy.

That is why this shows up as a runbook/operations note rather than a portfolio-feature announcement.

Trying Google Cloud Memory Bank from a plain Python SDK

April 24, 2026 — Google Cloud, Memory, Gemini Enterprise

A small SDK surface for testing how external memory should be written, recalled, and trusted by agents.

Read context

The question here was how agent memory should work when it moves outside a single chat session. Writing and reading memories is the easy part; the harder part is deciding what should be trusted, refreshed, or ignored.

This connects directly to the OpenClaw and Hermes work because durable memory changes how an agent behaves over time.

Adding citation spans so RAG answers are easier to audit

April 24, 2026 — RAG, Citations, Analytics

Moved from broad document references toward answer evidence that can be checked line by line.

Read context

This is about making RAG answers less hand-wavy. A citation that points to an entire document is better than nothing, but a span-level citation makes it possible to check the actual evidence behind a sentence.

For analytics copilots, that matters because a confident answer without inspectable backing is hard to trust.

Writing down the Cloudflare AI Gateway + MiniMax path

April 20, 2026 — Cloudflare, MiniMax, Observability

Captured the routing, caching, and logging path so MiniMax calls were easier to debug through Cloudflare.

Read context

This was documentation around a real integration path: using Cloudflare AI Gateway to route and observe MiniMax calls. The useful pieces were provider naming, gateway behavior, cache/log visibility, and how failures show up.

It belongs here because observability is often the difference between a demo model call and something you can actually debug.

What OpenClaw made obvious about always-on agents

April 16, 2026 — OpenClaw, Agent Workspaces, Tooling

OpenClaw pushed the question from "can an agent code?" to "how should an agent live, remember, and operate?"

Read context

OpenClaw is not interesting only because it can call tools. The more interesting part is the product shape around agents: local workflows, skills, long-running context, and integrations that make the agent feel present instead of disposable.

This entry is about learning from that shape and applying it to workspace, memory, and maintenance ideas elsewhere.

Pulling memory, sync, and execution ideas into an OpenClaw workspace

April 16, 2026 — OpenClaw, Memory, Execution

A workspace pass around the pieces that make local agents feel continuous instead of session-bound.

Read context

This was about organizing the building blocks around an OpenClaw-style workspace: what gets remembered, what gets synced, and what execution path should stay local and inspectable.

The important part is continuity. Agents become more useful when the surrounding workspace carries context forward safely.

Cleaning up tracker experiments into one shared pattern

April 16, 2026 — Trackers, Templates, Consolidation

Several small tracker ideas started sharing the same data, UI, and alerting patterns, so I cleaned the shape.

Read context

There were multiple real-time tracker experiments with overlapping needs: data refresh, status display, alerts, and simple UI shells. Instead of treating each one as a separate one-off, this work pulled the repeated shape into a shared pattern.

That makes future tracker ideas faster to start and less messy to maintain.

Fixing the first model choice in a multi-provider CLI

April 4, 2026 — Coding Agents, Providers, Configuration

A provider-aware CLI still has to get the first model selection right, before the rest of the routing matters.

Read context

This came from a small but important edge in multi-provider coding CLIs. If the first model choice ignores the active provider, the rest of the provider abstraction can look correct while the user still starts in the wrong place.

The fix was about respecting environment and provider selection at the earliest decision point.

2026 March

Adding MiniMax as a search provider without breaking the defaults

March 25, 2026 — OpenClaw, MiniMax, Agent Tools

A provider integration pass focused on defaults, routing, and making search usable without surprising users.

Read context

This was OpenClaw-facing provider work: make MiniMax available as a search provider while keeping the existing defaults predictable.

The real work in provider integrations is usually around routing, naming, environment variables, and failure behavior, not only the API call itself.

Making skills easier to install from Cursor and VS Code

March 25, 2026 — Skills, Editors, Documentation

Small install and metadata details matter when skills are meant to move between editors and agent runtimes.

Read context

Skills are only useful if people and agents can install them without guessing. This work was about making editor-specific setup clearer and keeping metadata aligned with how the skill is actually consumed.

It is documentation work, but documentation that directly affects adoption.

Chasing a Hermes Agent coroutine warning before it became a real bug

March 23, 2026 — Hermes Agent, Python Async, Reliability

Hermes Agent made the async edge visible: warnings around unscheduled coroutines are reliability signals, not noise.

Read context

Hermes Agent work exposed a classic async reliability issue: tests can pass while coroutine warnings quietly point to future runtime bugs.

The useful lesson was to treat warnings as design feedback. In agent frameworks, thread-safe bridges and async scheduling need to be boringly correct.

Parsing finance PDFs without losing the boring details

March 23, 2026 — PDF Parsing, Finance, Summaries

A document pipeline where the boring parts, tables, labels, numbers, and caveats, are exactly the point.

Read context

Finance documents punish vague summaries. The important details are often labels, table structure, dates, footnotes, and ratios that look boring until they change the answer.

This entry is about preserving structure before asking the model to explain anything.

Trying a LlamaParse + MiniMax pipeline around Hermes-style document work

March 23, 2026 — Hermes, LlamaParse, MiniMax

A quick bridge between parsing and model synthesis, shaped by the same long-running-agent ideas Hermes is exploring.

Read context

This connected parsing and model synthesis into a small document workflow. LlamaParse handled extraction, MiniMax handled language generation, and the broader Hermes interest was around how agents carry structured context across steps.

The point was not only summarization, but passing better intermediate state to the model.

Exporting the small schema that made an SDK easier to use

March 17, 2026 — SDKs, Schemas, Developer Experience

One of those tiny exports that only matters when another developer tries to build against the package.

Read context

Small SDK fixes can look minor from the outside, but an exported schema can decide whether a downstream developer has to copy internals or can use the package cleanly.

This was a developer-experience fix: make the intended surface explicit.

Putting OCR, tables, charts, and reranking behind one skill

March 13, 2026 — NVIDIA NIM, OCR, Retrieval

The goal was to make NIM document tools feel like one workflow instead of a pile of separate demos.

Read context

NVIDIA NIM has several useful document capabilities, but the portfolio value was in composing them: OCR, layout, tables, chart understanding, and reranking as one flow.

That makes the skill useful for real document work instead of only showing separate API examples.

Borrowing OpenClaw's assistant feel for a Google ADK prototype

March 3, 2026 — OpenClaw, Google ADK, Memory

A personal-assistant prototype with callbacks, memory, and identity inspired by how OpenClaw frames agent presence.

Read context

Google ADK handled the framework side, but OpenClaw influenced the product feel: an assistant should have identity, continuity, and a useful memory surface.

This prototype explored callbacks, persistence, and user-specific context rather than only tool-calling.

2026 February

Making cricket logging feel like a real fan habit

February 27, 2026 — Cricket, Social Products, Reviews

A social diary idea where the product loop is logging, rating, reviewing, and remembering matches.

Read context

The cricket product idea worked best when framed as a habit, not a stats site. Fans remember matches through ratings, reviews, watchlists, and social identity.

The note here is about translating a familiar social diary pattern into a cricket-native product loop.

Testing how much a live interview copilot should say

February 24, 2026 — Swift, Interview Copilots, UX

The interesting UX question was restraint: when should real-time help speak, and when should it stay out of the way?

Read context

A live copilot can become annoying fast. The useful question was not whether suggestions can be generated, but whether they arrive at the right time and with the right amount of confidence.

This was a Swift-side exploration of real-time assistance as a quiet companion instead of a noisy overlay.

Starting with the analytics question before the dashboard

February 11, 2026 — Analytics, Metrics, Decision Support

A reminder from the analytics suite: charts are only useful when the business question is already sharp.

Read context

The analytics suite was strongest when each dashboard answered a clear question: what changed, why it matters, and what should happen next.

That framing helped separate useful metrics from decorative charts.

Writing the same app's deploy path for AWS and Azure

February 11, 2026 — AWS, Azure, Deployment

Parallel cloud runbooks made the tradeoffs clearer than a single happy-path deployment note would have.

Read context

Writing both AWS and Azure deployment paths forced the architecture choices into the open: services, secrets, deployment steps, and rollback expectations.

The result is more useful than a single cloud tutorial because it exposes where the platform assumptions differ.

Keeping Snowflake and Spark examples honest

February 11, 2026 — Snowflake, Spark, Lakehouse

The useful work was keeping terms, freshness, and data semantics aligned across warehouse and Spark examples.

Read context

Snowflake and Spark examples can look equivalent while quietly meaning different things. This work was about keeping data freshness, naming, transformations, and governance aligned.

The lesson is that lakehouse parity is less about syntax and more about semantics.

2026 January

Building a research agent that shows its work

January 17, 2026 — Agents, Research, Synthesis

A research-agent pass focused on source selection, synthesis, and making the answer trail inspectable.

Read context

The research agent was about making the path to an answer visible. Source selection, uncertainty, and synthesis matter as much as the final generated paragraph.

This became an early version of the same theme that later appears in RAG citation spans and Deep Research-style workflows.

Adding over history and chase math to a cricket scorer

January 16, 2026 — Cricket, React, Match State

Ball-by-ball history, chase targets, and all-out logic made the scorer behave closer to an actual street match.

Read context

The scorer needed cricket-specific state, not just buttons for runs and wickets. Over history, chase targets, and all-out logic made the app behave more like a real match.

This is the kind of product detail that only appears after using the flow, not from the initial scaffold.

Getting a Capacitor Android build unstuck

January 16, 2026 — Android, Gradle, Packaging

Mostly practical mobile plumbing: Gradle versions, Android build settings, ProGuard, and app icon packaging.

Read context

This was not glamorous work, but it was necessary. Capacitor packaging pulled in Android Gradle plugin versions, ProGuard settings, build properties, and app-icon density details.

The lesson was that mobile wrappers still need real native-build care.

Starting a street-cricket scoring app from the core flow

January 15, 2026 — Scoring, React, Mobile

The first version centered on the scoring loop before adding polish, history, or native packaging.

Read context

The first pass was about the core scoring loop: teams, overs, wickets, runs, and the minimum state needed to make a match progress.

That gave the later history, chase, and Android work something solid to build on.

2025 December

Breaking a map card out into its own component

December 18, 2025 — React, Components, Map UI

A cleanup step in the time app so the map UI could evolve without crowding the main screen logic.

Read context

The map card extraction was a normal component cleanup, but a useful one. It separated display logic from the larger time interface so the UI could keep evolving.

This kind of refactor is small, but it keeps early prototypes from becoming tangled.

Making the add-city flow less brittle

December 18, 2025 — UI, State, Modal Flows

Added the modal and store actions so adding a city felt like a real interaction, not a placeholder.

Read context

The add-city work moved the app from static display toward interaction. A modal, store actions, and helper placement made the flow easier to reason about.

It is a small UI feature, but it set up the state model for later improvements.

Adding a time scrubber to a world-clock experiment

December 18, 2025 — Time State, React, Interaction

The scrubber made the app more interesting than a live clock by letting users move through time manually.

Read context

The time scrubber changed the interface from passive to exploratory. Instead of only showing the current time, the app could move backward and forward through a manually selected state.

That made the time-state model more important than the clock display itself.

Setting up a Vite, React, TypeScript, and Tailwind base

December 2, 2025 — Vite, React, Tailwind

A clean starter pass for the cinematic time interface: frontend tooling, state setup, and component structure.

Read context

This was the foundation pass for the time interface: Vite for local speed, React and TypeScript for the UI, Tailwind for styling, and early state structure.

It matters because later interaction work depended on having a clean frontend base.