Skip to main content
September 18, 2026
# Tags
Follow Us

How a 1990s web trick shaped our new brand imagery tool

September 18, 2026

A project came my way recently: putting together guidelines for imagery and illustration across the company, and a repeatable system to go with them rather than building every image from scratch. I ended up basing that system on a shape that had been sitting in our own logo the whole time.

A quick history of the logo

The logo traces back to a sketch of a fluorescent lightbulb, with its coiled tube simplified into a set of horizontal lines. Those lines gradually became the letter F. That F was then merged with an earlier metaball design of mine, one representing fluidity, and together they formed the logo as it stands now.

Diagram showing the Fluo logo's evolution: a fluorescent lightbulb, simplified into inked horizontal strokes, refined into a diagonal F shape, then combined with a metaball blob form to create the final logo mark.

If you haven’t come across the term, a metaball effect is what happens when two blobby shapes get close enough that they merge into one continuous form, rather than just overlapping. Think lava lamps, or the way two drops of water pull into each other just before they touch. It’s a soft, organic way for shapes to join, one that made sense for a company that talks about fluidity as a value. There’s something fitting too about a natural-feeling shape sitting at the heart of our logo, given that we take the environment seriously.

Grey and fluorescent green circular blobs at various distances apart, illustrating the metaball effect: on the right, two nearby blobs stretch and merge into one continuous organic shape, while separate pairs on the left remain distinct.

From logo to pattern

Not long after the logo was finished, I noticed the metaball shape didn’t have to stay locked inside the F. Repeated and scattered, it worked as a pattern in its own right. That pattern started turning up everywhere: decorating social media posts, filling out slide decks, generally becoming a bit of a visual signature for the brand beyond the logo itself.

Three examples of Fluo's metaball-pattern brand asset in use: a LinkedIn company banner and logo, an Instagram carousel slide, and a printed report page, each bordered with the scattered grey and fluorescent green metaball motif.

The pattern-making stayed fairly manual for a long time. It worked fine for one-off graphics, but it was never going to scale, and I needed something repeatable rather than starting from scratch every single time.

Digging into indexing

The answer ended up coming from an older piece of internet history: image indexing. It’s a leftover from the early web, from a time when you couldn’t upload a high-resolution image without it taking forever to load. The workaround was to cut down the number of colours in an image, which shrank the file size dramatically. That process is called indexing. It’s a fitting thing to dig into for a company that does web and app development, since it’s genuinely part of the web’s own early toolkit, not just a random bit of nostalgia.

Three-panel comparison of a scarlet macaw photo at decreasing colour depths, each with its colour palette shown alongside: the full-colour original, a mid-range indexed version with a reduced palette, and a heavily indexed version reduced to five colours.
Original parrot images by Ricardo Cancho Niemietz

What indexing does to an image visually is the interesting part. Cutting the colours down doesn’t just shrink the file, it also produces these strange, blocky, almost painterly effects, particularly once dithering comes into play. Dithering scatters the available colours in patterns to trick the eye into seeing a smooth gradient, even though the palette itself is too limited to produce one directly.

Two-panel comparison of Michelangelo's David: a greyscale photo with a full tonal gradient alongside a dithered black-and-white version, where scattered dots simulate shading using only two colours.
Original Michelangelo’s David image by Gerbrant

Over the years I picked up other tools that paired well with indexing. One was a bitmap-to-vector tool by Arjan Westerdiep (drububu.com). An indexed image is still just a grid of coloured pixels, while a vector image is built from shapes and paths that can scale to any size without losing quality. His tool did exactly that conversion, taking an indexed bitmap and turning every single pixel into its own one-by-one pixel square in an SVG.

Around the same time, I kept returning to a handful of visual influences: Karel Martens, John Provencher, David Rudnick. At that point, this technique, those influences, the logo, and the manual metaball pattern were just separate interests, sitting side by side with nothing tying them together yet.

Overview of three design references using dithered halftone imagery: an abstract portrait built from small geometric symbols, 'On Clubhouse Nights' event posters with metaball type and pixelated running figures in red, and a black-and-white graffiti-style poster of a corridor with graphic borders.

Close up details of the same three references: dense geometric dot patterns forming a portrait, a red dithered running figure printed on paper, and a high-contrast dithered corridor image with a light source at its centre.
From left: an excerpt from Karel Martens’ Seoul Portraits, John Provencher’s On Clubhouse Miami poster, and David Rudnick’s single cover for Clouds’ “Entrance «Perish»”.

The early process

Eventually, all of it did come together. Here’s what the early version of the process looked like:

  1. Use GIMP, a free, open-source alternative to Photoshop, to resize, index, and dither an image.
  2. Run the result through drububu’s bitmap-to-vector tool to convert it into an SVG, with every pixel becoming its own square.
  3. Open the SVG in Illustrator and round the corners of every square at once, turning them all into circles.
  4. Use an Illustrator script by Hiroyuki Sato to join pairs of circles together with a metaball effect, one pair at a time.

Workflow diagram showing a lily photo transformed through four stages: dithered to black and white in GIMP, vectorised into black squares using drububu's tool, rounded into circles in Illustrator, then joined into a metaball pattern using Hiroyuki Sato's script, with each application's dialog box shown alongside.

It worked. The results looked like the effect I wanted. But step four was brutal. Selecting pairs of circles by hand across a whole image, one join at a time, was not a viable way to work.

A first attempt at automation

The obvious next step was to automate the metaball connections. With Claude’s help, I built a script for Illustrator that could work out which circles were sitting next to each other and apply the metaball effect automatically, rather than me clicking through every pair myself.

Screenshot of an Illustrator script applying automatic metaball connections to a flower-shaped dot pattern, with a settings panel showing options for connection direction and touch threshold.

It worked, but Illustrator itself became the bottleneck. The effect ran slowly, especially on larger images, and the program would sometimes crash outright. Along the way I also ran into a more interesting problem: when too many circles sat close together, the metaball joins got crowded and messy. That meant coming up with my own rules for when a join should and shouldn’t happen, just to keep the output readable.

Moving to a standalone tool

Eventually I got tired of waiting on Illustrator and decided to build the whole thing as a standalone tool instead, working with Claude throughout.

I started with the bare minimum, just enough to prove the core effect could actually work outside of Illustrator. Once that was proven, I added new features one by one, tackling whatever felt most essential first:

  • Different dithering algorithms to play with. Dithering simulates the colour blends, and switching algorithms can make a real difference to how those blends look.
  • The ability to build custom colour palettes, either by picking colours directly or typing in hex codes, and then apply them to an image.
  • A layers panel, since moving a colour up or down the stack changes how the connections between circles overlap with each other.
  • A way to toggle between the original image, the indexed version, and the final circles-and-connections version.

One thing surprised me too: Claude packaged the whole thing into a single HTML file. That turned out to be useful, no juggling multiple files, just one thing to open and run.

Screenshot of the browser-based tool, showing indexing and dithering controls on the left, a dithered flower preview in the centre, a layers panel on the right, and a grid comparing eight different dithering methods applied to the same image.

Screenshot of the tool's 'Edit Palette' dialog, showing a custom colour swatch set, hex bulk-paste input, and file import options.

Screenshot of the tool showing a lily indexed to eight colours and rendered as dot circles, with the layers panel on the right listing each colour swatch individually.

Screenshot of tool in bitmap view mode, showing the same lily flattened into solid indexed colour blocks rather than dot circles.

The payoff

A process that used to require three separate tools and a lot of patience now runs almost instantly. And it’s a tool I can keep building on, rather than a script I’d have to rewrite whenever I want it to do something different.

That solved speed, but not consistency. Brand imagery needs a set of repeatable rules behind it, or everyone ends up making their own version of the effect. So I spent a couple of days feeding all kinds of images through the tool, testing what held up and what didn’t, and out of that came four methods.

Full Colour

Full colour photography stylised with the dot pattern, using colours sampled either from the image itself or from the brand palette.

Two versions of the same photograph stylised with the dot pattern treatment, each using a different colour palette: warm yellows and browns, and greens with light blue.

Fusion

An abstracted, dot pattern version of an image fused with the original.

Split image showing the Fusion method: on the left, the fluorescent green dot pattern against black, and on the right, the same dot pattern overlaid on a photograph of green leaves and a small yellow flower.

Layering

Multiple abstracted versions of an image layered together to build a background, using between two and four layers of dots at different sizes, paired alongside other elements such as imagery and text.

Split image showing the Layering method: on the left, an exploded diagram showing the stacked dot pattern layers of varying sizes that make up the design, and on the right, the finished result, a fluorescent green 'Join us' slide with layered dot patterns and photos of people at an event.

Icons & Illustration

Icons and illustration made with the dot pattern, where the dots either build the shapes themselves or act as shading.

Three icons (chatbot, document with an eye, and face ID scan) shown as clean line versions above, with dot pattern versions of the same icons below, illustrating how the dots build the shapes themselves.

Part of the point of having four methods rather than one was flexibility: some jobs call for the pattern to dominate the image, others call for it to stay in the background. For example, running a photo of someone through Full Colour distorts their face, since the pattern covers everything indiscriminately. Fusion solves that: cut the person out, put the pattern behind them instead of over them, and the image still gets some visual flavour without wrecking the part that actually needs to stay legible. Same effect, four different approaches — each one chosen to suit the image at hand.

Not where it ends

What started as one shape in the logo has now become the basis for how the company produces its imagery. None of it was planned from the start. The shape just kept morphing into something new, the further I took it. And this probably isn’t where it stops. The four methods came out of a couple of days of testing, not months of research, so it wouldn’t surprise me if a fifth or sixth turns up once more people start using the tool and pushing it in directions I haven’t tried yet. The tool itself is still rough around the edges, and there’s more I’d like to add to it. For now, though, it’s doing the job it needs to do: giving the company a repeatable way to produce imagery that still looks unmistakably like Fluo.