The need for creation

Like many others I enjoy creating and building stuff. It can range from a small video skit sent to a friend to carving out a viking shield. Usually my small obsessions don’t last for too long but nonetheless they come and go periodcally, fulfilling my need for creation. Being a software developer I of course enjoy programming as well, the amount of impact one good engineer can create is immeasurable and fascinating.

Unfortunately software engineering world can be rough on creativity with over 9000 meetings, scattered obsolete documentation, overly bloated legacy development process, never-ending jira logging changes, […] and much more. Coupled with strict deadlines software development can be all over the place and there will be little time for creative thinking.

One could argue on the aforementioned statements and it’s completely justified but this post is not about making translation of business requirements into code fun, it’s about:

“I’m tired of bloated clicka-clicka in backend, what cool artsy shiet I can do with code?"

Creative coding

As you might expect there are different ways to interpret the term creative coding. It’s unclear whether we’re talking about the creative process, the medium (code) or the output. To narrow down the scope of this post I will be interpreting creative programming within this definition [1]:

“Creative coding is a type of computer programming in which the goal is to create something expressive instead of something functional."

You don’t have strict guidelines, goals or acceptance criteria. It’s about exploration and discovery of mostly unexpected results [2].

Here’s a birds-eye view of what people have creatively coded.

Demoscenes

Computer art subculture focused on producing EXTREMELY small filesize (and not only!) audiovisual presentations achieved with low-level code.

Himalaya 1k

This .gif is actually a small section of an OVER 10-MINUTE LONG video WITH AUDIO which is ONLY 1024 bytes. For reference in Java 1024 bytes can be achieved with 128 long datatype variables.

Weird flex but okay, moving on!

Live coding music

In 2020, during my 1st semester computer science studies me and my friend made a 2D Python game Bimgus in post-apocalyptic setting for our Programming class.

Bimgus

Most of the visuals were made in paint :) . Why not make SFX and music ourselves if we have fallen this low anyway?.. Why not code the music?

Lucky for us I’ve found Sonic PI code-based music creation tool and thus Bimgus soundtracks were born (a few samples):

  • Main game theme
  • Death sound effect
  • Game over theme

Ruby-based Sonic-PI let’s you write music in real-time, great for novice game-development as well as ultra-gigachad 8-bit/techno/rave coding DJ experience.

Generative art

Generative art is a form of art that is created through the use of algorithms and code. Meaning code itself can’t predict the outcome and therefore result is often unique and unpredictable.

Generative art could be achieved with simple vanilla javascript and a bunch of Math.random() functions coupled with color-filled objects.

(move your cursor or touch your phone screen for slight epilepsy)

I played around with code from here to achieve the result above.

It’s a really rewarding experience because it doesn’t take much time to start and is a lot of fun to experiment with.

Of course there are multiple .js libraries made for generative art, for example p5.js with built-in web editor so you don’t even need to download anything to try it out.

From my humble observations I’ve noticed the following about generative art real-world applications:

  • It’s great for advertisement background posters.
  • People sell it.
Generative art put up for sale on Etsy

Donut-shaped C code

This deserves an extra category.

My experience

ASCII art

In 2021 my friend reached out to me about ideas for a video intro and outro. The video was a compilation broken up into various parts and for every part he wanted a special intro clip. He asked if I could come up with something code-ish for one of the parts of the video and I agreed.

I never really thought about code being used in such artsy endeavours before which made this little task extremely interesting for me.

I decided to go with old-school-like terminal-loading script in Python which printed out ASCII art of the video title.

In the end script produced the following (sped-up ~2x):

Python script which prints ASCII art

For the outro I accidentally made progress bar to be printed out separately on each line and I liked how it looked visually so I went with it.

Python script which prints ASCII art

There are no mistakes, just happy little accidents. [bob_ross_beating_the_devil_out_of_it.jpg]

ASCII art was generated with this online tool: patorjk.com

Obscure websites

On one beautiful evening I’ve stumbled (I don’t remember how, maybe a sticker on the street lamp-post?) upon Estonian electronic/techno/something music website amfiib.com and was fascinated by the old-school terminal-like design. They had an “explore” page which listed a few more interesting websites:

Inspired, I felt the need to take up some internet space with esoteric content myself.

I didn’t know what exactly I wanted to do but I knew that I wanted to finish it that night. I’ve looked up some basic three.js tutorials and it was mind-blowing how easily one can create interactive 3D content on the web without prior experience. A few beers, three.js tutorials and stolen codesnippet examples later this website was born.

It may seem like a 2D world but your browser actually uses a lot more processing power than it should because it’s actually 3D! I just disabled user input.

User controls for navigating around the world is just one line of code away. Really fun.

It’s a real job?

There are not many creative programmer job applications out there but you can definitely be one. Quite a few companies like gucci require custom-made highly interactive websites. For example this gucci website was made with three.js library.

From different salary sources I’ve noticed that the closer you are to being an artist the less you make, oh well.

Average salary is lower than the frontend developer roles but it highly depends on the place and project.

References

[1] https://en.wikipedia.org/wiki/Creative_coding

[2] https://timrodenbroeker.de/what-is-creative-coding/