idea

Tuesday, October 15, 2024

The Battleground of Ideas -- Documentation

P(re).S(cript). I ended up remaking my project, and left my old log unchanged for the sake of posterity. The finalized version is found at the bottom of the page, and because I don't expect that everything in this document should be read I have highlighted the most important sections in ORANGE.

I chose to use AI to overcome this bit of fear of have within me regarding it, and to scout it out as a tool I could use. This video had convinced me a bit about the value of AI when it comes to coding, and made me want to try my hand at using it as a tool. I attempted to mitigate the language model's influence on my vision by coming to the project with a strict vision. To be a bit meta, even though I came to the AI with a strict vision the AI has painted this work with a bit of its 'colour'.

With my project I created a metaphor for the spread of ideas. I was inspired by John Conway's Game of Life, in my head I was thinking that the general rules would be:

1. Create a grid of square nodes
2. Spawn x number of colours on that grid
3. Each coloured node can spread its colour to any one node in the grid at a time
4. If a coloured node tries to spread to another coloured node, the receiving node instead synthesizes their colours into a new one

After promting ChatGPT to piece that together in p5js, it did not work out as well as I imagined, it was less visually exciting that I had hoped.

I rethought out my rules and sacrificed simplicity in them and the code to put together a more visually engaging simulation. I also sought to better represent the spread of ideas & their synthesis. New ideas in the simulation stagnate, spread slower, or spread faster(weighted towards faster).

1. Create a grid of square nodes,
2. Spawn 6 different colours in 6 nodes on that grid,
3. Each coloured node can spread to any adjacent node(including corners), if the node is already coloured, synthesis takes place instead,
4. With each synthesis the newly synthesized colour's spread rate increases, decreases, or remains the same (at variable rates because it looks nice) 


Version 3: https://editor.p5js.org/skeleton_jazz/sketches/xHBG2dUZ6 

This sketch was pieced together through a back and forth loop using the AI: 

prompt a small change to the code > edit the code > repeat  (I reviewed the code's output in p5js between each step)

An example: Tell the AI to give new colours their own spread speed  > I use random([]) to create a weighted random spread speed for the new colour that either increases, decreases, or remains the same.


Version 4: https://editor.p5js.org/skeleton_jazz/sketches/1RuObRoFP

Version 5https://editor.p5js.org/skeleton_jazz/sketches/6hficBcj3M

This version was created by giving the AI a single command that outlines the rules of the simulation.

Using these five rules as a guide:

1. Create a grid of square nodes,
2. Spawn 6 different colours in 6 nodes on that grid, (3 colour values in p5js, *2 because 3 was not enough)
3. Each coloured node can spread to any adjacent node(variable speed because it looks better)
4. If the node is already coloured, synthesis takes place instead,
5. With each synthesis the newly synthesized colour's spread rate increases, decreases, or remains the same (at variable rates because it looks nice) 

I came to this command,

"in p5js Create a 40 x40 grid of square nodes with no gaps, no stroke, and a cell size of 15, spawn 6 different colours in 6 nodes on that grid, each coloured node can spread its colour to any one adjacent(including nodes that share corners) node at a time, the coloured nodes spread slightly slower to nodes that are untouched, each colour's spread rate is random and based on that random initial spread rate of each colour, the speed of each spreading of a node is random, if the node is already coloured, the node that is spread to will either use lerpColor() to interpolate their colours to make a new one instead OR replace that colour with its own, with each interpolation the newly formed colour's spread rate either increases, decreases, or remains the same. use miliseconds to control the spread rate, the default number should be 50 milliseconds"

After I received the code I tweaked some values, and made it so that when 'r' is pressed on the keyboard setup is called again, resetting the simulation.

Of all the variations for this simlulation, I prefer the of output of the more convoluted version 3 to any of the other solutions. I think it has the most visually interesting output, even though it strays from the rules a little more.

Caute, I must to be cautious when it comes to its use, lest its ideas have too much influence on my work and myself, ex: it kept attempting to offer suggestions about which direction I should take my code. In experimenting with how I promted the tool, I learned a good bit about how to use it, and have alleviated some of my anxieties around it. Though, in the end I developped my understanding of the use of language models much more than I developped my skills as a programmer, ai seems VERY useful for bridging technical gaps, but moving forwards I would like to bridge many of those gaps myself, so that I can have more control over MY work.

I came to this investigation with a set of rules, but I also came at it with a conclusion ready made before I even ran my first simulation, it might have been more honest to have begun my investigation with the question of what happens when nodes in a system communicate and synthesize information? If I were to do this again I would have been more open to discovering new conclusions, and I would have included the genesis of ideas, as opposed to only represnting synthesis. Technically I would have spent more time learning about coding, but I don't regret getting to learn about AI.


CONTINUED

I did end up regretting the use of AI—the apple's taste was bitter—the code I had didn't feel really mine, only the concept behind it. So I ended up learning a lot more about arrays and indexes. I still did use AI in one step, I'm hopeful that this time I wont feel so poorly about my work the next day. 

this is what I had before I used AI:

https://editor.p5js.org/skeleton_jazz/sketches/b3WwvyipC

This is after slotting it in, and asking for a few methods for grid tiles to detect/interact with other tiles:

https://editor.p5js.org/skeleton_jazz/sketches/wvFB9nf8A

This is my final version, created after picking a method I learned to understand and running with that:

https://editor.p5js.org/skeleton_jazz/sketches/0GJdYIPyh

In the creation of my final sketch, I looked over code from older iterations and reconstructed a few ideas, ex: a canvas that follows the grid, rather than vice versa. Technically I still feel there is something to be desired, the last super cluster of code I think could be simplified, I just hadn't figured out how yet. And the meaning of the work has changed a bit, it feels more like a take on assimilation, maybe because of the already populated grid that becomes one united mass losing all the individuality of the colours that were already there. It reminds me of an analogy one of my highschool teachers used when speaking about Canadian vs American cultural policy, where canada's is represented by a stew with different chunks of vegetables floating around, & Americas is represented by a  single & consistent soup.

I used AI to implement my code into html on this site, allowing me to very easily overcome the technical barrier of learning html.

Saturday, October 12, 2024

Applied 3d




    Figuring out how to make my pattern repeat was a bit of struggle, so when it came to applying it to the 3d forms, I went with the illusion of seamless tiling.


 

Tuesday, October 8, 2024

www.hypothetical

     Two persons, separated only by a wall, cannot hear the sounds produced by the other, they are near physically, but may as well be separated by a sea as they are unable to communicate. Enter a third body, someone even farther from the first than the second is, yet by some arrangement they are able to communicate with the first, making these two infinitely more connected than the first and the second. This is better illustrated through my real life situation. The bedrooms of my father and I are joined by a single wall, and though we are near, we never hear the ruckus of the other. My brother's room, separated from by mine by a whole story, finds itself connected much more intimately to my own. By grace of our home's ventilation system, I can hear his ruckus, and he mine. A similar relation is found in this age of internet, two strangers as far from each other as any two humans have ever been, could be joined quite closely by a path in the world wide web, and in contrast be disconnected from, and foreign, to their own neighbors.

Surface Designed

 


10*Example







I pulled from the last four examples on my list.

With the first, I liked the idea of limiting a design to a set number of angles.
I enjoyed the pixelization of the second and ran with a bit of that in my fractals.
The third had a spiral-like shape with two coils, a white and a blue one. I implemented that idea into a few sections of my pattern.
And finally the chicken marinade had an intricate intelocking pattern with no gaps, that was something I liked, so I went along with that idea.


Pre-critique version of my design



Post-critique Version







    I remade the triangle, as it was not a shape that I felt did not fit in with the rest of the design,
I also continued the fractals, and rebuilt them a bit so that they would follow a certain logic.(the square fractal went from dividing by 3 to then 4 with the next interation, I made it divide by 3 with each iteration)

Thursday, September 19, 2024

The Quinate's Citadel

 

    "Of the 10, 000 stars visible to the unaided eye, five are the archaic Citadels — long since abandoned structures conceived by The Architects."

 

My castle drew inspiration from M.C. Escher's geometrical works, and mixed in is a pinch of sci-fi author Gene Wolfe's architectural sensibilities.





















            The towers gave me a good deal of trouble at first, they took a few tries to figure out. leaving me with a couple of prototypes.

The difficulties that came with building them came from aligning them to the structure of the  dodecahedron (the 3d pentagon at the centre of the Citadel), without losing any symmetry. I didn't quite manage to get that goal without moving the goalposts. After simplifying the towers and adjusting a few of them, I got to a nearly symmetrical middle ground that was near enough my vision—ironically, I like it more because of that.