dayonehk.com

Delving into the Joy of Creating Non-Functional Software Projects

Written on

Chapter 1: The Pleasures of Non-Utilitarian Coding

Creating software that lacks a serious function can be an incredibly enjoyable experience. Engaging in playful activities like doodling or experimenting with technology often brings unexpected joy.

When I embarked on my coding journey seven years ago, I initially intended to leverage my skills for practical applications: conducting data analysis for my journalism work or developing web scrapers for automated information gathering. And indeed, I accomplished those tasks! It was gratifying to develop code that addressed tangible issues in my life.

However, as time went on, I discovered that the projects that truly brought me joy were the more unconventional ones that had no real-world utility. I became captivated by the creation of chatbots that generated haiku-style poetry, simulations of thousands of bouncing balls, and small drawing applications utilizing right angles.

Once I get the urge to create one of these quirky projects, I become deeply engrossed, often neglecting my professional responsibilities as a journalist. But what is it about crafting software with no practical purpose that is so appealing? Why is it so much fun to create whimsical, fanciful, or aesthetically pleasing code that does not address real-world problems?

The allure partly lies in the ability to use computers for artistic expression. I prefer the phrase "to do artistic things" rather than "to make art," as I'm unsure if my creations possess enough intention or depth to be considered true art. Nonetheless, there are remarkable computational artists out there, and through my explorations with playful code, I can tap into some of the same joy they experience when harnessing high-performance processors—originally designed for numerical computations or military tasks—to produce visually stunning results. It feels a bit rebellious.

Additionally, there is an inherent aesthetic quality to computation that is delightful to explore. Computers excel at extreme repetition with unwavering precision, a feat that humans struggle to match. Utilizing these capabilities for creative endeavors is magical, akin to the enchantment of Spirographs, which allow us to create with inhuman accuracy.

Moreover, computers have the ability to introduce randomness! While their randomness is only pseudo-random, it suffices for generating something beautiful or bizarre. Humans often struggle with randomness, so having a machine that can unpredictably surprise us with unique outcomes is genuinely delightful.

These pleasures are not new. Vera Molnar pioneered computer art in the 1960s, while the early hackers at MIT in the 1970s were fascinated by cellular automata—like Conway’s "Game of Life"—for its fusion of computer logic and the organic, unpredictable evolution of digital life forms. Today, there exists a vibrant community of digital artists, along with frameworks like P5, specifically designed for interactive creative projects.

Section 1.1: My Latest Whimsical Project: "The Gardener"

This brings me to my most recent endeavor in purposeless software: "The Gardener." During a recent vacation, I conceived the idea of generating random, chunky-pixelated flowers. Initially, I envisioned a small tool that would allow me to plant flowers on a grid, generating a new random design with each click. Each flower would be composed of one of four possible core shapes, one of seven petal shapes, and a selection of several dozen colors. A quick calculation revealed approximately 26,000 potential flower combinations.

After quickly coding the flower generator, the first few flowers appeared as follows:

Chunky pixelated flowers generated by the software.

The thrill would come from the unpredictability of each click, as the results would vary each time. However, I soon decided to embrace randomness even further and created a program that automatically plants the flowers. This involved coding a small "gardener"—a single blue pixel that would traverse the grid and plant a flower every ten seconds, changing direction randomly to ensure no discernible pattern.

In a way, I was steering towards something almost entirely uninteractive—like a distant relative of a screensaver. It would ideally be visually appealing to observe, requiring no action from the viewer; you would simply watch.

After a night of coding, I successfully completed the gardener program and even composed a looping piece of trippy music to accompany its work. Initially, the garden appeared quite sparse. Here’s how it looked after about five minutes:

Sparse garden after initial planting.

As time passed, the garden became more crowded:

The garden after ten minutes of planting.

... and continued to evolve:

The garden expanding further.

... until, after approximately 45 minutes, the screen transformed into a chaotic array of blocky pixels:

The final chaotic pixel garden.

At this point, the original concept of a "garden" became somewhat tenuous, as the flowers often overlapped due to the gardener's random movement, losing their individuality. Only a few remained distinct enough to resemble actual flowers; the rest resembled a vibrant digital cacophony.

Section 1.2: The Meditative Quality of Watching the Gardener

I can't fully articulate why I created this project, but I find it strangely calming to observe. I often run the garden in one browser window while working or checking emails in another. To ensure the program functions correctly, it needs to be partially visible—if it's hidden from view, it seems to stop planting, though the music continues to play. I enjoy glancing over every few minutes to witness the garden's growth while hearing the satisfying sound of flowers being planted every ten seconds. Sometimes, I'll sit and watch the gardener at work for several minutes, finding it almost meditative. My mind wanders—thinking about work, ideas for future pieces—while I gaze at this peculiar pixelated ecosystem.

That said, I suspect many might find the gardener quite dull; it doesn’t do much, and the planting process is very slow.

But if you’re curious, feel free to check it out! It’s available online for absolutely no reason.

(Additionally, the project is hosted on Glitch, so if you’d like to view the code or remix it, you can do so here.)

Chapter 2: Video Insights on Software Development

In the video "Clean Coders Hate What Happens to Your Code When You Use These Enterprise Programming Tricks," viewers can explore the pitfalls of certain programming practices that can complicate code and lead to issues down the line.

The second video, "Programming's Greatest Mistakes - Mark Rendle - NDC Copenhagen 2022," provides an insightful look into common errors in programming that can hinder efficiency and creativity in software development.

Clive is a regular contributor to the New York Times Magazine and a columnist for Wired and Smithsonian magazines. He has authored "Coders: The Making of a New Tribe and the Remaking of the World" and "Smarter Than You Think: How Technology is Changing our Minds for the Better." You can find him on Twitter and Instagram as @pomeranian99.

Share the page:

Twitter Facebook Reddit LinkIn

-----------------------

Recent Post:

Title: Reflections on Mortality: Embracing Life's Fragility

Insights on death and life’s purpose resonate deeply, prompting a collection of heartfelt reader responses.

generate a new title here, between 50 to 60 characters long

A reflective piece on personal struggles and relationships, set against a backdrop of casual gatherings and subtle judgments.

Astonishing Discovery: New Ring System in Our Solar System

A groundbreaking discovery reveals a new ring system around Quaoar, challenging existing theories about ring formation in our solar system.

Unlock Your Coding Potential: Top 5 Free Tutorials

Discover five outstanding free coding tutorials that can help you jumpstart your programming journey or enhance your existing skills.

Understanding the Complexity of Sorrow in Our Lives

Exploring the intricate nature of sorrow and its connection to love and human experience.

Understanding Men's Mental Health: A Call to Action

An exploration of men's mental health issues and the societal factors contributing to them, emphasizing the need for change.

# Debunking Marketing Myths: Why Notoriety Doesn't Equal Success

Exploring why generating buzz doesn't guarantee successful marketing and the importance of genuine brand sentiment.

Breaking the Cycles in Your Twin Flame Journey: Confronting Daily Thoughts

Explore how to confront recurring thoughts in your twin flame journey to break cycles and achieve personal growth.