If you have browsed this blog you may have noticed that each article has a different square image. A pattern of cubes that resembles a QR code but is not one. Colors that change from one post to another. And in the center, always the same kanji: 忍.

Those images were not manually designed. They were generated by the content itself of each article.

How it works

When I publish an article the system takes two pieces of data: the title and the character count of the content. From the title it generates a cryptographic hash, a unique and unrepeatable string of characters. That hash becomes a map that decides which cubes in a 32 by 32 grid get filled and which remain empty. It is the same principle a real QR code uses but without encoding any readable data. Just the DNA of the text converted into visual form.

The character count determines the accent color of each image:

Short articles are gold. Medium-length ones shift through cool blue and purple. Longer ones are terracotta. And if I ever write something truly extensive, it will be mint green.

The result is that each article has a unique visual fingerprint. If I change a single word in the title the pattern changes completely. If the article grows or shrinks past a threshold the color mutates. The image is alive as long as the text is.

The kanji in the center

At the center of each image there is a white space with the kanji 忍. It reads shinobi in Japanese. It means to persevere in silence, to endure with patience, to move unseen. It is the origin of this blog's name and the visual anchor connecting all images to each other regardless of how different their patterns are.

Why not use regular images

I could have used stock photography or Midjourney-generated images for each post. But this blog talks about the intersection of design and technology. I wanted even the images to reflect that philosophy. Not decoration but data converted into form. Each one telling something about the article it represents without needing to read it.

There is also a practical reason. This system is fully automatic. When I publish a new article the images for all three languages generate themselves. I do not need to search for photos, open Photoshop, or think about which image to use. The content illustrates itself.

Technical details

The images are generated in PHP using the GD library. The grid is 32 by 32 cubes on a white background. The hash is expanded using chained MD5 and SHA1 to cover all 1024 cells. Each hexadecimal character of the hash determines whether a cell becomes a black cube, an accent-colored cube, a light gray cube, or an empty space. The central kanji is rendered with the Noto Sans CJK font when available on the server.

The images are used in three places: as a thumbnail on the home page, as a visual header inside each article, and as the Open Graph image when someone shares a link on social media. The same image. Three different contexts.

If you are a developer or designer and want to implement something similar in your own project, reach out. It is simpler than it seems and the result gives a unique identity to any blog or content platform.