
I didn’t arrive at generative art through technology or crypto culture.
I arrived through museums.
After finishing my second book, I began researching what a future book on digital museums might look like. That research led me into the work of artists, curators, and conservators dealing with code-based and time-based artworks inside institutional collections. What immediately fascinated me was that these works raised a fundamental question that museums were still struggling to answer:
Is the artwork the code, or is it the result of the code?
I don’t take a fixed position on that question. What drew me in was the process itself.
As I began writing code, I found the act unexpectedly meditative. Writing instructions, refining constraints, adjusting parameters — not to force a specific image, but to create the conditions under which something could emerge.
The practice felt less like making pictures and more like building environments.
What I was seeking — and continue to seek — is a contemplative, reflective space. I use vibe coding (1) to get there. By that I don’t mean randomness or intuition without structure, but an iterative attentiveness to how a system responds to constraint. You write a bit of code, observe its behavior, adjust, and listen again.
The pleasure is in the tuning.
The tools themselves are interchangeable for me.
At different moments I use the p5.js editor, ChatGPT, and various publishing platforms. I value the communities around those platforms — I’ve met thoughtful, generous people through them — but none of the tools define the work.
What defines the work is the continuity of practice.
Most of my code lives in the p5.js editor. I keep everything. I number each work. At this point I’m approaching nine hundred pieces, each one existing first as code. That numbering matters because it reinforces that this is not a collection of isolated artworks, but an ongoing system of experiments.
Nothing is thrown away.
My process is rarely about producing a single, resolved piece.
More often it looks like this:
I write a sketch.
I like part of it.
I ask what happens if I mix it with something else.
I combine fragments from different works.
I watch how the system changes.
I’m not asking whether I will like the final image.
I’m asking whether the system becomes more interesting.
That question — what happens if I add this? — is the engine of the work.
Most generative art is still discussed as if the artwork is the final image.
A still frame.
A captured moment.
A result frozen from something that was never meant to stop.
In my practice, the image is a trace.
A single image collapses time. It hides the decision-making embedded in the code, the boundaries of variation, and the intentional limits that give the system its character. Two works may look similar while being fundamentally different machines.
Authorship doesn’t live in appearance.
It lives in constraint.
I don’t think of individual outputs as the work.
I think of the code as DNA.
The code defines the genetic structure — the rules, constraints, and potentials. Each execution produces a different organism, shaped by the same underlying DNA but expressed uniquely through time, parameters, and context.
Some expressions are quiet.
Some are chaotic.
Some never fully resolve.
All of them are valid expressions of the same genetic system.
Thinking this way freed me from needing each output to justify itself. The value lives in the system’s capacity to generate, adapt, and surprise — not in any single result.
Not all platforms preserve the same thing.
Some preserve systems — full code, replayability, parameter space, and lineage.
Others preserve artifacts — a single resolved moment extracted from a longer process.
Both are valid. They simply serve different purposes.
The problem arises when we collapse the distinction and treat artifacts as if they fully represent systems, or systems as if they are merely image factories.
I think of my work in two phases:
Origin
Where the system is developed, refined, and allowed to run.
Translation
Where a specific moment is extracted and framed as an artifact.
Translation is not a compromise. It is a different act — closer to crystallization than creation. The system comes first. The artifact follows.
What I value most in this work is not publishing or finalizing, but the moment when a small change in code opens an entirely new space of possibility.
Writing code as a way of building a contemplative environment.
Letting systems run.
Watching subtle shifts emerge over time.
The output matters, but it matters less than the discipline of attention that produced it.
I’m not primarily making images.
I’m building machines that generate images — and engaging in the practice of tuning those machines until they create the kind of reflective space I want to inhabit.
The work is not the single thing you see.
The work is the practice that continues, quietly, in the background.
Mark Walhimer is a museum designer and generative artist working with HTML5, JavaScript, and p5.js to build interactive, living artworks on the web. His practice merges systems thinking, participation, and minimal interfaces.
https://foundation.app/@markwalhimer
https://objkt.com/@markwalhimer
Vibe coding is an AI-driven software development trend where developers use natural language prompts to instruct large language models (LLMs) to generate functional code, emphasizing rapid prototyping and iteration over traditional, line-by-line coding. Coined by Andrej Karpathy in 2025, it's about "giving in to the vibes" and letting AI handle the precise code, making development faster and more accessible, though it requires developers to guide and refine the AI's output to manage complexity and ensure quality. AI-Assisted Code Generation: Enhancing Software Development Productivity with Large Language Models

I didn’t arrive at generative art through technology or crypto culture.
I arrived through museums.
After finishing my second book, I began researching what a future book on digital museums might look like. That research led me into the work of artists, curators, and conservators dealing with code-based and time-based artworks inside institutional collections. What immediately fascinated me was that these works raised a fundamental question that museums were still struggling to answer:
Is the artwork the code, or is it the result of the code?
I don’t take a fixed position on that question. What drew me in was the process itself.
As I began writing code, I found the act unexpectedly meditative. Writing instructions, refining constraints, adjusting parameters — not to force a specific image, but to create the conditions under which something could emerge.
The practice felt less like making pictures and more like building environments.
What I was seeking — and continue to seek — is a contemplative, reflective space. I use vibe coding (1) to get there. By that I don’t mean randomness or intuition without structure, but an iterative attentiveness to how a system responds to constraint. You write a bit of code, observe its behavior, adjust, and listen again.
The pleasure is in the tuning.
The tools themselves are interchangeable for me.
At different moments I use the p5.js editor, ChatGPT, and various publishing platforms. I value the communities around those platforms — I’ve met thoughtful, generous people through them — but none of the tools define the work.
What defines the work is the continuity of practice.
Most of my code lives in the p5.js editor. I keep everything. I number each work. At this point I’m approaching nine hundred pieces, each one existing first as code. That numbering matters because it reinforces that this is not a collection of isolated artworks, but an ongoing system of experiments.
Nothing is thrown away.
My process is rarely about producing a single, resolved piece.
More often it looks like this:
I write a sketch.
I like part of it.
I ask what happens if I mix it with something else.
I combine fragments from different works.
I watch how the system changes.
I’m not asking whether I will like the final image.
I’m asking whether the system becomes more interesting.
That question — what happens if I add this? — is the engine of the work.
Most generative art is still discussed as if the artwork is the final image.
A still frame.
A captured moment.
A result frozen from something that was never meant to stop.
In my practice, the image is a trace.
A single image collapses time. It hides the decision-making embedded in the code, the boundaries of variation, and the intentional limits that give the system its character. Two works may look similar while being fundamentally different machines.
Authorship doesn’t live in appearance.
It lives in constraint.
I don’t think of individual outputs as the work.
I think of the code as DNA.
The code defines the genetic structure — the rules, constraints, and potentials. Each execution produces a different organism, shaped by the same underlying DNA but expressed uniquely through time, parameters, and context.
Some expressions are quiet.
Some are chaotic.
Some never fully resolve.
All of them are valid expressions of the same genetic system.
Thinking this way freed me from needing each output to justify itself. The value lives in the system’s capacity to generate, adapt, and surprise — not in any single result.
Not all platforms preserve the same thing.
Some preserve systems — full code, replayability, parameter space, and lineage.
Others preserve artifacts — a single resolved moment extracted from a longer process.
Both are valid. They simply serve different purposes.
The problem arises when we collapse the distinction and treat artifacts as if they fully represent systems, or systems as if they are merely image factories.
I think of my work in two phases:
Origin
Where the system is developed, refined, and allowed to run.
Translation
Where a specific moment is extracted and framed as an artifact.
Translation is not a compromise. It is a different act — closer to crystallization than creation. The system comes first. The artifact follows.
What I value most in this work is not publishing or finalizing, but the moment when a small change in code opens an entirely new space of possibility.
Writing code as a way of building a contemplative environment.
Letting systems run.
Watching subtle shifts emerge over time.
The output matters, but it matters less than the discipline of attention that produced it.
I’m not primarily making images.
I’m building machines that generate images — and engaging in the practice of tuning those machines until they create the kind of reflective space I want to inhabit.
The work is not the single thing you see.
The work is the practice that continues, quietly, in the background.
Mark Walhimer is a museum designer and generative artist working with HTML5, JavaScript, and p5.js to build interactive, living artworks on the web. His practice merges systems thinking, participation, and minimal interfaces.
https://foundation.app/@markwalhimer
https://objkt.com/@markwalhimer
Vibe coding is an AI-driven software development trend where developers use natural language prompts to instruct large language models (LLMs) to generate functional code, emphasizing rapid prototyping and iteration over traditional, line-by-line coding. Coined by Andrej Karpathy in 2025, it's about "giving in to the vibes" and letting AI handle the precise code, making development faster and more accessible, though it requires developers to guide and refine the AI's output to manage complexity and ensure quality. AI-Assisted Code Generation: Enhancing Software Development Productivity with Large Language Models
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog
1 comment
My first article on @paragraph! I would appreciate any feedback. Thank you, - Mark https://paragraph.com/@walhimer/the-machine-is-the-artwork