Notes on Building

Posts

I’ve been shipping Ja-ti, a small product that tracks follower changes on X: who followed, who left, and the messy middle (suspended accounts, “gone” profiles, that sort of thing). The pitch fits on a line — know who arrives, know who leaves — but the implementation is where it gets interesting, because “compare two follower lists” sounds trivial until you’re doing it repeatedly, fairly across subscribers, within API and platform limits, and with billing that matches how expensive an account actually is to track.

At a high level, Ja-ti takes the accounts you care about and checks them on a cadence you choose (within feasibility rules driven by audience size — you can’t promise a 15-minute sweep on a seven-figure follower count and mean it). It stores snapshots and diffs so you see history, not just a one-off delta. It sends digest email when something changed: new follows, unfollows, VIP-tier movements, account-status shifts — with tier-aware truncation so the entry experience doesn’t pretend every account gets a novel.

Billing is usage-shaped: list price scales with follower-count bands, there’s a card-required trial, and manual checks are gated differently from automatic runs so power users don’t accidentally erode margin. None of that needs a manifesto; it’s the boring truth of consumer infra products — the price has to track the cost, and the UX has to fail loudly when someone asks for the impossible.

Ja-ti product UI: dashboard or follower tracking view.
Continue reading

Your tabs don’t think in a straight line. You open a main article, then sources, then references from those. Tab Canopy organises them in a tree instead of a flat list. Nest tabs under others, drag to reorder, search with Ctrl+F. It lives in the side panel, works across windows, and stays in sync. Everything is stored locally in your browser.

Tab Canopy side panel showing a tree of tabs: parent tabs with nested children, expand and collapse controls, and indentation showing the hierarchy. Tabs organised in a tree instead of a flat list.

It’s on the Chrome Web Store and Firefox Add-ons, and open source (MIT) on GitHub. WXT made it straightforward to build one codebase for both. Plenty of extensions already do tree-style tabs; I built this one to have a real use case for the Firtoz collection packages (IndexedDB + TanStack collections). The experiment turned into something I use every day.

Then the cracks showed.

Moving a parent tab in the browser could scramble the tree; closing one could leave orphans; an update would sometimes overwrite the structure the UI had just set. Fixing one bug broke another. So I fixed the collections layer, rewired the extension around a single reconciler, and got the tests green. Here’s what changed and why it matters.

Continue reading

Unity Standard Shader with Custom Clipping Planes

2026 note

I’m in the process of migrating posts from my old blog into this new system.

Rather than rewriting everything, I’m keeping the original structure and tone where possible, and adding light context where it helps.

For a project of mine, I wanted to have custom clipping planes for objects, so that if an object is intersection with another, it would hide any part after the intersection.

It looks like this:

I decided to extend the Standard shader provided by Unity3D to achieve this effect.

Continue reading

2026 note

I’m in the process of migrating posts from my old blog into this new system.

Rather than rewriting everything, I’m keeping the original structure and tone where possible, and adding light context where it helps. This post originally spanned two entries written in 2014 and 2015. They’re presented together here, in chronological order, with minimal changes.

An update since the post below, a recent pull request has fixed it for later unity versions, so the code below is more for historical purposes.


2015 update: turning the script into a small tool

By 2015, I had cleaned this script up and published it as a small standalone project, along with a short update video.

The code was moved into a GitHub repository so it was easier to reuse and iterate on:

https://github.com/toxicFork/Unity3D-TextureAtlasSlicer

If you’re just here to grab something that works, this version is the one to start from.

Continue reading