What is FunkyVector?

Funkyvector is an application that creates unique algorithmically generated graphics in a web browser at screen resolution that are reproduced on a server at print resolution for production.

Let’s break that down.

An “application” is simply a piece of software. The advent of the smartphone made the “app” all hip and accessible, but the savvy amongst us know that applications have been around for ages, such as Microsoft Office or Paint. Nowadays, and for quite a number of years, applications can be created to run in a web browser; websites like Gmail or Facebook are apps in their own right.

“Unique” means just that, more on this later.

“Algorithmically generated” means the images are created with mathematics. FunkyVector initially had the illustrious working title of “The infinite print project”, indeed it is still referred to as such. Since the graphics are generated with maths, each algorithm (and there are many algorithms with their own stylised output) can create an infinite set of permutations, with the end goal being a printable graphic. Hence infinite print!

The funkyvector.com domain had been used for various graphical experiments, but it wasn’t until late 2014 when a friend suggested that a reproducible version of these experiments be made using a seeded random, that the seed was sown. The content on said domain was replaced with the infinite print project.

The first test print on a real shirt. This actual design is not published yet on FunkyVector. Coming soon!

“Graphics in a web browser at screen resolution” basically refers to images as you would see on any website, except on FunkyVector they are created using a canvas (a type of image that can be altered with code). Screen resolution means the images are created rather small (2000 pixels squared currently) so they render fast whilst remaining crisp and pleasing to the eye.

Being “reproduced on a server at print resolution” is the cool part of this project! FunkyVector renders any image generated in the web browser app on a server (another computer in a far away galaxy) using node and node-canvas. This means the image can be rendered at any size theoretically (10000 pixels squared currently). The server render is “pixel perfect” to the browser render – no it’s not actually, the pixels don’t match up since the resolutions differ, but since the canvas images are drawn with the canvas API which effectively consist of vector commands, the images are identical ignoring scale. In this case “pixel perfect” is actually “picture perfect” if you will, in so much as the human eye can not discern the difference.

And finally, “for production” is the icing on this funky cake; should you demand it, these pixels will arrive at your front door in around 30 days time, permanently printed on a t-shirt, poster or bag! A few clicks, some delivery details, some payment info, and a “unique” image shows up in the real world as a “unique” product.

That term “unique” again. So what is unique? It is risky describing any art as unique, but in this context it refers to mathematically unique. FunkyVector creates each image using a random seed. The possible range of seeds are large enough, that it creates a probability small enough, that for all intents and purposes, no one ever on this planet will see, let alone print, a design that you choose to print.

And that is what FunkyVector is.

Many thanks to Simon R, James T, and Sean S. for ideas, advice and inspiration along the way.

All up, it took a year to get to a working version, and longer to be satisfied enough to write this post. Into the nitty gritty: another post will be coming soon with a brief explanation of how FunkyVector was made.