Abe monthly // March 2024
Dear friends and supporters,
I hope you are well and happy to receive my second newsletter. Based on your feedback, this one will be slightly longer and include a few more images. Welcome to the new subscribers! :-)
Exhibition postponed
I am sad to announce that we have postponed my first solo exhibition to September. π-day (March 14th) was the ideal day for the opening, but unfortunately, COVID had different plans for me.
I had completely forgotten that this virus was around us. Even if my partner was sick, I thought my invincible defenses were high, and we spent a whole day watching The Curse together at home. You see, she had been sick for a while, and I was fine.
Shortly after our movie day she decided to do a test, which gave positive. In my test, the bright pink line showed up in about 2 seconds :-(
My symptoms were not intense, but I spent about 20 days with no energy, often lying on the sofa and even wondering if this was something permanent.
I am super happy to leave the fear of a long illness behind and to have my energy back. It has been a good reminder that I should use my time well.
In case you are wondering, the reason for postponing the exhibition for half a year is that one of the artworks is projected onto a window and visible from the street. The sky must be dark early enough, which will happen again after the Berlin summer. The new plan is to coincide with the Berlin Art Week from September 11th to 15th.
OPENRNDR and I
One of the things about working with (recent) technology is that it continuously changes. Since I started programming at age 9, I have used 39 programming languages. But don't be impressed: the difference between many coding languages resembles the difference between spoken dialects more than the difference between spoken languages. Not that different.
One can try various languages because it's a fun mental exercise or because one is dissatisfied with previous ones. Our preferences also change over time. But frequent change comes at a cost: we can't bring everything we learn to the following language, and if we keep trying new ones, we may never master any. That's why, lately, I tend to be more careful about what I invest my time into.
2020 was the last time I changed my creative tool. It happened both out of curiosity and dissatisfaction. Would a new tool allow me to create things I would not otherwise make? Next to this unknown was a known: I was not so happy with other environments I used: challenging to master, long waits to run programs and see the result (which harmed my creative flow), my mistakes produced crashes with no useful messages, or encountering limitations.
Four years ago, I decided to try something called OPENRNDR (which is not the easiest to pronounce in Spanish, I agree) and Kotlin, the language in which it's written. I was curious but also concerned: Who and how many people were behind those tools? What plans did they have for the future? What if I invest time in them and then, for whatever reason, they abandon the projects?
What happened next? Apparently, I became the second contributor to this tool! It was definitely not my plan, and I'm still not used to that idea. I never signed a contract, met the core developer(s), or even agreed to anything. But so is life around free open source software :-) I am happy about my decision. Some of the uncertainty is still there, but I decided not to worry about it.
And what does it mean to be a contributor? In my case, I answer questions in the forum, promote OPENRNDR by sharing images and videos online, improve the guide, write tutorial posts, record live-coding video sessions, open, reply to, fix, and close issues, chat, and sometimes add new features. Most days, I do some of this and genuinely enjoy it. It's like a small world where I can have a positive impact by collaborating with others.
I generate the images in my newsletters with short programs written with OPENRNDR. After creating hundreds of such programs, my collection has become a mess, so I'm organizing them in various repositories: one for pen plotters, one with minimal experiments, and another with the rest. I'm also moving my repositories away from GitHub, something I've wanted to do since 2018 when Microsoft bought the company.
Sketch I: Contour Adjust
Now that you know what my main tool is, I'll share two recent experiments. The first one evolved out of a quick test. There's this new feature called Contour Adjust which allows modifying the segments and the vertices of shapes. I wanted to understand how it works to write a chapter in the guide and post examples so others can use it too.
Transforming contours sounds really interesting to someone creating designs for pen plotters like me. Actually too interesting, because I quickly got lost experimenting with the first thing I tried: rotating vertices.
Initially that idea didn't make sense to me, because rotating a point around itself is still just a point. But I quickly realized that what happens is that the control points on each side of the vertex get rotated around it, which can be used to bend shapes.
Let me show you one example. I created this simple recursive design. It starts with the outer square. To create a new square, you start with the last one you drew, find the four corners, and move each one slightly toward the next corner. Then connect those 4 points to create a new square. Then do it again and again.
This is nothing new; I wouldn't be surprised if you've seen it before. But here comes the new part: before drawing each square, rotate its vertices using the contour-adjust feature. I applied a subtle rotation for the first square so its edges would become a slight S shape. I apply a stronger rotation for the next ones to make it look like a bump. If you make the effort, you can probably figure out the S shape connecting the two corners of the second "square." It's not trivial because it becomes hard to differentiate the new smaller rectangle with all those bumps.
I like the result because it reminds me of something organic, like a sea shell.
An interesting aspect is that the outer shape does not need to have four sides or be the same length. However, I realized that a low number of sides looks better; otherwise, it becomes too round.
Another thing we can play with is the calculation of point locations for inner shapes. In the above example, I moved ~15% from the start point to the end point on the edges of the first shape, and in the inner shapes, I used a value of ~25%.
In the following variation, I started with a triangle and jumped between two different for the point calculations: one smaller, one larger. I also gave each step a different color and filled all the shapes with radial gradients to make them look less flat.
Sketch II: Delete intersections
I keep coming back to the topic of making lines appear in front or behind other lines. I still don't know why I find it fascinating, but I have often experimented with this idea. My last attempt was just a few days ago.
When programming there are often many ways of achieving the same kind of result. Some approaches are easy for the programmer but slow to compute. Other solutions are fast but hard to understand. My twisted approach here is not easy to understand nor fast X-D. But when an idea gets stuck in my head, I can be satisfying when I finally make it work.
Going into the details of how it works would require too many words, but briefly: I took all the rings, split them all at the intersections, and then shortened some of the lines so they feel like they are behind. The complicated part is deciding which pairs of lines to shorten, but don't worry; I'll spare you the details.
Photo of the month
During the pandemic, we started growing plants at home. Every time we visited the shop, we became fascinated by patterns and shapes. They were cute and tiny at the time.
Some have grown so huge after two or three years that we can barely walk through the jungle. Therefore, we have been giving some plants away to our friends.
When I program animated visuals, I usually prefer subtle and slow changes. I like it when one is unsure if something has changed or, once one knows it has changed, not being sure when it did.
For a few years, I've had this PixelBlaze LED strip. It comes with a controller providing a WiFi network and an embedded web application for live coding visuals. Most of the examples are very bright, quick, and saturated—the opposite of subtle.
That motivated me to create this very slow morphing light sequence, where most of the LEDs are off, and sometimes some fade slowly in various colors.
Watching from the bed is quite pleasant if I place the strip on the floor under our plants.
I hope you found something interesting in this e-mail. Please send me your feedback, questions, or propose topics you would like to hear more about.
Until the next one! :-)
aBe PaZoS SoLaTie
Art & Code