I build browser products for people who are mostly not developers - a kid picking a rainbow cursor, a teenager reskinning their YouTube player - and I run everything underneath them myself: Cloudflare at the edge, k3s and Argo CD in the middle, MySQL, MongoDB and object storage at the back.
So the interesting problems are rarely the pretty ones. Judging every photo and message in the room before anyone else sees it. Keeping one container image from eating a node. Serving nine figures of requests a month on a budget that would make a funded startup laugh.
| Product | What it is | Reach |
|---|---|---|
| cursor.style | The largest free cursor library, plus the extension that applies them | |
| cursor-land.com | Second cursor brand - same engine, its own audience | |
| youtube-skins.com | 130+ skins for the YouTube player, and an ad skipper beside it | |
| fb.zone | Video and photo background themes for Facebook | |
| Chat | Moderated rooms, direct messages, photo albums and WebRTC calls, built into the main site | rooms, DMs, group voice |
| Slither | Free multiplayer snake, no install, no account | live on the games hub |
| Terra | Open 3D world you can run around in, built on streamed low-poly terrain | in preview |
| agropost.com.ua | Ukrainian agricultural marketplace: listings, company catalogue, grain logistics | running since 2010 |
| agro-post.com | The same platform for the US market | live |
Counts and ratings are pulled live from the Chrome Web Store every time this page loads.
386,356,707 requests · 20,478,940 page views · 3,913,964 unique visitors over the last 30 days
Yesterday alone: 21,003,914 requests from 124,218 people. Refreshed 2026-10-09 by the workflow above.
The chat grew out of the cursor library and runs in the same pod as the site: rooms, direct messages, photo albums, group voice and WebRTC calls, in 49 languages. Most of the people in it are teenagers, and that one fact decides almost everything about how it has to be built.
So the hard part was never the sockets. It is that every username, every message and every photo has to be judged before anyone else sees it, in languages I do not read, in under a second, at a cost per item of approximately nothing.
| Layer | What runs |
|---|---|
| Photos | OpenAI omni-moderation-latest, with per-category score thresholds measured against real uploads rather than guessed |
| A second opinion on photos | Amazon Rekognition, wired in beside it and running in shadow: it logs its labels and decides nothing until they prove the thresholds. The two miss different things - a real shotgun scored 0 at OpenAI and 100 at Rekognition, which is the whole argument for keeping both |
| Text | The same moderation model, then gpt-4o-mini on what scores zero and is still a problem: a phone number handed over in a direct message, or an intent that only reads as harmful in the language it was written in |
| Words | A two-level dictionary per language, because in some of them a slur is one space away from an ordinary phrase, and a naive filter bans half the room |
| Reports | Triaged automatically before a human opens them, with a ladder of sanctions that does not wait for one |
| Warnings | Treated as a product rather than a log line: a badge beside the avatar, a modal the account has to acknowledge, and a record of what was decided and when |
Failing open is the expensive direction here, so an outage at the moderator fails the upload instead of waving it through.
AgroPost has run since 2010: a marketplace, company catalogue and grain-logistics board for Ukrainian agriculture, now with a US edition at agro-post.com. It is the least glamorous thing I operate and the one that ended up in other people's teaching materials.
| Institution | Where it appears | Year |
|---|---|---|
| Odesa State Agrarian University | Course work programme, listing AgroPost as a notice board, company catalogue and trading platform | 2025 |
| Mykolaiv National Agrarian University | Methodical recommendations for crop production technology | 2021 |
| Mykolaiv National Agrarian University | Technical crops teaching material | 2016 |
| National University of Food Technologies | Conference proceedings, bibliography citing the elevators directory | 2015 |
Five public brands, one cluster, one operator. Nothing reaches production except through Git: Actions builds and pushes the image, Argo CD syncs the manifests, External Secrets pulls configuration out of AWS Parameter Store, and Cloudflare Zero Trust is the only door into the admin side. If it is not in a repository, it is not running.
Eleven in total. The last three are set in this page's own style, because the issuers publish no badge artwork for them.
| Repository | What it does |
|---|---|
| laravel-gsc-manager | Google Search Console inside Laravel, authenticated with a service account |
| ai-php-json-files-language-translator | Translates PHP, JSON and plain-text language files with an LLM, keeping placeholders intact |
| tabler-icons-font-picker | Tabler icon picker with categories, search and a drop-in field |
| image-processing | Image pipeline on AWS: ECS, Lambda, Aurora and S3 |
| slither | The multiplayer snake running at cursor.style/games |
How this page builds itself
Nothing here is a screenshot, and no image is hand-placed pixel art.
assets/hero.svgis generated bytools/build_hero.py. GitHub serves README images underdefault-src 'none', so an SVG can never pull a web font down. Every piece of display type is therefore baked into<path>outlines from ASCII subsets of Baloo 2 and JetBrains Mono, kept intools/fonts/with their OFL licences. The mascot is embedded as a data URI for the same reason.assets/traffic.svgis redrawn every night.update_readme.mjsasks the Cloudflare GraphQL API for yesterday and for the last 30 days, writesassets/traffic.json, andtools/build_traffic.pyturns that into the chart above - bars, busiest-day marker, aligned figures and all.assets/github.svgis the same idea pointed at the GitHub GraphQL API. The usual readme-stats services were answering 503 and 402 while this page was built, so the card is generated here instead and cannot go down on its own.- The numbers in the text come from the same run, so the readable version stays correct even if images are blocked.
- The snake is redrawn from the contribution graph by a second workflow and published to the
outputbranch.
Rebuild the artwork locally with:
pip install fonttools pillow
python tools/build_hero.py
python tools/build_traffic.py
GITHUB_TOKEN=... python tools/build_github_card.py







