This blog supports RSS / Atom for your favourite reader.
Visit my Mastodon page for my shorter quips.
-
Passthrough isn't dead
Meta’s AR tech demo made the Vision Pro look ancient - but that doesn’t mean Apple bet on the wrong horse.
-
Understanding Roblox typography
Here’s more information than you ever wanted to know about how text sizing and alignment work in Roblox. It’s one of the few parts of the engine that truly shows its age.
-
Glitches in dynamic reactive graphs
My reactive library, Fusion, is built around the idea of assembling reactive objects into reactive graphs for processing data and sending instructions.
-
Type functions
I just merged a new feature into Fusion. It implements nothing new at all.
-
The nasty surprise in reactive signals
If your reactive framework isn't doing this, then you're in for a nasty surprise.
-
Fallibility lints in Luau
Because, like those who write it, code is fallible.
-
In love with Roblox audio
I’m currently building something in Roblox, and I can say with confidence that the new Audio API just totally changed the sound game.
-
Expectation and exception
How can I help give back to the world without starving myself in the process?
-
Monotonic painting
Edited to correct some incorrect deductions around skipping computations.
-
Evolving Fusion's execution model
Fusion’s moving to a hybrid push-pull system. What will that look like?
-
I don't want to be a maintainer
In a world where that xz incident occurred, I’ve been thinking about my relationship to OS.
-
Musings on structural code editing
One of my long term aspirations is to design the structural code editor that actually sticks, mostly because I don’t entirely vibe with text. It’s not something I’m working on today, but I have a couple of opinions about how it should be done that I’d like to verify or discard eventually.
-
Square checkboxes: a Gen Z review
visionOS is the first mainstream OS to ditch square check boxes, and the nerdy part of the internet is on fire. I wanted to weigh in.
-
Ultrawide fluid typography
Graphics designers love massive landing pages and huge typography. Here’s how to ensure it’s maximally accessible to users of all screen shapes.
-
A reactive smart home
Event-based programming is known to cause obscure complications in systems design - so why do we expose it to users setting up smart homes?
-
PluginAction sucks (and how to improve it)
You’d assume that, as a plugin developer, I’ve used PluginAction a ton of times. However, they are missing a critical piece of functionality, rendering them nearly useless.
-
Meshy musings
Roblox is getting editable meshes - and that’s going to change the platform forever. Yet, after playing around with DynamicMesh/EditableMesh for a while, I have thoughts.
-
My next Roblox game
Ever since working on Agnosia and Interval, I’ve been burning to make a sequel. I could make it as a traditional game, but I’m somehow drawn to platforms like Roblox. Here’s some thoughts about how I might make it work.
-
math.round considered harmful
math.round(x) is the same as math.floor(x + 0.5), riiiiiiiiiiiiight?
-
Early ruminations on monorepo life
A while back, as part of some broader refactoring, I moved all of the Elttob Suite products into a single repository. Here’s my setup and how it’s working for me so far.
-
State of things (Sep 2023)
I’m unmuddling my brain by laying out the status of everything I’m working on, just before I pop out to San Francisco for a bit.
-
The next 10 years, beyond Maids
Maids have been the dominant destruction pattern in Lua(u) for a decade - but new possibilities await beyond them.
-
A style update
I redesigned the homepage to make better use of vertical space. Also, there’s a new warmer colour palette and some subtle details added.
-
Scroll wheel UX
My Logitech MX Master 3S had bad scrolling - and it’s not just their weird clunky implementation of smooth scrolling that makes my Surface Precision Mouse weep.
-
Greedy meshing, visually
Greedy meshing blocks in a voxel game doesn’t have to be hard. Here’s a simple explanation for people who prefer seeing how the algorithm progresses.
-
UI layout hypotheses
Presented with wholly inadequate logical explanation - that is, none.
-
Solving Roblox's texel density problem
Lots of people think Roblox’s 1024× texture resolution limit is a problem.
-
Dynamic volumetrics in Roblox
For years, I’ve been looking for a cheap volumetric lighting solution. At long last, I’ve found something that doesn’t just run fast, but looks stunning and runs completely in realtime.
-
Two cyber-social freedoms
There are two cyber-social freedoms: the freedom from platforms, and the freedom from your friends’ platforms.
-
Trying out 'mass-towed-on'
I don’t like Musk, so in an act of self love, I’m gonna start peeling away from their birdsite.
-
Better volumetric light beams
Many Roblox games use a simple Beam texture to add volumetric light beams to lights, but they only look good from the side. I improved them to look more convincing above and below, too.
-
Icon colour systems
Vanilla 3 did a lot of work on icon consistency. However, a remaining issue was that I still had no system supporting the choice of colours for icons.
-
Destruction problems in Fusion
Roblox made two frustrating API decisions that are actively hampering Fusion’s ability to provide a clean way of managing destruction.
-
UI frameworks don't serve designers
The pace of innovation in UI framework design has given an outsized advantage to those who know code. Specialist UI designers have been left in the dust.
-
Optimising SETS for Fusion
I can’t remember the last time I’ve been this pleased with an algorithm.
-
SETS: efficient topological search
I don’t know if this has algorithm has a name already, but a cursory glance at Wikipedia says no. So I’m going to call it subgraph-eliminating topological search (SETS) because I like naming things and I’m too lazy to wade through papers.
-
You don't know performance
When a measure becomes a target, it ceases to be a good measure.
-
Shipping code is fun
Yesterday I brought this blog online for the first time. Today I’ve been filling in CSS holes, fixing bugs and bringing over an old post.
-
So I have a blog now
Twitter seems to be folding in on itself at the moment; might not be a good hedge to keep all my writings on there. I do have a Medium page, but Medium is getting a bad rep due to a few questionable writers on there. So now I’m here.
-
Metatables suck.
You might observe that I try pretty hard to avoid metatables in my own code. Here's every use case I've seen for metatables and why they all suck.