First Params - What I've Learned
written by Wanda Oliver (o...
fx(params) lives side by side with fx(lens), the development environment that allows you to mimic the minting experience of the collector while testing and exploring the range of your project yourself. It is important to remember this because much of the implementation complexity is driven by fx(lens), and while immensely helpful, fx(lens) is not mandatory. I gained confidence by starting without fx(lens), though I quickly decided to adopt it. As I recount my experience, it will be in the context of using both fx(params) and fx(lens).
In addition to that context, I also need to say by way of introduction that this will not be a step by step guide to the technical particulars of implementing boilerplate 2.0, fx(params), and fx(lens). I had a lot of help getting that done, and honestly don’t yet feel that I have the expertise to give that kind of detailed guidance. I suggest you start with this document by IceRain. It is what allowed me to to overcome my initial bewilderment and take those critical first steps. My focus in this article will be on the broader issues of how fx(params) changed my approach to my code, and the questions that I will take into the development of my next params project.
Within a couple of days of working in the new environment, I realized that my thinking about my code was undergoing a transformative change. I have always sought serendipity in my physical analog work and I have thought long and hard about how to bring more of that into my digital generative work. However, I consistently found myself being very strict with my code. I hated the possibility of a “bad” output (I’ll pause here to say that I will overlook the fact that what I love you may hate, to assume that there is some universal standard of “bad”). I could hardly bear to allow an output that was not to my personal taste even if not necessarily “bad”. As I worked with fx(lens) and fx(params), I felt myself letting go of that strict hold, loosening up, feeling free. After all, the minter had the choice to work past bad outputs and choose something that they personally loved.
I was half right. Loosening up is definitely a step in the right direction for me, but I overestimated the amount of control the minter actually had in choosing the output they wanted. While fx(params) can probably be used by the clever artist to offer WYSIWYG outputs to collectors, it is not inherently designed to do that. Rather, it allows the minter to narrow the output space to a subregion of the whole and explore the types of outputs to be found there. In the end, the experience remains a long form generative art experience, and the output received will be a unique and random result. As it has ever been on the fx(hash) platform, the previews provide a sense of possibility only, not a glimpse of what you are guaranteed to get. It was only as I worked through building fx(elevate) and collected editions of a few of the first params projects published that this began to really sink in.
Exposing a parameter creates an expectation. As I internalized this idea, the responsibility I had as an artist to meet that expectation became clearer. As I collected art from params projects, I found myself responding in a surprising range of ways. In some cases, the exposed parameters had such a subtle effect on the resulting preview that I quickly became bored with the process of exploration. I could not associate cause and effect in any interesting way. In other cases, I happily spent long stretches of time playing in the creative space the artist had provided. When I finally pressed the mint button I was sometimes thrilled - the emotional bond I had established with the piece I had crafted felt honored by the resulting mint. At other times, I was deeply disappointed - the mint was not a cousin to my preview, but rather a completely unrelated stranger.
project name project name project name
As I watched the outputs of my own project play out over 123 minted editions, I felt both thrilled and at times chagrined. I could see ways that I might have been more skillful in how I had managed the parameters I chose to expose. Going forward, I think skill and wisdom in the choice of what to expose as a parameter and what to leave to chance will be a hallmark of the best params projects. I know that I will give the question careful consideration in my next project.
My thinking at the moment is that broad design questions make good parameters. Things like aspect ratio and color palette, to take a couple of simple examples, can be reliably set by the minter and honored by the code without any undue limits within the drawing algorithm. With these sorts of macro choices, the expectation created can be met. On the other hand, the variables at the heart of what makes the algorithm generative may be best left to the gods of random choice. Without having created an expectation of control, the reveal can be met with open wonder and surprise. And, if the result is disappointing, it is not nearly as bitter a disappointment as an unmet expectation, it is simply the nature of the game, the luck of the draw.
We have, of course, barely scratched the surface of what fx(params) can do now and what doors it will open in the future. I look forward to lively debate and the hard taught lessons of lived experience as we learn what to param and what not to param.
Love and creativity always,
Wanda