Deprecated: Creation of dynamic property wpdb::$categories is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$post2cat is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$link2cat is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 668

Deprecated: Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 554

Deprecated: Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 595

Deprecated: Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 535

Deprecated: Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 544

Deprecated: Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 960

Deprecated: Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 980

Deprecated: Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 992

Deprecated: Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 1003

Deprecated: Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 151

Deprecated: Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 175

Deprecated: Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 164

Deprecated: Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 186

Deprecated: Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 138

Deprecated: Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 75

Deprecated: Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 89

Deprecated: Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 110

Deprecated: Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 127

Deprecated: Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 199

Deprecated: Creation of dynamic property Automattic\Jetpack\Connection\Manager::$error_handler is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-manager.php on line 91

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Instagram_Gallery::$is_wpcom is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-instagram-gallery.php on line 23

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Mailchimp::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-mailchimp.php on line 17

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 21

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$is_wpcom is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 22

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Gutenberg_Available_Extensions::$wpcom_is_site_specific_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/gutenberg-available-extensions.php on line 20

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 23

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_site_specific_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 24

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Subscribers::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/subscribers.php on line 15

Deprecated: Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38

Deprecated: Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38

Deprecated: Creation of dynamic property WPCOM_Widget_Goodreads::$shelves is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/modules/widgets/goodreads.php on line 33

Deprecated: DateTime::__construct(): Passing null to parameter #1 ($datetime) of type string is deprecated in /var/www/twodee/blog/wp-includes/script-loader.php on line 348

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$toolbar_classic_block is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 347

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$toolbar_block is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 349

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$toolbar_block_side is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 350

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$panels_block is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 351

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$used_block_buttons is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 354

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198
» Secret Coders

teaching machines

Secret Coders

October 9, 2016 by . Filed under
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
public, writing.

My foray into technology-themed graphic novels began with a book about consumerism, but now we turn to a book on what I call developerism—the insatiable need to design and make your own stuff using the computer. Gene Luen Yang and Mike Holmes have published two books so far in a series called Secret Coders, which pays homage to a brief moment of educational brilliance in the 1980s. During that time, our schools actually taught young people to code using Logo. But the moment faded away, and fewer students now learn how to code in school. These books aim to fix that problem. Let’s have a look.

Spoilers lie ahead.

Synopsis of Book 1

The first book of the series introduces us right away to our heroine: Hopper Gracie-Hu. She is just starting school at the dreary Stately Academy. Not five minutes in, she gets in an altercation with three young men who splat her with chocolate pudding and one of whom (Josh) feels the need to remind her that she’s a girl. The school appears to be staffed by monsters of European vintage, but neither book 1 or 2 has elaborated on this. The worst part, however, is the four-eyed birds. Generally, only the outer two eyes are open. Despite all this, Hopper is bored by her classes.

At lunch she meets up with Eni, the owner of the chocolate pudding. He’s a big guy, and Hopper fears being pummeled for having spat some “lung pudding” back at him. But instead he is intrigued by Hopper’s number 7 earrings. The bird looking at them has its three rightmost eyes open. Eni deduces that the birds understand binary numbers, and that explains why the number 9 is displayed all over the school. Nine is 8 + 1 or 2^3 + 2^0, and the birds who see it only open eyes 3 and 0—which looks halfway normal. This evidence convinces Eni that the birds are robots and that someone is trying to hide that fact.

Through this mystery, Hopper and Eni become fast friends. They agree to look for clues in the creepy shed, which the gruff janitor had shooed Hopper away from earlier, saying, “These doors aren’t meant for the likes of you, you little hooligan!” (Is this comment hinting at the sexist poison that has for so long blocked women’s involvement in technology? I don’t know.)

Three birds share the combination to the shed’s padlock with their eye configuration, and Hopper and Eni discover within the most important character of the book: a programmable turtle robot. Eni also finds some printouts, of which Hopper says, “What is that? Looks like a computer threw up a bunch of letters and numbers onto a piece of paper!” The textual vomit is actually a computer program for clearing the sidewalk written in the Logo programming language. When Eni speaks ClearSidewalk, the turtle’s eyes light up, he exits the shed, and begins traversing the school’s sidewalks with a leaf blower in hand.

Hopper and Eni are delighted at their discovery until the janitor shows up and shines a 15 on the wall with a filtered flashlight. All the birds’ eyes open, and Hopper and Eni run for it. There seems to be no hope for escape, but then Hopper sees Eni’s basketball jersey with the number 10 on it. She folds it over so only the 0 shows, and the birds thud to the ground with closed eyes.

The next day at school, Hopper and Eni discover that they can program the turtle themselves by speaking aloud forward and turn commands. But Hopper goes a bit too far when she speaks PD (short for pen down). The turtle’s leaf blower activates and blasts a messy sandwich into the face of Hopper’s Chinese teacher. Hopper is sent to the principal’s office, where we learn that the Chinese teacher is actually Hopper’s mother, a fact which has been heretofore hidden from us. This thickens the family drama that has already been hinted at.

Eni joins Hopper in the principal’s office, and while waiting, they mentally trace out a routine named OpenSesame that Eni found in the printouts. It makes the robot trace a hexagon. The principal assigns them trash duty so “they will learn to stop being trash.” (Angry and funny don’t go together.)

After school, Hopper embarrasses herself at basketball practice. She had been talking up her skills, but Eni discovers that Hopper is only trying to relish the memories of her father, who loved basketball and called it “math in motion.” Hopper deeply misses her father, who walked out on his mother (and her) after a fight. As they walk home, Hopper sees a hexagon in the school courtyard, and Eni wastes no time in pulling the turtle out of his backpack. They run OpenSesame, and a staircase leading underground opens up. Just as they are about to descend, Eni’s friend Josh appears. Josh has been egging Hopper on ever since they first met, and he is not warmly received. However, Hopper is pretty certain that they will find skeletons with cash underground, and that Josh would be useful as bait.

Instead of skeletons, they find angry four-eyed birds and Mr. Bee, the janitor. It looks like their luck has run out, until Mr. Bee sees the “Gracie” on the back of Hopper’s jersey. (Basketball jersies stop many hurtling plot trains on a dime in this novel.) She asks if Albert Gracie is her father, which she confirms. Mr. Bee relents and shows his vulnerable side. He admits that the turtles and birds are his inventions, but he says no more until the kids write a program to trace out a spurred, benzene-like hexagon. That’s exactly where book 1 ends.

Synopsis of Book 2

In the second book, Secret Coders: Paths and Portals, Hopper, Eni, and Josh win over Mr. Bee by writing a Logo program that draws out what looks like a benzene ring. They learn that Stately Academy replaced an older school in which Mr. Bee himself was a teacher. The school taught students how to teach robots new commands. Mr. Bee says, “Our robots weren’t meant to be mere appliances. They were meant to be instruments of art!” When the kids ask why the school was closed down and demolished, he responds, “Because I was wrong. About both human nature and technology.” We don’t learn what he means by this.

Back home, we discover that Hopper has stolen a miniature turtle robot from Mr. Bee. She programs it to complete her Chinese writing homework. The next day, her mom sees the uniformity of the final product and sends her to principal’s office for cheating. The principal observes that a machine assisted in the homework, taking on a creepy and uncharacteristic warmth when he asks her if she used a robot. Hopper doesn’t trust him and admits to nothing. The principal assigns her several more weeks of trash duty with Mr. Bee, which at this point is not a punishment.

Josh and Eni join Hopper in her duties during lunchtime, and Mr. Bee teaches them about variables. They program a rectangular spiral and never do get around to taking out the trash. Mr. Bee says, “Robots are much better at those sorts of precise, repetitive tasks.” Hopper tactlessly applies this same argument in her discussion with her mother about Chinese homework. At basketball practice, she is cut from the team. She runs from the gym in tears, and Josh and Eni follow to comfort her. But then the rugby team shows up, and they appear to be hungry for human flesh.

The three heroes code up a quick spiral program on the turtle in Eni’s backpack, which ties the rugby players up in a hose. But more players come and nab the turtle, for which the principal had apparently been looking. For their efforts, the players will apparently get new rugby uniforms.

The next day, Mr. Bee teaches them about random numbers, which they use to draw wild square art. The kids hide the fact that their robot was stolen from them. Eni and Josh crush the competition at their basketball game, and afterward, Eni skips out on meeting with a high school recruiter to be with his friends. Josh and Hopper put aside their differences when Josh presents all three of them with “Coders” jerseys. Their numbers are in binary, and Hopper is 0111.

After an awkward kiss on the cheek, sounds of rugby players are heard. The three hide and watch the principal and rugby team march by carrying a tied-up Mr. Bee. They head to the underground turtle storage, and the principal demands to get his hands on the most powerful turtle, but we do not learn the reason. Instead, the book ends with Eni telling the reader to compose a program that will make the robot move and turn randomly to thwart the principal and rugby players.

Themes

The central message of the book is that learning how to program is the one superpower that you can sign up for. The narrative of the book is sprinkled with nods to the transformation that Eni and Hopper are going through as they write code for the turtle. When they first find it, Hopper annotates, “This is where we started changing into what we’d eventually become.”

The novel does not stop at just declaring the idea that programming is a power that can be acquired; it aims to help the reader acquire it. Most of the challenges that Hopper and Eni face are given first to the reader, who is encouraged to overcome them before Hopper and Eni do. The chapters and even the entire book conveniently end in the middle of these dilemmas to give the reader a natural disruption point. Instead of solving the problems, however, my oldest son just continued reading, as did I. Sadly, the author is trying to do what I have often tried to do as an educator: add interactivity to a medium that doesn’t support interactivity. I’m usually disappointed by my attempts, and I don’t think Secret Coders fares much better. An accompanying website may someday fix this situation, but it currently has little interactive content.

This first book paints a dismal portrait of formal education. Hopper loathes her classes. All the interesting things that Hopper and Eni learn happen on their own with the robot. This theme is consistent with the feelings of Logo designer Seymour Papert. Papert advocated for constructionism, the theory that we learn best when we build things that can be perceived by others. The student vs. school theme loosens a bit at the end, when Mr. Bee starts to open up.

Conclusion

Secret Coders is a book whose impact is hard for me to judge. I am filled with pro-Logo bias and many years of computer science experience. I am in the choir and it preached to me. I have no way to judge if it succeeds in its mission of sparking in its readers a taste for programming. I certainly enjoyed the book, especially the binary-eyed birds, but my enjoyment probably stems from my familiarity with its ideas and support of its goals.

When it really comes down to it, however, I think that pedagogic perfection is less important to inspiring the young than observable passion in the teacher. (As if we had to choose.) Yang certainly demonstrates that passion, and I think this book is one of many tools coming around that will help us return to and surpass the educational brilliance of the 1980s. Bring on the series, Gene and Mike.