Packet Switching Relay Race

Inspired by the wonderful activities at networks.land, I built my own puzzles for a packet switching relay race activity for my 5th grade students. The learning goal is to help students understand how data is transmitted through networks to our computers via packet switching. Routers all over the Internet decompose files into smaller chunks called packets, which re then send along an indeterminate path to reach their destination.

In the activity, students act as routers and route the packets from one side of the room to the other, and then must reassemble them into complete files at their destination. Students came a way with a number of new understandings: when they experience slow Internet speeds, there may be high traffic on their area network; computers really do this kind of information relay work much faster than humans can.

This video on Packets, Routing & Reliability from Code.org is a great additional resource for this lesson.

 

A&HA 5063: ASSIGNMENT #7

I’m taking a chance on an exciting new tool that I have been waiting for some time to receive – the Shaper Origin router. It is a computer-aided hand router with a built in vision system. Theoretically you can route any scale of material with this tool, as compared to typical CNC routers with a defined bed-size dimensions.

It’s the perfect excuse to upgrade the game board base for my my instructional art card game project. I drew up a vector art, .SVG file based on my paper “place mat” game board, loaded it into the Origin’s computer and used the router to engrave fitted areas the different prompt cards to sit. The machine has a camera for tracking and orientation, and know where to go based on it’s screen. This time it was just a quick pass, so it’s a little uneven in spots and rough in others, but overall I’m very excited about this new tool.

A&HA 5063: ASSIGNMENT #6

I’m taking a break from my instructional art card game project to explore another idea that is of interest to me. Earlier in the semester, I considered exploring “ability & extrasensory prosthetics”. I saw it as an opportunity to explore mold making, casting, and another interest of mine: soft robotics – the “subfield of robotics dealing with constructing robots from highly compliant materials, similar to those found in living organisms.”

I found a set of DIY plans online and 3D printed a mold positive for an air-powered, four-digit gripper. I mixed SmoothOn Eco-Flex silicone compound, poured it in the molds and baked in the a toaster oven to quick-cure it. One downside of my PLA printed 3D mold positives is that they are actually quite porous, so silicone will ooze out if it is not quick cured with heat. Another challenge is that the PLA will also melt and warp if you set your oven temperature too high.

IMG_7786The prototypes require another thin layer of cured silicone to seal the air chamber, which is welded together with a final thin coat of liquid silicone. Regardless, still had a few air leaks, which I attempted to seal with silicone caulking sealant. I’m not use that they are chemically the same, or will bond permanently, but it is a chore to mix new batches of silicone repeatedly, so I took a chance.

Right now, the grippers are actuated with a large syringe to pump compressed air into the phalanges’ air chambers, transforming them into pneumatic artificial muscles. It was fun to make, but I will have to take more time to think about where to go from here.

A&HA 5063: ASSIGNMENT #5

I am taking my instructional art card game to a new place for a moment. I’m reimagining  the prompt cards into dice that can be rolled to deliver instructions. I built some prototypes in TinkerCAD and 3D printed them. I used white CPE filament for durability and they ability to recolor the plastic for finishing. I colored with markers this time. Three numbered dice are also pictured which I did not fabricate, but I didn’t feel like reinventing the wheel for those. These dice will have to work without code snippets of course, but they could be also well suited to hand drawing activities, or outdoor art activities with sidewalk-chalk.

A&HA 5063: ASSIGNMENT #4

This week I further refined my instructional art card game with a great suggestion from a classmate. Trisha thought that it would be great to make the cards into a game by making the word prompts into challenges to actually create the required code. To achieve that goal I added Scratch code snippets to the back of each card that correspond to each prompt. Players would deal out cards to create an art prompt, and earn points if they can program the visual without looking at the code snippet. Updated cards below:

 

A&HA 5063: Assignment #3

This week I was exploring my idea to design a instructional art card game. Stringing the category cards together generates a drawing prompt for the user to execute. The idea is inspired by some of the activities of the Conditional Design Group. I also learned how to use a Silhouette Cameo for the first time too. The first few batches of card prototypes are scribed and cut out on yardstick with the machine. An example outcome is also displayed below: Draw 3 black triangles that are sharing vertices.

A&HA 5128: PERIODIC UPDATE #8

Artifacts To Date:

My generative textiles are fabricated and in from WOVNS! I had three pieces made according to the algorithms that I have shared in previous posts.

This slideshow requires JavaScript.

To clarify, the textile manufacturer does not accept code files from Processing, but rather I ran each program many, many times to create several variants of the graphic, and then I selected versions that I wanted to have made. I sent three .png files to WOVNS and they take care of the rest after confirming my desired colors.

I am initially underwhelmed by the way that the colors translate in reality compared to the screen. I really should not be surprised, but since this is my first experience, I did not realize that small change in color choices would not actual materialize in textile form. My favorite graphic had some color variation that is apparently too subtle to show up when woven.

The company does offer swatch blankets that express the actual color palettes fully so you know what you are really getting. Perhaps if I decide to continue such work I will need to pick those up.

57e23a2538a5d88c22c0ae85362f0cf6_original

A&HA 5128: PERIODIC UPDATE #7

Artifacts To Date:

As planned I was able to design one more algorithm for a third piece. Here it is:

Form 11-16-2017 at 22.09.00s

And it’s code:

// "Regular Vertical Bars with Random Squares" | Dylan Ryder | December, 2017
// Talma Quality, Pastel 2 Palette
size(3984, 3000); // 46-48" x 36", 84 DPI
background(#F9FAF9); // Blizzard
noSmooth();
noStroke();

int w = width / 30;
int h = height;
int h2 = height / 10;

// large columns
fill(#FFE4F3); // Pinking
for (int col = 0; col < 30; col++) {
 rect(w * col + w / 8, h * 0.05, w * 0.5, h * 0.9);
}

// small columns in 2 rows
fill(#FFEEF8); // Tutu
for (int col = 0; col < 30; col++) {
 for (int row = 1; row < 3; row++) {
 rect(w * col + w / 8, (h * 0.9) / 3 * row, w * 0.5, h2);
 }
}

// small squares randomly placed in grid
int w3 = width / 60;
fill(#877193); // Beta
for (int col = 0; col < 60; col++) {
 for (int row = 1; row < 8; row++) {
 int rand = int(random(7*row));
 if (rand <= 3) {
 rect(w3 * col + w/8, (h * 0.7) / 7 * row, w * 0.5, w * 0.5);
 }
 }
}

// generate a unique filename for each generation based on datestamp
save("Form "+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");

Adjustments to Timeline:

I sent generative prints of all three works to WOVNS to be fabricated on November 17th. I should have them shipped out in around 10 days.

A&HA 5128: PERIODIC UPDATE #6

Artifacts To Date:

I worked this week to rebuild my Scratch prototypes with the Processing language, which is best for creating graphics that can be translated into textiles on a jacquard loom. WOVNS requires all colors to be expressed with specific hexadecimal values in any selected palette. Coding with that kind of color specificity is not possible with Scratch.
The first rebuild used a different algorithm to achieve the desired generative design. Here is an example generative design:

Form 11-13-2017 at 22.08.52s

Here is the code:

// "Two Agents Crossing" Dylan Ryder, November 2017
// Designed in Processing
// Talma Quality, Pastel 2 Palette

size(3984, 3000); // 46-48" x 36", 84 DPI
background(#F9FAF9); // Blizzard
noSmooth();
noStroke();

int side = 100;
int x1 = 2000;
int x2 = 0;
int y1 = -100;
int y2 = height / 2;

// Vertical Agent
fill(#877193); // Beta
while (y1 < height) { 
 // Y axis traveling
 int r = int(random(7));
 for (int i = 0; i <= r; i++) {
 y1 += side;
 rect(x1, y1, side, side);
 }
 
 // X axis traveling 
 r = int(random(3));
 int shift = int(random(2));
 for (int i = 0; i < r; i++) {
 if (shift == 0) {
 x1 -= side;
 rect(x1, y1, side, side);
 } else {
 x1 += side;
 rect(x1, y1, side, side);
 }
 }
}

// Horizontal Agent
for (int x = 0; x < width; x += side) {
 pushMatrix();
 translate(x * int(random(2)), 0);
 fill(#BFCDE5); // Moon
 //fill(#74AED7); // Ciel
 rect(x2, y2, side, side);
 popMatrix();
}

// generate a unique filename for each generation based on datestamp
save("Form "+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");

The next rebuild also used a slightly different algorithm to achieve my desired generative design. Here is an example of that generative design:

Grid 11-16-2017 at 22.26.37s

Here is the code:

// "Squares in an Imperfect Grid with 8-bit Fill Variability"  
// Dylan Ryder, November 2017
// Designed in Processing
// Talma Quality, Pastel 2 Palette

size(3984, 3000); // 46-48" x 36", 84 DPI
background(#BFCDE5); // Moon
noSmooth();
noStroke();
color c = #F9FAF9; // Blizzard
fill(c);

int w = width / 30;
int h = height / 25;
int r; // horizontal random gap between squares
int vRand; // vertical random gap between rows
int stroke;

for (int row = 0; row < 18; row++) {
 vRand = int(random(30));
 for (int col = 0; col < 18; col++) {

// decide if the shape is filled or not
 if (int(random(256)) == 255) {
 noFill();
 stroke(c); // Color
 stroke = 5;
 strokeWeight(stroke);
 } else {
 noStroke();
 fill(c); // Color
 stroke = 0;
 }

r = int(random(-20, 20));
 // draw the square
 rect(w * col * 2 + w / 2 + r, h * row * 1.35 + h / 2 + vRand, 
 (w * 3 / 4)-stroke, (h * 3 / 4)-stroke );
 }
}

// generate a unique filename for each generation based on datestamp
save("Grid "+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");

Adjustments to Timeline:

I am feeling motivated to make this work a triad and plan to design one more algorithm for a third piece. I plan to get that done this weekend and if I am satisfied with it, I will have all three works fabricated.