This is a piece of digital art I created. It features bright colours, straight lines and some fun interactivity.
Try clicking the “Boogie!” button
You probably realize that my simple artwork is very similar to Piet Mondrian’s iconic Broadway Boogie Woogie. Broadway Boogie Woogie is considered one of Mondrian’s most emblematic paintings and whose aesthetic is instantly recognised all around the world. The original piece is housed today in New York’s Museum of Modern Art (MOMA).
Indeed, my amateur recreation is inspired by the original Mondrian, but not directly. In fact, it’s probably more accurate to say, my art piece is a derivative of a derivative.
Tom Sachs is another influential artist born of a later generation. Tom Sachs had a very special path to the world of art, working in many blue-collar jobs such as lift repairman, electrician, plumber and construction worker. As a result, he has a very special view of the relationship between working with physical materials and the art he creates. Like many, Tom Sachs was very enamoured with Mondrian’s Broadway Boogie Woogie. He liked the art piece so much, he created his own.
Tom Sachs is also credited by both Casey and Van Neistat of Youtube fame as being a key inspiration for their growth as an artist.
I know I spent more time and enjoyed Broadway Boogie Woogie than the person who bought it. I know I enjoyed it more because I … built one.
Creating my Broadway Boogie Woogie with plywood and gaffers tape, materials that I have a connection with … I am creating authenticity that meets my own standards of what’s important… It’s a Genuine Fake
And this is the most fascinating part of the equation for me. The original art piece is beautiful but in the process of recreating the same art piece using tools that were unique to Tom Sachs, he created his Genuine Fake. It’s a Fake in the sense that it is not the original, but it is also Genuine because Tom Sachs experienced the joy of creating something unique through intense study of the original.
I built my Genuine Fake in hopes that I can experience the same journey. And while I am severely unfamiliar with both oil paint which was used in Mondrian’s original work and plywood used in Tom Sach’s work, I am rather familiar with digital tools and materials, so that is what I decided to use.
Currently, I am taking a course on Data and Visual Analytics, which has a strong focus on D3.js, a javascript visualisation framework, so that is what I used to build my genuine fake.
Interesting things I learnt along the way
Ok, that’s enough rambling about Why I started this project, let me shift gears to list some of my learnings as I worked on How to execute this project.
The Interplay between ObservableJS / D3 / Quarto
Quarto, the publishing framework I keep raving about, supports ObservableJS right out of the box. ObservableJS is built by the same minds behind D3, so naturally, ObservableJS has D3 libraries preloaded.
To write some D3/ObservableJS code in Quarto, you simply have to create a code block like so
```{ojs}
// This creates an SVG element.
svgRaw = htl.svg`<svg></svg>`
// d3 code goes here
d3.select(svgRaw)
.attr("width",500)
.attr("height",500)
...
```
Above, you can also see some of the niceties ObservableJS brings, such as Hypertext Literals which makes it a breeze to create HTML elements directly in the {ojs} code block without the need to touch the raw HTML file.
Easy art with random data
What makes the entire field of Generative Art remarkable is how random data is transformed into art pieces. I started out my project seeking to do a pure 1-for-1 copy of the original Mondrian, so every street and block would be in the same position and of the same colour. I soon became really bored of creating a 1-for-1 copy and realized I could make a much more interesting project, simply by randomizing the data that would generate the streets and colours. It was so fun, I decided to include a button (“Boogie!”) so the user could cycle through many variants!
In my implementation, I relied on Javascript’s Math.random() random number generator, which I later learnt is pseudo uniform. D3 includes a more fleshed-out d3-random module which exposes more functions from a greater variety of distributions. If I revisit this project again in the future, I would use the d3-random over Math.random().
D3’s Select-Enter-Update pattern
D3 has a really difficult to grok select-enter-update pattern. The goal here is that once you bind your data to the visual elements of your page, following this pattern allows fine-grain control of how new items are added, existing items are updated and redundant items are removed.
It’s incredibly powerful but this was the hardest part of the D3 syntax for me to understand. It does not help that D3 has several versions and I feel the syntax of this pattern goes through pretty major changes in each version.
Transitions and Animations really make things pop!
My favourite part of the project was making things animate and move. It’s pretty addictive once I got it working. It is a reminder that building web-based visualisations, while difficult and finicky, can absolutely create interactive and delightful experiences for the end user. When done right, web visualisations are magic.
Conclusion
Art is not my forte, nor my day job but I enjoyed the challenge of creating my Genuine Fake. Through this process, I have a newfound appreciation for the difficulty and satisfaction that comes from building web visualisations.