INSTRUCTIONALS» PseudoCODE Drawing

My initial attempt at the instructional drawing was a flop, partly because the outcome drawing wouldn’t necessarily be able to represent what the instructional was instructing was doing and partly because the commands just aren’t easy for a human to execute without being frustrated (myself included) and partly, just being obsessive. Luckily, the ‘failure’ served as a funny sort of re-whipping-into-shape.

During the first attempt, I found myself getting more into the ruler than the pencil. So in my second attempt, I tried to express that idea much more simply, along with implementing a couple simple loops/conditionals that punish the person executing the instructions for giving negative feedback about their user experience [as a computer].

So while my second attempt was under-parameterized, but perhaps more accessible/’interesting,’ my first attempt ended up failing in a very different way, in that it was too time consuming for the human “computers,” highly parameterized, and pretty devoid of interest. But aside from that, writing pseudocode for human computers was just really fun to do.

So I thought I’d share both attempts, if only to show what not to do (at least if you don’t have a reason to).

 

img002 img001 img004 img003

Second Attempt at Instructional Drawing (the one I actually got people to execute):

m0:
All instructions contained within functions labeled m(z) pertain to all subsequent functions labeled d(x) and n(y).
m2:
For all functions labeled d(x), use only your dominant hand.
m3:
For all functions labeled n(y), use only your non-dominant hand.
m4:
Simply execute each of the following functions in the numerical order listed below, satisfy its conditions, and then then move on to the next function, unless it is otherwise specified by a preceding function or unless x=y, then perform functions d(x) and n(y) simultaneously.
n0:
Hold your pencil in your dominant hand and ruler in your non-dominant hand. Place the paper directly in front of you on the table in portrait orientation.
d1:
Sit in a rolling chair facing a desk with the chair’s height adjusted to be just low enough to fit your knees underneath the desk but no lower.
n2:
Place the ruler on the paper such that its centimeter edge touches both the upper right hand corner and lower left hand corner of the paper.
d3:
Touch the index finger of your hand to the centimeter edge of the ruler at its 2 inch mark. Raise your finger a centimeter above the ruler’s surface.
d4:
Imagine a straight line orthogonal to the cm edge of the ruler (so, parallel to the unit notches) crossing over the 2 inch mark on the ruler.
n5:
Actually trace this imaginary line with your ‘finger’ — move it forward in space right over the ruler’s surface, and then rest it on the ruler’s surface at the midpoint of the imaginary line from function d4.
d5:
Hey! Your ‘finger’ should still line up with the 2 inch mark on the ‘ruler.’ If counting variable [n5b-count] is even, proceed to function n5b, else skip forward to function n6.
n5b:
Turn the paper and ruler 90′ clockwise. Repeat function n5, but replace the word ‘finger’ with ‘pencil’ or vice versa if it was already ‘pencil’. Add 1 to counting variable [n5b-count].
n6:
Apply just enough, but not too much pressure downwards at the 2 inch mark on the ruler to allow you to swivel the other end of the ruler around with your hand.
d7:
Don’t move at all, but imagine swiveling the ruler with one hand while holding it down with the other without disturbing the paper underneath at all.
n8:
Swivel the ruler lightly in a clockwise direction. Proceed to the next function, but don’t stop swiveling.
d9:
Hold the pencil upright with its tip at the midpoint of the long centimeter edge of the ruler. Let the pencil be pushed and guided by the swiveling ruler, generating lines and arcs on the paper.
n9:
Begin to bounce in your chair, while still using your pencil and ruler on the paper to make marks. Increase bounce frequency by a factor of 2 every 10 seconds. If [line-segs] > 1, stop bouncing after (20 + [line-segs]) seconds, else stop bouncing after 20 seconds and skip to m5.
m5:
Count the number of intersections made by the lines you have drawn on the page. Update the value of [line-segs] to this number.
m6:
Please rate the quality of this user experience with a value from 1-9 with 9 being the highest posible rating.
Store this number in the variable [value]
set the variable [satisfation] = [value]
set the value of [satisfaction = x
set the counter variable [overyet?] = [overyet? + 1]
if [overyet?] > 5 AND [satisfaction] >= 10
stop and quit
else
start again at the function d(x).
return pencil, return ruler

 

First Attempt at Instructional Drawing (plus some of the other statements I wrote trying to do this at first..)

#The subject codes like “subject1”, next to the subtask names, were just one idea that then got scrapped#
subtask0: subject1,
before you begin to do this task, sit in a rolling chair facing a desk with the chair’s height adjusted to be just low enough to fit your knees underneath the desk but no lower. Subject2, place one 8.5″ by 11″ piece of white printer paper directly in front of Subject 1 on the desk with the bottom edge of paper flush with the edge of the desk facing Subject1 and also with the midpoint of the line formed by the paper’s bottom edge aligned exactly at the midpoint of Subject1’s torso. Place a ruler and pencil on the table three inches to the right of the paper.
subtask1a: subject1,
pick up the pencil with your dominant hand or either hand if you’re ambidextrous. On the bottom edge of the piece of paper, use the provided ruler to measure out the midpoint of the line formed by the bottom-left corner and bottom right corner of the paper, and very faintly mark this midpoint with an approx. 2 mm. long vertical tick mark. Next, align the ruler so as to make a straight line bisecting the sheet of paper in half vertically through the midpoint you just measured. Using the ruler as a guide, very faintly draw a straight vertical line rising from the bottom of the page to the top. Put the ruler back where it was originally — to the right side of your desk.
subtask1b: subject1,
Grasp your pencil again. Prepare to sign your signature according to the following instructions. Make sure to center your signature at the midpoint of the bottom edge of the paper, such that the faint vertical line you drew also bisects your signature neatly. Use the bottom edge of the paper as a line for you to form your script/letters upon, like you were writing on college-ruled lined paper. After signing, remove your pencil from the paper. Get the ruler again. Measure the height of your signature and divide by two in order to find the midpoint between its highest and lowest points. Make small, faint, horizontal tick marks at both points as guides for the measurement. Then line up the the notched edge of the ruler directly on this horizontal line that bisects your signature, othogonal to the first line. Use your ruler to make the following marks with your pencil: a first endpoint dot 2mm to the left of the signature and another 2mm to the right of the signature, both falling on this bisection line. Using the ruler’s edge to connect these two endpoints, draw a straight line from one to the other, bisecting your signature horizontally.
subtask2a, subject1,
##if executed carefully correctly, subtask2 and subtask3 and subtask4 will analyze and visualize a subset of points that forms part (all the intersections) of the curving line of your signature by evaluating the spatial properties of these points using logical criteria.##
In order to pick an initial point on the curve for evaluation, first compare the height of the highest points on the curve on either half of your bisected signature. In whichever half has the highest point overall, find the lowest and rightmost point of intersection on that half of the curve that is still above the horizontal axis bisecting the signature from subtask1. If the lowest and rightmost point of intersection has not already been filled in, this will be the point you will evaluate as you now proceed to subtask2b.
subtask2a-mini-1, subject1,
[lohi-count] is a counting variable for the number of times that any newly visualized point that you have filled in / marked falls inbetween any two others, but only along the x-axis. To determine the first component of the output of subtask2b — the relational x-axis coordinates defined by the variable [lohi-choice] — which can be either valued as [highest] or [lowest], return [lohi-choice] = [lowest] if [lohi-count] is even, and return [lohi-choice] = [highest] if [lohi-count] is odd.
subtask2a-mini-2, subject1,
[lr-count] is a counting variable for the number of times that any newly visualized point that you have filled in / marked falls inbetween any two others, but only on the y-axis. To determine the second component of the output of subtask2b — the relational y-axis coordinates defined by the variable [lr-choice] — which can be either valued as [leftmost] or [rightmost], return [lr-choice] = [rightmost] if [lr-count] is even, and return [lr-choice] = [leftmost] if [lr-count] is odd.
subtask2b, subject1,
If the lowest and rightmost point has already been filled in, to determine the next point to evaluate, call subtask2a-mini-1 which outputs into [lohi-choice], and then call subtask2a-mini-2 which outputs into [lr-choice], whose respective values replace the contents of the array [lohi-choice, lr-choice]. Proceed to subtask2c. Else, proceed to subtask4. ##The array [lohi-choice, lr-choice] encodes four possible relational spatial codes: [highest, rightmost], [highest, leftmost], [lowest, leftmost], and [lowest, rightmost].
##Subject1 should interpret the values in [lohi-choice, lr-choice] as a command to find the lowest OR highest AND leftmost OR rightmost point of intersection on their signature curve, which will be further evaluated in subtask3 and subtask4 and potentially filled in during subtask4.##
Proceed to subtask2c.
subtask2c, subject1
If you have already filled in the point defined by the current values of [lohi-choice, lr-choice] generated by subtask2b, then choose the nearest point of intersection to your assigned one, but in the opposite direction of the vector defined by [lohi-choice, lr-choice], else call subtask4 [#notsure#]. If the point defined by the previous (one iteration before the current) values of [lohi-choice, lr-choice] generated by subtask2b is a point of intersection between the curve of the signature and either one or both of the two perpendicular lines that bisect it, then temporarily switch (until your current point coordinates fall on these axes again, then switch back) to choosing the furthest point of intersection from your assigned one rather than the nearest one, and in the same direction as the vector described by [lohi-choice, lr-choice]: this output will be interpreted as the new point that you will re-evaluate in subtask3. Proceed to subtask3.
subtask3, subject1,
Visually find the point of interest indexed by the relational coordinate values from subtask2. In evaluating this point using the following set of logical conditions, make sure to FIRST identify the correct truth values — [True] or [False] — and SECOND decide on the corresponding action based on the combination of *ALL* the relevant logical conditions: (1) that you have already filled in this point on the curve; (2) that this point is either the highest or lowest point on the curve whose location is the furthest to either the left or right. If both conditions (1) and (2) are satisfied, stop and procede to the next subtask. If the point on the curve being evaluated does not meet condition (1), but meets condition (2), then run subtask4. Or if the point being evaluated meets condition (1), but not (2), then run subtask2b. Else, run subtask2b.
##A single iteration of this subtask outputs one point’s spatial position on the curve and generates a physical index of it. However, you will test a number of points to see in what order they optimally fulfil a simple set of logical conditions. As you iterate this subtask more, it visualizes in higher resolution the differences in *how well* specific points along the curve meet the set of logical conditions above, and discretizes the ‘raw’ data of the hand-drawn curve.##
subtask4: Mark this point on the curve as accurately as possible with a single dot with the tip of your pencil. If you have evaluated every point on the line above the azimuth/horizontal axis of the signature’s curve or if there is not enough room physically on the line to draw any more points, then stop and procede to the next subtask. If not, run subtask2b.

 

subtask2: subject1, you will visualize a subset of points that forms part of the curving line of your signature by evaluating the spatial properties of these points using logical criteria. *ALL* of the logical conditions that make up the following set must be met fully in order to complete the subtask properly: (1) that you have not already marked this point on the curve with a dot; (2) that this point is the highest point on the curve whose location is the furthest to the left. If condition (1) and (2) are both met, mark this point as accurately as possible with a single dot with the tip of your pencil. Stop and procede to the next subtask. If the point on the curve being evaluated does not meet condition (1), but meets condition (2); or if the point being evaluated meets condition (1), but not (2), then repeat subtask2 until a point is found that meets both conditions (1) and (2). If you have evaluated every point on the line above the azimuth/horizontal axis of the signature’s curve or if there is not enough room physically on the line to draw any more points, then stop and procede to the next subtask.A single iteration of this subtask outputs one point’s spatial position on the curve and generates a physical index of it. However, you will test a number of points to see in what order they optimally fulfil a simple set of logical conditions. As you iterate this subtask more, it better visualizes the differences in *how well* specific points along the curve meet the set of logical conditions above, and discretizes the ‘raw’ data of the hand-drawn curve.
subtask3: mark this point as accurately as possible with a single dot with the tip of your pencil.
subject1, pick up ruler with your other hand. With your other hand, position the notched edge of the ruler so that this dot directly touches the 2 inch mark on the ruler’s notched edge. Return your pencil to where it originally was on the desk — to the right of the paper.
subtask5:
Touch the index finger of your non-dominant hand to the notched edge of the ruler at its 2 inch mark. Raise your finger a centimeter above the ruler’s surface. Imagine a straight line transversing the surface of the ruler (parallel to the unit notches), which connects one of its long edges to the other. Actually trace this imaginary line with your finger, moving it forward in space right above the ruler’s surface, and then stopping at the line’s midpoint. Your finger should still line up with the 2 inch mark. Apply just enough, but not too much pressure downwards to allow you to swivel the opposite end of the ruler with your other hand. Try swiveling the ruler with one hand while holding it down with the other without disturbing the paper underneath at all. Now find the the highest rightmost point on the curve created in subtask1 and swivel the ruler so that the notched edge just touches this point, forming an imaginary line segment between the highest leftmost and rightmost points on the curve. Lift both hands of the ruler without disturbing the paper or ruler’s positions. Grasp the pencil in your dominant hand again. Press down on the ruler with your non-dominant hand without shifting its position and without letting your fingers overlap the notched edge of the ruler. Mark a single dot at the highest leftmost point on the curve. Place your pencil tip exactly on the first dot generated in this subtask, and apply pressure sideways against the edge of the ruler in order to steady the pencil tip. Draw a straight ruler-guided line from this first, left dot to the other dot made in subtask2. Stop. Remove pencil from the paper.
Subtask6: subject1, visually identify the longest line segment remaining on the paper that was generated exclusively during subtask2. If you visually identify that there is only one line segment on the paper that was the longest generated during subtask2, then mark a single dot with the tip of your pencil at the midpoint of this line segment. ##Use your brain to encode the information that your making a mark at the midpoint of a line segment is called ‘line bisection’ and that ‘line bisections’ generate two new ‘line segments’ of equal lengths.## Stop and proceed to the next subtask. Mark a single dot with the tip of your pencil at the midpoint of this line segment in order to bisect it into two new line segments of equal lengths. If you visually identify multiple line segments of equal length on the paper that were the longest generated during subtask2, then mark a single dot with the tip of your pencil at the midpoint of only the leftmost one of these line segment, bisecting it. Stop and proceed to the next subtask.
Subtask7: subject1, #use your brain to encode the information that there is a variable called ‘num-lb’ that you will use to represent the cumulative number of ‘line bisections’ that you have executed exclusively during subtask2, subtask3, and subtask4. Use your brain to encode the information that there is another variable called ‘num-ls’ that you will use to represent the cumulative number of ‘line segments’ on the paper that you have generated exclusively during subtask2, subtask3, and subtask4. To calculate the current value of ‘num-lb’, you must first calculate the current value of ‘num-ls’, and then subtract 1 from this value.# Calculate the current value of ‘num-lb’. If ‘num-lb’ is equal to or more than , repeat subtask3 ‘num-lb’ times, else stop and proceed to the next subtask. ‘num-lb’
subtask3: subject1, place pencil to paper marking a single dot at the midpoint of the line created in subtask2, Repeat subtask3 the midpoint of the left segment and
then repeat subtask1 in the space directly above the first signature by vertically stack each finished iteration of the signature directly on top of the previous, taking care to make sure that the lowest regions of the line of the current iteration just touch the highest of the previous, neither hovering above not intersecting to create overlap. Continue to stack signatures until the very top edge of the paper is reached and then stop. If you must vertically compress the final iteration of the signature to fully fit within the page, do so. After the final iteration, stop. Repeat the whole
Subject 2: Simultaneously, starting from when Subject 1 lifts their pen from page after completing the fifth iteration, pull Subject 1’s rolling chair backwards orthogonally to the the desk in front — at a rate of 1 step backwards (foot1-behind-foot2-repeat) per blink of Subject 2’s eyes.
[lohi-choice] = [highest], then
[lr-choice] = [rightmost]
(with each call of subtask2b, count the # of times [lohi-count] that any new visualized point falls inbetween any two others only on the horizontal axis and [lohi] is even, choose lowest and if it is odd, choose highest) AND leftmost OR rightmost (with each call of subtask2b, count the # of times [lr-count] that any new visualized point falls inbetween any two others only on the horizontal axis and [lr-count] is even, choose rightmost and if it is odd, choose leftmost) point of intersection and this will be the point you evaluate. Proceed to subtask3.

Comments are closed.