Notes on Building

Thoughts, experiments, and hard-won lessons from building real software.

Posts

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