2026
Your new, free creative tool
Most dithering and halftone tools are built around one-click filters, limited customization, or paywalls. So I asked myself: what if these effects could become part of a real creative workflow?
The result is POINTLESS: a free, open-source desktop application where different rendering techniques can be layered, combined, localized and animated within a single non-destructive workspace.


POINTLESS started casually, because I needed visuals for one of my projects: Ultrasuono’s brand identity. Existing dithering and halftone tools felt too limited, so I started building my own.
What began as a small experiment evolved into a complete desktop creative tool, designed from scratch and developed through AI-assisted coding.
ROLE
Product Designer / Creator
DISCIPLINE
Product Design, UX/UI Design, Interaction Design, Brand Identity, AI-assisted Development
SKILLS


I just needed some visuals
While designing Ultrasuono’s brand identity, I realized that custom halftone graphics would fit perfectly within its visual language. I explored several existing tools, but none offered the flexibility I needed: they were either uninspiring, paywalled, incomplete, or too slow to use.

I built my own tool
After searching for a while, I decided to experiment and build the tool myself. With Gemini’s help, I created a simple prototype tailored to my specific needs.
Ultra Ditherer divided an image into chunks and replaced each one with a custom SVG based on its luminance. It was slow, unstable and built as a single Python script, but it did exactly what I needed.

The process:
Step 1:
Importing and loading images into the creative workspace

Step 2:
The image is divided into a grid, and the luminance of each cell is calculated

Step 3:
Each cell is rendered using the selected custom SVG, scaled according to luminance


I didn’t like what I built.
After completing the first version, I left the tool untouched for several months. In the meantime, I gained new experience, became more familiar with coding tools and platforms like GitHub, and learned the fundamentals of software development.
I also started exploring other creative tools in the space. Many of them were incredibly well designed and showed me how much further I could push the original idea, both visually and functionally.
Eventually, I decided to start over from scratch and turn a rough experiment into a product I could actually use and expand.

First, the essentials.
I started by rebuilding the original tool from scratch with Claude Code, this time in C++/Qt6 and with clearer requirements for both the interface and performance. The functionality was still essentially the same, but the foundations were completely new.
Before
Functional, but without a good design system.

After
First mockup of the rebuild, with a more structured interface.

From tool to workflow
The goal quickly shifted from simply improving the original tool to building a complete creative workflow capable of producing high-quality outputs.
By studying competitors, I identified missing features such as layers, a library, a timeline and animatable parameters, while expanding existing rendering modes with dithering and ASCII.
Within a couple of weeks, and as I became more confident working with AI tools, the basic prototype evolved into a much more complete creative application.

01 - New modalities and library
The first step was building a library to manage multiple images within the same project. I took inspiration from Lightroom for the library structure, while Figma influenced the overall interface and interaction model.

02 - Adjustments
Image adjustments were essential to let users refine their source without leaving the application, so I introduced the core controls directly into the workflow.

03 - Different layout
This was an intermediate experiment where I explored a different layout. Ultimately, it added unnecessary complexity to the workflow and made interactions slower, so I decided not to pursue it further.
A midway result
With the addition of layers, frame controls, image transformations and a timeline, the tool had reached a solid first version. However, it still lacked personality and the level of polish I wanted.


The tool had to walk its own way
At this point, the tool had grown beyond being an extension of Ultrasuono. It needed an identity of its own.
I took an ironic approach and named it POINTLESS, for three reasons:
1. A play on “points”, referencing the dot-based technique the project originated from
2. Projects can be saved using the .less file format
3. A bit of self-irony about spending so much time building a potentially pointless tool
I then built the visual identity around an acid yellow and a system of circular shapes, creating a distinctive set of assets that could extend across the product.

The final interface
The new interface feels more distinctive and less generic, thanks to a stronger design system, greater consistency and closer attention to detail.
To make the tool scalable, I also redesigned the rendering mode selector as a dropdown, allowing new modes to be added without changing the overall layout.

The process:
Selection of Modality
The interface is no longer limited to three rendering modes, allowing new ones to be added without affecting the layout.

Colors
Users can choose between the image’s original colors or a custom palette of 1 to 8 colors.

Palette
Alongside the mode settings, users can browse predefined palettes or create and save their own.

Timeline
The timeline follows a parent-child structure, with animated parameters nested under each content.

ASCII
Includes several advanced settings, including multiple built-in rendering modes and extensive customization options.

Dithering
The Dither mode is the most complex, it provided the foundation for designing the rest of the interface.


Slowly understanding how to properly use AI.
At the beginning of the project, I had little idea how to structure an AI-assisted coding workflow. The result was inconsistent: different sliders, broken spacing, interfaces that didn’t match the mockups, and many small issues.
Over time, I learned how to work with AI more effectively: structuring prompts, managing context and tokens, and providing clear instructions and documentation.
Today, adding new features to POINTLESS is much easier. The project is well documented, and the AI has clear guidelines to maintain visual and UX consistency as the tool evolves.

Designing performance is designing UX
One of the biggest issues early on was performance: the tool was slow, laggy, and often produced incorrect previews. With AI-assisted development, I was able to rework the rendering pipeline using OpenGL, making the experience much faster, smoother and more responsive.
What I learned from Pointless:
Iteration
A rough prototype that solves one specific problem can become the foundation for a much larger product.
Design systems
As POINTLESS grew, I learned to build scalable patterns that could accommodate new modes and increasingly complex workflows.
Make technical decisions
Performance, rendering and architecture directly affect how fluid and enjoyable a creative tool feels.
AI needs direction
I learned to treat AI as a development tool, using structured documentation, clear constraints and context management to achieve consistent results.
Knowing when to start over
Sometimes improving an existing solution creates more constraints than rebuilding it with a clearer vision and stronger foundations.