gatsbyjs_charlieharrington.com.rss.xml - sfeed_tests - sfeed tests and RSS and Atom files
(HTM) git clone git://git.codemadness.org/sfeed_tests
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
gatsbyjs_charlieharrington.com.rss.xml (944142B)
---
1 <?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Charlie Harrington]]></title><description><![CDATA[Blog of Charlie Harrington - writer and software engineer]]></description><link>https://www.charlieharrington.com</link><generator>GatsbyJS</generator><lastBuildDate>Mon, 26 Jul 2021 19:00:55 GMT</lastBuildDate><item><title><![CDATA[Smart Phone, Dumb Terminal]]></title><description><![CDATA[I'm typing this post on my iPhone in the Obsidian iOS app using a Logitech K380 Bluetooth keyboard and I feel like a 90s computer hacker…]]></description><link>https://www.charlieharrington.com/smart-phone-dumb-terminal</link><guid isPermaLink="false">https://www.charlieharrington.com/smart-phone-dumb-terminal</guid><pubDate>Sun, 25 Jul 2021 00:00:00 GMT</pubDate><content:encoded><p>I'm typing this post on my iPhone in the <a href="https://obsidian.md">Obsidian iOS app</a> using a <a href="https://amzn.to/3rAZfjc">Logitech K380 Bluetooth keyboard</a> and I feel like a 90s computer hacker.</p>
2 <p>Not enough? How about this: I just SSH'ed into a <a href="https://amzn.to/3zE2AkE">Raspberry Pi</a> on my home network using <a href="https://tailscale.com">Tailscale</a> via the <a href="https://termius.com">Termius</a> iOS app to restart a <a href="/flow-and-creative-computing">YouTube-playlist-to-podcast-feed Docker container</a>. </p>
3 <p>Don't get me wrong -- the other stuff is pretty magical, too, especially Tailscale. But this keyboard-to-phone takes the cake.</p>
4 <p>I mean, look at this:</p>
5 <p><span
6 class="gatsby-resp-image-wrapper"
7 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
8 >
9 <a
10 class="gatsby-resp-image-link"
11 href="/static/2930c3a3aa4bf3462b52044555a24d56/cd3e9/keyboard.jpg"
12 style="display: block"
13 target="_blank"
14 rel="noopener"
15 >
16 <span
17 class="gatsby-resp-image-background-image"
18 style="padding-bottom: 74.23312883435584%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEBf/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/aAAwDAQACEAMQAAABfFMjLvmGF//EABkQAAIDAQAAAAAAAAAAAAAAAAECABIiA//aAAgBAQABBQLEvlCGV3sbiL2ZB//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAEDAQE/Aar/xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQIBAT8BjL//xAAZEAACAwEAAAAAAAAAAAAAAAABEQAQEjH/2gAIAQEABj8CO1ymI6Qn/8QAGhABAQEBAQEBAAAAAAAAAAAAAREAMSFRcf/aAAgBAQABPyFgtHF+4PTERwpvHUH5d+jmHG3f/9oADAMBAAIAAwAAABC03//EABcRAQADAAAAAAAAAAAAAAAAAAARITH/2gAIAQMBAT8QriD/xAAXEQEAAwAAAAAAAAAAAAAAAAAAESEx/9oACAECAQE/EL6k/8QAHBABAAICAwEAAAAAAAAAAAAAAQARIUExUWGx/9oACAEBAAE/EEABL4oqokB21mWmg1EU+BxiJtFnhGgpqjq5/9k='); background-size: cover; display: block;"
19 ></span>
20 <img
21 class="gatsby-resp-image-image"
22 alt="Dumb terminal smart phone"
23 title="Dumb terminal smart phone"
24 src="/static/2930c3a3aa4bf3462b52044555a24d56/6aca1/keyboard.jpg"
25 srcset="/static/2930c3a3aa4bf3462b52044555a24d56/d2f63/keyboard.jpg 163w,
26 /static/2930c3a3aa4bf3462b52044555a24d56/c989d/keyboard.jpg 325w,
27 /static/2930c3a3aa4bf3462b52044555a24d56/6aca1/keyboard.jpg 650w,
28 /static/2930c3a3aa4bf3462b52044555a24d56/7c09c/keyboard.jpg 975w,
29 /static/2930c3a3aa4bf3462b52044555a24d56/01ab0/keyboard.jpg 1300w,
30 /static/2930c3a3aa4bf3462b52044555a24d56/cd3e9/keyboard.jpg 2820w"
31 sizes="(max-width: 650px) 100vw, 650px"
32 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
33 loading="lazy"
34 />
35 </a>
36 </span></p>
37 <p>It's downright cute, aside from the legs.</p>
38 <p>You kinda forget that your phone is a computer, personally-speaking. Instead, it's usually just a vehicle for social media nightmares. Given the choice between doing something semi-arduous, like checking in for a flight, on a phone app vs the website (on a desktop/laptop), I always choose the latter. Somethings always missing from the app, and if you really want to get all fiddly, which I usually do, they kick you out to a crappy webview anyway.</p>
39 <p>So, I'm usually a laptop-bringer on any trip. Except, this time, I didn't want to. Firstly, my alu-min-i-um portable computer is just plain heavy and bulky, and I was adamant that we were going carry-on only on this voyage. Even more damning, I recently discovered that opening the laptop screen beyond 45 degrees results in the black screen of death. That's something for the Geniuses, if they're willing indulge an admittedly long in the tooth 2016 MBP (I'm doubtful).</p>
40 <p>But I did want to be able to work on edits for my book on this trip. You never know when inspirations gonna strike (usually, for me, around midnight, when I've already gone to bed), and while I'm reasonably fast thumb-typist, I just don't feel the flow feels on the phone keyboard.</p>
41 <p>Luckily, we had this little Bluetooth cutie tucked away in a closet. I'd purchased it as a gift for Carly, so that she could write stuff on the go (very much the same need I'm talking about here). We'd extensively discussed the need for a mobile keyboard writing thingie early in our courtship, and we even entertained the idea of building it ourselves (hint: I'm still entertaining this idea). </p>
42 <p>We're not alone. See the <a href="https://getfreewrite.com/products/freewrite-smart-typewriter">FreeWrite</a> products, which somehow don't quite fit the bill for me, despite almost exactly delivering on our dream product (full-sized keyboard, e-ink-like screen, and supreme battery life). Mostly it's the calculator-sized screen (and the perceived bulky size) that's scaring me away. We want something that you can keep in a purse or a pocket.</p>
43 <p>Now this Bluetooth keyboard doesn't fit in a pocket, but it's also pretty darn cheap, enough so that I'm not going to be devastated if I lose it or spill a beer on it.</p>
44 <p>So, I thought I'd give it a try this trip. And I'm sold. It's legit fun to type on this thing and I think I'm going to bring it with me more places. Along with things like Tailscale and Termius, I can treat my smart phone as a dumb terminal to my real computers.</p>
45 <p>Carly still hasn't given the keyboard a try, but I'm holding out hope. She's watching me tap-tap away right now, and I think this is a gift that just takes a while to kick in.</p>
46 <p>And, meanwhile, I'm going to keep thinking about keyboards-as-computers, whether that's scouring eBay for Commodore VIC-20s, ogling over the latest <a href="https://amzn.to/3749iE0">Raspberry Pi 400</a> keyboard-computer, or sketching out our still-yet-to-be-realized "Kindle for writing." </p>
47 <p>On the latter item, I'm also ogling the <a href="https://remarkable.com">ReMarkable 2</a> as an potential winning entrant, but the lack of keyboard and the lack of backlight are keeping me away... for now. If they're tracking dropped cart analytics at all, I'm just going to apologize now for what I've been doing. You can keep retargeting me if you'd like. You'll get me one day. </p></content:encoded></item><item><title><![CDATA[Writes With]]></title><description><![CDATA[Earlier today, I texted some friends that I regret using Gatsby for this blog. It came at a moment of frustration, when I was stuck in some…]]></description><link>https://www.charlieharrington.com/writes-with</link><guid isPermaLink="false">https://www.charlieharrington.com/writes-with</guid><pubDate>Thu, 24 Jun 2021 00:00:00 GMT</pubDate><content:encoded><p>Earlier today, I texted some friends that I regret using <a href="https://www.gatsbyjs.com/">Gatsby</a> for this blog. It came at a moment of frustration, when I was stuck in some weird Node dependencies hell and all I wanted was to write another blog post.</p>
48 <p>If your static site generator does nothing else, it should make it frictionless to write a new blog post. It's hard enough to make the time to write, your software shouldn't be making it harder. </p>
49 <p>Why did I use Gatsby in the first place? Well, it was new and shiny and uses GraphQL. That's enough, right? Really, at the time, I had these grand ambitions of interactive React components within my posts, which I knew would be possible, and possibly easy, with a React-based static site generator. To this date, I've written exactly <a href="/pseudoclassical-star-wars">one</a> of these interactive posts, and that was <em>before</em> I made the Gatsby-switch and I still have never actually ported it from my original Pelicon static site. This post used to have all these Tie Fighters flying around and now it doesn't and I'm still a little bummed about it. If any of that intrigues you, my little Star Wars game is still <a href="https://whatrocks.github.io/aluminum-falcon/">online</a> - it's one of the first things I ever made when I learned how to program.</p>
50 <p>So, anyway, why not switch away from Gatsby? Am I using any of the advanced features of Gatsby? Yes, I am. There's an active plugin ecosystem and I use a bunch of them for things like generating my RSS feed or rendering images or displaying my library or my Instagram posts. But I've realized that some of these, especially the ones that leverage external APIs like the Instagram one, are more trouble than they're worth.</p>
51 <p>With the Instagram plugin/API, all I want to do is <a href="/walkingman">display a neat little grid of all the "walking man" street signs I've discovered</a> and posted to Instagram. But, like all Web 2.0 API platforms, Instagram's API usefulness was continually walked back until it's virtually impossible to do basic things like display your photos (because they want to keep all these useful actions within their own platform/app), and I'm now forced to create a "test account" on a Facebook "app" with a temporary token that expires like every 30 days or something. Now, every time I go to write a new post here, which is usually > 30 days, I can't even build my blog locally because the Gatsby build process fails from the expired Instagram token. I want to blame Instagram here, or Gatsby, but instead, I blame myself. </p>
52 <p>Keep your friends close, and your blog's dependencies closer.</p>
53 <h2>A simpler static site generator</h2>
54 <p>Here's where I announce that I've written a new, <em>better</em>, static site generator, the fourth step in the hero's journey of software engineering.</p>
55 <p>But, nope. Instead, I'm just gonna use the one that my pal <a href="https://benreinhart.com">Ben</a> created. It's called <a href="https://benreinhart.com/syte">Syte</a>. It's extremely lightweight, fast, and does exactly what I really want -- render Markdown files in an HTML template.</p>
56 <p>So, have I switched my blog over to Syte yet? Not yet. But I'm gonna. The main thing that's missing (for me) in Syte is RSS feed generation. I'd like to contribute that back to Ben's repo at some point. I can probably live without the rest of the junk I've bolted onto this site. It may mean that I temporarily dismantle my cool, query-param powered <a href="/library">library searching page</a>, but that's a worthy price to pay for being able to write a blog post exactly when I want to, no questions asked.</p>
57 <p>My inability to bear the blog switching costs at this moment isn't going to stop me from another time-waster of a side project: a new interview site, using Syte, that asks writers about the stuff they use to write, edit, and otherwise create their books!</p>
58 <h2>Writes With</h2>
59 <p><span
60 class="gatsby-resp-image-wrapper"
61 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
62 >
63 <a
64 class="gatsby-resp-image-link"
65 href="/static/30ee63ed397c74175268fd0d8f7dea20/136a2/writeswith.png"
66 style="display: block"
67 target="_blank"
68 rel="noopener"
69 >
70 <span
71 class="gatsby-resp-image-background-image"
72 style="padding-bottom: 15.950920245398773%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA40lEQVQI1xWOu0oDYRBG/1J8gfgOttbp8gRCQIi9jWUw+ARqIWpUQkSsRAi4guIahSgGLYTgJfGyaBQtBBXsrHZm9jgpBmbOd2C+kP4m6P0a2q2hN8vo4zry0UR7VfRuznkVedpEH2qkXx3kbc/Zqrsr7jjvLqC3i8h77FlMkM82bASoD2NRHraGsP0C1ixhJ5NkjVHssEi2M4IkEXZahKXg9xh2NOEzjh2XyLZzWGuKkP59oxcV9LqOPEe+z6Idb9kffGyhlzPo1Tx2Pk3603fuzlkZefE82fU5QF5jdwYt2/wDdUbEzGmfEq8AAAAASUVORK5CYII='); background-size: cover; display: block;"
73 ></span>
74 <img
75 class="gatsby-resp-image-image"
76 alt="Writes With logo"
77 title="Writes With logo"
78 src="/static/30ee63ed397c74175268fd0d8f7dea20/a6d36/writeswith.png"
79 srcset="/static/30ee63ed397c74175268fd0d8f7dea20/222b7/writeswith.png 163w,
80 /static/30ee63ed397c74175268fd0d8f7dea20/ff46a/writeswith.png 325w,
81 /static/30ee63ed397c74175268fd0d8f7dea20/a6d36/writeswith.png 650w,
82 /static/30ee63ed397c74175268fd0d8f7dea20/136a2/writeswith.png 884w"
83 sizes="(max-width: 650px) 100vw, 650px"
84 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
85 loading="lazy"
86 />
87 </a>
88 </span></p>
89 <p>The <a href="https://writeswith">Writes With</a> syte is already live, with two interviews: <a href="https://writeswith.com/interviews/brian-dear/">Brian Dear</a>, author of <strong>The Friendly Orange Glow: The Untold Story of the PLATO System and the Dawn of Cyberculture</strong>, and <a href="https://writeswith.com/interviews/pooja-reddy/">Pooja Reddy</a>, author of <strong>The Big Bold Blue</strong>.</p>
90 <p>Making it was a joy with Syte and I'm happy with it, even if my "design" is still pretty bare bones. I also deployed it with <a href="https://pages.cloudflare.com/">Cloudflare Pages</a>, which mostly importantly comes with (at least for now) free bandwidth. This blog uses Netlify for hosting, which I do like, but occasionally suffer from bandwidth spikes near the end of the monthly billing cycles that trigger their bandwidth "add-ons" fees.</p>
91 <p>Writes With is directly, clearly, obviously, duh inspired by one of my favorite websites: <a href="https://usesthis.com">usesthis.com</a>. In fact, I chatted with Daniel of usesthis.com before launching it, just to make sure he was okay with it, and he gave the thumbs up.</p>
92 <p>I like this little project, because I'm going to get to talk with more people who've published books. As a cub writer myself, I'm happy for any tips and tricks I can get.</p>
93 <p>And I know, I know, the tools aren't the important thing about writing... but I think we all still want to know about them.</p></content:encoded></item><item><title><![CDATA[Computers by the Decade]]></title><description><![CDATA[I've been doing a lot of research into the history of computers1 for my forthcoming Middle Grade novel about robots (as of March 2021, I'm…]]></description><link>https://www.charlieharrington.com/computers-by-the-decade</link><guid isPermaLink="false">https://www.charlieharrington.com/computers-by-the-decade</guid><pubDate>Wed, 31 Mar 2021 00:00:00 GMT</pubDate><content:encoded><p>I've been doing a lot of research into the <a href="/library?topic=Computer%20History">history of computers</a><sup>1</sup> for my <a href="/books">forthcoming Middle Grade novel about robots</a> (as of March 2021, I'm linking to a largely blank page here, which I assure you will one day be filled with the multitude of books I'm going to write - end <em>Daily Affirmation</em> now).</p>
94 <p>I'd like to share my current, wait for it, mental model for how I'm thinking about the evolution of computing over the decades. I'll also highlight some current companies that I find interesting because they seem to be fellow computer historians.</p>
95 <p>First, a caveat canem: 🐶 Since this website is my little corner of the dub-dub-dub, I reserve the right to update this framework as I learn more. And I will be learning more, because I can't stop reading about this stuff. I love it. So, there, take that, fellow computer historians! Even better, please let me know what I've messed up or got wrong so I can learn. Woof!</p>
96 <p>So, here's how I see the evolution of computers over the decades (including some predictions): </p>
97 <table>
98 <thead>
99 <tr>
100 <th align="left">Decade</th>
101 <th align="left">Computers</th>
102 </tr>
103 </thead>
104 <tbody>
105 <tr>
106 <td align="left">1940s</td>
107 <td align="left">Analog</td>
108 </tr>
109 <tr>
110 <td align="left">1950s</td>
111 <td align="left">Digital</td>
112 </tr>
113 <tr>
114 <td align="left">1960s</td>
115 <td align="left">Warehouse</td>
116 </tr>
117 <tr>
118 <td align="left">1970s</td>
119 <td align="left">Mini</td>
120 </tr>
121 <tr>
122 <td align="left">1980s</td>
123 <td align="left">8-Bit PC</td>
124 </tr>
125 <tr>
126 <td align="left">1990s</td>
127 <td align="left">Pentium PC</td>
128 </tr>
129 <tr>
130 <td align="left">2000s</td>
131 <td align="left">Laptop</td>
132 </tr>
133 <tr>
134 <td align="left">2010s</td>
135 <td align="left">Smart Phones</td>
136 </tr>
137 <tr>
138 <td align="left">2020s</td>
139 <td align="left">Wearables</td>
140 </tr>
141 <tr>
142 <td align="left">2030s</td>
143 <td align="left">Embeddables</td>
144 </tr>
145 </tbody>
146 </table>
147 <p>Lemme recap these a bit (in a freewheeling manner). We see the first "stored-program" digital computers coming to life in the late 40s. These are your o.g. "Von Neumann" architecture machines, the real-world implementations of the universal Turing machine vision from 1936. Goodbye, Vannevar Bush's Differential Analyzer -- we've now got computers that we can "re-wire" themselves with "code" instead of electromechanical widgets and whatnot that had to be manually reconfigured for different problems (usually military applications around this time, like calculating missile trajectories).</p>
148 <p>Then comes the era of the ominious Warehouse computer, dominated by Big Blue (IBM) and the angry BUNCH (Burroughs, UNIVAC, NCR, Control Data Corporation, and Honeywell) -- aka the FAANG of days of computer future past. Computers were huge, literally, during the 60s and 70s. Actual insects would get lodged inside them and wreak havoc -- "bugs"! This was also around the time that people thought there might only need to be a handful of computers in the whole wide world -- that computers would be a public utility like telephone service. </p>
149 <p>Along related lines, this is where folks started experimenting with "computer networking." Let's layer that strand into our decades framework:</p>
150 <table>
151 <thead>
152 <tr>
153 <th align="left">Decade</th>
154 <th align="left">Computers</th>
155 <th align="left">Networking</th>
156 </tr>
157 </thead>
158 <tbody>
159 <tr>
160 <td align="left">1940s</td>
161 <td align="left">Analog</td>
162 <td align="left">N/A</td>
163 </tr>
164 <tr>
165 <td align="left">1950s</td>
166 <td align="left">Digital</td>
167 <td align="left">N/A</td>
168 </tr>
169 <tr>
170 <td align="left">1960s</td>
171 <td align="left">Warehouse</td>
172 <td align="left">Timeshare</td>
173 </tr>
174 <tr>
175 <td align="left">1970s</td>
176 <td align="left">Mini</td>
177 <td align="left">ARPANET</td>
178 </tr>
179 <tr>
180 <td align="left">1980s</td>
181 <td align="left">8-Bit PC</td>
182 <td align="left">Internet</td>
183 </tr>
184 <tr>
185 <td align="left">1990s</td>
186 <td align="left">Pentium PC</td>
187 <td align="left">WWW</td>
188 </tr>
189 <tr>
190 <td align="left">2000s</td>
191 <td align="left">Laptop</td>
192 <td align="left">Web 2.0</td>
193 </tr>
194 <tr>
195 <td align="left">2010s</td>
196 <td align="left">Smart Phones</td>
197 <td align="left">Apps</td>
198 </tr>
199 <tr>
200 <td align="left">2020s</td>
201 <td align="left">Wearables</td>
202 <td align="left">TBD</td>
203 </tr>
204 <tr>
205 <td align="left">2030s</td>
206 <td align="left">Embeddables</td>
207 <td align="left">TBD</td>
208 </tr>
209 </tbody>
210 </table>
211 <p>Timesharing. You've probably heard of it before. Essentially, the few people lucky enough to have access to these machines would sit at "dumb" Teletype terminals and their commands would be executed in some mainframe somewhere else (usually their university). You didn't have to own a computer to use one, you just needed to pay for access (sounds a lot like "cloud computing" nowadays, right? Time is a flat circle). It wasn't just all university-work. Games were being created and shared, and projects like <a href="https://en.wikipedia.org/wiki/PLATO_(computer_system)">PLATO</a> at University of Illinois were doing interactive things that seem impossible for their era:</p>
212 <p><span
213 class="gatsby-resp-image-wrapper"
214 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 624px; "
215 >
216 <span
217 class="gatsby-resp-image-background-image"
218 style="padding-bottom: 76.68711656441718%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAEA/9oADAMBAAIQAxAAAAHHTUAn/8QAFhABAQEAAAAAAAAAAAAAAAAAARAh/9oACAEBAAEFAijk/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGBAAAgMAAAAAAAAAAAAAAAAAABABIUH/2gAIAQEABj8CMU0//8QAGhABAAIDAQAAAAAAAAAAAAAAAQARECFBUf/aAAgBAQABPyEFNzWABIb95Ndx/9oADAMBAAIAAwAAABDr7//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EAB0QAAIBBAMAAAAAAAAAAAAAAAERACExQWFxgZH/2gAIAQEAAT8QMIAQzHmPBhTx1DGIAiz4RmBU9Shtbc//2Q=='); background-size: cover; display: block;"
219 ></span>
220 <img
221 class="gatsby-resp-image-image"
222 alt="PLATO"
223 title="PLATO"
224 src="/static/097d01671bc699ec3e60eca532367731/a3695/plato.jpg"
225 srcset="/static/097d01671bc699ec3e60eca532367731/d2f63/plato.jpg 163w,
226 /static/097d01671bc699ec3e60eca532367731/c989d/plato.jpg 325w,
227 /static/097d01671bc699ec3e60eca532367731/a3695/plato.jpg 624w"
228 sizes="(max-width: 624px) 100vw, 624px"
229 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
230 loading="lazy"
231 />
232 </span></p>
233 <p>Take a look at the rows for 80s and 90s - you're basically looking at Halt and Catch Fire season by season.<sup>2</sup> Personal computers. The World Wide Web. AOL Instant Messager. This is where things start hitting hard on the nostalgia receptors for me. I'll never forget the early `90s Christmas where we got our SoundBlaster 16 sound card. Carmen Sandiego never sounded so good.</p>
234 <p>Let's fast-forward to the new millenium. Frankly, I'm increasingly less interested in the more recent eras of apps and smart phones. Even my predictions are boring to me. I don't have an Apple Watch. I know "AR" is coming (see recent WWDC teaser). I know we're going to be able to read brainwaves of pigs soon (or already are). I should probably keep more of an open mind about these upcoming technologies, so I'll try. But the history major in me just wants to go back and play with <a href="/my-new-old-apple-iie-computer">my Apple IIe</a>.</p>
235 <p>When I think about it, there's tons of additional "strands" that could and should be tracked in this framework. For example, the evolution of memory type and memory capacity over time is super fascinating, and probably is the number one driver of the changes in the "computers" column.</p>
236 <p>Or another idea, even closer to my heart, would be adding the "definitive" book that should be read for each era. Actually, let me try that one.</p>
237 <table>
238 <thead>
239 <tr>
240 <th align="left">Decade</th>
241 <th align="left">Computers</th>
242 <th align="left">Networking</th>
243 <th align="left">Book</th>
244 </tr>
245 </thead>
246 <tbody>
247 <tr>
248 <td align="left">1940s</td>
249 <td align="left">Analog</td>
250 <td align="left">N/A</td>
251 <td align="left"></td>
252 </tr>
253 <tr>
254 <td align="left">1950s</td>
255 <td align="left">Digital</td>
256 <td align="left">N/A</td>
257 <td align="left"><a href="https://amzn.to/3eD3yq3">Turing's Cathedral</a></td>
258 </tr>
259 <tr>
260 <td align="left">1960s</td>
261 <td align="left">Warehouse</td>
262 <td align="left">Timeshare</td>
263 <td align="left"><a href="https://amzn.to/3m8jiD3">The Friendly Orange Glow</a></td>
264 </tr>
265 <tr>
266 <td align="left">1970s</td>
267 <td align="left">Mini</td>
268 <td align="left">ARPANET</td>
269 <td align="left"><a href="https://amzn.to/3e32kUB">The Soul of a New Machine</a></td>
270 </tr>
271 <tr>
272 <td align="left">1980s</td>
273 <td align="left">8-Bit PC</td>
274 <td align="left">Internet</td>
275 <td align="left"><a href="https://amzn.to/3kEztas">Return to the Little Kingdom</a></td>
276 </tr>
277 <tr>
278 <td align="left">1990s</td>
279 <td align="left">Pentium PC</td>
280 <td align="left">WWW</td>
281 <td align="left"><a href="https://amzn.to/3u5aTD4">Hard Drive</a></td>
282 </tr>
283 <tr>
284 <td align="left">2000s</td>
285 <td align="left">Laptop</td>
286 <td align="left">Web 2.0</td>
287 <td align="left"></td>
288 </tr>
289 <tr>
290 <td align="left">2010s</td>
291 <td align="left">Smart Phones</td>
292 <td align="left">Apps</td>
293 <td align="left"></td>
294 </tr>
295 <tr>
296 <td align="left">2020s</td>
297 <td align="left">Wearables</td>
298 <td align="left">TBD</td>
299 <td align="left"></td>
300 </tr>
301 <tr>
302 <td align="left">2030s</td>
303 <td align="left">Embeddables</td>
304 <td align="left">TBD</td>
305 <td align="left"></td>
306 </tr>
307 </tbody>
308 </table>
309 <p>I need some suggestions for the more recent eras!</p>
310 <h3>Three Companies That Seem to Also Appreciate Computer History</h3>
311 <p>Okay, onto the best part...</p>
312 <h4>Replit</h4>
313 <p><a href="http://replit.com/">Replit</a> is a company that makes it easy to spin up an IDE in any language, right in your browser. Goodbye painful local dev environment setup. Students LOVE it. Teachers LOVE it. School administrators apparently DON'T LOVE it (according to what I've seen on Twitter).</p>
314 <p>So, what does Replit know about computer history?</p>
315 <p>They are the modern timesharing system - global, instant access to compute, with collaboration as first-class objective. It's a place to learn, play games, write your own games, build apps, ship stuff. They're even talking about building their own hardware "dumb" terminal that connects instantly to Replit. </p>
316 <blockquote class="twitter-tweet"><p lang="en" dir="ltr">We&#39;re prototyping a computer that boots to Replit and is hardwired with a VPN to make it impossible to block.<br><br>If it works, it will be free for students. Devs will pay full price with each computer sold will sponsor a student. <a href="https://t.co/8cQdhJqvFv">https://t.co/8cQdhJqvFv</a> <a href="https://t.co/Qu1eTYYa1x">pic.twitter.com/Qu1eTYYa1x</a></p>&mdash; Amjad Masad ⠕ (@amasad) <a href="https://twitter.com/amasad/status/1373065904678789121?ref_src=twsrc%5Etfw">March 20, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
317 <p>Timesharing is back. And this time you don't have to share, unless you want to!</p>
318 <h4>Tailscale</h4>
319 <p><a href="https://tailscale.com/">Tailscale</a> is a company that makes it dead simple to set up a VPN for all your devices: phones, Raspberry Pis, laptops, desktops, you name it.</p>
320 <p>So, what does Tailscale know about computer history?</p>
321 <p>They are making the 90s-LAN party possible again. It was a beautiful thing when you could "easily" make your computers talk to each other, but then the Internet got scary and hard, and Tailscale makes it safe and easy again. </p>
322 <p>I recently used Tailscale to set up a little Raspberry Pi-powered robot car. I can SSH into my little robot and drive it around, and I'm feeling like a kid again.</p>
323 <p><span
324 class="gatsby-resp-image-wrapper"
325 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
326 >
327 <span
328 class="gatsby-resp-image-background-image"
329 style="padding-bottom: 151.53374233128832%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAeABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQBAgMF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgEA/9oADAMBAAIQAxAAAAHBpW0sjYjXSFwuYNi3/8QAHRAAAgICAwEAAAAAAAAAAAAAAQIAAxETEiEiMv/aAAgBAQABBQL2i1fGnq2xSErs4krEVUgy0arBxN+s7Wn/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAeEAABBAEFAAAAAAAAAAAAAAAAAQIRITEQEiKBkf/aAAgBAQAGPwLOR+nBoquXaU5vpQpmOiVIgpyn/8QAHRABAAMAAwADAAAAAAAAAAAAAQARIUFRYXGB0f/aAAgBAQABPyFN2PMZY/MLBUuvf2FBFE+5i8Ba7KiK4XSA53vmY/FS1FPphxgyqJvtxVul6E//2gAMAwEAAgADAAAAEBcTvf/EABgRAAIDAAAAAAAAAAAAAAAAAAABECFR/9oACAEDAQE/EIZWH//EABkRAQACAwAAAAAAAAAAAAAAAAABIRExUf/aAAgBAgEBPxDC0bX1/8QAHhABAQEBAQABBQAAAAAAAAAAAREAITFBcYGRofD/2gAIAQEAAT8QCwCKIbwdzBQf0XAlEFUTkn93VjyTeRLGWzjjrAA/p3uCeufZjRXqT4aTIBD2yfRPjI84K0IhkpV7EP4c2rOg5N//2Q=='); background-size: cover; display: block;"
330 ></span>
331 <img
332 class="gatsby-resp-image-image"
333 alt="car"
334 title="car"
335 src="/static/73bec978c3721efeb640ee7c9b4bae90/6aca1/car.jpg"
336 srcset="/static/73bec978c3721efeb640ee7c9b4bae90/d2f63/car.jpg 163w,
337 /static/73bec978c3721efeb640ee7c9b4bae90/c989d/car.jpg 325w,
338 /static/73bec978c3721efeb640ee7c9b4bae90/6aca1/car.jpg 650w,
339 /static/73bec978c3721efeb640ee7c9b4bae90/7c09c/car.jpg 975w,
340 /static/73bec978c3721efeb640ee7c9b4bae90/ec605/car.jpg 1125w"
341 sizes="(max-width: 650px) 100vw, 650px"
342 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
343 loading="lazy"
344 />
345 </span></p>
346 <h4>Oxide Computer Company</h4>
347 <p><a href="https://oxide.computer/">Oxide Computer Company</a> is a new computer company. Like hardware-hardware computer company! They're building servers for folks who don't want to (or can't) just use AWS, GCP, Azure, Digital Ocean, blah blah... the cloud.</p>
348 <p>So, what does Oxide know about computer history?</p>
349 <p>More than me! Just listen to their epic <a href="https://oxide.computer/podcast/">podcast On the Metal</a> to hear for yourself. They even went through a fun design project of <a href="https://oxide.computer/blog/retro-logos-project-60s/">redesigning their logo to look like definitive computer companies of days past.</a>.</p>
350 <p>But most importantly I think that Oxide harkens back to the `90s era of owning your compute infra end-to-end. We do not have to accept that everything will be in the cloud. Maybe your closet is a better choice. Tradeoffs, amiright? There are going to be even more cases in the future where local compute is needed (e.g. how about the Moon or Mars?!)</p>
351 <h3>Computer historian</h3>
352 <p>In conclusion:</p>
353 <p>By trade, I'm a software engineer. By spirit, I'm a computer historian. By George, I'm trying to combine the two (just like these three companies).</p>
354 <h4>Footnotes</h4>
355 <ol>
356 <li>I'm kinda showing off something neat with this link -- linkable searching using query-params for my <a href="/library">Library book list</a>. I'm proud of this lil' quality of life feature for my site. If you're one of those people who like to strip query params from links, by all means do so, but if you want to share a <a href="/library?topic=Ancient%20Rome">list of the books I've read about Ancient Rome</a> (why would you want to do this if you're not me?), keep 'em in the link.</li>
357 <li>Watch this show. If you love computers, watch this show. If you love great characters making terrible decisions, watch this show. And then watch it again using this <a href="https://bits.ashleyblewer.com/halt-and-catch-fire-syllabus/">college-course level syllabus by Ashley Blewer</a>.</li>
358 </ol></content:encoded></item><item><title><![CDATA[Notes on My Chemotherapy]]></title><description><![CDATA[Nobody likes an addendum. Appendices are great (ask any Tolkien fan). P.S.'s are the best (especially if they're from a penpal). But…]]></description><link>https://www.charlieharrington.com/chemotherapy</link><guid isPermaLink="false">https://www.charlieharrington.com/chemotherapy</guid><pubDate>Thu, 04 Feb 2021 00:00:00 GMT</pubDate><content:encoded><p>Nobody likes an addendum.</p>
359 <p>Appendices are great (ask any Tolkien fan). P.S.'s are <em>the best</em> (especially if they're from a penpal).</p>
360 <p>But addendums. Nope. They change the rules, after you've started playing. After the game's over, even.</p>
361 <p>I recently got dropped with this whopper of an addendum:</p>
362 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">Orcein stains performed on blocks A3 and A5 highlight elastic fibers
363 wrapping around nests of tumor cells, consistent with vascular invasion</code></pre></div>
364 <h2>A lil' background</h2>
365 <p>Previously, on "Halt and Catch Cancer", I thought I was in the clear. Sure, I'd been <a href="/colon-cancer">diagnosed with Stage II colon cancer at age 34</a>. But the neato robotic surgery to remove my sigmoid colon (and my grisly barnacle of a tumor) was successful, with no signs of the cancer spreading to the nearby lymph nodes (which are essentially the Information Superhighway of your body's immune system).</p>
366 <p>Officially, we're talking a PT3N0 pathology, where N means the number of lymph nodes with tumor cells (zero, in my case, of the 21 that were removed and inspected) and T means the levels of colon wall that the tumor "broke through." N0 is awesome and T3 is not-so-awesome. My tumor was pretty darn close to breaking through the colon wall. But the fact that I had no lymph nodes affected was a good sign -- a good enough sign that no chemotheraphy was being recommended by my USCF doctor crew.</p>
367 <p>Now, after my blog post on this whole "cancer sitch," I'd been in touch with friends and other wood-workers who were, unfortunately, familiar with this process. One, in particular, has been highly tuned into the research and literature around colon cancer, and he pushed me to make sure I fully understood my pathology. He also mentioned that he's seen folks with my PT3N0 pathology do chemotherapy on a preventative basis. Given that my big missive in my last post was about "becoming your own health advocate," his advice hit hard, because I was already lapsing in my attentiveness. Frankly, I was exhausted from the surgery, relieved by the results, ready to move on, and the pathology report itself was confusing af.</p>
368 <p>Actually, you know what? I'm just going to paste it here:</p>
369 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">FINAL PATHOLOGIC DIAGNOSIS
370 Sigmoid colon, sigmoid colectomy:
371 1. Adenocarcinoma, moderately-differentiated, invasive through
372 muscularis propria into pericolic adipose tissue, negative margins; see
373 comment.
374 2. No tumor in twenty-one lymph nodes (0/21).
375 COMMENT:
376 COLON CARCINOMA SYNOPTIC COMMENT
377 - Procedure: Sigmoid colectomy.
378 Result Information
379 All Reviewers List
380 Pathology PDF Report
381 Narrative &amp; Impression
382 Harrington, Charles
383 - Location of tumor: Sigmoid colon.
384 - Tumor size: 3.3 x 2.5 x 1 cm.
385 - Macroscopic tumor perforation: Not identified.
386 - Histologic Type: Adenocarcinoma.
387 - Histologic Grade: Moderately-differentiated (low grade).
388 - Microscopic depth of invasion: Tumor invades through the muscularis
389 propria into pericolic soft tissue (pT3).
390 - Margins: Negative.
391 - Proximal margin: Negative (tumor is &gt; 4 cm from margin).
392 - Distal margin: Negative (tumor is &gt; 4 cm from margin).
393 - Circumferential (radial) margin: Negative (tumor is &gt; 3 cm from
394 margin).
395 - Treatment effect (modified Ryan score, scale 0-3): No known
396 presurgical therapy.
397 - Lymphovascular invasion: Not identified on H&amp;E (orcein stains will
398 be performed on blocks A3 and A5, and the results will be reported as an
399 addendum).
400 - Perineural invasion: None.
401 - Tumor Deposits: Not identified.
402 - Lymph node status: Negative (number of lymph nodes examined: 21).
403 - Other pathologic findings: None identified.
404 - AJCC Pathologic Stage: pT3N0.
405 - Ancillary studies: Immunohistochemistry for DNA mismatch repair
406 proteins will be reported in an addendum.
407
408 Addendum Comment
409 Immunohistochemistry was performed to evaluate the status of DNA
410 mismatch repair protein expression on block A3. The results in the tumor
411 cell nuclei are:
412 MLH1 expression: Present.
413 PMS2 expression: Present.
414 MSH2 expression: Present.
415 MSH6 expression: Present.
416 Expression for all four markers, in most cases, indicates that the DNA
417 mismatch repair proteins are intact. This result should be correlated
418 with the clinical presentation and family history to determine the need
419 for further work up for Lynch syndrome</code></pre></div>
420 <p>Probably TMI, but this will actually be easier for me to find later, instead of spelunking through the oh-so-painful EPIC MyChart software. Am I allowed to share this? I DON'T KNOW AND I DON'T CARE.</p>
421 <p>As you can see, this plaintext nightmare is full of strange and wonderous medical terms. Yes, the doctors walk you through it but still... it's a lot. I did push them to explain the terms, like what negative margins mean and why they're a good thing, although I kind of forget already so I won't try to explain.</p>
422 <p>After this walk-through with the docs, I felt good about my plan. No chemo needed. Just ongoing tests and CT scans and blood work and colonoscopies over the next five years to make sure that the cancer wasn't back, led by the UCSF Cancer Survivorship Clinic. Sure, that wasn't nothing, but it also isn't that bad, considering how lucky I am to have caught this thing and gotten it removed ASAP. The idea was, after five years, I'd be back in the general population for risk of colon cancer. <em>Cured</em>.</p>
423 <p>But then, during my first Survivorship Clinic convo in November, I recalled that one line from the pathology... the one mentioning the addendum that I hadn't yet seen. I ask about it. We dig in, and we find this:</p>
424 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">Addendum Comment
425 Orcein stains performed on blocks A3 and A5 highlight elastic fibers
426 wrapping around nests of tumor cells, consistent with vascular invasion</code></pre></div>
427 <p><code class="language-text">Consistent with vascular invasion</code>. Welp, that can't be good.</p>
428 <p>At this point, I'm immediately whisked off the UCSF Oncology Department.</p>
429 <h2>New faces and new tests and new plans</h2>
430 <p>A hospital is a series of interconnected rings, all slightly Venn Diagramming each other, kind of like the Olympics logo. As a patient, you tend to orbit one of the rings. But sometimes you'll Three Body Problem your way over to another ring.</p>
431 <p>In my entire diagnosis and surgery process, I'd never made it over to the Oncology (aka cancer) ring -- I was stuck in Surgery World. But, after this addendum, I'm now squarely in their circle.</p>
432 <p>So, what's our goal now? Well, now that we've noticed that my cancer has slightly spread into the vascular system, we need to figure out what to do about it. First, let's remember the good stuff - the rest of the pathology is relatively awesome. Next, let's get some more data!</p>
433 <p>We do these tests:</p>
434 <ul>
435 <li>Signatera - looks in your blood for tumor cells</li>
436 <li>Oncotype - looks at your tumor and rates the likelihood of recurrence</li>
437 </ul>
438 <blockquote>
439 <p>Let me reiterate that my explanations of these tests (and anything medical-related) is entirely my random-dudeman-laymen's explanation. I hope to provide one person's context and interpretation of these confusing and scary things. I'm open to feedback and information on what I can do better.</p>
440 </blockquote>
441 <h3>Insurance aside</h3>
442 <p>Insurance didn't want to cover the Oncotype test, because, of course. Insurance doesn't want to cover a lot of things, especially brand new "cutting edge" stuff, like the Oncotype test.</p>
443 <p>Instead, insurance wants to make sure that you really-super-duper-need whatever it is they're going to give you, to the point where there's basically no way they can say no. My doctors have been amazing advocates for me, helping make sure that insurance knows how important these tests and treatments are for my health. THANK YOU, UCSF.</p>
444 <p>Insurance is frustrating and scary. I do not understand it. I do not want to understand it. I wish it was simpler. I wish I didn't have to make sure that I was "covered" for things related to my health and my family's health. I also know that I'm incredibly lucky to have good insurance. I took a screenshot from my insurance app back in December:</p>
445 <p><span
446 class="gatsby-resp-image-wrapper"
447 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
448 >
449 <a
450 class="gatsby-resp-image-link"
451 href="/static/b7291d13e21492cbff924ada73137851/c27e7/bill.png"
452 style="display: block"
453 target="_blank"
454 rel="noopener"
455 >
456 <span
457 class="gatsby-resp-image-background-image"
458 style="padding-bottom: 46.62576687116564%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABYlAAAWJQFJUiTwAAABKklEQVQoz31Sa1PDIBDk//86P+gnZ3ScmqZNmkdJeEPWO7BMrNab2RwQ2OWWE957OOcyjDEIIWTwmHH7l1JCjLEipZKNi7CeQDmECJEX6aC1tpLymDOL3WLbtl+gVfyMDcITodrdhMmY6Jb3RwrJ/vheqMzF/aa/QpLQ4sPDm+6RCfONjIazBlrrWjbHm3K4uICDdmiMfyhaCfkB5LKgPQ9YFJdtM1kikZO2eGlazMMAOU94ajusZLxyxRImYJuUUvmBeCyyd1RON2kMV4NVFy85Dsrio7+gPzaYuzOeuxEr71cSUkpoQ49HxOM41s4Qnjb4kNBPJuO68mM4rgGR7H2l+YlK/SShd+X+9ToT8qf0VcrYvvuLFRN3AAkeV42W4MiGGEPt1Xsw1xcg+8FrtuDM8QAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
459 ></span>
460 <img
461 class="gatsby-resp-image-image"
462 alt="insurance bill"
463 title="insurance bill"
464 src="/static/b7291d13e21492cbff924ada73137851/a6d36/bill.png"
465 srcset="/static/b7291d13e21492cbff924ada73137851/222b7/bill.png 163w,
466 /static/b7291d13e21492cbff924ada73137851/ff46a/bill.png 325w,
467 /static/b7291d13e21492cbff924ada73137851/a6d36/bill.png 650w,
468 /static/b7291d13e21492cbff924ada73137851/e548f/bill.png 975w,
469 /static/b7291d13e21492cbff924ada73137851/3c492/bill.png 1300w,
470 /static/b7291d13e21492cbff924ada73137851/c27e7/bill.png 2144w"
471 sizes="(max-width: 650px) 100vw, 650px"
472 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
473 loading="lazy"
474 />
475 </a>
476 </span></p>
477 <p>WTF. That's an insane amount of money. But my life was saved, sooo...? The insurance company even assigned me a nurse to "check in on me" as a resource back in November and December, which sadly was more of a nuisance than anything else. And, then, when my company switched insurance providers at the beginning of 2021, this nurse service stopped abruptly. The whole thing's odd. But I can say again that I am extremely grateful to have had good insurance during my cancer treatment.</p>
478 <h3>Make a new plan</h3>
479 <p>The Signatera is clear, which is great. No circulating tumor cells in my blood. I ask the question, "Doesn't this mean I'm, like, good for life now?" And apparently no. They can't say that. They can only say, "We don't see anything right now." It's the balance sheet of cancer. Just cause things look good right now doesn't mean that next year or next quarter's gonna be the same. Past performance is no indication of future something-something.</p>
480 <p>Oncotype's pretty good, too. From what the doc explains, this test suggests that my tumor has a 12% recurrence rate. This is a low number and I should be happy about it. And I am. But I want it to be zero, obviously. Also, recurrence isn't talking about new polyps growing in my butt and starting cancers -- that can still happen. Recurrence is about whether cells from my now-removed cancer tumor are going rear their awful heads again, somewhere else in my body.</p>
481 <p>It's at this point that we get into the discussion around chemo. There's evidence that chemo can help reduce the recurrence rate even further. My oncology team brings my data to this cool-sounding UCSF "Tumor Board" meeting, and they advise a chemo treatment. The evidence suggests that we can bring down my recurrance rate from 12% to 6%.</p>
482 <p>But they also reiterate that it's my choice. I can say no. As my aforementioned friend said, "You don't do chemo recreationally." In fact, the doctors explain that if I were an old man, they might not advise treatment. But since I'm young and restless, it makes more sense for me to do whatever I can to improve my chances.</p>
483 <p>Duh, let's do this thing.</p>
484 <h2>So, what's chemotherapy like?</h2>
485 <p>Well, first of all, there's all different kinds of chemo. I didn't know that. I'm on a combo colloquially called <a href="https://en.wikipedia.org/wiki/CAPOX">CAPEOX</a> (which I thought sounded a bit like a rival Star Fox gang). It stands for capecitabine (brand name is Xeloda) and oxaliplatin. Cape comes in pills and ox is an IV drip. </p>
486 <p>But wait -- more decisions. Do we do six months or three months of treatment? We review the data from a Japanese study, and we conclude that there's no measurable difference, so we go with 3 months, due to risk of chemo <em>side effects</em>.</p>
487 <h3>Chemo is not a pure function</h3>
488 <p>Chemo has side effects. Here are the things that I've encountered so far:</p>
489 <ul>
490 <li>super cold fingers and toes</li>
491 <li>lockjaw when I start eating</li>
492 <li>clenching claw hands</li>
493 <li>it hurts to cry (and I just finished the last season of Halt and Catch Fire, so yeah..)</li>
494 <li>no appetite, not even for pizza or beer</li>
495 <li>nausea</li>
496 <li>kinda a sad feeling</li>
497 <li>dead sperm(!)</li>
498 </ul>
499 <p>Shockingly, there's no hair loss expected. I'm already in a thinning situation "up there," but it's not supposed to get any worse. A small, dumb part of me thinks that once treatment's over that it might even get better! But this small part is very dumb.</p>
500 <p>Let's talk about the sperm stuff. As a result of doing chemo, there's a good chance that my swimmers are gonna be dead for good. There's also a chance that they can come back. But, if I want to ensure that Carly and I can have the family we want, I need to do sperm banking, quickly! Apparently, there's a ticking clock on starting chemo post-surgery (something like within 8 weeks). So, I've got a week to do as much sperm banking as I can! Fun!</p>
501 <p>The sperm banking process is hilarious. You go to a building, then into a waiting room, then you are led to a tiny little room with a metal door in the wall. When you are done collecting your sample in a cup, you open the door in the wall and put the cup in there, and then press a button, and someone on the other side grabs it. In between that, there's literally a Roku porn subscription and a big TV. I went four times in a week. We got some good stuff collected.</p>
502 <p>Another note on the 3 months vs 6 months decision - there are other potential side effects to chemo that factor into the timing decision. The big one in my case is something called <a href="https://en.wikipedia.org/wiki/Peripheral_neuropathy">neuropathy</a>. Essentially, chemo can potentially cause long-term, life-altering nerve damage. The signs of it often begin with numb feet and hands, which I will admit seem rather easy to confuse with the expected, but not serious symptoms of cold hands and feet. The docs explain that any signs of neuropathy need to be reported immediately and we will halt chemo immediately, because the long-term negative effect of neuropathy far outweighs the gains in any reduction of recurrence rates in my case.</p>
503 <p>Now, given of all that prep and preamble, it's finally time to start chemo!</p>
504 <h2>Charlie the Cyborg</h2>
505 <p>Wait. We need a way to get the chemo into your body. There's two options: a PICC line or a port. In either case, we need a tube that's threaded through your veins directly above your heart. If you go PICC, we gotta thread that in for every single treatment. If you go port, you only do that once, but you get this Tony Stark metal disk thing in your chest. You can guess which one I chose.</p>
506 <p><span
507 class="gatsby-resp-image-wrapper"
508 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
509 >
510 <a
511 class="gatsby-resp-image-link"
512 href="/static/326bc664110706ab62928653874483fd/ec605/port.jpg"
513 style="display: block"
514 target="_blank"
515 rel="noopener"
516 >
517 <span
518 class="gatsby-resp-image-background-image"
519 style="padding-bottom: 216.5644171779141%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAArABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAIDBAUB/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABiOscKQaqNRIiuFxNmIxzeD//xAAeEAACAgEFAQAAAAAAAAAAAAABAgADBBESEyIxMv/aAAgBAQABBQLnM5zBfK0DK9KiXKEbEXrkN2yTq9VqpTa257foq02NDUxJ8U6mf//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BX//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BX//EACAQAAIBAwQDAAAAAAAAAAAAAAABAiExMhARYZEgcoH/2gAIAQEABj8Cui66KtCpfTbgT0j6kVwUPhjPoxmYS8P/xAAfEAEAAgICAgMAAAAAAAAAAAABABEhMRBBYYFxobH/2gAIAQEAAT8hLGqfh4lQbngY8tkWlzS/sJju0C6ZrExSeoIuhXaHfox4ZhNBUEd31S6Leo6aRKXj/9oADAMBAAIAAwAAABDwzA2QD//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QX//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QX//EAB8QAQADAQACAgMAAAAAAAAAAAEAESExQVGx0WFx4f/aAAgBAQABPxCzavm75juFn7fcPRJvg+Y+Igj9dfqJFbEWrYyswoVN+WMGUIm+VDBZmnJefxXd3rKhoYaP7HPcw9R09UDt1rDGRC8vI3UZ8XN2EFWSmQQyHFE14dlHon//2Q=='); background-size: cover; display: block;"
520 ></span>
521 <img
522 class="gatsby-resp-image-image"
523 alt="Port"
524 title="Port"
525 src="/static/326bc664110706ab62928653874483fd/6aca1/port.jpg"
526 srcset="/static/326bc664110706ab62928653874483fd/d2f63/port.jpg 163w,
527 /static/326bc664110706ab62928653874483fd/c989d/port.jpg 325w,
528 /static/326bc664110706ab62928653874483fd/6aca1/port.jpg 650w,
529 /static/326bc664110706ab62928653874483fd/7c09c/port.jpg 975w,
530 /static/326bc664110706ab62928653874483fd/ec605/port.jpg 1125w"
531 sizes="(max-width: 650px) 100vw, 650px"
532 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
533 loading="lazy"
534 />
535 </a>
536 </span></p>
537 <p>Now I have an ID card that explains why metal detectors don't like me anymore.</p>
538 <p><span
539 class="gatsby-resp-image-wrapper"
540 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
541 >
542 <a
543 class="gatsby-resp-image-link"
544 href="/static/b331d468b218ca7f228c91db9b47599d/fb7c9/portchest.jpg"
545 style="display: block"
546 target="_blank"
547 rel="noopener"
548 >
549 <span
550 class="gatsby-resp-image-background-image"
551 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAIDAQQF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgAB/9oADAMBAAIQAxAAAAFlrgfCObnpYlC4gV//xAAeEAACAgEFAQAAAAAAAAAAAAABAgARMQMEISIzQv/aAAgBAQABBQKap4oSo6dQBAwcZBq9p5/bZ//EABURAQEAAAAAAAAAAAAAAAAAAAIg/9oACAEDAQE/ATH/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAdEAACAgEFAAAAAAAAAAAAAAAAARAxAhEhIkFx/9oACAEBAAY/AhJ53NanKxtdG8Zez//EABwQAAMAAwADAAAAAAAAAAAAAAABESExQRBhcf/aAAgBAQABPyGEXyNzEQ0OJ36VLB+vtiyTXYW6yhWjoVnc8M9Def/aAAwDAQACAAMAAAAQC9oC/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQAQIf/aAAgBAwEBPxAMsPM//8QAFxEBAQEBAAAAAAAAAAAAAAAAARARIf/aAAgBAgEBPxBSZ2f/xAAdEAEAAwACAwEAAAAAAAAAAAABABEhQVExYXHw/9oACAEBAAE/EDEQRAMio8e4iQDnSyixB3LKhOgKVxsShRFS6r1AQRw/GXc6wvy42Ba25NXflETXxcxV3P/Z'); background-size: cover; display: block;"
552 ></span>
553 <img
554 class="gatsby-resp-image-image"
555 alt="Port Chest"
556 title="Port Chest"
557 src="/static/b331d468b218ca7f228c91db9b47599d/6aca1/portchest.jpg"
558 srcset="/static/b331d468b218ca7f228c91db9b47599d/d2f63/portchest.jpg 163w,
559 /static/b331d468b218ca7f228c91db9b47599d/c989d/portchest.jpg 325w,
560 /static/b331d468b218ca7f228c91db9b47599d/6aca1/portchest.jpg 650w,
561 /static/b331d468b218ca7f228c91db9b47599d/7c09c/portchest.jpg 975w,
562 /static/b331d468b218ca7f228c91db9b47599d/01ab0/portchest.jpg 1300w,
563 /static/b331d468b218ca7f228c91db9b47599d/fb7c9/portchest.jpg 2316w"
564 sizes="(max-width: 650px) 100vw, 650px"
565 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
566 loading="lazy"
567 />
568 </a>
569 </span></p>
570 <p>Gross and weird, but also cool and weird. With this port, it's a simple little pin prick to get me all connected to the IV stuff. Here I am plugged in.</p>
571 <p><span
572 class="gatsby-resp-image-wrapper"
573 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
574 >
575 <a
576 class="gatsby-resp-image-link"
577 href="/static/a2b9526d8bba6f700a5e341eb34f2d35/fb7c9/plugged.jpg"
578 style="display: block"
579 target="_blank"
580 rel="noopener"
581 >
582 <span
583 class="gatsby-resp-image-background-image"
584 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAwH/xAAWAQEBAQAAAAAAAAAAAAAAAAACAQP/2gAMAwEAAhADEAAAAapHypYiBpS+XKQci//EABwQAQACAwADAAAAAAAAAAAAAAEAAgMREiEiMf/aAAgBAQABBQLNT1U5LYo5m8K7lsXnoGlWOmfIHRqf/8QAGBEAAgMAAAAAAAAAAAAAAAAAABEBAhD/2gAIAQMBAT8BiqFjP//EABcRAAMBAAAAAAAAAAAAAAAAAAAQERL/2gAIAQIBAT8B0VQ//8QAHhAAAQMFAQEAAAAAAAAAAAAAAAECERASMUGBMlH/2gAIAQEABj8CJceyyN5NUlqdQuc7hlTgs/af/8QAGxABAQEAAwEBAAAAAAAAAAAAAREAITFBcVH/2gAIAQEAAT8hO6blqR4cs8fc9zfjtoWqlS4kVBnmZtQuIyRTp0YNa/MHQ6wlmyDAOAm//9oADAMBAAIAAwAAABBbw8L/xAAZEQACAwEAAAAAAAAAAAAAAAAAAREhYTH/2gAIAQMBAT8QQ18Mi0kj/8QAGBEAAwEBAAAAAAAAAAAAAAAAAAERYVH/2gAIAQIBAT8QbtaaJwln/8QAHRABAAMBAQEAAwAAAAAAAAAAAQARITFBUXGBkf/aAAgBAQABPxAbZWU/GBPFTNazn4lo/RiVAl4uQHUjj5JMBdqoweQDIRoW0Ba9/s68QYknv2L2J4myoQc3avPJfA7HhB2gFoGp/9k='); background-size: cover; display: block;"
585 ></span>
586 <img
587 class="gatsby-resp-image-image"
588 alt="plugged"
589 title="plugged"
590 src="/static/a2b9526d8bba6f700a5e341eb34f2d35/6aca1/plugged.jpg"
591 srcset="/static/a2b9526d8bba6f700a5e341eb34f2d35/d2f63/plugged.jpg 163w,
592 /static/a2b9526d8bba6f700a5e341eb34f2d35/c989d/plugged.jpg 325w,
593 /static/a2b9526d8bba6f700a5e341eb34f2d35/6aca1/plugged.jpg 650w,
594 /static/a2b9526d8bba6f700a5e341eb34f2d35/7c09c/plugged.jpg 975w,
595 /static/a2b9526d8bba6f700a5e341eb34f2d35/01ab0/plugged.jpg 1300w,
596 /static/a2b9526d8bba6f700a5e341eb34f2d35/fb7c9/plugged.jpg 2316w"
597 sizes="(max-width: 650px) 100vw, 650px"
598 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
599 loading="lazy"
600 />
601 </a>
602 </span></p>
603 <p>My three week cycle consists of this:</p>
604 <ul>
605 <li>Day One: Ox drip and start taking pills</li>
606 <li>Next 2 weeks: pills 2x a day</li>
607 <li>Third week: Nothing</li>
608 </ul>
609 <p>Then, start over, for 4 times total.</p>
610 <p>The point of the third week is to help your white blood cells recover. The chemo fries them, too. It basically kills anything fast growing in your body (my interpretation!), so your useful blood cells (and sperm and hair etc etc) are impacted. Not a super great thing to happen during a global pandemic, weakening your immune system and all.</p>
611 <p>The drip takes like 2 hours. I usually bring some books and a chicken parm sub and my Nintendo Switch. Here's me after a pee-break:</p>
612 <p><span
613 class="gatsby-resp-image-wrapper"
614 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
615 >
616 <a
617 class="gatsby-resp-image-link"
618 href="/static/242e9d3629ee3ccb851bad34bbc33eb5/9568a/bathroom.jpg"
619 style="display: block"
620 target="_blank"
621 rel="noopener"
622 >
623 <span
624 class="gatsby-resp-image-background-image"
625 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMCBAUB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAGw/Lu5tkgGU3RgIOB//8QAHRAAAgICAwEAAAAAAAAAAAAAAQIAAxExBBMhQf/aAAgBAQABBQLxYmCFltp7K3xBOQCz4sIQmJv6d//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/AYU//8QAHhAAAgEDBQAAAAAAAAAAAAAAAAEhAhAREiIxQnH/2gAIAQEABj8ClRZmnqYqH6bVKFA88lQ7f//EAB4QAQACAgIDAQAAAAAAAAAAAAEAESFBUWExcYHB/9oACAEBAAE/IVJUBuByUlwVTuZMhwrqIdrxHbIwIpomSMxuHKat+QfRnhvUyVz/2gAMAwEAAgADAAAAENTgjv/EABcRAQEBAQAAAAAAAAAAAAAAAAARASH/2gAIAQMBAT8QuNTqP//EABcRAQEBAQAAAAAAAAAAAAAAAAABEVH/2gAIAQIBAT8Q1EcNf//EACAQAQADAAEDBQAAAAAAAAAAAAEAESExQVFhgZGhwdH/2gAIAQEAAT8QVsFX23wRhNAbt0gAOBxJC+eRXl7zOw1nQUbM25+BizNjpQtks7pRuDcHywoeAfUAcNC3vkcYLVL6RX9bXxP/2Q=='); background-size: cover; display: block;"
626 ></span>
627 <img
628 class="gatsby-resp-image-image"
629 alt="bathroom selfie"
630 title="bathroom selfie"
631 src="/static/242e9d3629ee3ccb851bad34bbc33eb5/6aca1/bathroom.jpg"
632 srcset="/static/242e9d3629ee3ccb851bad34bbc33eb5/d2f63/bathroom.jpg 163w,
633 /static/242e9d3629ee3ccb851bad34bbc33eb5/c989d/bathroom.jpg 325w,
634 /static/242e9d3629ee3ccb851bad34bbc33eb5/6aca1/bathroom.jpg 650w,
635 /static/242e9d3629ee3ccb851bad34bbc33eb5/7c09c/bathroom.jpg 975w,
636 /static/242e9d3629ee3ccb851bad34bbc33eb5/01ab0/bathroom.jpg 1300w,
637 /static/242e9d3629ee3ccb851bad34bbc33eb5/9568a/bathroom.jpg 3024w"
638 sizes="(max-width: 650px) 100vw, 650px"
639 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
640 loading="lazy"
641 />
642 </a>
643 </span></p>
644 <p>I buy this pill box on Amazon, cause why not:</p>
645 <p><span
646 class="gatsby-resp-image-wrapper"
647 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
648 >
649 <a
650 class="gatsby-resp-image-link"
651 href="/static/8802dbebea79ef99ab779b12b4d2ce11/9568a/pillbox.jpg"
652 style="display: block"
653 target="_blank"
654 rel="noopener"
655 >
656 <span
657 class="gatsby-resp-image-background-image"
658 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAEDBAIF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAdmPOj1XIpuQWJWf/8QAHRAAAgIBBQAAAAAAAAAAAAAAAQIDEQAEEiAhMf/aAAgBAQABBQLzG1PaNazyEmCPebx0vAAorh//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAfEAACAQIHAAAAAAAAAAAAAAAAAQIRMRASICEiMlH/2gAIAQEABj8COK2E2qGWyKvqsPRRjbT/AP/EABwQAQADAAIDAAAAAAAAAAAAAAEAESEQUUGh8f/aAAgBAQABPyHBa0EpqL2Ym6NqJ6IeJ93HqKWAdKeyBRiUjwT/2gAMAwEAAgADAAAAEKQIc//EABYRAQEBAAAAAAAAAAAAAAAAABEAEP/aAAgBAwEBPxAxm//EABYRAQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAgEBPxDIj//EAB4QAQACAgIDAQAAAAAAAAAAAAEAESFBMWEQUaFx/9oACAEBAAE/ELYIFq8EsRPai99RMbNE3jUfD7ny9pLELcX5ZfYwZSB0i1+DqMwPe5Xax1HksE//2Q=='); background-size: cover; display: block;"
659 ></span>
660 <img
661 class="gatsby-resp-image-image"
662 alt="pill box"
663 title="pill box"
664 src="/static/8802dbebea79ef99ab779b12b4d2ce11/6aca1/pillbox.jpg"
665 srcset="/static/8802dbebea79ef99ab779b12b4d2ce11/d2f63/pillbox.jpg 163w,
666 /static/8802dbebea79ef99ab779b12b4d2ce11/c989d/pillbox.jpg 325w,
667 /static/8802dbebea79ef99ab779b12b4d2ce11/6aca1/pillbox.jpg 650w,
668 /static/8802dbebea79ef99ab779b12b4d2ce11/7c09c/pillbox.jpg 975w,
669 /static/8802dbebea79ef99ab779b12b4d2ce11/01ab0/pillbox.jpg 1300w,
670 /static/8802dbebea79ef99ab779b12b4d2ce11/9568a/pillbox.jpg 3024w"
671 sizes="(max-width: 650px) 100vw, 650px"
672 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
673 loading="lazy"
674 />
675 </a>
676 </span></p>
677 <p>This sucker lives in our kitchen counter in plain sight so that I never forget to take my 2x a day sets, and so far, I haven't ever forgotten.</p>
678 <h2>What next?</h2>
679 <p>This has been a long, strange trip of a six-month period. I'm currently in the second week of the third cycle. My third cycle had to be pushed back a week because my white blood cells were too low. I came back the next week, and they were still low, but we decided to proceed, and just dropped my cape dosage from 2000mg to 1500mg (3 pills 2x a day instead of 4 pills 2x a day). In another week, I get to have the glorious "week off" (when I again crave the taste of beer), and then we're back for the fourth and final round.</p>
680 <p>I can't wait for this to be over. I can't wait for this port to be out of my chest. I'm happy that I'm doing everything I can to ensure that I have a long and healthy life. I'm eager to get back on the UCSF Survivorship Clinic plan, and start improving my diet to reduce inflammation (and all this other stuff that's supposed to help prevent cancer).</p>
681 <p>I have learned a lot about cancer and health. My heart breaks when I think about children who've suffered from cancer. My infusion center is the adult center. I'm not sure I could stomach seeing children and babies getting chemo. I'm crying right now even thinking about it (which hurts, if you remember my side effects). Cancer is terrible and it can affect anyone. This is where I re-impart my advice about being your own health advocate. </p>
682 <p>Thanks to Carly and my family and friends and work peeps for your love and support.</p>
683 <p>Fuck cancer. <a href="/create-wonderful-things-be-good-have-fun">Create wonderful things, be good, and have fun.</a></p></content:encoded></item><item><title><![CDATA[Flow and Creative Computing]]></title><description><![CDATA[I recently watched Pixar's SOUL and I loved its depiction of being in the zone: This is a beautiful, astrally-projected depiction of Mihaly…]]></description><link>https://www.charlieharrington.com/flow-and-creative-computing</link><guid isPermaLink="false">https://www.charlieharrington.com/flow-and-creative-computing</guid><pubDate>Wed, 13 Jan 2021 00:00:00 GMT</pubDate><content:encoded><p>I recently watched Pixar's SOUL and I loved its depiction of being <em>in the zone</em>:</p>
684 <p><span
685 class="gatsby-resp-image-wrapper"
686 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
687 >
688 <span
689 class="gatsby-resp-image-background-image"
690 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAAECElEQVQ4yyWU6U9UVxyGL8td5t7ZmBlmY2CYGacOMApDlaFqS0nDNq0DFEVoEIJVxoWKFWVcqkRKrIJLba1AjFJRJK1LW60VSdUuadLYNDVNP/RL0z/l6ZF+OMnJTc5z3vf9vedKqtKBqrRgUhrEasVpHiHoOELcfYRq7wlqfMcJO3fhMXbhUoYwyW3oShpDafv/jNyALndQaB6k0ncFSVXb0NQWNK0Rq9ZJmfVDAZqgMTxHKjzP5ugXrPEeI2gdwasfxix3YVG7MKvvoGsCqjaj5acoMDLUhr56AUyjmzZiEitg7CbtuUlr9B49ZU/YHnvC8cRzOipuUVlyiZD5BHa5V1y8jQLTDqx6j4CmhcOU2G+jJnQPSdNasRqd2MydRGxHaA0t0ht/xkjyL/YnfuNc7T90r15iXeg2NbYJwvJObKYMbmMPLvMAZtMWVDUl7LcTcX+MpOubcJh78Vn7qHRO0rLyR7pivzPc9TepY39wcv2/dJQ/pS6yxAbrOFE5g900SJFlH0XWvSLzd4VKMQdh2yW+SRa9G58tQ7FtgGrHGVrCj2mI/UR/9TNa+5+TSf5Jc3SRisA1Vuv7KVG2CmUHCBaMECnIUmzfh83oQ5PbRba9SE5jO0H7kFh7lhXWF92ipnSBhvB93g4vkY4+Ilk6R9gxxmp1AI+8mULjfQE7TLlzlJjj6LJ1XenGlNeNFLAfJOo4xEpHlgrHWdZ6LlPtm6Y2eIPXQ7dIFn9OyPcRJZZhQnliunIaj3mImGuMhPsMSe85imzDOESuhtyPFHGepMp9mpfdk1S7LhJ1nSFceIqY9wKV/ileck/gsmcxi8nquSmhpF1kt5+E9zz1wXnS4dsCPo7feginNogU905RVzTLG0JJvX+OFc7T+ApGCQiLpc5xiuwfYLW8R76wlJv7JhZRlZB7bBnWXvqQ3fFfaArdJOQ8RcRyHOmVwgVaS26zMXKHxpK7xF0Xlm8rtGVxWrOiTkMoQl1O/iZycttwGDsp81+iKXKf7g0PyCSe0lf+hFUl16gSZ6UNHY9ZU/cr6eLvaCp9IHKZImwcxiUmqpr2Ims7yFF6kPI6ycvbIhpxgKrAdZor7tF2epGNHd/Tv2KJRHCBuH8Wad3AD5SmfyYVfERz+CExzwxxfRSfelA8o90CJoKWBTC/R1SjTwzgAKuKr7I++CW1DQ9o2fItW9fcJRa7gsdzEamx+g7dnXd4q/xrXgt8Q7FrhqR+Hr8yKkCD5IgiS/ILlRlkZReOF110TBILXCZYdp2j2Qk2b7+AtnaWAvenSLWeeV71Xifpv0G8cA6vbYoq7TPxZzmFpBwUoGGhbhhVVCtfz4p3m8ViPSGKfZZg5QyxumlCwU8wEtO4Ylf5Dy0KDrqIrtD+AAAAAElFTkSuQmCC'); background-size: cover; display: block;"
691 ></span>
692 <img
693 class="gatsby-resp-image-image"
694 alt="In the Zone"
695 title="In the Zone"
696 src="/static/0aee6e1c7f7c78355cb80e7835703fca/a6d36/zone.png"
697 srcset="/static/0aee6e1c7f7c78355cb80e7835703fca/222b7/zone.png 163w,
698 /static/0aee6e1c7f7c78355cb80e7835703fca/ff46a/zone.png 325w,
699 /static/0aee6e1c7f7c78355cb80e7835703fca/a6d36/zone.png 650w,
700 /static/0aee6e1c7f7c78355cb80e7835703fca/e548f/zone.png 975w,
701 /static/0aee6e1c7f7c78355cb80e7835703fca/3c492/zone.png 1300w,
702 /static/0aee6e1c7f7c78355cb80e7835703fca/769f8/zone.png 1924w"
703 sizes="(max-width: 650px) 100vw, 650px"
704 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
705 loading="lazy"
706 />
707 </span></p>
708 <p>This is a beautiful, astrally-projected depiction of Mihaly Csikszentmihalyi's <em>flow</em> concept. For the unfamiliar, here's how Csikszentmihalyi describes flow, or <em>the optimal experience</em>:</p>
709 <blockquote>
710 <p>It is what the sailor holding a tight course feels when the wind whips through her hair, when the boat lunges through the waves like a colt -- sails, hull, wind, and sea humming a harmony that vibrates in the sailor's veins. It is what a painter feels when the colors on the canvas begin to set up a magnetic tension with each other, and a new <em>thing</em>, a living form, takes shape in front of the astonished creator.</p>
711 </blockquote>
712 <p>That sounds pretty good, right? Csikszentmihalyi contends that flow is how we humans can achieve happiness. And it's not something that's given; it's something we have to cultivate and grow and work towards. I cannot recommend his book enough.</p>
713 <p>Even better was SOUL's depiction of the non-flow state - the lost souls:</p>
714 <p><span
715 class="gatsby-resp-image-wrapper"
716 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
717 >
718 <span
719 class="gatsby-resp-image-background-image"
720 style="padding-bottom: 41.104294478527606%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAIABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgAE/9oADAMBAAIQAxAAAAHEG0yBf//EABUQAQEAAAAAAAAAAAAAAAAAABAh/9oACAEBAAEFAo//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAVEQEBAAAAAAAAAAAAAAAAAAAQEf/aAAgBAgEBPwGn/8QAFBABAAAAAAAAAAAAAAAAAAAAEP/aAAgBAQAGPwJ//8QAFxAAAwEAAAAAAAAAAAAAAAAAABARUf/aAAgBAQABPyGaKv/aAAwDAQACAAMAAAAQiD//xAAWEQEBAQAAAAAAAAAAAAAAAAAAESH/2gAIAQMBAT8Q1X//xAAYEQACAwAAAAAAAAAAAAAAAAAAAREhMf/aAAgBAgEBPxC2KBo//8QAGhAAAwADAQAAAAAAAAAAAAAAAAERMXGB4f/aAAgBAQABPxCGF4iFI7sbd9P/2Q=='); background-size: cover; display: block;"
721 ></span>
722 <img
723 class="gatsby-resp-image-image"
724 alt="lost souls"
725 title="lost souls"
726 src="/static/c8e9d78346f3711671078cfd117b81b8/6aca1/lost-souls.jpg"
727 srcset="/static/c8e9d78346f3711671078cfd117b81b8/d2f63/lost-souls.jpg 163w,
728 /static/c8e9d78346f3711671078cfd117b81b8/c989d/lost-souls.jpg 325w,
729 /static/c8e9d78346f3711671078cfd117b81b8/6aca1/lost-souls.jpg 650w,
730 /static/c8e9d78346f3711671078cfd117b81b8/7c09c/lost-souls.jpg 975w,
731 /static/c8e9d78346f3711671078cfd117b81b8/a2510/lost-souls.jpg 1000w"
732 sizes="(max-width: 650px) 100vw, 650px"
733 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
734 loading="lazy"
735 />
736 </span></p>
737 <p>Definitely been there. Usually its whenever I hear, "Can you see my screen?" These poor creatures wander the astral plane, lost and unhappy and unsure why.</p>
738 <p>Luckily, the movie tells us it's never too late, and I believe them.</p>
739 <p>So, how do we achieve flow?</p>
740 <p>It's the deliberate combination of skill meeting challenge. More from Csikszentmihalyi:</p>
741 <blockquote>
742 <p>The best moments usually occur when a person's body or mind is stretched to its limits in a voluntary effort accomplish something difficult and worthwhile.</p>
743 </blockquote>
744 <p>This post documents a legitimate flow experience I had last week that began with an observation about my podcast addiction.</p>
745 <h2>All My Best Friends are Podcasts</h2>
746 <p>Yes, that's a <a href="https://www.youtube.com/watch?v=Z_63ZZRLylE">Less Than Jake</a> reference. You're welcome, 8th-Grade Charlie.</p>
747 <p>And, if you're at all like 28th-Grade Charlie, then you're also helplessly addicted to podcasts.</p>
748 <p>I listen all the time -- while I'm washing dishes, folding laundry, performing my daily Amazon cardboard box cutting ritual, even taking showers. Carly doesn't understand it, and I certainly can't explain it.</p>
749 <p>Am I that afraid of silence? My own thoughts? Am I so lonely for friendship that I even found this evisceration quietly comforting?</p>
750 <blockquote class="twitter-tweet"><p lang="en" dir="ltr">Podcasts saying literally nothing for 20 minutes. <a href="https://t.co/nmfka1Gjsp">pic.twitter.com/nmfka1Gjsp</a></p>&mdash; Jonathan Ogden (@jogdenUK) <a href="https://twitter.com/jogdenUK/status/1346442437376552962?ref_src=twsrc%5Etfw">January 5, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
751 <p>I know too much about ancient Rome to be able to answer these questions.</p>
752 <p>So, if I'm just going to accept my Overcast overlords, can I turn the tides on this one-directional relationship?</p>
753 <p>Yes. We can. Enter: the spark of an idea.</p>
754 <h2>Create a podcast from the audio of YouTube videos</h2>
755 <p>If I can't control what my favorite podcast hosts are talking about in any given episode, can I instead choose <em>exactly</em> what I want to listen to? What if there were a virtually unlimited source of content to consume? Surely, I could then be more deliberate in my listening habits.</p>
756 <p>YouTube is our answer. I've been collecting computer science talks and lectures in playlists that I always mean to "watch later" and never do. Fact is, I don't want to watch a YouTube video. I rarely ever sit down and "watch YouTube" (other than The 8-Bit Guy cleaning old VIC-20s). It's not part of my routine. I'm usually moving around too much.</p>
757 <p>YouTube also makes it really hard to consume something "on the go." You need to pay for their PiP or minimized mode, I think.</p>
758 <p>Then I found this <a href="https://benjamincongdon.me/blog/2020/03/02/Creating-a-Podcast-Feed-from-a-YouTube-Playlist/">post by Benjamin Congdon</a>: a simple way to create an audio podcast feed from a YouTube playlist using a <a href="https://amzn.to/3qksZiq">Raspberry Pi</a> home server. His tutorial leverages an open source project called <a href="https://github.com/mxpv/podsync/">PodSync</a>, which itself leverages <code class="language-text">ffmpeg</code> and, everyone's favorite controversy, <code class="language-text">youtube-dl</code>, behind the scenes to download audio from YouTube and generate a podcast RSS feed. This, this, is exactly what I was looking for!</p>
759 <p>Nothing to add here, other than bravo, Benjamin. I was able to follow his tutorial pretty much straight through.</p>
760 <p>Wait, I do have something to add. Benjamin suggests using <code class="language-text">rsync</code> to upload your mp3s and xml RSS feed to s3 or the like. I did this initially, but I didn't like the idea of having to mark these files as <code class="language-text">public</code> on s3 in case of some huge accidental traffic surge.</p>
761 <p>So I came up with another idea:</p>
762 <ul>
763 <li>Create a public repo on GitHub and enable GitHub Pages (mine is <a href="https://github.com/rockswhat/listener">here</a>)</li>
764 <li>Init the repo in your <code class="language-text">/data</code> directory on the Raspberry Pi (this is the directory with the generated <code class="language-text">.xml</code> RSS feed and <code class="language-text">mp3</code> audio files)</li>
765 <li>Change your Podsync config's hostname to your GitHub Pages site: </li>
766 </ul>
767 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">hostname = &quot;https://rockswhat.github.io/listener&quot;`</code></pre></div>
768 <ul>
769 <li>Change your cron command to push to your repo (instead of <code class="language-text">rsync</code> to s3):</li>
770 </ul>
771 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">*/15 * * * * cd /home/pi/podsync/data &amp;&amp; git add . &amp;&amp; git commit -m &quot;update feed&quot; &amp;&amp; git push origin main</code></pre></div>
772 <p>Voila! My own podcast feed of YouTube videos, publicly available on the Internet. You can add my feed to Overcast (or your favorite podcast player) with its XML URL:</p>
773 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">https://rockswhat.github.io/listener/listen_laterz.xml</code></pre></div>
774 <h3>C'mon, you really achieved flow from <em>that</em>?</h3>
775 <p>No, not really, but <em>almost</em>. Tutorials, good ones, at least, are guided paths toward some goal, with micro-feedback and mini-frustrations along the way. And these things are well-suited to flow. They can lead you to flow.</p>
776 <p>In my case, this tutorial got my gears turning. Which now gets us into to the <code class="language-text">creative computing</code> side of this article.</p>
777 <p>I think it's important to remind ourselves to have fun with our computers. To use them to make art, make music, create weird stuff, just because we can. There's so much on our computers and phones now thanks to the Internet that can warp our minds and render us into Lost Souls. We often forget the simple joys of computers of the past, back when they were bicycles for the mind, and used adorable floppy disks or CD-ROM drives for games and encyclopedias. I know there's so much "more" that we can do with computers, but we need to remember that they are here to work for us, and not the other way around.</p>
778 <p>As soon as I saw Overcast fill up with audio from my <code class="language-text">Listen Laterz</code> YouTube playlist, I knew I needed to keep going, to see what else I could render from clay into podcast feeds.</p>
779 <h2>Creating a podcast audiobook from Project Gutenberg e-books</h2>
780 <p>Where else can we find a giant repository of open content on the Internet that also happens to be inconvenient to consume?</p>
781 <p>Hello, <a href="https://www.gutenberg.org/">Project Gutenberg</a>! </p>
782 <p>Project Gutenberg is just about the coolest --- and one of the most important -- things on the internet. The fact that it was <a href="https://en.wikipedia.org/wiki/Project_Gutenberg">started on the ARPANET in 1971</a> blows my mind. That is some creative, forward-thinking from its founder Michael S. Hart.</p>
783 <p>My idea here is simple: pick a public domain book, chop it up into chapters, convert the chapters to audio, and then generate an xml RSS feed.</p>
784 <p>I picked Mary Shelley's <a href="https://www.gutenberg.org/files/84/84-h/84-h.htm">Frankenstein</a>, because, why not? I already read it a few years ago during my October "Spooky Reads" habit, but I figured it's the perfect candidate for re-animation.</p>
785 <p>If you've clicked the link to the text on Project Gutenberg, you'll see it's a plaintext nightmare. I'm not ashamed to admit here that I manually just chopped it up into separate text files, rather than writing a script to somehow do this for me. Whatever, ok?</p>
786 <p>First let's make some files.</p>
787 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token builtin class-name">cd</span> pieces
788 <span class="token function">touch</span> intro.txt
789 <span class="token function">touch</span> letter-<span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">..</span><span class="token number">4</span><span class="token punctuation">}</span>.txt
790 <span class="token function">touch</span> chapter-<span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">..</span><span class="token number">24</span><span class="token punctuation">}</span>.txt
791 <span class="token function">touch</span> license.txt</code></pre></div>
792 <p>And then we copy-pasta.</p>
793 <p>Now that I've got my chapters (aka future podcast episodes) all set, we're ready to convert them to audio. What's the easiest way I can do that?</p>
794 <p>My "in-the-zone" brain suggests using the terminal's <code class="language-text">say</code> command. I've used this command a few years ago in one of my earliest creative computing projects: a <a href="/terminal-man-live-in-nyc">live musical performance from a telepresence robot</a>).</p>
795 <p>Surely, I can write a neat little script to loop through my text files and <code class="language-text">say</code> them into an <code class="language-text">mp3</code>. Some Googling for <a href="https://stackoverflow.com/questions/16501663/macs-say-command-to-mp3">advice</a>, and I've soon got this Bash script going:</p>
796 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token keyword">for</span> <span class="token for-or-select variable">i</span> <span class="token keyword">in</span> *.txt<span class="token punctuation">;</span>
797 <span class="token keyword">do</span>
798 <span class="token builtin class-name">echo</span> <span class="token string">"processing <span class="token variable">$i</span>..."</span><span class="token punctuation">;</span>
799 <span class="token assign-left variable">name</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">echo</span> <span class="token string">"<span class="token variable">$i</span>"</span> <span class="token operator">|</span> <span class="token function">cut</span> -f <span class="token number">1</span> -d <span class="token string">'.'</span><span class="token variable">)</span></span>
800 say -v Vicki -f <span class="token variable">$i</span> -o aiff/<span class="token variable">$name</span>.aiff
801 lame -m m aiff/<span class="token variable">$name</span>.aiff mp3/<span class="token variable">$name</span>.mp3
802 <span class="token function">rm</span> aiff/<span class="token variable">$name</span>.aiff
803 <span class="token keyword">done</span></code></pre></div>
804 <p>And it works! Checkpoint reached! The <code class="language-text">mp3</code> files are now sitting happily in their respective <code class="language-text">/mp3</code> folder. I experience a fleeting moment of joy, and then immediately plunge into the next challenge: generating an XML feed.</p>
805 <p>My hack-y brain suggests another copy-pasta. Let's take the feed generated by the Podsync library in the section above, replace pieces of it with Bash variables, and then loop through my text files to jam in the values I want.</p>
806 <p>More googling ensures, including learning a bit more about <a href="https://en.wikipedia.org/wiki/Here_document#:~:text=In%20computing%2C%20a%20here%20document,it%20were%20a%20separate%20file.">heredocs</a>, and I've eventually got this script:</p>
807 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
808
809 <span class="token comment"># edit these to your liking</span>
810 <span class="token assign-left variable">PODCAST_TITLE</span><span class="token operator">=</span><span class="token string">"Castellan - Frankenstein"</span>
811 <span class="token assign-left variable">PODCAST_AUTHOR</span><span class="token operator">=</span><span class="token string">"Castellan"</span>
812 <span class="token assign-left variable">CATEGORY</span><span class="token operator">=</span><span class="token string">"Technology"</span>
813 <span class="token assign-left variable">GENERATOR</span><span class="token operator">=</span><span class="token string">"Castellan"</span>
814 <span class="token assign-left variable">LINK</span><span class="token operator">=</span><span class="token string">"https://whatrocks.github.io/castellan/"</span>
815 <span class="token assign-left variable">IMG</span><span class="token operator">=</span><span class="token string">"https://whatrocks.github.io/castellan/showart.jpg"</span>
816
817 <span class="token comment"># automatic</span>
818 <span class="token assign-left variable">CURRENT_DATE</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span><span class="token function">date</span> -R<span class="token variable">)</span></span>
819
820 <span class="token comment"># order</span>
821 <span class="token assign-left variable">EPS</span><span class="token operator">=</span><span class="token punctuation">(</span>
822 intro
823 letter-1
824 letter-2
825 letter-3
826 letter-4
827 chapter-1
828 chapter-2
829 chapter-4
830 chapter-3
831 chapter-5
832 chapter-6
833 chapter-7
834 chapter-8
835 chapter-9
836 chapter-10
837 chapter-11
838 chapter-12
839 chapter-13
840 chapter-14
841 chapter-15
842 chapter-16
843 chapter-17
844 chapter-18
845 chapter-19
846 chapter-20
847 chapter-21
848 chapter-22
849 chapter-23
850 chapter-24
851 license
852 <span class="token punctuation">)</span>
853
854 <span class="token builtin class-name">read</span> -d <span class="token string">''</span> feed <span class="token operator">&lt;&lt;</span> <span class="token string">EOF
855 &lt;?xml version="1.0" encoding="UTF-8"?>
856 &lt;rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
857 &lt;channel>
858 &lt;title><span class="token variable">$PODCAST_TITLE</span>&lt;/title>
859 &lt;link><span class="token variable">$LINK</span>&lt;/link>
860 &lt;description><span class="token variable">$PODCAST_TITLE</span> (<span class="token variable">$CURRENT_DATE</span>)&lt;/description>
861 &lt;category><span class="token variable">$CATEGORY</span>&lt;/category>
862 &lt;generator><span class="token variable">$GENERATOR</span>&lt;/generator>
863 &lt;language>en-us&lt;/language>
864 &lt;lastBuildDate><span class="token variable">$CURRENT_DATE</span>&lt;/lastBuildDate>
865 &lt;pubDate><span class="token variable">$CURRENT_DATE</span>&lt;/pubDate>
866 &lt;itunes:author><span class="token variable">$PODCAST_AUTHOR</span>&lt;/itunes:author>
867 &lt;itunes:subtitle><span class="token variable">$PODCAST_TITLE</span>&lt;/itunes:subtitle>
868 &lt;itunes:summary>&lt;![CDATA[<span class="token variable">$PODCAST_TITLE</span> (<span class="token variable">$CURRENT_DATE</span>)]]>&lt;/itunes:summary>
869 &lt;itunes:image href="<span class="token variable">$IMG</span>"/>
870 &lt;itunes:explicit>no&lt;/itunes:explicit>
871 &lt;itunes:category text="<span class="token variable">$CATEGORY</span>">&lt;/itunes:category>
872 EOF</span>
873
874 <span class="token builtin class-name">echo</span> <span class="token variable">$feed</span>
875
876 <span class="token assign-left variable">COUNT</span><span class="token operator">=</span><span class="token number">1</span>
877 <span class="token keyword">for</span> <span class="token for-or-select variable">episode</span> <span class="token keyword">in</span> <span class="token variable">${EPS<span class="token punctuation">[</span>@<span class="token punctuation">]</span>}</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
878 <span class="token builtin class-name">echo</span> <span class="token string">"processing <span class="token variable">$episode</span>..."</span>
879 <span class="token assign-left variable">MP3_FILE</span><span class="token operator">=</span><span class="token string">"book/pieces/mp3/<span class="token variable">$episode</span>.mp3"</span>
880 <span class="token assign-left variable">MP3_SIZE</span><span class="token operator">=</span><span class="token string">"<span class="token variable"><span class="token variable">$(</span><span class="token function">wc</span> -c <span class="token operator">&lt;</span><span class="token string">"<span class="token variable">$MP3_FILE</span>"</span><span class="token variable">)</span></span>"</span>
881 <span class="token assign-left variable">UUID</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span>uuidgen<span class="token variable">)</span></span>
882 <span class="token assign-left variable">NEXT_DATE</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span><span class="token function">date</span> -R<span class="token variable">)</span></span>
883 <span class="token assign-left variable">DURATION</span><span class="token operator">=</span><span class="token string">"<span class="token variable"><span class="token variable">$(</span>ffprobe -show_entries <span class="token assign-left variable">stream</span><span class="token operator">=</span>duration -of <span class="token assign-left variable">compact</span><span class="token operator">=</span>p<span class="token operator">=</span><span class="token number">0</span>:nk<span class="token operator">=</span><span class="token number">1</span> -v fatal $MP3_FILE<span class="token variable">)</span></span>"</span>
884 <span class="token builtin class-name">read</span> -d <span class="token string">''</span> next <span class="token operator">&lt;&lt;</span> <span class="token string">EOF
885 &lt;item>
886 &lt;guid><span class="token variable">$UUID</span>&lt;/guid>
887 &lt;title><span class="token variable">$episode</span>&lt;/title>
888 &lt;link><span class="token variable">$LINK</span><span class="token variable">$MP3_FILE</span>&lt;/link>
889 &lt;description><span class="token variable">$PODCAST_TITLE</span>: <span class="token variable">$episode</span>&lt;/description>
890 &lt;pubDate><span class="token variable">$NEXT_DATE</span>&lt;/pubDate>
891 &lt;enclosure url="<span class="token variable">$LINK</span><span class="token variable">$MP3_FILE</span>" length="<span class="token variable">$MP3_SIZE</span>" type="audio/mpeg">&lt;/enclosure>
892 &lt;itunes:author><span class="token variable">$PODCAST_AUTHOR</span>&lt;/itunes:author>
893 &lt;itunes:subtitle><span class="token variable">$episode</span>&lt;/itunes:subtitle>
894 &lt;itunes:summary>Audio generated from the text of this chapter&lt;/itunes:summary>
895 &lt;itunes:image href="<span class="token variable">$IMG</span>">&lt;/itunes:image>
896 &lt;itunes:duration><span class="token variable">$DURATION</span>&lt;/itunes:duration>
897 &lt;itunes:explicit>no&lt;/itunes:explicit>
898 &lt;itunes:order><span class="token variable">$COUNT</span>&lt;/itunes:order>
899 &lt;/item>
900 EOF</span>
901 <span class="token assign-left variable">feed</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${feed}</span><span class="token variable">${next}</span>"</span>
902 <span class="token assign-left variable">COUNT</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$((</span>COUNT<span class="token operator">+</span><span class="token number">1</span><span class="token variable">))</span></span>
903 <span class="token function">sleep</span> <span class="token number">5</span>
904 <span class="token keyword">done</span>
905
906
907 <span class="token assign-left variable">END</span><span class="token operator">=</span><span class="token string">"&lt;/channel>&lt;/rss>"</span>
908
909 <span class="token builtin class-name">echo</span> <span class="token variable">$feed</span><span class="token variable">$END</span> <span class="token operator">|</span> <span class="token function">tee</span> podcast.xml</code></pre></div>
910 <p>Lots of minor bugs and typos later, and I've got my RSS feed! Is this script hideous? Sure, but it works! I'm having fun and that's all that matters right now. Speaking of fun, I also had to create cover-art, obviously:</p>
911 <p><span
912 class="gatsby-resp-image-wrapper"
913 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
914 >
915 <span
916 class="gatsby-resp-image-background-image"
917 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAEDBAL/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABcTZGEGwFIP/EABwQAQABBAMAAAAAAAAAAAAAAAEAAhIhMQMRQf/aAAgBAQABBQLcRI74rbagZ6PdJmJn/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAGxAAAgEFAAAAAAAAAAAAAAAAAAEQICIxseH/2gAIAQEABj8Ct2dHRhT/AP/EAB0QAAMAAgIDAAAAAAAAAAAAAAABETFBIVFhcaH/2gAIAQEAAT8he+D6E3NyPqEi5Xto0LvofDLySG6ToeHZHqCKP//aAAwDAQACAAMAAAAQdCd+/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFREBAQAAAAAAAAAAAAAAAAAAICH/2gAIAQIBAT8Qo//EABoQAQADAQEBAAAAAAAAAAAAAAEAESFBMWH/2gAIAQEAAT8Q3bmhqjz5EUoVrOZ2Jweu3AXNGgu78+S3bhhYp+EK8JXhyZYFLNMenXQKITDs/9k='); background-size: cover; display: block;"
918 ></span>
919 <img
920 class="gatsby-resp-image-image"
921 alt="Cover Art"
922 title="Cover Art"
923 src="/static/9c110a59d1146ed9fc3ad78daa442e0e/6aca1/coverart.jpg"
924 srcset="/static/9c110a59d1146ed9fc3ad78daa442e0e/d2f63/coverart.jpg 163w,
925 /static/9c110a59d1146ed9fc3ad78daa442e0e/c989d/coverart.jpg 325w,
926 /static/9c110a59d1146ed9fc3ad78daa442e0e/6aca1/coverart.jpg 650w,
927 /static/9c110a59d1146ed9fc3ad78daa442e0e/7c09c/coverart.jpg 975w,
928 /static/9c110a59d1146ed9fc3ad78daa442e0e/01ab0/coverart.jpg 1300w,
929 /static/9c110a59d1146ed9fc3ad78daa442e0e/d165a/coverart.jpg 1400w"
930 sizes="(max-width: 650px) 100vw, 650px"
931 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
932 loading="lazy"
933 />
934 </span></p>
935 <p>Finally, using the same GitHub Pages approach, I upload my stuff and import my Franken-pod into Overcast, like so:</p>
936 <p><span
937 class="gatsby-resp-image-wrapper"
938 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 602px; "
939 >
940 <span
941 class="gatsby-resp-image-background-image"
942 style="padding-bottom: 216.5644171779141%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAArABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQBAgUD/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAdWiPONgUKrTViFhsqhHEaAP/8QAHxABAAEDBAMAAAAAAAAAAAAAAgEAAxEEEBIhExQz/9oACAEBAAEFAleBn2RQcMvKuuK0vxVpc/E6sCRbrO3KM8o2UdDtV//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BX//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BX//EAB4QAAIBBAMBAAAAAAAAAAAAAAABEQIQITEgMoHh/9oACAEBAAY/AocnwmnRVjBhHpU0tnUhrhF27//EAB4QAAICAgIDAAAAAAAAAAAAAAABESExcUFhEFHR/9oACAEBAAE/IWKxoXK2L9bEBsjjI1RJG2PXYfcLdEyfxYqxnLORSTp14a7LOwViFEU+xqHEaMH/2gAMAwEAAgADAAAAEKzDwHAP/8QAFxEAAwEAAAAAAAAAAAAAAAAAARARIP/aAAgBAwEBPxBQ4//EABcRAAMBAAAAAAAAAAAAAAAAABARICH/2gAIAQIBAT8QYyP/xAAdEAEAAwEBAAMBAAAAAAAAAAABABEhMUFRcYHR/9oACAEBAAE/EFZA10n5LNdeaIfaxQojkTtUZKPDz2XakNXR9+5Vmv8AWKsipeOBZtkpay/lX6LyaoCqx6zM1qdgJAtWnYVWRAjV03JemexUuFPL42KQqjlIAKCif//Z'); background-size: cover; display: block;"
943 ></span>
944 <img
945 class="gatsby-resp-image-image"
946 alt="Listen"
947 title="Listen"
948 src="/static/e6c3541f973f230827541a91d1128689/e49d1/listen.jpg"
949 srcset="/static/e6c3541f973f230827541a91d1128689/d2f63/listen.jpg 163w,
950 /static/e6c3541f973f230827541a91d1128689/c989d/listen.jpg 325w,
951 /static/e6c3541f973f230827541a91d1128689/e49d1/listen.jpg 602w"
952 sizes="(max-width: 602px) 100vw, 602px"
953 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
954 loading="lazy"
955 />
956 </span></p>
957 <p>I decide to call the project <code class="language-text">Castellan</code> because it has the word "cast" in it and it means keeper of a castle or something, and that feels pretty Frankenstein-y to me.</p>
958 <p>Finally, I give it a listen...</p>
959 <p>And it's a horrible monster. Here, I dare you to listen:</p>
960 <audio controls="controls">
961 <source type="audio/mp3" src="https://whatrocks.github.io/castellan/book/pieces/mp3/chapter-1.mp3"></source>
962 </audio>
963 <p>We've gotta do something about this, cause this thing doesn't sound human at all.</p>
964 <h3>Machine learning to the rescue?</h3>
965 <p>For a brief moment, I escape my zen-like programming mindset, and I go to the orange website and encounter a post about a new text-to-speech deep learning project, and it's damn good. Unfortunately, it's not open source.</p>
966 <p>Surely, there's a good open source text-to-speech project out there. Some more googling, and there is! I find the <code class="language-text">tts</code> project from Mozilla, which deliciously provides a few Google Colab notebooks (aka Jupyter Notebook / Jupyter Lab) with pretrained models ready to go!</p>
967 <p>This is great news. Instead of the <code class="language-text">say</code> command, I'm going to pump my chapters into this trained model and it's going to be awesome.</p>
968 <p>Except the models clip out after three sentences or so. I do some spelunking, and the model is meant to go sentence by sentence, rather than huge swaths of text at once. </p>
969 <p>But that's no problem for me. </p>
970 <p>I'll just split on the <code class="language-text">.</code> period character, generate the audio once sentence at a time, and then concat them all together at the end.</p>
971 <p>Here's a <a href="https://colab.research.google.com/drive/1XpoF6LEU1u9D1H8J4nsvtqNS3Ls58PFs#scrollTo=FuWxZ9Ey5Puj">link to my Colab notebook</a> that you can try yourself. The only things I changed in this notebook are the bottom four or so cells. </p>
972 <p>Here's how I make my machine learning powered audiobook podcast:</p>
973 <ul>
974 <li>
975 <p>Mount my Google Drive, where I've dropped the text files (and I'll store the generated mp3s):</p>
976 <div class="gatsby-highlight" data-language="python"><pre class="language-python"><code class="language-python"><span class="token keyword">from</span> google<span class="token punctuation">.</span>colab <span class="token keyword">import</span> drive
977 drive<span class="token punctuation">.</span>mount<span class="token punctuation">(</span><span class="token string">'/content/gdrive'</span><span class="token punctuation">,</span> force_remount<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span></code></pre></div>
978 </li>
979 <li>
980 <p>Install the <code class="language-text">pydub</code> library to handle audio files</p>
981 <div class="gatsby-highlight" data-language="python"><pre class="language-python"><code class="language-python">!pip install pydub</code></pre></div>
982 </li>
983 <li>
984 <p>Read my text files of the chapters from Google Drive into an array of tuples for processing</p>
985 <div class="gatsby-highlight" data-language="python"><pre class="language-python"><code class="language-python"><span class="token keyword">import</span> os
986 path <span class="token operator">=</span> <span class="token string">'/content/gdrive/My Drive/Castellan/'</span>
987 chapter_path <span class="token operator">=</span> <span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>path<span class="token punctuation">}</span></span><span class="token string">pieces'</span></span>
988 chapters <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
989 <span class="token keyword">for</span> <span class="token builtin">file</span> <span class="token keyword">in</span> os<span class="token punctuation">.</span>listdir<span class="token punctuation">(</span>chapter_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
990 <span class="token keyword">if</span> <span class="token builtin">file</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">4</span><span class="token punctuation">:</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">".txt"</span><span class="token punctuation">:</span>
991 <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>path<span class="token punctuation">}</span></span><span class="token string">pieces/</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token builtin">file</span><span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">)</span> <span class="token keyword">as</span> chapter<span class="token punctuation">:</span>
992 chapter_text <span class="token operator">=</span> chapter<span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span>
993 name <span class="token operator">=</span> <span class="token builtin">file</span><span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token operator">-</span><span class="token number">4</span><span class="token punctuation">]</span>
994 chapters<span class="token punctuation">.</span>append<span class="token punctuation">(</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span>chapter_text<span class="token punctuation">)</span><span class="token punctuation">)</span></code></pre></div>
995 </li>
996 <li>Loop through the array, split each chapter into sentences, skip weird textual issues like newlines and other nonsense, run each sentence through the <code class="language-text">tts</code> model, concat/reduce that sentence with a accumulating wav file of the entire chapter, and then save the accumulated wav file to an mp3 in Google Drive. Phew! That's a mouthful:</li>
997 </ul>
998 <div class="gatsby-highlight" data-language="python"><pre class="language-python"><code class="language-python"><span class="token keyword">import</span> scipy<span class="token punctuation">.</span>io<span class="token punctuation">.</span>wavfile
999 <span class="token keyword">import</span> uuid
1000 <span class="token keyword">from</span> pydub <span class="token keyword">import</span> AudioSegment<span class="token punctuation">,</span>s
1001
1002 silence <span class="token operator">=</span> AudioSegment<span class="token punctuation">.</span>silent<span class="token punctuation">(</span>duration<span class="token operator">=</span><span class="token number">500</span><span class="token punctuation">)</span>
1003 <span class="token keyword">for</span> chapter <span class="token keyword">in</span> chapters<span class="token punctuation">:</span>
1004
1005 <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'processing chapter </span><span class="token interpolation"><span class="token punctuation">{</span>chapter<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">...'</span></span><span class="token punctuation">)</span>
1006 chapter_audio <span class="token operator">=</span> silence
1007 <span class="token keyword">for</span> sentence <span class="token keyword">in</span> chapter<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
1008
1009 <span class="token comment"># skip these</span>
1010 <span class="token keyword">if</span> sentence <span class="token operator">==</span> <span class="token string">'”\n'</span> <span class="token keyword">or</span> sentence <span class="token operator">==</span> <span class="token string">'\n'</span> <span class="token keyword">or</span> sentence <span class="token operator">==</span> <span class="token string">'\n\n'</span><span class="token punctuation">:</span>
1011 <span class="token keyword">continue</span>
1012
1013 sentence <span class="token operator">=</span> sentence<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token string">''</span><span class="token punctuation">)</span>
1014
1015 <span class="token comment"># more skips</span>
1016 <span class="token keyword">if</span> <span class="token builtin">len</span><span class="token punctuation">(</span>sentence<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">0</span> <span class="token keyword">or</span> sentence <span class="token operator">==</span> <span class="token string">''</span><span class="token punctuation">:</span>
1017 <span class="token keyword">continue</span>
1018
1019 <span class="token comment"># generate wav</span>
1020 align<span class="token punctuation">,</span> spec<span class="token punctuation">,</span> stop_tokens<span class="token punctuation">,</span> wav <span class="token operator">=</span> tts<span class="token punctuation">(</span>model<span class="token punctuation">,</span> sentence<span class="token punctuation">,</span> TTS_CONFIG<span class="token punctuation">,</span> ap<span class="token punctuation">)</span>
1021
1022 <span class="token comment"># save wav file</span>
1023 wav_unique <span class="token operator">=</span> <span class="token builtin">str</span><span class="token punctuation">(</span>uuid<span class="token punctuation">.</span>uuid4<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
1024 wav_name <span class="token operator">=</span> <span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>wav_unique<span class="token punctuation">}</span></span><span class="token string">.wav'</span></span>
1025 wav_path <span class="token operator">=</span> <span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>path<span class="token punctuation">}</span></span><span class="token string">wav/</span><span class="token interpolation"><span class="token punctuation">{</span>wav_name<span class="token punctuation">}</span></span><span class="token string">'</span></span>
1026 scipy<span class="token punctuation">.</span>io<span class="token punctuation">.</span>wavfile<span class="token punctuation">.</span>write<span class="token punctuation">(</span>wav_path<span class="token punctuation">,</span> TTS_CONFIG<span class="token punctuation">.</span>audio<span class="token punctuation">[</span><span class="token string">'sample_rate'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> wav<span class="token punctuation">)</span>
1027
1028 <span class="token comment"># read wav file</span>
1029 sound <span class="token operator">=</span> AudioSegment<span class="token punctuation">.</span>from_file<span class="token punctuation">(</span>wav_path<span class="token punctuation">,</span> <span class="token builtin">format</span><span class="token operator">=</span><span class="token string">"wav"</span><span class="token punctuation">)</span>
1030
1031 <span class="token comment"># combine it</span>
1032 chapter_audio <span class="token operator">+=</span> sound
1033 chapter_audio <span class="token operator">+=</span> silence
1034
1035 <span class="token comment"># save mp3 file</span>
1036 file_handle <span class="token operator">=</span> chapter_audio<span class="token punctuation">.</span>export<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>path<span class="token punctuation">}</span></span><span class="token string">mp3/</span><span class="token interpolation"><span class="token punctuation">{</span>chapter<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">.mp3"</span></span><span class="token punctuation">,</span> <span class="token builtin">format</span><span class="token operator">=</span><span class="token string">"mp3"</span><span class="token punctuation">)</span>
1037 <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'done with </span><span class="token interpolation"><span class="token punctuation">{</span>chapter<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">!'</span></span><span class="token punctuation">)</span></code></pre></div>
1038 <p>As you might have guessed, the above cell is the end result of much experimentation. Jupyter Notebooks make this iterative development insanely easy, and I only was able to pull things together like this after I'd figured out each individual piece. Jupyter Notebooks are like REPLs + documentation in one.</p>
1039 <p>Once I had this all set up, I hit <code class="language-text">run all cells</code> and went to sleep. When I woke up, I discovered that about half of my chapters had successfully processed! The only reason it didn't chug through all of them was the Google can randomly preempt your machine at any time, or they have a 12 hour timeout for CPUs. This felt a bit like it must have felt when you feed all your punchcards into the IBM mainframe, and there was some bug halfway through your stack.</p>
1040 <p>No worries, I just removed the already processed chapters from my text files, and re-ran it. I can deal with this annoyance, because this is a toy project. And it's free. And my laptop fan is silent, almost like it's a brand new M1 Macbook, because I'm running this on Google machines.</p>
1041 <p>Want to hear the result?</p>
1042 <audio controls="controls">
1043 <source type="audio/mp3" src="https://whatrocks.github.io/castellan/book/pieces/bettermp3/chapter-1.mp3"></source>
1044 </audio>
1045 <p>Dang!! That's so much better. Sure, it's still a little weird. But it's actually listen-able now. Thank you, machine learning!</p>
1046 <p>I moved these files from Google Drive onto my local, and then I re-ran my XML generator script, changing the title to "Frankenstein Jr" and referencing the new better mp3s, and then pushed to Github Pages. </p>
1047 <p>Here's a <a href="https://whatrocks.github.io/castellan/podcastjr.xml">link to the podcast feed</a> that you can add to your own player.</p>
1048 <p>Sure, there's still problems. I've encountered these occasional weird sections where the <code class="language-text">tts</code> voice just completely glitches out, perhaps due to the weird encoding of Project Gutenberg files (could be a <code class="language-text">\t</code> character or something). I know that much of machine learning is about "cleaning up your data," so I could probably spend more time doing that, but Frankenstein-ly, I've already flowed onto my next idea.</p>
1049 <h3>Parse a screenplay and create voices for each character</h3>
1050 <p>Wouldn't it be amazing if you could recognize the characters and give them each a unique voice? That's gonna be hard with novels, but you know what's much easier: screenplays! They've got the characters broken out into discrete, named sections, like this:</p>
1051 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text"> PRINCESS
1052 I love you.
1053
1054 SMUGGLER
1055 I know.
1056
1057 The smuggler is lowered into the machine. HISSES and SQUEALS. Everyone, including THE BIG BOSS, turns away.</code></pre></div>
1058 <p>I just made this scene up ^, okay?</p>
1059 <p>I could parse a screenplay, then pass each character's lines into a model with a specific voice.</p>
1060 <p>Oh! I know there's sentiment analysis models. What if I first feed the sentences into a sentiment analysis model, and then feed that sentiment into the text-to-speech model.</p>
1061 <p>Now, we're talking...</p>
1062 <p>You can see where this is going. My brain is reeling with possibilities and new directions and new ideas.</p>
1063 <p>This is creative computing. This is why I love programming and its ability to get you into the flow state.</p>
1064 <p>I haven't tackled the screenplay parsing bit yet, but maybe I will. I'm just grateful that I was able to have fun with this project. This is how I want to live my life, being creative, having fun. This is how Csikszentmihalyi describes a life with flow:</p>
1065 <blockquote>
1066 <p>Such individuals lead vigorous lives, are open to a variety of experiences, keep on learning until the day they die, and have strong ties and commitments to other people and to the environment in which they live. They enjoy whatever they do, even if tedious or difficult; they are hardly ever bored, and they can take in stride anything that comes their way.</p>
1067 </blockquote>
1068 <p>I couldn't have put it better myself, obviously. John Cassidy of Klutz Press, <a href="/create-wonderful-things-be-good-have-fun">my favorite publisher</a>, does a great job rephrasing this sentiment, though:</p>
1069 <blockquote>
1070 <p>Create wonderful things, be good, and have fun.</p>
1071 </blockquote>
1072 <h3>P.S. Don't you know about LibriVox, dude?</h3>
1073 <p>Yeah, so there's already a project called <a href="https://librivox.org/">LibriVox</a> that creates audiobooks from public domain texts using real human being voice volunteers. They even provide RSS feeds that you can use in your podcast player. Did I know about this before I went down this rabbit-hole. No! Would it have changed anything no! Maybe? It could have prevented me from exploring ML for this project, and that would have been a bummer. </p>
1074 <p>My takeaway is that your ideas are probably not unique, but that doesn't mean you should explore them and find your own path forward. That's the path to creativity and fun.</p>
1075 <p>Okay, enjoy the feeds!</p></content:encoded></item><item><title><![CDATA[School Supplies]]></title><description><![CDATA[Somedays I remember that I have a loop pedal. Those are the best sorts of days. Somedays that leads to a new song. A loop pedal is a stack…]]></description><link>https://www.charlieharrington.com/school-supplies</link><guid isPermaLink="false">https://www.charlieharrington.com/school-supplies</guid><pubDate>Mon, 16 Nov 2020 00:00:00 GMT</pubDate><content:encoded><p>Somedays I remember that I have a <a href="https://amzn.to/2H8SH8O">loop pedal</a>.</p>
1076 <p><span
1077 class="gatsby-resp-image-wrapper"
1078 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1079 >
1080 <a
1081 class="gatsby-resp-image-link"
1082 href="/static/105cc972e126fcbe5ca46d520c2dcad7/8efc2/loop.png"
1083 style="display: block"
1084 target="_blank"
1085 rel="noopener"
1086 >
1087 <span
1088 class="gatsby-resp-image-background-image"
1089 style="padding-bottom: 123.31288343558282%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAACXBIWXMAABYlAAAWJQFJUiTwAAAGfUlEQVQ4yyWU20+b2RXF/We0UlulapKGXCAhQAw2EBtjjO/Y2P58xcY2NsYGfME22EAwYDB3EiAJGZjMTBLaTjRpm2k6oz6k6kjTt7bqTaMkM2mUahQ1fUgf+/TrSfqw9X06Olp7rbPX2rL5iSRXMnGW8sNsz4xyUCtwb3uGo60yP9mc5GhDlPjeqaW5vpxnfjrHhN/ISj7Mvb05Pru/w42rs8xMp3n4y4+QFRIhyqMRFrNDbJVT3FzMcXulwIeromoTHFTTHCxl2V8YZb1a5Gptmo1ihLmkl6VsiIf3Nnny50f89U+/YntrHlk+5qecDFIZD4uuca6WE+wsFri6UGS3WuBwc4791Rl25lIszabZXi6J/6Q4K7JTzbFxZYzHn3/Iv179ka+f/h5ZJh6klIkxNxFnYUKwXJphb22e3UqaW9UM1xezbFWyzBVGyKZCrC5OcW0+w95qmaP31/jFz/a4sTXLF4/vc/++kJyI+EjFfIwPeylNTVCdKzGXjXIlGyGfDJCJe8gPS5SyMaJhD2PJiGha5MbmFY5ub/Lb3xzx5e8ecHCjRjGfRhYLSSTCEtlM6v8V9zIe85IMOclFJCZjEvmwjdSQl0Q8TNDnIi/uFfJjTBXTTJdyLC6UyWeTOKx6ARh0kUmPMpoIMxK0MxZ2iQYuFkWT9dgA2ZGQYBzn1tIsG5M5yuEAOb+HaY/EgMNMNOQmNujH7/PSo+1GFgkHCQUk/E4DfoeR4aCDeNRDUd/FfHqEjx/+lIyQUsnnWV5dYHKrQK1W5WYkyoBJT7GYYWO9xsr6GqnxcWQeuwGvvYeQZMHnsmLUddF0/iwjTfWMiue4tl1DcrnI5iYolkrkJzNUlze5OTSMQ6ems0OBtrsLg74Xk9mCLOC2EPD2YzH20qm4RLfyIiadkoK2HVW7nOZzDZgNffjTA4yUxKSzaZLLY+wHQ1QmRqjMFqjOz7K2usL8Yg2ZRqOhubkZ5aVGelVyDBoF1i45uwKsYNBRDvhIeyWiLhvzk0U2VtdYXqmyH42QS4aYLYxRmS5QmRHumCkim6vO8Ojnt4QFFjjcnebaVp5bbjP/Vut5aXfzlU3i7z1G/qLo5GmfnX/4/HwbifFE8jExNEAyFiQ/lqAspu6wmZAlh0MsiwTkEi6WJ4dYnBzgjkXLC0eQr2Jpnpi9PLEN8Pz4RZ6Ks6+TeV6MF/nWEeK9KZGcrRlW5nLvLJOIDyLrbjqHTt6Apuks6vqT1J/4Ptunz/K6Q8/TJh3P6tQ8ae/j6WkVzxRGnjv8vAzGeekM8MlygU/vLpHwW7lSGuNvf/gcmdOkxmvpwmdW4zF0YOhV8Km8jTd6N8/1gplK4rncyjNrlG/sYV5EUrwKJ/imz0uoXUlP83m0CgXzJWGtqTFk/QYVDqMKp/EyLgFo1rbxuK2D184w/9T7eGUK8brVypvvNPOfM+28cQ/yX1+ElxoT00EJS1cnVQF2XWTbadIge8vObe7CIxhK5suEtAqWOjoI2ftJSS4KgQCVSIS1cJR9t5+jcIzPEkm+NDkZEVZzmo1imczgsXQTjYaR+QWgx6TCJxg6TJ2kBGBBAF426DFZTBitlnfVJ8xtF/HyDQ7iFCnZ9oUJKTsJuB0Mea1EBkMc3NxB5hbM3kp16hRY9ErSXa0UO1VohOstRhO9PTqMegM2qw2H3YHX48MXGOQgGMUjl6NRd4npRjm8vsG9g2vIfBYhtVeJ1NNKv0Gw626jqNKgNpkxGQRDoxmz2Yq1z4G9X8Lp8uLxhzgUpT11Akn48fbeCh9dX+Hue9vI+jRybN2tSNpWnAYlZSE5pe5GLdgZeg3odQYRPTM2i51+mxOnw43PO8AHgSE0jRfxuyXu7FZ5/9oid/fXBUOnBftbUFULDjGUpS6lANSiFcx0AlRlMtEh5Ldb+1D3O9A6Jcw+AegPY2lvfvcc++tzHG5V+GBXZNnvE/ssMoDfZsAqpFcULXxxsolfH2/k0bFGHvywiaM6JYcNKnaaNawLw6/29PPI6MCgqH/3hkvTedZmcuwtTyNTnj9Fd4ccyWFDctrpsxjp16ixiIVhPN2A41gdUw1KanVyVr57gv1jZ3jwgwZuXmpHefEkncoOseXDxF0mIqJk3S31qJrO0N5wEuX5OjpbLtDe2kxbawstLY2cq6/jVN2POP7jY9SdPcmFi6dpaTyFTnmB1lPfQ9GmwKS5jM3Yg7/fyv8A7LNW1pDPdMIAAAAASUVORK5CYII='); background-size: cover; display: block;"
1090 ></span>
1091 <img
1092 class="gatsby-resp-image-image"
1093 alt="loop pedal"
1094 title="loop pedal"
1095 src="/static/105cc972e126fcbe5ca46d520c2dcad7/a6d36/loop.png"
1096 srcset="/static/105cc972e126fcbe5ca46d520c2dcad7/222b7/loop.png 163w,
1097 /static/105cc972e126fcbe5ca46d520c2dcad7/ff46a/loop.png 325w,
1098 /static/105cc972e126fcbe5ca46d520c2dcad7/a6d36/loop.png 650w,
1099 /static/105cc972e126fcbe5ca46d520c2dcad7/8efc2/loop.png 828w"
1100 sizes="(max-width: 650px) 100vw, 650px"
1101 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1102 loading="lazy"
1103 />
1104 </a>
1105 </span></p>
1106 <p>Those are the best sorts of days.</p>
1107 <p>Somedays that leads to a new song.</p>
1108 <h3>A loop pedal is a stack</h3>
1109 <p>A loop pedal is a magical device that lets you record in stacked layers. It's almost like editing something in Figma or Sketch, except each layer is the same "shape" as the first or root layer. And by <em>shape</em> here what I actually mean is <em>length</em>.</p>
1110 <p>Like other guitar pedals, a loop pedal lives somewhere between your guitar (the input) and your amp (the output). It receives the input from your instrument and "does stuff" with it, before sending it onwards. For example, maybe you want to add some <strong>distortion</strong> or <strong>flange</strong> -- OR BOTH. Your guitar pedals are like the world's simplest data flow pipeline. </p>
1111 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">Guitar -&gt; Distortion Pedal -&gt; Flanger Pedal -&gt; Chorus Pedal -&gt; Amp</code></pre></div>
1112 <p>No cycles or braching in this DAG. I mean, maybe there could branching. Or cycles. I bet some guitarists do that, somehow. But that's beyond my pay grade.</p>
1113 <p>Let's go back to our loop pedal and record something.</p>
1114 <p>Imagine that I tap the loop pedal with my foot, play the following, and tap the pedal again.</p>
1115 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">X X X X X X X X</code></pre></div>
1116 <p>Each X here might represent one "measure" or "bar" in music theory land, but that's mostly unfamiliar territory for me, too, so instead we can say that we've played the X chord (I wish there was an X chord) 8 times of some fixed duration.</p>
1117 <p>This is now our root layer for our stack.</p>
1118 <p>By default, the pedal will keep "looping" this layer. You can double-tap it to "stop the loop" (maybe you'd do this when you reach a new section of your song, like the chorus).</p>
1119 <p>Otherwise, now it's time to add some more layers. Tap the pedal again and you add the following layer:</p>
1120 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">X X X X X X X X
1121 y y y y</code></pre></div>
1122 <p>Maybe <code class="language-text">y</code> is an awesome solo or something. Then you do it again.</p>
1123 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">X X X X X X X X
1124 y y y y
1125 z z z z z z z z</code></pre></div>
1126 <p>Now, this pattern will keep repeating over and over, expanding to the right.</p>
1127 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">X X X X X X X X X X X X X X X X --&gt;
1128 y y y y y y y y --&gt;
1129 z z z z z z z z z z z z z z z z --&gt;</code></pre></div>
1130 <p>What happens if you are recording a layer that extends longer than the root layer? Good question. The recording simple wraps around to the beginning of the root layer and you can keep going. However you will notice that you are already hearing what you recorded for this layer, so that can sound strange. Let's show an example.</p>
1131 <p>I'm going to add a layer that just plays ascending notes up the guitar neck (a really crappy solo) and have this layer wrap around.</p>
1132 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">X X X X X X X X
1133 y y y y
1134 z z z z z z z z
1135 1 2 3 4 5 6 7 8</code></pre></div>
1136 <p>So far, so good. Why not keep going...</p>
1137 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">X X X X X X X X
1138 y y y y
1139 z z z z z z z z
1140 1 2 3 4 5 6 7 8
1141 9 10</code></pre></div>
1142 <p>As you can see, my latest layer wrapped around to the beginning, such that when I played the <code class="language-text">9</code>, you would hear the <code class="language-text">1</code> at the same time. This may or may not be what you want to do. I'm guessing.. no. Especially if you're playing some epic Type II guitar solo.</p>
1143 <p>Thus, one of the more common use cases of the loop pedal is to lay down some repeatable groove that you can sing various verses or solo over. Instead of making the "unique" or "changable" a layer in your loop stack, you just keep that off to the side.</p>
1144 <p>Reader beware that my loop pedal is relatively simple. There are other, better, more-intense loop pedals where you can have multiple different loop stacks going at the same time. For example, maybe you've got a loop going for the verses and another separate loop stack for the choruses in your song.</p>
1145 <p>But I appreciate the simplicity of my pedal. The one thing I still haven't figured out is whether or not you can do the <code class="language-text">pop</code> stack operation on it. The <a href="https://www.boss.info/us/products/rc-1/">documentation</a> suggests that you can erase the top layer of the stack, but I haven't figured it out yet. For now, I've been living in a <code class="language-text">push</code> only world, flubs included, which you'll hear in the next section.</p>
1146 <h3>School Supplies</h3>
1147 <p>Hello, world, this is your premiere of SCHOOL SUPPLIES, the third single off my forthcoming EP: "Greetings From Buttzville, NJ":</p>
1148 <iframe width="560" height="315" src="https://www.youtube.com/embed/o57rqh88CJY" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
1149 <p>The chords, for those interested (looking at you, The Grones) are:</p>
1150 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">Verse
1151 G Bm Em C
1152
1153 Chorus
1154 D G C
1155
1156 Outro(key change!)
1157 A C#m F#m D</code></pre></div>
1158 <p>That's right! I pulled off my first key change. Thank you, Taylor Swift "Love Song" for the daily inspiration.</p>
1159 <p>I'll leave the lyrics as an exercise for the reader.</p>
1160 <h4>Uncle Mike's Tips for Running a Zoom-Based Open Mic Night</h4>
1161 <p>Big thanks to Uncle Mike for organizing our second Zoom family open mic night. He runs a tight ship, mostly trying to prevent me from launching into a <a href="/bullet-train-to-merlins-grave">Bullet Train to Merlin's Grave medley like at Popestock</a>.</p>
1162 <p>To paraphrase his tips:</p>
1163 <ul>
1164 <li>Each performer gets one song, of "normal song length" (so that means no Tubular Bells)</li>
1165 <li>Announce the order in advance</li>
1166 <li>Tune up your instrument when you're on deck or in the hole</li>
1167 <li>Don't worry about messing up, start over if you need to, this is fun. Music is the best!</li>
1168 <li>Change your zoom settings to "Original Sound"</li>
1169 </ul>
1170 <p>This last one is key. Zoom does some "stuff" to make things sound "good" during boring work meetings that are boring. It's not optimized for fun singalongs that are fun. So, it's pretty much essential to <a href="https://support.zoom.us/hc/en-us/articles/115003279466-Enabling-option-to-preserve-original-sound">follow these steps</a> when you're singing and strumming over Zoom, unless you're trying to incorporate cosmic waves of hollow nothingness into your jam. Maybe you are?</p>
1171 <p>Oh, you should check out Uncle Mike's music podcast, <a href="https://www.tellyouwhatpodcast.com/">Tell You What! The Podcast</a>. He interviews young musicians and bands on the run and it's fun and great and keeps you on your toes with new upcoming artists.</p>
1172 <p>As Uncle Mike says, music is the best!</p></content:encoded></item><item><title><![CDATA[Unexpected, Useless, and Urgent]]></title><description><![CDATA[Or, What RSS Gets Right Abraham Lincoln once said, "The medium is the message. And San Francisco summers are cold af." Putting that aside, I…]]></description><link>https://www.charlieharrington.com/unexpected-useless-and-urgent</link><guid isPermaLink="false">https://www.charlieharrington.com/unexpected-useless-and-urgent</guid><pubDate>Sun, 25 Oct 2020 00:00:00 GMT</pubDate><content:encoded><h4>Or, What RSS Gets Right</h4>
1173 <p>Abraham Lincoln once said, "<a href="https://en.wikipedia.org/wiki/Marshall_McLuhan">The medium is the message</a>. And San Francisco summers are cold af."</p>
1174 <p>Putting that aside, I've been thinking a lot (uh-oh) about why I like opening up my RSS reader app so much. And I'm not <em>just</em> talking about its looks, even though it's super cute (I'm using the free, open-source, and all-around neato <a href="https://ranchero.com/netnewswire/">NetNewsWire</a> for my RSS needs).</p>
1175 <p>No, I'm talkin' about them RSS <em>feels</em>.</p>
1176 <p>Why does using opening my RSS inbox feel so much better than typing in gmail.com or tapping the iMessages icon or, heavens forbid, opening up Twitter?</p>
1177 <p>With my sweet-sweet RSS, there's no anxiety. There's no guilt. In our time-tracking Screen Time home screen widget era, there's almost a baccanalian decadance to sifting through an RSS inbox, like watching honey drip from one of those wooden combs in a cereal commercial. Or -- back when we were allowed -- going to the library and reading the newspaper from those weird wooden dowels.</p>
1178 <p>It should go without saying that this feeling does not extend to the other inboxen in my life. And I'd like to understand why -- and see if I can do anything about it.</p>
1179 <h2>A framework for messages</h2>
1180 <p>Butchering some data pipeline terms, let's define an inbox (e.g. email, social media, text messages, RSS, phone calls) as a sink for messages from various data providers, where these messages wait for human-in-the-loop processing (in this case, you).</p>
1181 <p>O! Ye of little time! How are you meant to evaluate the "importance" of a given message? Let's explore that across two vectors: (1) prior awareness of the message's sender and (2) usefulessness of the message contents.</p>
1182 <p><span
1183 class="gatsby-resp-image-wrapper"
1184 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1185 >
1186 <a
1187 class="gatsby-resp-image-link"
1188 href="/static/40108f71e98124d2ba54690789f9cb9e/a1792/msggrid.png"
1189 style="display: block"
1190 target="_blank"
1191 rel="noopener"
1192 >
1193 <span
1194 class="gatsby-resp-image-background-image"
1195 style="padding-bottom: 84.04907975460122%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAABYlAAAWJQFJUiTwAAADPklEQVQ4y31US2gbVxSdbdelm24M2bSLdpFNWrLqohQChjaLrLJIGgwt2bilLi3UFIppwUkWMUQLQxaBlOK6DvjTUihqilVZdm3XsiVL8kiaGc3oM5Lmp3+s7+m7N5FxjNw7PN578+6ce+eec5+EETYYDHiQdTodJBIJKIrCs2EY0HUd6XQa0WgUruuefEMmjQI7Pfd6PQYgoGQyiVwuh2w2y4CyLMOyLHS73ZMkpPMyJDs+PkY8HufsyuXySz6O43AgVVVRKpVO3kvnZVYoFDgrLaMhZ+SgqArSShoHBwccQE4l+Z2qaexDGVMC0lmw4ZoyQ1+suwMYZlb8uzgX+729PfT7ffapux7azRavTdNEo14/P0OqT7PRwGer07j8y0eYDTxAp91B5DDK57/+G8LbCzO4sjwHwynBsWxUqlVIBDCM6HkewuEwvGoFhqLjj+hfuDR/BVd/m8BF3/sI61GoSZWJuvb4Hi78/B1en5/CN38uom45sF1nNMv0yHEZMeMI1x99isebi/jc9xW0fAZHRzL7fbg0h3eX7mD8p7v4PrQGL19E2bYgNZtN1hcVlQpeqVT4A1rzr9sKfvx7Edlijvcxqq0wq1HFSjiE0PY/vM8LORHzEjG2vr6OYDAIv9+PSCTCDhsbG9AEg27JQrNSh2s7XPhQKMRBnzWaTEhN1K0q9pubm7BtG1KtVmPkhiCgLliiQUYOBKAXitjdC8MUwI7jYmtri2ttlMzn3aOkUCia2NnZYZGPFDbLJnaItuAq4JvE/tQbWL7/pZBND+lUms/9P8xje/xr+CdmUPMqKIjgnOGQZZpJzFQ7W0RKqaLdYtvYuvkK3G8vwP/xayju+6Hny8ibeTx9uID4+DR+f+82oqtPUbCEdAjwtPYIuN1ui7knukCFXcxj94s3cXhDQnhyDF5BhaZn0ThuITjtwzuvjmHqrQ9Q3o2j6NrwhNCls4IemiJYF82BshaH/GQWlhoBqTURj/F5VTfxya0JrC2v8J4ujepQ2KNaL5fLC5ZFRqKPU0YRclrFoeiSQCDAMkuJPqa6aZkMMmKQ7Fqt1v/fNjT3el30Om10aYhrigaVhS4CAqD14EWnkf0H3WHSUnyUkkQAAAAASUVORK5CYII='); background-size: cover; display: block;"
1196 ></span>
1197 <img
1198 class="gatsby-resp-image-image"
1199 alt="grid"
1200 title="grid"
1201 src="/static/40108f71e98124d2ba54690789f9cb9e/a6d36/msggrid.png"
1202 srcset="/static/40108f71e98124d2ba54690789f9cb9e/222b7/msggrid.png 163w,
1203 /static/40108f71e98124d2ba54690789f9cb9e/ff46a/msggrid.png 325w,
1204 /static/40108f71e98124d2ba54690789f9cb9e/a6d36/msggrid.png 650w,
1205 /static/40108f71e98124d2ba54690789f9cb9e/a1792/msggrid.png 780w"
1206 sizes="(max-width: 650px) 100vw, 650px"
1207 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1208 loading="lazy"
1209 />
1210 </a>
1211 </span></p>
1212 <p>The sweet-spot is that upper row: useful messages from both "people we know" and "people we don't know." Whereas if you're in the bottom row, you're gonna have a bad time: useless messages are never... useful.</p>
1213 <h4>Filtering on sender</h4>
1214 <p>The bottom right quadrant is easy to visualize: robo-calls about your non-existent car's expired warranty, social media ads, junk mailers in your meatspace mailbox. </p>
1215 <p>You might think, perhaps, that we can use the "Expected Sender" vs "Unexpected Sender" filter to avoid this quadrant. In fact, this is what Apple allows you to do with the new <a href="https://support.apple.com/en-us/HT207099#:~:text=To%20turn%20on%20Silence%20Unknown,in%20your%20recent%20calls%20list.">Silence Unknown Callers</a> feature in iOS 14 (which doesn't actually prevent the calls, but immediately sends unknown calls to the dead-letter queue that is your voicemailbox).</p>
1216 <p>The problem with this blunt approach of dead-letter queueing the right column is that you're going to miss the serendipity of the upper right quadrant: calls from unexpected sources with useful information. Given <a href="/colon-cancer">my recent cancer diagnosis</a>, I've had tons of important, useful calls from unknown numbers every single day, from doctors and the like -- calls that I want to triage quickly. Sending all calls from unknown numbers straight to voicemail would just be yet another inbox to maintain. Worse, I might miss something important in the upper right quadrant.</p>
1217 <p>A lighter touch approach here is to auto-classify your messages into buckets based on sender. Gmail now does this with their "Primary", "Social", and "Promotion" tabs. Everything's still "in your inbox", but now you can usually just "Select all" on that Promotion tab and safely send those messages straight to the netherworld.</p>
1218 <p>The bottom left quadrant is where your unique lifeforce is slowly chipped away, doomscrolling through your high school classmates' life updates or, gasp, political views. Don't get me wrong -- I really enjoy Instagram and it makes me happy to see people I know doing cool, cute stuff. But I know it can get real bad in this quadrant real quick. Unfollowing and/or muting is key here.</p>
1219 <h4>Filtering on content</h4>
1220 <p>Okay, so, if filtering on sender alone doesn't work, can we use the message contents to figure out if a given message is going to be useful?</p>
1221 <p>We're now talking about <em>pre-processing</em> the messages in our queues.</p>
1222 <p>In the days of future past, you might have employed a staffer to "sort through your office mailbox" to do this. How very Don Draper of you. But in today's era of secure password managers and 2FA, we ideally don't have <em>that many</em> other people in our digital inboxes. The inbox providers are aware of this, and they're starting to provide some tools to help here -- as long as you're okay with them "reading" your messages.</p>
1223 <p>Gmail, for example, has gotten pretty darn good at spam detection. They're "reading your emails" and dropping the bad ones into your "spam folder" dead-letter queue. Maybe, once in a blue moon, they false-positive something that you have to go spelunking into that elephant graveyard to find. But I'm never annoyed by this, because when I see absolute garbage that they've blocked for me day-in and day-out, I'm hashtag grateful again.</p>
1224 <p>This approach, however, isn't possible with all mediums. There's no way to pre-filter on content for an incoming phone-call, for example.</p>
1225 <p>And the tradeoff in pre-filtering on content is, of course, privacy. </p>
1226 <p>If you're down for your inbox provider to "scan" your messages, then they can potentially start to do some smart stuff, like "bubbling up" useful messages or getting rid of bottom row crud.</p>
1227 <p>But, more likely than not, they're also reading them for another purpose.</p>
1228 <h4>The cost of free</h4>
1229 <p>Many of these inbox platforms are free (e.g. social media, Gmail), and someone's gotta pay to keep that spam algorithm ticking. And that someone is you.</p>
1230 <p>Most ads are squarely in the bottom right quadrant. "Good" ads -- I'm talking about those Instagram candles you keep converting on -- are upper right quadrant. The platforms do their darndest to make sure their ads are as upper-right as possible, but they can't guarantee that. YouTube keeps asking me my age because it's genuinely confused as to why my viewing habits fluctuate between watching someone clean old Apple II and VIC-20 computers and the latest Super Mario 3 speed-runs. </p>
1231 <p>And, c'mon, I'd rather just not ever see ads in the first place.</p>
1232 <p>Okay, tough guy. Are you willing to pay for an ad-free inbox then?</p>
1233 <p>Maybe? Ugh. Yes, there's a bunch of new players in the space who are emphasizing privacy and going ad-free. But am I going to willingly add yet another recurring subscription to my life? The Mandalorian is about to come back, and I'm already bracing for the impending Disney+ subscription. </p>
1234 <p>I'll come back to this, because our analysis is still missing two important features.</p>
1235 <h2>A framework for inboxen</h2>
1236 <p>So, far we've only explored the features of an individual message -- not the nature of an inbox itself.</p>
1237 <p>Regardless of an individual message's usefuless or your prior awareness of its sender, an inbox has two other important features that contribute to our mental well-being: (1) typical message volume and (2) expected urgency of triage.</p>
1238 <p><span
1239 class="gatsby-resp-image-wrapper"
1240 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1241 >
1242 <a
1243 class="gatsby-resp-image-link"
1244 href="/static/ed577922c604b352cc74374b10cd9443/2e195/inboxgrid.png"
1245 style="display: block"
1246 target="_blank"
1247 rel="noopener"
1248 >
1249 <span
1250 class="gatsby-resp-image-background-image"
1251 style="padding-bottom: 85.88957055214723%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAABYlAAAWJQFJUiTwAAADOklEQVQ4y4VUS2gTURQNLgRdqUs3Iq5diDtLtyIobnSpKG4sKIILCwURFy4UQV34WfgBq2h10YXa4CJItLaVlqTt2MnPyWTSmclnkslMZjL5TZLjuy+mrT964fGYN2/uPfeecyaAf0Sv11vbaXW7Xbiui1qthmazyZfneajX67/dowhsloyi1Wphfn4e0WgUq6uriMfjWFlZgSzLf30b2AyhbdscHSHqdDprdwjtAKXjOPB9f3OEpmkiuhhFLB6DKIrQdR2NRgOWZSGRSECMxZD6kUIymUS1Wu0n3NjaYF4U+XweRsmA59bQsD1UyiY0XUMkEkFGycAwDNRtBx5bdtWGoii8WOBPZIPIZrN8N9wygvEQipbBn5OpJHq/ik6nRXzP9e9RNzSGwEZ0VLVYLPKWVDb8XDGPo69PY+/bIRx7fgqmbUKS0uixed0Nv8P28SvY83gUn1IC6lVCWl1PSJFKpTh7ZbMMXdEQ1QQcuncUVz/dwvDD45iTFpDL6vDqHoafXMf+iRvY93QMlz5PwK84KFXMfsuUlBijNShAgyZ2rwdv41HoGZ5+HIdTd/BDkgBG9s3lEI6/uYPLrx/ho/wddavKZl7qJyQCwuEwpqenOZMUxGrH76DVbCEiR+F6Lj+PMWZJl+j0IGVkFPQcP9dzOZQGCanNYDCI2dlZ3jbFwsIClpYWGaI01JwFSVYgCMv4MDXFBR5ncpF1FWnGuCAIHBBxwBOSOEkO5ACivo9E5LtjFhF//wBp4Rt/llhBnwk8GRWwNBHEXCgMr9lAuVTuI9xICqmd+5OdSWxWtZqLL9cOQzi7BZMXDsLRGSpFheVW8eryDUQOjODt0Dmkl0SmAGu95YGYC4UCQqEQe2FAzxdhKAksj+yAProbyfPboM9NIluoMGHLCD18gRdHRjA+dAaZ4FeYNQeWWVlnmaLdbnOBkmd15opGu4vEyzHEL+6CeOcEPMdGJqMwkntYvP8GO7dux7WT59jMfBhMajXmqv86RVPV/q/KZ57Oq/AabbT9LkRGII2l0fUxOzMDjYmfviQjrFnvX14ms2uahiIbQ7lisXHkOWpCqLJiVJC6KTDJqasqP6POfgJBp9X/o5uBvwAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
1252 ></span>
1253 <img
1254 class="gatsby-resp-image-image"
1255 alt="inbox"
1256 title="inbox"
1257 src="/static/ed577922c604b352cc74374b10cd9443/a6d36/inboxgrid.png"
1258 srcset="/static/ed577922c604b352cc74374b10cd9443/222b7/inboxgrid.png 163w,
1259 /static/ed577922c604b352cc74374b10cd9443/ff46a/inboxgrid.png 325w,
1260 /static/ed577922c604b352cc74374b10cd9443/a6d36/inboxgrid.png 650w,
1261 /static/ed577922c604b352cc74374b10cd9443/2e195/inboxgrid.png 782w"
1262 sizes="(max-width: 650px) 100vw, 650px"
1263 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1264 loading="lazy"
1265 />
1266 </a>
1267 </span></p>
1268 <p>The message volume thing is straightforward. Some platforms have a never-ending feed of messages that you can "enjoy," others not so much.</p>
1269 <p>At the same time, each inbox medium connotes a inherent sense of urgency. <strong>The medium is the madness</strong>, if you will. No matter what the message says or who sends it, there's a differentiated inbox-level "urgency punch" to your lizard brain whenever any single message (spam or not) comes flying in.</p>
1270 <p>Let's be more specific with some typical inboxes in our lives:</p>
1271 <p><span
1272 class="gatsby-resp-image-wrapper"
1273 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1274 >
1275 <a
1276 class="gatsby-resp-image-link"
1277 href="/static/f85539e1b1b5e52ca78c881a86f47601/f941f/inboxoverlay.png"
1278 style="display: block"
1279 target="_blank"
1280 rel="noopener"
1281 >
1282 <span
1283 class="gatsby-resp-image-background-image"
1284 style="padding-bottom: 89.57055214723925%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAABYlAAAWJQFJUiTwAAADlUlEQVQ4y31US28bVRj1GokdEhtY8gPYgIrYIMEGiQU7FpQNUsWCVqW0AiGhqKJFiiilqDyUPqTQRxTaOE2sFmM7tifxTGOb2NR24pmxPYmfcWqPZ4wfY8dOfLjfNW5wQfmkT3fmzr1nzne+c68N/xODweDJSNnr9dBqtdDpdLC7u8uz2+3y93+vo7AdBjaKfD4PQRAQi8WgaRoSiQTi8ThSqdR/9toOY0YsiB2NlKP5fr+PRqMBy7I4W2JP6w5lOGKWlJN81LRNdBgoBYFsbW3x+XK5jGw2y0E54NOsKNrtNpLJJNSUyjOTTkNRZCQ3NiCKAV5uYn0dsqogqSi89Ewmg1qtNmT4tG6maaK8U+bPLbMJcTWIZSkI37IEn3/5n1IAy6gD3WGp1KBSqXTAkDTY29sbAtZNWM02oloMb8+9j5+ct+B1BWG/70YkvsHXzEdFvDw/iXd+vQhZS/O5MUCiHAqFuB7F7RK6zQ4+XZjAS9dex7G7n+O6fRZufwCh8BqsjoV3r32NF++cxQtXzuDD2R+AvQFyhfwBIOlGAlPoNR1ts4XzS9/hlP1LXBVu4KPpU+h1d6Ftaqwrfbx27wJenf8Gb965gGPCbb6PA47YpZnwI6Pqug6jZqDb7+KSfwrT3hlU6jr/thaNotfuwB4RMfHbDG4u2hFNy6iz9WmGY1NYl1wuFzweDzcsaUndktl8q9lCy/iLgeuoGyY3tccXgC8QQjj0CA+FANweP5Z8IhzOJcTi67AVCgU4nU4Eg0HOcsRwndnCMAyUjQZKegM1sw6V/cQjSHjgFiA+YhaKrMG5IuHq9AzmFn+HksoMSyaWqqo+KblSqfCkUB2Xkbp5BptKApHYBmbv3mMAt/DV8c8wf/wcpj45C39ARPiPCGRZOWjK/v4+bwqdAr1awWPmP2XhItQPbJBPPA/7iSNYuO+CdyUEh3cFzi8uQTlyEstvnUTWHx42hTlkrMuSJHGdTFZqtWbC98sk7N+ehmPqPGa/n8Ci4wEEMQyHywvpxxlcfuMofn7lPfw5NUc+Rz6bG2dI2lHZNQaoV6tIyBkseoO4MeeER4xy49IZblhtrJy7gueeeRaTRz/GgFmsj30U8oXxozcK6jJpmM3l4F7yw+MVID0ModlsgppI0WcZXF3FTq3K3622xb+NXQ7EcnSbFItFruk2OzWPd3awzdgRQ/Is3TKFXJ5XtF0sIcd+THN04/wNCCAG4hCH/UQAAAAASUVORK5CYII='); background-size: cover; display: block;"
1285 ></span>
1286 <img
1287 class="gatsby-resp-image-image"
1288 alt="inbox overlay"
1289 title="inbox overlay"
1290 src="/static/f85539e1b1b5e52ca78c881a86f47601/a6d36/inboxoverlay.png"
1291 srcset="/static/f85539e1b1b5e52ca78c881a86f47601/222b7/inboxoverlay.png 163w,
1292 /static/f85539e1b1b5e52ca78c881a86f47601/ff46a/inboxoverlay.png 325w,
1293 /static/f85539e1b1b5e52ca78c881a86f47601/a6d36/inboxoverlay.png 650w,
1294 /static/f85539e1b1b5e52ca78c881a86f47601/f941f/inboxoverlay.png 736w"
1295 sizes="(max-width: 650px) 100vw, 650px"
1296 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1297 loading="lazy"
1298 />
1299 </a>
1300 </span></p>
1301 <p>Phone calls are just about as "urgent" as it gets. Prior to iOS 14, phone calls used to interrupt whatever you were doing, taking up your iPhone's entire screen real estate. Doesn't get more urgent-y than that! Luckily, calls are relatively sparse compared to text messages, which you still need to respond to, but you can "put them on ice" for days at a time with a high-degree of cultural acceptance.</p>
1302 <p>Social media messages are legion in terms of volume. And, while they're not especially urgent from an innate message-level perspective, the platforms do their darndest to "notify" you of "engagement opportunities" to keep you locked-in, so these inboxes fall in the semi-urgent category in my book.</p>
1303 <p>Onto RSS -- my beautiful, dark, twisted RSS. There's truly zero urgency here and relatively few messages (writing blog posts is time-consuming!). Moreover, returning to our message evaluation framework, an RSS inbox only contains messages from known senders, since you've explicitly had to add their RSS feeds to your feed-roll. And, since you've likely done that because you expect to value the contents of their messages, you're likely living in the upper left quadrant in RSS-land, enjoying that drizzled honey and those weird-newspaper rolls.</p>
1304 <p>Email is the real challenge-tunity here.</p>
1305 <h3>Stuck in the Middle With You</h3>
1306 <p>Email is caught in the middle of all these features, both message-level and inbox-level. Anyone can email you at any time with any message, so there's a ton of it, and any message may be useful and/or urgent. That's mostly a good thing, and probably our RFC-writing forerunners wanted it that way.</p>
1307 <p>Thus, we check our email, prodigiously, every single day. All day long. While we're pooping, while we're Zooming, while we're doing any old thing.</p>
1308 <p>Perhaps this is a lens on why newsletters are making a comeback. Email readers are a "captive audience," because we cannot avoid triaging our email inboxes. As long as publishers keep their newsletters top-row-level useful, we'll keep Substacking them. Certainly, the chances of me reading an email newsletter are greater than they would be if I had to visit individual blogs. However, I think my ideal for premium content would be paid RSS feeds, rather than email newsletters, because I want to keep my email inbox clean as possible to aid in my triaging. In fact, this is what many podcasts are now doing (since podcasts are just noisy RSS feeds).</p>
1309 <p>OK, enough about content-monetization (have I mentioned I have a free newsletter below?). How can we make our email inbox <em>feel</em> better? Is it possible to make email feel as good as RSS?</p>
1310 <p>First, we should establish principles-slash-goals for each quadrant in our Conjoined Box of Message Success:</p>
1311 <p><span
1312 class="gatsby-resp-image-wrapper"
1313 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1314 >
1315 <a
1316 class="gatsby-resp-image-link"
1317 href="/static/10539222c9e4e14ed7f74d968fa53c2a/a1792/messageactions.png"
1318 style="display: block"
1319 target="_blank"
1320 rel="noopener"
1321 >
1322 <span
1323 class="gatsby-resp-image-background-image"
1324 style="padding-bottom: 82.82208588957054%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAABYlAAAWJQFJUiTwAAACVklEQVQ4y31T2Y7iQAzM/38Sj4MEjDgWhLjv++oEQg5y16YcwpARu5as7nTa7nK5rOGDJUkiTouiCI/HA0EQwPd9hGEoe7rruvL9HqP9TpRbHMeyns9n1Go1tFotfH19YTqdol6vo91uy7nneYX72v/Q8bJt27jf77J/P9/tdjgcDrLyTh6rfUpGZ9B6vRY0RMdgx3Ek+Ha7YbPZYDabYbFY4HK5vB7U8lffkVmWhdFoJAHj8Rij8QiDwQCdTgelUgn9fh/D4RDjyQST1EkD7zFO+80dzTAMmKb5qV8S+MmImnHae5ksia+wEYZuwIs8HM0zLpaC5dmIwkjQ6c4dyr7DfDg4WzeYngt1Ubherz8cMuFqtRJuTqcTdF1HkISoLZtobNpwAxdJnGCUljo3TvizX2CmH/G9nmBlqjThRVBqbHfuuZFkOk3ZBvbmEWEcyaP9lMtPtt/vhSat2+2iXC6jUqmgWq2KUJVSgjKDXlQBm8E1Jk3U35P/V8Jmsym8MGGj0ZBSSW6v15NLorfjQR6gdChuymm5XGI+n0uX2SiKXLrMceKL+QjlJecIw3T0opQOOu/w8Xz0GEv9cc/kHICCsHnA+WSXldKzMsltFKTuyzcRZbXG2fosmZVIU3IN8hXyQ5Ee0lL16w1wFbxlFf76G/6mIfHT2RSB5UC1xzBnW9xXh2LCfwmbmsqmPih0hqOWnScZumcsKSoglM49pcOEbICfonZSChzHlRkm6Rw/rvy200HgMLA6InwJ+z0pjWRvt9tCN/N5pSoobu55xv9UA51xfwHF3BE4LXX2nQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
1325 ></span>
1326 <img
1327 class="gatsby-resp-image-image"
1328 alt="message actions"
1329 title="message actions"
1330 src="/static/10539222c9e4e14ed7f74d968fa53c2a/a6d36/messageactions.png"
1331 srcset="/static/10539222c9e4e14ed7f74d968fa53c2a/222b7/messageactions.png 163w,
1332 /static/10539222c9e4e14ed7f74d968fa53c2a/ff46a/messageactions.png 325w,
1333 /static/10539222c9e4e14ed7f74d968fa53c2a/a6d36/messageactions.png 650w,
1334 /static/10539222c9e4e14ed7f74d968fa53c2a/a1792/messageactions.png 780w"
1335 sizes="(max-width: 650px) 100vw, 650px"
1336 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1337 loading="lazy"
1338 />
1339 </a>
1340 </span></p>
1341 <p>How might we think about upholding these principles in our email inboxes?</p>
1342 <ul>
1343 <li><em>Upper-left</em>: We never want to miss useful emails from people we know. None of our remediation tactics for the bottom row should impact our ability to "avoid missing" these. Got it?</li>
1344 <li><em>Upper-right</em>: This quadrant is kind of a nice-to-have for email. We aren't necessarily "looking" for new emails on a daily basis, but we also don't want to miss that awesome job-opportunity email. We need some way of pre-processing the contents or other features of the email (sender email address, subject line, etc) to bubble these up somehow.</li>
1345 <li><em>Bottom-right</em>: Spam filtering takes the prize here, but that's just table-stakes now. I think that the pre-categorization work of Gmail into Promotions and Social is really helpful, as is the ability to easily unsubscribe from ad-like emails. But the in-line ads of Gmail increase visual thrash, so it's a bit all over the place.</li>
1346 <li><em>Bottom-left</em>: This is less-relevant for email, since we've culturally moved these communications over to Facebook and the like.</li>
1347 </ul>
1348 <p>Hmm, after reviewing message characteristics, email actually seems semi-okay. Most people can easily tell whether an email is going to be useful or not, provided that they take a second to glance it. The problem, then, is volume. Are we going to ensure that we glance at the most useful emails within their respective windows of urgency? </p>
1349 <h2>The medium is the madness</h2>
1350 <p>Maybe we need a faster way to just chug through emails. Power gmail users can't live without their keyboard shortcuts, for example. Or maybe we need better filtering-out of spam-like emails from our favorite clothing providers. Or maybe we need a way to remind us to triage a high-likelihood, potentially-useful email later.</p>
1351 <p>Add up enough of these, and we're building a better imbox. I mean inbox. I do like the idea that companies like Superhuman and Basecamp are innovating in email to try to block and tackle against the useless and steer us towards the useful. I personally haven't made the jump yet. I'm slightly stuck in my Gmail ways now, and I do think that, with a bit more fiddly-work, I can set up my Gmail to reproduce a lot of the most impactful features of Superhuman or hey.com.</p>
1352 <p>I've certainly missed some features in this analysis. But I'm trying to apply these frameworks not just to email, but to all forms on inboxes in my life that require my human-in-the-loop intervention. Something's gotta give, or this is just going to become our full-time job. Cue Slack-message sound.</p>
1353 <p>Email me if you have any other ideas for inbox sanity! Just kidding - send a Tweet, for the love of all things electronic.</p></content:encoded></item><item><title><![CDATA[The Peep-Hole]]></title><description><![CDATA[Two weeks ago I woke up at 5 AM on the dot and had this entire creepy dream in my head. I went to the bathroom and scribbled it down while…]]></description><link>https://www.charlieharrington.com/the-peep-hole</link><guid isPermaLink="false">https://www.charlieharrington.com/the-peep-hole</guid><pubDate>Thu, 22 Oct 2020 00:00:00 GMT</pubDate><content:encoded><p>Two weeks ago I woke up at 5 AM on the dot and had this entire creepy dream in my head. I went to the bathroom and scribbled it down while sitting on the toilet before I could forget it. </p>
1354 <p>It being October and all, I thought I'd share this scary story...</p>
1355 <p><span
1356 class="gatsby-resp-image-wrapper"
1357 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1358 >
1359 <a
1360 class="gatsby-resp-image-link"
1361 href="/static/6c61fe51fd42f8edbda8209466e9d038/d438d/yeasayer.png"
1362 style="display: block"
1363 target="_blank"
1364 rel="noopener"
1365 >
1366 <span
1367 class="gatsby-resp-image-background-image"
1368 style="padding-bottom: 52.760736196319016%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAACtklEQVQoz1WQaVtSURRG769QrJwApywTFVFEFHIkMUlUnEpNy0crUxs0xSmcRxAQUBKHUhvsJ6426Jc+rGefe+55197nKFWTQSre7lH2apPSvhWKu5co6phH1+amsHWGQudsYq1zLaLr8VDcv4b+9RaGt17KJwJUTIUxu6NYFmNYl09RLNOyMeHHOLqLQaT6uLTnK0WdInYt3Ii65Lt3mZKBW9kbL0aRVYqsWmTWpRg1q2fUb31HqZ0X+1QI8/j+rXQLvQRLXohYJMXPRdS3in5wg9LhbcpksorJAGYZxCLZGs8J9evn2HYvaPJdoTxZOaF27ug/aZkEDUPyBHHJ0AYGmapsZAfjmA/ThyDVX8I8XohSJ1nb5jl27wWO4BWtkV8oju1znizHqJs7xDp1kLi+6Z1c6c0u5SOCNDDKG1eO+zF/OsA6E6F28RuNqyfYJevYv8AZ+klH9DddsWuUDv8Pnm2dYl8+pkGkNdMhLB+DVE36ExNXSQPLxwBW2a9xR2hYimJfi+HYOaNNsp3hK3qjv+iP/WHw7C/Ky/Al3V75uXFMi+eQpvkwDTMH1E0FqP0cSNT66SA29wFPPUc4N2O49s7oDf5g4PCK17HfjJ7+Yez8molLEQ77jhnYPaZ3I4prJYJzMYRjXsLuIM2zfppnAjg9EVzSsNW9T9vsDj2efV54fAys+Hi17md0J8SYN8z7vRCK0WTFZLFhrm+lytaOSaq5sZ1qezeWludUNrRT19FHU9cQBrMNXYFeKKHwgQ6d8CjvEbqHJbIuovB+AYpWpUKTlIQmORltcpKQnCDrzj2y76aScy+NnNQM8jK05GuyeJCVQ742W6ogNS9TQ256ppAh59JR1CkpqFVCiopM1Q3qOHfuJtCIVJuaRlZaBtnpanIzteSqteSJPIGs43vZIo2f+Qca3NAT8wb3MgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
1369 ></span>
1370 <img
1371 class="gatsby-resp-image-image"
1372 alt="yeasayer"
1373 title="yeasayer"
1374 src="/static/6c61fe51fd42f8edbda8209466e9d038/a6d36/yeasayer.png"
1375 srcset="/static/6c61fe51fd42f8edbda8209466e9d038/222b7/yeasayer.png 163w,
1376 /static/6c61fe51fd42f8edbda8209466e9d038/ff46a/yeasayer.png 325w,
1377 /static/6c61fe51fd42f8edbda8209466e9d038/a6d36/yeasayer.png 650w,
1378 /static/6c61fe51fd42f8edbda8209466e9d038/e548f/yeasayer.png 975w,
1379 /static/6c61fe51fd42f8edbda8209466e9d038/3c492/yeasayer.png 1300w,
1380 /static/6c61fe51fd42f8edbda8209466e9d038/d438d/yeasayer.png 2290w"
1381 sizes="(max-width: 650px) 100vw, 650px"
1382 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1383 loading="lazy"
1384 />
1385 </a>
1386 </span></p>
1387 <p><em>Image source: the <a href="https://www.youtube.com/watch?v=JyBl5ZgnEr4">awesome Yeasayer music video</a> for their song Ambling Alp</em></p>
1388 <h2>The Peep-Hole</h2>
1389 <p>There was peace in the village of Ghir, thanks to the Peep-Hole.</p>
1390 <p>It had been this way for as long as anyone could remember.</p>
1391 <p>"It's better than a thousand kings," said one shop-keeper.</p>
1392 <p>"We're blessed to have the wisdom of our elders at our finger-tips," said another.</p>
1393 <p>Any dispute, conflict, or argument could be brought to the Peep-Hole in the village center. No case or trial would be needed. The Peep-Hole had already seen and heard everything. A voice from the Peep-Hole would utter the Truth, and the matter resolved.</p>
1394 <p>Ori had prepared his whole life to become a Watcher. To be one of the Watchers of the Peep-Hole was Ghir's greatest honor. Only the purest-of-heart and strongest-of-mind were chosen, and only once ever six years.</p>
1395 <p>When Ori was six years old, his mother Cera was Chosen. It was the best day of Ori's life. The honor bestowed upon him was immense. He pledged that day to become a Watcher himself. He would join the Peep-Hole as the youngest Watcher ever, as soon as he came of age.</p>
1396 <p>Everyone in town believed in Ori and thought he would be Chosen.</p>
1397 <p>On the morning of the ritual, Ori woke up and asked the Peep-Hole in his hut for the weather.</p>
1398 <p>"CLEAR AND CALM. LOW TO MID 70'S," replied the Peep-Hole.</p>
1399 <p>Every hut in Ghir had access to the Peep-Hole. Its tubes stretched and tunneled from the village center into their homes. Any question, private or not, could be asked and would be answered by the Peep-Hole.</p>
1400 <p>"Peep-Hole, what does it take to be Chosen as Watcher?" asked Ori.</p>
1401 <p>"ONE MUST BE PURE-OF-HEART, STRONG-OF-MIND, AND BE OF-AGE TO BE CHOSEN."</p>
1402 <p>Ori had heard these words thousands of times before.</p>
1403 <p>"Peep-Hole, will I be Chosen as Watcher today?"</p>
1404 <p>But the Peep-Hole was silent. Fear crept into Ori's heart. He tasted a cold sour in his teeth. Perhaps the ritual has already begun, he worried. Ori put on his finest clothes and raced to the village center.</p>
1405 <p>The entire village of Ghir had already assembled. Ori was late, and the villagers glared at him. Ori took his place in the circle around the Peep-Hole.</p>
1406 <p>The Peep-Hole gurgled and pulsed like liquid mercury. Its tubes flexed like the pulled off limbs of daddy-long-longs. Ori had seen the ritual twice before. He knew that the Peep-Hole would agigate and then announce a name.</p>
1407 <p>"SREN"</p>
1408 <p>The village gasped. Ori felt to the dirt. </p>
1409 <p>A forlorn, meek boy stepped forward. Sren was a farmer's son. He was quiet and unassuming, and, like Ori, had just turned eighteen.</p>
1410 <p>The village watched silently as Sren walked into the rippling quicksilver and disappeared. Before he was gone, he screamed.</p>
1411 <p>Everyone screamed when they entered the Peep-Hole. No one knew why.</p>
1412 <p>The villagers dispersed, but Ori remained. Fig, a younger girl of thirteen, came over to him.</p>
1413 <p>"It's okay, Ori. There's always next ritual."</p>
1414 <p>Ori glanced at her. He heard no kindness in her words. He only saw her as a potential rival.</p>
1415 <p>When he returned home that night, Ori tried using the Peep-Hole again. But it refused to answer him.</p>
1416 <p>Am I being exiled, he wondered. Being cut off from the Peep-Hole was an unimaginable exile. Worse than death. </p>
1417 <p>And Ori wanted to die.</p>
1418 <p>He wandered the village late that night, watching and listening to his fellow villages consult with the Peep-Hole from their fire-lit huts. He went to the town center and spat at the Peep-Hole. His spit fizzled on the liquid metal and evaporated. Ori sat down. He watched the Peep-Hole, watched it shimmer and and pulse. He wondered then, for the first time, where the Peep-Hole had come from. He fell asleep.</p>
1419 <p>His sleep was dreamless, but Ori woke with a new clarity. Last night was the first night ever that he slept somewhere else, other than his hut. Somewhere far from his hut's Peep-Hole tube.</p>
1420 <p>Ori felt powerful and confident.</p>
1421 <p>Later that morning, he called the villagers back to the town center.</p>
1422 <p>"Give it up, Ori," they grumbled.</p>
1423 <p>"You weren't Chosen," they called.</p>
1424 <p>But then they saw what he had done.</p>
1425 <p>Pyres of wood had been stacked around the heptagonal Peep-Hole.</p>
1426 <p>"People of Ghir," said Ori. "For too long we have been under a spell. Today I break that spell. People over Peep-hole!"</p>
1427 <p>All the while, the Peep-Hole was gurgling uncontrollably behind him.</p>
1428 <p>Ori lit a match and threw it into the pyre. Flames encircled the Peep-Hole. The quicksilver melted and slid to the ground, revealing a skeletal structure within.</p>
1429 <p>Screams erupted from the crowd. Everyone vomited. Ori turned his head from the crowd to the Peep-Hole and collapsed again to the dirt, throwing up everywhere.</p>
1430 <p>Inside the Peep-Hole were the Watchers. Or what was left of them. A pale, sickly blob pulsed and writhed from within the geodesic cage. Arms and legs and heads stuck out in all directions from the creature. </p>
1431 <p>Ori couldn't stand the sight -- or smell -- of it burning, so he doused the fires. As the temperature cooled, the mercury reformed around the structure.</p>
1432 <p>"Go," said Ori to the Peep-Hole. "Go and never return. We will lead ourselves."</p>
1433 <p>The Peep-Hole thrummed loudly. It began to move, slowly, snapping off its tube arms one by one. The Peep-Hole slid out of the village center, towards the mountains. Ori watched it disappear into the forests.</p>
1434 <p>The people of Ghir cheered Ori, naming him Hero. </p>
1435 <p>For a while, all was well in the village. But then the disputes resumed. Ori wanted the villagers to settle things themselves, rationally, but he saw that they could not. He tried making rules for them to follow, but the people always found ways to re-interpret his words.</p>
1436 <p>The Hero set up a trial system. The people came before him to argue their case, and Ori did his best to settle their disputes.</p>
1437 <p>But soon the people became clever. They spun their words. Truths became indistinguishable from lies. Lies, truths. It was harder and harder for the Hero to resolve the matters of the village.</p>
1438 <p>More than once as he stood in the town center, Ori caught a glimmer of silver in the corner of his eye, far away on the mountain-tops.</p>
1439 <p>It became too much for the Hero. That day, the people came to the town center and didn't find Ori.</p>
1440 <p>"He's abandoned us, too."</p>
1441 <p>For many days, the villagers retreated to their huts and waited.</p>
1442 <p>Then, one morning, the tubes in their huts were lit. They walked to the town-center.</p>
1443 <p>The Peep-Hole had returned.</p>
1444 <p>Ori was never seen again.</p></content:encoded></item><item><title><![CDATA[Notes on My Colon Cancer]]></title><description><![CDATA[The giant robot looks like a WED Treadwell, my favorite robot of all the Star Wars droids. I admit, I was worried that it would look organic…]]></description><link>https://www.charlieharrington.com/colon-cancer</link><guid isPermaLink="false">https://www.charlieharrington.com/colon-cancer</guid><pubDate>Wed, 21 Oct 2020 00:00:00 GMT</pubDate><content:encoded><p>The giant robot looks like a WED Treadwell, <a href="/robots-i-love">my favorite robot</a> of all the Star Wars droids. I admit, I was worried that it would look organic, like a Sentinel from The Matrix, with wriggling Dr. Octopus arms and pinchy pincers that pinch. But I'm calmed by the robot's EVE-like exterior.</p>
1445 <p>The room is sterile. A dozen masked, gloved attendants in blue buzz. I imagine I'm an astronaut about to step into the rocketship capsule.</p>
1446 <p>Except I won't be going anywhere on this particular journey, unless something goes very, very wrong. In fact, I've already been asked repeatedly by various staffers to describe what I'm expecting to happen in this room over the next few hours:</p>
1447 <blockquote>
1448 <p>"I'm here to remove my sigmoid colon via robotic surgery because of the cancerous tumor inside."</p>
1449 </blockquote>
1450 <p>I'm 34 years old. It's October 12th, 2020. Five weeks ago I was diagnosed with colon cancer.</p>
1451 <h2>Stool, bloody stool</h2>
1452 <p>I've always been a standing wiper. Not sure entirely why. I must have once, accidentally, touched a load of poo during a seated wipe. That sort of thing can change a person.</p>
1453 <p>This charming anecdote does factor into our story, because it means I've always had a pretty good sense for my poo. Consistency, quality, and color, both in the bowl and on the TP. Did you know, there's even a seven-stage scientific classification system for your poo, called the <a href="https://en.wikipedia.org/wiki/Bristol_stool_scale">Bristol stool scale</a>?!</p>
1454 <p><span
1455 class="gatsby-resp-image-wrapper"
1456 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1457 >
1458 <span
1459 class="gatsby-resp-image-background-image"
1460 style="padding-bottom: 53.987730061349694%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB9klEQVQoz0WSSW/TQBiG/ff4EZw5ceZQxIHlBGpVoAKVRYJWoqpaqUiAJeBQgkhiRIA43u3E9tger4lV29kXeG2L8h1G4xk9M+/3jBlLUz6fHp08fzIM/SiKi6Lwfd/zPNsmnkc3m82ff7VcLkVRlCRJUZRer8fzPBNR98v7M/b4MAmDIAzH47FXlVOWu16vgdVHLBYLWZZrWFVVjMwoDG5fv7Z988ZFOiLEybLMNC27KmyHUXQJT6dTkN1ut9VqNZtNBGQosQ4ePnizvxcH1A+COjYhyOxh9KmfJMNRVfP5HLENw8AEB6ELRuh837uz9ejuLcvQkDvPC+pTTdNAIncdwSFE1/XJZIJWsXVpgSGGyn18++3Dqdb7aRMnTVPXdYH1+31gqqbZhAwGJpKjZ47jcPl/2JJ/nz3bfvdyx+B/hFGcZ1mluixKKbrHJ0QARk5YQASsw2sJu4bEvt49P3kRe7bjenme2bal64Zpmq5bOkf+WhhgQRAgrN1uB0FQwo4hHj2+9+r+lqnweBuIsSwbDGBSBh7AkCTJMARPeCq0DdtJkpTw9IIaX5+Kn3ayxIvi4bgo4jgOq8LE9wOEhH+Qq9UKInAWjsBiCeeR0ty/wh1cBayoepqOoITncYEgy4pU/hVyp/MLbUNYo9E4r4pl2dls9hdOiz6ZIoG+hQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
1461 ></span>
1462 <img
1463 class="gatsby-resp-image-image"
1464 alt="Bristol stool scale"
1465 title="Bristol stool scale"
1466 src="/static/aa89064dc77b216479fbe409ba4b8653/a6d36/bristol.png"
1467 srcset="/static/aa89064dc77b216479fbe409ba4b8653/222b7/bristol.png 163w,
1468 /static/aa89064dc77b216479fbe409ba4b8653/ff46a/bristol.png 325w,
1469 /static/aa89064dc77b216479fbe409ba4b8653/a6d36/bristol.png 650w,
1470 /static/aa89064dc77b216479fbe409ba4b8653/be86f/bristol.png 662w"
1471 sizes="(max-width: 650px) 100vw, 650px"
1472 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1473 loading="lazy"
1474 />
1475 </span></p>
1476 <p>I first noticed blood two or three years ago. On a monthly or so cadence, I'd wipe and notice a reddish tinge. Not bright red, more like muddy-red. Poopy-red. Initially, I thought little of it. Just a minor curiousity. It certainly didn't happen every time. Still, I decided to check off the <code class="language-text">Blood in stool</code> box on the forms at my annual physical with my primary care doctor that year.</p>
1477 <p>A brief aside on the phrase "your primary care doctor." Like in <em>Forgetting Sarah Marshall</em>, the last doctor I really thought of as "my doctor" was my pediatrician. Since "becoming an adult", I've lived in three cities in two countries, which means that I've generally had no idea who my primary care doctor is or was, only that I'd need to find one to give me a referral to get this wart on my foot removed.</p>
1478 <p><span
1479 class="gatsby-resp-image-wrapper"
1480 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1481 >
1482 <span
1483 class="gatsby-resp-image-background-image"
1484 style="padding-bottom: 56.44171779141104%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACeElEQVQozw3QyXLSAACA4ZQdZKcVCxa6UKAIAYxlpyE7JITsCQmyFqh0irW0M9WLh1odx6sHT53x4nvaF/hnvh8oZLN0V5ovrxiMQCpVjmx3kFa1UKhBUPO0RMEISxBUq9VGcJagGZRQBWU4GI/H5/pgCrA99fbuy+O3H4YgCWS7+5yA8v02brC0SlM8jijU2VgmB6I01CYGR081bjVfra82Hy5vAI5XNFEeqarM9qSuUM/n64m42uNkTuxS7U61jIK59ypr8KIu6DLT1Hh4MhjNxrPRaApcf7p7/PFzubhgCLKUK4AHiUo6iddrfZ6nUaRLMaI4W1zc9HlF7ck8UZOZs3F/0CUoTTOAzfXtn6e/D99/9SU17Au4TDafzVlOp5a6PhsvadYQjfVssZEYgW8zDFrhyYYuKrqkyaICLOaX5/PV5vpuvVr7nW4bYHFtWTLR3T5N0mdNtNLoDz/29XMao2gEfV5K4hWOIBSWf0YBGIwZsvb56+Pvp38EgiWCgVgoHPEFoGQSzII7Hs8p1FSUCVpv4k24VQYpGOoSGNvrNXAEaFUb0xa8JPGH+/vJcBp2e2PBbbPJYTfZwdSx2+Eq5suioLdqzWapWC9mKxBIVd6V0ilPKAggMM1gHBaJYiEPubuT8XrNJrvfG7SZHZmjRDy2D0FlDCUqxWwhHc8d+REU5lAqGdndfhkC0m8pqNzpJo+JHT/id8NuR9DisJqd1i3Hq0DI43TvRfdTieRRdDubPjg5OSxUS/E3uXCxiAoSsPc6vh+JdmC0cXgIOqw5l91nsVlMNjNgDri9TrvLvGX1ul4EPZ5IyBcJeesoHs+A/lgcpoT/PvSexpIYz64AAAAASUVORK5CYII='); background-size: cover; display: block;"
1485 ></span>
1486 <img
1487 class="gatsby-resp-image-image"
1488 alt="Firetruck"
1489 title="Firetruck"
1490 src="/static/77fe5d6a0fb7c7f56ef4920d22c1efa9/a6d36/firetruck.png"
1491 srcset="/static/77fe5d6a0fb7c7f56ef4920d22c1efa9/222b7/firetruck.png 163w,
1492 /static/77fe5d6a0fb7c7f56ef4920d22c1efa9/ff46a/firetruck.png 325w,
1493 /static/77fe5d6a0fb7c7f56ef4920d22c1efa9/a6d36/firetruck.png 650w,
1494 /static/77fe5d6a0fb7c7f56ef4920d22c1efa9/e548f/firetruck.png 975w,
1495 /static/77fe5d6a0fb7c7f56ef4920d22c1efa9/3c492/firetruck.png 1300w,
1496 /static/77fe5d6a0fb7c7f56ef4920d22c1efa9/6c2de/firetruck.png 1334w"
1497 sizes="(max-width: 650px) 100vw, 650px"
1498 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1499 loading="lazy"
1500 />
1501 </span></p>
1502 <p>Anyway, this season's Dr. Who told me not to worry about the blood. "It's probably hemorrhoids."</p>
1503 <p><em>WTF is a hemorrhoid?</em> I wondered to myself as I said to him, "Sounds good." Googled it after, and I learned that it's a vein that pokes out a little in your butt and doesn't really want to be poking out a little, so it bleeds. Seems like a thing that can happen, so I more or less returned to regularly scheduled programming and just dealt with the occasional poopy-red wipe. This doc also said I probably don't need to come for a physical for a few years, that annual physicals are a myth, dry land in a water world.</p>
1504 <p>Fast-forward to 2020. Everything sucks. And the bloody wipes are making a resurgence. Because, of course, they are. About four months ago I noticed that my first poop of the day (I usually go 2x) would have this purple-red streak embedded in it, like a racing stripe from hell. And it would happen almost without fail every single morning. That just didn't seem right, no matter what Doctors of Physicals Past told me. And then one morning I felt like I had actual blood dripping from my butt.</p>
1505 <p>Now I consider myself to be a mostly healthy person. I eat fairly well (even though I enjoy the occasional sourdough loaf and hazy IPA), I run and bike and hike regularly, I ran an IRONMAN in 2016 and a few ultramarathons since. I also don't like being sick (who does?). But, like with most things in my life, I want to be "good" at health. An ideal dental appointment for me would go something like this, "Wow, Charlie, these are the straightest, whitest teeth we've ever seen. We'd like you to come in and be the model for our Instagram ads and also be our 3D teeth model for dentures. Congratulations. Here's <em>two</em> free toothbrushes. You also never need to floss again."</p>
1506 <p>Anything that deviates from that ideal makes me squirm and I do think I can fix anything. For what it's worth I still believe that, if I ever encounter a blue flower on a mountain-top, I'm only a few months of mystical training away from becoming Batman. I already have the cape (it's actually a Harry Potter robe, but, hey, I'm scrappy).</p>
1507 <p>At the same time, I counterweight this with a mild touch of hypochondria. I'll see the poison oak in the mistletoe, so to speak. In this case it was a gift. I googled again for <em>stool, bloody stool</em> and the dreaded <em>colon cancer</em> came back. Last time, I averted my eyes from these search results. But the bloody racing stripes weren't going away. I needed to get myself checked out.</p>
1508 <p>Then I remembered an email from work: I was eligible for a <a href="http://members.onemedical.com/membership_referrals?code=cha0014&#x26;source=sa">OneMedical</a> membership. I knew there was hype about OneMedical, certainly I've seen the billboards, but I still wasn't exactly sure what they were all about. It had been a few years since my last physical, as you know, so I was primary-care-less, with a bloody problem on my hands. I downloaded the OneMedical app, uploaded a photo of my insurance card, beep-boop, and I've got an appointment with a new doc in a few days in one of their nearby clinics. Already, I loved the experience - I could text my questions any time (see <em>foot wart</em> above). I'd describe OneMedical as a network of clinics with an app for scheduling appointments and texting with a doc. Sure, ZocDoc kinda does the scheduling thing, but Zocdoc feels like you're sifting through the classifieds. Gimme some non-user-generated-ratings-based curation, please. </p>
1509 <p>So, I met with the doc, liked him a lot, discussed my bloody poops, and sheepishly asked if he'd be my new primary care. He agreed, and he also referred me to UCSF for a colonoscopy. Sure, I'm young, and it's probably hemorrhoids, we agreed, but it's the only way to be sure.</p>
1510 <p>After some jiggling about with the referral documentation, we finally get the colonoscopy scheduled for a few weeks later on Sept 9th.</p>
1511 <p>Then, on August 28th, <a href="https://en.wikipedia.org/wiki/Chadwick_Boseman">Chadwick Boseman</a> died of complications from colon cancer.</p>
1512 <p>I wasn't freaked out. Okay, yes, I was very freaked out.</p>
1513 <h2>Colonoscopies are not bad</h2>
1514 <p>What's a colonoscopy? It's a surgical procedure where the doctor goes all the way up your butt to see what's going on in there. You are completely knocked out, so you feel nothing. The only thing you need to do is what we in the business like to call "bowel prep."</p>
1515 <p>Allow me to describe bowel prep: the day before the procedure, you will poop your ever-living guts out for a few hours until you are clean-as-a-whistle, stem to stern. They'll give you a prescription for a gigantic jug of clear laxatives that you'll drink every 15 minutes or so for a few hours. In today's toilet-paper hoarding economy, I'd make sure that you are stocked up, because this gets messy.</p>
1516 <p>Other then the laxatives, you're allowed to drink clear liquids - which is confusing because you can enjoy such clear liquids as black coffee, Gatorade, broth, even green jello.</p>
1517 <p>But that's it. Easy. I watched Stranger Things season 3 again during my bowel prep day. Might not have been the best choice, as I intermittently had to pause Netflix to contribute my own liquified form of the Mind-Flayer, but it got the job done, and I cried my way thru Dustin and Suzie's hymn to childhood, again, as expected.</p>
1518 <p>Okay, next, I woke up on September 9th. My appointment is around 2 PM. Normal day, right?</p>
1519 <p><span
1520 class="gatsby-resp-image-wrapper"
1521 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1522 >
1523 <span
1524 class="gatsby-resp-image-background-image"
1525 style="padding-bottom: 66.87116564417178%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUBAgT/xAAVAQEBAAAAAAAAAAAAAAAAAAACBP/aAAwDAQACEAMQAAABuJ4np3C8R//EABkQAAMBAQEAAAAAAAAAAAAAAAABAhETA//aAAgBAQABBQLojpJXrMvRMw//xAAXEQEAAwAAAAAAAAAAAAAAAAAAAhIT/9oACAEDAQE/AdFpP//EABcRAQADAAAAAAAAAAAAAAAAAAABEhP/2gAIAQIBAT8BzVh//8QAFxABAQEBAAAAAAAAAAAAAAAAEQAgMf/aAAgBAQAGPwK7A4//xAAZEAACAwEAAAAAAAAAAAAAAAAAAREhYUH/2gAIAQEAAT8h3Q2VAjBNtkxvB2P/2gAMAwEAAgADAAAAEAAv/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIf/aAAgBAwEBPxCh0w//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAIAQIBAT8Qhk3/xAAaEAEBAQEBAQEAAAAAAAAAAAABEQAhQTFx/9oACAEBAAE/EJcdGUl8uPyRWp/Lninx3NAB49xqqrv/2Q=='); background-size: cover; display: block;"
1526 ></span>
1527 <img
1528 class="gatsby-resp-image-image"
1529 alt="sf"
1530 title="sf"
1531 src="/static/dfe0aae59da7dc3715e8f289c1ae8f7b/6aca1/sf.jpg"
1532 srcset="/static/dfe0aae59da7dc3715e8f289c1ae8f7b/d2f63/sf.jpg 163w,
1533 /static/dfe0aae59da7dc3715e8f289c1ae8f7b/c989d/sf.jpg 325w,
1534 /static/dfe0aae59da7dc3715e8f289c1ae8f7b/6aca1/sf.jpg 650w,
1535 /static/dfe0aae59da7dc3715e8f289c1ae8f7b/8e1fc/sf.jpg 900w"
1536 sizes="(max-width: 650px) 100vw, 650px"
1537 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1538 loading="lazy"
1539 />
1540 </span></p>
1541 <blockquote class="twitter-tweet"><p lang="en" dir="ltr">A strange, apocalyptic orange-red sky looms over the Bay Area. Here&#39;s what you need to know.<br>Read more: <a href="https://t.co/JxpYSnUPG9">https://t.co/JxpYSnUPG9</a> <a href="https://t.co/ZPOj4X3jRg">pic.twitter.com/ZPOj4X3jRg</a></p>&mdash; San Francisco Chronicle (@sfchronicle) <a href="https://twitter.com/sfchronicle/status/1303799596515172352?ref_src=twsrc%5Etfw">September 9, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
1542 <p>Nope.</p>
1543 <p>I decide to walk over to the UCSF Parnassus building in the creepy Mars firelight, imagining I'm the last man on Earth (and hoping I don't step on my reading glasses). Carly makes a plan to pick me up in a few hours in our car.</p>
1544 <p>As expected, the procedure was painless. My only bit of further colonoscopy advice here is to ALWAYS bring a book with you, to every single medical appointment you have, because there's always going to be some sort of delay or waiting room.</p>
1545 <p>An hour or so later, I woke up feeling the feels of that post-anesthesia giddiness. Except no one else was happy. Carly was in the room, a surprise to me. And my doctor looked quite serious.</p>
1546 <p>In addition to two small polyps (which she removed), my colonoscopy surgeon found a tumor in my sigmoid colon. At this point, I don't know a sigmoid colon from a semi-colon, but I knew it wasn't good news. Go 2020!</p>
1547 <p>Despite the odds (my youth, my health), I now had cancer. Well, I probably had it for awhile, but we just found out I had it.</p>
1548 <p>My doc said I'd need to meet with <a href="https://www.ucsfhealth.org/clinics/center-for-colorectal-surgery">UCSF's colorectal surgery team</a>, and I'd also need to get CT scans ("cat scans") to see if the cancer had spread anywhere else in my body.</p>
1549 <p>And so began one of the worst weeks of our lives.</p>
1550 <h2>A brief family history</h2>
1551 <p>Let's talk about the odds for a moment.</p>
1552 <p><span
1553 class="gatsby-resp-image-wrapper"
1554 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1555 >
1556 <span
1557 class="gatsby-resp-image-background-image"
1558 style="padding-bottom: 57.05521472392638%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAADC0lEQVQozzWSf2iUdRzHv/fcPb/vnttzt9tzd7vrdrfbvLlz7Dan6FxbKdam27R24aR0XswmJf5gUFsoSytmGpaI6R9hEFHOkigbo8EImUSQtQwSCpZ/LHIzgooI6o9Xj6P+eP/14f3jw/st+teaPLDG5sq7r/PX3/+w9OvPzM7dYO7mFCO7O9jR3c3xF0/x2NbNtNVYvHNmhJOj7WzrcKhyNJKOgaEpeIQHVVUQrat0zr22j+npj7izuMT3P3zskjYy+niGugpBKig4daDE9YlJJo6Pcnp/Nz0dGeK2l3BAJWBq6K6gpmsoLsQzu1fx7dwUf/z5O4u/3ObGtRFOHEjTmvPjlVSeaCxjZuwIP329xJ1bixwb3E7cL3DKdCxTwbZUYk6AZDqOoqqIM8+vZOLNXczPf8nCwhdMXh4kGpAI6Ap+2Ut/g01xXROXXxrns/c+4a2T4xiqhB0K4TdNFxpBVzSXrSToNxBnhys5fSjGzIdHmf9xkukP9tGYqyfkl0gHvTzbFuVwc4Lze4rcvfUbU29fwdZkFFlZhin7UBWZWLICw3ATDmwKsrZa4rnBJr65PsznVwfYUMiTCkk0RFWebjIoJjwM3b+ehWvf8erRcYQQaIqCoRskMlmC5SEa1q/GilcgAqbqOkgUt9bz1ewYMxObaS+YWO7Lti7TXK6wyS3nhZ5t3J65yfaePlfQg+63XJ5KJFOLFrQI3ZfAvyKPiNgaqahCX2eWc8fWcGI4S10mjOTxoakaYUNnpSG4ePgQs+9/SiKVXU5oVrdgVDViFx7CrFqBGSuntqsT4YTU5Q11tSfJJjRkSSwT/kc+FeXJQoCDfb3kHj2I9ODQfzcFOZRCdaox6mrQHYuyRByhKT5kn4yp+hCGQ1PLOnb1F+ntepjW1jb2PrWXi6+MMbBzJ48cucDGHUP0bumiVCoRSeWQrBhaOo2aTiDfG7bsvdeSO0zXVS50E8lvINdZoqZ/hFjYJp9v4I1LV9n/8llaVjeTjISpydZSX5ejLFKJrzyDYgRQYw6yrvMvYkGDOFaZn64AAAAASUVORK5CYII='); background-size: cover; display: block;"
1559 ></span>
1560 <img
1561 class="gatsby-resp-image-image"
1562 alt="odds"
1563 title="odds"
1564 src="/static/384a14f31566523d7bbc5cfb061fc8fe/a6d36/odds.png"
1565 srcset="/static/384a14f31566523d7bbc5cfb061fc8fe/222b7/odds.png 163w,
1566 /static/384a14f31566523d7bbc5cfb061fc8fe/ff46a/odds.png 325w,
1567 /static/384a14f31566523d7bbc5cfb061fc8fe/a6d36/odds.png 650w,
1568 /static/384a14f31566523d7bbc5cfb061fc8fe/e548f/odds.png 975w,
1569 /static/384a14f31566523d7bbc5cfb061fc8fe/91f10/odds.png 992w"
1570 sizes="(max-width: 650px) 100vw, 650px"
1571 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1572 loading="lazy"
1573 />
1574 </span></p>
1575 <p>We've already discussed my vigorous, proto-Batman level of health. And how I'm a fresh-faced, occasionally-bearded, 34 year old with the heart of a child and the strength of a chimpanzee (no, that's a <a href="https://en.wikipedia.org/wiki/Humanzee">humanzee</a>).</p>
1576 <p>Speaking of unfortunate genetics, it turns out that I have some family history of colon cancer. </p>
1577 <p>Here's the scoop: my pops (that's cool talk for Dad) has had benign (non-cancerous) polyps in his previous colonoscopies. What's a poylp? It's a little growth thingy in your colon that may evolve into a tumor. Just like how a Charmander becomes a Charmeleon, polyps can grow bigger and more serious with more destructive power. Polyps are usually just snipped out during your colonoscopy and sent off for pathology (aka to see if they have cancer in them). Most do not. This is the case with my dad's polyp experience. Even though none of his have been cancerous, he still needs to go in for colonoscopies more regularly than those who don't have polyps.</p>
1578 <p>My own tumor began as a lowly polyp, perhaps some ten years ago. We don't know exactly. But if I'd had a colonoscopy ten years ago, or five years ago, they might have seen it and snipped it out and you wouldn't be reading this.</p>
1579 <p>If you go further up the Harrington tree, you'll learn that my dad's aunt (my father's mother's sister) died of colon cancer in her early 60s. And his other aunt (same side, same family) died of colon cancer in her 80s. Two factoids that I had no idea about until I asked my parents for their help filling out one of the many UCSF cancer history surveys. Also, on my mom's side, my grandfather's mother (my great-grandmother, who I never met) probably had colon cancer.</p>
1580 <p>So, colon cancer is bouncing around in my family tree. But neither of my parents have it, and none of my grandparents had it, which I suppose is good. That said, I learned that my grandparents did have <em>other</em> sorts of cancers.</p>
1581 <p>Getting confusing, right? I cannot stress this enough: <strong>Learn your family's medical history and write it down in a note on your phone. You'll be asked for this info 10,000 times before every single appointment. But, more importantly, your family history can be a signal to you and your docs whether are "higher-risk" for certain conditions.</strong></p>
1582 <p>I just didn't know about any of this. I knew there were some heart attacks in there, but not really about any of the cancer stuff. Ideally, each person would be given some sort of family history report when they're born or when they turn 18 or when they get their first Nintendo.</p>
1583 <p>But that's just it. You don't get health info automatically. There's no one, other than you, to own your medical health story. <strong>You must become your own health advocate.</strong> Spoiler alert, but this is the number one lesson I learned during this entire cancer experience. Health literacy is just as important as financial literary or literacy literacy.</p>
1584 <p>There are tools to help, and I'm still digging into them now. I'm much more excited now by the Apple Health stuff on iOS. I'm hoping it can become some sort of private, secure repository for my health data that I carry with me. For example, how many of you, dear readers, know your blood type? There's all sorts of little info-nuggets that you can track down NOW to pay-it-forward for FUTURE you. Cause, ain't nobody else gonna. It's like a scavenger hunt. Okay, enough proselytizing, dude.</p>
1585 <h2>Stage-wise limbo</h2>
1586 <p>Back to our story, we've just learned that I have a cancerous tumor up my butt and we've also filled out a few frightening family history reports. This is where UCSF kicks it into high gear (and, my goodness, do I love UCSF? Yes, yes I do. They are absolutely, amazingly wonderful, competent, and life-changing!).</p>
1587 <p>I'm now starting to get booked for all sorts of appointments, starting with the ones previously mentioned: (1) CT scans of my abdomen and chest and (2) then the consult with the colorectal surgeon.</p>
1588 <p>Because, as I later learned from my colorectal surgeon (who is the best!), when colon cancer spreads, it usually does the evolution thing from cancerous polyp (Stage 1) into tumor (Stage 2). After that, it can break through the wall of the colon into the nearby lymph nodes (Stage 3). Finally, it becomes (Stage 4) if it spreads to other organs, the first often being the liver and the lungs. At least, this is how I understand the various stages. I'm sure I'm missing some technical details and nuance. When <a href="https://www.nytimes.com/2020/08/28/movies/chadwick-boseman-dead.html">reading about Chadwick Boseman</a>, you'll learn that he was initially diagnosed with Stage 3 colon cancer in 2016, which eventually became Stage 4. In sum, you want your stage to be as low as possible.</p>
1589 <p>At this point, pre-CT scan, Carly and I have no idea what stage I'm at. Well, we do know that I'm somewhere from 2 - 4. These appointments are going to help us understand where I'm at. Specifically, the CT scans will tell us if I'm Stage 4 or not.</p>
1590 <p>Carly and I are in a daze for most of the next week. And so are our parents and our siblings. I honestly can't remember how many friends we told at this point, I know a few, but not that many. I didn't know what to say or feel.</p>
1591 <p>Much like the South Park lament "The Simpsons did it!", there's usually an <a href="https://xkcd.com/1048/">xkcd</a> for whatever you're feeling or thinking:</p>
1592 <p><img src="https://imgs.xkcd.com/comics/emotion.png" alt="emotions"></p>
1593 <p>As a wannabe stoic, I allow my negative visualization to run rampant. I'm thinking of the possibility that I've got only a few years (months?) left to live.</p>
1594 <p>My CT scans are scheduled for Thursday afternoon and the meeting with the surgeon is Friday morning. Between then and now, we have the horrible Internet to do horrible searches and we have the two-page summary printout of my colonoscopy, replete with some terrifying photos of the tumor. The tumor looks like a cross between a tadpole and an eyeball (two things that I'd normally love). I don't like looking at this picture, at all, but the two-page summary somehow keeps traveling around our house, and no matter where I look, I see the pink tadpole eye staring back at me, and I wonder, "Are you my death sentence?"</p>
1595 <h3>The sound of silence</h3>
1596 <p>On Thursday, Carly and I walk over to the UCSF CT scanning place. It's slightly less hostile to human life outside today, so that's nice. After checking in with the front desk, I quickly pass through the first waiting room into the second waiting room. There's always a second waiting room.</p>
1597 <p>It's here I realize that the <em>sound</em> of a major health issue is rapidly opening and shutting hospital doors. I scribble this pithy witicism into the back cover of my paperback copy of <a href="https://www.amazon.com/gp/product/0061339202/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0061339202&#x26;linkId=b76eed264fa980c5471f8c0cc351b2a1">Flow</a> and wait my turn with the CT machine. I'm given two bottles of "contrast" provided by reknowned-drink-maker General Electric to drink. These iodine cocktails will help the machine see my inside stuff. They taste like you're drinking printer ink. They're not that bad at all. Everyone else in here is at least fifty years old. I decide to do a five minute wall-sit to prove my vigor. Finally, I'm called back to the machine.</p>
1598 <p>The CT machine looks like a coldsleep chamber crossed with a Weyland Corporation interdimensional portal. It's over in less than a minute.</p>
1599 <h3>Plan of attack</h3>
1600 <p>The scans are done and now it's up to the radiologist to read them. I'm sure some neat TensorFlow or PyTorch deep learning computer vision model could help here, but I don't have access to the dataset.</p>
1601 <p>The next morning we drive over to the <a href="https://www.ucsfhealth.org/clinics/center-for-colorectal-surgery">UCSF Center for Colorectal Surgery</a>. It's in the beautiful ghost town of the greater Chase Center-Mission Bay area. I look up at the sun before heading in, thinking, "The next time I see you, ball of gas burning billions of miles away (quoth Pumbaa), we'll know the CT results and we'll know the plan."</p>
1602 <p>When I see the sun again, we do.</p>
1603 <p>The CT scans were clean. There's no sign that the cancer spread to other organs, ruling out Stage 4. This is the best news ever.</p>
1604 <p>The second best news we hear is that the tumor is in a relatively excellent spot for surgery. After an impromptu rectal exam that morning (hello!) to make sure there was no cancer in the rectum, my surgeon gives us an overview of the situation and a plan of attack.</p>
1605 <p>He's going to remove my entire <a href="https://en.wikipedia.org/wiki/Sigmoid_colon">sigmoid colon</a> (which is about a foot long), and then simply reattach the rectum to the rest of the colon. And he's going to do this all via "robotic surgery" (using the WED Treadwell-like <a href="https://en.wikipedia.org/wiki/Da_Vinci_Surgical_System">da Vinci Surgical System</a>), so the scars will be teeny and the recovery much easier.</p>
1606 <p>We'll only be able to tell if I'm Stage 2 or Stage 3 post-surgery. He's planning to remove the nearby lymph nodes and a pathology report will tell us if they're cancerous. If they're positive, it's Stage 3.</p>
1607 <p>But, either way, we're getting this thing out of my butt, pronto.</p>
1608 <p>Carly and I have a plan. We're planners. We needed this. A bit of our haze is lifted as we head into our next agenda item.</p>
1609 <h2>Gettin' hitched</h2>
1610 <p>We got married (eloped, both technically and social-distanced-ly) on Sept. 30th!</p>
1611 <p><span
1612 class="gatsby-resp-image-wrapper"
1613 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1614 >
1615 <span
1616 class="gatsby-resp-image-background-image"
1617 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAIDBAX/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/2gAMAwEAAhADEAAAAedXdblxoI6ERcQD/8QAHBAAAgICAwAAAAAAAAAAAAAAAAIBAwRBERIh/9oACAEBAAEFApWYZfDkSGse5ei7pMhTf//EABYRAQEBAAAAAAAAAAAAAAAAABABMf/aAAgBAwEBPwEuH//EABURAQEAAAAAAAAAAAAAAAAAABAB/9oACAECAQE/ASH/xAAbEAABBQEBAAAAAAAAAAAAAAABAAIQESExcf/aAAgBAQAGPwITRvi9yHJjrOx//8QAGhABAAMBAQEAAAAAAAAAAAAAAQARITFBcf/aAAgBAQABPyFYR0lUEdMvIB0xBRspSuR60ho+SegL23PImp//2gAMAwEAAgADAAAAEFPoQv/EABYRAQEBAAAAAAAAAAAAAAAAAAEgIf/aAAgBAwEBPxAMWD//xAAYEQACAwAAAAAAAAAAAAAAAAAAEBExYf/aAAgBAgEBPxDCCy//xAAgEAEAAgICAQUAAAAAAAAAAAABABEhQTFxUWGBkaGx/9oACAEBAAE/EPCtaZOzWoml+22A93zASRFznGPuobgAV8N94ngmYDjQF+sMtoUYAHA1zLkt5f2f/9k='); background-size: cover; display: block;"
1618 ></span>
1619 <img
1620 class="gatsby-resp-image-image"
1621 alt="wedding"
1622 title="wedding"
1623 src="/static/ee3c8142b9d95fa6818f729380100569/6aca1/wedding.jpg"
1624 srcset="/static/ee3c8142b9d95fa6818f729380100569/d2f63/wedding.jpg 163w,
1625 /static/ee3c8142b9d95fa6818f729380100569/c989d/wedding.jpg 325w,
1626 /static/ee3c8142b9d95fa6818f729380100569/6aca1/wedding.jpg 650w,
1627 /static/ee3c8142b9d95fa6818f729380100569/bf093/wedding.jpg 888w"
1628 sizes="(max-width: 650px) 100vw, 650px"
1629 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1630 loading="lazy"
1631 />
1632 </span></p>
1633 <p>Look at those oblivious smiles. Wait -- we aren't oblivious, I have cancer. We just love eachother.</p>
1634 <p>Originally slated for 2019, then after bouncing around in 2020, our cute elopement threaded a very small needle with a teeny ceremony and it was beautiful and wonderful and just what we hoped for.</p>
1635 <p>Now, onto our first act as a married couple: my surgery on Monday, Oct 12th (and another round of bowel prep the day before).</p>
1636 <h2>Surgery ain't no joke</h2>
1637 <p>I don't have much to add about the surgery itself. I was there. But I don't remember anything. Thank goodness. I also haven't yet watched any YouTubes of how the da Vinci robot works. I didn't want to know before the surgery, and I'm not quite ready now to see it.</p>
1638 <p>I did remember to bring a book, though:</p>
1639 <p><span
1640 class="gatsby-resp-image-wrapper"
1641 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1642 >
1643 <span
1644 class="gatsby-resp-image-background-image"
1645 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMCBP/EABYBAQEBAAAAAAAAAAAAAAAAAAIBAP/aAAwDAQACEAMQAAAB0h0BZTTdMU1YCj//xAAcEAACAQUBAAAAAAAAAAAAAAABAgMAERIhIjL/2gAIAQEAAQUCkBao8hGDpz0W7ncBwtgYsjcNVtuTinn/xAAYEQACAwAAAAAAAAAAAAAAAAAAEQECEP/aAAgBAwEBPwEZNVn/xAAXEQADAQAAAAAAAAAAAAAAAAAAEBES/9oACAECAQE/ASGqv//EABwQAAICAgMAAAAAAAAAAAAAAAARARADITFBUf/aAAgBAQAGPwLXU+iRs4IuZaQ1WWv/xAAbEAADAQEBAQEAAAAAAAAAAAAAAREhMZFBcf/aAAgBAQABPyGGtU/Ru6l5pKE0Xw1NnkzpEvsFSXrLQ6FWuwknvolt8SEwf//aAAwDAQACAAMAAAAQuCFA/8QAFxEAAwEAAAAAAAAAAAAAAAAAARARIf/aAAgBAwEBPxCbUIFX/8QAGBEBAAMBAAAAAAAAAAAAAAAAARARIUH/2gAIAQIBAT8QBquRDgj/xAAeEAEBAAICAgMAAAAAAAAAAAABEQAhMVFBoWFx0f/aAAgBAQABPxCdrQigCSU+ZhtbcD2Fde8Egg0jaY2kJGVK96wtsI4LriYE8CqeclgrzyrjgDCvJiKCsNzRo9Yp1q9/3BocAfWFx5//2Q=='); background-size: cover; display: block;"
1646 ></span>
1647 <img
1648 class="gatsby-resp-image-image"
1649 alt="book"
1650 title="book"
1651 src="/static/a3ae521c3ee36a8aad866c867be69fb0/6aca1/musashi.jpg"
1652 srcset="/static/a3ae521c3ee36a8aad866c867be69fb0/d2f63/musashi.jpg 163w,
1653 /static/a3ae521c3ee36a8aad866c867be69fb0/c989d/musashi.jpg 325w,
1654 /static/a3ae521c3ee36a8aad866c867be69fb0/6aca1/musashi.jpg 650w,
1655 /static/a3ae521c3ee36a8aad866c867be69fb0/7c09c/musashi.jpg 975w,
1656 /static/a3ae521c3ee36a8aad866c867be69fb0/01ab0/musashi.jpg 1300w,
1657 /static/a3ae521c3ee36a8aad866c867be69fb0/9568a/musashi.jpg 3024w"
1658 sizes="(max-width: 650px) 100vw, 650px"
1659 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1660 loading="lazy"
1661 />
1662 </span></p>
1663 <p>And, then, after glimpsing my many-limbed robotic friend in the surgery room, it's lights out.</p>
1664 <p>The next thing I know it's five hours later and I'm in a hospital bed and calling Carly to give her my room number. The nurses in the recovery area are amazing. I'm hooked up to an IV and they're monitoring my "ins" and my "outs" (my foods and my pees and poops). They do this every four hours, so you're not exactly going to get a perfect night's sleep here, but it's great to know that they're paying good attention to you.</p>
1665 <p>The big goal for me for the next 24 hours is to walk around. Being the Big Hero 6 that I am, I try to walk at 9 PM on the day of my surgery (which concluded around 6 PM), and I stand up, but my heart starts racing, so I slowly plop back into bed. Then, at midnight, my nurse helps my try again, and I do it. I shuffle around the hallway like a zombie, wheeling along my IV stand. It's a huge win. I end up walking six more times that day, between many Breath of the Wild sessions and most of The Umbrella Academy Season 2.</p>
1666 <p>Sure, my guts feel like someone took a blender to them, but I'm in great spirits, with incredible support from the UCSF team, Carly, and my mom.</p>
1667 <p>Side note that IVs are interesting. They're like open ports into your body, allowing the medical team to either remove or add fluids. I didn't expect that they'd just keep these ports open during your hospital stay, but they do. I guess that makes sense.</p>
1668 <p><span
1669 class="gatsby-resp-image-wrapper"
1670 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1671 >
1672 <span
1673 class="gatsby-resp-image-background-image"
1674 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAUBAgME/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAeFtlIVxeG//xAAaEAEBAAIDAAAAAAAAAAAAAAABAgASAyEi/9oACAEBAAEFApndYIzpyHQvk8tq/wD/xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAIAQMBAT8Bi4//xAAWEQEBAQAAAAAAAAAAAAAAAAAAAhL/2gAIAQIBAT8BZp//xAAcEAACAQUBAAAAAAAAAAAAAAAAARECMTJBUWH/2gAIAQEABj8CUU7PDFMhHS5//8QAGhAAAwEBAQEAAAAAAAAAAAAAAAERIXExQf/aAAgBAQABPyHePFZmS/BNOiwVoq+CMPSL5D//2gAMAwEAAgADAAAAEGg//8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARIf/aAAgBAwEBPxAQmkjxv//EABcRAQEBAQAAAAAAAAAAAAAAAAEAESH/2gAIAQIBAT8Q0RtOl//EAB4QAQACAgIDAQAAAAAAAAAAAAEAESFBMVFhcYGh/9oACAEBAAE/EKA1oKkru4AJps5Xef22O8G2T14g3mGTddfJRu17aoxqOsTjqf/Z'); background-size: cover; display: block;"
1675 ></span>
1676 <img
1677 class="gatsby-resp-image-image"
1678 alt="port"
1679 title="port"
1680 src="/static/571a4b7e6bbeb991a19b7f248c5f5e20/6aca1/port.jpg"
1681 srcset="/static/571a4b7e6bbeb991a19b7f248c5f5e20/d2f63/port.jpg 163w,
1682 /static/571a4b7e6bbeb991a19b7f248c5f5e20/c989d/port.jpg 325w,
1683 /static/571a4b7e6bbeb991a19b7f248c5f5e20/6aca1/port.jpg 650w,
1684 /static/571a4b7e6bbeb991a19b7f248c5f5e20/7c09c/port.jpg 975w,
1685 /static/571a4b7e6bbeb991a19b7f248c5f5e20/01ab0/port.jpg 1300w,
1686 /static/571a4b7e6bbeb991a19b7f248c5f5e20/d2602/port.jpg 4032w"
1687 sizes="(max-width: 650px) 100vw, 650px"
1688 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1689 loading="lazy"
1690 />
1691 </span></p>
1692 <p>Another secret weapon of mine that aided in my recovery: this cute avocado buddy that my sister and her boyfriend sent me:</p>
1693 <p><span
1694 class="gatsby-resp-image-wrapper"
1695 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1696 >
1697 <span
1698 class="gatsby-resp-image-background-image"
1699 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQCAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAACAAP/2gAMAwEAAhADEAAAAU9GueSfEx3/xAAZEAEBAQADAAAAAAAAAAAAAAABAhESEyL/2gAIAQEAAQUCDameoEoT1tcYRj//xAAWEQEBAQAAAAAAAAAAAAAAAAAAARL/2gAIAQMBAT8BrD//xAAWEQEBAQAAAAAAAAAAAAAAAAAAARL/2gAIAQIBAT8Btaf/xAAbEAACAwADAAAAAAAAAAAAAAAAAQIREiFBcf/aAAgBAQAGPwKW32Ln2yxktsTP/8QAGhABAQEAAwEAAAAAAAAAAAAAAREAITFR4f/aAAgBAQABPyF2NeFcyqSUDBPjFwdLvBDXRKdb/9oADAMBAAIAAwAAABD/AM//xAAXEQADAQAAAAAAAAAAAAAAAAAAAREh/9oACAEDAQE/EExQh7T/xAAWEQEBAQAAAAAAAAAAAAAAAAABAHH/2gAIAQIBAT8QUbF//8QAHBAAAgIDAQEAAAAAAAAAAAAAAREAITFBYXGB/9oACAEBAAE/EE50mG4DuYEfARiNgSxs0+RSUBuvHNNCaAa5UM8rwRqf/9k='); background-size: cover; display: block;"
1700 ></span>
1701 <img
1702 class="gatsby-resp-image-image"
1703 alt="avo"
1704 title="avo"
1705 src="/static/3c80ba743e37eb45929e343c8fba4082/6aca1/avo.jpg"
1706 srcset="/static/3c80ba743e37eb45929e343c8fba4082/d2f63/avo.jpg 163w,
1707 /static/3c80ba743e37eb45929e343c8fba4082/c989d/avo.jpg 325w,
1708 /static/3c80ba743e37eb45929e343c8fba4082/6aca1/avo.jpg 650w,
1709 /static/3c80ba743e37eb45929e343c8fba4082/7c09c/avo.jpg 975w,
1710 /static/3c80ba743e37eb45929e343c8fba4082/01ab0/avo.jpg 1300w,
1711 /static/3c80ba743e37eb45929e343c8fba4082/f1e22/avo.jpg 2576w"
1712 sizes="(max-width: 650px) 100vw, 650px"
1713 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1714 loading="lazy"
1715 />
1716 </span></p>
1717 <p>I'm squeezing this thing every time I'm jabbed with a needle (many, many times), using it as a pillow, and just loving it, cause it's so cute.</p>
1718 <p>On Wednesday, after I've started farting and pooping again (great signs!), I'm sent home early.</p>
1719 <h3>The future</h3>
1720 <p>I'm home and moving slow and still feel a bunch of surgical pain in my tummy, but overall feel so happy about my progress. I have some cool scars, which I'm thinking about submitting to the <a href="https://www.instagram.com/secret_buttholes/?hl=en">@secret_buttholes Instagram</a>:</p>
1721 <p><span
1722 class="gatsby-resp-image-wrapper"
1723 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1724 >
1725 <span
1726 class="gatsby-resp-image-background-image"
1727 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAECBP/EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAFXClyEg//EABsQAAEEAwAAAAAAAAAAAAAAAAEAAgMyESEi/9oACAEBAAEFAh0+W5OTDdx0v//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAEDAQE/ASf/xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAgEBPwFn/8QAGBABAAMBAAAAAAAAAAAAAAAAAQAQYXH/2gAIAQEABj8CiUdi7X//xAAaEAEAAwADAAAAAAAAAAAAAAABABEhUWFx/9oACAEBAAE/IdvsrYbRY+DRNd0cztMJ/9oADAMBAAIAAwAAABDcP//EABURAQEAAAAAAAAAAAAAAAAAABAx/9oACAEDAQE/ELP/xAAVEQEBAAAAAAAAAAAAAAAAAAAQMf/aAAgBAgEBPxCD/8QAHRABAAICAgMAAAAAAAAAAAAAAQARIUExYVGhsf/aAAgBAQABPxDFeae4GIKW9S3MWAJnHT9goMlum+I7Fvc//9k='); background-size: cover; display: block;"
1728 ></span>
1729 <img
1730 class="gatsby-resp-image-image"
1731 alt="scars"
1732 title="scars"
1733 src="/static/c0d678a41a56e990c23598d139068017/6aca1/scars.jpg"
1734 srcset="/static/c0d678a41a56e990c23598d139068017/d2f63/scars.jpg 163w,
1735 /static/c0d678a41a56e990c23598d139068017/c989d/scars.jpg 325w,
1736 /static/c0d678a41a56e990c23598d139068017/6aca1/scars.jpg 650w,
1737 /static/c0d678a41a56e990c23598d139068017/7c09c/scars.jpg 975w,
1738 /static/c0d678a41a56e990c23598d139068017/01ab0/scars.jpg 1300w,
1739 /static/c0d678a41a56e990c23598d139068017/f1e22/scars.jpg 2576w"
1740 sizes="(max-width: 650px) 100vw, 650px"
1741 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1742 loading="lazy"
1743 />
1744 </span></p>
1745 <p>On Thursday, I get a call from my surgeon. The pathology is back early. There's no signs that the cancer spread past the colon walls. The lymph nodes don't show any signs of cancer in them. Which essentially means I had Stage 2 cancer. Per my doctors, there's no immediate need for chemotherapy.</p>
1746 <p>We did it.</p>
1747 <p>I still have some upcoming follow-up appointments, and meetings with cancer genetics to learn if I'm genetically predisposed to cancers. And I'm sure I'll be doing many more colonoscopies and other tests in the future. And I'm still recovering from the surgery, too.</p>
1748 <p>But I (think) I'm cancer-free now. Now, there's no way to know that little microscopic cancer cells didn't manage to break through somehow, or that I don't have cancer in some other random part of my body, so it's kinda arbitrary to say something like "cancer-free." But we do know, for sure, that my colon cancer tumor was safely removed and that my doctors are extremely pleased with the results and the signs that it hasn't spread.</p>
1749 <h3>Hello, impostor's syndrome, my old friend</h3>
1750 <p>So, I guess that means I'm a cancer survivor.</p>
1751 <p>Which is weird to say, because this whole thing happened <em>very</em> quickly. All I did was "bowel prep" for two days and then fall asleep and wake up with a painful stomach.</p>
1752 <p>But I am a survivor.</p>
1753 <p>In fact, I'm probably the luckiest cancer survivor ever, from my access to incredible people and resources at UCSF to the actual state of my tumor to my family and friends support network. I paid attention to my body (noticing the bloody poops) and got the support and encouragement needed to get checked.</p>
1754 <p>UCSF has me signed up for a 5+ year relationship with their cancer survivors unit (I'll learn more in a few weeks when I have my first session). I'm excited about this, because I want to learn as much as I can about how to stay safe and healthy going forward. A few of my friends have told me that there's good research into fasting and Keto and their link with preventing colon cancers. I'm queuing up some <a href="https://tim.blog/2015/11/03/dominic-dagostino/">Tim Ferriss episodes with Dom D'Agostino</a> about this topic.</p>
1755 <p>My wife and my family are depending on me to stay healthy, and I'm going to do everything I can to do so. I'm going to own my health and be my own health advocate.</p>
1756 <h2>Some thanks</h2>
1757 <p>It's now about a week and half out from my surgery. I'm doing better on the Bristol scale, but not quite back to normal yet.</p>
1758 <p><span
1759 class="gatsby-resp-image-wrapper"
1760 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1761 >
1762 <span
1763 class="gatsby-resp-image-background-image"
1764 style="padding-bottom: 177.91411042944785%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAkCAIAAAAGkY33AAAACXBIWXMAAAsTAAALEwEAmpwYAAAEN0lEQVRIx71WSW8jRRTuK7+AA4gDEuLICK78A5DgziI4ICEkTly4cYUbGjEwQxiJA4cRM4dILGKSDAlycByHeDJOMonHieOt23a77V6qunqtenzdHZuEUUTgQOm5ut6r+t5ai7XhAG14eNjodDq9Xl/Xjd3dPaVUmspGo9FqnShFUmYsBjqmdePk5MQaHnLmaaYjgjD2fX84HEHLeGwxxh3HBZnmeDKZuq43ndpgmcdsL7B5NGWhw8MoTrSGqcIoVVKVyxt37y6tra3V67ugUqm0WdlcWbm3sVFZXV39vVyubf/xaBjsGHRfV9t95YpUS5M0iuI0TeCqlDLJWXiIAVyN4+yTR5Fmo0yaUdG0OI49zzMMHT7DN98XRIjNgDyKotx5q9Vqua5bOD8ajUzTxACqAE5s28klY879IAig2LbtJMnAkCBmzEEpcgEWliABCzczy0hSnhiXSMEsnKTLNa3X69VqtaWlJcuaXAS7SK7BIOqJ3Ha7PRSsyM1lLSNI2PQ8Bi1wHpEX2boUuNhMWVmypoq+2FXz/iwLAizOm/a3eJQ6FRSf+WwxyFX8JdfmzJnBvwbTHPP/gh8v6X+OWZ0DS0kyvRCc+3yKKqbPlSrftGdLhQFORLa3/ylmovvLtPVz4f2lE5Zvhuz3/hV645kzYLp0tvH78EV699lTMJZZBo27Z8C4RnBdnGaVVJpkGZJpJlczMNLmjCQWfPQyvfmUyg+PNreg6CLLL9EHL6iDCr32hKz+pD55ld56egZOYrr9qfplQc0D3VhEkpRj0s495Y7pvSv0zvNqe5me09TKLfXxK/T6kxkKYInbZvGqXLsFDhcb0NGP12XpTtw5SG9/lvabSXmR1u/Eo266+LnUj6LKD+rX7+IoRu40XOYCBZydMlRP4JCClSrOMqSiPIoIN2me7QArZntJ4zzkLvccxljAmPA8wT0/IxZAzpngLGP9fFkm9ARzfcZCADXPCziPhEh8Py56znEZQ0vwODEv8HlG0AJWa7f1L6/dWPj65rUvvrpxfeHmN9/WHzz0eeTY3HX8OTkOfBENIygfhfu9sNYOx9NAw8RJd/DwuHfcH+03O13DMiduIEkkIJX3OYVpIGKbxfo0Htqx6cSOG2gCebAH1KmT0aDhEXkjmhrUOyCjSYNjau+R/oiMI/Ld0z00a74faiJS0jGl3pSjdjJoS0tXbCpHHTUdkKWT1aeJoSAUXM22UEYFOIrSnm5sVLf3G83a9ubeXn2rtnPc7a1XNmsPdhvHrXJ166B59FupVK1W8TxYllXsvyzbvo8KMbw4rmMv79mVxsS1J3iTsGhsmpO8dxxnOp02m812u433KswbgBo+QgiOxzHhb3+fXF1PiITHshcPDVPo8ZLgYsfTXalUitcvCEIMAI4wHwZi7Ih6XxwYgnGRgc434LvdLv5WFOpy29Gf/GPyuoEHqP8AAAAASUVORK5CYII='); background-size: cover; display: block;"
1765 ></span>
1766 <img
1767 class="gatsby-resp-image-image"
1768 alt="walking"
1769 title="walking"
1770 src="/static/ca5f150240ad51c2af255f1a5fa14716/a6d36/recovery.png"
1771 srcset="/static/ca5f150240ad51c2af255f1a5fa14716/222b7/recovery.png 163w,
1772 /static/ca5f150240ad51c2af255f1a5fa14716/ff46a/recovery.png 325w,
1773 /static/ca5f150240ad51c2af255f1a5fa14716/a6d36/recovery.png 650w,
1774 /static/ca5f150240ad51c2af255f1a5fa14716/1d69c/recovery.png 750w"
1775 sizes="(max-width: 650px) 100vw, 650px"
1776 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1777 loading="lazy"
1778 />
1779 </span></p>
1780 <p>Monday was my surgery. Tuesday didn't capture my walks, because I didn't have my phone on me. But I'm moving around again, and eager to get back to regularly-scheduled life.</p>
1781 <p>Thank you for reading this story. I hope it is informative and shocking and helps you think about your health and the health of those around you. For example, Molly - my sister - is definitely going to have to get a colonoscopy ASAP.</p>
1782 <p>Thank you to:</p>
1783 <ul>
1784 <li>My incredible, magical, beautiful <em>wife</em> Carly!</li>
1785 <li>My parents and my mother-in-law and our siblings!</li>
1786 <li>Our friends and family!</li>
1787 <li>UCSF!</li>
1788 <li>OneMedical!</li>
1789 </ul>
1790 <p>Also, if I got anything wrong in this missive from a medical perspective, let me know and I can attept to correct the errata. This is meant to be <em>my understanding</em> of <em>my situation</em>, YMMV.</p>
1791 <blockquote>
1792 <p><strong>2021 Update!</strong> Read Part II of my cancer story: <a href="/chemotherapy">Notes on My Chemotherapy</a></p>
1793 </blockquote></content:encoded></item><item><title><![CDATA[Add Some Ghibli to Your Raspberry Pi]]></title><description><![CDATA[Maybe you caught this week's HN post that Studio Ghibli dropped 400 images into the public domain. The comments suggested that there's…]]></description><link>https://www.charlieharrington.com/add-some-ghibli-to-your-raspberry-pi</link><guid isPermaLink="false">https://www.charlieharrington.com/add-some-ghibli-to-your-raspberry-pi</guid><pubDate>Fri, 25 Sep 2020 00:00:00 GMT</pubDate><content:encoded><p>Maybe you caught this week's <a href="https://news.ycombinator.com/item?id=24564775">HN post</a> that <a href="http://www.ghibli.jp/info/013344/">Studio Ghibli</a> dropped 400 images into the public domain. The comments suggested that there's something odd in Japanese copyright law about taking screenshots of films, and that Studio Ghibli might have furnished these to help keep people talking about their films in reviews and whatnot.</p>
1794 <p><span
1795 class="gatsby-resp-image-wrapper"
1796 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1797 >
1798 <a
1799 class="gatsby-resp-image-link"
1800 href="/static/de45ce1eab470f024caad31db72d94e6/0f98f/marnie004.jpg"
1801 style="display: block"
1802 target="_blank"
1803 rel="noopener"
1804 >
1805 <span
1806 class="gatsby-resp-image-background-image"
1807 style="padding-bottom: 53.987730061349694%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAQP/xAAVAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABTi+wSl4T/8QAGhABAQACAwAAAAAAAAAAAAAAAQADEgIRIf/aAAgBAQABBQIy5U52sB2e2pf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQMBAT8BjL//xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQIBAT8BrX//xAAYEAACAwAAAAAAAAAAAAAAAAABEAIhcf/aAAgBAQAGPwK5FnH/AP/EABkQAQEBAQEBAAAAAAAAAAAAAAERAEFRcf/aAAgBAQABPyGKgdSVv1xXFzjnGAimPDf/2gAMAwEAAgADAAAAEDwv/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIf/aAAgBAwEBPxCEsLP/xAAXEQEAAwAAAAAAAAAAAAAAAAAAAREh/9oACAECAQE/EJau/8QAHBABAAMAAgMAAAAAAAAAAAAAAQARITFhcaHR/9oACAEBAAE/EGDHInJb6mO2HWu4gvygjAwIF9QkJAoyU/tn/9k='); background-size: cover; display: block;"
1808 ></span>
1809 <img
1810 class="gatsby-resp-image-image"
1811 alt="marnie"
1812 title="marnie"
1813 src="/static/de45ce1eab470f024caad31db72d94e6/6aca1/marnie004.jpg"
1814 srcset="/static/de45ce1eab470f024caad31db72d94e6/d2f63/marnie004.jpg 163w,
1815 /static/de45ce1eab470f024caad31db72d94e6/c989d/marnie004.jpg 325w,
1816 /static/de45ce1eab470f024caad31db72d94e6/6aca1/marnie004.jpg 650w,
1817 /static/de45ce1eab470f024caad31db72d94e6/7c09c/marnie004.jpg 975w,
1818 /static/de45ce1eab470f024caad31db72d94e6/01ab0/marnie004.jpg 1300w,
1819 /static/de45ce1eab470f024caad31db72d94e6/0f98f/marnie004.jpg 1920w"
1820 sizes="(max-width: 650px) 100vw, 650px"
1821 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1822 loading="lazy"
1823 />
1824 </a>
1825 </span> </p>
1826 <p>A more useful comment gave a nice tip for scraping the images in a single <code class="language-text">wget</code> command:</p>
1827 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token function">wget</span> --random-wait --timestamping http://www.ghibli.jp/gallery/<span class="token punctuation">{</span>ged,chihiro,karigurashi,ponyo,kokurikozaka,marnie,kaguyahime,kazetachinu<span class="token punctuation">}</span><span class="token punctuation">{</span>001<span class="token punctuation">..</span>050<span class="token punctuation">}</span>.jpg</code></pre></div>
1828 <p>This uses the nice shell trick of using curly braces <code class="language-text">{}</code> to expand commands and <code class="language-text">..</code> to expand in a numerical or alphabetical series. I first encountered this technique in the MIT course for <a href="https://missing.csail.mit.edu/">The Missing Semester of your CS Education</a>, which I highly recommend checking out.</p>
1829 <p>For example, <code class="language-text">echo foo.{png,jpg}</code> will expand to <code class="language-text">echo foo.png foo.jpg</code>, and <code class="language-text">echo {1..10}</code> will expand to <code class="language-text">echo 1 2 3 4 5 6 7 8 9 10</code>. </p>
1830 <p>Perhaps this might prove useful in your terminal travels.</p>
1831 <p>Back to Ghibli. So, now that I've got all these screenshots downloaded, what can I do with them?</p>
1832 <h2>My little Raspberry Pi server</h2>
1833 <p>I've got a <a href="https://www.amazon.com/gp/product/B08C4SK5C3/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B08C4SK5C3&#x26;linkId=6371e9a8ce20a36236014adee9eaa56e">Raspberry Pi 4 with 8GB RAM</a> on my home network that I can connect to via <a href="https://tailscale.com/">Tailscale</a>. Usually, I like to SSH in there and <code class="language-text">sudo apt-get update</code> and <code class="language-text">sudo apt-get upgrade</code> just to feel alive. But I also have a few other use-cases.</p>
1834 <p>I run a <a href="https://www.plex.tv/">Plex</a> server on the Pi. For a while, I also experimented with running <a href="https://www.home-assistant.io/">Home Assistant</a> on the Pi, but I just don't have that many internet of things devices (yet). I'm also planning to set up Minecraft server on the Pi, but I haven't found a non-sketchy tutorial yet.</p>
1835 <p>Finally, I also occasionally VNC in using VNC Viewer to check out the latest magazines in the awesome Raspberry Pi magazine app, where they have free subscriptions all these awesome "maker" magazines. This alone is worth the price of a Pi, IMHO.</p>
1836 <p>But, I was getting pretty tired of looking at the same stock desktop background everytime I VNC'ed in.</p>
1837 <h3>Using the Ghibli images as the Pi's desktop background</h3>
1838 <p>There's a neat command to change your Pi's desktop background from the terminal:</p>
1839 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash">pcman --set-wallpaper /home/pi/Pictures/ghibli/ged009.jpg</code></pre></div>
1840 <p><span
1841 class="gatsby-resp-image-wrapper"
1842 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1843 >
1844 <a
1845 class="gatsby-resp-image-link"
1846 href="/static/555d1ff4e6dce7d4942dff1af03b1745/0f98f/ged009.jpg"
1847 style="display: block"
1848 target="_blank"
1849 rel="noopener"
1850 >
1851 <span
1852 class="gatsby-resp-image-background-image"
1853 style="padding-bottom: 53.987730061349694%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAEDBAX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABls5zRkiP/8QAGRAAAwEBAQAAAAAAAAAAAAAAAQIhAANB/9oACAEBAAEFAucdnhuG9Y3/xAAWEQEBAQAAAAAAAAAAAAAAAAAAESH/2gAIAQMBAT8BlY//xAAVEQEBAAAAAAAAAAAAAAAAAAAAIf/aAAgBAgEBPwFX/8QAFhABAQEAAAAAAAAAAAAAAAAAMRAg/9oACAEBAAY/AmOP/8QAGRABAAMBAQAAAAAAAAAAAAAAAQARIUFh/9oACAEBAAE/ISK3QMuIsSshFbp8nccxF6n/2gAMAwEAAgADAAAAEAAf/8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAR/9oACAEDAQE/EELbJ//EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAgEBPxCVh//EABoQAQADAQEBAAAAAAAAAAAAAAEAESFRMUH/2gAIAQEAAT8QL1GXVrMGxAOjyCGUChQIAoAHtRX4KwyJa8fJ/9k='); background-size: cover; display: block;"
1854 ></span>
1855 <img
1856 class="gatsby-resp-image-image"
1857 alt="marnie"
1858 title="marnie"
1859 src="/static/555d1ff4e6dce7d4942dff1af03b1745/6aca1/ged009.jpg"
1860 srcset="/static/555d1ff4e6dce7d4942dff1af03b1745/d2f63/ged009.jpg 163w,
1861 /static/555d1ff4e6dce7d4942dff1af03b1745/c989d/ged009.jpg 325w,
1862 /static/555d1ff4e6dce7d4942dff1af03b1745/6aca1/ged009.jpg 650w,
1863 /static/555d1ff4e6dce7d4942dff1af03b1745/7c09c/ged009.jpg 975w,
1864 /static/555d1ff4e6dce7d4942dff1af03b1745/01ab0/ged009.jpg 1300w,
1865 /static/555d1ff4e6dce7d4942dff1af03b1745/0f98f/ged009.jpg 1920w"
1866 sizes="(max-width: 650px) 100vw, 650px"
1867 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1868 loading="lazy"
1869 />
1870 </a>
1871 </span></p>
1872 <p>Make sure that you've given the proper directory location for your Ghibli images, which, of course, you can get with the <code class="language-text">pwd</code> print working directory command.</p>
1873 <p>Now, I've already admit that I enjoy manually running apt-get updates, but I definitely don't want to be manually changing the background, so how about some automation?</p>
1874 <h3>Automating a rotating background with a cron job</h3>
1875 <p>We can use a simple cron job for this! First, let's write a one-liner command to randomly set the background from an image in our folder:</p>
1876 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token function">ls</span> /home/pi/Pictures/ghibli <span class="token operator">|</span> <span class="token function">shuf</span> -n <span class="token number">1</span> <span class="token operator">|</span> <span class="token function">xargs</span> -I<span class="token punctuation">{</span><span class="token punctuation">}</span> pcmanfm --set-wallpaper /home/pi/Pictures/ghibli/<span class="token punctuation">{</span><span class="token punctuation">}</span></code></pre></div>
1877 <p>It looks kinda hairy, but it's pretty simple. First, we list the contents of our directory, then we used <code class="language-text">shuf</code> to randomly select one of the files. In fact, if you just stopped there, your output would look like this:</p>
1878 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token function">ls</span> /home/pi/Pictures/ghibli <span class="token operator">|</span> <span class="token function">shuf</span> -n <span class="token number">1</span>
1879 karigurashi024.jpg</code></pre></div>
1880 <p>But we want to pipe this randomly selected file to the <code class="language-text">pcmanfm</code> command! I'm using <code class="language-text">xargs</code> to do that in the next part of the command. There's probably an easier way, but this works for me.</p>
1881 <p>So, now that we have our command to randomly select a background, we just need to write a cron job to run this command every... let's say, ten minutes. First, open up your computer's crontab file:</p>
1882 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token function">crontab</span> -e</code></pre></div>
1883 <p>And add this to the bottom:</p>
1884 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">*/10 * * * * ls /home/pi/Pictures/ghibli | shuf -n 1 | xargs -I{} pcmanfm --set-wallpaper /home/pi/Pictures/ghibli/{}</code></pre></div>
1885 <p>Save the file, and you're done. Right? No. That didn't work for me. Let's look at the cron logs with this command: <code class="language-text">grep CRON /var/log/syslog</code></p>
1886 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">raspberrypi CRON[3870]: (pi) CMD (DISPLAY=:0.0 &amp;&amp; ls /home/pi/Pictures/ghibli | shuf -n 1 | xargs -I{} pcmanfm --set-wallpaper /home/pi/Pictures/ghibli/{})
1887 raspberrypi CRON[3866]: (CRON) info (No MTA installed, discarding output)</code></pre></div>
1888 <p>Not super helful. It does confirm that job ran, which is good, though. That rules out cron syntax errors. This <code class="language-text">info</code> log is interesting. Discarding output. I don't like the sound of that. Googling reveals that we need to install a local mail server, so here we go.</p>
1889 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token function">sudo</span> <span class="token function">apt-get</span> <span class="token function">install</span> postfix</code></pre></div>
1890 <p><span
1891 class="gatsby-resp-image-wrapper"
1892 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1893 >
1894 <a
1895 class="gatsby-resp-image-link"
1896 href="/static/5af659ddcc5a54584ababc4499e3448d/bff4e/postfix.png"
1897 style="display: block"
1898 target="_blank"
1899 rel="noopener"
1900 >
1901 <span
1902 class="gatsby-resp-image-background-image"
1903 style="padding-bottom: 60.122699386503065%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAABYlAAAWJQFJUiTwAAADLklEQVQozy2T60+bZRjG3wmygwiiEUM8Rrc/wCxxE2Nx9KBQWdaVrmxsw8kOnGXQ0g1YEcYGRbCFgtATfd8eGC2UrnUY/TDjCU2IyTKdCfph8T/5eVP34cr1PE/uXNf13M/9KEuT/dwavsroUAfR2T78k93MT/cx5GxluL8ZR7uVgZ4mhj6z0nXRQrOtngtNJpydFmbcTcw7rIx3WZl0nWdmsBVl2dODZ6QLV/85ArMukskvWVwcY8Y7jNd3g6mpa/hmb+D1DjLlGWDsphOPx8W83004MMp65CZfzY3g6r3EaYsB5dulEa6L2+TgWa582o298XtOWX/gtO1nWW9x6uQWNssWduuvsv+twLtnu7A3/oLd9pPw77RdXsDacARl68fvJNk4WXUUw/vnUZQ1QVaQ4ZmnMlTsy1Besk55cVqQouzpNdmvFXi35n/k+fCYj662epQ7iRCP/npELjnNsaM29u/JUlqUF7EcLodKOBIgFFJRIxrRUJSIsKYlCAU1Xn4hxoE9eYqUTU58vEDnFTOKwaDj4R9/svPgvjTXTYk47ldygjzXBpYJhecIBoOoWpSoukwsrpFOrxKPJ6h6PspeqVOUe5wwL+K8akeprj7C9vY2O/88lJec4IBcd19BMMf1AU2EgpIwQiQcQVMlZVQlnogTDkdFUH0iuEnDRz4mnM0oen0N/z5+zN87Dzhj65OCTCHdXuUuYyNpcvkMK7EVouO3Sd6aYC2WYH0jS0xboapCFfOvCwmbLGEi826UesNRFsTNt+SnztBCWXFOiu4W8Lk7xkZ2mUQiTFxdFOEAiXiQVFqVpAFJGBHzXcENeeVNMfGhmEw16D9xYmhpw6i/LFfOUyxFJcKvVoY49LqPg6/NCfs59Iaft2R9UNZvvjInYinBPRHM0dtxn/WUCOpMdVh6b9PQ7kBn7KTquSSV5SleqpDxeDIypTIipSUblMroPFu0KiOzKucpXixLU1mRkvZo9PZ8Q/qOF6XOfo7j7cOYLzownjzDhZZGOhxt2C51U21upVZ6/F6tmXctPbxTU0+t7jAm0wfodW9jtJ3F2Cyf4fhhDA02Jr6Y5j9M8x3dfcgtkAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
1904 ></span>
1905 <img
1906 class="gatsby-resp-image-image"
1907 alt="postfix"
1908 title="postfix"
1909 src="/static/5af659ddcc5a54584ababc4499e3448d/a6d36/postfix.png"
1910 srcset="/static/5af659ddcc5a54584ababc4499e3448d/222b7/postfix.png 163w,
1911 /static/5af659ddcc5a54584ababc4499e3448d/ff46a/postfix.png 325w,
1912 /static/5af659ddcc5a54584ababc4499e3448d/a6d36/postfix.png 650w,
1913 /static/5af659ddcc5a54584ababc4499e3448d/e548f/postfix.png 975w,
1914 /static/5af659ddcc5a54584ababc4499e3448d/3c492/postfix.png 1300w,
1915 /static/5af659ddcc5a54584ababc4499e3448d/bff4e/postfix.png 2660w"
1916 sizes="(max-width: 650px) 100vw, 650px"
1917 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1918 loading="lazy"
1919 />
1920 </a>
1921 </span></p>
1922 <p>You should choose a "Local" installation. Once we have a mail server, we can now inspect the cron job "mail" logs:</p>
1923 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">sudo tail -f /var/mail/pi</code></pre></div>
1924 <p>After a bunch of email header jargon, we finally see the error:</p>
1925 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">Cannot open display:
1926
1927 --1332E5E8FA.1601069882/raspberrypi--</code></pre></div>
1928 <p>Awesome! I mean, the cron job still doesn't work, but at least we have some more info. That's a win. So, what have we learned? It seems like our cron job can't "open" the display. Some more Googling suggests that I need to add an env var for the display, so I add this <code class="language-text">export DISPLAY=:0.0</code> to the beginning on my cron job right after the cron syntax.</p>
1929 <p>Did that fix it? No. But we get a new error message:</p>
1930 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">Message: x-terminal-emulator has very limited support, consider choose another terminal</code></pre></div>
1931 <p>Cool. Okay, so, what does this one mean? This <a href="https://stackoverflow.com/questions/45873124/pcmanfm-set-wallpaper-fails-on-raspbian-stretch-in-cron">stack overflow answer</a> suggests that I may need to add another env var to my command. Here goes:</p>
1932 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">*/10 * * * * export DISPLAY=&quot;:0.0&quot; XDG_RUNTIME_DIR=/run/usr/1000 ls /home/pi/Pictures/ghibli | shuf -n 1 | xargs -I{} pcmanfm --set-wallpaper /home/pi/Pictures/ghibli/{}</code></pre></div>
1933 <p>Yes! Our cron job works!</p>
1934 <p><span
1935 class="gatsby-resp-image-wrapper"
1936 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1937 >
1938 <a
1939 class="gatsby-resp-image-link"
1940 href="/static/7088062c77a79c116dd28f9e93926586/0f98f/karigurashi024.jpg"
1941 style="display: block"
1942 target="_blank"
1943 rel="noopener"
1944 >
1945 <span
1946 class="gatsby-resp-image-background-image"
1947 style="padding-bottom: 53.987730061349694%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMBAgT/xAAVAQEBAAAAAAAAAAAAAAAAAAACA//aAAwDAQACEAMQAAABrIuB0iwj/8QAGxAAAgEFAAAAAAAAAAAAAAAAAAECAxEhMTL/2gAIAQEAAQUCRfCZLqns/8QAFhEAAwAAAAAAAAAAAAAAAAAAAhAx/9oACAEDAQE/ARq//8QAFhEAAwAAAAAAAAAAAAAAAAAAEBEh/9oACAECAQE/AVR//8QAFRABAQAAAAAAAAAAAAAAAAAAEAH/2gAIAQEABj8Ca//EABsQAQACAgMAAAAAAAAAAAAAAAEAEBExIVFx/9oACAEBAAE/IVxDIJvqKGK2rxr/2gAMAwEAAgADAAAAEHT/AP/EABcRAAMBAAAAAAAAAAAAAAAAAAEQMXH/2gAIAQMBAT8QCNX/xAAXEQADAQAAAAAAAAAAAAAAAAAAAREx/9oACAECAQE/ENEVn//EABwQAQADAAIDAAAAAAAAAAAAAAEAESExQVGh8P/aAAgBAQABPxArZwTLgnXzXmUo9w0J9kS37R+mM//Z'); background-size: cover; display: block;"
1948 ></span>
1949 <img
1950 class="gatsby-resp-image-image"
1951 alt="marnie"
1952 title="marnie"
1953 src="/static/7088062c77a79c116dd28f9e93926586/6aca1/karigurashi024.jpg"
1954 srcset="/static/7088062c77a79c116dd28f9e93926586/d2f63/karigurashi024.jpg 163w,
1955 /static/7088062c77a79c116dd28f9e93926586/c989d/karigurashi024.jpg 325w,
1956 /static/7088062c77a79c116dd28f9e93926586/6aca1/karigurashi024.jpg 650w,
1957 /static/7088062c77a79c116dd28f9e93926586/7c09c/karigurashi024.jpg 975w,
1958 /static/7088062c77a79c116dd28f9e93926586/01ab0/karigurashi024.jpg 1300w,
1959 /static/7088062c77a79c116dd28f9e93926586/0f98f/karigurashi024.jpg 1920w"
1960 sizes="(max-width: 650px) 100vw, 650px"
1961 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
1962 loading="lazy"
1963 />
1964 </a>
1965 </span></p>
1966 <p>What are these <code class="language-text">DISPLAY</code> and <code class="language-text">XDG_RUNTIME_DIR</code>? According to <a href="https://askubuntu.com/questions/872792/what-is-xdg-runtime-dir">this other Stack Overflow answer</a>, <code class="language-text">DISPLAY</code> is an address for your display and <code class="language-text">XDG_RUNTIME_DIR</code> is a place to store temporary files for your user. Probably some more to dig into here, but for now, I'm just going to stare at my VNC Viewer and watch the background change.</p>
1967 <p>After all this Googling and debugging, we've now got all these cute images keeping our computer happy, even when we're not there.</p>
1968 <p>Automating stuff like this is part of the magic of computers. And that's why I think it goes so well with these magical Studio Ghibli images.</p>
1969 <h2>Watching the Studio Ghibli films</h2>
1970 <p>But, now I've got a ticking clock... </p>
1971 <p>I hate spoilers, and I'm sad to say that I've only seen Howl's Moving Castle (after reading the book earlier this year). I loved it, much more so than book. Which means I need to watch all the Ghibli films <em>fast</em>, before I spoil my way through them with my desktop backgrounds.</p>
1972 <p>In our first episode of the <a href="/escaping-web-season-one-retrospective">Escaping Web podcast</a>, Oz and I chatted with Felix Tripier who brought up <a href="https://en.wikipedia.org/wiki/Grave_of_the_Fireflies">Grave of the Fireflies</a>. I didn't know about the film during our conversation, but I've just discovered that it's available on Hulu. I'll be watching it very soon. As for the rest of films, I've heard they're on HBO GOMAXPROPLUS in the US and Netflix everywhere else in the world.</p>
1973 <p>For now, I'm just glad to have these images on my little server whenever I log in. It's a nice happy thing in my life, and I thank the orange website for the tiny dose of inspiration.</p></content:encoded></item><item><title><![CDATA[Robots I Love]]></title><description><![CDATA[Beware of scissors The other day I lopped off a sizeable chunk of my thumbprint while making a robot. The cut? It was one of those bright…]]></description><link>https://www.charlieharrington.com/robots-i-love</link><guid isPermaLink="false">https://www.charlieharrington.com/robots-i-love</guid><pubDate>Mon, 24 Aug 2020 00:00:00 GMT</pubDate><content:encoded><h3>Beware of scissors</h3>
1974 <p>The other day I lopped off a sizeable chunk of my thumbprint while making a robot. The cut? It was one of those bright-red, swiftly-flowing ones, where you're pretty sure you're seeing bone or muscle or some other gross-thing-that-should-probably-stay-inside-your-body. The robot? It was made of cardboard and beer cans:</p>
1975 <p><span
1976 class="gatsby-resp-image-wrapper"
1977 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
1978 >
1979 <a
1980 class="gatsby-resp-image-link"
1981 href="/static/9d940d0f21aec7abb6525a0c3097ef1c/5c744/cardboard.png"
1982 style="display: block"
1983 target="_blank"
1984 rel="noopener"
1985 >
1986 <span
1987 class="gatsby-resp-image-background-image"
1988 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAYAAAB836/YAAAACXBIWXMAABYlAAAWJQFJUiTwAAAG3UlEQVRIx0WUeVCU9xnH9w9xgT3YC9ZddsFlYTkFAiyggHIsN8i5IKhccqmIgOKBCh4IRhNB1HgxSVFjaqJWR50x6aTTJKOTmcyk02ozbWc67Uzzh21ipuO0STS1nz67pu07853f+5v3936e73O8r+LZt//kv9c3T54wNzNDZnoasY5wPNkJFGYmUJHnpqZgBdX5WVStyqSxNI/GEp9yaSx+ee8V1RWtQPHdP576Yf9+8eJ/4K+/+ppNfT1kJjlYmRFPcU4GlfnZlOWmU56XTn1xLvUCqC/J9avBB5QgdR4BPvnbYz/kh3/9IHrO98++f7l//nfK8jNxJzkpWpFOWV4mnuUplOakUVuc8yNQID6gwLxlq/yBFI8+f/Cjr2ciX/pP+e7pX7h2+Q3cyS5eiReXmSl4ctIpzE6hRIB18mJj+Soay/6v5op8Aa9E8fHdd7h9dZ73Fk5x4cQkh8YG6WurF3duvFX5dLdW0VJTTFNVoSifZllbazy0rvbQUu2RfRHNlUX+e295Por35o/T1lhGtWc5W7oamZ8Z5/69t/nsw6t8cO0cNy/NMb13kP2jPewb7mBoQxN9a2voaqqkvaGctbUlrJWAbXWlAi5E8c65o5w4PMrl05P88bP3ef7XR7z45g98+/ghj39/n4cPbnPmtX3MTG7n9QNDAu1iW+8aNrc30NtaQ6f3JbjLW+F3qTgnh986eYh7V8/y1e8e8OVvP+LLL17qzw9/wZ9+8yHXFmY5dXTMH3hqbBP7hjoZ7VvLYGeTQGvZ0FxNb0u1OC1BsXuwk1uXZpmf3c/Dj2/yxad3efTpbdEdfn3/Fr/65GdcuzjLdYFemJng2MRWpnb7oF1+6EB7IxvX1bFJtL6+DMXY1i7uXDnBG6/t4eblOT7/6DoPPrjCg5//lPuiT6SeC2en5dlpbl0+yakju/zAg9t72D3QJjVtZqCjkUFRe2MFioM7+rhydpK3Th3k6IFhfnnnJ7x/4zz3blwQzXP32nnOHB/nktT6xsU5FqTWx8YHGR/ewK7N6xnqbhaYl6EuLx0+4PhIN6ePjPL2uSn2bO/m4tnDXJcSvLtwnKsLM7LOMjO1kzOvT8iZV3lzbr+43MHEtg2MSHMGu5ok7Qa2dvocSso7BzoY29rG7NQIFTL5W/rWcPn8NPMn93NBXn7z9GGOTAwzc3iXzOgW9m7vZW5qG9Nj/Yz2t9C/rpaN6+vY0lH/EvjuhVfZJPQ8+aza1lSwtqmU6X2bxdGYdHYX52QuJ3Zu5IBo7+gm5o7tkxr2Mb2nn/3isrulUjq8mi3isqOxHEWrdKZzTaUMdwl7R9oZ6Jb56qjj0O5+hja20NW6mvGRDoYlvTMnpzgxtZ1dA63sHepgckePzKRXxqbSPzbrZMgVGU4bvW21tNYWMNBZQ015HjEOK+31+RweaWZPl4djW6s4us3L2SNDTPSUsrOtgD0dRayvzJI/UQqJrkhWZSVRU7QcRZzVjNNhw53ooDArnih7GNEWA9mJSynNjKM2J4663Hia8xNZV5RE7+pMNtf65MYu5wwGHQZdELnuOKrk+1do1cFELtGTlRhJ3rJIUqLDMevU2I0anGEhWPVqIk0hLBXFWoxEmQ1YTHqWLbWgDdFgNusxG0NIjwnH7bKjSLAaKUyLpjY3iRK3i4LUKAGqsBjUhApYFaREowryy2rU4rKaiLWFkSJApTKAJWESIFRPjHBirQYUOa5wqjJjqc4Wy1lxFCbZSLOocNvUZISrSAgNIlKnxKJZjCE4AE1gACGqQHSaYAICFhGoVKIOVGIL1UkwI4rajGgasl20rkryqyrdQVGcmYokM+XxJjzRIeRGqsmLUJEdHkyKOZh4UyCOECVm1WKMwYsJUwdhk4wckr6iTOrmzY6htziVgYp0WZPpyE+geYWLitRIypdZyXEaWRmlI9+hJTdCQ45dTbZV3BuDcEpDogwqYkK1xPqANo2kpAlkmUVPQVw49W4n/SXJDFel0eNJprsggTXZDqqSLRS5TGRF6KQUGlItauJMwcQYgnGFagQWgsusQxFjX0KEXoslOBBz4CJskkJUSDCpUuA8l4UGd5QAo6lJixColQJXKMuX6uW5NMikxmkUmTREi0OnSJGaGEOczYZZ7+uWyBBCuHQ3XMA+uF0dSJR0PVGiv2IzkBFhIM2uJyVcR7xZS4zAnCYtUTJmDpkCRXJcFMvsAtQZMIZZMViXoJdhVwUuRu9zLR2N0EpZ1EoiRJFSIt8+QrJYqleJ1H6YD+qTAJ0k2O2EhhjQ6MzoQ00YzUaUMn+LAgJYtFiJTqslzGjCLGuE1NsuXfWVyBosqwS0yt6qUWHTqvkP2dowvoW1Jg8AAAAASUVORK5CYII='); background-size: cover; display: block;"
1989 ></span>
1990 <img
1991 class="gatsby-resp-image-image"
1992 alt="cardboard robot"
1993 title="cardboard robot"
1994 src="/static/9d940d0f21aec7abb6525a0c3097ef1c/a6d36/cardboard.png"
1995 srcset="/static/9d940d0f21aec7abb6525a0c3097ef1c/222b7/cardboard.png 163w,
1996 /static/9d940d0f21aec7abb6525a0c3097ef1c/ff46a/cardboard.png 325w,
1997 /static/9d940d0f21aec7abb6525a0c3097ef1c/a6d36/cardboard.png 650w,
1998 /static/9d940d0f21aec7abb6525a0c3097ef1c/e548f/cardboard.png 975w,
1999 /static/9d940d0f21aec7abb6525a0c3097ef1c/5c744/cardboard.png 1206w"
2000 sizes="(max-width: 650px) 100vw, 650px"
2001 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2002 loading="lazy"
2003 />
2004 </a>
2005 </span></p>
2006 <p>This little guy is one of many cardboard robots that I've made over the years. During summers, my sister and I would go to Vineland, New Jersey to stay with my aunt and cousins for a glorious week of catching frogs, playing Sega Genesis, eating spoonfuls of iced tea mix, and arts 'n' crafts.</p>
2007 <p>For some reason, we'd always center on a unique theme each year for our arts 'n' crafts. One summer, it was <a href="https://www.charlieharrington.com/create-wonderful-things-be-good-have-fun">Klutz Press friendship bracelets</a>. Another was god's eyes - we made hundreds. Our proudest summer craft of them all? A "working" cardboard R2-D2. If not for a late '90s winter basement flood, Cardboard Artoo would still be with us today.</p>
2008 <p>I decided to try my hand at making another cardboard robot because I've been thinking a lot about them. Mostly because I'm writing a children's novel about robots, but also cause it's summer and that's the sort of thing you do during summer.</p>
2009 <p>There are all kinds of robots, cardboard and not. But there's a certain sort of robot that makes my gears turn. The rest of this post will review my favorite robots (and the kid who loves them).</p>
2010 <h2>Robots I Love</h2>
2011 <h3>R.O.B. (Robotic Operating Buddy)</h3>
2012 <p>It's a robot... for your original Nintendo. I'm embarassed to admit it, but I've never seen a R.O.B. in real-life, despite scouring every local garage sale in New Jersey for years.</p>
2013 <p><span
2014 class="gatsby-resp-image-wrapper"
2015 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; "
2016 >
2017 <a
2018 class="gatsby-resp-image-link"
2019 href="/static/e2bd304c9728a8ea5a8c8a3e6c78b650/0a47e/rob.png"
2020 style="display: block"
2021 target="_blank"
2022 rel="noopener"
2023 >
2024 <span
2025 class="gatsby-resp-image-background-image"
2026 style="padding-bottom: 126.38036809815951%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAACXBIWXMAACTpAAAk6QFQJOf4AAAHFUlEQVQ4y22UeUzb5xnHH0OzNa22aSpr0hxaUtKgJtwIyGEICXEgCeW+jxASSGAkpFAwYA4bfGFsMBh8YAMGgwFzQwIOV4Bw3yFk6tapU6Wq3aKqU6Yqixrbv2evyR9Ttr3So/d9f++rz+/7HO8DQEZ5Qa51glNn6FDEKrT58ukqNOs696ytLIg215d/3tpYefFkY+Xp5tpix9b60p3tzZUz337zl73L89Ngta62Jvi/g8/j2nyRkw1/frZx9o9P13d2tlZwcXoMV+ancXXpMW6szOPa0iw+GruPYyMD8pnJEVicHaeNDPX8Lyw46KrN5YBLEBYSTP8s6Apm3E7Fqkr+67YmFTVpHLI82VgyLz6eNI+PDLzsamtEXZPSWFHOApmYS+vU/ZfCjJspcNT+mO1xBwc45e0tP3bsE9z/0YGXBw8eopycnZHBYFC1VSKcGB0wGdqbUSOv+VdDXbWTXFoJjcpaG3ZxydtAf18f2Lf/gK3d7/bBkSNHKuh0Onp4eKCTkxOeO+dnOXLUHvOy75oNRFmLWv59b5fOt6mhbhfGLWaCWlH3NvA8/Sy4OLvQTp44CZ9+euJDR0enphMnTn5JzOzp6YWHDh02sYuY2N7c8Fjf3vpbaxKISltBaQEws9Khq137NrCzXQdenl4E6rq73/OLvRAaFv7uwUOHHRPi4rZup6VhCasA62ul2QqZFFqbNe/NTk/ZDPS0w+hwL4wZ78PK0vwbGLuIBYi4uw646E/78Yfn8MPfvweVsn73m4Bb/rBSKEQBl4uNDUpmS3MjbK6vwdTEQ9h+skWbm5mizc1OwdLCY3j+3TcAbeSCFZhxK802PCQYnj194jE9NakYfzi6ODoyvCMRVbzkcjjIKyvDRrXyq/4+g2RizJj7aHLswubGBizMzYAVujg/C7PTEwCDPV3AKS22YRUwQSTgBRk69Tj6YBiHBvtQ06AkrhYil1NGFRcWWMQVfLw/1I/jxhGceDiCM48mC3588Yq2trK4C16cm/5PHDPTb2fdunnjxZ0/pGOnvu1VR7vOTGJmllVLqOrKCpSKRdjZ3mqZGBs1TU0YTcuLc6b11SUkrqpWlxeAGG1pYRZAyCsHVn7eu1wO+x+5OdnI8L+A1eJKbFDUWzRKuUmrabA0EaV6XQs1PNCHU+OjlKGzDXu7uyy9hg40Phh4PthneP/+YC88GOoFqKiqsQqkccvYU2XsUgxgMGRSSeWOoq4WNSoFSYQCCdjyZq2i5LIaKufeXczLyTb7+fqgTqveITmwsULQ/PKNu4kJ8ZB1JzOfV8YhZ7inSa34VV1NtZ9GqUiVSatXVfJ6K9wsrhDiF5/fw/y8POrzrCxMiI1GZm7Ooyufhf3S3cMDfHzoNhAXG/vBBf+LeZkZ6X9LT0t9HRUdfSwxIQGEfB6QMEBhXq6Wlc9EEmNTVEQEdTXwMhVwkYFhwcE/kfMzH9jZZbq6us76+19w8Pb2AvCl069Zn9mpU6fRx8cX6T4+y4lJSf7FrMLoQmbuanxMNHq4uVsuMRh443oyxS5mUfK6GpTLqv6pkFV3d+u1YQ4Ox2+5uDgvRoSH2cFpT8/fODk6Btl/bM9xd3efuHI5EL0JnLxh9Pb2Rlc3N+paYiIpHxaSR0ASJsJqSSVVQ5qFolaMHa2NP5MwvXP8uMOot5dnKpwhMmm0d+DG9WswYRw8r9NqSFyyzVGR4aaAwEDzdaJKJq1CUqtUKVFH4kwVFTCxkl9GNTfUmfu69abAAMa2g4PDxKWL/vYQExVBS0qI2/Ps620wdLfp9HIZalnFr/msfKzilVH10ipKIhIiv4yNIn458thFKOAUYa1EQHV3tFr6DO3IJlVPcrt3N8PtWjVo1XJoVtW9r2/RfEuaJSprxJYKdjElYOZhUXoG8osKsVYsQKmIh/XVIlTJJFRro4LqN+isnRufbW96KuUykFaJbaGtSUlrUdeDViXbR7rzT6QtUVVCrklSwTV36JooXbMK1XXVVKOihrQvFaWsFVsUNWLzgEH3uq9Di/2GtlfdnR37v/7qTzDcb6BBeQmLxszOgvzsLLvy0iJKWF6KbBYTK8isb1abWzUKM2mq5h59i2mwW29R10tRJhGgrlGJMpIYEa/MiPimoDlFxPMA/4u7G2vHCb56NZnUV1dMRLgwKyN9TizgYaNCRgBCrJdKUCLkYmkh87t7mRkzGbdSxZGhocn2Rz/5dVx0NKSlpNCMQ10AfnRfOHeWDl5uHsAg8JCgIEgmL8f6g6jw8Fpy8a9J8XHjCTExd/39zp92Puny4aSxH0oKmRAeEgK/P/wxpKakwJ2MdBgfHQSIjYyEuChikREQHRFhkxgXa5uWkmxrBYaHhsIBu4/eE/E5kBQfD34+58DVyQ3GHvTQeJwS25RrSbY3k5NpVoXXk5KgOC8X/g0JzsMMDT4kIQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
2027 ></span>
2028 <img
2029 class="gatsby-resp-image-image"
2030 alt="rob1"
2031 title="rob1"
2032 src="/static/e2bd304c9728a8ea5a8c8a3e6c78b650/0a47e/rob.png"
2033 srcset="/static/e2bd304c9728a8ea5a8c8a3e6c78b650/222b7/rob.png 163w,
2034 /static/e2bd304c9728a8ea5a8c8a3e6c78b650/ff46a/rob.png 325w,
2035 /static/e2bd304c9728a8ea5a8c8a3e6c78b650/0a47e/rob.png 600w"
2036 sizes="(max-width: 600px) 100vw, 600px"
2037 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2038 loading="lazy"
2039 />
2040 </a>
2041 </span></p>
2042 <blockquote>
2043 <p>Source: <a href="https://en.wikipedia.org/wiki/R.O.B.">Wikipedia</a></p>
2044 </blockquote>
2045 <p>These Nintendo ads are just perfection. I'm still more excited for the promise of this system than any game console out today.</p>
2046 <p><span
2047 class="gatsby-resp-image-wrapper"
2048 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2049 >
2050 <a
2051 class="gatsby-resp-image-link"
2052 href="/static/249e6e5d55d9532ba82345dee293de3a/9c538/rob-1.jpg"
2053 style="display: block"
2054 target="_blank"
2055 rel="noopener"
2056 >
2057 <span
2058 class="gatsby-resp-image-background-image"
2059 style="padding-bottom: 129.4478527607362%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAaABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBBAUG/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB2luUPJCpkdFQL5If/8QAHhAAAQQCAwEAAAAAAAAAAAAAAQACAwQQExIhIjL/2gAIAQEAAQUCcCvSHQc5rFvixYh2iKtzOK/0v//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EACAQAAEDAgcAAAAAAAAAAAAAAAEAEBECIRIiM0FxkaH/2gAIAQEABj8CsVu2YgLUp7YXiERj8c8N/8QAHBABAQEAAgMBAAAAAAAAAAAAAREAITEQIGFx/9oACAEBAAE/IS8p+YpMPAtxlN+uEYeBwWzvV0Rg7dCE9E//2gAMAwEAAgADAAAAEDDGQP/EABYRAQEBAAAAAAAAAAAAAAAAABABEf/aAAgBAwEBPxA2n//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EAB0QAQEAAgMAAwAAAAAAAAAAAAERACEQMVFBobH/2gAIAQEAAT8QQXa9MZCmu6OsWhfrgloYJFwciugjh9/4WTSe4bwEdj56N5ApYSuPWfVfvH//2Q=='); background-size: cover; display: block;"
2060 ></span>
2061 <img
2062 class="gatsby-resp-image-image"
2063 alt="rob2"
2064 title="rob2"
2065 src="/static/249e6e5d55d9532ba82345dee293de3a/6aca1/rob-1.jpg"
2066 srcset="/static/249e6e5d55d9532ba82345dee293de3a/d2f63/rob-1.jpg 163w,
2067 /static/249e6e5d55d9532ba82345dee293de3a/c989d/rob-1.jpg 325w,
2068 /static/249e6e5d55d9532ba82345dee293de3a/6aca1/rob-1.jpg 650w,
2069 /static/249e6e5d55d9532ba82345dee293de3a/7c09c/rob-1.jpg 975w,
2070 /static/249e6e5d55d9532ba82345dee293de3a/01ab0/rob-1.jpg 1300w,
2071 /static/249e6e5d55d9532ba82345dee293de3a/9c538/rob-1.jpg 2550w"
2072 sizes="(max-width: 650px) 100vw, 650px"
2073 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2074 loading="lazy"
2075 />
2076 </a>
2077 </span></p>
2078 <p><span
2079 class="gatsby-resp-image-wrapper"
2080 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2081 >
2082 <a
2083 class="gatsby-resp-image-link"
2084 href="/static/1f2df2dc5f2c9d2e7931bd92c78eef19/a0850/rob-2.jpg"
2085 style="display: block"
2086 target="_blank"
2087 rel="noopener"
2088 >
2089 <span
2090 class="gatsby-resp-image-background-image"
2091 style="padding-bottom: 64.41717791411043%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAdiNnGAP/8QAGhABAQEAAwEAAAAAAAAAAAAAAQIDABESMf/aAAgBAQABBQK0K30M+T8rMaqfQHR//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGRAAAwADAAAAAAAAAAAAAAAAAAEREBKB/9oACAEBAAY/AkK3mNiMh//EABoQAAIDAQEAAAAAAAAAAAAAAAABESExQVH/2gAIAQEAAT8hQ0O9vD34gkLZI2oRwCLTEf/aAAwDAQACAAMAAAAQUM//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAcEAEBAAICAwAAAAAAAAAAAAABEQAhMUFRYXH/2gAIAQEAAT8QQD7rFp5gYknLSKsnV95zo0tcCK8UFB+neaksXWkcPQeAz//Z'); background-size: cover; display: block;"
2092 ></span>
2093 <img
2094 class="gatsby-resp-image-image"
2095 alt="rob3"
2096 title="rob3"
2097 src="/static/1f2df2dc5f2c9d2e7931bd92c78eef19/6aca1/rob-2.jpg"
2098 srcset="/static/1f2df2dc5f2c9d2e7931bd92c78eef19/d2f63/rob-2.jpg 163w,
2099 /static/1f2df2dc5f2c9d2e7931bd92c78eef19/c989d/rob-2.jpg 325w,
2100 /static/1f2df2dc5f2c9d2e7931bd92c78eef19/6aca1/rob-2.jpg 650w,
2101 /static/1f2df2dc5f2c9d2e7931bd92c78eef19/7c09c/rob-2.jpg 975w,
2102 /static/1f2df2dc5f2c9d2e7931bd92c78eef19/01ab0/rob-2.jpg 1300w,
2103 /static/1f2df2dc5f2c9d2e7931bd92c78eef19/a0850/rob-2.jpg 4096w"
2104 sizes="(max-width: 650px) 100vw, 650px"
2105 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2106 loading="lazy"
2107 />
2108 </a>
2109 </span></p>
2110 <p><span
2111 class="gatsby-resp-image-wrapper"
2112 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2113 >
2114 <a
2115 class="gatsby-resp-image-link"
2116 href="/static/919afde0ddef82184e8b12c4f32a0574/9c538/rob-3.jpg"
2117 style="display: block"
2118 target="_blank"
2119 rel="noopener"
2120 >
2121 <span
2122 class="gatsby-resp-image-background-image"
2123 style="padding-bottom: 129.4478527607362%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAaABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMFAgH/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABrcalHjBZ6auYDZX/xAAcEAACAgIDAAAAAAAAAAAAAAABAgADERIQEzH/2gAIAQEAAQUCJOctF8sfRFuJeNW2vUFVDlYABx//xAAVEQEBAAAAAAAAAAAAAAAAAAARIP/aAAgBAwEBPwFj/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAQMEAwAAAAAAAAAAAAAAAAECERASIjEhQWH/2gAIAQEABj8COzkV0SI1W79ouM3bLspEWmqf/8QAHhABAAIBBAMAAAAAAAAAAAAAAQARECExQWFRcZH/2gAIAQEAAT8hKgX5iN3m5xYcQvBq1LYQKLrXXghx00q524RmwA9GP//aAAwDAQACAAMAAAAQ58/M/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/EEDk2f/EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/EIQ//8QAHhAAAgMAAgMBAAAAAAAAAAAAAREAITEQUUFhgaH/2gAIAQEAAT8QXLujBc3boZCgJHsIrWKmTZA37Bg+olEHiHBzrY0tIb8CEwgAEmkB1QbvtwyY0aF+S2xpddA4/9k='); background-size: cover; display: block;"
2124 ></span>
2125 <img
2126 class="gatsby-resp-image-image"
2127 alt="rob4"
2128 title="rob4"
2129 src="/static/919afde0ddef82184e8b12c4f32a0574/6aca1/rob-3.jpg"
2130 srcset="/static/919afde0ddef82184e8b12c4f32a0574/d2f63/rob-3.jpg 163w,
2131 /static/919afde0ddef82184e8b12c4f32a0574/c989d/rob-3.jpg 325w,
2132 /static/919afde0ddef82184e8b12c4f32a0574/6aca1/rob-3.jpg 650w,
2133 /static/919afde0ddef82184e8b12c4f32a0574/7c09c/rob-3.jpg 975w,
2134 /static/919afde0ddef82184e8b12c4f32a0574/01ab0/rob-3.jpg 1300w,
2135 /static/919afde0ddef82184e8b12c4f32a0574/9c538/rob-3.jpg 2550w"
2136 sizes="(max-width: 650px) 100vw, 650px"
2137 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2138 loading="lazy"
2139 />
2140 </a>
2141 </span></p>
2142 <blockquote>
2143 <p>Source: <a href="https://twitter.com/heyphilsummers/status/1199532600911683585">Twitter</a></p>
2144 </blockquote>
2145 <p>R.O.B. only ever worked with two Nintendo games. From what I've read, neither is very fun. But I'm sure there are some great ROM-hacks out there with more robotic operating buddy interactions.</p>
2146 <h3>Johnny 5</h3>
2147 <p>Duh.</p>
2148 <p>Johnny 5 looks a lot like R.O.B., except with more nuclear-weapons. He loves reading, loves input, loves New York City. A loyal friend, and perhaps a bit too gullible for his own good.</p>
2149 <p><span
2150 class="gatsby-resp-image-wrapper"
2151 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 564px; "
2152 >
2153 <a
2154 class="gatsby-resp-image-link"
2155 href="/static/def1bd3463f03cf94b8a53217bafb621/7723c/johnny5.jpg"
2156 style="display: block"
2157 target="_blank"
2158 rel="noopener"
2159 >
2160 <span
2161 class="gatsby-resp-image-background-image"
2162 style="padding-bottom: 123.92638036809815%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAZABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAUBAwQC/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAWlF+BGxIq/GzktOQ//EAB0QAAICAQUAAAAAAAAAAAAAAAIDAAExEhMUICL/2gAIAQEAAQUCxSz9QsCquRG6rBYHu9P/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAABBAMBAAAAAAAAAAAAAAACAAEQESAhMUH/2gAIAQEABj8C7SojYpffsUKHH//EABwQAQEBAAIDAQAAAAAAAAAAAAERABAxIVFhgf/aAAgBAQABPyFRVH06flRl60xs+9GFQMT9c4s7HBsSPZrwcf/aAAwDAQACAAMAAAAQnwGC/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFREBAQAAAAAAAAAAAAAAAAAAASD/2gAIAQIBAT8QI//EAB8QAQACAQMFAAAAAAAAAAAAAAEAESExUWEQQXGBof/aAAgBAQABPxA9QHAMrUrAUCi796Ri2N2ws7ZMspNBuW8mxf2LMB28LmsRwvkt9IbrPLprjP/Z'); background-size: cover; display: block;"
2163 ></span>
2164 <img
2165 class="gatsby-resp-image-image"
2166 alt="johnny-5"
2167 title="johnny-5"
2168 src="/static/def1bd3463f03cf94b8a53217bafb621/7723c/johnny5.jpg"
2169 srcset="/static/def1bd3463f03cf94b8a53217bafb621/d2f63/johnny5.jpg 163w,
2170 /static/def1bd3463f03cf94b8a53217bafb621/c989d/johnny5.jpg 325w,
2171 /static/def1bd3463f03cf94b8a53217bafb621/7723c/johnny5.jpg 564w"
2172 sizes="(max-width: 564px) 100vw, 564px"
2173 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2174 loading="lazy"
2175 />
2176 </a>
2177 </span></p>
2178 <blockquote>
2179 <p>Source: <a href="https://synthiam.com/Community/Questions/Original-Movie-Rc-Johnny-5-For-Sale-6415">Synthiam</a></p>
2180 </blockquote>
2181 <p>Major spoiler-alert for Short Circuit 2, but this action sequence gets me every time:</p>
2182 <iframe width="720" height="415" src="https://www.youtube.com/embed/POxMp61Ksbk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
2183 <h3>Wall-E</h3>
2184 <p>What do you get when you cross R.O.B., Johnny 5, and a Tonka truck? This lil' garbage-collecting cutie!</p>
2185 <p><span
2186 class="gatsby-resp-image-wrapper"
2187 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2188 >
2189 <a
2190 class="gatsby-resp-image-link"
2191 href="/static/a0029b6a0a4cd8dce5007aece8b5c0e9/eea4a/walle.jpg"
2192 style="display: block"
2193 target="_blank"
2194 rel="noopener"
2195 >
2196 <span
2197 class="gatsby-resp-image-background-image"
2198 style="padding-bottom: 79.75460122699387%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMF/8QAFAEBAAAAAAAAAAAAAAAAAAAAA//aAAwDAQACEAMQAAAB0IYxCuiU/wD/xAAaEAEAAgMBAAAAAAAAAAAAAAABAAIDESIz/9oACAEBAAEFAlN06tl9LXQcqRdz/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAh/9oACAEDAQE/AQE2f//EABYRAAMAAAAAAAAAAAAAAAAAAAABEf/aAAgBAgEBPwF1FP/EABoQAAIDAQEAAAAAAAAAAAAAAAARAQIxcSH/2gAIAQEABj8CjEbWeFjSF5wbP//EABsQAAICAwEAAAAAAAAAAAAAAAABESExUWFB/9oACAEBAAE/IWIJP7OB01VXWwjSunRxTVs8iTKZ/9oADAMBAAIAAwAAABCb3//EABYRAQEBAAAAAAAAAAAAAAAAAAAhUf/aAAgBAwEBPxDXEf/EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQIBAT8QSYcif//EABwQAQADAQEAAwAAAAAAAAAAAAEAESFBMWFxgf/aAAgBAQABPxBQuFPZyK4WnDTfP2KgpH79yhFhVnIrNrtWPiDoL1bn/9k='); background-size: cover; display: block;"
2199 ></span>
2200 <img
2201 class="gatsby-resp-image-image"
2202 alt="wall-e"
2203 title="wall-e"
2204 src="/static/a0029b6a0a4cd8dce5007aece8b5c0e9/6aca1/walle.jpg"
2205 srcset="/static/a0029b6a0a4cd8dce5007aece8b5c0e9/d2f63/walle.jpg 163w,
2206 /static/a0029b6a0a4cd8dce5007aece8b5c0e9/c989d/walle.jpg 325w,
2207 /static/a0029b6a0a4cd8dce5007aece8b5c0e9/6aca1/walle.jpg 650w,
2208 /static/a0029b6a0a4cd8dce5007aece8b5c0e9/7c09c/walle.jpg 975w,
2209 /static/a0029b6a0a4cd8dce5007aece8b5c0e9/eea4a/walle.jpg 1280w"
2210 sizes="(max-width: 650px) 100vw, 650px"
2211 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2212 loading="lazy"
2213 />
2214 </a>
2215 </span></p>
2216 <blockquote>
2217 <p>Source: <a href="https://gsouto-digitalteacher.blogspot.com/2012/04/wall-e-as-green-resource-for-earth-day.html">Blogspot</a></p>
2218 </blockquote>
2219 <p>It's probably becoming quite clear that I'm drawn to a rectangular face on a telescopic neck with tread-like wheels. That's just my type.</p>
2220 <p>I also just discovered this video of someone's real-life Wall-E, and it's frightenly real-looking. Maybe this means I'll get to meet a Wall-E one day, hopefully not on a post-apocalyptic wasteland Earth.</p>
2221 <iframe width="720" height="415" src="https://www.youtube.com/embed/7oVSaUWeKt0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
2222 <h3>The flying robots from *Batteries Not Included</h3>
2223 <p>I don't remember much about this movie, other than that my sister and I watched the recorded-from-TV VHS tape all the time, and there were these super cute baby flying robots who lived with a bunch of old people in an apartment building in New York City.</p>
2224 <p><span
2225 class="gatsby-resp-image-wrapper"
2226 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2227 >
2228 <a
2229 class="gatsby-resp-image-link"
2230 href="/static/b82a9f26dcde56c27d022b62cf3e394d/7de01/batteries.png"
2231 style="display: block"
2232 target="_blank"
2233 rel="noopener"
2234 >
2235 <span
2236 class="gatsby-resp-image-background-image"
2237 style="padding-bottom: 149.07975460122697%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAACXBIWXMAABYlAAAWJQFJUiTwAAAFqklEQVRIx62UeUxUVxTG3z9N2qRpUm20tTWNUWnUumuF4lLFRomNW4vbICiISzUV2QRFrBGFuhS1IAguoFVRwCioICoqEZlBWcQiiwszwDjMwjIzsswCvz4WAYmapvHm3dyc5X73fOedcwTe8xLeP2Brq/h177bV2kvX2qnraevt16lA6BLa5JaWjm21duyecufZ5dvD3hO8i7LVavlPlMx6PRaT6TXdaxFampp45ONFoZ83L04cQ19WhvpaKupz8ShEWZWYiPZOBrXX0tDduc3j8ENUJMRTe/MGtbcyUEuzu9m1toiURaFcdH60LZBcZ2fub/Lk3rIl3F+8mAdrV5O32oOsRb+QuXIFuZs2URoWxr2ZDtxZ5U5OgD+569djaaPdGaXQVKGg8ekTdDkySo8fRR57jJLoaMpv3qRG1NdVVFD3vBx1YQG6x0U01tdTI5ejKylGVZCP7smTLurNOi1C+a5gsuc4UuDqQpGXJ4WSZSjOnKY8OoryiL9Qx59BnXKJ6rSrlPn6UJ16BU3yRSoPHaBMZKU8FUd1UkKXLGjy8pBnZFCRfp1nycmoZDKUWXcp8vEhW6Qp8/Agx82dpxcSkUkkyFa6Il26FKmYHpmbG1nLl5MdtI0HzhIKxfOthW3UaDDqdDSIf9VYXY1epP6yro56hXjW1qKvrGy3G6vVNBqNGJQvMKhU4k95VWu99v/ulLY+aO8EuruibbW8Am/TveXR1jf4vJFyz9ZqaWnlXe351uHQfaFdoqG5uxtMFutbH+wNKvQ2WKwd+UvPKeLYhQxMZgtV+iYeq/SoNTWYXxreCSr0zturFbQ3isHD7Vm9K46YrGecz1dSKlfx0mTF2tm3ba3WG1Sgy9ihqDc2cCj1EUMW+PPpYFv8Q/Yhe15NtbaWZ4oqMu/mUCKvem1C9YxY6Jm3iqoqzt54wJHUfKR5WZzNzOW+XEtaXinh4UeICI8mPjWT/X9FEht7EkNdzWug3QO2na8VnVbDK5Om2UJRrYVMuYHEhwrC484TuGU76+LS2H8+jYA1q7hxMaEjVT0qoGvAtlhMWA0amsoe8FRVQ1qZhgJlPUXaRtQNVkrrrWRUGDglLSFdjFhlMNFsqKFBWyUCtnRO9c4cNpnNKJ/+w3NpGrL4SFISz5NZrECpb+4ocHH4GsTcag0i+Eszt4oruV6q4mrUbrKjAtAXXsNUq+ig3CCiPpTepSA2lGhvCe6uEjZ7baRSpcZsttLQ0IjeYESt1ohlo21/oEnMi0apYM0cO7wWOXApZC0lKREYtUoEdXMrxelJ7HB2ZMLQgUz8+jMS4qIxNpooKa/gbNJFdofuYefuUCJPnuFKuji96+rbo7l+wJ/tTlPZMPd7InxdqK8qQ7iTcJzcc4eZbzeMVcuXIMu8yQtxgkSdTmBj4A6mzHVi1EQ7pvy0kKVrfmOJ+1p2hoQStncffqtX4LvEAf+fbTkR7Mn96xcQNkic2OA8n0C3BWilyZjrVKRcTcPV73eGjrdj4NDhjJ5ky7DRY/nKZjgj7Kcz0X4Kk+0n8+247xgwdBjzpo/jeJAbsx1mIthOnsFMe1txgEZSl3yQlCAX1nm4M26qA/0G2TBv1gySg9eQfXgLkd6ujB0/rh3EdpId3sudCHRZgGT2NMYMt8FOxBJmOPxIzA5vkvf5kh8XQsiGZUwUL33cpx+Dh43Af8V8FKd3UnzmD7Ijt7LNbSEf9u3PyFFjiA/2pfhUKIc2ujDexoZpP4iACx1nUZh0hPyYHdz+049YvxWMHTUS4aNPsB0/VoxiAZf3evH3Vg8OeLpyzMeFvl98yaAh35AXdwD52YMkBbiT5OlETMBGhIS92yhIPILqUjjXwgJI2CxhmeM0PujTnznT7Ij1X8nl4HXki9FJDweRvHM9fT8fwIQxY0jf48VR319xnT2FmFWO5J0I41+xFtNJHdHuVgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
2238 ></span>
2239 <img
2240 class="gatsby-resp-image-image"
2241 alt="batteries robots"
2242 title="batteries robots"
2243 src="/static/b82a9f26dcde56c27d022b62cf3e394d/a6d36/batteries.png"
2244 srcset="/static/b82a9f26dcde56c27d022b62cf3e394d/222b7/batteries.png 163w,
2245 /static/b82a9f26dcde56c27d022b62cf3e394d/ff46a/batteries.png 325w,
2246 /static/b82a9f26dcde56c27d022b62cf3e394d/a6d36/batteries.png 650w,
2247 /static/b82a9f26dcde56c27d022b62cf3e394d/7de01/batteries.png 794w"
2248 sizes="(max-width: 650px) 100vw, 650px"
2249 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2250 loading="lazy"
2251 />
2252 </a>
2253 </span></p>
2254 <blockquote>
2255 <p>Source: <a href="https://play.google.com/store/movies/details?id=lfDVLChs2jI&#x26;gl=US&#x26;utm_source=na_Med&#x26;utm_medium=hasem&#x26;utm_campaign=MoviesPLA&#x26;pcampaignid=MKT-DR-na-us-all-Med-pla-mo-Evergreen-Dec1115-1-movieslibrary&#x26;gclid=CjwKCAjwyo36BRAXEiwA24CwGWL_psFBrrF21EnfNQPDkkWrr37zjejRvlynYt1oSgr2cXgp5DmPyhoCppwQAvD_BwE&#x26;gclsrc=aw.ds">Google Play Store</a></p>
2256 </blockquote>
2257 <p>I think these robots might actually be aliens, but I'm not sure, so let's keep 'em around.</p>
2258 <h3>2-XL</h3>
2259 <p>I'm all about using robots for learning (see my post on <a href="/mindstorms">Mindstorms, Seymour Papert, and his cute LOGO Turtle robots for teaching kids how to program computers</a>), and 2-XL was my first introduction to robot-powered-learning.</p>
2260 <p><span
2261 class="gatsby-resp-image-wrapper"
2262 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2263 >
2264 <a
2265 class="gatsby-resp-image-link"
2266 href="/static/e427b0ab3f3772309062f6c535faf3a6/eea4a/2-xl.jpg"
2267 style="display: block"
2268 target="_blank"
2269 rel="noopener"
2270 >
2271 <span
2272 class="gatsby-resp-image-background-image"
2273 style="padding-bottom: 132.51533742331287%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQBAwUG/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAczRU3wuZGhElyC6Rws//8QAHRAAAgIBBQAAAAAAAAAAAAAAAQIAESEDBBATM//aAAgBAQABBQJVsjaXCuU9O/Thy1UwWoowQDK4/8QAFhEBAQEAAAAAAAAAAAAAAAAAEAER/9oACAEDAQE/AYaf/8QAFxEBAAMAAAAAAAAAAAAAAAAAAQAQEf/aAAgBAgEBPwFZt//EABsQAAICAwEAAAAAAAAAAAAAAAERABAgMXHh/9oACAEBAAY/Ap5aBfIa2sf/xAAaEAEBAQADAQAAAAAAAAAAAAABEQAhMVFB/9oACAEBAAE/IZxNciycL00UeYQN6c05XzDR6ua+O8woK59d9BhCmAdGAhv/2gAMAwEAAgADAAAAEFs5Dv/EABgRAQEBAQEAAAAAAAAAAAAAAAEAETEh/9oACAEDAQE/EA8CyEcn12//xAAYEQADAQEAAAAAAAAAAAAAAAAAARExUf/aAAgBAgEBPxDSuCE6JH//xAAdEAEAAgIDAQEAAAAAAAAAAAABABEhMUFRYXGB/9oACAEBAAE/ELUwsN1l1LB7qDyPWr+kRnaR/IaNKLOqqbE7ovP1xDLEFU8ZmZqrI96gjgkOzwinOVcmYCkgWTFAHQVHMnE//9k='); background-size: cover; display: block;"
2274 ></span>
2275 <img
2276 class="gatsby-resp-image-image"
2277 alt="2xl"
2278 title="2xl"
2279 src="/static/e427b0ab3f3772309062f6c535faf3a6/6aca1/2-xl.jpg"
2280 srcset="/static/e427b0ab3f3772309062f6c535faf3a6/d2f63/2-xl.jpg 163w,
2281 /static/e427b0ab3f3772309062f6c535faf3a6/c989d/2-xl.jpg 325w,
2282 /static/e427b0ab3f3772309062f6c535faf3a6/6aca1/2-xl.jpg 650w,
2283 /static/e427b0ab3f3772309062f6c535faf3a6/7c09c/2-xl.jpg 975w,
2284 /static/e427b0ab3f3772309062f6c535faf3a6/eea4a/2-xl.jpg 1280w"
2285 sizes="(max-width: 650px) 100vw, 650px"
2286 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2287 loading="lazy"
2288 />
2289 </a>
2290 </span></p>
2291 <blockquote>
2292 <p>Source: <a href="https://en.wikipedia.org/wiki/2-XL">Wikipedia</a></p>
2293 </blockquote>
2294 <p>We got our 2-XL at a garage sale (garage sales were things of wonder to me as a child). Yes, we had the original 2-XL, the eight-track one. In fact, 2-XL was my first and only interaction with an eight-track system. In the early `90s, Tiger Electronics must have bought 2-XL, and they came out with a cassette-version. </p>
2295 <p><span
2296 class="gatsby-resp-image-wrapper"
2297 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; "
2298 >
2299 <a
2300 class="gatsby-resp-image-link"
2301 href="/static/b4f82ab27f934ed502846b4686fb90e3/41099/2-xl-cassette.jpg"
2302 style="display: block"
2303 target="_blank"
2304 rel="noopener"
2305 >
2306 <span
2307 class="gatsby-resp-image-background-image"
2308 style="padding-bottom: 78.52760736196319%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQBAgP/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABlpasNmRX/8QAGBABAQEBAQAAAAAAAAAAAAAAAQIDABH/2gAIAQEAAQUC0U6X2evNrinKTQT/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAaEAABBQEAAAAAAAAAAAAAAAAAARAREiEx/9oACAEBAAY/AsfCsHFP/8QAHBAAAgICAwAAAAAAAAAAAAAAAAERQRAhMXGh/9oACAEBAAE/IVXOeyId3hW0Erc1b0iWeB//2gAMAwEAAgADAAAAEIsP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8QJ//EABwQAQACAgMBAAAAAAAAAAAAAAEAESExQVFxkf/aAAgBAQABPxBLVAKCh6xnkaBTV8xcxiN0mcPYwE3rfoYedw0zXdXPs//Z'); background-size: cover; display: block;"
2309 ></span>
2310 <img
2311 class="gatsby-resp-image-image"
2312 alt="2xl cassette version"
2313 title="2xl cassette version"
2314 src="/static/b4f82ab27f934ed502846b4686fb90e3/41099/2-xl-cassette.jpg"
2315 srcset="/static/b4f82ab27f934ed502846b4686fb90e3/d2f63/2-xl-cassette.jpg 163w,
2316 /static/b4f82ab27f934ed502846b4686fb90e3/c989d/2-xl-cassette.jpg 325w,
2317 /static/b4f82ab27f934ed502846b4686fb90e3/41099/2-xl-cassette.jpg 500w"
2318 sizes="(max-width: 500px) 100vw, 500px"
2319 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2320 loading="lazy"
2321 />
2322 </a>
2323 </span></p>
2324 <blockquote>
2325 <p>Source: <a href="https://en.wikipedia.org/wiki/2-XL">Wikipedia</a></p>
2326 </blockquote>
2327 <p>But I'll always prefer our smart-alecky 8-track 2-XL, and my fond memories of jamming catridges into his belly, wishing that he was a Nintendo Entertainment System instead.</p>
2328 <h3>Mega Man X</h3>
2329 <p>When I was a kid, I was pretty sure that one day I was going to become Mega Man X. Buried alive in a weird time capsule, awokened years later to avenge my creator, upgrading my body with strange new powers.</p>
2330 <p><span
2331 class="gatsby-resp-image-wrapper"
2332 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; "
2333 >
2334 <a
2335 class="gatsby-resp-image-link"
2336 href="/static/39d29464655aae0ce2f0e13229322f16/41099/mmx.jpg"
2337 style="display: block"
2338 target="_blank"
2339 rel="noopener"
2340 >
2341 <span
2342 class="gatsby-resp-image-background-image"
2343 style="padding-bottom: 73.61963190184049%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIE/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAYZjmRQL/8QAGxABAAICAwAAAAAAAAAAAAAAAQACAxESEyH/2gAIAQEAAQUCrxYgK+uYq9jNk//EABYRAQEBAAAAAAAAAAAAAAAAAAEQEf/aAAgBAwEBPwHFn//EABYRAAMAAAAAAAAAAAAAAAAAAAEQEv/aAAgBAgEBPwESv//EABoQAAIDAQEAAAAAAAAAAAAAAAABESExkTL/2gAIAQEABj8CxcLwdLhEFo8o/8QAGxAAAgMAAwAAAAAAAAAAAAAAAAERITFBUWH/2gAIAQEAAT8h51XgiKIRqxY2K0t7Zg1OCSw//9oADAMBAAIAAwAAABA8D//EABcRAQEBAQAAAAAAAAAAAAAAAAEAMRH/2gAIAQMBAT8Q50Izb//EABYRAQEBAAAAAAAAAAAAAAAAAAExAP/aAAgBAgEBPxBBGZs3/8QAHBABAAMAAwEBAAAAAAAAAAAAAQARMSFBUZHR/9oACAEBAAE/EFakNJR1KLVqHhXziKBUgcPY2G6TY2LmeSw0ePf2KUBbff7P/9k='); background-size: cover; display: block;"
2344 ></span>
2345 <img
2346 class="gatsby-resp-image-image"
2347 alt="Mega Man X"
2348 title="Mega Man X"
2349 src="/static/39d29464655aae0ce2f0e13229322f16/41099/mmx.jpg"
2350 srcset="/static/39d29464655aae0ce2f0e13229322f16/d2f63/mmx.jpg 163w,
2351 /static/39d29464655aae0ce2f0e13229322f16/c989d/mmx.jpg 325w,
2352 /static/39d29464655aae0ce2f0e13229322f16/41099/mmx.jpg 500w"
2353 sizes="(max-width: 500px) 100vw, 500px"
2354 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2355 loading="lazy"
2356 />
2357 </a>
2358 </span></p>
2359 <blockquote>
2360 <p>Source: <a href="https://www.amazon.co.uk/Mega-Man-Megaman-X/dp/B00004TMBD">Amazon</a></p>
2361 </blockquote>
2362 <p>I'm still waiting for that to happen, but the the mean time, I recently started playing Mega Max X2, and it's hard! I'm four bosses in, haven't found a single upgrade, and only snagged one heart container so far. Wish me luck.</p>
2363 <h3>DUM-E and U</h3>
2364 <p>Robot arms with quirky personalities, built by someone named Tony Stark.</p>
2365 <p><span
2366 class="gatsby-resp-image-wrapper"
2367 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; "
2368 >
2369 <a
2370 class="gatsby-resp-image-link"
2371 href="/static/653244aa1db702282adae95d91fb4138/41099/starm.jpg"
2372 style="display: block"
2373 target="_blank"
2374 rel="noopener"
2375 >
2376 <span
2377 class="gatsby-resp-image-background-image"
2378 style="padding-bottom: 80.3680981595092%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAQX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABnbWlnOgH/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAIBAxESEyL/2gAIAQEAAQUCW41qaPCjQ2KVlTmf/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAHhAAAgIABwAAAAAAAAAAAAAAABEBIQIiMTJhgZH/2gAIAQEABj8CmtCFEuRX6ZVyLEujaf/EABsQAQACAwEBAAAAAAAAAAAAAAEAESExQXGh/9oACAEBAAE/IU0Kr5MkralIiAQWeuw1uK4tKcn/2gAMAwEAAgADAAAAEEjv/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGxABAAMBAQEBAAAAAAAAAAAAAQARITFRcWH/2gAIAQEAAT8Qom8BY77+3BK8lKgu3TccAc6r5Kx51JHWfT8m5kOwfIBwL1uuz//Z'); background-size: cover; display: block;"
2379 ></span>
2380 <img
2381 class="gatsby-resp-image-image"
2382 alt="Stark"
2383 title="Stark"
2384 src="/static/653244aa1db702282adae95d91fb4138/41099/starm.jpg"
2385 srcset="/static/653244aa1db702282adae95d91fb4138/d2f63/starm.jpg 163w,
2386 /static/653244aa1db702282adae95d91fb4138/c989d/starm.jpg 325w,
2387 /static/653244aa1db702282adae95d91fb4138/41099/starm.jpg 500w"
2388 sizes="(max-width: 500px) 100vw, 500px"
2389 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2390 loading="lazy"
2391 />
2392 </a>
2393 </span></p>
2394 <blockquote>
2395 <p>Source: <a href="https://ironman.fandom.com/wiki/Dum-E_and_U">Fandom</a></p>
2396 </blockquote>
2397 <p>PSA - check out <a href="https://www.amazon.com/gp/product/1250192757/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1250192757&#x26;linkId=041dcc62a5770e833dc59991bf57e5ee">Sourdough by Robin Sloan</a> for a great little novel on robot arms, bread-making, and San Francisco.</p>
2398 <h3>Metal Head</h3>
2399 <p>Two of my favorite things in one terrifying package - turtles and robots:</p>
2400 <p><span
2401 class="gatsby-resp-image-wrapper"
2402 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2403 >
2404 <a
2405 class="gatsby-resp-image-link"
2406 href="/static/77ae95136bf95ec6a8828bce2a0b9f3f/b8284/metalhead.jpg"
2407 style="display: block"
2408 target="_blank"
2409 rel="noopener"
2410 >
2411 <span
2412 class="gatsby-resp-image-background-image"
2413 style="padding-bottom: 91.41104294478527%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAASABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAEEAgX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAfUz9Sa3MzZo1Qf/xAAbEAACAgMBAAAAAAAAAAAAAAABAgMRABASE//aAAgBAQABBQKZl5sBUcOrX6SqQEhHOjn/xAAVEQEBAAAAAAAAAAAAAAAAAAABIP/aAAgBAwEBPwEWP//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EAB4QAAIBBAMBAAAAAAAAAAAAAAABEQIhQWEgIjFx/9oACAEBAAY/At6KXNU/SUPrZ5XpKWLihvh//8QAHBAAAgIDAQEAAAAAAAAAAAAAAAERITFBUWGB/9oACAEBAAE/IWIS7UmHYAcwFPdrgzQQ8r0LbTWSbfBWrtTYmSZ/D//aAAwDAQACAAMAAAAQIO8A/8QAFhEBAQEAAAAAAAAAAAAAAAAAAREg/9oACAEDAQE/EBEMf//EABgRAAIDAAAAAAAAAAAAAAAAAAABECFB/9oACAECAQE/EGtLn//EAB4QAQADAQACAwEAAAAAAAAAAAEAETEhQVFhgcHR/9oACAEBAAE/ELXcUo2/mvGy7NWboeXmf2KHzS1emWvAQLA9t/aipd19BVl+8qPwTARZZEUtYqjrkSClxP/Z'); background-size: cover; display: block;"
2414 ></span>
2415 <img
2416 class="gatsby-resp-image-image"
2417 alt="Metal Head"
2418 title="Metal Head"
2419 src="/static/77ae95136bf95ec6a8828bce2a0b9f3f/6aca1/metalhead.jpg"
2420 srcset="/static/77ae95136bf95ec6a8828bce2a0b9f3f/d2f63/metalhead.jpg 163w,
2421 /static/77ae95136bf95ec6a8828bce2a0b9f3f/c989d/metalhead.jpg 325w,
2422 /static/77ae95136bf95ec6a8828bce2a0b9f3f/6aca1/metalhead.jpg 650w,
2423 /static/77ae95136bf95ec6a8828bce2a0b9f3f/7c09c/metalhead.jpg 975w,
2424 /static/77ae95136bf95ec6a8828bce2a0b9f3f/b8284/metalhead.jpg 985w"
2425 sizes="(max-width: 650px) 100vw, 650px"
2426 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2427 loading="lazy"
2428 />
2429 </a>
2430 </span></p>
2431 <blockquote>
2432 <p>Source: <a href="https://turtlepedia.fandom.com/wiki/Metalhead_(IDW)">Fandom</a></p>
2433 </blockquote>
2434 <p>Not to be confused with the always-evil Mechaturtles from the impossible original Nintendo TMNT game:</p>
2435 <p><span
2436 class="gatsby-resp-image-wrapper"
2437 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 78px; "
2438 >
2439 <a
2440 class="gatsby-resp-image-link"
2441 href="/static/dfd0388a52796c6aa0b6271fa404d8f9/16745/Mechaturtle1.png"
2442 style="display: block"
2443 target="_blank"
2444 rel="noopener"
2445 >
2446 <span
2447 class="gatsby-resp-image-background-image"
2448 style="padding-bottom: 237.17948717948718%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAvCAYAAADjNOpjAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAI00lEQVRIx5VXCVSU1xV+yqIY44osRsVI0lgVbWIIQYKIAoZlBmaYGYZ9RwQ0RgSpoKDhHFkEFRSDJkAKLljNsbVxC9rYkjTWVu1ps1hzkpNEjyCiIyAZmOXrfe9nWBI16Tvn8r//5/+/d9+93/3uG2Y2m8FHZw/w1y+BS1+R3QA+pevH10343YfNaLvXho4Hndh/shYvqq1xoCEdutv/Av/SbDbBgsEHM4mnXTh/tR1Bxe2Ql7YjpKQNyvL7UJZ8DebOcKSlEYdaDoO9xFC83g6bEhkOvi0TACaTYSQg/3PyUCrK3xyLklxnOIY5gAU4YqFmMnZmW6HsDYYXtXbwiJ6I7esYbH0Z2G8YVIVyAWAwPgLw7HuBSIxgcA2hl70ZXg1lWLXm11hdcgzZO96Hi/YVWC9j8I6dhLrTdWg6fxit//lE8vDHW770NVBbtwvhWXLYx0ZhelwUkrNl+G3pHqhqgPgDwJykeLAlDOPkUzB8DAeyzJlihx7qKiCGPk56G0jYB0TuBSKqgajdOrJuzIoNBfNhcNY8hy+++y9+6OtDv9FI8TMPAJmHANPeAVLJi5T9QHIteUSASWQpNI+q+gETwuaCeTHMiJEhbm8f2AqGP7Q2DfhlEKCmATAOyiYol0OYYjkmKleQNwo4RSvhFKPCzBg5GCVhUVYRvPOaMDs+Ap4bjyG38RaqTgM15/otG4bRNOChqjAY3DRbZZDn+wmAmYEMs4MpQUslW5i1BfPS14uEeec1IrTsDpSVFKY9wOlrJugeYiBBZinLlmGkuDiFOyIxiSEp1Ya2NwZ2wQ6wCrCD1cqnYBfyjNi+R3Y1gfUiYudtBG7X4+Q/7qOv/wF5SR5yHhkM/YL1Ol0bKvKmwE1BnhFNRvtbIaz0BrS7uoSFlX5Fz2wwyt+aFhkL28DJIvbTo8MQVRwgbZkHkpcPHz3dHWgqmoZ5MqJIuCdWFrWIxMRS1rnxuX/RBUxUzMMkpRuW5Z+gmIdhfkYxIisvo/rMALEtgLquDqSvcYS9P2U1Phqr3uUgekRX9wuLqtYjowF4JjoIM4hKnBWcTj6bjiCZmBJa3isBmgYAO3QdGB/qIEjsEh+OuBoJMGaPkQANiNzdQ/e9mKbxom0GIYae8a0vyW1AInE4dg/RiqfbYJQA2+91wEHpKAL/bGIUUomj0dV9wjg/+dUu2Elke3ZClPCas8A776B4l4dkIMsS4MPeDtgr7MU2xoU4Y05iHNSVd8TqK7acxTS1J3wL/kgxnC885IsEFf8dL6RmYNGabeKeXfzchI8+M6L1OqnO5TuYIJ8qMsyNZ1Oz8y6SKFb+hecxk0ifRnGdQYR3jgpAYi1f6Izw2jHCBykHeC1XGKDY0Y9wImpIyR2igj1sXp9A10kYE2QP+fZ/i9jFUZa5p5FU2w4R3nCO9EP4ju/pnWm0sBVck5KIl/fBEvYZKZh6+sBID9qEZ6/lHaLMHROx5JXjW3BSeCavuI9xMhfxjNtTNFeWfyMo5bWxgRJkBRZG3vEHXCC4BzxGqopbUFXehU9ePVWMLZ7TLoB7qgJvFQRgNInDgswiuGXmY5SfNcW4XVDJK++4EF5WfxHQlJ3F/MwKeGxoQMKAhMWRpe0zoyZvGpTRDF7hDOpYSYADtn2MlVv/IpQnkiRuRWEr/DZtRUpFgpTl9Mp42BKZZ2ldEFpyjVa9hXDyUlN2DdlZk1BK0q9OsKZwjIE11bVP/nF45rwjAONrjHha4YPwQt+BJkWMeajXQ9/fj2/bbmJ88FQpdlxpXqMeQnGxDRgttjo2aCrF20QyFin+N5ayy2t5vCIYK3OXDtXykNoYcO7yGZxofR8XrrTg9KUPYLOSCV6y5RKVOAe9NjYS77YK0KdDFyG/bju++PazoSbFQS3lZxmdXZ2o/dO7cH8jj6jhRFxzJAJnCg6+/OZOvLqhlu7TSJxl+PDKVfFNv8EwBGi56vv0Yl535gDYIh70B3iWysw1MV5QJ70OxMOlmKJaLHrQarr/5zeWdoCRAmvps3wcvXhUZHSUH+dlkxAK7e4uUbMu8SohIA7hM3Czo23QGfOPFXs4YPNHzWCeTCTIa+N7oqw0lR2kNJ54JbsK81bnY6LMFvcoNMMV67GAR/58WATdNTFaCAAv/IhdOrjEqankvoNPwTnKPiPJuzei4T8W8PCFJsquNZWkgbg2pItJtdJ8Sc4euCX9ijzU/VIPOaAVYqu7pX69F0IkeGKmaGQILXh9xPuDjf5xgAcvHAHzYJii9cM4pQfc1paLrLomRlCyRkG1VTHYKX9yWBrZSiXAlk+aMZ8OT+4qhpfo8PRy7AIsXFclyo0f8TRvRYw4fT3WQ37e4+P61WaUZjDs2mCD2lxrpCRTWyXJcpDZiMyrtqn/P8AvCbA4naFywxg6OzKy0ShbPwY1uTaYTl7KCsOkHZl+ZsuWGJ5qPQonosVs2vYcuWSzguhK98tyquG3pQGBOe7QdT/4ZUlpbKEsLyYepq7F6EBnWAXNgGtajqie51NXY9Ha3ZibmkI13z14rnkiD0/+7QSma1yxikrthZRVguDaXXep87kLwjtHhSD3CHC/p190Te7gIwGlAIvooLO7D5l10pmRqwvvI/z0MDNWBgdtgPhfn2Ho5PXILQ9nva6nB5OVC+G7uVVUy/LNH4hKsVd7wFHri9X1tNCa5Th/5dxggh7jobRaV283Nu7PxLLcHAJtQTKpM1cdD/J2Xno2Fq8rA3NjqD9TNxiuR3poAeYr8qHc7EsHdg8BqKW+zMvPZ9Nx0Sac1dNx6tNTg1XzSA8lPpqoz0hiqyqSY6omVIgrPyfyduuxoR7jg0bhdmf7k/XQEgvLCMrzhV2g1NidtMuoSZlFHMPKbtIvrYsUFuOTecg9E6X3/ecoqCvA85wyyVmYm5Yl5m4Z+eJ4wg8HGeTxg17Lzwo8mYeHLvyeYuQktsfVWiSEQHjrXLqpWSQntbaXPDQ/2UPLz4NLN8xQ7zSSqOqFoFqMiyy3yCoDVh0w/gTwfzFagPe3ozoLAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
2449 ></span>
2450 <img
2451 class="gatsby-resp-image-image"
2452 alt="Mechaturtles"
2453 title="Mechaturtles"
2454 src="/static/dfd0388a52796c6aa0b6271fa404d8f9/16745/Mechaturtle1.png"
2455 srcset="/static/dfd0388a52796c6aa0b6271fa404d8f9/16745/Mechaturtle1.png 78w"
2456 sizes="(max-width: 78px) 100vw, 78px"
2457 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2458 loading="lazy"
2459 />
2460 </a>
2461 </span></p>
2462 <blockquote>
2463 <p>Source: <a href="https://turtlepedia.fandom.com/wiki/Mechaturtle">Fandom</a></p>
2464 </blockquote>
2465 <h3>Sonic Sam</h3>
2466 <p>I had one of these (it's still in my parent's attic). This guy rolled around our kitchen, flashing its eyes and emitting weird smoke from its mouth.</p>
2467 <p><span
2468 class="gatsby-resp-image-wrapper"
2469 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 640px; "
2470 >
2471 <a
2472 class="gatsby-resp-image-link"
2473 href="/static/de0408c04849f7c44e84532c3e696f1a/c08c5/robottoy.jpg"
2474 style="display: block"
2475 target="_blank"
2476 rel="noopener"
2477 >
2478 <span
2479 class="gatsby-resp-image-background-image"
2480 style="padding-bottom: 56.44171779141104%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQBAgX/xAAWAQEBAQAAAAAAAAAAAAAAAAACAAH/2gAMAwEAAhADEAAAAc2khS44Wf/EABkQAAIDAQAAAAAAAAAAAAAAAAABAhAhEf/aAAgBAQABBQKOEmYKuI//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAZEAACAwEAAAAAAAAAAAAAAAAAAQIQETH/2gAIAQEABj8Clg7Zw//EABoQAAMBAAMAAAAAAAAAAAAAAAABIRExQXH/2gAIAQEAAT8hboaIai4eh8UFWzJKOD//2gAMAwEAAgADAAAAECM//8QAFREBAQAAAAAAAAAAAAAAAAAAEEH/2gAIAQMBAT8Qh//EABYRAQEBAAAAAAAAAAAAAAAAAAARQf/aAAgBAgEBPxDVf//EAB8QAQACAgAHAAAAAAAAAAAAAAEAESExQVFhcYGR8P/aAAgBAQABPxDD9AmQPmJiK0xzsiB29RGMfEAQFs32lqZEcJ//2Q=='); background-size: cover; display: block;"
2481 ></span>
2482 <img
2483 class="gatsby-resp-image-image"
2484 alt="Sonic Sam"
2485 title="Sonic Sam"
2486 src="/static/de0408c04849f7c44e84532c3e696f1a/c08c5/robottoy.jpg"
2487 srcset="/static/de0408c04849f7c44e84532c3e696f1a/d2f63/robottoy.jpg 163w,
2488 /static/de0408c04849f7c44e84532c3e696f1a/c989d/robottoy.jpg 325w,
2489 /static/de0408c04849f7c44e84532c3e696f1a/c08c5/robottoy.jpg 640w"
2490 sizes="(max-width: 640px) 100vw, 640px"
2491 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2492 loading="lazy"
2493 />
2494 </a>
2495 </span></p>
2496 <blockquote>
2497 <p>Source: <a href="https://www.spotern.com/en/spot/tv/stranger-things/188454/the-robot-magic-mike-ii-from-dustin-henderson-gaten-matarazzo-in-stranger-things-season-3">Spotern</a></p>
2498 </blockquote>
2499 <p>And it's now memorialized in one of my favorite TV shows.</p>
2500 <h3>Robo from Chrono Trigger</h3>
2501 <p>The best JRPG of all time? I think so. I loved Chrono and his gang. I used to draw them all the time. Frog and Robo were my favs.</p>
2502 <p><span
2503 class="gatsby-resp-image-wrapper"
2504 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 200px; "
2505 >
2506 <a
2507 class="gatsby-resp-image-link"
2508 href="/static/6c22080c421e67c0bac7aee47f76f0de/772e8/robo.png"
2509 style="display: block"
2510 target="_blank"
2511 rel="noopener"
2512 >
2513 <span
2514 class="gatsby-resp-image-background-image"
2515 style="padding-bottom: 167.48466257668713%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAhCAYAAADZPosTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAJW0lEQVRIx51WeVRTZxa/MTrDqe3U1g1EwWUEUXEDS8XRiICCILKvCYYAAZQESEIWlgAmhMhOICEIgRCiyCKLsqOAYVHROigVph5Pp7WdnjmOZ5yZTuso5N1J6Ol2zvw13znfe/e8d7/f+917f999H8D/MWQCIeSlcUiFIhHIhUKHjNjEpgejnWD89zzpfy5gMSOgXlMAIzeHQKdtgMt6JamxsZqkqasCOpUJEo4AinicZeUZprtIKBHFMF9573az9N/v+WsgkSgbCnPp8Mm0FqbGG2C4r5w0PlpJvnz5Ceh015Z8MjM2gjy1G8SsJLJCKIDc8+wGSRILI4/4bacfD/xFGAUyKCotgTypDDj8XNLoyNXlquJQGB2+CN3d37x75UqnjdkvJ3czpPHOkq18V0JyWBCIk5KreVExGH48aAPNzf8XYaYKQCqVQqZISGKd58LdyU6g7AGLKYOaNdArflYo83uRmuzxIOXcyf15F5ggz48VCwWU+Ci34OiQYz6GAnEBICIsXbisSDiXVgISiYQkEopBkpNteUldWjE/Nzz36cwV/PxpJ34214Vi0WEUZ+6cjD/Ho2saav6Wm5d1X6lSS8W50o4Ubq59ZLA3wMhI7xJoeHQ6jN8bJYdJn4BYVtFXpsrDT+7p8XqvYkGriTJOjwUb69VOC4mMTciMD8Ku6704MXkXZ2dn8HJzOzKTcjCcmrwbFkxgiK+huVlBGh4egW3WH63JkcheJ3PpRICXwyItkYa+AR8RvifXEgFujkhz9TGGeuxbSDwXTMjzOcbs7JzFdH7R4nlWAcYlpQctsRsdriE9+2wEvvnma88CScST9ma+8Y6hkhgc0BBtVyWETsNHEf8gRpzajoKYQFSW+hCXm7KJr78cIC7m+xNUaqoxjVOCMfEsD7hxXUWavHMXxqfurBsekP1TmnMMHz2sNT6encSZmQm8bWjFzhYmFsh4KM+PwJFBOuqbJDj/ZBS/+3YaW3SHTCmIxFjmhdfRMSHroVAW8lOlqaG/b3HcaYMqhd/CwwctODnZT7S3cFEmtsYmjRvW1VbgcE80FstOELQoT8LLfSu6u1l/m3Tu/Lf02BxJNP2SGeY2rFllufyDd23g/ZV2kpUWq1B2YdPbx/c5xI0uCd4aKsO52Vace1SF+fnlKBXvxZrKXYT9tg+JFbDW6LDTCeMSePQ4ZgY4O59aBqGB4bDZai3ZctVG2OvgVJXI2IXVCoe3bc3pxGC/GqcM5fjq5TROjWaYwE5htsABB64fxpioXQvvv2OF1tYbupb0ZxqRNDoJjrl6wthQBWnK0ANRIdQrI8MF2NHKWejvb0bD2FXsaKZhb/txvG84g0NdFBzrO4FDPa5EZKjN25XLbUxI76VZWKyH1au3rKCeZQKsemfLTzl02Ob4IJefiOOGjsVxQysxaWjB7qsBqFE7oaaSgk1qd9QqPZCTuIMQ8wIXUln+GBVmLzvj+zuICLUlJyeY6tF7o5b0/Ks/wdz81LbGOuHLZKoXXtWLjP29Mnw0M4StuhNIC92OzGB/jPQ6hsf37sHj2/dhoZC9MNTHNhXsQNv9cTuYve9ESk+hAFxt4pE72vLgWktORKsuAnPTzizWlacTSjkP+zprCB4tFNPjKZjPoaOEE4Tng44g1c2VyOTELYoEcSjgUkf0TQ3w/eIEpCX7mvfyd2RzUl+8+LRseoyPeYKIBb2qjEgPj0FxfAJxIYmDioIAVF3gYj4/mog+cQQ5DBZRo7lOlJVqCXGmAOmRbD9aGBMSGDzy0k4xz2dPR24PdgUhP/XI6+oCPlZmZhDlmRnGfBZ/MY/rYrxUTDWKOe6ENPMAUSQvIyoVCkJVwXgjl3AxLaWsMIVVDpyUguVwd/oZDA1PWT+d73qhqXbBLOGOkbNB/iPipAQsE/IwIYyCVcUHUFF8FFv1cTh4IxRT2d4ok17AvDwVikR1RHys4GgiMxOSEvOWQX9/O7S2ao+O3cwmRBx7TIizb7Sx2qG3s7HHKD/XPi7b9p6iZM+/RFyHvxz7eN/ilo3rjB5u++s1dRXPS4p4yEt1H1aryuGPMy8hOdHUg8dG66Gnp8Glo41t3LNzk0lXlo52NntK3lu5yqxWX7OcfD3ttjKo3rusVm/77h2LD43r19vsF4tCbgp5H+MZn9V6WhgAlw2k097OADpNFNSrz7qXXaRgSMCGL3UN4gP0qJDZ5eR30cJilQnwfTh94iBs3+xsu/6DTW8sfrP0IXeZRD4bFhxutod/1PGa1VYADyfC4NGdyE0Bpx1x7RqL5329dV0To/nIiLZFZuzOiIS4tSbXs+C497BjhvD8W0lOmBkkTqe98jwyLNJsj5rBzIW1XGf9g2EeNhvtqgBWsLs75GNDPQmorXFCSc7u5soSgKmJPhjorXCbMNRjnfoEBp2xKVKriv/q6uJqXjz+I8N1aywBPnuKUKsOJNGoNHj16qutoyNX3n79xQ1ji/4QyiR2txWluKTTJ7P9yqnJTtTUnERpnkNbbiZjPDzYEylHd2STfguw1X4rKdDP+QeGA4O3yPfuz0NjfW7d2C2VqRGEv2nWeWGWwOXR48dzSz5//vzh8/m5KezrCjW1ty03JZLGUxflFY8XUQw2a52BlcSHbZttAbq6b5C7u5uhvrbQXqlUvVZWqrCnw49o0bkusBN9kJVc1jk8oFT9/eUMTt9tMT13JipLnYhqRSg/X/7AynnflhUAuyGGUQJbbEyAOn07XKrV2LZ3jH6hb76NGRna/6Sxghcz+bbo7fkHU3sv+rS7jfOPm4OVqFLVG9XK+AV11R4UcfdenzCkmti7kDwpHwEnrRp4KccBPDwPr9A3DzxRVpv+u+J6TEstfbVj67GDpzxcKHt3UtzN4fLYRykKhfL7uoZbKBQWGxMYXkgN93P1O3kQaOGmLg37ISE+64fKFJdc2lBcrK9MSS6Uss8VMjmphQctPzwMnpR9prfvgbbxJpQrWiuudY2jpqH/TTqvCr092IkM+inIyWaSPnaqAx8vt5+PIIqqeqjX9pkoV5imEtJSCuGQk/uywNP7yPFx6b/R6rpBfrEmpUnfjzJZEyYl5F8zsSYxYpogjiEn7bIrhmD/Qz8DlpbXQkNjHzkrq4YsFNSQU9lFJjAPoEfHQQo7C/x8faBn8DnIZLVpIpEiprPzGcgLtaZGkEuKj80C35Nnf3WC+y98Zb/rNQFP1wAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
2516 ></span>
2517 <img
2518 class="gatsby-resp-image-image"
2519 alt="Robo"
2520 title="Robo"
2521 src="/static/6c22080c421e67c0bac7aee47f76f0de/772e8/robo.png"
2522 srcset="/static/6c22080c421e67c0bac7aee47f76f0de/222b7/robo.png 163w,
2523 /static/6c22080c421e67c0bac7aee47f76f0de/772e8/robo.png 200w"
2524 sizes="(max-width: 200px) 100vw, 200px"
2525 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2526 loading="lazy"
2527 />
2528 </a>
2529 </span></p>
2530 <blockquote>
2531 <p>Source: <a href="https://chrono.fandom.com/wiki/Robo">Fandom</a></p>
2532 </blockquote>
2533 <h3>The Iron Giant</h3>
2534 <p>Sometimes giant robots are gentle and curious. They just want to love and learn. The Iron Giant is one of those robots.</p>
2535 <p><span
2536 class="gatsby-resp-image-wrapper"
2537 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 269px; "
2538 >
2539 <a
2540 class="gatsby-resp-image-link"
2541 href="/static/2a5c15093914ba94c385d4a49fd0f063/23db2/irongiant.jpg"
2542 style="display: block"
2543 target="_blank"
2544 rel="noopener"
2545 >
2546 <span
2547 class="gatsby-resp-image-background-image"
2548 style="padding-bottom: 137.42331288343559%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBAgUE/8QAFwEBAQEBAAAAAAAAAAAAAAAAAwQCBf/aAAwDAQACEAMQAAABSlrhZZok64vRn26EklRcf//EABwQAAICAgMAAAAAAAAAAAAAAAECAAMREhATQf/aAAgBAQABBQIrge9cQyupWVSpWpn2s3A2YQHBLHj/xAAZEQEAAgMAAAAAAAAAAAAAAAARAAEQEhP/2gAIAQMBAT8B3QnSo4//xAAaEQACAgMAAAAAAAAAAAAAAAAAAQIREhMx/9oACAECAQE/AW8emyQ4W7Qj/8QAHRAAAgEFAQEAAAAAAAAAAAAAAAERAhASITFBUf/aAAgBAQAGPwKVeNwOtd8E/pCqiTLNnTR23//EAB0QAAMAAgIDAAAAAAAAAAAAAAABESExQVFhcZH/2gAIAQEAAT8hVFQq8Mq8DR7Qq4di2UEmwYPqLBRG/EJhh62TxPBzG0aQzti+vh//2gAMAwEAAgADAAAAEGv9v//EABkRAQEBAAMAAAAAAAAAAAAAAAEAIRExYf/aAAgBAwEBPxB1YvMgBxPeX//EABgRAQADAQAAAAAAAAAAAAAAAAEAESFh/9oACAECAQE/EKbFOUxMYDkAmk//xAAfEAEAAgICAgMAAAAAAAAAAAABABEhMVFhQYGR8PH/2gAIAQEAAT8QekBmlQO4TJToh0d8+orYr2RA6QwDz3Lc7BMVTZfPiMhrbHU5Jdpf3EzTqWdr/YAFDQOIuHAI6goKKGll+Pgn/9k='); background-size: cover; display: block;"
2549 ></span>
2550 <img
2551 class="gatsby-resp-image-image"
2552 alt="Iron Giant"
2553 title="Iron Giant"
2554 src="/static/2a5c15093914ba94c385d4a49fd0f063/23db2/irongiant.jpg"
2555 srcset="/static/2a5c15093914ba94c385d4a49fd0f063/d2f63/irongiant.jpg 163w,
2556 /static/2a5c15093914ba94c385d4a49fd0f063/23db2/irongiant.jpg 269w"
2557 sizes="(max-width: 269px) 100vw, 269px"
2558 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2559 loading="lazy"
2560 />
2561 </a>
2562 </span></p>
2563 <blockquote>
2564 <p>Source: <a href="https://upload.wikimedia.org/wikipedia/en/d/d3/The_Iron_Giant_poster.JPG">Wikipedia</a></p>
2565 </blockquote>
2566 <p>Kids and robots just go together, like kids and E.T.</p>
2567 <h3>Cozmo</h3>
2568 <p>A programmable robot!</p>
2569 <p><span
2570 class="gatsby-resp-image-wrapper"
2571 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2572 >
2573 <a
2574 class="gatsby-resp-image-link"
2575 href="/static/0aa53da4daf21c62993620a41767c0a2/1cfc2/cozmo.png"
2576 style="display: block"
2577 target="_blank"
2578 rel="noopener"
2579 >
2580 <span
2581 class="gatsby-resp-image-background-image"
2582 style="padding-bottom: 73.00613496932516%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAADN0lEQVQ4y3WTXUyTZxTH32VXyyLJ4sWuTbbsYln0woXN6ebdzJapbMvm3NagkDBwBt1GZoQoA8agYy2kSOjEQuuWTRMnKCUtVVEosk2hCKWVoVgKUuykYx/9oG/b3563QK1VT3LenOc55/2f//l4JJYlkUgkVZFYLJayM/3pcZkxikiZF/FEPGVPT03iv3Ob6GL4oeAPA5WSzmVHPL4EZr/cz0cF+by08UX2frKLqZvj+GanmF8IEBMJlfiVWAUvHVRaOawE/LuwwJYPd5C1/W2ynnuG3Xkq/NZOhgo/ZqBJw6C1A9l/ZwksHk/nnVSJDHaWbitr169jzbNreDLrCX483srfP7dxu8eG8+Bn2Pfuol9dhud3ewr0AYZxoeFgENc1B7l5uax+ejWrnlrFtpytzExOMPZbPx7/LLOOK7i62+m2nuHqJZsAi2X0NHFvKPNzPgJ+PxZrF3n5KlSqnXhu/IF7dJiOA/v5pSgXfXEBLfp6mnVazpz6iblZT1rpy4BKqX32XkaHBnE6BqmsKqdADKKt9Sj9vT24Rob5x3uLma7TuDtO0id6aBfl33AOM+2ZWGZ4r2zpr0CAYy16LvdepP2EkaJCFSVf7MNkNDA6PMTVgT4qDpegqa9BW/8tppZGdNoaLlg6+XNu5r6BKqDS/Pxd5EgI+6WLHCj5FGu7gQnXCHLwP2wWM2/mvEVbbRU9zY0U7ytky+uv8sLa53lt8wbOn7M8sJeST/TOceVXvq78ig2bsjnaVI3pmI4ZzyT7Py9m27s5BAN3CYlVGRuyY9JXom8o48RxPX3ms9yaGE+xTDHsFv1p0mnYU5RPnboCw/f1eMUy79j5Pq9kr8c36iAw7mbM1kH7SR2nfqhjZOACEfHv9ORN0t9KcijnbWaMhiZqqg9RK7RBU41eJHg5ex2PPybRXHGIKecIDd+Ukr/7HT547w2qyr/Ebuli3OVMAsmyvMQwKPYvIAbjdrsxmoxoNN+h1WooLz9MWWkppUJr1LWYTG2o69TCr6HxyBEMrQbM5k7c16/j9Xrx+XwsLi4iKR9FlQyPEjkqEwyFiEajwo4mY2NyLHkOiftwOEwkEkn28X9pK+6r85CNaAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
2583 ></span>
2584 <img
2585 class="gatsby-resp-image-image"
2586 alt="Cozmo"
2587 title="Cozmo"
2588 src="/static/0aa53da4daf21c62993620a41767c0a2/a6d36/cozmo.png"
2589 srcset="/static/0aa53da4daf21c62993620a41767c0a2/222b7/cozmo.png 163w,
2590 /static/0aa53da4daf21c62993620a41767c0a2/ff46a/cozmo.png 325w,
2591 /static/0aa53da4daf21c62993620a41767c0a2/a6d36/cozmo.png 650w,
2592 /static/0aa53da4daf21c62993620a41767c0a2/1cfc2/cozmo.png 900w"
2593 sizes="(max-width: 650px) 100vw, 650px"
2594 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2595 loading="lazy"
2596 />
2597 </a>
2598 </span></p>
2599 <blockquote>
2600 <p>Source: <a href="https://www.digitaldreamlabs.com/pages/cozmo">Digital Dream Labs</a></p>
2601 </blockquote>
2602 <p>Cozmo's fatal flaw is how nearly impossible it is to connect your phone to the robot's local wifi service, which is how you are forced to control and interact with Cozmo. The connection process is random, non-deterministic, and saps up most of the time you've allocated to play with Cozmo. Also, Cozmo's parent company recently went out of business, which is a huge bummer for the robot-toy industry.</p>
2603 <p>That said, I've had a lot fun with Cozmo, including <a href="https://www.charlieharrington.com/teaching-my-robot-with-tensorflow">teaching him how to find my toothpaste with a TensorFlow computer vision model</a>.</p>
2604 <h3>Droids</h3>
2605 <p>Okay, the main event. Droids.</p>
2606 <p>The Star Wars folks who put together the droids for A New Hope are complete geniuses. They're dirty, they're resilient, they're loyal, they're funny, they're everywhere. I could go through a whole list of them, cause I really do love them all (GNKs, Artoo, Threepio, IG-88, BB-8, those little mouse-like black boxes in the Death Star), but in a rare dose of restraint, here's my favorite Star Wars droid!</p>
2607 <h4>WED-15-1016</h4>
2608 <p>It's R.O.B. with a longer neck, a blue face, and way more creepy claw arms. You may remember this robot critter from its role in repairing the Millenium Falcon at Hoth Base in Empire Strikes Back. Or at least attempting to repair.</p>
2609 <p><span
2610 class="gatsby-resp-image-wrapper"
2611 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 320px; "
2612 >
2613 <a
2614 class="gatsby-resp-image-link"
2615 href="/static/da34ef15c6d3d7825f5cff64051e89b3/cb69c/wed-techie.jpg"
2616 style="display: block"
2617 target="_blank"
2618 rel="noopener"
2619 >
2620 <span
2621 class="gatsby-resp-image-background-image"
2622 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgX/xAAWAQEBAQAAAAAAAAAAAAAAAAACAAH/2gAMAwEAAhADEAAAAVz289jYk2//xAAcEAACAgIDAAAAAAAAAAAAAAAAAQIRAxMEEiH/2gAIAQEAAQUCfH8o1Nl9iWa3ukf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQMBAT8BZX//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAIAQIBAT8Bq4//xAAcEAACAQUBAAAAAAAAAAAAAAAAASEQERIxQZH/2gAIAQEABj8C56LUlxOMaQz/xAAaEAEAAwEBAQAAAAAAAAAAAAABABEhMVFh/9oACAEBAAE/IULi4OdB1vkWIqnmywpA+RFaPATkb9Kn/9oADAMBAAIAAwAAABAIL//EABcRAQADAAAAAAAAAAAAAAAAAAEQITH/2gAIAQMBAT8QC8g//8QAFxEBAAMAAAAAAAAAAAAAAAAAARARMf/aAAgBAgEBPxC6bF//xAAdEAEBAAICAwEAAAAAAAAAAAABEQAhQWExkbHB/9oACAEBAAE/ENigDOzgy0FKbwOtxxybrRPuPPyE20/mIt/NRF4wnskz/9k='); background-size: cover; display: block;"
2623 ></span>
2624 <img
2625 class="gatsby-resp-image-image"
2626 alt="wed-technie"
2627 title="wed-technie"
2628 src="/static/da34ef15c6d3d7825f5cff64051e89b3/cb69c/wed-techie.jpg"
2629 srcset="/static/da34ef15c6d3d7825f5cff64051e89b3/d2f63/wed-techie.jpg 163w,
2630 /static/da34ef15c6d3d7825f5cff64051e89b3/cb69c/wed-techie.jpg 320w"
2631 sizes="(max-width: 320px) 100vw, 320px"
2632 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2633 loading="lazy"
2634 />
2635 </a>
2636 </span></p>
2637 <blockquote>
2638 <p>Source: <a href="https://starwarsataglance.wordpress.com/2014/06/30/wed-1016-teche/">Star Wars At a Glance</a></p>
2639 </blockquote>
2640 <p>I treasuring my WED-15-1016 card from the Star Wars collectible card game, and I'd play it every single one of our daily games in latchkey, no matter what. (Side note: listen to this <a href="http://www.zachtronics.com/podcast/">great Zachtronics podcast</a> episode with one of the designers of the Star Wars and Star Trek collectible card games)</p>
2641 <p><span
2642 class="gatsby-resp-image-wrapper"
2643 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 206px; "
2644 >
2645 <a
2646 class="gatsby-resp-image-link"
2647 href="/static/42d3d89633a83af49f7eb084c0aa25cc/a414c/wed-card.png"
2648 style="display: block"
2649 target="_blank"
2650 rel="noopener"
2651 >
2652 <span
2653 class="gatsby-resp-image-background-image"
2654 style="padding-bottom: 140.4907975460123%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAcCAIAAADuuAg3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGVElEQVQ4y0WS6Vda1xrGz4d7V6MxJoIyOlUT58QBNaIUxSiJyniYRBAcIqg44QTeJJLGOKRdbW1rNOltcq2pVWMbh6igEUHCPCrgUJv0rvuf3I390LV+513P2fs87/vstQ+0vrYq5POEAp6Ax+PBMBdm8zkwl83ispl8mAUz6Sx6DYdJAwJm0liMajaDJuByavnc5zPTUF+nIiUhLif1KvlGZiMXlkslEh7vrkjYIq5rEnCbavndsrsdTVK5uE4mBou1crGwHmaU5Wc3C/nQYHc7q7KcVlrMLspZej6z8svPXzzSzE5PzT2f+WZs/Jcf/33mcZ15PYDfPe5Tj/t/x0cb8z/11vOnRzVQq6I/N4tAKioj5FaQCEU1FTVSUbdCrrorkbNuU1lVDAGnnkq6eYdcXEkqon5GrKaQKDcJxBvpEh4balOOKRV9PV0aKvs+Dh/Pb1CPT+2MTL6VdU8Ti5mxcdcyC+ArUYiLYZ+EffKP8Av/vBh+IfJSRGTExYJ8AjQyPsti97d2PK2obsq8kTv5H/0Xz9Yff7/Y82C2itmdlJR+PedWLD42BnEpBnEZg0JiUDGA6KhIUjERuqeZIlepaPyHsbEJNZxO5eNVtvQRXzqgHPuV0/B5WjqRUvPweoHwahoZh8UBMyoGiQXPlUtlFCrU1qnKIzVdSyWkZRU1df/YopprVr6Utj6ZWXN3P5q6WcLgNXxbQlVfLxTG4eIwMUgASIHHp9RKR6C29l5cLLisRKZwRCx/Km6faVA87VRP71qPvv3uGV3QJu14UUhuw+PiUIjL6GgEChGJQaPjk/NZfCUkqReB8xdTWu4w7tWw7jMEY1LZpGb8ldl7NvJ4XNCsbh2YzyFUY1HRIWd0VHRURHIaiVCqrLwNQ2JRLRKJL6nooVR2UasGaMzh1q6pmR/mjWanpKG5pfdJx9Dz5MQkPAaDRl5GISOxaFRWLi2PrICF/ZBUIo0MDysrq+Xz+qqqB2Hu50rV9Nj4d08mX+Xml/AkKnIZIw6Lw6KQwHz1Wu7VlHwCSVxYrmDAjSB2fUT4hczUDJitoLOGaaxhtnCiTqymw91pqXnZ2SXx+FgcBo2KigDXRiikF5EaCEW8hMSsilsVUL1YGBEehkZGlVFFLT3TdN698lIuhXibSWbmp2QmoBF4DAodjUy6RiwoaSz+rIlEUWRkkaMvh1VQSiF5ex8Gg42PxcUnJEllmnrJECHjemF2QUF6VgoeHYdFY1Dgn4jOuFFVUt5RUt6WRxTiMVgU4sqtcgqk+dewXCRqEQpwiEuUUmqLbLiUzEn7NDkRi/4Uj0+Mi4+PTUiMT8nJLi8kcvLyqvJzK1OTMxJxmJo7VOjZ5FfqNvlXw/dH1QOj6r5HAz0jg31jIT0wMTQ4cU89NjQ4quofVSk1vR0PezsnBnqGlV1DCvn3E4+hDycnp17vh0DgY/DoYyAYEoHAB7//7PDAuW/0Wqx/BAL/PQZb/j+DgT+DwY+gHgXOfN4PQT90cnjoMZmMW1v7Op11d9e+t2fb07vfmxxGo/bNm+21dbfJ5DLtg2o37DmMBqAPbJaA03bs80KngYDXbF5ZWHg9N7fx62+7GxtvXy/vrK2Dur60BF63V1f1G5tei9kW6rtnNxhA6yOX48Tng079fmDe39626vU2vd6y+870bmdvc+vd27dGndao0xm2tNZdkOU9GOgxmz3m9wGHLeiwnx4cnJst5u21Ne3Kqm41hHZlxaAN2fY2N/e2tkzb2wAgjFqtAVSd1vPeFHQ6Tg/A5MNDn8UMwjgMBtf+PpgATntos4HtgMMRcDqO3M6gyxmqTsex23XscQddDjD5BJj/CB4dezynPm/AYfc77EdOJ/giZDvH73AEnSFb4BwgTrzu87620GSPxbyxuKBfWz20Wn0Wy4HV6rfb/sZhP+9i94MsrpDTZzYdgTguENsLabo6hgWC9ju3Xk5+fXZweOz2nHg8J17vX/zu8576fMehFc+hzfpm9uVgu2zl1axlZydk7m9seMBiwdnpzTzm5tLi2vyrjYX5rdeL2uUl3fKSdmlRtwxY0q/89sOXEw+UXZ3SujFV35OhweXZF9DC3Fwdky7hwDx6NYdWVcukNQq4MlFtSx3/bi1PxGY08tiAZj4sEwnapeJmAQcgZNJePJv5P+eYEpnb13VkAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
2655 ></span>
2656 <img
2657 class="gatsby-resp-image-image"
2658 alt="wed-card"
2659 title="wed-card"
2660 src="/static/42d3d89633a83af49f7eb084c0aa25cc/a414c/wed-card.png"
2661 srcset="/static/42d3d89633a83af49f7eb084c0aa25cc/222b7/wed-card.png 163w,
2662 /static/42d3d89633a83af49f7eb084c0aa25cc/a414c/wed-card.png 206w"
2663 sizes="(max-width: 206px) 100vw, 206px"
2664 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2665 loading="lazy"
2666 />
2667 </a>
2668 </span></p>
2669 <blockquote>
2670 <p>Source: <a href="http://www.cardgamedb.com/index.php/starwars/star-wars-card-spoilers/_/the-hoth-cycle/assault-on-echo-base/wed-15-1016-assault-on-echo-base-55-2">Card Game DB</a></p>
2671 </blockquote>
2672 <p>Here is one of WED-15-1016's cousins, a fully tricked-out WED Treadwell with all sorts of terrifying arms and claws:</p>
2673 <p><span
2674 class="gatsby-resp-image-wrapper"
2675 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2676 >
2677 <a
2678 class="gatsby-resp-image-link"
2679 href="/static/6afe934f96e3f13bbf2ce81b82c3f2c6/0d333/WED-treadwell.jpg"
2680 style="display: block"
2681 target="_blank"
2682 rel="noopener"
2683 >
2684 <span
2685 class="gatsby-resp-image-background-image"
2686 style="padding-bottom: 98.15950920245399%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAMEBQEC/8QAFAEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB24PVYdJwkVcG8E//xAAbEAADAAIDAAAAAAAAAAAAAAABAgMAEQQQIf/aAAgBAQABBQIuNzcBcp4nF0yDGmCUkrdf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAGxAAAQQDAAAAAAAAAAAAAAAAAQAQESExYYH/2gAIAQEABj8ChDNsT1aabRlv/8QAHBABAQACAgMAAAAAAAAAAAAAAREAIRAxQWFx/9oACAEBAAE/IQdtzxU2tvBtoIxlJtDDNCZuUPpxCHT84//aAAwDAQACAAMAAAAQE8c8/8QAFxEAAwEAAAAAAAAAAAAAAAAAARARIf/aAAgBAwEBPxCYqYv/xAAXEQADAQAAAAAAAAAAAAAAAAABEBEh/9oACAECAQE/ELqgq//EACAQAQABAwMFAAAAAAAAAAAAAAERACFBYZGhEFFxgbH/2gAIAQEAAT8QZosqYnQqVCApKLMRx0vmmVxFz7UgEIBhk7780UVi3rFNGSaGzTUzEWbvMUWK/9k='); background-size: cover; display: block;"
2687 ></span>
2688 <img
2689 class="gatsby-resp-image-image"
2690 alt="wed-tread"
2691 title="wed-tread"
2692 src="/static/6afe934f96e3f13bbf2ce81b82c3f2c6/6aca1/WED-treadwell.jpg"
2693 srcset="/static/6afe934f96e3f13bbf2ce81b82c3f2c6/d2f63/WED-treadwell.jpg 163w,
2694 /static/6afe934f96e3f13bbf2ce81b82c3f2c6/c989d/WED-treadwell.jpg 325w,
2695 /static/6afe934f96e3f13bbf2ce81b82c3f2c6/6aca1/WED-treadwell.jpg 650w,
2696 /static/6afe934f96e3f13bbf2ce81b82c3f2c6/7c09c/WED-treadwell.jpg 975w,
2697 /static/6afe934f96e3f13bbf2ce81b82c3f2c6/0d333/WED-treadwell.jpg 1175w"
2698 sizes="(max-width: 650px) 100vw, 650px"
2699 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2700 loading="lazy"
2701 />
2702 </a>
2703 </span></p>
2704 <blockquote>
2705 <p>Source: <a href="https://starwars.fandom.com/wiki/WED_Treadwell_repair_droid/Legends">Fandom</a></p>
2706 </blockquote>
2707 <p>I even found this questionably-real deleted scene from A New Hope showing an impatient Luke Skywalker interacting with a Treadwell on Tattoine:</p>
2708 <iframe width="720" height="415" src="https://www.youtube.com/embed/nDPZfPe5F-w" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
2709 <h2>More robots</h2>
2710 <p>So, who did I miss in my list? Data? He's an android, so not exactly a robot. But possibly Mega Man X is an android, so maybe I'm already mixing things up.</p>
2711 <p>Speaking of lists, I also found this gigantic <a href="https://en.wikipedia.org/wiki/List_of_fictional_robots_and_androids">list of fictional robots and androids</a> on Wikipedia.</p>
2712 <p>I'm not-so-secretly hoping that, one day, the robots in my book will be added to this Wikipedia list. Yes, I could edit the Wikipedia page myself, but c'mon, that's not the goal here.</p>
2713 <h2>From cardboard to ciruit boards</h2>
2714 <p>Also, it's high time to upgrade my hobby. I've begun looking into basic robotics kits, and I'll hopefully be constructing some new robotic best friends very soon. Maybe not Maker-Faire worthy, but ya gotta start somewhere.</p></content:encoded></item><item><title><![CDATA[Create wonderful things, be good, have fun]]></title><description><![CDATA[Create wonderful things, be good, have fun This is the credo of Klutz Press, the most important book publisher of my childhood. It being…]]></description><link>https://www.charlieharrington.com/create-wonderful-things-be-good-have-fun</link><guid isPermaLink="false">https://www.charlieharrington.com/create-wonderful-things-be-good-have-fun</guid><pubDate>Wed, 24 Jun 2020 00:00:00 GMT</pubDate><content:encoded><blockquote>
2715 <p>Create wonderful things, be good, have fun</p>
2716 </blockquote>
2717 <p>This is the credo of Klutz Press, the most important book publisher of my childhood. It being summer and all, Hobbes, ol' buddy... let's going exploring!</p>
2718 <h2>What makes a Klutz Press book so good for learning stuff?</h2>
2719 <p>If you've heard of Klutz, then you've likely seen their debut: <a href="https://www.amazon.com/gp/product/0932592007/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0932592007&#x26;linkId=adaa512e8af09feab7c571ec8f2863cc">Juggling For the Complete Klutz</a>. </p>
2720 <p><span
2721 class="gatsby-resp-image-wrapper"
2722 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2723 >
2724 <a
2725 class="gatsby-resp-image-link"
2726 href="/static/c28fcf440265c6bea76d51f90e51b462/1cfc2/juggling.png"
2727 style="display: block"
2728 target="_blank"
2729 rel="noopener"
2730 >
2731 <span
2732 class="gatsby-resp-image-background-image"
2733 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7DAAAOwwHHb6hkAAADFUlEQVQ4y42Ue0hTURzHLxkIFlEU5VDyjyAyguoPMwn6QwqUpIiiSKwowR4kFqIIQv2hUoQm9vKRRpboKJ2lzsfW3JzuuruXe3j3dNvd3NS73Xnd3dz0zrvlI5ezGX3/OJzfj/M553t+/M4BQusKBoPLIw7JMT60ElJUcKNCUQT8gSlqeXSPwfKcAp/BHM6EtRyQW8Hh1bMjImlds9ZqV4xrJXJYJFWMCEUDfCHY0wu2tlinZsI2gU1OXChG+BchFud9TWPZq8byqvqK6oaK6vqnNR8VRQ+QgpsmE/IXvBoQegOf0a3rarNcu0f/0Pr5ay8kVWm0ep3eqNSZ4J/sjtoGHWKLDi/g+EzfgOzcFVF+qdFiNesnuH08Vj8bEozyWTypTGOedhKEZ335xoItrVx4pp05fDhdUVknGBpprm/pZzBBJkvYz2YzuV+a6GaTYWPdgY2ko5crPpKuSUhR7DnGuFM8Ne+f0+lRLgdlMb0OO6qBMauFXKKiw2PZ+RBAg3enNR641FVS5xN+Rxlv0c43jvaXjvbnNpnYjtgCgUAkvGplkQoOXrwtiDlZlVJRfSpv4EaRC2Q6BumYsM9lVLlgCFWP2w3mQICMgNdK518kv52/zo9N5uxK4wPxYPpV3Kl2OdFZDznnxFANMgkr3biJJKPBC0tLrIyc4e1J0p2HhoB9srxC66TWZtR4fCFskOkdeejGBLhNQm6yvQ4HwMxbFiARi0nqjEsZuFtS3g3RykGBIi/kPEpMv5vF8Lk5Irpt78Ii9+zlrtgTlafvlyVng7mlSgTtlxp1ajqKsHA3tUxaJxHC445okrWZx+v7kZrRsCPt08FMPrBflvvEgaGztkmNclqptFksExq1XCwZxnFXFNg77+tNzZID8TPbaKNAfM+j0iGQN8zniCGeRMQdBQchIU8mExAEHtmeq7MAGeCmZg0BNPbe468TLnQVv1CqxLBKZjJq7TYEc6JuN+7z+yhqiyaRFD6rBuIeJ2bV0M5Y6IxwfitFPAw/QYhrm+C2DsJgCP0+IfyRBP/1k4S3+H/9AqWS8XTUu4ovAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
2734 ></span>
2735 <img
2736 class="gatsby-resp-image-image"
2737 alt="juggling"
2738 title="juggling"
2739 src="/static/c28fcf440265c6bea76d51f90e51b462/a6d36/juggling.png"
2740 srcset="/static/c28fcf440265c6bea76d51f90e51b462/222b7/juggling.png 163w,
2741 /static/c28fcf440265c6bea76d51f90e51b462/ff46a/juggling.png 325w,
2742 /static/c28fcf440265c6bea76d51f90e51b462/a6d36/juggling.png 650w,
2743 /static/c28fcf440265c6bea76d51f90e51b462/1cfc2/juggling.png 900w"
2744 sizes="(max-width: 650px) 100vw, 650px"
2745 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2746 loading="lazy"
2747 />
2748 </a>
2749 </span></p>
2750 <p>If not, I highly suggest seeking out a copy. Keep in mind, it's more than just a <em>book</em> -- <em>Juggling for the Complete Klutz</em> has these amazing attributes:</p>
2751 <ul>
2752 <li>It's spiral-bound</li>
2753 <li>It has hilarious drawings</li>
2754 <li>It comes attached with three real-life bean bags!</li>
2755 </ul>
2756 <p>These are book super-powers, in my book (a Klutz-worthy pun?). In our day, my sister and I owned, devoured, and treasured these Klutz titles:</p>
2757 <ul>
2758 <li><a href="https://www.amazon.com/gp/product/0932592082/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0932592082&#x26;linkId=5bb878d785a02edc2b01eeffd63f9a76">Country and Blues Harmonica for the Musically Hopeless</a> (comes with instructional cassette and a gen-u-ine Hohner harmonica)</li>
2759 <li><a href="https://www.amazon.com/gp/product/1591747007/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1591747007&#x26;linkId=bf0dda95c016b59824316ebe42f872ec">Friendship Bracelets Craft Kit</a> (comes with string and supplies for making friendship bracelets)</li>
2760 <li><a href="https://www.amazon.com/gp/product/1878257501/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1878257501&#x26;linkId=7315967f85fba1c812b20b480b0bd966">Table Top Football: A Guide to the Classic Lunchroom Sport</a> (comes with an amazing leather-ish table top football)</li>
2761 <li><a href="https://www.amazon.com/gp/product/1878257536/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1878257536&#x26;linkId=58c3235cd298baf5ec29fb13ee806ced">Cats Cradle</a> (comes with a tie-die cat's cradle string)</li>
2762 <li><a href="https://www.amazon.com/gp/product/1591745047/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1591745047&#x26;linkId=905fbe99f4844c375f00baa92f1beee0">Bead Loom Bracelets: Learn to Make Beautiful Beaded Bracelets</a> (comes with beads and string)</li>
2763 <li><a href="https://www.amazon.com/gp/product/1878257412/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1878257412&#x26;linkId=d283508248a4016cd908bd8e37fcea68">Kids Shenanigans</a> (comes with a Whoopie cushion!)</li>
2764 <li><a href="https://www.amazon.com/gp/product/1878257749/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1878257749&#x26;linkId=99f448476dd4b6ce6baae76dbf048446">Earthsearch: A Kid's Geography Museum in a Book</a> (comes with interactive spinners, a sand-powered clock, and a real-life penny)</li>
2765 <li><a href="https://www.amazon.com/gp/product/1878257145/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1878257145&#x26;linkId=6b93493aa3d2cd5660e5e24c404ad5e6">Explorabook: A Kid's Science Museum in a Book</a> (comes with a bunch more interactive projects and whatnots inside the book, like mirrors, spinners, and a packet of algae that you can grow)</li>
2766 </ul>
2767 <p>As a kid, there was nothing better than getting a new Klutz book (ok, maybe a Super Nintendo game). But unlike a replay of <em>Super Mario RPG</em>, these Klutz books require no nostaglia goggles. Here's why I think they're magic:</p>
2768 <h3>Klutz books are spiral-bound</h3>
2769 <p>Books for learning stuff should be able to open up and stay flat. The old 1980s computer manuals for computers like the Commodore VIC-20, the Commodore 64, and <a href="/my-new-old-apple-iie-computer">my new old Apple IIe</a> knew this much -- their manuals were spiral-bound and spell-binding.</p>
2770 <p>So, why don't we see more spiral-bound books? Without knowing that much about printing costs, I imagine they're more expensive. Also, they do look slightly worse on a bookshelf, especially if you're going for that 'grammable color pattern look (so, just don't do this).</p>
2771 <h3>Klutz books come with the required materials</h3>
2772 <p>The little "paper" football that came with the <em>Table Top Football: A Guide to the Classic Lunchroom Sport</em> was a revered grail of mine. I remember that my dad took a sheetrock knife and made a small incision in its plastic case attached to the book so that the football could be slid in and out, with the explicit rule that the football must either be <em>in the case</em> or <em>being used in a game</em>. This is much like the inexorable <a href="https://hypercritical.co">Jon Siracusan</a> rule for Airpods. Obey, or the Airpods will be instantly lost forever.</p>
2773 <p><span
2774 class="gatsby-resp-image-wrapper"
2775 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 334px; "
2776 >
2777 <a
2778 class="gatsby-resp-image-link"
2779 href="/static/e4a351feccb1c6d3e7524fa014860c7c/20f07/football.jpg"
2780 style="display: block"
2781 target="_blank"
2782 rel="noopener"
2783 >
2784 <span
2785 class="gatsby-resp-image-background-image"
2786 style="padding-bottom: 149.69325153374234%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAeABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAEEAgP/xAAXAQADAQAAAAAAAAAAAAAAAAAAAgMB/9oADAMBAAIQAxAAAAFvlpbUjNlJxvnF2IF//8QAHhAAAgICAgMAAAAAAAAAAAAAAQIAAwQSESExMkL/2gAIAQEAAQUC+4vYs9+4vhidg41qblTUTLcTeLjkT//EABkRAQADAQEAAAAAAAAAAAAAAAEAAhESIf/aAAgBAwEBPwFtUxYoukN3pns//8QAFhEBAQEAAAAAAAAAAAAAAAAAEBFB/9oACAECAQE/AbhD/8QAHBAAAgEFAQAAAAAAAAAAAAAAAAEREBIhMWEy/9oACAEBAAY/Atm6Yq1A5jmSTaFa44ej/8QAHxAAAgEDBQEAAAAAAAAAAAAAAAERITFREEFhgaFx/9oACAEBAAE/IXdNH0pt60s+YTwWTMoPdkk4oBLInfctKKiGaGunQhijhI//2gAMAwEAAgADAAAAEMgac//EABkRAAMBAQEAAAAAAAAAAAAAAAERMQBRYf/aAAgBAwEBPxB6SJFjqJxi5J5kRfd//8QAFxEBAQEBAAAAAAAAAAAAAAAAAQAhEf/aAAgBAgEBPxAO8QZIcgA5f//EABoQAQADAQEBAAAAAAAAAAAAAAEAESExQVH/2gAIAQEAAT8QOCFLqxOFsfl5YHep2OopSsOwNGiW8yPYjHSMIaUDyIP2miL+adu5nhc+uEGVBtaKhC5o1mB6+jdqIaReYA5P/9k='); background-size: cover; display: block;"
2787 ></span>
2788 <img
2789 class="gatsby-resp-image-image"
2790 alt="football"
2791 title="football"
2792 src="/static/e4a351feccb1c6d3e7524fa014860c7c/20f07/football.jpg"
2793 srcset="/static/e4a351feccb1c6d3e7524fa014860c7c/d2f63/football.jpg 163w,
2794 /static/e4a351feccb1c6d3e7524fa014860c7c/c989d/football.jpg 325w,
2795 /static/e4a351feccb1c6d3e7524fa014860c7c/20f07/football.jpg 334w"
2796 sizes="(max-width: 334px) 100vw, 334px"
2797 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2798 loading="lazy"
2799 />
2800 </a>
2801 </span></p>
2802 <p>Side note that there are some people who just love making small cuts into the plastic cases for things, so that you easily return them to their "pristine" condition. I, myself, don't understand these people. I like wripping these cases to shreds instantly.</p>
2803 <p>Anyway, back to these Klutz books. By including juggling bean bags, yarn for friendship bracelets, or a real harmonica, Klutz Press books gave you everything you needed to get your hands dirty. "Active learning", or something like that. Playing = learning. Etcetera.</p>
2804 <h3>Klutz books have hilarious art</h3>
2805 <p><span
2806 class="gatsby-resp-image-wrapper"
2807 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 450px; "
2808 >
2809 <a
2810 class="gatsby-resp-image-link"
2811 href="/static/6c99ba6e2419ae976e32b7e293532a7a/20e5d/shenanigan.jpg"
2812 style="display: block"
2813 target="_blank"
2814 rel="noopener"
2815 >
2816 <span
2817 class="gatsby-resp-image-background-image"
2818 style="padding-bottom: 105.52147239263803%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAVABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAMFAQL/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/2gAMAwEAAhADEAAAAdbnrMHXTOaxLVhH/8QAHBAAAgICAwAAAAAAAAAAAAAAAQIDEgARISIz/9oACAEBAAEFApN2LODG11PJdu8HjUY8KvirVf/EABgRAQEAAwAAAAAAAAAAAAAAAAEQAhEh/9oACAEDAQE/Acl4E3P/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAbEAACAwADAAAAAAAAAAAAAAAAEQIhQQFRYf/aAAgBAQAGPwKKwdIY/UckSq06Ef/EABwQAQACAwADAAAAAAAAAAAAAAEAESExQVFhof/aAAgBAQABPyHfmlkI6WLkpZRQkhvzZPgjVXSPcPIQgOif/9oADAMBAAIAAwAAABD40Dz/xAAYEQADAQEAAAAAAAAAAAAAAAAAAREh0f/aAAgBAwEBPxDAt3onVUVbRKH/xAAYEQACAwAAAAAAAAAAAAAAAAAAARARIf/aAAgBAgEBPxBYIqP/xAAeEAEBAAMAAQUAAAAAAAAAAAABEQAhMUFRYZHB4f/aAAgBAQABPxApxWslvL8YioBbdp66M2IbXl+8SKLKTxPGbV2tv3wQefrIIQcjra44KFKwLjarpL3P/9k='); background-size: cover; display: block;"
2819 ></span>
2820 <img
2821 class="gatsby-resp-image-image"
2822 alt="shenanigan"
2823 title="shenanigan"
2824 src="/static/6c99ba6e2419ae976e32b7e293532a7a/20e5d/shenanigan.jpg"
2825 srcset="/static/6c99ba6e2419ae976e32b7e293532a7a/d2f63/shenanigan.jpg 163w,
2826 /static/6c99ba6e2419ae976e32b7e293532a7a/c989d/shenanigan.jpg 325w,
2827 /static/6c99ba6e2419ae976e32b7e293532a7a/20e5d/shenanigan.jpg 450w"
2828 sizes="(max-width: 450px) 100vw, 450px"
2829 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2830 loading="lazy"
2831 />
2832 </a>
2833 </span></p>
2834 <p>Just look at that paper airplane stuck in the teacher's hair!</p>
2835 <p>Klutz had a particular art direction that spoke to me as a child. The goofy people in their guides made me feel like it was <em>okay to be a klutz</em>. </p>
2836 <p>Which brings me to the most important reason that Klutz books are special.</p>
2837 <h3>Klutz books embrace the Beginner's Mindset</h3>
2838 <blockquote>
2839 <p>In the beginner's mind there are many possibilities. In the experts mind there are few - Shunryū Suzuki</p>
2840 </blockquote>
2841 <p>Everyone starts out as a klutz. No matter what. That means it's okay to make mistakes. It can even be funny - in fact, it should be funny! Because it's fun to learn new things.</p>
2842 <p>Being a klutz, making mistakes, having fun, this is the path to wonderful things.</p>
2843 <h2>Who's behind Klutz Press?</h2>
2844 <p>According to <a href="https://en.wikipedia.org/wiki/Klutz_Press">Wikipedia</a>, Klutz Press was founded in 1977 by three friends in Palo Alto.</p>
2845 <p>The apocryphal story is that <a href="https://en.wikipedia.org/wiki/John_Cassidy_(author)">John Cassidy</a>, a recent Stanford grad working as a high school teacher, brought a bucket of tennis balls and some hand-written instructions for juggling to his remedial reading class. The laughs and learning and genuine reading and genuine juggling that ensued inspired Cassidy and his buddies from Stanford to publish <em>Juggling For the Complete Klutz</em> under their new company: Klutz Press.</p>
2846 <p><em>Juggling For the Complete Klutz</em> has sold over 2.5 million copies. But Googling for Klutz Press is somewhat challenging these days. In 2000, Klutz was acquired by a company called Nelvana for $74 million, and in 2002 Klutz became a subsidiary of Scholastic, Inc. This latter merger is a good match in my book, as the Scholastic Book Fair also ranks heavily in my childhood memories of learning to love reading. The only other company I'd feel comfortable with owning Klutz Press is Pizza Hut - thanks to their delicious <a href="https://www.bookitprogram.com/">BOOK-IT!</a> reading program, which brought me dozens of delicious cheese Personal Pan Pizzas during the 1990s. My parents couldn't decide if they hated or loved Pizza Hut for this.</p>
2847 <p>Nowadays, Klutz.com redirects to the Scholastic website, and it's unclear what's out-of-print or available from the voluminous Klutz catalog. So if you do find a genuine Klutz book and kit, I'd snag them quickly!</p>
2848 <p>Luckily, I was able to find a good interview with Cassidy from 1995 on the <a href="https://web.archive.org/web/20110616182712/http://findarticles.com/p/articles/mi_m1154/is_n5_v83/ai_16857996/">Wayback Machine</a>. In 1995, Klutz was at the height of their power and influence in kid's minds. Here are some choice quotes from Cassidy:</p>
2849 <p>On their company culture at Klutz Press:</p>
2850 <blockquote>
2851 <p>"In terms of being laid back, we take a back seat to nobody."</p>
2852 </blockquote>
2853 <p>On their "teaching" style:</p>
2854 <blockquote>
2855 <p>"Talk to a kid about fun and math, and it's like you're talking about two different sides of the universe. If we can climb this mountain, there's nothing we can't tackle."</p>
2856 </blockquote>
2857 <blockquote>
2858 <p>"Kids don't learn all that much by listening or reading. They need to get elbow-deep in a subject and touch it, feel it, and smell it."</p>
2859 </blockquote>
2860 <p>This reminds me of Seymour Paypert's <a href="https://www.amazon.com/gp/product/0465046746/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0465046746&#x26;linkId=2949aefc36d4bd9d9f632170d2ac23de">Mindstorms book</a> about his work with LOGO and the Turtle machine (you can check out <a href="/mindstorms">my notes</a> on the book)</p>
2861 <p>The article explains a bit about their business:</p>
2862 <ul>
2863 <li>All of Klutz' books sell for less than $20</li>
2864 <li>They can have low prices because: (1) the books (with their accompanying "stuff") are viewed as more than books - but "toys/novelties", so more retailers than booksellers are interesting in carring them, and (2) they do large printing runs (150k copies vs the usual 10k for children's books)</li>
2865 </ul>
2866 <p>And, importantly, the final word from Cassidy:</p>
2867 <blockquote>
2868 <p>"I can hang a spoon off my nose," Cassidy boasts, "and I take a lot of pride in that".</p>
2869 </blockquote>
2870 <h2>Create wonderful things, be good, have fun</h2>
2871 <p>I just wanted to write that out again. I've decided to adopt their credo as my own life motto.</p>
2872 <p>I learned so much from Klutz Press as a kid. I'm still learning now. Thank you, John Cassidy and team, for making these wonderful books. My juggling is finally starting to get pretty good, but I'll always be a klutz.</p></content:encoded></item><item><title><![CDATA[The Six Levels of Interaction with a System]]></title><description><![CDATA[We recently borrowed our friends' car, because they're awesome. Along with the keys, they gave us a few, uh, provisos, a, a couple of quid…]]></description><link>https://www.charlieharrington.com/the-six-levels-of-interaction-with-a-system</link><guid isPermaLink="false">https://www.charlieharrington.com/the-six-levels-of-interaction-with-a-system</guid><pubDate>Tue, 26 May 2020 00:00:00 GMT</pubDate><content:encoded><p>We recently borrowed our friends' car, because they're awesome. Along with the keys, they gave us <em>a few, uh, provisos, a, a couple of quid pro quos:</em><sup>1</sup></p>
2873 <ul>
2874 <li>The car takes the expensive kind of gas</li>
2875 <li>The trunk doesn't always open up from the outside</li>
2876 <li>The dash says the tail-light is out, but it's not</li>
2877 <li>You'll need to add more oil every 100 miles or so, and it might need an oil change</li>
2878 </ul>
2879 <p>I nodded throughout. Yup, needs prem-o gas. Trunk's weird, okay. Tail-light-light's-not-alright, good to know. Oil, yes, oil's a thing that cars need.</p>
2880 <p>Meanwhile, I caught myself thinking, "Wow, they really know a lot about cars."</p>
2881 <p>I, for one, don't. My dad knows how to take a car apart and put it back together. I know how to get 120 stars in Super Mario 64. Sure, I learned <em>some stuff</em> about cars growing up. I've changed flat tires in a pinch, once helped my dad replace brake pads on our monstrous Suburban, and sorta payed attention while I helped him change the oil in Old Blue (his beloved sky blue '85 Blazer).</p>
2882 <p>Fact is, I've never owned a car in my adult life (hello, city-living). For those intermittent and unavoidable road trips, I've been a semi-content customer of Zipcar. I never been forced to face the reality of <strong>learning cars</strong>.</p>
2883 <p>But, sure, I'd like to!</p>
2884 <p>Even now, I'm starting to fantasize about acquiring the rusted hulk of a old Volkswagon Beetle, depositing it via crane into my garage workshop lair, tearing it apart and rebuilding it anew from first principles, as I both rediscover the invention of internal combustion and manufacture one pretty-sweet ride.</p>
2885 <p>Where does this fantasy come from? Well, I've been told that Beetles have a relatively straight-forward engine for beginners (though I'm not quite sure what exactly that means). But that's not quite it. Frankly, this is an all-to-familiar headspace for me. Intimidated by the mention of changing oil, my brain races ahead rebuilding a car from scratch in order to understand ... why I needed to change the oil in an entirely different car.</p>
2886 <p>Why do I jump all the way to wanting to understand things from first principles?</p>
2887 <p>Maybe because this has been a mostly-successful ideal for me to aspire to when I learned programming as an adult, and I'm now pattern-matching into other complex systems. But, certainly, I should be able to productive with a system far in advance of knowing how to build it from scratch. Isn't that what interfaces are all about?</p>
2888 <p>Which brings me to the following shower thought:</p>
2889 <h2>The Six Levels of Interaction with Systems</h2>
2890 <p>The six levels of interaction with a system are:</p>
2891 <ol start="0">
2892 <li>Non-use</li>
2893 <li>Use</li>
2894 <li>Monitor</li>
2895 <li>Maintain</li>
2896 <li>Repair</li>
2897 <li>(Re)build</li>
2898 </ol>
2899 <p>Yes, this is zero-indexed, obviously. Want to see it as a Ben Thompson <a href="https://stratechery.com/">Stratechery-style</a> diagram?</p>
2900 <p><span
2901 class="gatsby-resp-image-wrapper"
2902 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2903 >
2904 <a
2905 class="gatsby-resp-image-link"
2906 href="/static/019fd88c90423bca8237edf07f8b24fe/07d37/stages.png"
2907 style="display: block"
2908 target="_blank"
2909 rel="noopener"
2910 >
2911 <span
2912 class="gatsby-resp-image-background-image"
2913 style="padding-bottom: 18.404907975460123%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAABYlAAAWJQFJUiTwAAABOElEQVQY0w2PyyvDcQDAv8q/wU20tIeDPFKIcvHMTUqirM3awsEzq7UxDuTRXNmG2ZiGUstSa2GnpbHRZg42a/LcktPH7/Dpc/vUR1ivJ1gIGdiPOsmnfHwF2ymE+8gG+sm5h/nyDEkeID43QlKj51mn5mbUxJ7ei0fnxjnuZdgXZ/AiTbcvieg5U9F1KmM+PMt3xAzHAs4F77uCz2nBz6SgMCeIt5SQkleTVMkIqHpZrrKxrlzFUmNDWCOItTvEkkSHR0GbvYyZ4DR/sSV+3YKPQ0HeXURWCiYMglfJsdZSwhVKovJy/IpOTIoVFivNmGttFFuupWgIYQxKXGoxBtQ4bh3kEy5yZzLe/PW8nDSR2Woms9FAerOOhylpWzfGo17Dld7EvrR8oHWxYziiaTtCo/cJpf2efzWZ0sRof74lAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
2914 ></span>
2915 <img
2916 class="gatsby-resp-image-image"
2917 alt="levels"
2918 title="levels"
2919 src="/static/019fd88c90423bca8237edf07f8b24fe/a6d36/stages.png"
2920 srcset="/static/019fd88c90423bca8237edf07f8b24fe/222b7/stages.png 163w,
2921 /static/019fd88c90423bca8237edf07f8b24fe/ff46a/stages.png 325w,
2922 /static/019fd88c90423bca8237edf07f8b24fe/a6d36/stages.png 650w,
2923 /static/019fd88c90423bca8237edf07f8b24fe/e548f/stages.png 975w,
2924 /static/019fd88c90423bca8237edf07f8b24fe/3c492/stages.png 1300w,
2925 /static/019fd88c90423bca8237edf07f8b24fe/07d37/stages.png 1790w"
2926 sizes="(max-width: 650px) 100vw, 650px"
2927 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2928 loading="lazy"
2929 />
2930 </a>
2931 </span></p>
2932 <p>My thanks to the <a href="https://excalidraw.com">Excalidraw web app</a> for their excellent box drawing tool. While I'm at it, should I add some <a href="https://www.waitbutwhy.com">Wait But Why-style</a> little stick figures?</p>
2933 <p><span
2934 class="gatsby-resp-image-wrapper"
2935 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2936 >
2937 <a
2938 class="gatsby-resp-image-link"
2939 href="/static/05ed9375769929e7791a124d47eac88b/80cfc/people.png"
2940 style="display: block"
2941 target="_blank"
2942 rel="noopener"
2943 >
2944 <span
2945 class="gatsby-resp-image-background-image"
2946 style="padding-bottom: 34.96932515337423%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAABYlAAAWJQFJUiTwAAAB4klEQVQoz02P72tScRTGv1Gv61/oXaFSbWVvg3pdbFAv2wZLiCB60S+QGP2iXkVrEXuxKBpFW0orXdaCwSaRbCyFkaXX203dvJtX77yCylWvfrpaUedwOM85nPM85wjLsmi1WjSbTTrWwZ1eo9HANE3yeQ2r1aZer5NTVQzD+N3XNDQ7OvPFok4ymUTXdUStVkNKJdEKedq2t6wmmbTCll6wF2tkFIlM6iuWLZiWJNKKQsOsk5ZlYktRKkYVo2pzyD+6wqJzVUkr879taBUarX/1mlro5ma7jWr8nbXsCzf/4DZmtdJFoljJM/d9hsWfIWK5L9RLCfTEM6pZP4YUoBIPkV+ZphAJkg/Mkns1RTY4T3Q2zopvmeWwREApMZXYYjFTQkTVz5x656bvrYurny5QWb1FY0ZgfRBsju+g5N1G+aZAHthJyuVG6XWwcKCfO73jTLjuM3TiOWJCRox+48ibDCKmRjgZdHPc5+By+DxW4jZVv8AMCcqPt6NeFGxcE2QHdxFzHmJ1/x4Wevq40TPGQ+ddhvunEWMxxPUwx17bxJIWxzt/hivvT/No6QE1+Yn92m4Kc/tYe3GY9XsHWR91Io8cJTl8jpRniIjHy1OPD//gJCOXAjheJtg7meTsR4Vf/GbF9AWAKbcAAAAASUVORK5CYII='); background-size: cover; display: block;"
2947 ></span>
2948 <img
2949 class="gatsby-resp-image-image"
2950 alt="people"
2951 title="people"
2952 src="/static/05ed9375769929e7791a124d47eac88b/a6d36/people.png"
2953 srcset="/static/05ed9375769929e7791a124d47eac88b/222b7/people.png 163w,
2954 /static/05ed9375769929e7791a124d47eac88b/ff46a/people.png 325w,
2955 /static/05ed9375769929e7791a124d47eac88b/a6d36/people.png 650w,
2956 /static/05ed9375769929e7791a124d47eac88b/e548f/people.png 975w,
2957 /static/05ed9375769929e7791a124d47eac88b/3c492/people.png 1300w,
2958 /static/05ed9375769929e7791a124d47eac88b/80cfc/people.png 1844w"
2959 sizes="(max-width: 650px) 100vw, 650px"
2960 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2961 loading="lazy"
2962 />
2963 </a>
2964 </span></p>
2965 <p>Not funny enough? How about a concentric-circle approach? That probably makes more sense, anyway.</p>
2966 <p><span
2967 class="gatsby-resp-image-wrapper"
2968 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
2969 >
2970 <a
2971 class="gatsby-resp-image-link"
2972 href="/static/aac83040f2c998858cc7a4acce92d28c/b12f7/onion.png"
2973 style="display: block"
2974 target="_blank"
2975 rel="noopener"
2976 >
2977 <span
2978 class="gatsby-resp-image-background-image"
2979 style="padding-bottom: 107.97546012269939%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAABYlAAAWJQFJUiTwAAAFj0lEQVQ4y0WUeVBVdRTHfxcyLa2ZtCl10PYcK9PkbYAKImabUcryeCiL45ILaKIBiSLiilSGuAQIaaOYBg8eILI89D00zW1cpslCcM0kXNPG0vLTeffZ+Md37r1zz/3cc37nnK/acnw9aw8vpuDIcr7StYz1R5ay7rBHS7w6skSPWXMomzUHs8k/sEjXao9+yBIt4vN989hydD1q2q5wPqgbQFS9kYh6fyJ1GfRrtCiqdjAR1W8QWTOY6Dp51t/dV4NX0Q0mwuteY05zLGqOO5bYxiASnaEkOIfrmuAMIa4pFKvrTd4tC+GtkkBGiUbbQxjnDpPY4aIQ4uUar9+PIKYhgIy9k1Cz3Vb9Ic4T0DhMQMFECDyxOoBc+8tsd/ixtfRpSrf3prjiWVLKBxFZF4K1yfPzYYyXb+Ll2+gGM5/umfAAmNAYjE2CbDuGUrStL+3VnaBaQa3iQqHityK536G4XaM4UP44c8teJ6IxVGAPgOnNiV6grcEisFCm1pg5WtYN6hR/bVX8sUbj5HyFK1nDPVPAyxVXCzTuVSr+EfBq+4tECjTRGYxVgGnuBFSKy0q0M5CJtUG02B+BnYqOfF+uZQkgqSvHx/Zkf1gf9o/qzUnbU7TP6czFxYrrmzU9NreiH9FNYZKUmVRXvKcpVj5sCKKuoqce8HuewDI0forwo83kj3uAhe0DwvjutVAODjTSNnQg5yd1p32h4lapxs0dPsyoMhHpDCBtdxwqSVqdVDWAO7UaHRt8uJap+GlsX868YaHJEkOBZQVfDlzM54Oy+cqUzlHTKE4ZTLQmdufyCk0/55qynoyuCyTdJcCp7nFsrOilv+iQgHPTH6PNYMBlHsNqSxGfWdYS/l4eMW/lsdpUJD/I4WfjME4FD+Ryeiduf61or+lMnMzpXM8ZTnHa2O94lLulistybm0Rz9LiH8BGSxYrgwrpO3836ptLqE0XCZ5WRb6hAIdlAueNRi5M6sGNPGmQJJNS1Z9ZLhmbGXXRnKh6mJsbFFcWSobv9OOYIYwS/xzGW79DFZ7Ed8X3qBzRqsOkjfyGUkOKAE2csfbhao7iXoUio/wFkncLcLoAjwvwlgCvC/Ds2/05YRjOJv/lxMWUo4p+EeA+1BeH8Mk7RsbIzWwzJOvAX6L8uCLAf+wCtN8HTnHG0lzZlXtS8o1sRcuY5zjjb2KTaQ65gSX0S3eiSs5Kpq28P8EuJRdSbx7LOb0xUvIqxZ0qjZTqV7wle5pSXC4jI2l3LNO4mPQYp41mDpqGs9aUyyrLBma8XUz6yBLyjcUUG2dxxmThRxmf9tSHuL5OmlLbhbgdg/nE05Qkt3ds7u7UuJTvw02Zr9boZzg3OJBjlhF8a/mYEsMSvjYupNIcxymBtRoCuDDlCTqyNf7drqh19GJ0fRCf/j/YH9QPwWH3js6lZb7cytQ4be0rg22U8s20GofKKAVxVo7iVJCB8xOf5MoCjauFGpcdvkypMBPVJIPtAXpWzyqrN756CCfKu+qlX1jqyw3JtH1mN87a/Gh5/3lawp+jbXwvrn7SmY4sjfb1mr7Pi8r6y+qNkNUzyepJybNdXnMYt0uW3GHhoP1xPdM/xGGurZQslsrZSvd/lx9c8dx/pnFXjOO2OE9uZT9ZOa856G7jTvRkGCPAQBIbxTzFcWLF6wpkBH6t7sIdcRXPwLNZ8fcmrwP9WeXD95U9mO0wECXG6oElCNQqSc3bMxE10xUhFuSPTcq2NVqIkSUPbxwivmiU2XqJDXLg2xw9KLU/ySq7H9PsrxK+M0BMOFCc3oxVvrE1BjKmfhBpe+UMc1xpzK2PZ55zkq6Mpslk7prMfNdHpDbPIMWdRMou0e5kUvfOYsG+ZBbtmU5W8zQy3VNZIHGZrqmkOhNYs38x/wHuOjAwBDroCQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
2980 ></span>
2981 <img
2982 class="gatsby-resp-image-image"
2983 alt="onion"
2984 title="onion"
2985 src="/static/aac83040f2c998858cc7a4acce92d28c/a6d36/onion.png"
2986 srcset="/static/aac83040f2c998858cc7a4acce92d28c/222b7/onion.png 163w,
2987 /static/aac83040f2c998858cc7a4acce92d28c/ff46a/onion.png 325w,
2988 /static/aac83040f2c998858cc7a4acce92d28c/a6d36/onion.png 650w,
2989 /static/aac83040f2c998858cc7a4acce92d28c/e548f/onion.png 975w,
2990 /static/aac83040f2c998858cc7a4acce92d28c/b12f7/onion.png 1020w"
2991 sizes="(max-width: 650px) 100vw, 650px"
2992 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
2993 loading="lazy"
2994 />
2995 </a>
2996 </span></p>
2997 <p>Yes, those are the vintage Apple logo colors, because I literally cannot help myself (it was hard enough not to write another post about <a href="/my-new-old-apple-iie-computer">my Apple IIe</a>).</p>
2998 <p>Let's go through the levels one-by-one, continuing our use of a car as the example.</p>
2999 <h3>Level 0: Non-use</h3>
3000 <p>You can't use the system. You don't know how to drive the car.</p>
3001 <h3>Level 1: Use</h3>
3002 <p>You can use the primary purpose of the system. You know how to drive a car safely. You can go in reverse. You can pass a driver's test.</p>
3003 <h3>Level 2: Monitor</h3>
3004 <p>You know how to observe secondary signals from the system. In our car, you know to occasionally review the dashboard for things like the engine light. You don't necessarily know what to do about these signals, but you know they are <em>a thing</em>, and will probably <em>mention</em> them to someone like a mechanic (but, hey, no guarantee).</p>
3005 <h3>Level 3: Maintain</h3>
3006 <p>You are comfortable enough with the previous monitoring signals and your own "handy-ness" (is that a word?) to do routine maintence on the system. You add more washer fluid when it gets low. You replace the dead battery. You add air to your tires at the gas station.</p>
3007 <h3>Level 4: Repair</h3>
3008 <p>You know how to fix sub-systems in the overall system. Not necessary all of them, but the most important ones (probably the ones that break most often). You can change a tire. You can replace brake pads. You can fix a broken headlight.</p>
3009 <h3>Level 5: (Re)build</h3>
3010 <p>You know how to tear apart the system completely and re-build it from scratch. You understand each sub-system, why it's there, and how to make them all work together. You can take apart the Volkswagon Beetle and put it back together. You can levitate.</p>
3011 <h2>Other examples</h2>
3012 <blockquote>
3013 <p>Sure, Charlie, that worked conveniently for your car example. But what about... other stuff?</p>
3014 </blockquote>
3015 <p>Great question!</p>
3016 <p>How about investing?</p>
3017 <ol start="0">
3018 <li><strong>Non-use</strong>: Don't invest anything</li>
3019 <li><strong>Use</strong>: Invest some money and be able to check-in your returns</li>
3020 <li><strong>Monitor</strong>: Compare your returns with alternative investments</li>
3021 <li><strong>Maintain</strong>: Make slight adjustments based on these alternatives</li>
3022 <li><strong>Repair</strong>: Fix gaping holes or major problems in your investing strategy</li>
3023 <li><strong>Re(build)</strong>: Design a custom investment strategy for you (or anyone else)</li>
3024 </ol>
3025 <p>Okay, admittedly <strong>Repair</strong> and <strong>Rebuild</strong> blended a bit there. But I think that's fine. </p>
3026 <p><strong>In fact, the lines between these levels are meant to be porous</strong>. A Level 3 could probably do some serious Level 4 stuff. Even a Level 0 non-user <em>probably</em> knows enough from pop-culture and context clues to be a Level 1 user, with the proper motivation.</p>
3027 <p>Let's try another example: using a desktop computer!</p>
3028 <ol start="0">
3029 <li><strong>Non-use</strong>: Don't know how to use a computer. They're evil!</li>
3030 <li><strong>Use</strong>: Can use a computer to do stuff (go online, write a document, print it out, use a spreadsheet, play Minecraft)</li>
3031 <li><strong>Monitor</strong>: Notice that your browser is slower than normal or that you are running out of hard drive space</li>
3032 <li><strong>Maintain</strong>: Empty your "trash bin", delete old unused apps</li>
3033 <li><strong>Repair</strong>: Remove that sketchy ad company browser extension from your parent's computer. Restore your computer's data from a backup drive.</li>
3034 <li><strong>Re(build)</strong>: Take apart a computer, install new hard drive, re-install operating system.</li>
3035 </ol>
3036 <p>I suppose with that example we transitioned from a non-computer-user all the way to computer technician. It's patently obvious that there are levels of understanding even beyond our Level 5 skill of being able to "take apart a computer and install something new in it." Like, how does a hard drive even work? How does memory work? What is physics? What is truth? </p>
3037 <p>The onion is infinite. But these outer levels may prove useful as you encounter unknown systems. </p>
3038 <p>There's often money to be made for more advanced "Levels" to sell their skills to lower level-ers. I'm not going to fix a cavity myself - I'm going to pay an expert, a Level 5 dentist to do it. In a pinch, a desert-island pinch, I'm sure I could figure out how do some Castaway-style dentistry. But I'm not (yet) on a desert island, and I don't want to take the time to go beyond a Level 3 in the kinda-gross system that is my own teeth situation. I'll floss, mostly every day, which puts me squarely in Level 3. The bet I'm making is that my time doing Level 3 work will be worth it, given the effort, compared to my toothless friends in the preceeding levels.</p>
3039 <h2>So, what's the right way to learn a new system?</h2>
3040 <p>I don't know! </p>
3041 <p>On one hand, knowledge stacks on previous or prerequiste knowledge. It's probably helpful to know about arithmetic before tackling algebra.</p>
3042 <p>On the other hand, if all you ever want to do is "use" something, use the system for its primary intended purpose, maybe it's not worth digging deeper -- at least not initially. When we learn how to drive, we don't start with a box of car parts and the skeleton frame of a burned out Cheverolt (as much as I wish we did). No, we got behind the wheel (after watching countless VHS tapes of instructional material) and learned how to drive. We straight-up Level 1'ed that car.</p>
3043 <p>The question to consider is: what's your goal? </p>
3044 <p>Your answer should guide where you should set your North Star in the onion-level-spectrum-chart-thing.</p>
3045 <h3>A note on instructional design</h3>
3046 <p>Great courses and great teachers take a strong viewpoint towards this question.</p>
3047 <p>Sal Khan of <a href="https://www.khanacademy.org/">Khan Academy</a> seems to take the former approach, stacking layers of prerequisite knowledge nuggets in a knowledge graph that goes from counting to category theory, and everywhere in-between. Their approach makes learning math trackable and digestible, relying on momentum, quick wins, and gameification to keep students motivated.</p>
3048 <p>Whereas, <a href="https://www.fast.ai/about/#jeremy">Jeremy Howard</a> and <a href="https://www.fast.ai/about/#rachel">Rachel Thomas</a> of the <a href="https://course.fast.ai/">Fast.ai deep learning course</a> go straight for Level 1, making students feel comfortable "using deep learning to do cool things first", and then and only then start peeling back the layers (good word choice here, I think, given the context) to the complexities beneath the surface.</p>
3049 <p>In both cases, it's about finding the right way to motivate your students. There's no right answer. In fact, I adore both of these courses and projects, even if I think I failed as a student in both of them. In the case of Khan Academy, I lost motivation because there's too much to learn and not enough time to completely do my math-life over (as much as I want to). In the case of fast.ai, I became too self-conscious about linear algebra (a skill that's well past Level 1 stuff).</p>
3050 <h3>"What's next?" asked the life-long learner</h3>
3051 <p>Is this six-levels thing a brilliant and new grand unified theorem of learning systems? No, of course not. I'm probably butchering some existing theorem from an oversized coffee-table-sized book about mental models. But isn't that the point of mental models, so you can re-use them?</p>
3052 <p>For me, this "thereom" (I'm still going to call it that) helps me think about priorities. Which systems do I want to become Level 5 in over the next few years?</p>
3053 <p>Is it this car? Probably not. But I'll still watch some YouTubes so that I can figure how to put more oil in it.</p>
3054 <h4>Footnotes</h4>
3055 <ol>
3056 <li>No actual quid pro quos were exchanged. I merely wanted to quote the Genie.</li>
3057 </ol></content:encoded></item><item><title><![CDATA[My New Old Apple IIe Computer]]></title><description><![CDATA[That Monday morning in February began like any other Monday: I opened my phone immediately upon waking up, browsed Twitter, checked…]]></description><link>https://www.charlieharrington.com/my-new-old-apple-iie-computer</link><guid isPermaLink="false">https://www.charlieharrington.com/my-new-old-apple-iie-computer</guid><pubDate>Tue, 12 May 2020 00:00:00 GMT</pubDate><content:encoded><p>That Monday morning in February began like any other Monday: I opened my phone immediately upon waking up, browsed Twitter, checked Instagram, and ignored my email, all from bed, making no pretense of daily gratitude journaling. I got up to make the coffee, and then opened eBay to look at old computers.</p>
3058 <p>eBay thrills in me in an early Internet kind-of-way. It's dirty. You can't believe it works. And you can still find a deal.</p>
3059 <p>My greatest feat of all was the 2006 purchase of a Fender American Stratocaster for roughly $300 bucks which had been mislisted into an "Fender - Other" category. Its description warned that the guitar was "missing a few strings."</p>
3060 <p>Jackpot.</p>
3061 <p>I'd been waffling between a <a href="https://en.wikipedia.org/wiki/Commodore_VIC-20">Commodore VIC-20</a> and some kind of Apple II in my vintage computer fantasies. As an undying fan of YouTube's <a href="https://www.youtube.com/channel/UC8uT9cgJorJPWu7ITLGo9Ww">The 8-Bit Guy</a><sup>1</sup>, I longed for a computer of my own that I could clean with hydrogen peroxide and baking soda, as I wondered what sad fate the brave, worthy computer had faced before meeting me, its benevolent new master. We'd write infinite loops in BASIC together. We'd travel the Oregon Trail. We'd poke each other's memory.</p>
3062 <p>I set a few auctions to my watch-list, and then laced on my sneakers for our morning run. Not one block away from our house did I spot something: a yellowed plastic box amid a pile of trash. No. It couldn't be. I stopped, and went back to the trash.</p>
3063 <p>It was an Apple IIe. With its CRT monitor. And a dual floppy drive.</p>
3064 <p>Just. SITTING. THERE.</p>
3065 <p>I explained the situation to Carly. She suggested, wisely, that we continue our run, of which we were less than 30 seconds into, and that if the computer was still outside when we got back, that I should knock on the door of the house, to confirm it was truly being thrown out.</p>
3066 <p>The next 30 minutes were agony. I've never ran so fast in my life.</p>
3067 <p>But it was still there.</p>
3068 <p>I knocked on the door. They were remodeling, I could hear saws or something inside. No one answered. I knocked again. I considered, you know, for a second, just taking it. Finally, the door opened. I introduced myself, likely sounding as insane as felt, and asked if the computer in the trash was.. trash. She nodded, and mentioned that, "It still works."</p>
3069 <blockquote>
3070 <p>It still works.</p>
3071 </blockquote>
3072 <p>No better sounds could have been uttered.</p>
3073 <h3>Plugging it in</h3>
3074 <p>I carried my Precious back home and hurried to plug it in.</p>
3075 <p>Except the monitor cable was missing. I was certain that I'd grabbed everything of computer-ish value from the trash pile. From the looks of the port, I'd need one of those old mono RCA cables, of which I know I have dozens in my parent's attic across the country in New Jersey. </p>
3076 <p>I still turned on the computer and the monitor anyway, and was relieved to hear it chirp happily, even if I couldn't see anything.</p>
3077 <p>By this point, it was high time to get on my bike and head into work (back when we still things like that). But I still made a quick pit-stop at a hardware store along the way, and somehow a physical store in the physical world still carried this little guy:</p>
3078 <p><span
3079 class="gatsby-resp-image-wrapper"
3080 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3081 >
3082 <span
3083 class="gatsby-resp-image-background-image"
3084 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMFBP/EABYBAQEBAAAAAAAAAAAAAAAAAAACA//aAAwDAQACEAMQAAABpmdOd7yeEtppUwoif//EABsQAQADAQADAAAAAAAAAAAAAAEAAgMREBMz/9oACAEBAAEFAvNtqk9rDS0tXpkJC3JnD6gE/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQMBAT8BiT//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAACAgIDAAAAAAAAAAAAAAAAAREhAhAgUZH/2gAIAQEABj8C4VqEQy591iuykf/EAB0QAAMAAgMBAQAAAAAAAAAAAAABETFBIVFhcYH/2gAIAQEAAT8hq0XwVmjsNZ4LrgvpPm/jY5tW+hDJJzhZEJ2c6GF9GuhkJIhI/9oADAMBAAIAAwAAABAE7M//xAAXEQEBAQEAAAAAAAAAAAAAAAABABEQ/9oACAEDAQE/EOGGll//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAIAQIBAT8QiLqv/8QAHhABAAICAwADAAAAAAAAAAAAAQARIUExYXGBobH/2gAIAQEAAT8QdS/CW6es1H7S7Mq2GDwxKamLpRb29RBfkPwRF25puLDG6Fm9BpnIi1FyHhxE8mVWxk11DF04zD5JoJ//2Q=='); background-size: cover; display: block;"
3085 ></span>
3086 <img
3087 class="gatsby-resp-image-image"
3088 alt="Monitor cable"
3089 title="Monitor cable"
3090 src="/static/3cc071bf6fe0055d7adf30d554753558/6aca1/monitorplug.jpg"
3091 srcset="/static/3cc071bf6fe0055d7adf30d554753558/d2f63/monitorplug.jpg 163w,
3092 /static/3cc071bf6fe0055d7adf30d554753558/c989d/monitorplug.jpg 325w,
3093 /static/3cc071bf6fe0055d7adf30d554753558/6aca1/monitorplug.jpg 650w,
3094 /static/3cc071bf6fe0055d7adf30d554753558/7c09c/monitorplug.jpg 975w,
3095 /static/3cc071bf6fe0055d7adf30d554753558/01ab0/monitorplug.jpg 1300w,
3096 /static/3cc071bf6fe0055d7adf30d554753558/ac99c/monitorplug.jpg 1536w"
3097 sizes="(max-width: 650px) 100vw, 650px"
3098 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3099 loading="lazy"
3100 />
3101 </span></p>
3102 <p>That night, after work, I turned it on. One beep and then:</p>
3103 <p><span
3104 class="gatsby-resp-image-wrapper"
3105 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3106 >
3107 <span
3108 class="gatsby-resp-image-background-image"
3109 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDBAH/xAAXAQADAQAAAAAAAAAAAAAAAAAAAgMB/9oADAMBAAIQAxAAAAHI1WVdx0laU9bvkzoH/8QAHRAAAgIDAAMAAAAAAAAAAAAAAQIAAxESEyIjQf/aAAgBAQABBQJGIHyoBUNTCcXmhw++fbEfx41zhXDWgn//xAAZEQABBQAAAAAAAAAAAAAAAAAAARAREiH/2gAIAQMBAT8BW8mP/8QAGBEBAQADAAAAAAAAAAAAAAAAABECIVH/2gAIAQIBAT8B0uXER//EABwQAAICAgMAAAAAAAAAAAAAAAABMTIRIRASIv/aAAgBAQAGPwJdcQaSMIRBJ442ypUqj//EABwQAQACAgMBAAAAAAAAAAAAAAEAESExQWGhkf/aAAgBAQABPyFxAvNqNiwXeJoQdQDlxZU02vIUNI8AQriLXbEAAPbBN+mdOOUfOf/aAAwDAQACAAMAAAAQgAow/8QAGBEAAwEBAAAAAAAAAAAAAAAAABExAVH/2gAIAQMBAT8QxGC6GM//xAAaEQACAgMAAAAAAAAAAAAAAAAAAREhMVGh/9oACAECAQE/EE43kctdCEtn/8QAHxABAQACAgEFAAAAAAAAAAAAAREAMSFBcWGBsdHw/9oACAEBAAE/EJMONl6fjEYgQHGlwwJazS5XEkQAN+2CMMH83j0Bw5JZgyJ9BMIBf14MLkdgXFLTz92EN/lXC4hLrn//2Q=='); background-size: cover; display: block;"
3110 ></span>
3111 <img
3112 class="gatsby-resp-image-image"
3113 alt="boot"
3114 title="boot"
3115 src="/static/cc15f0f4663c4383e24711a1db5cba9d/6aca1/boot.jpg"
3116 srcset="/static/cc15f0f4663c4383e24711a1db5cba9d/d2f63/boot.jpg 163w,
3117 /static/cc15f0f4663c4383e24711a1db5cba9d/c989d/boot.jpg 325w,
3118 /static/cc15f0f4663c4383e24711a1db5cba9d/6aca1/boot.jpg 650w,
3119 /static/cc15f0f4663c4383e24711a1db5cba9d/7c09c/boot.jpg 975w,
3120 /static/cc15f0f4663c4383e24711a1db5cba9d/01ab0/boot.jpg 1300w,
3121 /static/cc15f0f4663c4383e24711a1db5cba9d/ac99c/boot.jpg 1536w"
3122 sizes="(max-width: 650px) 100vw, 650px"
3123 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3124 loading="lazy"
3125 />
3126 </span></p>
3127 <p>"Isn't it beautiful?" I said to Carly. "And don't you just love how the <code class="language-text">II</code> is shown as <code class="language-text">//</code> slashes. The green, too, it's like something out of the Rebel Alliance."</p>
3128 <p>"Yes, and what do you do with it?"</p>
3129 <p>"Well... you just..."</p>
3130 <p>Truth was I didn't know how to advance past this welcome screen. My benefactors neglected to include the computer manual for the Apple IIe in their trash. This is a major bummer on multiple fronts, because what I've learned about computer manuals from the 1980s is that they were AWESOME. I recently picked up both the Commodore VIC-20 manual and the Commodore 64 manuals on eBay, even though I have neither machine, because I wanted to enjoy their spiral-bound goodness.</p>
3131 <p>But I'm a software engineer. I know how to Google. Soon, a <code class="language-text">Ctrl-Reset</code> had me at the BASIC prompt.</p>
3132 <p>I was ready for this.</p>
3133 <p><span
3134 class="gatsby-resp-image-wrapper"
3135 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3136 >
3137 <span
3138 class="gatsby-resp-image-background-image"
3139 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAYnYbMsOhpQmjQzCAv8A/8QAHBABAQACAwEBAAAAAAAAAAAAAgEAAxESEyEi/9oACAEBAAEFAtPWZOhzc3WNVhgdqQCpOger49hcV/R+ziWf/8QAGREBAAIDAAAAAAAAAAAAAAAAAQARAhAS/9oACAEDAQE/AVyug3zP/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgICAgMAAAAAAAAAAAAAAAECIRExAxAiI2H/2gAIAQEABj8CUnnYrdPOjxk0irXwVUY5NmIdeyF9WJs//8QAHRAAAgICAwEAAAAAAAAAAAAAAAERITFBUWGBcf/aAAgBAQABPyF70eiFY9OVkTmDYTJGym2EA3sPSn5EFU3vZ0PEPEGtXwMl94LwihLg/9oADAMBAAIAAwAAABAP1D//xAAZEQACAwEAAAAAAAAAAAAAAAAAAREhMVH/2gAIAQMBAT8QQWgQYJOH/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIf/aAAgBAgEBPxDI22UlZT//xAAfEAEBAAICAgMBAAAAAAAAAAABEQAhMUFhsVFx0eH/2gAIAQEAAT8QccVECcf3Hfsk8LXPjKbAyDHb9dp1PzCwILp4zbJ7rSdT5whqdk1fa49QnXDOshBDDpeR7cJxMUoZhC7EkNesQCfZfuZ//9k='); background-size: cover; display: block;"
3140 ></span>
3141 <img
3142 class="gatsby-resp-image-image"
3143 alt="yup"
3144 title="yup"
3145 src="/static/80419632c0d27acc4c946f5991b0587d/6aca1/yup.jpg"
3146 srcset="/static/80419632c0d27acc4c946f5991b0587d/d2f63/yup.jpg 163w,
3147 /static/80419632c0d27acc4c946f5991b0587d/c989d/yup.jpg 325w,
3148 /static/80419632c0d27acc4c946f5991b0587d/6aca1/yup.jpg 650w,
3149 /static/80419632c0d27acc4c946f5991b0587d/7c09c/yup.jpg 975w,
3150 /static/80419632c0d27acc4c946f5991b0587d/01ab0/yup.jpg 1300w,
3151 /static/80419632c0d27acc4c946f5991b0587d/ac99c/yup.jpg 1536w"
3152 sizes="(max-width: 650px) 100vw, 650px"
3153 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3154 loading="lazy"
3155 />
3156 </span></p>
3157 <p><span
3158 class="gatsby-resp-image-wrapper"
3159 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3160 >
3161 <span
3162 class="gatsby-resp-image-background-image"
3163 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAwADAAAAAAAAAAAAAAAAAAMEAQIF/8QAFwEAAwEAAAAAAAAAAAAAAAAAAAIDAf/aAAwDAQACEAMQAAABhet2LkcLRiqqA5RoLT//xAAbEAADAAMBAQAAAAAAAAAAAAABAgMAERITQv/aAAgBAQABBQKOhkuVetK+iTKqqMX9lnhAkvVNMBU/fC6z/8QAGREAAgMBAAAAAAAAAAAAAAAAERIAAQIQ/9oACAEDAQE/ATpgOrU//8QAFhEBAQEAAAAAAAAAAAAAAAAAABEQ/9oACAECAQE/Aciv/8QAHRAAAgIDAAMAAAAAAAAAAAAAAAERMQIQEiFB4f/aAAgBAQAGPwKTCXQ+W4JsXg5d+xY4I+HWSU1qtf/EABwQAAIDAQADAAAAAAAAAAAAAAERACFBMVFhcf/aAAgBAQABPyHukssICBqM9EpHyoNAQBOXC069wNNU4mzLbc7IW0G0NkLU0M/Nwb9U/9oADAMBAAIAAwAAABCnFk//xAAYEQADAQEAAAAAAAAAAAAAAAAAAREhUf/aAAgBAwEBPxBwJjpCiarD/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIf/aAAgBAgEBPxByW6UpjZYf/8QAHhABAAIDAAIDAAAAAAAAAAAAAQARITFBUXGRscH/2gAIAQEAAT8QVTmyHK/YhjSkUVaqviIpA0DgiwGNvwqMgCiITkYLYUdGHkdMLLasxqNHQBFgCyqWncPipk7k4pFKDobP2jUs6Q9DRP/Z'); background-size: cover; display: block;"
3164 ></span>
3165 <img
3166 class="gatsby-resp-image-image"
3167 alt="loop"
3168 title="loop"
3169 src="/static/fb7fccae78325c62788e78bcdb8af7f3/6aca1/loop.jpg"
3170 srcset="/static/fb7fccae78325c62788e78bcdb8af7f3/d2f63/loop.jpg 163w,
3171 /static/fb7fccae78325c62788e78bcdb8af7f3/c989d/loop.jpg 325w,
3172 /static/fb7fccae78325c62788e78bcdb8af7f3/6aca1/loop.jpg 650w,
3173 /static/fb7fccae78325c62788e78bcdb8af7f3/7c09c/loop.jpg 975w,
3174 /static/fb7fccae78325c62788e78bcdb8af7f3/01ab0/loop.jpg 1300w,
3175 /static/fb7fccae78325c62788e78bcdb8af7f3/ac99c/loop.jpg 1536w"
3176 sizes="(max-width: 650px) 100vw, 650px"
3177 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3178 loading="lazy"
3179 />
3180 </span></p>
3181 <p>I didn't grow up coding in BASIC, but I'm a student of history. I certainly knew that it's a rite of passage to code up a little infinite loop whenever you see a BASIC prompt.</p>
3182 <p>Carly nodded. "Cool. Why does it smell like a campfire?"</p>
3183 <h3>Capacitor problems</h3>
3184 <p>Uh-oh. That pop that I'd heard seconds before, and willfully ignored, might not have been a good pop. The smell grew worse.</p>
3185 <blockquote>
3186 <p>Burnt marshmallows on blacktop.</p>
3187 </blockquote>
3188 <p>I flipped off the power. I forgot to mention I already had the fire extinguisher at the ready, but it didn't look like that'd be necessary. Unfortunately, the smell didn't disappear after turning off the power.</p>
3189 <p>Some more Googling revealed the likely problem: a capacitor popped in the power supply. I unscrewed the power supply from the computer (held on by just four small screws), and put it somewhere far away. Days later, weeks later, the power supply still smelled.</p>
3190 <p>At this point, if I had been a more experienced solder-er, I would have considered buying a capacitor for like ten cents and replacing it myself. But as I'm still learning the ropes of soldering, and hacking with power supplies felt a little ahead of me, I thought about getting some more experienced help. (Also, I was kinda terrified that I would accidentally short circuit something and fry the motherboard, before I ever got to really play with the computer).</p>
3191 <p>I spent some time looking for an Apple repair store that would service Apple II's. Even in the Bay Area, this felt like a lost cause. Then someone suggested this site: <a href="https://www.reactivemicro.com/">ReActiveMicro</a>. Its tagline: <code class="language-text">Reactivate Your Vintage Apple Computer</code>. For $95, I could order a <a href="https://www.reactivemicro.com/product/ultimate-universal-power-supply/">new power supply</a> for my Apple IIe.</p>
3192 <p>So I did. It arrived in the mail about a week later, and I installed it in roughly a minute and half. With the extinguisher again at the ready, I turned on the computer again.</p>
3193 <p>And it worked! I looked up an old program in an old Apple magazine online, and coded up this little sine wave program:</p>
3194 <blockquote class="twitter-tweet"><p lang="en" dir="ltr">Back in business <a href="https://twitter.com/hashtag/appleiie?src=hash&amp;ref_src=twsrc%5Etfw">#appleiie</a> <a href="https://t.co/AHi9EBdbVm">pic.twitter.com/AHi9EBdbVm</a></p>&mdash; Charlie Harrington (@whatrocks) <a href="https://twitter.com/whatrocks/status/1231624493040193537?ref_src=twsrc%5Etfw">February 23, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
3195 <h3>Expansion slots</h3>
3196 <p>Now that I've got a working, adorable Apple IIe, the first thing I decide to do is take it apart. Say what you will about the <a href="https://www.apple.com/mac-pro/">new Mac Pro case design</a>, but it's got nothing on this little hatch.</p>
3197 <p><span
3198 class="gatsby-resp-image-wrapper"
3199 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3200 >
3201 <span
3202 class="gatsby-resp-image-background-image"
3203 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgX/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAGjK9ZXcLKOeh8iOwSEv//EAB4QAAIBAwUAAAAAAAAAAAAAAAECEgADMRETISIy/9oACAEBAAEFAhFRFSbYAXBpPN/q+7WVPLKxkCdP/8QAFhEAAwAAAAAAAAAAAAAAAAAAABAS/9oACAEDAQE/AXJ//8QAFhEBAQEAAAAAAAAAAAAAAAAAABEQ/9oACAECAQE/AVyv/8QAHBABAAIBBQAAAAAAAAAAAAAAABExAQIQIVFx/9oACAEBAAY/AoiXSkb0pp8cs4W//8QAHRAAAwACAgMAAAAAAAAAAAAAAAERITFBkVFhcf/aAAgBAQABPyFV/ovI73REZD9jaseijtB8yR3JXj2Siy8BabGfMWaOYYP/2gAMAwEAAgADAAAAEIfFD//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQMBAT8QALLrYb//xAAWEQEBAQAAAAAAAAAAAAAAAAABABH/2gAIAQIBAT8QVYGWYWr/xAAcEAEAAwEBAAMAAAAAAAAAAAABABEhMUFhwdH/2gAIAQEAAT8QP2ha2t9fyKeb8ASk6D67FoRxS7E1CvdbnPLor7A/sUGDkNJrbhLFrrdyZM8VOTMwVBfCf//Z'); background-size: cover; display: block;"
3204 ></span>
3205 <img
3206 class="gatsby-resp-image-image"
3207 alt="Apple IIe top down"
3208 title="Apple IIe top down"
3209 src="/static/a8324ff3bbaccb5768157d73a8ac790e/6aca1/topclosed.jpg"
3210 srcset="/static/a8324ff3bbaccb5768157d73a8ac790e/d2f63/topclosed.jpg 163w,
3211 /static/a8324ff3bbaccb5768157d73a8ac790e/c989d/topclosed.jpg 325w,
3212 /static/a8324ff3bbaccb5768157d73a8ac790e/6aca1/topclosed.jpg 650w,
3213 /static/a8324ff3bbaccb5768157d73a8ac790e/7c09c/topclosed.jpg 975w,
3214 /static/a8324ff3bbaccb5768157d73a8ac790e/01ab0/topclosed.jpg 1300w,
3215 /static/a8324ff3bbaccb5768157d73a8ac790e/ac99c/topclosed.jpg 1536w"
3216 sizes="(max-width: 650px) 100vw, 650px"
3217 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3218 loading="lazy"
3219 />
3220 </span></p>
3221 <p><span
3222 class="gatsby-resp-image-wrapper"
3223 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3224 >
3225 <span
3226 class="gatsby-resp-image-background-image"
3227 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAMCBAH/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAG2K+Z3hzKSCKKuBS//xAAdEAACAgIDAQAAAAAAAAAAAAABAgADBBIQERMj/9oACAEBAAEFAjWWjq6wUgz0CsbNo2SVZhN9Z6p3kH6W8f/EABYRAAMAAAAAAAAAAAAAAAAAAAAQEv/aAAgBAwEBPwEp/wD/xAAWEQEBAQAAAAAAAAAAAAAAAAAAERD/2gAIAQIBAT8BRM//xAAfEAACAQMFAQAAAAAAAAAAAAAAASEREmECAxAiMUH/2gAIAQEABj8Clz8qXo7SxplENWeZEYJ2jQLj/8QAHBABAAICAwEAAAAAAAAAAAAAAQARITFBUWGR/9oACAEBAAE/IVrvEMqg1TTxBrv2TKjyIqNsSOSqKS3UzXofWLpzLe4gd4m58uLP/9oADAMBAAIAAwAAABCEz4z/xAAYEQADAQEAAAAAAAAAAAAAAAAAAVERIf/aAAgBAwEBPxBDSmnIf//EABcRAQEBAQAAAAAAAAAAAAAAAAABESH/2gAIAQIBAT8Qtrbqsf/EAB8QAQADAAIBBQAAAAAAAAAAAAEAESFBYTFRccHh8P/aAAgBAQABPxA4xJYaBwp3FEHtt8JZZutkgy1d50QX7gQwAG6wUlhfhFC0alnCEGdV1dnvNNuVFNgwR5UetxVwFU7uINDk/9k='); background-size: cover; display: block;"
3228 ></span>
3229 <img
3230 class="gatsby-resp-image-image"
3231 alt="lift"
3232 title="lift"
3233 src="/static/327df739a0121ee18eeac70a49ca184c/6aca1/lift.jpg"
3234 srcset="/static/327df739a0121ee18eeac70a49ca184c/d2f63/lift.jpg 163w,
3235 /static/327df739a0121ee18eeac70a49ca184c/c989d/lift.jpg 325w,
3236 /static/327df739a0121ee18eeac70a49ca184c/6aca1/lift.jpg 650w,
3237 /static/327df739a0121ee18eeac70a49ca184c/7c09c/lift.jpg 975w,
3238 /static/327df739a0121ee18eeac70a49ca184c/01ab0/lift.jpg 1300w,
3239 /static/327df739a0121ee18eeac70a49ca184c/ac99c/lift.jpg 1536w"
3240 sizes="(max-width: 650px) 100vw, 650px"
3241 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3242 loading="lazy"
3243 />
3244 </span></p>
3245 <p><span
3246 class="gatsby-resp-image-wrapper"
3247 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3248 >
3249 <span
3250 class="gatsby-resp-image-background-image"
3251 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEA//EABUBAQEAAAAAAAAAAAAAAAAAAAIB/9oADAMBAAIQAxAAAAGfOlggYN//xAAZEAEAAwEBAAAAAAAAAAAAAAABAAIDESL/2gAIAQEAAQUC18w6w2ajm2hXgUn/xAAVEQEBAAAAAAAAAAAAAAAAAAAAIf/aAAgBAwEBPwGq/8QAFxEBAAMAAAAAAAAAAAAAAAAAAAERIf/aAAgBAgEBPwHFQ//EABwQAAICAgMAAAAAAAAAAAAAAAABAhEhMRAiYf/aAAgBAQAGPwLOy0dnFP0uW+MpM//EABsQAQACAwEBAAAAAAAAAAAAAAEAESFBUWEx/9oACAEBAAE/IWPZ+xtc0+wyclLtxnqYwi1VZ8Xk/9oADAMBAAIAAwAAABDTP//EABcRAAMBAAAAAAAAAAAAAAAAAAEQITH/2gAIAQMBAT8QNYn/xAAXEQEAAwAAAAAAAAAAAAAAAAAAASFh/9oACAECAQE/EIo0f//EAB4QAQEAAQQDAQAAAAAAAAAAAAERACExQVFhcYHx/9oACAEBAAE/EKmlixanrjbLIe5kkPmpkjgsqh4evzHCyp4IGhOMtMiGmyTIewCC9DP/2Q=='); background-size: cover; display: block;"
3252 ></span>
3253 <img
3254 class="gatsby-resp-image-image"
3255 alt="loaded"
3256 title="loaded"
3257 src="/static/f7fe5f5008054dc957530ffb0ca92ad9/6aca1/loaded.jpg"
3258 srcset="/static/f7fe5f5008054dc957530ffb0ca92ad9/d2f63/loaded.jpg 163w,
3259 /static/f7fe5f5008054dc957530ffb0ca92ad9/c989d/loaded.jpg 325w,
3260 /static/f7fe5f5008054dc957530ffb0ca92ad9/6aca1/loaded.jpg 650w,
3261 /static/f7fe5f5008054dc957530ffb0ca92ad9/7c09c/loaded.jpg 975w,
3262 /static/f7fe5f5008054dc957530ffb0ca92ad9/01ab0/loaded.jpg 1300w,
3263 /static/f7fe5f5008054dc957530ffb0ca92ad9/e1596/loaded.jpg 2048w"
3264 sizes="(max-width: 650px) 100vw, 650px"
3265 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3266 loading="lazy"
3267 />
3268 </span></p>
3269 <p>As you can see, I've hit a pretty big jackpot on the expansion card front. I'll walk through each card individually in a bit.</p>
3270 <p>Here's a bare-bones look at the motherboard after removing all the expansion cards.</p>
3271 <p><span
3272 class="gatsby-resp-image-wrapper"
3273 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3274 >
3275 <span
3276 class="gatsby-resp-image-background-image"
3277 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAQFAQL/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgD/2gAMAwEAAhADEAAAAfEGlFDuDMnEQ6SZNf/EAB4QAAEEAgMBAAAAAAAAAAAAAAEAAgMSERMEITEz/9oACAEBAAEFApbFCR9oe2SDCb7xvm+0h0IhZIW6S8j3B3//xAAXEQADAQAAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/AXcP/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPwFXT//EAB8QAAEDBAMBAAAAAAAAAAAAAAABAhEQEiExUWFxgf/aAAgBAQAGPwJzkcqdG1Mj+afTRNufTCRSLjZ//8QAGxABAAIDAQEAAAAAAAAAAAAAAQARMUFRIZH/2gAIAQEAAT8hHVyKg39mfZbys+0hXmJz6hunnGYbsm4MopVgZc8YP7avkEBpP//aAAwDAQACAAMAAAAQU8oA/8QAGBEBAQEBAQAAAAAAAAAAAAAAAQAhEUH/2gAIAQMBAT8QfI0sgnl//8QAGBEAAgMAAAAAAAAAAAAAAAAAAAEQESH/2gAIAQIBAT8QSNLn/8QAGxABAAMBAQEBAAAAAAAAAAAAAQARITFRgdH/2gAIAQEAAT8QtInF+ThWjF1ACdhoViJ64V7DZ4u2XKHar8yJTW4AZKzjWwRPjFaE6NEURgFhhcKqfkfGFXhP/9k='); background-size: cover; display: block;"
3278 ></span>
3279 <img
3280 class="gatsby-resp-image-image"
3281 alt="Apple IIe top open"
3282 title="Apple IIe top open"
3283 src="/static/5ca83fb901310e0d92734cefb8154e25/6aca1/topdown.jpg"
3284 srcset="/static/5ca83fb901310e0d92734cefb8154e25/d2f63/topdown.jpg 163w,
3285 /static/5ca83fb901310e0d92734cefb8154e25/c989d/topdown.jpg 325w,
3286 /static/5ca83fb901310e0d92734cefb8154e25/6aca1/topdown.jpg 650w,
3287 /static/5ca83fb901310e0d92734cefb8154e25/7c09c/topdown.jpg 975w,
3288 /static/5ca83fb901310e0d92734cefb8154e25/01ab0/topdown.jpg 1300w,
3289 /static/5ca83fb901310e0d92734cefb8154e25/ac99c/topdown.jpg 1536w"
3290 sizes="(max-width: 650px) 100vw, 650px"
3291 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3292 loading="lazy"
3293 />
3294 </span></p>
3295 <p>And a close-up of the seven (7!) expansion slots, not including the extra one for adding more memory or 80-column mode.</p>
3296 <p><span
3297 class="gatsby-resp-image-wrapper"
3298 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3299 >
3300 <span
3301 class="gatsby-resp-image-background-image"
3302 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQT/xAAVAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB5Js0ulwf/8QAGBAAAwEBAAAAAAAAAAAAAAAAAAECEhH/2gAIAQEAAQUC1A6kVVxQYIl5/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8Bqv/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABoQAAICAwAAAAAAAAAAAAAAAAAxARAiMmH/2gAIAQEABj8ChnDFXsf/xAAcEAACAgMBAQAAAAAAAAAAAAAAAREhMUFxUWH/2gAIAQEAAT8hjdIbo0FwIolfwnMEnMWWTwJKqR4j/9oADAMBAAIAAwAAABB87//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QD//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/EIf/xAAfEAACAgIBBQAAAAAAAAAAAAABEQAxIUFRYXGR4fD/2gAIAQEAAT8QI2SIuzYuENh0MLSvzAmIjCLo+5igKKBGydkwjuGAHqvcfpQsGJ//2Q=='); background-size: cover; display: block;"
3303 ></span>
3304 <img
3305 class="gatsby-resp-image-image"
3306 alt="Apple IIe slots"
3307 title="Apple IIe slots"
3308 src="/static/15c5b681c6a5e6c235d5c3a7708a1dfd/6aca1/slots.jpg"
3309 srcset="/static/15c5b681c6a5e6c235d5c3a7708a1dfd/d2f63/slots.jpg 163w,
3310 /static/15c5b681c6a5e6c235d5c3a7708a1dfd/c989d/slots.jpg 325w,
3311 /static/15c5b681c6a5e6c235d5c3a7708a1dfd/6aca1/slots.jpg 650w,
3312 /static/15c5b681c6a5e6c235d5c3a7708a1dfd/7c09c/slots.jpg 975w,
3313 /static/15c5b681c6a5e6c235d5c3a7708a1dfd/01ab0/slots.jpg 1300w,
3314 /static/15c5b681c6a5e6c235d5c3a7708a1dfd/e1596/slots.jpg 2048w"
3315 sizes="(max-width: 650px) 100vw, 650px"
3316 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3317 loading="lazy"
3318 />
3319 </span></p>
3320 <p>This again reminds of the recent discussions on <a href="https://atp.fm">Accidental Tech Podcast</a> and other podcasts about the new Mac Pro and its expansion slots. There was a lot of fun discussion about what John Siracusa was going to put into his long-awaited Mac Pro's expansion slots.</p>
3321 <p>But, in modern computers, I haven't seen much that's really that interesting as far as expansion slots go. Mostly, I've heard about video cards and more storage. Otherwise, your computer mostly has everything it needs for the majority of use-cases.</p>
3322 <p>Which is completely the opposite for the Apple II. </p>
3323 <p>These expansion slots in Apple II computers CHANGED your computer. Transmogrified it into something altogether new and exciting. Want to print something? Get a card for it. Go on the.. ARPANet? Get a modem card. Need to save a program on something other than tape cassette recorder (which itself is crazy and I want to try)? Better get a floppy driver card!</p>
3324 <p>Even the back of the Apple IIe shows the potential of this machine to be utterly transformed by each owner. These slots are yours for the shaping, dear computer user.</p>
3325 <p><span
3326 class="gatsby-resp-image-wrapper"
3327 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3328 >
3329 <span
3330 class="gatsby-resp-image-background-image"
3331 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAQP/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAFblW3O0CoI/8QAGhAAAwADAQAAAAAAAAAAAAAAAAECAxESIf/aAAgBAQABBQJ5q10yFVLiJF4K9H//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPwFH/8QAGRAAAgMBAAAAAAAAAAAAAAAAAAEDITEQ/9oACAEBAAY/AsXKKjRiMP/EABsQAAMAAwEBAAAAAAAAAAAAAAABESFhoTFR/9oACAEBAAE/IWI5jdmK6LXJX0+G7yJd5iEh/9oADAMBAAIAAwAAABAjz//EABURAQEAAAAAAAAAAAAAAAAAABAh/9oACAEDAQE/EKf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQIBAT8QyKf/xAAdEAEAAgEFAQAAAAAAAAAAAAABABEhMUFRYZGh/9oACAEBAAE/EEmDeKXusSUaxdh+MdsFQF06SpkdVj3aEmY7BKOCVMA4HE//2Q=='); background-size: cover; display: block;"
3332 ></span>
3333 <img
3334 class="gatsby-resp-image-image"
3335 alt="Back of Apple IIe"
3336 title="Back of Apple IIe"
3337 src="/static/7e6125158b6d97901b7241bed755f2bd/6aca1/back.jpg"
3338 srcset="/static/7e6125158b6d97901b7241bed755f2bd/d2f63/back.jpg 163w,
3339 /static/7e6125158b6d97901b7241bed755f2bd/c989d/back.jpg 325w,
3340 /static/7e6125158b6d97901b7241bed755f2bd/6aca1/back.jpg 650w,
3341 /static/7e6125158b6d97901b7241bed755f2bd/7c09c/back.jpg 975w,
3342 /static/7e6125158b6d97901b7241bed755f2bd/01ab0/back.jpg 1300w,
3343 /static/7e6125158b6d97901b7241bed755f2bd/e1596/back.jpg 2048w"
3344 sizes="(max-width: 650px) 100vw, 650px"
3345 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3346 loading="lazy"
3347 />
3348 </span></p>
3349 <p>So, anyway, what the heck did I find inside my Apple IIe? Let's go through them one-by-one.</p>
3350 <h4>Extended 80-Column Text Card</h4>
3351 <p>The <a href="https://en.wikipedia.org/wiki/Apple_80-Column_Text_Card">Extended 80-Column Text Card</a> is quite literal: it gives you 80 columns of text instead of 40! Mine also provides extra RAM, bringing my Apple IIe's total RAM up to a whopping 128kB.</p>
3352 <p><span
3353 class="gatsby-resp-image-wrapper"
3354 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3355 >
3356 <span
3357 class="gatsby-resp-image-background-image"
3358 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQBA//EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAGFVsvJOK//xAAaEAABBQEAAAAAAAAAAAAAAAABAAIDERIi/9oACAEBAAEFAqxGHuW5AmjmqRBB/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8BV//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAECAQE/AUf/xAAbEAABBAMAAAAAAAAAAAAAAAABABARIRIiMf/aAAgBAQAGPwLLpLammtRK/8QAGhAAAwEBAQEAAAAAAAAAAAAAAAERIUExcf/aAAgBAQABPyFPNGdqo47k7gqbVuujGs+IWnHjQ1cD/9oADAMBAAIAAwAAABCjz//EABYRAQEBAAAAAAAAAAAAAAAAAAARAf/aAAgBAwEBPxC6t//EABYRAQEBAAAAAAAAAAAAAAAAAAARIf/aAAgBAgEBPxDEP//EABsQAQEAAgMBAAAAAAAAAAAAAAERACExQVGR/9oACAEBAAE/EDyobGA4l93l+ByhDO5MmBNAMfc34V0iExUHEUb068wzIqa7z//Z'); background-size: cover; display: block;"
3359 ></span>
3360 <img
3361 class="gatsby-resp-image-image"
3362 alt="80 Column card"
3363 title="80 Column card"
3364 src="/static/81fc4256ab04da82e776a4916fb04021/6aca1/80col.jpg"
3365 srcset="/static/81fc4256ab04da82e776a4916fb04021/d2f63/80col.jpg 163w,
3366 /static/81fc4256ab04da82e776a4916fb04021/c989d/80col.jpg 325w,
3367 /static/81fc4256ab04da82e776a4916fb04021/6aca1/80col.jpg 650w,
3368 /static/81fc4256ab04da82e776a4916fb04021/7c09c/80col.jpg 975w,
3369 /static/81fc4256ab04da82e776a4916fb04021/01ab0/80col.jpg 1300w,
3370 /static/81fc4256ab04da82e776a4916fb04021/e1596/80col.jpg 2048w"
3371 sizes="(max-width: 650px) 100vw, 650px"
3372 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3373 loading="lazy"
3374 />
3375 </span></p>
3376 <p><span
3377 class="gatsby-resp-image-wrapper"
3378 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3379 >
3380 <span
3381 class="gatsby-resp-image-background-image"
3382 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAEDBQIE/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/9oADAMBAAIQAxAAAAHt56sO0kayKN1EoT//xAAdEAABBAMBAQAAAAAAAAAAAAAAAQIDBBESMyMy/9oACAEBAAEFArErmOjlduXOka+hc6RfZhFNUyf/xAAWEQEBAQAAAAAAAAAAAAAAAAAQEUH/2gAIAQMBAT8B0h//xAAVEQEBAAAAAAAAAAAAAAAAAAAQEf/aAAgBAgEBPwEp/8QAGxABAAMBAAMAAAAAAAAAAAAAAQAQEXECIUH/2gAIAQEABj8CAfkBd2jk8e0ch2vZNwr/xAAdEAACAgEFAAAAAAAAAAAAAAABEQAQUSExQXGB/9oACAEBAAE/IVMnBIfQcCkb0D0jXnNOAHsRKBHKr//aAAwDAQACAAMAAAAQ+8yN/8QAFxEBAAMAAAAAAAAAAAAAAAAAEAERMf/aAAgBAwEBPxCRqz//xAAXEQADAQAAAAAAAAAAAAAAAAABEDER/9oACAECAQE/EBFGL//EAB0QAQACAgMBAQAAAAAAAAAAAAEAESExEEFhcZH/2gAIAQEAAT8QfgLEDu9wrgba6xdfYiu4FV6OK9fJeHQ38ccOvisN+M1YoE/Y7YoMHqhqFciUACHH/9k='); background-size: cover; display: block;"
3383 ></span>
3384 <img
3385 class="gatsby-resp-image-image"
3386 alt="col card"
3387 title="col card"
3388 src="/static/35ac506f826bef780af538d3732c4f25/6aca1/eightycol.jpg"
3389 srcset="/static/35ac506f826bef780af538d3732c4f25/d2f63/eightycol.jpg 163w,
3390 /static/35ac506f826bef780af538d3732c4f25/c989d/eightycol.jpg 325w,
3391 /static/35ac506f826bef780af538d3732c4f25/6aca1/eightycol.jpg 650w,
3392 /static/35ac506f826bef780af538d3732c4f25/7c09c/eightycol.jpg 975w,
3393 /static/35ac506f826bef780af538d3732c4f25/01ab0/eightycol.jpg 1300w,
3394 /static/35ac506f826bef780af538d3732c4f25/ac99c/eightycol.jpg 1536w"
3395 sizes="(max-width: 650px) 100vw, 650px"
3396 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3397 loading="lazy"
3398 />
3399 </span></p>
3400 <p>How do you get into 80-column mode? Type <code class="language-text">PR#3</code> into the BASIC prompt. It kinda looks worse on this monitor, but I can already see the value for more complex programs.</p>
3401 <h4>Super Serial Card II</h4>
3402 <p>I am probably most excited about this card. The <a href="https://en.wikipedia.org/wiki/Apple_II_serial_cards">Super Serial Card II</a> can be used as a modem, a printer connection, and I have a pretty good suspicion that I'll be able to connect to it an Arduino or a Raspberry Pi for some fun.</p>
3403 <p><span
3404 class="gatsby-resp-image-wrapper"
3405 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3406 >
3407 <span
3408 class="gatsby-resp-image-background-image"
3409 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAQP/xAAWAQEBAQAAAAAAAAAAAAAAAAACAQD/2gAMAwEAAhADEAAAAW5byA105Eak6wpS4YRf/8QAHhAAAQQCAwEAAAAAAAAAAAAAAgABAwQREhATITP/2gAIAQEAAQUCsG4xhIW26sexjjiw+Io/oiFibrFiX//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAEDAQE/AWJP/8QAFREBAQAAAAAAAAAAAAAAAAAAEAH/2gAIAQIBAT8BIf/EABsQAAICAwEAAAAAAAAAAAAAAAEQAAIRITFR/9oACAEBAAY/AtanS618dVgwYC//xAAbEAEAAwADAQAAAAAAAAAAAAABABEhEEFRof/aAAgBAQABPyFwtVmkKN97YRdK9jTkPY74aw9n0RdlCbIv6N94/9oADAMBAAIAAwAAABA0GwH/xAAYEQADAQEAAAAAAAAAAAAAAAAAAREQIf/aAAgBAwEBPxCL0g5u5//EABgRAAIDAAAAAAAAAAAAAAAAAAEQESEx/9oACAECAQE/EBiKoX//xAAdEAEAAwEAAgMAAAAAAAAAAAABABExIUFRccHR/9oACAEBAAE/ECIgrKalA6PVzItHIAhan7jvEq3upvwSw565ECU18X4ZUJr1YlolHvTLuYvr9js//9k='); background-size: cover; display: block;"
3410 ></span>
3411 <img
3412 class="gatsby-resp-image-image"
3413 alt="Super Serial Card II"
3414 title="Super Serial Card II"
3415 src="/static/a4ba5625407f5479b5ae494069b786a8/6aca1/serial.jpg"
3416 srcset="/static/a4ba5625407f5479b5ae494069b786a8/d2f63/serial.jpg 163w,
3417 /static/a4ba5625407f5479b5ae494069b786a8/c989d/serial.jpg 325w,
3418 /static/a4ba5625407f5479b5ae494069b786a8/6aca1/serial.jpg 650w,
3419 /static/a4ba5625407f5479b5ae494069b786a8/7c09c/serial.jpg 975w,
3420 /static/a4ba5625407f5479b5ae494069b786a8/01ab0/serial.jpg 1300w,
3421 /static/a4ba5625407f5479b5ae494069b786a8/ac99c/serial.jpg 1536w"
3422 sizes="(max-width: 650px) 100vw, 650px"
3423 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3424 loading="lazy"
3425 />
3426 </span></p>
3427 <p><span
3428 class="gatsby-resp-image-wrapper"
3429 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3430 >
3431 <span
3432 class="gatsby-resp-image-background-image"
3433 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMFBAL/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAFTuk51pNAnBZVKmYUQP//EABsQAQEAAgMBAAAAAAAAAAAAAAECAxIAEBEi/9oACAEBAAEFAo9yTPolTzLm0IthDHRre30k1Yd//8QAFhEBAQEAAAAAAAAAAAAAAAAAABEQ/9oACAEDAQE/AciP/8QAFhEBAQEAAAAAAAAAAAAAAAAAEQAQ/9oACAECAQE/ASJz/8QAHRAAAgICAwEAAAAAAAAAAAAAAAECERIxICFBgf/aAAgBAQAGPwKFdNFPR4Yw2W7aLxiWyn84/wD/xAAcEAEAAwEAAwEAAAAAAAAAAAABABExIRBBkXH/2gAIAQEAAT8huNNZfqFypZe5GG/UcwB84ZA1gaRyVx8YbJndbRFRbPyGef/aAAwDAQACAAMAAAAQZN9M/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERcf/aAAgBAwEBPxCpMrNmz//EABcRAQEBAQAAAAAAAAAAAAAAAAEAERD/2gAIAQIBAT8QUljjb//EAB8QAQACAgICAwAAAAAAAAAAAAEAESExQVFhcYGRwf/aAAgBAQABPxBqKSJSwiamVcTha8b9xArZ2Hr3GjXkUr0vvVHZ88+IIoHxfyVluaUuoqXYaBoZqBPJmGMY70fU/9k='); background-size: cover; display: block;"
3434 ></span>
3435 <img
3436 class="gatsby-resp-image-image"
3437 alt="Super Serial Card II closeup"
3438 title="Super Serial Card II closeup"
3439 src="/static/68c8a050c8e970e5f90bd2aef0ff1473/6aca1/serial2.jpg"
3440 srcset="/static/68c8a050c8e970e5f90bd2aef0ff1473/d2f63/serial2.jpg 163w,
3441 /static/68c8a050c8e970e5f90bd2aef0ff1473/c989d/serial2.jpg 325w,
3442 /static/68c8a050c8e970e5f90bd2aef0ff1473/6aca1/serial2.jpg 650w,
3443 /static/68c8a050c8e970e5f90bd2aef0ff1473/7c09c/serial2.jpg 975w,
3444 /static/68c8a050c8e970e5f90bd2aef0ff1473/01ab0/serial2.jpg 1300w,
3445 /static/68c8a050c8e970e5f90bd2aef0ff1473/ac99c/serial2.jpg 1536w"
3446 sizes="(max-width: 650px) 100vw, 650px"
3447 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3448 loading="lazy"
3449 />
3450 </span></p>
3451 <h4>MicroModem IIe</h4>
3452 <p>It's a modem! With an external port that looks like a telephone jack. Some wizards at work told me that I probably cannot just plug this into a modern phone line and expect it to work, though. They said that phone lines don't really work the same way anymore. This is something I'm not quite clear on yet, but I did manage to find the <a href="https://apple2online.com/web_documents/hayes_micromodem_ii_owner__s_guide.pdf">Micromodel II Owner's Manual</a>, so there could be some fun to be had here.</p>
3453 <p><span
3454 class="gatsby-resp-image-wrapper"
3455 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3456 >
3457 <span
3458 class="gatsby-resp-image-background-image"
3459 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAIDBAX/xAAVAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABkeo8OgID/8QAGhAAAgMBAQAAAAAAAAAAAAAAAQIAAxQEEf/aAAgBAQABBQLUno6FiMHGQzKZVWUX/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGRABAQADAQAAAAAAAAAAAAAAABEBITJB/9oACAEBAAY/Apt6uHTpK//EABsQAAMAAwEBAAAAAAAAAAAAAAABESExUUGR/9oACAEBAAE/IcuOdDbaS+TwLYWdm3goYU3MzT//2gAMAwEAAgADAAAAEBcf/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARMf/aAAgBAwEBPxAXeRf/xAAXEQADAQAAAAAAAAAAAAAAAAAAAREh/9oACAECAQE/EGlMIf/EABoQAQEBAQEBAQAAAAAAAAAAAAERACFBgZH/2gAIAQEAAT8QRRQWol/dyxRexQ+67mEr45U7yYqaJTPQTuYsNdBN/9k='); background-size: cover; display: block;"
3460 ></span>
3461 <img
3462 class="gatsby-resp-image-image"
3463 alt="modem card"
3464 title="modem card"
3465 src="/static/0e5d74e10b2a0f9b0c074343be45c824/6aca1/modem.jpg"
3466 srcset="/static/0e5d74e10b2a0f9b0c074343be45c824/d2f63/modem.jpg 163w,
3467 /static/0e5d74e10b2a0f9b0c074343be45c824/c989d/modem.jpg 325w,
3468 /static/0e5d74e10b2a0f9b0c074343be45c824/6aca1/modem.jpg 650w,
3469 /static/0e5d74e10b2a0f9b0c074343be45c824/7c09c/modem.jpg 975w,
3470 /static/0e5d74e10b2a0f9b0c074343be45c824/01ab0/modem.jpg 1300w,
3471 /static/0e5d74e10b2a0f9b0c074343be45c824/e1596/modem.jpg 2048w"
3472 sizes="(max-width: 650px) 100vw, 650px"
3473 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3474 loading="lazy"
3475 />
3476 </span></p>
3477 <p><span
3478 class="gatsby-resp-image-wrapper"
3479 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3480 >
3481 <span
3482 class="gatsby-resp-image-background-image"
3483 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEA//EABYBAQEBAAAAAAAAAAAAAAAAAAEAA//aAAwDAQACEAMQAAABlsZc3YjG/8QAGhAAAgMBAQAAAAAAAAAAAAAAAgMAARQSIv/aAAgBAQABBQKuVnpGotyiHzctQzNP/8QAFREBAQAAAAAAAAAAAAAAAAAAACH/2gAIAQMBAT8BV//EABURAQEAAAAAAAAAAAAAAAAAAAAh/9oACAECAQE/AUf/xAAbEAACAgMBAAAAAAAAAAAAAAAAAREhAgMxEv/aAAgBAQAGPwKGvZD1nFiWkVR0/8QAHBAAAgICAwAAAAAAAAAAAAAAAREAITFRYXGB/9oACAEBAAE/IWR60S0IQEFriNhsYUAyLyEAuWqETdOp/9oADAMBAAIAAwAAABCs7//EABYRAQEBAAAAAAAAAAAAAAAAAAEAEf/aAAgBAwEBPxAEsn//xAAWEQEBAQAAAAAAAAAAAAAAAAABABH/2gAIAQIBAT8QXYn/xAAdEAEAAgICAwAAAAAAAAAAAAABABEhUTFBcYGR/9oACAEBAAE/EExJ6O1vMShJ737YihSIuPpE1de3KAFAV4eZR2isGJP/2Q=='); background-size: cover; display: block;"
3484 ></span>
3485 <img
3486 class="gatsby-resp-image-image"
3487 alt="modem card closeup"
3488 title="modem card closeup"
3489 src="/static/a01edf5e481b4174a9680dd837984dea/6aca1/modem2.jpg"
3490 srcset="/static/a01edf5e481b4174a9680dd837984dea/d2f63/modem2.jpg 163w,
3491 /static/a01edf5e481b4174a9680dd837984dea/c989d/modem2.jpg 325w,
3492 /static/a01edf5e481b4174a9680dd837984dea/6aca1/modem2.jpg 650w,
3493 /static/a01edf5e481b4174a9680dd837984dea/7c09c/modem2.jpg 975w,
3494 /static/a01edf5e481b4174a9680dd837984dea/01ab0/modem2.jpg 1300w,
3495 /static/a01edf5e481b4174a9680dd837984dea/e1596/modem2.jpg 2048w"
3496 sizes="(max-width: 650px) 100vw, 650px"
3497 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3498 loading="lazy"
3499 />
3500 </span></p>
3501 <h4>DuoDisk and Disk II Card</h4>
3502 <p>The <a href="https://en.wikipedia.org/wiki/Disk_II#DuoDisk">DuoDisk</a> is a combination drive with two 5 1/4-inch floppy drive bays next to each other. It looks nice when you sandwich it between your Apple II and its monitor.</p>
3503 <p><span
3504 class="gatsby-resp-image-wrapper"
3505 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3506 >
3507 <span
3508 class="gatsby-resp-image-background-image"
3509 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAQP/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAYOy1TLmBp0VqB0QZ//EABwQAQEAAgIDAAAAAAAAAAAAAAECAxEAEgQjQf/aAAgBAQABBQLHSnaxryLhxYXqYa2ht9ZvLwRPswPLCX//xAAYEQACAwAAAAAAAAAAAAAAAAAAEQIQEv/aAAgBAwEBPwFS1bP/xAAXEQADAQAAAAAAAAAAAAAAAAAAAREQ/9oACAECAQE/AashGf/EACAQAAIBAwQDAAAAAAAAAAAAAAABEQISIQMiMZFBYbH/2gAIAQEABj8C5MVEJJkr6TBvcMt0keRX0qfZy+zM9mEj/8QAHBABAAICAwEAAAAAAAAAAAAAAQAhETFBUYGh/9oACAEBAAE/IQd9wBH3NSttgXgb3ASoO8fUyogC6le35E5QMReZ9E5o9Q6AMdT/2gAMAwEAAgADAAAAECs7j//EABgRAQEBAQEAAAAAAAAAAAAAAAEAESEx/9oACAEDAQE/EFwjyy2SPl//xAAYEQEBAQEBAAAAAAAAAAAAAAABABFBUf/aAAgBAgEBPxBATttqPa//xAAcEAEAAgIDAQAAAAAAAAAAAAABABEhMVFxwdH/2gAIAQEAAT8QpAUQu3RW4XKIHBBxgC22rKC1wARfNy60WN3Cmz4WmuZiayqWva7Y0BRyD5MyNglhGgABcH0gojtT2OHFmw5t5n//2Q=='); background-size: cover; display: block;"
3510 ></span>
3511 <img
3512 class="gatsby-resp-image-image"
3513 alt="Apple IIe with floppy"
3514 title="Apple IIe with floppy"
3515 src="/static/5cc77f4287f8c875722285ff9d719c92/6aca1/floppymodule.jpg"
3516 srcset="/static/5cc77f4287f8c875722285ff9d719c92/d2f63/floppymodule.jpg 163w,
3517 /static/5cc77f4287f8c875722285ff9d719c92/c989d/floppymodule.jpg 325w,
3518 /static/5cc77f4287f8c875722285ff9d719c92/6aca1/floppymodule.jpg 650w,
3519 /static/5cc77f4287f8c875722285ff9d719c92/7c09c/floppymodule.jpg 975w,
3520 /static/5cc77f4287f8c875722285ff9d719c92/01ab0/floppymodule.jpg 1300w,
3521 /static/5cc77f4287f8c875722285ff9d719c92/ac99c/floppymodule.jpg 1536w"
3522 sizes="(max-width: 650px) 100vw, 650px"
3523 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3524 loading="lazy"
3525 />
3526 </span></p>
3527 <p>The card uses the same Disk II system famously designed by Woz. The <a href="https://en.wikipedia.org/wiki/Disk_II">Wikipedia</a> entry on the Disk II is fascinating and well-worth the quick read. Apparently, the Apple II was getting a lot of flak for not including a disk drive, instead relying on external cassette tape storage. Woz's solution was the Disk II system, a simpler design than the industry standards, proved incredibly successful, both financially and functionally. Per Wikipedia:</p>
3528 <blockquote>
3529 <p>Wozniak called the resultant Disk II system "my most incredible experience at Apple and the finest job I did", and credited it and VisiCalc with the Apple II's success.</p>
3530 </blockquote>
3531 <p><span
3532 class="gatsby-resp-image-wrapper"
3533 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3534 >
3535 <span
3536 class="gatsby-resp-image-background-image"
3537 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEAf/EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHGJfDYRhX/xAAbEAEAAgIDAAAAAAAAAAAAAAABAgQAAxESFP/aAAgBAQABBQKVgiwsxw2wRrcvl6hpz//EABURAQEAAAAAAAAAAAAAAAAAABAh/9oACAEDAQE/Aaf/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAZEAADAAMAAAAAAAAAAAAAAAAAETEBEiH/2gAIAQEABj8CSIUexzLKf//EABsQAAMAAgMAAAAAAAAAAAAAAAABIRFRcYGR/9oACAEBAAE/Ia19NgmZ9PIqzlvQmnZbRGp0j//aAAwDAQACAAMAAAAQxM//xAAXEQEAAwAAAAAAAAAAAAAAAAAAASFR/9oACAEDAQE/EI0p/8QAFREBAQAAAAAAAAAAAAAAAAAAACH/2gAIAQIBAT8Qiv/EABsQAQADAQADAAAAAAAAAAAAAAEAETEhQVFx/9oACAEBAAE/EECVFGqR3awEx2CNvgIxm+grMR2ALoz5LDSfSVP/2Q=='); background-size: cover; display: block;"
3538 ></span>
3539 <img
3540 class="gatsby-resp-image-image"
3541 alt="floppy card"
3542 title="floppy card"
3543 src="/static/36838def124428fea150870f5a9dbde3/6aca1/floppycard.jpg"
3544 srcset="/static/36838def124428fea150870f5a9dbde3/d2f63/floppycard.jpg 163w,
3545 /static/36838def124428fea150870f5a9dbde3/c989d/floppycard.jpg 325w,
3546 /static/36838def124428fea150870f5a9dbde3/6aca1/floppycard.jpg 650w,
3547 /static/36838def124428fea150870f5a9dbde3/7c09c/floppycard.jpg 975w,
3548 /static/36838def124428fea150870f5a9dbde3/01ab0/floppycard.jpg 1300w,
3549 /static/36838def124428fea150870f5a9dbde3/e1596/floppycard.jpg 2048w"
3550 sizes="(max-width: 650px) 100vw, 650px"
3551 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3552 loading="lazy"
3553 />
3554 </span></p>
3555 <p>If anyone's got any spare 5 1⁄4-inch floppies, let me know, because now I've got two whole slots for them (this is actually a serious inquiry, please <a href="https://twitter.com/whatrocks">tweet</a> at me!).</p>
3556 <h3>So, what are you going to do with your new old computer, Charlie?</h3>
3557 <p>I'm not sure. Here are some of my thoughts.</p>
3558 <h4>Serial port</h4>
3559 <p>As mentioned, I suspect that I'll be able to figure out how to use the Super Serial II card with an Arduino or Raspberry Pi.</p>
3560 <p>I recently found a project that uses Raspberry Pi in such a way that it accepts keyboard input from the Apple II and displays its output on the Apple monitor. Definitely want to try that.</p>
3561 <p>But I'm also eager to see if I can rig it up such that I can effectively SSH/remote into the Apple IIe from a laptop, using a Raspberry Pi as a bridge of some kind via the Super Serial II card. </p>
3562 <p>This project is definitely my top priority, because it seems odd and useful. I'd really like to be able to write programs for the Apple IIe and easily save them to GitHub. Being able to write them on my laptop and simply transfer them to the Apple for processing seems like a hilariously fun and distracting project to work on next.</p>
3563 <h4>Repairs</h4>
3564 <p>These are smaller efforts, which means they'll likely linger for a while.</p>
3565 <p><span
3566 class="gatsby-resp-image-wrapper"
3567 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3568 >
3569 <span
3570 class="gatsby-resp-image-background-image"
3571 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAwADAAAAAAAAAAAAAAAAAAMEAQIF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAFNO68ayUBOmSuXok5H/8QAGhAAAwEBAQEAAAAAAAAAAAAAAQIDEQASIv/aAAgBAQABBQIScGAKTnEEU3PvNPVHpgo5NC+2BQllk5M//8QAFhEBAQEAAAAAAAAAAAAAAAAAEAEh/9oACAEDAQE/ASaf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAERITFBUYH/2gAIAQEABj8Cb6mR0bfSFJdelGjOCCmWKWf/xAAbEAEBAQEAAwEAAAAAAAAAAAABEQAhMUFRof/aAAgBAQABPyFkHoTL2Iry6jPcmBgOIe8eFFdbjyQNPW8YxPuhYfrmAkLN0lHKV20/M2Ud/9oADAMBAAIAAwAAABBk+87/xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAIAQMBAT8QzERqK//EABgRAAMBAQAAAAAAAAAAAAAAAAABERAh/9oACAECAQE/EKVD4s//xAAeEAEBAQEAAgIDAAAAAAAAAAABEQAhMVFBYXGRsf/aAAgBAQABPxAbqQHUtC5k0wGRSHNKApAZAh/RyBMCgsHhb4xTWcgBf3pCkFVS/OoiIkT36mRFcnZT1oOBx4c/Fwj7QHufG0i/J1uEYlQ9b//Z'); background-size: cover; display: block;"
3572 ></span>
3573 <img
3574 class="gatsby-resp-image-image"
3575 alt="keyboard"
3576 title="keyboard"
3577 src="/static/474d8f4a0061a7b5b03adc4a8b5e1b51/6aca1/keyboard.jpg"
3578 srcset="/static/474d8f4a0061a7b5b03adc4a8b5e1b51/d2f63/keyboard.jpg 163w,
3579 /static/474d8f4a0061a7b5b03adc4a8b5e1b51/c989d/keyboard.jpg 325w,
3580 /static/474d8f4a0061a7b5b03adc4a8b5e1b51/6aca1/keyboard.jpg 650w,
3581 /static/474d8f4a0061a7b5b03adc4a8b5e1b51/7c09c/keyboard.jpg 975w,
3582 /static/474d8f4a0061a7b5b03adc4a8b5e1b51/01ab0/keyboard.jpg 1300w,
3583 /static/474d8f4a0061a7b5b03adc4a8b5e1b51/ac99c/keyboard.jpg 1536w"
3584 sizes="(max-width: 650px) 100vw, 650px"
3585 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3586 loading="lazy"
3587 />
3588 </span></p>
3589 <ul>
3590 <li>Find replacement keys for my missing keys. I hope this doesn't mean buying an entire <em>other</em> Apple IIe. Or do I?</li>
3591 <li>"Retro-brite" and deep clean - a la 8 Bit Guy - to make the case look brand new</li>
3592 </ul>
3593 <h4>Games</h4>
3594 <p>I currently have zero software for the Apple IIe. None. Zilch. Which means I have no games. I know that, back in the 1980s, magazines used to print out source code for games, and kids would spend hours plugging them into their Apple IIs or Commodores, praying that they hadn't made a syntax error. Once their games were up and running, this proved a great chance for the curious ones to start messing around with the source code, tweaking it, and eventually making their own games. I'm sure that many of these games and magazines are now scanned and available online. I'll definitely be checking those out.</p>
3595 <p>I'd also be very open to buying some classic Apple II games on eBay. I'd love to hear of favorites or any suggestions.</p>
3596 <h4>Storage</h4>
3597 <p>Given that I immediately lose everything anytime the power goes out (or I simply turn off the computer), these two projects seem important:</p>
3598 <ul>
3599 <li>Get a tape recorder and figure out how to save a program to tape, and then rewind / reload it</li>
3600 <li>Find some blank floppies and do the same</li>
3601 </ul>
3602 <h4>Programming</h4>
3603 <p>Other than AppleSoft BASIC (which was written by Microsoft! For Apple!!), which is burned into a ROM chip on the Apple II, there's also some sort of built-in assembler that you can access by typing this into the BASIC prompt:</p>
3604 <div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">CALL-151</code></pre></div>
3605 <p>I believe this is where I'll be able to do some of the more Commodore 64-like peeking and poking directly at memory. I have a feeling there's a lot of exploring (and fun) to be done here. I need to read up more on this.</p>
3606 <h3>One more thing</h3>
3607 <p>This computer represents to me the lost era of computer as appliance. I'm talking about "bicycle for the mind" type-of-stuff. When you still sat down and said, "I'm going to computer now." Or, as in my childhood, "May I please go on the computer now, Mom, PLEASE?"</p>
3608 <p>We're much closer to cyborgs now, with our phones and watches and speakers and other do-dads. Computers are part of us. They're attached to us, they're in our pockets, they're in our bags, they're next to us when we go to sleep. You can't escape them, and as a result, you're no longer able to make an active choice about whether or not to use them. The best we've got is Screen Time warnings, a penal code to make us use them less.</p>
3609 <p>That's why this Apple IIe is such an important machine to me. It's something I can actively choose to dive into and explore. It's the same thing I feel when I really get into a novel. I'm in another world.</p>
3610 <p>And here a few more close-ups of the computer as a reward for making it this far.</p>
3611 <p><span
3612 class="gatsby-resp-image-wrapper"
3613 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3614 >
3615 <span
3616 class="gatsby-resp-image-background-image"
3617 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAQL/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAdlqhi3nJh8dcY4wP//EABwQAAIBBQEAAAAAAAAAAAAAAAECMgADESIxQf/aAAgBAQABBQI8tplrow5itPIxWnl4o2fv/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFREBAQAAAAAAAAAAAAAAAAAAASD/2gAIAQIBAT8BI//EABkQAAIDAQAAAAAAAAAAAAAAAAEQAAMhAv/aAAgBAQAGPwIzjUZWdRlbC//EAB4QAAICAgIDAAAAAAAAAAAAAAABESFBsVFxMZGh/9oACAEBAAE/IcLgawnt3OBkR8hJQOzuzUP6BqThmofl0K62az//2gAMAwEAAgADAAAAENAijv/EABURAQEAAAAAAAAAAAAAAAAAAAEg/9oACAEDAQE/EGP/xAAVEQEBAAAAAAAAAAAAAAAAAAAQAf/aAAgBAgEBPxAQ/8QAHRABAAMAAgMBAAAAAAAAAAAAAQARITGxcYGRof/aAAgBAQABPxC/Mu9V4iCblTDht0GkSKY36nIA4rb+xrpXE+j6gNYu1fc6EIg8KIAS6wLcnSn/2Q=='); background-size: cover; display: block;"
3618 ></span>
3619 <img
3620 class="gatsby-resp-image-image"
3621 alt="Apple IIe Logo"
3622 title="Apple IIe Logo"
3623 src="/static/ddeeecfdae735533db7571d7e8342705/6aca1/apple.jpg"
3624 srcset="/static/ddeeecfdae735533db7571d7e8342705/d2f63/apple.jpg 163w,
3625 /static/ddeeecfdae735533db7571d7e8342705/c989d/apple.jpg 325w,
3626 /static/ddeeecfdae735533db7571d7e8342705/6aca1/apple.jpg 650w,
3627 /static/ddeeecfdae735533db7571d7e8342705/7c09c/apple.jpg 975w,
3628 /static/ddeeecfdae735533db7571d7e8342705/01ab0/apple.jpg 1300w,
3629 /static/ddeeecfdae735533db7571d7e8342705/ac99c/apple.jpg 1536w"
3630 sizes="(max-width: 650px) 100vw, 650px"
3631 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3632 loading="lazy"
3633 />
3634 </span></p>
3635 <p><span
3636 class="gatsby-resp-image-wrapper"
3637 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3638 >
3639 <span
3640 class="gatsby-resp-image-background-image"
3641 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBP/EABUBAQEAAAAAAAAAAAAAAAAAAAAC/9oADAMBAAIQAxAAAAHCxWKzEwdILU1JB//EABsQAAICAwEAAAAAAAAAAAAAAAACAQMREyIg/9oACAEBAAEFAkvcmx3O5K6JG5JZoNrKbGM+P//EABURAQEAAAAAAAAAAAAAAAAAABEg/9oACAEDAQE/AWP/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAdEAACAQQDAAAAAAAAAAAAAAAAASEQETFBEiBh/9oACAEBAAY/Apk0ZSNFuOPaQyX1/8QAHBAAAwADAAMAAAAAAAAAAAAAAAERITFhcZHh/9oACAEBAAE/Idpky02fLieZ8EIbfYq6PiKNMUSWvHmGuteRu3aPTE8iP//aAAwDAQACAAMAAAAQgydM/8QAGBEAAwEBAAAAAAAAAAAAAAAAAAERIVH/2gAIAQMBAT8QWNZV0pEf/8QAGBEAAwEBAAAAAAAAAAAAAAAAAAERECH/2gAIAQIBAT8QaV4Qmf/EAB0QAQACAQUBAAAAAAAAAAAAAAEAESExQVFhcYH/2gAIAQEAAT8QMW2MSzkmFWg2FGn7AziPDAVMNOrP2sS/YgGoWc9eRaWGuaYZtLucBt7LbKG1ViXol7qEeqI2XaJz7P/Z'); background-size: cover; display: block;"
3642 ></span>
3643 <img
3644 class="gatsby-resp-image-image"
3645 alt="Motherboard"
3646 title="Motherboard"
3647 src="/static/1ac4332a25a559be39a6d6ee535c423c/6aca1/chips.jpg"
3648 srcset="/static/1ac4332a25a559be39a6d6ee535c423c/d2f63/chips.jpg 163w,
3649 /static/1ac4332a25a559be39a6d6ee535c423c/c989d/chips.jpg 325w,
3650 /static/1ac4332a25a559be39a6d6ee535c423c/6aca1/chips.jpg 650w,
3651 /static/1ac4332a25a559be39a6d6ee535c423c/7c09c/chips.jpg 975w,
3652 /static/1ac4332a25a559be39a6d6ee535c423c/01ab0/chips.jpg 1300w,
3653 /static/1ac4332a25a559be39a6d6ee535c423c/ac99c/chips.jpg 1536w"
3654 sizes="(max-width: 650px) 100vw, 650px"
3655 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3656 loading="lazy"
3657 />
3658 </span></p>
3659 <p><span
3660 class="gatsby-resp-image-wrapper"
3661 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3662 >
3663 <span
3664 class="gatsby-resp-image-background-image"
3665 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMBBAX/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAUypOd3jOE//xAAbEAEAAgIDAAAAAAAAAAAAAAABAAIDIRESE//aAAgBAQABBQLnfWpPTFHYrWGUn//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAEDAQE/Aar/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPwFH/8QAGRAAAwADAAAAAAAAAAAAAAAAAAEhETGh/9oACAEBAAY/At8M1lZSFR//xAAbEAEAAwADAQAAAAAAAAAAAAABABEhMVFhgf/aAAgBAQABPyEDqvjJYt8LlGMJmErzEg+7O+og5H0uf//aAAwDAQACAAMAAAAQiP8A/8QAFxEAAwEAAAAAAAAAAAAAAAAAARARMf/aAAgBAwEBPxAxq//EABYRAQEBAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPxANj//EAB0QAQACAgIDAAAAAAAAAAAAAAEAESExQXFRkbH/2gAIAQEAAT8QYhECnZ76hi4XAHy4KXbQvKNR31tbydRaA9otxZS8gL3P/9k='); background-size: cover; display: block;"
3666 ></span>
3667 <img
3668 class="gatsby-resp-image-image"
3669 alt="chips"
3670 title="chips"
3671 src="/static/3e75ae11d6e3bed6e0110e893614c605/6aca1/chips2.jpg"
3672 srcset="/static/3e75ae11d6e3bed6e0110e893614c605/d2f63/chips2.jpg 163w,
3673 /static/3e75ae11d6e3bed6e0110e893614c605/c989d/chips2.jpg 325w,
3674 /static/3e75ae11d6e3bed6e0110e893614c605/6aca1/chips2.jpg 650w,
3675 /static/3e75ae11d6e3bed6e0110e893614c605/7c09c/chips2.jpg 975w,
3676 /static/3e75ae11d6e3bed6e0110e893614c605/01ab0/chips2.jpg 1300w,
3677 /static/3e75ae11d6e3bed6e0110e893614c605/e1596/chips2.jpg 2048w"
3678 sizes="(max-width: 650px) 100vw, 650px"
3679 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3680 loading="lazy"
3681 />
3682 </span></p>
3683 <p><span
3684 class="gatsby-resp-image-wrapper"
3685 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3686 >
3687 <span
3688 class="gatsby-resp-image-background-image"
3689 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEAf/EABYBAQEBAAAAAAAAAAAAAAAAAAACA//aAAwDAQACEAMQAAABlp2nK2ED/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAECAxESIjH/2gAIAQEAAQUC6Km00Kqeyjg9P//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABsQAAIBBQAAAAAAAAAAAAAAAAABMRAhMkKR/9oACAEBAAY/ApfDZkmVq//EABwQAAMAAgMBAAAAAAAAAAAAAAABETFRIXGxwf/aAAgBAQABPyGv8y5t4dGPMdiFtHehVzwWVR//2gAMAwEAAgADAAAAEO8//8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQMBAT8QJ//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAECAQE/EEf/xAAcEAEBAAICAwAAAAAAAAAAAAABEQAhkbExUXH/2gAIAQEAAT8Qu7DAtZjZJv7hFtCrHs4wBVDIs4wGBv0DrLohuec//9k='); background-size: cover; display: block;"
3690 ></span>
3691 <img
3692 class="gatsby-resp-image-image"
3693 alt="Double Apple Logo"
3694 title="Double Apple Logo"
3695 src="/static/897f92f522ae024f5885a11e7d7cf7c4/6aca1/doubleapple.jpg"
3696 srcset="/static/897f92f522ae024f5885a11e7d7cf7c4/d2f63/doubleapple.jpg 163w,
3697 /static/897f92f522ae024f5885a11e7d7cf7c4/c989d/doubleapple.jpg 325w,
3698 /static/897f92f522ae024f5885a11e7d7cf7c4/6aca1/doubleapple.jpg 650w,
3699 /static/897f92f522ae024f5885a11e7d7cf7c4/7c09c/doubleapple.jpg 975w,
3700 /static/897f92f522ae024f5885a11e7d7cf7c4/01ab0/doubleapple.jpg 1300w,
3701 /static/897f92f522ae024f5885a11e7d7cf7c4/e1596/doubleapple.jpg 2048w"
3702 sizes="(max-width: 650px) 100vw, 650px"
3703 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3704 loading="lazy"
3705 />
3706 </span></p>
3707 <p><span
3708 class="gatsby-resp-image-wrapper"
3709 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3710 >
3711 <span
3712 class="gatsby-resp-image-background-image"
3713 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAQBAgP/xAAVAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABgomth5Th4zVR4Bf/xAAfEAACAgIBBQAAAAAAAAAAAAAAAgEDERMSFCEiMUH/2gAIAQEAAQUCos4NZK2N1SwVp3wayW1kv45k9nyT/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEQ/9oACAEDAQE/Acqv/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAwABBAMAAAAAAAAAAAAAAAERMRIgITJCUXH/2gAIAQEABj8C9or1JIis+HORdTxMVss2/wD/xAAcEAEAAgMBAQEAAAAAAAAAAAABABEhMUFRYYH/2gAIAQEAAT8harbyfMQVKYtBRCGbDkVXXTEK4MRZQLWKi7ep4H5H1mLpyYM//9oADAMBAAIAAwAAABCv/Mz/xAAYEQADAQEAAAAAAAAAAAAAAAAAAREQIf/aAAgBAwEBPxBPkZXmj//EABgRAAMBAQAAAAAAAAAAAAAAAAABERAh/9oACAECAQE/EHx1ERM//8QAHxABAAIBBAMBAAAAAAAAAAAAAQAhETFBUYFhcaGR/9oACAEBAAE/EHmSBV1ez7h9iChcY78ymetR9YTwvQi3QLNDj0c9xmXZ0Fr6QbQju/HUGmQX6mW8A3lt4gBXtGbaWE0BpP/Z'); background-size: cover; display: block;"
3714 ></span>
3715 <img
3716 class="gatsby-resp-image-image"
3717 alt="memory"
3718 title="memory"
3719 src="/static/eb0b872444e58dcdd1b61ac711cac061/6aca1/memory.jpg"
3720 srcset="/static/eb0b872444e58dcdd1b61ac711cac061/d2f63/memory.jpg 163w,
3721 /static/eb0b872444e58dcdd1b61ac711cac061/c989d/memory.jpg 325w,
3722 /static/eb0b872444e58dcdd1b61ac711cac061/6aca1/memory.jpg 650w,
3723 /static/eb0b872444e58dcdd1b61ac711cac061/7c09c/memory.jpg 975w,
3724 /static/eb0b872444e58dcdd1b61ac711cac061/01ab0/memory.jpg 1300w,
3725 /static/eb0b872444e58dcdd1b61ac711cac061/ac99c/memory.jpg 1536w"
3726 sizes="(max-width: 650px) 100vw, 650px"
3727 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3728 loading="lazy"
3729 />
3730 </span></p>
3731 <h4>Footnotes</h4>
3732 <ol>
3733 <li>For the uninitiated, I suggest starting with Part 1 of The 8-Bit Guy's masterful two series: <a href="https://www.youtube.com/watch?v=A_vpfBJZ7JI">Restoration - The Worst VIC-20 I've ever seen - Part 1</a>. I don't know why I like watching this man clean and restore old computers so much, but there it is - I just do.</li>
3734 </ol></content:encoded></item><item><title><![CDATA[Mindstorms]]></title><description><![CDATA[Mindstorms by Seymour Papert is a book written in 1980 about how children can learn with computers - and learn to fall in love with learning…]]></description><link>https://www.charlieharrington.com/mindstorms</link><guid isPermaLink="false">https://www.charlieharrington.com/mindstorms</guid><pubDate>Sun, 03 May 2020 00:00:00 GMT</pubDate><content:encoded><p><a href="https://www.amazon.com/gp/product/0465046746/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0465046746&#x26;linkId=2949aefc36d4bd9d9f632170d2ac23de">Mindstorms</a> by Seymour Papert is a book written in 1980 about how children can learn with computers - and learn to fall in love with learning along the way.</p>
3735 <p>I read <a href="https://www.amazon.com/gp/product/0465046746/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0465046746&#x26;linkId=2949aefc36d4bd9d9f632170d2ac23de">Mindstorms</a>, and fell in love with the book. My own mind was besieged, stormed, and ultimately broken - only to be reforged anew like Andúril from the shards of Narsil (sorry, I'm re-reading Lord of the Rings right now). This post, after this short-I-promise expository intro, contains my book notes.</p>
3736 <p>You may have heard of Papert's LOGO programming language before, which issues commands to an adorable round robot called a Turtle. Papert designed LOGO and the Turtle in the late 1960s to help children learn how to learn with computers. Here's a photo of Papert and his robotic operating buddy:</p>
3737 <p><span
3738 class="gatsby-resp-image-wrapper"
3739 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; "
3740 >
3741 <a
3742 class="gatsby-resp-image-link"
3743 href="/static/6abfec0f92eaf2f9ebb7ef9d2fd262e4/b4294/papert.jpg"
3744 style="display: block"
3745 target="_blank"
3746 rel="noopener"
3747 >
3748 <span
3749 class="gatsby-resp-image-background-image"
3750 style="padding-bottom: 138.03680981595093%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAcABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMFBAL/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGmt2M0DwXLt8AND//EABwQAAICAwEBAAAAAAAAAAAAAAECAAMREiIQIf/aAAgBAQABBQK3iDqAS9dq6dg0duBZ2v1Sozjz/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHBAAAQQDAQAAAAAAAAAAAAAAEQABECESQVGh/9oACAEBAAY/AjqXZPkLi2viPiKIn//EABsQAQEBAQEAAwAAAAAAAAAAAAEAEUFRITFx/9oACAEBAAE/IVhppUl9vm7HjflJhZMdbhvoDXxPLGPknosbF//aAAwDAQACAAMAAAAQwwkA/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAHRABAAMBAAIDAAAAAAAAAAAAAQARITFRcUFhkf/aAAgBAQABPxDQAHb+NiFAGVWj9wZ7+JXBqtOCMDjVArmbcBUb1JW2gL/WceBoVVfXmXckNtxiFhrVyu4bABk//9k='); background-size: cover; display: block;"
3751 ></span>
3752 <img
3753 class="gatsby-resp-image-image"
3754 alt="Papert"
3755 title="Papert"
3756 src="/static/6abfec0f92eaf2f9ebb7ef9d2fd262e4/b4294/papert.jpg"
3757 srcset="/static/6abfec0f92eaf2f9ebb7ef9d2fd262e4/d2f63/papert.jpg 163w,
3758 /static/6abfec0f92eaf2f9ebb7ef9d2fd262e4/c989d/papert.jpg 325w,
3759 /static/6abfec0f92eaf2f9ebb7ef9d2fd262e4/b4294/papert.jpg 600w"
3760 sizes="(max-width: 600px) 100vw, 600px"
3761 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3762 loading="lazy"
3763 />
3764 </a>
3765 </span></p>
3766 <p>The popular Lego Mindstorms products are inspired by Papert and this book, along with many other cute robot learning toys for children, like <a href="/teaching-my-robot-with-tensorflow">my good friend Cozmo the Robot</a> or the insanely cute Cubetto from <a href="https://www.primotoys.com">Primo Toys</a>:</p>
3767 <p><span
3768 class="gatsby-resp-image-wrapper"
3769 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
3770 >
3771 <a
3772 class="gatsby-resp-image-link"
3773 href="/static/7baf9184b196f541a1ed9b85dbe992bf/f3a19/cubetto.png"
3774 style="display: block"
3775 target="_blank"
3776 rel="noopener"
3777 >
3778 <span
3779 class="gatsby-resp-image-background-image"
3780 style="padding-bottom: 57.668711656441715%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAABYlAAAWJQFJUiTwAAAC5UlEQVQoz02T2U8TURTG+w/46IvPxkdfJcYYDA/GB43GGJVEXOqCEexiWzUalxBjopGIOxY0ajQii0rAog1la5iZTmmrVltQFjFoChVBYyoC8/PMAMaHLzdz597fnPOdb2xGxIMROWKJqBPiToz4aXIfGhjv18kkmsiqfn7pl5mJn+ePdpScdoKcfo4feoW8qwCL4cXQvdgM3XzwQI+Xn6ESeluuMpKKMJbsYlyrpT9QzYDSTObLV94k3zHR285kb6tI3sfrSEVqyEXLBOqyoDYj6mFWE2DiKEO1B3AVbMCTv47bZZdQ3g6SiCXIDKepqbpBe/AluYEwY+87yCY7SMWeUdl0kyntmsAcCxV6BSjtxtx8fbYX56p89i9bzu6CXbTUP6Hn6T3Kz5yjeOUS7ly5xM8BVWCtZN62kn3fSbDqMrFQNQjHtM1mCMxQxTvdwffGPTjyVrB9yVIK89fSUe0h5Xfj2rKN0rxFePYWMZpWGU0EGEl3km14QFv9LaKpFmn5rACdCx6aUBfT4cN8vr+NgG8D108VozZVoDw6ySHHJo6vWUy5fTWvw0GmP4YYS3fzsTsE74IMJ6P0hW6AWmJ6aE7Hx6wMJtTmY0YXc9VTZNSHDHc+pC9wgfCVjfReK2DIv5bHd/10BZsJN1TSfP8iz/0nqbvqYLDhoDUYGz3iX4/LmnROcVmVjjYe5NOTUj49spO6tZXvdUXQZoeuQ6RriwlUbCVevZm+mkKGGncy3b5PYE6LYcsqZURbK8VDAZvD0VxMBuwk7+wgXL5JtJ5MfSEoJXJGZBYQl1S89pGNnSAk3RCd69AaylTkGBPdsjmfRyuTcvh3ZwnfXtiZ6pBWtFL+KB60V1X8VuSy5mZGFd9ltTT/Y1hAE4Tu/pd0QzI51Vwqez6p5Jh8fS4OM5qXkfYyAcl5E6KasCNz+h9oQUyYWZ1cnu128+N6kazipz5fhVzGlHZYVvFKkZiZfi9Idf/TX7NY6afiyboeAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
3781 ></span>
3782 <img
3783 class="gatsby-resp-image-image"
3784 alt="Cubetto"
3785 title="Cubetto"
3786 src="/static/7baf9184b196f541a1ed9b85dbe992bf/a6d36/cubetto.png"
3787 srcset="/static/7baf9184b196f541a1ed9b85dbe992bf/222b7/cubetto.png 163w,
3788 /static/7baf9184b196f541a1ed9b85dbe992bf/ff46a/cubetto.png 325w,
3789 /static/7baf9184b196f541a1ed9b85dbe992bf/a6d36/cubetto.png 650w,
3790 /static/7baf9184b196f541a1ed9b85dbe992bf/e548f/cubetto.png 975w,
3791 /static/7baf9184b196f541a1ed9b85dbe992bf/f3a19/cubetto.png 1086w"
3792 sizes="(max-width: 650px) 100vw, 650px"
3793 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
3794 loading="lazy"
3795 />
3796 </a>
3797 </span></p>
3798 <p>When you conjure up an image of "learning with computers", you might think of a rote "quiz app" or "flashcard app" - but Papert suggests that it can be more -- more creative, more exploratory, more fun, and longer-lasting. I think about how I took Calc AB and Calc BC in high school, and I was pretty good at them, too, but I had no idea what I was really doing. I knew the mechanics, not the meaning. When Papert connects teaching the Turtle to move in a cirle and the principals of differential calculus -- measuring growth by movement at the growing tip -- all I can say is 🤯.</p>
3799 <p>There's obviously also a reference to George Polya in here, too - always a good sign! </p>
3800 <p>And now, onto the notes!</p>
3801 <h3>Learning with computers</h3>
3802 <ul>
3803 <li><strong>Bricolage</strong>: creation from diverse range of things</li>
3804 <li>
3805 <p>Computers have the power to <strong>simulate</strong>. They can take 1000 forms and serve 1000 functions</p>
3806 <ul>
3807 <li>Flexible enough so children can each create with them</li>
3808 <li>Flexible enough to model the world</li>
3809 </ul>
3810 </li>
3811 <li>Remember: people seldom get things right on the first try</li>
3812 <li>
3813 <p>He is not recommending "computer-aided instruction" - like a quiz app</p>
3814 <ul>
3815 <li>Instead, he envisions the child programming the computer!</li>
3816 </ul>
3817 </li>
3818 <li>Learning to program can be a natural process like language acquisition</li>
3819 <li>Learning to communicate with a computer can change the ways we learn other things</li>
3820 <li>
3821 <p><strong>Jean Piaget</strong></p>
3822 <ul>
3823 <li>Papert's mentor / teacher</li>
3824 <li>"Learning without being taught" is perhaps Piaget's main idea</li>
3825 <li>Piaget says that children build their own intellectual structures, models, and then evolve them over time when proven false</li>
3826 <li>Children do thise all without being <em>taught</em></li>
3827 <li>"Child as builder"</li>
3828 </ul>
3829 </li>
3830 </ul>
3831 <h3>Mathophobia</h3>
3832 <ul>
3833 <li>Mathophobia is endemic. To this day, if we see math, we avoid it.</li>
3834 <li>But we often have no trouble with math knowledge if we don't perceive it as "math"</li>
3835 <li>
3836 <p>People's images of themselves as learners is contaminated by mathophobia</p>
3837 <ul>
3838 <li>"I'm not a math person"</li>
3839 <li>"I'm not artistic"</li>
3840 <li>"I'm not musical"</li>
3841 <li>As you can see, it dangerously spreads to other disciplines... "not an X person"</li>
3842 </ul>
3843 </li>
3844 <li>Mathophobia leads to insecurity and self-imposed restrictions, rather than a child's instinctive free exploration of the world</li>
3845 <li>However, the computer can be a carrier of cultural germs and seeds whos intellectual products won't need a computer once they can take root in actively growing mind</li>
3846 </ul>
3847 <h3>The Turtle</h3>
3848 <ul>
3849 <li>"Body knowledge" - useful to think about things in relation to your body. Children do this instinctively</li>
3850 <li>
3851 <p>Children need an "object to think with"</p>
3852 <ul>
3853 <li>This object is "the Turtle"</li>
3854 </ul>
3855 </li>
3856 <li>The Turtle is not a panacea, just a model for other objects not yet invented by the child</li>
3857 <li>LOGO programming language is how children communicate with the Turtle</li>
3858 <li>The Turtle serves no purpose other than being good to program and good to think with</li>
3859 <li>
3860 <p>Example LOGO commands</p>
3861 <ul>
3862 <li>FORWARD 100</li>
3863 <li>PENDOWN</li>
3864 <li>RIGHT 90</li>
3865 <li>PENUP</li>
3866 </ul>
3867 </li>
3868 <li>The idea of programming is done through the metaphor of teaching the Turtle a new word, like SQUARE or TRIANGLE</li>
3869 <li>This is obviously fun, but also powerful learning is happening</li>
3870 <li>Like other builders, children appropriate to their own use materials they find around them, mostly importantly the models and metaphors suggested by surrounding culture</li>
3871 <li>Active, self-directed, recognizable personal purpose, source of power, doing something with knowledge --> all reasons to prefer using LOGO over watching educational programming on TV</li>
3872 <li>Importance of learning systematic procedures and debugging them</li>
3873 <li>Learning to be a master programmer is learning to become highly skilled at isolating and fixing bugs</li>
3874 <li>Programs are not WRONG or RIGHT -> but they are fixable</li>
3875 <li>Deliberately thinking like a computer is extremely valuable (step by step, literal, mechanical). Thinking like a computer is just one "style of thinking", and helps students understand that there are different ways of thinking.</li>
3876 <li>Computers are not something that "rots our brains"</li>
3877 </ul>
3878 <h3>Teaching without curriculum</h3>
3879 <ul>
3880 <li>Doesn't mean free-form, spontaneous classrooms or simply "leaving the child alone"</li>
3881 <li>
3882 <p>Teaching without curriculum means supporting children as they build their own intellectual structures</p>
3883 <ul>
3884 <li>Planting new constructive elements</li>
3885 <li>Eliminating noxious ones</li>
3886 </ul>
3887 </li>
3888 <li>This is an ambitious task, and harder that a mere curriculum change</li>
3889 <li>Educators should be anthropologists and work with the cultural materials of the time</li>
3890 <li>He doesn't recommend BASIC as a learning language</li>
3891 <li>
3892 <p>BASIC is to computation what QWERTY is to typing</p>
3893 <ul>
3894 <li>People say BASIC is easy to learn because of its small vocabulary, but that just gets extremely clunky when working on something more than just a toy problem</li>
3895 </ul>
3896 </li>
3897 </ul>
3898 <h3>Why is it hard to change education</h3>
3899 <ul>
3900 <li>
3901 <p>Radical change is possible, directly tied to the impact of the computer</p>
3902 <ul>
3903 <li>Unfortunately, conservatism in the world of education is a self-perpetuating social phenomenon</li>
3904 <li>But as individuals get computers, education can become a private act, an open marketplace, a Renaissance of thinking about education</li>
3905 </ul>
3906 </li>
3907 <li>
3908 <p>Our culture has unneeded split between "humanities" and "science"</p>
3909 <ul>
3910 <li>But Plato was both</li>
3911 </ul>
3912 </li>
3913 <li>Computer can break down this line</li>
3914 <li>
3915 <p>"Math" just means "learning" in Greek</p>
3916 <ul>
3917 <li>e.g. "polymath" is a person of many learnings</li>
3918 <li>"Mathetic" means "having to do with "learning"</li>
3919 </ul>
3920 </li>
3921 <li>Children begin their lives as eager and competant learners. They have to learn to have trouble with learning in general and mathematics in particular</li>
3922 <li>
3923 <p>Conservation of liquids example from Piaget</p>
3924 <ul>
3925 <li>Children take a while to learn this principle</li>
3926 <li>They have their own coherent world view (taller glass must have more liquid)</li>
3927 <li>This model was spontaneously developed by them</li>
3928 </ul>
3929 </li>
3930 <li>Mathophobia limit's people's lives. Deficiency becomes part of their identity. It is a self-reinforcing taboo</li>
3931 <li>"Cchool math" is not the same as "mathematics"</li>
3932 </ul>
3933 <h3>Turtle geometry</h3>
3934 <ul>
3935 <li>
3936 <p>There are multiple types of geometry</p>
3937 <ul>
3938 <li>Turtle geometry = computational (tracks Position and Heading of the Turtle)</li>
3939 <li>Euclidean geometry = logical (tracks Position and Point)</li>
3940 <li>Descartes geometry = algebraic</li>
3941 </ul>
3942 </li>
3943 <li>
3944 <p>Geometry arises when child asks "How can I make the Turtle draw a circle?"</p>
3945 <ul>
3946 <li>A good teacher doesn't answer the question, but encourages the student to act it out. Literally, to have the child "play Turtle" themselves. What steps do they take to move in a circle?</li>
3947 </ul>
3948 </li>
3949 <li>Learning to "program computers" is done by teaching the Turtle a new word (aka subroutine / function) like CIRCLE, SQUARE, TRIANGLE</li>
3950 <li>Along the way, students learn about <strong>modularity</strong> and <strong>state</strong></li>
3951 <li>Don't forget the error - instead study the bugs!</li>
3952 <li>Try to make sense of what you want to learn</li>
3953 <li>
3954 <p><strong>Syntonic learning</strong></p>
3955 <ul>
3956 <li>The Turtle is body syntonic - firmly related to child's sense and knowledge about their own bodies</li>
3957 <li>Also is "ego syntonic" - the Turtle is coherent with child's sense of themselves with things like (e.g. intentions, goals, desires, dislikes)</li>
3958 </ul>
3959 </li>
3960 <li>Turtle geometry is learnable because it is syntonic.</li>
3961 <li>Turtle geometry encourages deliberate use of problem-solving</li>
3962 <li>
3963 <p><strong>George Polya</strong></p>
3964 <ul>
3965 <li>Came up with a general method for problem solving</li>
3966 <li>Turtle geometry lends itself well to Polya's methods (e.g. "look for something like it")</li>
3967 <li>Turtle geometry is great for learning heuristic thinking</li>
3968 </ul>
3969 </li>
3970 <li>Disassociative learning is something like memorizing the multiplication tables</li>
3971 <li>
3972 <p>Bill, a fifth grader, suggests this unfortunate way to learn multiplication tables</p>
3973 <ul>
3974 <li>"Make your mind a blank and saying it over and over until you know it"</li>
3975 </ul>
3976 </li>
3977 <li>Turtle geometry on the other hand has rhythm, movement, navigational knowledger</li>
3978 <li>
3979 <p>Differential Calculus</p>
3980 <ul>
3981 <li>Differential calculus is ability to describe growth by what is happening at the growing tip</li>
3982 <li>Newton modeled the motions of the planets with it</li>
3983 <li>The Turtle's circle program ( FORWARD 1, RIGHTTURN 1) is a set of DIFFERENTIAL instructions!</li>
3984 </ul>
3985 </li>
3986 <li>
3987 <p>Many students come to Turtle geometry hating numbers as alien concepts, and leave it loving them. For example, angles.</p>
3988 <ul>
3989 <li>Turtle geometry shows students that angles have body syntoncity with compass navigation. The Turtle parallels this</li>
3990 </ul>
3991 </li>
3992 <li>Idea of a "variable" in programming: using a symbol to name an unknown entity</li>
3993 <li>
3994 <p>Idea of "recursion" in programming: a never ending process.</p>
3995 <ul>
3996 <li>Kids already love the idea / fantasy of something "going on forever" (with 2 wishes, always use the second wish to wish for two more wishes!)3</li>
3997 </ul>
3998 </li>
3999 <li>
4000 <p>The Total Turtle Trip Theorem</p>
4001 <ul>
4002 <li>If a Turtle tasks a trip around the boundaries of any area and ends up in the state in which it started (direction and place), then the sum of all the turns will be 360 degrees</li>
4003 </ul>
4004 </li>
4005 <li>One learns to enjoy and to respect the power of powerful ideas. One learns that the most powerful idea is the idea of powerful ideas.</li>
4006 <li>Computers can influence the language we use to talk about ourselves (e.g. input, output, feedback)</li>
4007 </ul>
4008 <h3>Structure programming</h3>
4009 <ul>
4010 <li>Learn to write subprocedures, aka "mind-sized bites"</li>
4011 <li>It's possible to build a large intellectual system without ever making a step that cannot be comprehended, using hierachy of subprocedures</li>
4012 <li>Example of teaching the Turtle to draw a person can use multiple subprocedures, each of which is easily understood</li>
4013 <li>Computers give enough flexibility and power so that child's exploration can be genuine and their own</li>
4014 <li>"Brute force" would be trying to have the Turtle draw the person without any subprocedures - the straight line approach.</li>
4015 <li>Brute force with no internal structure is not a good model for computer programming</li>
4016 <li>For example, in real life, juggling is actually composed of many subroutines</li>
4017 <li>Introduces notion of timing:
4018 `* parallel processes vs serial processes</li>
4019 <li>Introduce notion of condition logic with The "WHEN demon"</li>
4020 <li>"When something happens, the demon pounces out and does its own action"</li>
4021 </ul>
4022 <h3>Debugging</h3>
4023 <ul>
4024 <li>Children seem to have a resistance to debugging</li>
4025 <li>They would rather "throw it out" and start over</li>
4026 <li>Seemingly, they want to do it correctly in one shot</li>
4027 <li>We can empathize, because a bug seems like WRONG or MISTAKE or BAG</li>
4028 <li>Kids like that computers can remove any trace of their errors</li>
4029 <li>But errors and debugging are good!</li>
4030 <li>We must learn to study what happened and understand what went wrong. Through that understanding, we can fix the bug.</li>
4031 <li>Computers will help children "believe in" debugging</li>
4032 <li>Contact with LOGO and the Turtle eventually, gradually, underminds the long-standing resistance to debugging and subprocedures</li>
4033 <li>With LOGO, the teacher is also a learner, and everyone makes mistakes</li>
4034 <li>Children know when teacher "fakes it" with "let's try this one together" - they see right through this.</li>
4035 <li>But LOGO makes that situation feel genuine, because the teacher is trying to figure it out, too, and they make mistakes together</li>
4036 <li>Real intellectual collaboration - together they try to understand the computer and get it to do what they want</li>
4037 <li>Affirmation of the power of ideas and the power of the mind!</li>
4038 </ul></content:encoded></item><item><title><![CDATA[Writer's Bane]]></title><description><![CDATA[That's right, it's a post about writing advice. Not from me! Goodness, no. Instead, here's a compendium of books and other odd bits that I…]]></description><link>https://www.charlieharrington.com/writer's-bane</link><guid isPermaLink="false">https://www.charlieharrington.com/writer's-bane</guid><pubDate>Sun, 26 Apr 2020 00:00:00 GMT</pubDate><content:encoded><p>That's right, it's a post about writing advice.</p>
4039 <p>Not from me! Goodness, no.</p>
4040 <p>Instead, here's a compendium of books and other odd bits that I've found helpful in my quest. I'll keep this updated when I encounter something new and useful and surprising.</p>
4041 <p>I hope this guide proves useful when you're looking to read about how to write instead of just sitting down and doing the deed.</p>
4042 <h2>Books</h2>
4043 <ul>
4044 <li><strong><a href="https://www.amazon.com/gp/product/1607748894/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1607748894&#x26;linkId=964c14964dbe0dc13bcfacb3a3594f85">Story Genius</a> - Lisa Cron</strong>: Learn how to write a riveting story using <em>brain science</em> - make sure to bring a pen and a notebook along for the ride!</li>
4045 <li><strong><a href="https://www.amazon.com/gp/product/1439156816/ref=as_li_tl?ie=UTF8&#x26;camp=1789&#x26;creative=9325&#x26;creativeASIN=1439156816&#x26;linkCode=as2&#x26;tag=whatrocks09-20&#x26;linkId=dc4290e47818db79d2fa6b284f9f3e1b">On Writing</a> - Stephen King</strong>: King's biographical guidebook to his craft.</li>
4046 <li><strong><a href="https://www.amazon.com/gp/product/0385480016/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0385480016&#x26;linkId=3cb65bd21cb9764f04be702fe152c1ff">Bird by Bird</a> - Anne Lamott</strong>: The best advice you'll get about life and writing.</li>
4047 <li><strong><a href="https://www.amazon.com/gp/product/1877741094/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1877741094&#x26;linkId=e40ad924992964aff49708d25cd7fed0">Zen in the Art of Writing</a> - Ray Bradbury</strong>: How to delight in the joy of BEING ALIVE and also write about it.</li>
4048 <li><strong><a href="https://amzn.to/2IWZ1B3">Draft No. 4</a> - John McPhee</strong>: The master of creative nonfiction gives you a glimpse behind the curtain, and it's mostly 3x5 note cards and some strange vintage word processing software.</li>
4049 <li><strong><a href="https://www.amazon.com/gp/product/020530902X/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=020530902X&#x26;linkId=d79e4ea383d10042e72b29d316802112">The Elements of Style</a> - Strunk and White</strong>: Don't throw this out after high school English. It's tiny. Keep it in the bathroom. Don't tell anyone.</li>
4050 </ul>
4051 <h2>Podcasts</h2>
4052 <ul>
4053 <li><strong><a href="https://www.askthebards.com/">Ask the Bards</a> - Delilah S. Dawson and Kevin Hearne</strong>: A weekly Twitter Q+A with best buddies and writing partners. You'll want to be friends with them.</li>
4054 <li><strong><a href="https://podcasts.apple.com/us/podcast/launch/id1319436103?mt=2">Launch</a> - John August</strong>: What happens when a famous screenwriter and podcaster decides to write a middle grade children's novel called Arlo Finch? He records a charmed six-part podcast about the process of finding an agent, signing a deal, editing, visiting the book-binding factory, and then going on book-tour.</li>
4055 <li><strong><a href="https://johnaugust.com/scriptnotes">Scriptnotes</a> - John August and Craig Mazin</strong>: "A podcast about screenwriting and things that are interesting to screenwriters." This isn't exactly about writing books, but who cares. It's my favorite weekly podcast about an industry I don't work in. And also, "One Cool Thing."</li>
4056 </ul>
4057 <h2>Articles</h2>
4058 <ul>
4059 <li><strong><a href="http://terribleminds.com/ramble/2013/08/13/25-steps-to-being-a-traditionally-published-author-lazy-bastard-edition/">25 Steps to Being a Traditionally Published Author: Lazy Bastard Edition</a> - Delilah S. Dawson</strong>: If you're looking for a hilarious and possibly NSFW roadmap to seeing your book in an airport bookstore, look no further.</li>
4060 </ul>
4061 <h2>Newsletters</h2>
4062 <ul>
4063 <li><strong><a href="https://www.robinsloan.com/overworld/">The Perils of the Overworld - Robin Sloan</a></strong>: What happens when an engineer-author-olive-oil-maker makes a video game? He's not sure either. </li>
4064 </ul>
4065 <p><span
4066 class="gatsby-resp-image-wrapper"
4067 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 332px; "
4068 >
4069 <a
4070 class="gatsby-resp-image-link"
4071 href="/static/51db8e397a54c68f2f1d0c7a6e245409/71bac/durin.jpg"
4072 style="display: block"
4073 target="_blank"
4074 rel="noopener"
4075 >
4076 <span
4077 class="gatsby-resp-image-background-image"
4078 style="padding-bottom: 135.58282208588957%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAIBBAUD/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAGldzjPRCS5azmdhcgT/8QAHhAAAQQBBQAAAAAAAAAAAAAAAQACAxIhERMUIjH/2gAIAQEAAQUCheIzyS9E5jbYnq5N9m29UEDmxX//xAAVEQEBAAAAAAAAAAAAAAAAAAARIP/aAAgBAwEBPwFj/8QAFhEBAQEAAAAAAAAAAAAAAAAAAQIg/9oACAECAQE/AWBx/8QAGxAAAQQDAAAAAAAAAAAAAAAAAQAQESECEiD/2gAIAQEABj8Ck2jGIFPDjTn/xAAbEAEAAwEBAQEAAAAAAAAAAAABABEhMUFxYf/aAAgBAQABPyGgXxBZKLNusZTyLWNfs7vmM3yZH2VLvNuFp2Jieo39n//aAAwDAQACAAMAAAAQcMa8/8QAGBEAAwEBAAAAAAAAAAAAAAAAAAERECH/2gAIAQMBAT8QTqD6KTP/xAAXEQEBAQEAAAAAAAAAAAAAAAABABEx/9oACAECAQE/EGdewzZf/8QAHxABAAMAAQQDAAAAAAAAAAAAAQARIUExUWFxgZGh/9oACAEBAAE/ELO3SHfHSXZsOD7hMKX07QSDeri8lukN6P34lcBXqLhVRdhe1OutgAvhkM3exotMJQqHgn//2Q=='); background-size: cover; display: block;"
4079 ></span>
4080 <img
4081 class="gatsby-resp-image-image"
4082 alt="balrog"
4083 title="balrog"
4084 src="/static/51db8e397a54c68f2f1d0c7a6e245409/71bac/durin.jpg"
4085 srcset="/static/51db8e397a54c68f2f1d0c7a6e245409/d2f63/durin.jpg 163w,
4086 /static/51db8e397a54c68f2f1d0c7a6e245409/c989d/durin.jpg 325w,
4087 /static/51db8e397a54c68f2f1d0c7a6e245409/71bac/durin.jpg 332w"
4088 sizes="(max-width: 332px) 100vw, 332px"
4089 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4090 loading="lazy"
4091 />
4092 </a>
4093 </span></p>
4094 <blockquote>
4095 <p>"Write, you fools!" he cried, and was gone.</p>
4096 </blockquote></content:encoded></item><item><title><![CDATA[Notes on Nike Missile Site SF-88L]]></title><description><![CDATA[Many, many days ago, when humans could still roam the Earth for non-essential activities, our little crew visited Nike Missile Site SF-88L…]]></description><link>https://www.charlieharrington.com/notes-on-nike-missile-site-sf-88l</link><guid isPermaLink="false">https://www.charlieharrington.com/notes-on-nike-missile-site-sf-88l</guid><pubDate>Tue, 07 Apr 2020 00:00:00 GMT</pubDate><content:encoded><p>Many, many days ago, when humans could still roam the Earth for non-essential activities, our little crew visited Nike Missile Site SF-88L as another destination in our <a href="/notes-on-map-and-compass-navigation">sixth grade class-trip</a> whistle-stop tour of nerdy places in the Bay Area.</p>
4097 <p><span
4098 class="gatsby-resp-image-wrapper"
4099 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4100 >
4101 <a
4102 class="gatsby-resp-image-link"
4103 href="/static/1789e9ba45b720280866164b35c25854/d2602/site.jpg"
4104 style="display: block"
4105 target="_blank"
4106 rel="noopener"
4107 >
4108 <span
4109 class="gatsby-resp-image-background-image"
4110 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMCBAX/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/2gAMAwEAAhADEAAAAXxprcaQkn//xAAcEAADAAEFAAAAAAAAAAAAAAAAAQIDERITISL/2gAIAQEAAQUC2w5Sxng04zuhTEL/xAAWEQADAAAAAAAAAAAAAAAAAAAAAhP/2gAIAQMBAT8BkpNT/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAETAv/aAAgBAgEBPwGrK6P/xAAbEAACAwADAAAAAAAAAAAAAAAAAQIRIQMxMv/aAAgBAQAGPwK0z0dmPCUrVNlcms//xAAaEAADAQEBAQAAAAAAAAAAAAAAAREhMUFR/9oACAEBAAE/IV70VQxYtXVBy4Mtl6N0YzmkgL7n/9oADAMBAAIAAwAAABBLL//EABcRAAMBAAAAAAAAAAAAAAAAAAABIWH/2gAIAQMBAT8QhUbH/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQAhYf/aAAgBAgEBPxAVy43/xAAcEAEAAgMBAQEAAAAAAAAAAAABETEAIUFRYYH/2gAIAQEAAT8QMIggQ0R3ItQdBHt5qi1+4stkCTE/UL7g3lSIkBWvPcK3IQWBorP/2Q=='); background-size: cover; display: block;"
4111 ></span>
4112 <img
4113 class="gatsby-resp-image-image"
4114 alt="site"
4115 title="site"
4116 src="/static/1789e9ba45b720280866164b35c25854/6aca1/site.jpg"
4117 srcset="/static/1789e9ba45b720280866164b35c25854/d2f63/site.jpg 163w,
4118 /static/1789e9ba45b720280866164b35c25854/c989d/site.jpg 325w,
4119 /static/1789e9ba45b720280866164b35c25854/6aca1/site.jpg 650w,
4120 /static/1789e9ba45b720280866164b35c25854/7c09c/site.jpg 975w,
4121 /static/1789e9ba45b720280866164b35c25854/01ab0/site.jpg 1300w,
4122 /static/1789e9ba45b720280866164b35c25854/d2602/site.jpg 4032w"
4123 sizes="(max-width: 650px) 100vw, 650px"
4124 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4125 loading="lazy"
4126 />
4127 </a>
4128 </span></p>
4129 <p><a href="https://en.wikipedia.org/wiki/Nike_Missile_Site_SF-88">Nike Missile Site SF 88-L</a> is just over the Golden Gate Bridge in the Marin headlands (essentially behind Hawk Hill), so it's a short drive or hike or bike ride away from the city.</p>
4130 <p><span
4131 class="gatsby-resp-image-wrapper"
4132 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4133 >
4134 <a
4135 class="gatsby-resp-image-link"
4136 href="/static/d115d74ea742126d2c24af84f36d45dd/d2602/radar.jpg"
4137 style="display: block"
4138 target="_blank"
4139 rel="noopener"
4140 >
4141 <span
4142 class="gatsby-resp-image-background-image"
4143 style="padding-bottom: 50.306748466257666%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQT/xAAVAQEBAAAAAAAAAAAAAAAAAAACA//aAAwDAQACEAMQAAABbEjSXWVA/wD/xAAaEAACAgMAAAAAAAAAAAAAAAAAEgECAyFC/9oACAEBAAEFAkEgWpi3U5//xAAWEQADAAAAAAAAAAAAAAAAAAAAARP/2gAIAQMBAT8BmiaP/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAECAxP/2gAIAQIBAT8BdzNpH//EABwQAAEDBQAAAAAAAAAAAAAAAAACAzEQESFScf/aAAgBAQAGPwLJJI5fWieH/8QAHBABAAICAwEAAAAAAAAAAAAAAQARMUEhUWHR/9oACAEBAAE/Ia30ieCw2mNVy9Q+yjDrP//aAAwDAQACAAMAAAAQ6O//xAAWEQEBAQAAAAAAAAAAAAAAAAABAEH/2gAIAQMBAT8QNmJ//8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAx/9oACAECAQE/EAYTX//EABwQAQADAAIDAAAAAAAAAAAAAAEAESExQVFxgf/aAAgBAQABPxCo0PaPiU9uQBmfAXGMWJFXWMTreih+QKoajnM//9k='); background-size: cover; display: block;"
4144 ></span>
4145 <img
4146 class="gatsby-resp-image-image"
4147 alt="radar"
4148 title="radar"
4149 src="/static/d115d74ea742126d2c24af84f36d45dd/6aca1/radar.jpg"
4150 srcset="/static/d115d74ea742126d2c24af84f36d45dd/d2f63/radar.jpg 163w,
4151 /static/d115d74ea742126d2c24af84f36d45dd/c989d/radar.jpg 325w,
4152 /static/d115d74ea742126d2c24af84f36d45dd/6aca1/radar.jpg 650w,
4153 /static/d115d74ea742126d2c24af84f36d45dd/7c09c/radar.jpg 975w,
4154 /static/d115d74ea742126d2c24af84f36d45dd/01ab0/radar.jpg 1300w,
4155 /static/d115d74ea742126d2c24af84f36d45dd/d2602/radar.jpg 4032w"
4156 sizes="(max-width: 650px) 100vw, 650px"
4157 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4158 loading="lazy"
4159 />
4160 </a>
4161 </span></p>
4162 <p>Check out its <a href="https://www.nps.gov/goga/nike-missile-site.htm">National Park Service website</a> for its operating hours and tour times. As you might expect, it looks like the site is closed for the time being. If you're lucky (and can plan ahead), try to go on the first Saturday of the month, when its staffed by volunteer veterans who worked at various Nike sites around the country. </p>
4163 <p>We got lucky, and the veterans were both hilarious and super interesting. Added bonus: they were also able to operate some of the terrifying machinery, like so:</p>
4164 <p><img src="/c8c202158e218ccd053886bd110d0290/animation.gif" alt="missileloading"></p>
4165 <p>I brought along my little notebook and took copious notes while they were talking (which I've reproduced below). </p>
4166 <p><span
4167 class="gatsby-resp-image-wrapper"
4168 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4169 >
4170 <a
4171 class="gatsby-resp-image-link"
4172 href="/static/f175d4c895d6921cadc6782d98ad3176/d2602/history.jpg"
4173 style="display: block"
4174 target="_blank"
4175 rel="noopener"
4176 >
4177 <span
4178 class="gatsby-resp-image-background-image"
4179 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAQP/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/2gAMAwEAAhADEAAAAeTSLluNI//EABgQAQEBAQEAAAAAAAAAAAAAAAIBEgAD/9oACAEBAAEFAto8Lu5veldspLJ13//EABYRAAMAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAwEBPwGBf//EABURAQEAAAAAAAAAAAAAAAAAAAAh/9oACAECAQE/Aar/xAAbEAACAgMBAAAAAAAAAAAAAAAAEQECEBIhQf/aAAgBAQAGPwKJmqYsds9T2Gcsf//EABoQAQADAQEBAAAAAAAAAAAAAAEAESExQWH/2gAIAQEAAT8h1T4XkN6H2LLsBFjWkNdOklBUq62f/9oADAMBAAIAAwAAABB77//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQMBAT8QA6SG3//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQIBAT8Qxcgn/8QAGxABAAMBAAMAAAAAAAAAAAAAAQARITFBcaH/2gAIAQEAAT8QTUJ27chkBFsrM6VeUeIpMAcPXOxdGodFt/CNRixTcn//2Q=='); background-size: cover; display: block;"
4180 ></span>
4181 <img
4182 class="gatsby-resp-image-image"
4183 alt="history"
4184 title="history"
4185 src="/static/f175d4c895d6921cadc6782d98ad3176/6aca1/history.jpg"
4186 srcset="/static/f175d4c895d6921cadc6782d98ad3176/d2f63/history.jpg 163w,
4187 /static/f175d4c895d6921cadc6782d98ad3176/c989d/history.jpg 325w,
4188 /static/f175d4c895d6921cadc6782d98ad3176/6aca1/history.jpg 650w,
4189 /static/f175d4c895d6921cadc6782d98ad3176/7c09c/history.jpg 975w,
4190 /static/f175d4c895d6921cadc6782d98ad3176/01ab0/history.jpg 1300w,
4191 /static/f175d4c895d6921cadc6782d98ad3176/d2602/history.jpg 4032w"
4192 sizes="(max-width: 650px) 100vw, 650px"
4193 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4194 loading="lazy"
4195 />
4196 </a>
4197 </span></p>
4198 <p>But first I wanted to share a favorite moment.</p>
4199 <p>Near the end of the tour, we were led underground to where they kept the Nike Hercules missiles. Then, one of the veterans pressed a giant yellow button, which opened a metal hatch and began to lift one of the missiles above ground. This was a common procedure for the soldiers - they'd have to run through drills constantly, at a moment's notice.</p>
4200 <p>Meanwhile, as we're watching this gigantic warhead move skyward a hydraulic lift, I can't help but be distracted: Where have I heard these sounds before?</p>
4201 <audio controls="controls">
4202 <source type="audio/mp3" src="/5d9feeb82b2ba991d08069eace7479b3/trash_compactor.mp3"></source>
4203 </audio>
4204 <p>That's when the veteran asked, "Anyone ever seen Star Wars?"</p>
4205 <p>My hand burst into the air like Hermoine's.</p>
4206 <p>Apparently, George Lucas visited the Nike missile site before filming <em>A New Hope</em>, and he found some inspiration for this scene:</p>
4207 <p><span
4208 class="gatsby-resp-image-wrapper"
4209 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 639px; "
4210 >
4211 <a
4212 class="gatsby-resp-image-link"
4213 href="/static/71d4a050bc2b68ac607f8fc3088a2aa7/df7e7/trash.jpg"
4214 style="display: block"
4215 target="_blank"
4216 rel="noopener"
4217 >
4218 <span
4219 class="gatsby-resp-image-background-image"
4220 style="padding-bottom: 66.87116564417178%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMCBAX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAct6mxWImn//xAAaEAEBAAIDAAAAAAAAAAAAAAABAhIhAAMR/9oACAEBAAEFAid3LinnOlzrJKXf/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8BV//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABoQAAICAwAAAAAAAAAAAAAAAAABEBESYZH/2gAIAQEABj8CimYvptR//8QAHBAAAgICAwAAAAAAAAAAAAAAAAERITFRQWFx/9oACAEBAAE/IXQkayTuIJOB9jNuqTgaC5bkc9vT/9oADAMBAAIAAwAAABC/H//EABYRAQEBAAAAAAAAAAAAAAAAAAEQIf/aAAgBAwEBPxAcj//EABcRAQADAAAAAAAAAAAAAAAAAAABETH/2gAIAQIBAT8QnVP/xAAeEAEAAgIBBQAAAAAAAAAAAAABACERMVFBYXGBkf/aAAgBAQABPxDOcrQ4xcqLFclVEUANgcw0zqqLLPJ26xFomGb9Rwq/Sf/Z'); background-size: cover; display: block;"
4221 ></span>
4222 <img
4223 class="gatsby-resp-image-image"
4224 alt="trash"
4225 title="trash"
4226 src="/static/71d4a050bc2b68ac607f8fc3088a2aa7/df7e7/trash.jpg"
4227 srcset="/static/71d4a050bc2b68ac607f8fc3088a2aa7/d2f63/trash.jpg 163w,
4228 /static/71d4a050bc2b68ac607f8fc3088a2aa7/c989d/trash.jpg 325w,
4229 /static/71d4a050bc2b68ac607f8fc3088a2aa7/df7e7/trash.jpg 639w"
4230 sizes="(max-width: 639px) 100vw, 639px"
4231 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4232 loading="lazy"
4233 />
4234 </a>
4235 </span></p>
4236 <p>This experience now lends more credence to the apocryphal story of how those Oakland shipping container lift thingies became proto AT-ATs for a day-dreaming Lucas.</p>
4237 <p>Anyway, as mentioned, here's what I scribbled down during the tour:</p>
4238 <ul>
4239 <li>Nike is the "goddess of victory"</li>
4240 <li>
4241 <p>Nike Missile Program</p>
4242 <ul>
4243 <li>1954 - 1974</li>
4244 <li>233 sites across the USA</li>
4245 <li>Billions were spent</li>
4246 <li>Obsoleted by ICBMs (inter-continental ballistic missiles)</li>
4247 </ul>
4248 </li>
4249 <li>
4250 <p>Two types of missiles:</p>
4251 <ul>
4252 <li>(1) Ajax: liquid fuel, very dangerous to handle</li>
4253 <li>(2) Hercules: nuclear version</li>
4254 </ul>
4255 </li>
4256 <li>Many of the Army operators were ~19 years: "We were kids."</li>
4257 <li>Missiles were radar operated</li>
4258 <li>No Nike missiles were ever "officially launched" at any enemy</li>
4259 <li>
4260 <p>Each site had three radars:</p>
4261 <ul>
4262 <li>(1) Friend or Foe?</li>
4263 <li>(2) Foe tracker</li>
4264 <li>(3) Missile tracker</li>
4265 </ul>
4266 </li>
4267 <li>
4268 <p>The U.S. strategy for defending our coasts was:</p>
4269 <ul>
4270 <li>(1) Navy will try first,</li>
4271 <li>(2) Then the Air Force,</li>
4272 <li>(3) Finally, the Army with Nike missiles as a last resort</li>
4273 </ul>
4274 </li>
4275 <li>
4276 <p>Control operators had five words they could send to an in-flight missile:</p>
4277 <ul>
4278 <li>(1) PITCH</li>
4279 <li>(2) YAW</li>
4280 <li>(3) ROLL</li>
4281 <li>(4) SELF-DESTRUCT</li>
4282 <li>(5) EXPLODE (they had to tell the missiles to explode!)</li>
4283 </ul>
4284 </li>
4285 <li>Operators went to annual training in New Mexico where they actually fired unarmed missiles</li>
4286 <li>Hercules had a 35 mile "kill" diameter</li>
4287 <li>There is an electromagnetic pulse during a nuclear explosion, which is why analog radar communication works (vs. digital)</li>
4288 </ul>
4289 <p>And here are some of the better photos from my phone. If you like old control panels for old computers (like me), then this place is your kind of place!</p>
4290 <p><span
4291 class="gatsby-resp-image-wrapper"
4292 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4293 >
4294 <a
4295 class="gatsby-resp-image-link"
4296 href="/static/28a20b6ce46becb1226cd959be3cf0c7/d2602/buttons.jpg"
4297 style="display: block"
4298 target="_blank"
4299 rel="noopener"
4300 >
4301 <span
4302 class="gatsby-resp-image-background-image"
4303 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAQX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABYi2WOeYV/8QAHBAAAQMFAAAAAAAAAAAAAAAAAQAREgIDISMy/9oACAEBAAEFAo7YMK8EpmV3r//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABgQAAMBAQAAAAAAAAAAAAAAAAABERBh/9oACAEBAAY/AqNV1kH0ef/EABoQAAMBAQEBAAAAAAAAAAAAAAERIQAxQVH/2gAIAQEAAT8hK1LAXZirufuDqJQVxkoX1ZM4lT4tHb3/2gAMAwEAAgADAAAAEAQP/8QAFREBAQAAAAAAAAAAAAAAAAAAECH/2gAIAQMBAT8Qh//EABURAQEAAAAAAAAAAAAAAAAAAAAB/9oACAECAQE/EEf/xAAcEAACAgMBAQAAAAAAAAAAAAABEQAxIUFRYaH/2gAIAQEAAT8Qa6rtQLnkMe/Uxu1BLIRGxxDoSFQHx2IlxwIindwCXNw3S8n/2Q=='); background-size: cover; display: block;"
4304 ></span>
4305 <img
4306 class="gatsby-resp-image-image"
4307 alt="buttons"
4308 title="buttons"
4309 src="/static/28a20b6ce46becb1226cd959be3cf0c7/6aca1/buttons.jpg"
4310 srcset="/static/28a20b6ce46becb1226cd959be3cf0c7/d2f63/buttons.jpg 163w,
4311 /static/28a20b6ce46becb1226cd959be3cf0c7/c989d/buttons.jpg 325w,
4312 /static/28a20b6ce46becb1226cd959be3cf0c7/6aca1/buttons.jpg 650w,
4313 /static/28a20b6ce46becb1226cd959be3cf0c7/7c09c/buttons.jpg 975w,
4314 /static/28a20b6ce46becb1226cd959be3cf0c7/01ab0/buttons.jpg 1300w,
4315 /static/28a20b6ce46becb1226cd959be3cf0c7/d2602/buttons.jpg 4032w"
4316 sizes="(max-width: 650px) 100vw, 650px"
4317 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4318 loading="lazy"
4319 />
4320 </a>
4321 </span></p>
4322 <p><span
4323 class="gatsby-resp-image-wrapper"
4324 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4325 >
4326 <a
4327 class="gatsby-resp-image-link"
4328 href="/static/52be07ae64ab63460489c89eefdb569a/6a89c/controls.jpg"
4329 style="display: block"
4330 target="_blank"
4331 rel="noopener"
4332 >
4333 <span
4334 class="gatsby-resp-image-background-image"
4335 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEA//EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAGhZFl3JhP/xAAaEAACAgMAAAAAAAAAAAAAAAAAAQMREBIT/9oACAEBAAEFAurHMzbDurP/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAgEBPwEn/8QAFxAAAwEAAAAAAAAAAAAAAAAAABARMf/aAAgBAQAGPwLSV1f/xAAcEAEAAgEFAAAAAAAAAAAAAAABABExIUFRgdH/2gAIAQEAAT8hfFcyHSLXMWm94RaHEBWs/9oADAMBAAIAAwAAABAoD//EABYRAQEBAAAAAAAAAAAAAAAAAAEAEf/aAAgBAwEBPxBBtv/EABYRAQEBAAAAAAAAAAAAAAAAAAERAP/aAAgBAgEBPxBQmrv/xAAaEAEBAQEAAwAAAAAAAAAAAAABEQAxQWFx/9oACAEBAAE/EJA7+DMgF15XjXGGklHZgqg0Rm7hvo3/2Q=='); background-size: cover; display: block;"
4336 ></span>
4337 <img
4338 class="gatsby-resp-image-image"
4339 alt="controls"
4340 title="controls"
4341 src="/static/52be07ae64ab63460489c89eefdb569a/6aca1/controls.jpg"
4342 srcset="/static/52be07ae64ab63460489c89eefdb569a/d2f63/controls.jpg 163w,
4343 /static/52be07ae64ab63460489c89eefdb569a/c989d/controls.jpg 325w,
4344 /static/52be07ae64ab63460489c89eefdb569a/6aca1/controls.jpg 650w,
4345 /static/52be07ae64ab63460489c89eefdb569a/7c09c/controls.jpg 975w,
4346 /static/52be07ae64ab63460489c89eefdb569a/01ab0/controls.jpg 1300w,
4347 /static/52be07ae64ab63460489c89eefdb569a/6a89c/controls.jpg 3714w"
4348 sizes="(max-width: 650px) 100vw, 650px"
4349 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4350 loading="lazy"
4351 />
4352 </a>
4353 </span></p>
4354 <p><span
4355 class="gatsby-resp-image-wrapper"
4356 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4357 >
4358 <a
4359 class="gatsby-resp-image-link"
4360 href="/static/aca59aea2a2e99606c2258c15096e50c/d2602/dials.jpg"
4361 style="display: block"
4362 target="_blank"
4363 rel="noopener"
4364 >
4365 <span
4366 class="gatsby-resp-image-background-image"
4367 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEA//EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAEzqWSgYP/EABoQAAICAwAAAAAAAAAAAAAAAAECABEDEiH/2gAIAQEAAQUCNQlaQUuqw40gPP/EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAwEBPwGRj//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAECAQE/AWf/xAAcEAACAgIDAAAAAAAAAAAAAAAAAQIxEBETISP/2gAIAQEABj8CfpI3yyFbK7ZVY//EABsQAAICAwEAAAAAAAAAAAAAAAABETEhQVGB/9oACAEBAAE/IYWkcbOoavAxL0HLnsG4VQ6NH//aAAwDAQACAAMAAAAQOx//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAwEBPxCin//EABURAQEAAAAAAAAAAAAAAAAAAAEA/9oACAECAQE/EEEJf//EABsQAQADAQADAAAAAAAAAAAAAAERITEAQVFh/9oACAEBAAE/EHYpUtEGh74lQVKpRq94LH3PNSbQ4YvYJrg3vSSss7N31BhWGb3/2Q=='); background-size: cover; display: block;"
4368 ></span>
4369 <img
4370 class="gatsby-resp-image-image"
4371 alt="dials"
4372 title="dials"
4373 src="/static/aca59aea2a2e99606c2258c15096e50c/6aca1/dials.jpg"
4374 srcset="/static/aca59aea2a2e99606c2258c15096e50c/d2f63/dials.jpg 163w,
4375 /static/aca59aea2a2e99606c2258c15096e50c/c989d/dials.jpg 325w,
4376 /static/aca59aea2a2e99606c2258c15096e50c/6aca1/dials.jpg 650w,
4377 /static/aca59aea2a2e99606c2258c15096e50c/7c09c/dials.jpg 975w,
4378 /static/aca59aea2a2e99606c2258c15096e50c/01ab0/dials.jpg 1300w,
4379 /static/aca59aea2a2e99606c2258c15096e50c/d2602/dials.jpg 4032w"
4380 sizes="(max-width: 650px) 100vw, 650px"
4381 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4382 loading="lazy"
4383 />
4384 </a>
4385 </span></p>
4386 <p><span
4387 class="gatsby-resp-image-wrapper"
4388 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4389 >
4390 <a
4391 class="gatsby-resp-image-link"
4392 href="/static/94942153f05fff73adbf2b72216ed795/d2602/missile.jpg"
4393 style="display: block"
4394 target="_blank"
4395 rel="noopener"
4396 >
4397 <span
4398 class="gatsby-resp-image-background-image"
4399 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAECBP/EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAFVmVRZmB//xAAaEAACAwEBAAAAAAAAAAAAAAAAAQISExEi/9oACAEBAAEFAs7GLG0V6vMS0D//xAAXEQADAQAAAAAAAAAAAAAAAAAAARIT/9oACAEDAQE/Ac0Qj//EABYRAAMAAAAAAAAAAAAAAAAAAAACE//aAAgBAgEBPwGrFGP/xAAaEAACAgMAAAAAAAAAAAAAAAAAMQERAiFh/9oACAEBAAY/AlQhlwbym+Ck/8QAGxABAAIDAQEAAAAAAAAAAAAAAQAhEWGRQaH/2gAIAQEAAT8hPDtMDSzqZVrsEA07it9RLrbdT//aAAwDAQACAAMAAAAQ6y//xAAWEQEBAQAAAAAAAAAAAAAAAAABEBH/2gAIAQMBAT8QVdn/AP/EABYRAQEBAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPxAAyX//xAAdEAEAAwACAwEAAAAAAAAAAAABABEhMUGhscHR/9oACAEBAAE/ECqi0uqfsL6q4w15liKRpyfYHk7LrnesQ4nGV+ould1Wmf/Z'); background-size: cover; display: block;"
4400 ></span>
4401 <img
4402 class="gatsby-resp-image-image"
4403 alt="missile"
4404 title="missile"
4405 src="/static/94942153f05fff73adbf2b72216ed795/6aca1/missile.jpg"
4406 srcset="/static/94942153f05fff73adbf2b72216ed795/d2f63/missile.jpg 163w,
4407 /static/94942153f05fff73adbf2b72216ed795/c989d/missile.jpg 325w,
4408 /static/94942153f05fff73adbf2b72216ed795/6aca1/missile.jpg 650w,
4409 /static/94942153f05fff73adbf2b72216ed795/7c09c/missile.jpg 975w,
4410 /static/94942153f05fff73adbf2b72216ed795/01ab0/missile.jpg 1300w,
4411 /static/94942153f05fff73adbf2b72216ed795/d2602/missile.jpg 4032w"
4412 sizes="(max-width: 650px) 100vw, 650px"
4413 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4414 loading="lazy"
4415 />
4416 </a>
4417 </span></p>
4418 <p><span
4419 class="gatsby-resp-image-wrapper"
4420 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4421 >
4422 <a
4423 class="gatsby-resp-image-link"
4424 href="/static/c5d7694dc4304c2cf704b8ee257ff1ba/d2602/parallax.jpg"
4425 style="display: block"
4426 target="_blank"
4427 rel="noopener"
4428 >
4429 <span
4430 class="gatsby-resp-image-background-image"
4431 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAwQA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQP/2gAMAwEAAhADEAAAAUSaiZPkw//EABoQAAMBAAMAAAAAAAAAAAAAAAABAhEDEhP/2gAIAQEAAQUCinaxnrBxOujdmI//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAVEQEBAAAAAAAAAAAAAAAAAAAQIf/aAAgBAgEBPwGH/8QAGxAAAgEFAAAAAAAAAAAAAAAAADEBECIyQWH/2gAIAQEABj8CVMi1muig/8QAGhAAAwEAAwAAAAAAAAAAAAAAAAERIVFhgf/aAAgBAQABPyFecq9mkGlxomheYxlM0Dnd4f/aAAwDAQACAAMAAAAQ+M//xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPxAn/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oACAECAQE/EDY//8QAHBABAAICAwEAAAAAAAAAAAAAAQARMVEhYXHB/9oACAEBAAE/EKw0Xm/ItYF+xquKRcMuTqPF9yne2+SYOpsDbH//2Q=='); background-size: cover; display: block;"
4432 ></span>
4433 <img
4434 class="gatsby-resp-image-image"
4435 alt="parallax"
4436 title="parallax"
4437 src="/static/c5d7694dc4304c2cf704b8ee257ff1ba/6aca1/parallax.jpg"
4438 srcset="/static/c5d7694dc4304c2cf704b8ee257ff1ba/d2f63/parallax.jpg 163w,
4439 /static/c5d7694dc4304c2cf704b8ee257ff1ba/c989d/parallax.jpg 325w,
4440 /static/c5d7694dc4304c2cf704b8ee257ff1ba/6aca1/parallax.jpg 650w,
4441 /static/c5d7694dc4304c2cf704b8ee257ff1ba/7c09c/parallax.jpg 975w,
4442 /static/c5d7694dc4304c2cf704b8ee257ff1ba/01ab0/parallax.jpg 1300w,
4443 /static/c5d7694dc4304c2cf704b8ee257ff1ba/d2602/parallax.jpg 4032w"
4444 sizes="(max-width: 650px) 100vw, 650px"
4445 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4446 loading="lazy"
4447 />
4448 </a>
4449 </span></p>
4450 <p><span
4451 class="gatsby-resp-image-wrapper"
4452 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4453 >
4454 <a
4455 class="gatsby-resp-image-link"
4456 href="/static/986e00cad4152a58664883e8a3d330f1/7c297/phone.jpg"
4457 style="display: block"
4458 target="_blank"
4459 rel="noopener"
4460 >
4461 <span
4462 class="gatsby-resp-image-background-image"
4463 style="padding-bottom: 114.7239263803681%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAXABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAIDBAX/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgD/2gAMAwEAAhADEAAAAd8OVTLcwjAlgK//xAAdEAACAQQDAAAAAAAAAAAAAAACAwEAEBESExQi/9oACAEBAAEFAtRGmTGktHPZ8MbyBfFf/8QAFREBAQAAAAAAAAAAAAAAAAAAESD/2gAIAQMBAT8BY//EABcRAAMBAAAAAAAAAAAAAAAAAAABERD/2gAIAQIBAT8BiJv/xAAaEAACAwEBAAAAAAAAAAAAAAAAIQEQEQIx/9oACAEBAAY/AkPBHjI5m8r/xAAdEAADAQABBQAAAAAAAAAAAAAAAREhMUFRYXGx/9oACAEBAAE/IWgpvwfXBJ6XKwXrHEr0GrGp2iU7EmiXI8j/2gAMAwEAAgADAAAAECfXgP/EABYRAQEBAAAAAAAAAAAAAAAAABARAf/aAAgBAwEBPxC6af/EABcRAAMBAAAAAAAAAAAAAAAAAAABERD/2gAIAQIBAT8QkiBZ/8QAGxABAQADAQEBAAAAAAAAAAAAAREAITFBcYH/2gAIAQEAAT8QojQIKkYFEAg469c0pPFbiWPVX0uDBKY46nMmk/Wao83m4GPRyITsM//Z'); background-size: cover; display: block;"
4464 ></span>
4465 <img
4466 class="gatsby-resp-image-image"
4467 alt="phone"
4468 title="phone"
4469 src="/static/986e00cad4152a58664883e8a3d330f1/6aca1/phone.jpg"
4470 srcset="/static/986e00cad4152a58664883e8a3d330f1/d2f63/phone.jpg 163w,
4471 /static/986e00cad4152a58664883e8a3d330f1/c989d/phone.jpg 325w,
4472 /static/986e00cad4152a58664883e8a3d330f1/6aca1/phone.jpg 650w,
4473 /static/986e00cad4152a58664883e8a3d330f1/7c09c/phone.jpg 975w,
4474 /static/986e00cad4152a58664883e8a3d330f1/01ab0/phone.jpg 1300w,
4475 /static/986e00cad4152a58664883e8a3d330f1/7c297/phone.jpg 3007w"
4476 sizes="(max-width: 650px) 100vw, 650px"
4477 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4478 loading="lazy"
4479 />
4480 </a>
4481 </span></p>
4482 <p><span
4483 class="gatsby-resp-image-wrapper"
4484 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4485 >
4486 <a
4487 class="gatsby-resp-image-link"
4488 href="/static/edeea8b83f4d379392bbc93402181f2f/d2602/plot.jpg"
4489 style="display: block"
4490 target="_blank"
4491 rel="noopener"
4492 >
4493 <span
4494 class="gatsby-resp-image-background-image"
4495 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEBQb/xAAVAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABi0efqFxBj//EABgQAQEBAQEAAAAAAAAAAAAAAAECAwAR/9oACAEBAAEFAroQzhyQ9l6dL8e//8QAFxEAAwEAAAAAAAAAAAAAAAAAAQIQEf/aAAgBAwEBPwFTk//EABYRAQEBAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPwFNn//EABkQAAIDAQAAAAAAAAAAAAAAAAABEBExMv/aAAgBAQAGPwKjlZo4pM0//8QAGRAAAwEBAQAAAAAAAAAAAAAAAAEhETFB/9oACAEBAAE/Icq6IUHcElzYZavGKI7g16TP/9oADAMBAAIAAwAAABC3P//EABgRAAIDAAAAAAAAAAAAAAAAAAABESEx/9oACAEDAQE/EESoen//xAAWEQEBAQAAAAAAAAAAAAAAAAABABH/2gAIAQIBAT8QbGQX/8QAHRABAAIBBQEAAAAAAAAAAAAAAQARITFBUWFxof/aAAgBAQABPxC3KmlrIdXzFOhu5K+wRaaLG0y5QM1HimYB08uGu9wO5//Z'); background-size: cover; display: block;"
4496 ></span>
4497 <img
4498 class="gatsby-resp-image-image"
4499 alt="plot"
4500 title="plot"
4501 src="/static/edeea8b83f4d379392bbc93402181f2f/6aca1/plot.jpg"
4502 srcset="/static/edeea8b83f4d379392bbc93402181f2f/d2f63/plot.jpg 163w,
4503 /static/edeea8b83f4d379392bbc93402181f2f/c989d/plot.jpg 325w,
4504 /static/edeea8b83f4d379392bbc93402181f2f/6aca1/plot.jpg 650w,
4505 /static/edeea8b83f4d379392bbc93402181f2f/7c09c/plot.jpg 975w,
4506 /static/edeea8b83f4d379392bbc93402181f2f/01ab0/plot.jpg 1300w,
4507 /static/edeea8b83f4d379392bbc93402181f2f/d2602/plot.jpg 4032w"
4508 sizes="(max-width: 650px) 100vw, 650px"
4509 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4510 loading="lazy"
4511 />
4512 </a>
4513 </span></p>
4514 <p><span
4515 class="gatsby-resp-image-wrapper"
4516 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4517 >
4518 <a
4519 class="gatsby-resp-image-link"
4520 href="/static/7a57d968e5242926589df2368be6cad0/d2602/power.jpg"
4521 style="display: block"
4522 target="_blank"
4523 rel="noopener"
4524 >
4525 <span
4526 class="gatsby-resp-image-background-image"
4527 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAwABBP/EABUBAQEAAAAAAAAAAAAAAAAAAAAC/9oADAMBAAIQAxAAAAE+0lqdjj//xAAbEAACAQUAAAAAAAAAAAAAAAAAAQIDERMhQf/aAAgBAQABBQJbfCMS6Rmpn//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAEDAQE/AVn/xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAgEBPwEJ/8QAGBAAAgMAAAAAAAAAAAAAAAAAAAEgITH/2gAIAQEABj8ChbNP/8QAGhAAAgIDAAAAAAAAAAAAAAAAAAEQMRFRkf/aAAgBAQABPyF8AqCEXDtDcP/aAAwDAQACAAMAAAAQU+//xAAWEQEBAQAAAAAAAAAAAAAAAAAAESH/2gAIAQMBAT8Qo1//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAIAQIBAT8QguP/xAAcEAEAAgMAAwAAAAAAAAAAAAABABEhMWFBUdH/2gAIAQEAAT8QtW8+CG8G+S1RNJ1yBW0K9fCZEQHU/9k='); background-size: cover; display: block;"
4528 ></span>
4529 <img
4530 class="gatsby-resp-image-image"
4531 alt="power"
4532 title="power"
4533 src="/static/7a57d968e5242926589df2368be6cad0/6aca1/power.jpg"
4534 srcset="/static/7a57d968e5242926589df2368be6cad0/d2f63/power.jpg 163w,
4535 /static/7a57d968e5242926589df2368be6cad0/c989d/power.jpg 325w,
4536 /static/7a57d968e5242926589df2368be6cad0/6aca1/power.jpg 650w,
4537 /static/7a57d968e5242926589df2368be6cad0/7c09c/power.jpg 975w,
4538 /static/7a57d968e5242926589df2368be6cad0/01ab0/power.jpg 1300w,
4539 /static/7a57d968e5242926589df2368be6cad0/d2602/power.jpg 4032w"
4540 sizes="(max-width: 650px) 100vw, 650px"
4541 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4542 loading="lazy"
4543 />
4544 </a>
4545 </span></p>
4546 <p><span
4547 class="gatsby-resp-image-wrapper"
4548 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4549 >
4550 <a
4551 class="gatsby-resp-image-link"
4552 href="/static/2d3dab732e50aa4b88aa8d0672a25fda/6f063/secret.jpg"
4553 style="display: block"
4554 target="_blank"
4555 rel="noopener"
4556 >
4557 <span
4558 class="gatsby-resp-image-background-image"
4559 style="padding-bottom: 131.2883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAaABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDBAH/xAAWAQEBAQAAAAAAAAAAAAAAAAACAAH/2gAMAwEAAhADEAAAAXeWgqAgddJ8rWIYv//EAB4QAAEEAQUAAAAAAAAAAAAAAAABAgMRIRITMTIz/9oACAEBAAEFArSRlJRF5VgxG3fRomkk7pwf/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAEREP/aAAgBAwEBPwF5CH//xAAXEQADAQAAAAAAAAAAAAAAAAAAARAR/9oACAECAQE/AUbf/8QAGhAAAgMBAQAAAAAAAAAAAAAAAAEQITEREv/aAAgBAQAGPwJVwyFPhlJmIc//xAAdEAEBAQACAgMAAAAAAAAAAAABABEhMUFRYaHR/9oACAEBAAE/IdYn0n8TiOob85YXgHEPEJE1DxZcVaG19uJ4x1f/2gAMAwEAAgADAAAAEBvosP/EABcRAQEBAQAAAAAAAAAAAAAAAAARASH/2gAIAQMBAT8Q1dR0h//EABYRAAMAAAAAAAAAAAAAAAAAAAABEf/aAAgBAgEBPxBnGUUrP//EABoQAQADAQEBAAAAAAAAAAAAAAEAESExUWH/2gAIAQEAAT8QaDTaPI2gM2yUjKSuqdAT7BmwrDJWLi2qJI6nXb2IYpSzJq/dxAsd8jQAz//Z'); background-size: cover; display: block;"
4560 ></span>
4561 <img
4562 class="gatsby-resp-image-image"
4563 alt="secret"
4564 title="secret"
4565 src="/static/2d3dab732e50aa4b88aa8d0672a25fda/6aca1/secret.jpg"
4566 srcset="/static/2d3dab732e50aa4b88aa8d0672a25fda/d2f63/secret.jpg 163w,
4567 /static/2d3dab732e50aa4b88aa8d0672a25fda/c989d/secret.jpg 325w,
4568 /static/2d3dab732e50aa4b88aa8d0672a25fda/6aca1/secret.jpg 650w,
4569 /static/2d3dab732e50aa4b88aa8d0672a25fda/7c09c/secret.jpg 975w,
4570 /static/2d3dab732e50aa4b88aa8d0672a25fda/01ab0/secret.jpg 1300w,
4571 /static/2d3dab732e50aa4b88aa8d0672a25fda/6f063/secret.jpg 2475w"
4572 sizes="(max-width: 650px) 100vw, 650px"
4573 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4574 loading="lazy"
4575 />
4576 </a>
4577 </span></p>
4578 <p><span
4579 class="gatsby-resp-image-wrapper"
4580 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4581 >
4582 <a
4583 class="gatsby-resp-image-link"
4584 href="/static/75ed3e19f967cb450e0a86ee5a2d5e10/ca211/sign.jpg"
4585 style="display: block"
4586 target="_blank"
4587 rel="noopener"
4588 >
4589 <span
4590 class="gatsby-resp-image-background-image"
4591 style="padding-bottom: 108.58895705521472%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAWABQDASIAAhEBAxEB/8QAGAABAQADAAAAAAAAAAAAAAAAAAQCAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAACAQD/2gAMAwEAAhADEAAAAdU9cGlzJFZyiGoFf//EAB0QAAICAgMBAAAAAAAAAAAAAAECAAMRIxIhIjH/2gAIAQEAAQUCtG0MIGBlo9D5QuUddnHEr6X/xAAWEQEBAQAAAAAAAAAAAAAAAAAQAQL/2gAIAQMBAT8Bpo//xAAWEQEBAQAAAAAAAAAAAAAAAAAQAQL/2gAIAQIBAT8Bhk//xAAcEAABAwUAAAAAAAAAAAAAAAAAAhARICExQeH/2gAIAQEABj8CW2Cd8psf/8QAHBABAQEAAwADAAAAAAAAAAAAAREAITFBUXGB/9oACAEBAAE/IQad2hgcvWLsZz6PBnhDcrPcwekn7kCJmxBL87//2gAMAwEAAgADAAAAEOTHv//EABYRAQEBAAAAAAAAAAAAAAAAAAEAIf/aAAgBAwEBPxBIxDYMv//EABcRAQEBAQAAAAAAAAAAAAAAAAEAESH/2gAIAQIBAT8Q7JQZSu3/xAAeEAEAAwABBQEAAAAAAAAAAAABABEhMUFhkbHBcf/aAAgBAQABPxAOTcE7ltxQD8jXmUVhmFSsWytSnkPp8QGyU97gNlb9E1ZG1OWn2KCddFl1ALmnyf/Z'); background-size: cover; display: block;"
4592 ></span>
4593 <img
4594 class="gatsby-resp-image-image"
4595 alt="sign"
4596 title="sign"
4597 src="/static/75ed3e19f967cb450e0a86ee5a2d5e10/6aca1/sign.jpg"
4598 srcset="/static/75ed3e19f967cb450e0a86ee5a2d5e10/d2f63/sign.jpg 163w,
4599 /static/75ed3e19f967cb450e0a86ee5a2d5e10/c989d/sign.jpg 325w,
4600 /static/75ed3e19f967cb450e0a86ee5a2d5e10/6aca1/sign.jpg 650w,
4601 /static/75ed3e19f967cb450e0a86ee5a2d5e10/7c09c/sign.jpg 975w,
4602 /static/75ed3e19f967cb450e0a86ee5a2d5e10/01ab0/sign.jpg 1300w,
4603 /static/75ed3e19f967cb450e0a86ee5a2d5e10/ca211/sign.jpg 2980w"
4604 sizes="(max-width: 650px) 100vw, 650px"
4605 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4606 loading="lazy"
4607 />
4608 </a>
4609 </span></p>
4610 <p><span
4611 class="gatsby-resp-image-wrapper"
4612 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4613 >
4614 <a
4615 class="gatsby-resp-image-link"
4616 href="/static/4b3492e94c48707b0b44fceaa14ad0b2/9568a/squib.jpg"
4617 style="display: block"
4618 target="_blank"
4619 rel="noopener"
4620 >
4621 <span
4622 class="gatsby-resp-image-background-image"
4623 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAQFA//EABYBAQEBAAAAAAAAAAAAAAAAAAEDAP/aAAwDAQACEAMQAAABmmrJlCkImxLanSuTRP/EAB4QAAICAQUBAAAAAAAAAAAAAAEDAAISBBARFCEx/9oACAEBAAEFAr/FyuQFU3aummuJ0uYhmCw4Ehnkrt//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAWEQADAAAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8BdP/EABwQAAIBBQEAAAAAAAAAAAAAAAARAQIQIDJBMf/aAAgBAQAGPwLy2g3BvA5rE+ncf//EAB0QAQEBAQABBQAAAAAAAAAAAAERACFBMVFhcbH/2gAIAQEAAT8hltEvjQd+MZVXzzGoQZXG/mOHyF+sNTGtEd5TD0xA5q++/9oADAMBAAIAAwAAABBD/wA8/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQAREP/aAAgBAwEBPxBOBthf/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARIf/aAAgBAgEBPxAeQytq/8QAHhABAQACAgIDAAAAAAAAAAAAAREAITFBUYFhofH/2gAIAQEAAT8QYSYLZeNcYQWWQa7fzLgwtIVfeGbbhnHxMHETnYykgO0RfvJTJIFtmGeS9svrDwMPFxs7wmiLN4Mu2nzn/9k='); background-size: cover; display: block;"
4624 ></span>
4625 <img
4626 class="gatsby-resp-image-image"
4627 alt="squib"
4628 title="squib"
4629 src="/static/4b3492e94c48707b0b44fceaa14ad0b2/6aca1/squib.jpg"
4630 srcset="/static/4b3492e94c48707b0b44fceaa14ad0b2/d2f63/squib.jpg 163w,
4631 /static/4b3492e94c48707b0b44fceaa14ad0b2/c989d/squib.jpg 325w,
4632 /static/4b3492e94c48707b0b44fceaa14ad0b2/6aca1/squib.jpg 650w,
4633 /static/4b3492e94c48707b0b44fceaa14ad0b2/7c09c/squib.jpg 975w,
4634 /static/4b3492e94c48707b0b44fceaa14ad0b2/01ab0/squib.jpg 1300w,
4635 /static/4b3492e94c48707b0b44fceaa14ad0b2/9568a/squib.jpg 3024w"
4636 sizes="(max-width: 650px) 100vw, 650px"
4637 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4638 loading="lazy"
4639 />
4640 </a>
4641 </span></p>
4642 <p><span
4643 class="gatsby-resp-image-wrapper"
4644 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4645 >
4646 <a
4647 class="gatsby-resp-image-link"
4648 href="/static/69d36a8d8a00d7b88158eb8b0e196916/02c19/test.jpg"
4649 style="display: block"
4650 target="_blank"
4651 rel="noopener"
4652 >
4653 <span
4654 class="gatsby-resp-image-background-image"
4655 style="padding-bottom: 119.6319018404908%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAYABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAQF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/9oADAMBAAIQAxAAAAG7HryQuZg1dAOQr//EABwQAAIDAAMBAAAAAAAAAAAAAAABAgMRBBITIv/aAAgBAQABBQK+Xx7TRHkvLnkHIbLLe600/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFhEAAwAAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/ASP/xAAaEAABBQEAAAAAAAAAAAAAAAAAAQIRICEy/9oACAEBAAY/AnQp0bf/xAAbEAADAAIDAAAAAAAAAAAAAAAAAREQIVFx8P/aAAgBAQABPyHniqYRPTWWekVN4lkUUGPNH//aAAwDAQACAAMAAAAQjwf/AP/EABcRAAMBAAAAAAAAAAAAAAAAAAABERD/2gAIAQMBAT8QrE8p/8QAFhEAAwAAAAAAAAAAAAAAAAAAAREg/9oACAECAQE/EEIf/8QAHBABAQEBAAIDAAAAAAAAAAAAAREAITFhcZHw/9oACAEBAAE/EDtIqx7kFE/McLDftIc1EIoH76zcWs1bSXsCGHUnEfNE1Hl1eIc9Hf/Z'); background-size: cover; display: block;"
4656 ></span>
4657 <img
4658 class="gatsby-resp-image-image"
4659 alt="test"
4660 title="test"
4661 src="/static/69d36a8d8a00d7b88158eb8b0e196916/6aca1/test.jpg"
4662 srcset="/static/69d36a8d8a00d7b88158eb8b0e196916/d2f63/test.jpg 163w,
4663 /static/69d36a8d8a00d7b88158eb8b0e196916/c989d/test.jpg 325w,
4664 /static/69d36a8d8a00d7b88158eb8b0e196916/6aca1/test.jpg 650w,
4665 /static/69d36a8d8a00d7b88158eb8b0e196916/7c09c/test.jpg 975w,
4666 /static/69d36a8d8a00d7b88158eb8b0e196916/01ab0/test.jpg 1300w,
4667 /static/69d36a8d8a00d7b88158eb8b0e196916/02c19/test.jpg 2673w"
4668 sizes="(max-width: 650px) 100vw, 650px"
4669 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4670 loading="lazy"
4671 />
4672 </a>
4673 </span></p></content:encoded></item><item><title><![CDATA['Escaping Web' Season One Retrospective]]></title><description><![CDATA[My friend Oz Nova and I started a podcast last year called Escaping Web. With a million and one podcasts out there, you might be wondering…]]></description><link>https://www.charlieharrington.com/escaping-web-season-one-retrospective</link><guid isPermaLink="false">https://www.charlieharrington.com/escaping-web-season-one-retrospective</guid><pubDate>Sun, 29 Mar 2020 00:00:00 GMT</pubDate><content:encoded><p>My friend <a href="https://twitter.com/oznova_">Oz Nova</a> and I started a podcast last year called <a href="https://escapingweb.github.io">Escaping Web</a>. With a million and one podcasts out there, you might be wondering about our catchy tagline? Our special hook? Our unique... perspective?</p>
4674 <blockquote>
4675 <p>Escaping Web is a show celebrating software engineers who've found their calling beyond routine web development.</p>
4676 </blockquote>
4677 <p>The idea for the podcast began with the observation that most engineers who "break into tech" (read: bootcamp grads or "non-traditional" aka non-CS degree backgrounds) typically begin their careers with web development roles (👋 hi!), and that these engineers often find themselves in a rut after a year or two. Bored at work. Feeling unfulfilled. Looking for something more... (name your favorite Disney or Pixar "I want..." song).</p>
4678 <p>As the head of <a href="https://bradfieldcs.com">Bradfield School of Computer Science</a> (an online school for working software engineers "seeking mastery"), Oz meets lots of interesting characters who fit this mold -- and many who've broken out... into fields like graphics, quantum computing, database design, etc.</p>
4679 <p>Our podcast interviews these engineers to learn what makes the tick, and more importantly, how they found something that they're passionate about at work. Was it a six-month sabbatical to intensely study computer architecture or discrete mathemathics? Or something else?</p>
4680 <p>Mostly, Escaping Web is a podcast about learning how to learn how to learn.</p>
4681 <p>We recorded six episodes last year with six amazing individuals. You can find more details and links to the audio below, along with the voluminous shownotes (which grew and grew with each episode).</p>
4682 <p>We recently decided to put the show on indefinite hiatus (don't worry, I'm calling it Season One), and I'll use the next section of this post to go through some of my own learnings about starting a podcast in 2019.</p>
4683 <h2>Starting a podcast</h2>
4684 <p>It's easy! Everyone says that, and I pretty much agree. Here's a simple list of the things you need to do to release your own podcast:</p>
4685 <ol>
4686 <li>Record one or two episodes of audio</li>
4687 <li>Edit them (optional)</li>
4688 <li>Upload them somewhere on the internet that is publically accessible</li>
4689 <li>Generate an RSS feed that can tell podcast directories where to find your audio files</li>
4690 <li>Tell the podcast directories (e.g. iTunes, Google Play, Spotify) the URL of your RSS feed</li>
4691 <li>Line up sponsorships with Squarespace, Linode, and a subscription coffee service (also optional, unfortunately)</li>
4692 </ol>
4693 <p>But that's it! Podcasting is still an open medium. There are also services that can take care of some of these steps for you. I'll run through my experiences with each step now.</p>
4694 <h3>1. Recording audio</h3>
4695 <p>This one should be easy, you'd think. But it's not. In fact, this one is the primary reason that we went on hiatus. Given the format of our show (bi-weekly interviews with guests), we had a large scheduling onus to coordinate between ourselves and our guest-of-the-week. I think this challenge alone put the pin in "season one" and I think I'll need to do a better job with coordinating schedules if we resume the show. One thought, which I'm only thinking of now and wish I'd thought of earlier, would be a Calendly link for guests to sign up on.</p>
4696 <p>Even if you're not doing a guest-of-the-week format, there's still a mental hurdle to clear of "coming up with something interesting to say" on each episode. That's where your show theme and host chemistry can really make or break you. Shows like <a href="https://www.flophousepodcast.com/">The Flop House</a> really nail this combo: not only are they individually and collectively hilarious, the "bad-movie-recap-of-the-week" format keeps things interesting and fun every single episode. Similarly, the Apple-oriented <a href="https://atp.fm/">Accidental Tech Podcast</a> has become less about Apple news for me, and more about the trials, tribulations, and just-plain-fun quirks of each of the hosts. This is where podcasts have this dangerous turn as a replacement for human-interaction. When I'm thinking to myself, "Oh, Casey, it's time to get a new computer," I know that ATP has me hooked. I'm happily hooked, but hooked nonetheless.</p>
4697 <p>If you do give Escaping Web a listen, you might agree with me that I think we missed the mark on developing host chemistry. We don't really have any <a href="https://mykewasright.com/post/159678908546/follow-up">Siracusan "follow-up"</a> segment to provide weekly continuity (and highlight the strange things in our personalities that keep us up at night). There's also no regular cadence on what "Oz and Charlie are up to."</p>
4698 <p>I still think we went the right way with the interview format for our show, but I'd love to strike a better balance in the future. A show like <a href="https://daringfireball.net/thetalkshow/">John Gruber's The Talk Show</a> does this incredibly well. It's an interview show with a short rotating cast of characters, which makes it feel contiguous. For example, I know that John has a stack of like 400 bundles of firewood in his garage because of an accidental Amazon overpurchase. It's this kind of magic that you seek.</p>
4699 <p>Weren't we supposed to be talking about recording audio? Oh, right. There are two formats for this, one of which should be ignored given our current collective quarantining:</p>
4700 <ol>
4701 <li>In-person, each with an individual mic and headphones</li>
4702 <li>Over Skype, using Skype Call Recorder (and Piezo as a backup)</li>
4703 </ol>
4704 <p>The goal here is to get separate tracks for each speaker so that you can mix and edit them separately. In the case of Escaping Web, we went with an unfortunate third option:</p>
4705 <ol start="3">
4706 <li>In-person, sharing one mic with no headphones (and occasionally over Skype with Charlie and Oz sharing one mic)</li>
4707 </ol>
4708 <p>Why? Why, oh why, did we go this route?</p>
4709 <p>Mostly because Oz already had this big ol' Blue Yeti mic, and we didn't want to invest more in a more expensive rig. This was probably (definitely) a mistake, which you can hear in some of the episodes like Grant's (sorry, Grant!). When you have one mic, even if it's a "good one", it's impossible to get the voices right. </p>
4710 <p>I, for one, am extremely loud. Oz, not so much. Our guests, somewhere in between. Can't you just fix this on the editing floor? Maybe... if you know what you're doing (I don't). Take this advice: like The Beatles discovered in the '60s, magic can happen in the studio edits when you've got multiple tracks to record on.</p>
4711 <p>I've gone on quite a bit already, and we're still in section one, but I should mention something about the Skype recording experience. It's great! I always hear podcast hosts grumbling something or other about Skype, so I was happy to discover that the experience of recording with <a href="https://www.ecamm.com/mac/callrecorder/">Skype Call Recorder</a> was seamless. It automatically splits your call into multiple tracks. I also fired up <a href="https://rogueamoeba.com/piezo/">Piezo</a> as a backup. We didn't go the full-redundancy route of having each person record their own audio and send it back to me, and we never got burned by this. But I can understand why this important. Also, we didn't go the route of ensuring that our remote guests had any sort of quality mics or anything like that. Maybe this is why <a href="https://www.npr.org/programs/fresh-air/">Terry Gross</a> has her guests go into a radio studio for their interviews. In our case, it was hard enough to align schedules that sending over recording equipment to our guests would have been a clear no-go.</p>
4712 <h3>2. Editing audio</h3>
4713 <p>This can be another rabbit hole time-warp. But it's also not that bad, and maybe even fun.</p>
4714 <p>Our shows ran about an hour or so, which meant we had about 90 minutes of audio, give-or-take. My goal was always to try to edit the show the same night that we recorded it. I wanted to just get it done. This worked the first few times, but less so after a while after the excitement of the first few episodes wore off. The edits became a looming thing on my to-do list for the next few days. One of those to-do's that's not that that hard... um, to do, but you've just got to sit down and do it. And ain't that just the challenge of all to-do lists?</p>
4715 <p>So, what is editing? I'm not totally sure. Here's what I tried to do:</p>
4716 <ul>
4717 <li>Remove weird loud noises and pops</li>
4718 <li>Remove background hum (the Bradfield office had an nice air conditioner thrumming at all times)</li>
4719 <li>Equalize and condense the tracks</li>
4720 <li>Make a funny intro segment (with music!)</li>
4721 </ul>
4722 <p>My tools were the free and awesome Audacity (I'm not sure if this works just yet on MacOS Catalina) and Apple Logic (although you could use the free GarageBand just as easily). I watched a few YouTube videos on editing podcasts, plunked around and did my best. The sound quality is pretty bad on some of the episodes. Someone with real editing chops could have made them sound better, but I think the real culprit was the lack of quality mic-ing of our voices.</p>
4723 <p>Admittedly, the thing I looked forward to most about the edits was coming up a variation on our intro music theme that I "composed" with the on-screen keyboard in Logic. I like to make weird little songs on Logic/Garageband while on flights, and this was too good an opportunity not to get a little musical and a little weird. Each episode is different. I hope you like them! </p>
4724 <h3>3-4. Hosting files and generating RSS feed</h3>
4725 <p>Now we're into what "folks in the biz" call "podcast hosting." I combined items 3 and 4 because these tend to go hand-in-hand.</p>
4726 <p>There are many podcast hosting companies out there. If you're following along, time was our biggest constraint in this entire endeavor, so we decided to outsource this part of the process rather than whip something together ourselves. </p>
4727 <p>I chose <a href="https://transistor.fm/?via=charles">Transistor.FM</a> for our podcast host. I listen to their maker podcast <a href="https://saas.transistor.fm/?via=charles">Build Your SASS</a>, and I've loved following along with Justin and Jon as they document their challenges and wins and concerns as they build Transistor from the ground up. In addition to making it really easy to upload your audio and generate your RSS feed, Transistor also provides (1) an automatic website generater for your show and (2) a listener analytic dashboard. They also provided fantastic customer support when I had a few questions about the process. Definitely worth the $20 a month for our young, growing show.</p>
4728 <p>Unfortunately, now that we've gone on hiatus and we don't know when we'll record our next episode, we decided to cancel our subscription. I've finally done the work of hacking together a simple solution to maintain an RSS feed for our show using public GitHub Pages repos to host our RSS feed and audio files. I think this will work fine, unless we suddenly get a ton of listeners out of the blue. But given what I saw in the Transistor analytics, I think we'll be okay for now.</p>
4729 <h3>5. Adding your RSS feed to the directories</h3>
4730 <p>One slight bummer is that, even with a podcast hosting service, you still need to submit your show to all the different providers separately. These are places like iTunes, Spotify, and Google. There's a few more, too. Stitcher is one. I don't know all of them off of the top of my head, but there are definitely a few more places that you can share your show. Still, the iTunes directory, Spotify, and Google are the big three that "matter."</p>
4731 <p>This is mainly a bummer in that, if you've made it this far, you're ready for your show to hit the world by storm! Don't forget to allocate enough time for your podcast to be (1) approved by iTunes and (2) appear in iTunes. If you're somebody who's expecting a big "launch day", be aware that this can take something like a week or so.</p>
4732 <p>To take the other side of this, I've actually now found it to be an advantage to have a direct relationship with each of the podcast directories, because I've been able to easily update the URL of <a href="https://escapingweb.github.io/rss/feed.rss">our RSS feed</a> to my new GitHub pages solution.</p>
4733 <p>Oh! Also, your show needs show art. Here's what I sketched up for Escaping Web, and Oz (for some strange reason) loved it, too.</p>
4734 <p><span
4735 class="gatsby-resp-image-wrapper"
4736 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4737 >
4738 <span
4739 class="gatsby-resp-image-background-image"
4740 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAEEBQP/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB0LMycVcmfcFzQf/EABwQAAICAgMAAAAAAAAAAAAAAAECAAMRMQQSE//aAAgBAQABBQJ2cSvOH2RDqwnK2nstxE5d7+v/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAADAAEFAAAAAAAAAAAAAAAAASECEBIxQYH/2gAIAQEABj8CinQ9y1nBSrEmOKPD/8QAGhABAAMBAQEAAAAAAAAAAAAAAQARITFBUf/aAAgBAQABPyG+KsWifQvGukec8g437swL4+SjpTUehQfSKpcdoZQAhR5P/9oADAMBAAIAAwAAABAjMD7/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAdEAEAAgIDAQEAAAAAAAAAAAABABEhYTFRgUFx/9oACAEBAAE/EGBW4BYlXenJ5uIiNpQDQXxyeQ8DPHbM85C0SzIVQuH0Yf1mcohpTphQZ2AF11co6QUNr9n/2Q=='); background-size: cover; display: block;"
4741 ></span>
4742 <img
4743 class="gatsby-resp-image-image"
4744 alt="ewlogo"
4745 title="ewlogo"
4746 src="/static/cf35047043f8693673a5235362b746ce/6aca1/ew.jpg"
4747 srcset="/static/cf35047043f8693673a5235362b746ce/d2f63/ew.jpg 163w,
4748 /static/cf35047043f8693673a5235362b746ce/c989d/ew.jpg 325w,
4749 /static/cf35047043f8693673a5235362b746ce/6aca1/ew.jpg 650w,
4750 /static/cf35047043f8693673a5235362b746ce/7c09c/ew.jpg 975w,
4751 /static/cf35047043f8693673a5235362b746ce/01ab0/ew.jpg 1300w,
4752 /static/cf35047043f8693673a5235362b746ce/12609/ew.jpg 3000w"
4753 sizes="(max-width: 650px) 100vw, 650px"
4754 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4755 loading="lazy"
4756 />
4757 </span></p>
4758 <p>Our spider has a Nand gate on its back. Cute.</p>
4759 <h3>6. Finding sponsors!</h3>
4760 <p>Whoops. We never did this one. This is especially unfortunate, because I think I'd do a great ad-read.</p>
4761 <p>Promotion is hard, in general. Not just for podcasts. Maybe obscure cream can rise to the top amid the noise vortex (mixed metaphor?), and I think we were at least semi-creamy, and now I've lost my train of thought. But... yeah, we didn't focus on promotion and I think we could have done a better job at this. I give us a thumbs-down on this effort.</p>
4762 <p>We did set up a Twitter account for the show (<a href="https://twitter.com/escapingweb">@escapingweb</a>), and Transistor helped by auto-tweeting each new episode as soon it went live. I also tried to get the companies of our guests to re-tweet us, but this was only semi-successful. Like I said (did I say this?), content marketing is hard. We just wanted to talk to interesting people and put our show out there to the world for people to hear it. And we achieved that, so that's nice.</p>
4763 <p>In fact, I wanted to share some of the things that folks Tweeted about our show that make me happy:</p>
4764 <blockquote class="twitter-tweet"><p lang="en" dir="ltr">Highly recommend the <a href="https://twitter.com/EscapingWeb?ref_src=twsrc%5Etfw">@EscapingWeb</a> podcast for any programmers out there <br><br>Lots of great stories from folks who entered the field untraditional and are killing it 💪🏼<a href="https://twitter.com/hashtag/100DaysOfCode?src=hash&amp;ref_src=twsrc%5Etfw">#100DaysOfCode</a> <a href="https://twitter.com/hashtag/coding?src=hash&amp;ref_src=twsrc%5Etfw">#coding</a> <a href="https://twitter.com/hashtag/webDev?src=hash&amp;ref_src=twsrc%5Etfw">#webDev</a> <a href="https://t.co/eolaWhEl4U">https://t.co/eolaWhEl4U</a></p>&mdash; Clifford Fajardo (@CliffordFajard0) <a href="https://twitter.com/CliffordFajard0/status/1169634884081483778?ref_src=twsrc%5Etfw">September 5, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
4765 <blockquote class="twitter-tweet"><p lang="en" dir="ltr">Agreed. <a href="https://twitter.com/EscapingWeb?ref_src=twsrc%5Etfw">@EscapingWeb</a> is one of my favorite podcasts. Excited to listen to the latest episode! <a href="https://t.co/h9xIyZ0klz">https://t.co/h9xIyZ0klz</a></p>&mdash; Madison Kanna (@Madisonkanna) <a href="https://twitter.com/Madisonkanna/status/1169748861734141953?ref_src=twsrc%5Etfw">September 5, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
4766 <blockquote class="twitter-tweet"><p lang="en" dir="ltr">Great episode, but it was really difficult to hear Grant</p>&mdash; Vegard Stikbakke (@vegardstikbakke) <a href="https://twitter.com/vegardstikbakke/status/1197577967884492805?ref_src=twsrc%5Etfw">November 21, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
4767 <p>Yes, I know, I know. The audio on the Grant episode is the worst. I'm sorry, world. But thank you to everyone who tweeted about the show and shared with their friends.</p>
4768 <p>Also, everyone says that leaving ratings on iTunes is "super-helpful", and I encouraged some folks to do that. We got thirteen 5-star reviews. Is that good? Probably not. But at least they were all fives! Two of my close friends even left a nice written review, and also one person I don't recognize at the moment (but probably also know personally).</p>
4769 <p><span
4770 class="gatsby-resp-image-wrapper"
4771 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
4772 >
4773 <span
4774 class="gatsby-resp-image-background-image"
4775 style="padding-bottom: 45.39877300613497%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABYlAAAWJQFJUiTwAAABKklEQVQoz52SAW+CMBCF+///GkGdTNQQRCowrQQQFWhhvPWKLMS4ZdklX15L78q7tszzPDiOgyzL0Pc9KEin47quDVX1O00jwTgPQUw3eqauG53cmIJXSCnND++3G1injRCDn/+H+gRq1YMVtwYiv+OuXciHi7ZtDV3XQSk1QC6qyjglN6RjHtFIZWDHmMN1FthsNlitVkbDMPxmt/MhhEAScbwvhzzXdbHdbvVRccPhcEAQ7JCeBdjpJOCu1yZxZK3ntDkV0ppIc13EYVkW5vM5ZrOZgea2Vtu2sXhbIjmewS6XAkkcI89zXK9XlGVpdIS+F8VlaEu3SRfwGgWpWrCPRyvBfo/9E0EQwPd9UBd/DZZpB1RM5zASRdFjzBHHCdK8pDf147Oa8gXwa61JSrs3xgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
4776 ></span>
4777 <img
4778 class="gatsby-resp-image-image"
4779 alt="itunesratings"
4780 title="itunesratings"
4781 src="/static/e9803cd60b32c872b51bf1cc82832262/a6d36/itunesratings.png"
4782 srcset="/static/e9803cd60b32c872b51bf1cc82832262/222b7/itunesratings.png 163w,
4783 /static/e9803cd60b32c872b51bf1cc82832262/ff46a/itunesratings.png 325w,
4784 /static/e9803cd60b32c872b51bf1cc82832262/a6d36/itunesratings.png 650w,
4785 /static/e9803cd60b32c872b51bf1cc82832262/e548f/itunesratings.png 975w,
4786 /static/e9803cd60b32c872b51bf1cc82832262/3c492/itunesratings.png 1300w,
4787 /static/e9803cd60b32c872b51bf1cc82832262/f36fd/itunesratings.png 2488w"
4788 sizes="(max-width: 650px) 100vw, 650px"
4789 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
4790 loading="lazy"
4791 />
4792 </span></p>
4793 <p>Still, these tweets and these ratings and the personal texts we both received meant a lot to me and Oz. So, thank you!</p>
4794 <h2>What I learned from season one of Escaping Web (other than how to make a podcast)</h2>
4795 <p><strong>Interviewing is challenging.</strong> Duh. But I really thought that I'd be pretty good at this right away, and I wasn't. It's a craft that demands practice. I hope to do more of it in the future, if you'll allow.</p>
4796 <p><strong>Take to time to explore things deeply.</strong> This is critical to finding your path at work, in life, in the woods, wherever. And, yet, it's so hard to do this if you have a Nintendo Switch (that's why I still only have a Super Nintendo). Our guests found this time in many different ways (from sabbaticals to switching teams at work to taking online courses).</p>
4797 <p><strong>Find a friend who's way smarter than you and spend time with them.</strong> This is me talking about Oz, by the way. Every time I hang out with Oz, I learn something about computers or education or whatever that blows my mind and leaves with an even bigger backlog reading list. Thanks for season one, Oz!</p>
4798 <p>And, with that, the retrospective is complete! Onto the shownotes and audio. There are links to amazing things below, and I hope you find them useful in your travels. Here's a short preview of the ones that kept coming up again and again, which probably means something that I'll leave to the reader as an exercise:</p>
4799 <ul>
4800 <li><a href="https://www.cs.virginia.edu/~robins/YouAndYourResearch.html">You and Your Research - Richard Hamming</a></li>
4801 <li><a href="https://en.wikipedia.org/wiki/How_to_Solve_It">How to Solve It - George Polya</a></li>
4802 <li><a href="https://mitpress.mit.edu/sites/default/files/sicp/index.html">SICP</a></li>
4803 <li><a href="https://www.nand2tetris.org/">Nand2Tetris</a></li>
4804 <li><a href="https://www.amazon.com/Flow-Psychology-Experience-Perennial-Classics/dp/0061339202">Flow: The Pyschology of Optimal Experience by Mihaly Csikszentmihalyi</a></li>
4805 </ul>
4806 <h2>Shownotes and audio for Escaping Web</h2>
4807 <h3>1: A Quantum of Sad Things Happening To Felix Tripier of IonQ</h3>
4808 <p>Felix Tripier is a software engineer at a quantum computing company. He's also eating cold lasagna out of a coffee mug.</p>
4809 <blockquote>
4810 <p>Find out how Felix Tripier went from high-school and college dropout (watch out Silicon Valley, he's a double-dropout) to working as web developer at several Bay Area startups to presenting his open-source research at a quantum computing conference, leading to his current gig as a software engineer at IonQ, a quantum computing company. Charlie and Oz dig into Felix's study habits and learning goals, briefly dip into theoretical computing topics before coming up for air, and altogether forget to introduce themselves, Felix, or the podcast itself.</p>
4811 </blockquote>
4812 <audio controls="controls">
4813 <source type="audio/mp3" src="https://escapingweb.github.io/audio/001_a_quantum_of_sad_things_happening_to_felix_tripier_of_ionq.mp3"></source>
4814 </audio>
4815 <p>Links and resources:</p>
4816 <ul>
4817 <li><a href="https://en.wikipedia.org/wiki/Grave_of_the_Fireflies">Grave of the Fireflies</a></li>
4818 <li>
4819 <p>Richard Hamming, "You And Your Research"</p>
4820 <ul>
4821 <li><a href="https://www.cs.virginia.edu/~robins/YouAndYourResearch.html">Transcript</a></li>
4822 <li><a href="https://www.youtube.com/watch?v=a1zDuOPkMSw">Video</a></li>
4823 </ul>
4824 </li>
4825 <li><a href="https://github.com/ftripier/Q-bug">Q-Bug: Felix's open source, web-based visual debugger for Quil quantum programs</a></li>
4826 <li><a href="https://twitter.com/FelixTripier%22">Felix Tripier on Twitter</a></li>
4827 </ul>
4828 <h3>2: Epic Slacking with Roo Harrigan of Slack</h3>
4829 <p>Roo Harrigan is the Strategic Engineering Projects Lead at Slack. She’s also the self-proclaimed Mentor Queen.</p>
4830 <blockquote>
4831 <p>Find out how Roo Harrigan went from an all-around generalist (product manager, project manager, sales demo'er, customer support agent) to a software engineer on the platform team at Slack, and now the Strategic Engineering Projects Lead reporting to Slack's CTO. Charlie and Oz dig into about Roo's tips for finding mentors, achieving flow state, and onboarding engineers. We also learn that Oz has never worked in the food services industry. Oh, and they remember to introduce themselves and Roo at the beginning. Progress!</p>
4832 </blockquote>
4833 <audio controls="controls">
4834 <source type="audio/mp3" src="https://escapingweb.github.io/audio/002_epic_slacking_with_roo_harrigan_of_slack.mp3"></source>
4835 </audio>
4836 <p>Links and resources:</p>
4837 <ul>
4838 <li><a href="https://medium.com/hackbright-capstone/day-29-30-and-beyond-reflections-on-the-first-thing-i-made-2f9e2660a04a">Roo's 2015 blog post about becoming an engineer</a></li>
4839 <li><a href="http://frontsttrattoria.com/">Front St. Trattoria, Red Bank, New Jersey</a></li>
4840 <li><a href="https://hackbrightacademy.com">Hackbright Academy</a></li>
4841 <li><a href="https://get.slack.help/hc/en-us/articles/208423427-Set-a-reminder">Slack Reminders: Roo's first project at Slack</a></li>
4842 <li><a href="https://www.amazon.com/Flow-Psychology-Experience-Perennial-Classics/dp/0061339202">Flow: The Pyschology of Optimal Experience by Mihaly Csikszentmihalyi</a></li>
4843 <li><a href="https://twitter.com/roo_harrigan">Roo Harrigan on Twitter</a></li>
4844 </ul>
4845 <h3>3: Getting Time Serious with Richie Artoul of Uber</h3>
4846 <p>Richie Artoul is a software engineer on Uber's Observability infrastructure team. He also really likes distributed timeseries databases, like a lot.</p>
4847 <blockquote>
4848 <p>Find out how Richie Artoul went from bootcamp grad to infrastructure engineer at Uber, where he's now building their open source metrics platform M3 and their open source distributed timeseries database M3DB. Charlie and Oz dive into Richie's tips for side projects, reading programming textbooks, finding mentors at work, and navigating large engineering orgs like Uber. We also learn that Richie recently took up Jiu-Jitsu (just like Oz) - and now Charlie's hoping for a Vader / Obi Wan style "roll" in their future.</p>
4849 </blockquote>
4850 <audio controls="controls">
4851 <source type="audio/mp3" src="https://escapingweb.github.io/audio/003_getting_time_serious_with_richie_artoul_of_uber.mp3"></source>
4852 </audio>
4853 <p>Links and resources:</p>
4854 <ul>
4855 <li><a href="https://eng.uber.com/optimizing-m3/">Optimizing MS: How Uber Halved Our Metrics Ingestion Latency by (Briefly) Forking the Go Compiler (Richie's post on the Uber engineering blog)</a></li>
4856 <li><a href="https://m3db.io/">M3 &#x26; M3DB</a></li>
4857 <li><a href="https://www.nand2tetris.org/">Nand2Tetris</a></li>
4858 <li><a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging">Rubber duck debugging</a></li>
4859 <li><a href="https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf">DynamoDB paper</a></li>
4860 <li><a href="https://www.foundationdb.org/">FoundationDB</a></li>
4861 <li><a href="https://jvns.ca/blog/brag-documents/">Write a brag document - Julia Evans</a></li>
4862 <li><a href="https://twitter.com/richardartoul">Richie Artoul on Twitter</a></li>
4863 </ul>
4864 <h3>4: A Graphic(s) Conversation with Lauren Budorick of Figma</h3>
4865 <p>Lauren Budorick is Graphics Software Engineer at Figma. She’s also read the 1989a .gif spec, yet still refuses to pronounce them as "JIFs."</p>
4866 <blockquote>
4867 <p>Find out how Lauren went from bootcamp grad to Graphics Software Engineer, first at Mapbox and now at Figma, where she's building their prototyping rendering engine. Charlie and Oz dig into Lauren's tips for learning linear algebra, how to see everything in the world as a triangle, and navigating a company without managers. Charlie and Oz also each try to recount stories of "achieving the impossible", and both painfully fail to remember the exact details of their anecdotes.</p>
4868 </blockquote>
4869 <audio controls="controls">
4870 <source type="audio/mp3" src="https://escapingweb.github.io/audio/004_a_graphics_conversation_with_lauren_budorick_of_figma.mp3"></source>
4871 </audio>
4872 <p>Links and resources:</p>
4873 <ul>
4874 <li><a href="https://twitter.com/lbudorick/status/1149118970932281344">Lauren’s 😢.gif tweet</a></li>
4875 <li><a href="https://www.w3.org/Graphics/GIF/spec-gif89a.txt">The 1989 .gif spec (which is still the latest release!)</a></li>
4876 <li><a href="http://www.olsenhome.com/gif/BOB_89A.GIF">Demo of the 1989 .gif spec (as rendered by a modern browser)</a></li>
4877 <li><a href="http://ata4.github.io/gifiddle/#http://www.olsenhome.com/gif/BOB_89A.GIF">Demo of the 1989 .gif spec (as it was intended, in all its feature-laden glory)</a></li>
4878 <li><a href="https://www.theatlantic.com/technology/archive/2019/03/hottest-chat-app-teens-google-docs/584857/">The hottest chap app for teens is... Google Docs - by Taylor Lorenz</a></li>
4879 <li><a href="https://www.youtube.com/watch?v=Opzomu6mgYk">The Story of the SuperFX Chip: The chip that made Star Fox on the Super Nintendo possible</a></li>
4880 <li><a href="https://www.goodreads.com/book/show/7090.The_Soul_of_a_New_Machine">The Soul of a New Machine</a></li>
4881 <li><a href="https://www.youtube.com/watch?v=YFGY2BeyfzA">Lauren’s talk at Nordic.js (The Matrix is Everywhere: A primer on projections in Web Graphics)</a></li>
4882 <li><a href="https://www.3blue1brown.com/essence-of-linear-algebra-page">3Blue1Brown Linear Algebra YouTube series</a></li>
4883 <li><a href="https://www.figma.com/">Figma</a></li>
4884 <li><a href="https://www.figma.com/blog/section/engineering/">Figma's Engineering blog</a></li>
4885 <li><a href="https://www.mapbox.com/">Mapbox</a></li>
4886 <li><a href="https://hackbrightacademy.com/">Hackbright Academy</a></li>
4887 <li><a href="https://www.goodreads.com/book/show/222146.Masters_of_Doom">Masters of Doom</a></li>
4888 <li><a href="https://twitter.com/lbudorick">Lauren Budorick on Twitter</a></li>
4889 </ul>
4890 <h3>5: Learning Your Stripes with Grant Wu of Stripe</h3>
4891 <p>Grant Wu is a Software Engineer at Stripe on the Ruby Application Infrastructure team. He also hates scary movies, but still can’t stop himself from reading their IMDB synopses.</p>
4892 <blockquote>
4893 <p>Charlie and Oz dig into Grant’s study habits for self-guided learning (like building a toy kernel and toy compiler) — and how those low-level projects influenced his path to Stripe. The gang gets into it over bootcamps, baking bread, and learning to play music — all with the broader theme of exploring what it means to be creative. To top it off, we learn that Oz has a joint degree in math(s) and the (Australian) law?!</p>
4894 </blockquote>
4895 <audio controls="controls">
4896 <source type="audio/mp3" src="https://escapingweb.github.io/audio/005_learning_your_stripes_with_grant_wu_of_stripe.mp3"></source>
4897 </audio>
4898 <p>Links and resources:</p>
4899 <ul>
4900 <li><a href="https://stripe.com">Stripe</a></li>
4901 <li><a href="https://sorbet.org/">Sorbet: Ruby Static Type Checker</a></li>
4902 <li><a href="https://increment.com/">Stripe’s Increment Magazine</a></li>
4903 <li><a href="https://press.stripe.com/">The Dream Machine, Stripe Press</a></li>
4904 <li><a href="https://www.goodreads.com/book/show/830502.It">IT by Stephen King</a></li>
4905 <li><a href="http://teachyourselfcs.com">teachyourselfcs.com</a></li>
4906 <li><a href="https://www.youtube.com/watch?v=v7s8m_-sA-Y">Matt O’Ree (Charlie’s guitar teacher in 8th grade and winner of the 2006 Guitar Center King of The Blues)</a></li>
4907 <li><a href="https://www.amazon.com/Flow-Psychology-Experience-Perennial-Classics/dp/0061339202">Flow: The Psychology of Optimal Experience by Mihaly Csikszentmihalyi (second time that Oz recommended this book!)</a></li>
4908 <li><a href="https://twitter.com/awkc1996/status/1171792460198174726">What happens when you use Excel for your genetics papers</a></li>
4909 <li><a href="https://www.hackreactor.com/">Hack Reactor</a></li>
4910 <li><a href="https://mitpress.mit.edu/sites/default/files/sicp/index.html">SICP</a></li>
4911 <li><a href="https://github.com/gw">Grant Wu on GitHub</a></li>
4912 <li><a href="https://www.linkedin.com/in/gwu01/">Grant Wu on LinkedIn</a></li>
4913 </ul>
4914 <h3>6: Algorithmically Speaking with Elliott Jin of Triplebyte</h3>
4915 <p>Elliott Jin is the Interview Team Tech Lead at Triplebyte. You're gonna hear a lot about Project Euler in this one.</p>
4916 <blockquote>
4917 <p>Charlie and Oz explore Elliott's path down the various intellectual rabbit holes (mostly Project Euler) that led him to software engineering at Dropbox, teaching the Algorithms course at Bradfield, and now leading Triplebyte's Interview tech team. Elliott also reveals the correct way to read a textbook (of which Charlie hadn't the foggiest), and Oz and Elliott try to explain to Charlie how they motivate students in their classes through "guided struggle."</p>
4918 </blockquote>
4919 <audio controls="controls">
4920 <source type="audio/mp3" src="https://escapingweb.github.io/audio/006_algorithmically_speaking_with_elliott_jin_of_triplebyte.mp3"></source>
4921 </audio>
4922 <p>Links and resources:</p>
4923 <ul>
4924 <li><a href="https://projecteuler.net/">Project Euler</a></li>
4925 <li><a href="https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628%22">K&#x26;R C book</a></li>
4926 <li><a href="https://en.wikipedia.org/wiki/Gorillas_(video_game)%22">Gorillas - QBasic</a></li>
4927 <li><a href="https://en.wikipedia.org/wiki/Windows_3.1x%22">Windows 3.1</a></li>
4928 <li><a href="https://en.wikipedia.org/wiki/Drugwars%22">Drugwars (TI-83)</a></li>
4929 <li><a href="https://en.wikipedia.org/wiki/Space_Trader_(Palm_OS)%22">Space Trader</a></li>
4930 <li><a href="https://twitter.com/jessitron/status/1183377840089305089%22">Computer Science Principles: Table of Contents tweet</a></li>
4931 <li><a href="https://web.nmsu.edu/~davidp/hpm-subm-2012-number-theory-course.pdf%22">Teaching Number Theory from Sophie Germain's Manuscripts: syllabus by David Pengelly</a></li>
4932 <li><a href="https://en.wikipedia.org/wiki/How_to_Solve_It%22">How to Solve It - George Polya</a></li>
4933 <li><a href="http://pleasingfungus.com/Silicon%20Zeroes/%22">Silicon Zeroes game</a></li>
4934 <li><a href="https://en.wikipedia.org/wiki/The_Diamond_Age%22">The Diamond Age - Neal Stephenson</a></li>
4935 <li><a href="https://www.amazon.com/Computability-Logic-George-S-Boolos/dp/0521701465%22">Computability and Logic</a></li>
4936 <li><a href="https://www.amazon.com/Elements-Programming-Alexander-Stepanov/dp/032163537X%22">Elements of Programming</a></li>
4937 <li><a href="https://mitpress.mit.edu/sites/default/files/sicp/index.html%22">SICP</a></li>
4938 <li><a href="http://augmentingcognition.com/ltm.html%22">Augmenting Long-term Memory: Michael Nielsen</a></li>
4939 <li><a href="https://www.amazon.com/Mind-Play-Shannon-Invented-Information/dp/1476766681%22">A Mind at Play (Claude Shannon biography) - Jimmy Soni and Rob Goodman</a></li>
4940 <li><a href="https://thebitplayer.com/%22">The Bit Player (Claude Shannon movie)</a></li>
4941 <li><a href="https://en.wikipedia.org/wiki/Useless_machine%22">Shannon's ultimate machine</a></li>
4942 <li><a href="https://www.dropbox.com%22">Dropbox</a></li>
4943 <li><a href="https://en.wikipedia.org/wiki/Formative_assessment%22">Formative assessment Wikipedia article</a></li>
4944 <li><a href="https://triplebyte.com/%22">Triplebyte</a></li>
4945 <li><a href="https://github.com/robot-dreams%22">Elliott Jin on GitHub</a></li>
4946 <li><a href="https://medium.com/@robot_dreams%22">Elliott Jin on Medium</a></li>
4947 </ul></content:encoded></item><item><title><![CDATA[Notes on Map and Compass Navigation]]></title><description><![CDATA[Prior to the shelter-in-place quarantine, my friend Jason and I had been going on what I like to call "sixth grade classtrips" to various…]]></description><link>https://www.charlieharrington.com/notes-on-map-and-compass-navigation</link><guid isPermaLink="false">https://www.charlieharrington.com/notes-on-map-and-compass-navigation</guid><pubDate>Fri, 27 Mar 2020 00:00:00 GMT</pubDate><content:encoded><p>Prior to the shelter-in-place quarantine, my friend Jason and I had been going on what I like to call "sixth grade classtrips" to various nerdy sites of interest in the Bay Area. First on our list was the Nike Missile site, which is right over the Golden Gate Bridge in Marin. I'll share my notes on that one soon. Our next big classtrip was scheduled to be the Stanford Linear Particle Accelerator Center in Menlo Park (maybe you've seen the signs for this on the highway and wondered...), but that's first on our list once everything's safe again.</p>
4948 <p>After the Nike Missile site, we decided to take a course on map &#x26; compass navigation through REI. Here's what we learned in four brisk hours standing on a field in Palo Alto:</p>
4949 <h2>Maps</h2>
4950 <ul>
4951 <li>Using a map is about using <strong>filters</strong> to reduce your search area</li>
4952 <li>Download <a href="https://www.usgs.gov/products/maps/topo-maps">free USGS maps</a>! Print online with <a href="https://caltopo.com/">Caltopo</a>. Best scale is 7 &#x26; 1/2 minute (there are 60 minutes in a degree)</li>
4953 <li>
4954 <p>SCOPE acronym:</p>
4955 <ul>
4956 <li>shape</li>
4957 <li>color</li>
4958 <li>orientation</li>
4959 <li>proportion (aka distance)</li>
4960 </ul>
4961 </li>
4962 <li>You don't have to go in order of the acronym!</li>
4963 </ul>
4964 <h3>Shape</h3>
4965 <ul>
4966 <li>Look for valleys, ridges, hills with flat tops, gulleys, hills in a row (e.g. 3 hills in a straight line), shape of the tree line</li>
4967 <li>
4968 <p>Hidden Valley Ranch Salad Dressing</p>
4969 <ul>
4970 <li>Another acronym. Used by the "military"</li>
4971 <li>Hills Valleys Ridges Spurs Depressions</li>
4972 <li>These are the landshapes to look for on your map and in the area</li>
4973 </ul>
4974 </li>
4975 </ul>
4976 <h3>Color</h3>
4977 <ul>
4978 <li>green = trees, white = not trees</li>
4979 <li>How to tell if you're in trees? Look up, if you see branches, you're in a green area of the map</li>
4980 <li>Sometimes white areas will have scrub brushes and plantlife, don't be confused</li>
4981 <li>Sometimes the tops of green hills will have white scrub / chaparral areas</li>
4982 <li>red or black indicates a human-made object</li>
4983 <li>trails are often not on a map. Many of the surveys were done decades ago, before these trails</li>
4984 </ul>
4985 <h3>Orientation</h3>
4986 <ul>
4987 <li>Use compass to orient the map, then place the map on the ground. This allows you to walk around the map in any direction and see the same things in real-life as the map</li>
4988 <li>Maps usually point North</li>
4989 </ul>
4990 <h3>Proportion (Distance)</h3>
4991 <ul>
4992 <li>Measured as the crow flies, not on the ground</li>
4993 <li>Maps have a scale on them</li>
4994 <li>You can use the string of your compass to trace a trail, and then make the string straight and taut to get the distance of a trail using the map's ruler / scale</li>
4995 <li>Good skill to learn: look at object in the distance and estimate the distance. Use a range and keep getting tighter (e.g. it's somewhere between 10 ft and a mile away)</li>
4996 <li>Make sure you know if your map is in miles or kilometers</li>
4997 </ul>
4998 <h3>Elevation</h3>
4999 <ul>
5000 <li>Measures vertical distance above sea level in feet</li>
5001 <li>5280 feet in a mile</li>
5002 <li>Contour lines have a standard elevation gap between them (e.g. 40 ft), but the land between them can fluctuate in real life as you pass through them (it's not a smooth linear ascent)</li>
5003 <li>Maps have "index" contour lines that state their elevation</li>
5004 <li>"Intermediate" contour lines don't state their elevation, but can be inferred from the index lines</li>
5005 <li>When lines are close together = STEEP!</li>
5006 <li>Fun experiment: slice a potato to measure contour lines! <em>Note I did this when I got home, as you can see here:</em></li>
5007 </ul>
5008 <p><span
5009 class="gatsby-resp-image-wrapper"
5010 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5011 >
5012 <a
5013 class="gatsby-resp-image-link"
5014 href="/static/cd59ff499985ae9c272723cfe801cbf8/d2602/p1.jpg"
5015 style="display: block"
5016 target="_blank"
5017 rel="noopener"
5018 >
5019 <span
5020 class="gatsby-resp-image-background-image"
5021 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAQL/xAAWAQEBAQAAAAAAAAAAAAAAAAADAAL/2gAMAwEAAhADEAAAAXLp4NLDCz//xAAaEAACAgMAAAAAAAAAAAAAAAABAwARAhIT/9oACAEBAAEFAlXqnM9IBQCwGT//xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPwEn/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGRAAAgMBAAAAAAAAAAAAAAAAABEBEBIh/9oACAEBAAY/AhTLdcN1/8QAGhABAQEAAwEAAAAAAAAAAAAAAQARMVGh0f/aAAgBAQABPyHIhO+MNllHq5wHq1v/2gAMAwEAAgADAAAAEGM//8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/EEA7P//EABYRAQEBAAAAAAAAAAAAAAAAABEBEP/aAAgBAgEBPxCrn//EABoQAQEBAQEBAQAAAAAAAAAAABEBACExUaH/2gAIAQEAAT8QCiS0dOXJfcV3kyB5IHX7invTYP3FIz2O/9k='); background-size: cover; display: block;"
5022 ></span>
5023 <img
5024 class="gatsby-resp-image-image"
5025 alt="potato1"
5026 title="potato1"
5027 src="/static/cd59ff499985ae9c272723cfe801cbf8/6aca1/p1.jpg"
5028 srcset="/static/cd59ff499985ae9c272723cfe801cbf8/d2f63/p1.jpg 163w,
5029 /static/cd59ff499985ae9c272723cfe801cbf8/c989d/p1.jpg 325w,
5030 /static/cd59ff499985ae9c272723cfe801cbf8/6aca1/p1.jpg 650w,
5031 /static/cd59ff499985ae9c272723cfe801cbf8/7c09c/p1.jpg 975w,
5032 /static/cd59ff499985ae9c272723cfe801cbf8/01ab0/p1.jpg 1300w,
5033 /static/cd59ff499985ae9c272723cfe801cbf8/d2602/p1.jpg 4032w"
5034 sizes="(max-width: 650px) 100vw, 650px"
5035 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5036 loading="lazy"
5037 />
5038 </a>
5039 </span></p>
5040 <p><span
5041 class="gatsby-resp-image-wrapper"
5042 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5043 >
5044 <a
5045 class="gatsby-resp-image-link"
5046 href="/static/95024dcb4b9020a04454a93913894a99/d2602/p2.jpg"
5047 style="display: block"
5048 target="_blank"
5049 rel="noopener"
5050 >
5051 <span
5052 class="gatsby-resp-image-background-image"
5053 style="padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAIDBAX/xAAVAQEBAAAAAAAAAAAAAAAAAAACA//aAAwDAQACEAMQAAABdHNfKswh/8QAGxAAAgEFAAAAAAAAAAAAAAAAAQISAAMQESH/2gAIAQEAAQUCkZDDW9heLX//xAAWEQEBAQAAAAAAAAAAAAAAAAARARD/2gAIAQMBAT8BoZ//xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAgEBPwEn/8QAGBAAAgMAAAAAAAAAAAAAAAAAABABIXH/2gAIAQEABj8Cx0Qv/8QAGxABAAIDAQEAAAAAAAAAAAAAAQARITFBUaH/2gAIAQEAAT8hXuYOJoJMduUHZ9gQOwlnk//aAAwDAQACAAMAAAAQEB//xAAXEQADAQAAAAAAAAAAAAAAAAABEBEx/9oACAEDAQE/EKBNX//EABcRAQADAAAAAAAAAAAAAAAAABEBEDH/2gAIAQIBAT8QTLlf/8QAGRABAQEBAQEAAAAAAAAAAAAAAREAMSFh/9oACAEBAAE/ELiUHjjmPCSm78J+OoESkfAaYaAZpdL9rv/Z'); background-size: cover; display: block;"
5054 ></span>
5055 <img
5056 class="gatsby-resp-image-image"
5057 alt="potato1"
5058 title="potato1"
5059 src="/static/95024dcb4b9020a04454a93913894a99/6aca1/p2.jpg"
5060 srcset="/static/95024dcb4b9020a04454a93913894a99/d2f63/p2.jpg 163w,
5061 /static/95024dcb4b9020a04454a93913894a99/c989d/p2.jpg 325w,
5062 /static/95024dcb4b9020a04454a93913894a99/6aca1/p2.jpg 650w,
5063 /static/95024dcb4b9020a04454a93913894a99/7c09c/p2.jpg 975w,
5064 /static/95024dcb4b9020a04454a93913894a99/01ab0/p2.jpg 1300w,
5065 /static/95024dcb4b9020a04454a93913894a99/d2602/p2.jpg 4032w"
5066 sizes="(max-width: 650px) 100vw, 650px"
5067 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5068 loading="lazy"
5069 />
5070 </a>
5071 </span></p>
5072 <p><span
5073 class="gatsby-resp-image-wrapper"
5074 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5075 >
5076 <a
5077 class="gatsby-resp-image-link"
5078 href="/static/7e4d6074a9f546fb80b165746dda1325/9568a/p5.jpg"
5079 style="display: block"
5080 target="_blank"
5081 rel="noopener"
5082 >
5083 <span
5084 class="gatsby-resp-image-background-image"
5085 style="padding-bottom: 133.12883435582822%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAECAwT/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAwEC/9oADAMBAAIQAxAAAAHfPsqdGWOZUDaJD//EABwQAAICAgMAAAAAAAAAAAAAAAACAREDEAQSQf/aAAgBAQABBQJ3XAJyZlpmh8aOKipqzsWea//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABoQAAICAwAAAAAAAAAAAAAAAAABESIwMTL/2gAIAQEABj8C1LEoOWyyKrB//8QAGxABAAIDAQEAAAAAAAAAAAAAAQARECExcUH/2gAIAQEAAT8h1BZjcuL8jKvQRUbEnOTybya9IOX/2gAMAwEAAgADAAAAEKs3sP/EABYRAQEBAAAAAAAAAAAAAAAAABEQAf/aAAgBAwEBPxBwhP/EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAECAQE/EFVX/8QAHhABAQACAgIDAAAAAAAAAAAAAREAITFBYaEQUZH/2gAIAQEAAT8QhRGl4DzgNpUMTIsKdM9uETJBqYBGvsb/AHKjUzUqQXsx017MvkD4LiJr38K3nP/Z'); background-size: cover; display: block;"
5086 ></span>
5087 <img
5088 class="gatsby-resp-image-image"
5089 alt="potato5"
5090 title="potato5"
5091 src="/static/7e4d6074a9f546fb80b165746dda1325/6aca1/p5.jpg"
5092 srcset="/static/7e4d6074a9f546fb80b165746dda1325/d2f63/p5.jpg 163w,
5093 /static/7e4d6074a9f546fb80b165746dda1325/c989d/p5.jpg 325w,
5094 /static/7e4d6074a9f546fb80b165746dda1325/6aca1/p5.jpg 650w,
5095 /static/7e4d6074a9f546fb80b165746dda1325/7c09c/p5.jpg 975w,
5096 /static/7e4d6074a9f546fb80b165746dda1325/01ab0/p5.jpg 1300w,
5097 /static/7e4d6074a9f546fb80b165746dda1325/9568a/p5.jpg 3024w"
5098 sizes="(max-width: 650px) 100vw, 650px"
5099 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5100 loading="lazy"
5101 />
5102 </a>
5103 </span></p>
5104 <ul>
5105 <li>Contour lines are shaped like upside down V when there is a small creek valley. The V points uphill, away from the water direction</li>
5106 </ul>
5107 <p><span
5108 class="gatsby-resp-image-wrapper"
5109 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5110 >
5111 <a
5112 class="gatsby-resp-image-link"
5113 href="/static/031c2a9d16ebcff723645aaf9a18bd29/9568a/v.jpg"
5114 style="display: block"
5115 target="_blank"
5116 rel="noopener"
5117 >
5118 <span
5119 class="gatsby-resp-image-background-image"
5120 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAECAwQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQD/2gAMAwEAAhADEAAAAfU05pKiBbXGzA//xAAZEAADAQEBAAAAAAAAAAAAAAAAAQIRAyL/2gAIAQEAAQUC0R0XvSa2qXvDEPlLf//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABsQAAEEAwAAAAAAAAAAAAAAAAEAECKBAgMR/9oACAEBAAY/AmMdlMUY50X6v//EABwQAQEAAQUBAAAAAAAAAAAAAAEAIRExQVFhkf/aAAgBAQABPyEXUpHIevEMwpMrctZeXfAwTl+x0E1Wur7f/9oADAMBAAIAAwAAABDvP8D/xAAWEQEBAQAAAAAAAAAAAAAAAAAQARH/2gAIAQMBAT8Q0h//xAAWEQEBAQAAAAAAAAAAAAAAAAAQARH/2gAIAQIBAT8Qwp//xAAbEAEBAAMBAQEAAAAAAAAAAAABEQAhMUFxof/aAAgBAQABPxCkoD3eUcRgWuFaOYhQ/MPXEAE1j0KiR6DYeY5TjxoyaavmAtbWMOTP/9k='); background-size: cover; display: block;"
5121 ></span>
5122 <img
5123 class="gatsby-resp-image-image"
5124 alt="vshape"
5125 title="vshape"
5126 src="/static/031c2a9d16ebcff723645aaf9a18bd29/6aca1/v.jpg"
5127 srcset="/static/031c2a9d16ebcff723645aaf9a18bd29/d2f63/v.jpg 163w,
5128 /static/031c2a9d16ebcff723645aaf9a18bd29/c989d/v.jpg 325w,
5129 /static/031c2a9d16ebcff723645aaf9a18bd29/6aca1/v.jpg 650w,
5130 /static/031c2a9d16ebcff723645aaf9a18bd29/7c09c/v.jpg 975w,
5131 /static/031c2a9d16ebcff723645aaf9a18bd29/01ab0/v.jpg 1300w,
5132 /static/031c2a9d16ebcff723645aaf9a18bd29/9568a/v.jpg 3024w"
5133 sizes="(max-width: 650px) 100vw, 650px"
5134 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5135 loading="lazy"
5136 />
5137 </a>
5138 </span></p>
5139 <ul>
5140 <li>Spurs look like shallow U shapes</li>
5141 </ul>
5142 <h2>Compass</h2>
5143 <ul>
5144 <li>Four skills to learn:</li>
5145 <li>
5146 <p>Real World</p>
5147 <ul>
5148 <li>(1) Follow a field bearing</li>
5149 <li>(2) Take a bearing of an object</li>
5150 </ul>
5151 </li>
5152 <li>
5153 <p>"Map World"</p>
5154 <ul>
5155 <li>(3) Find object on map and measure angle</li>
5156 <li>(4) Start with angle and draw on the map</li>
5157 </ul>
5158 </li>
5159 <li>Angles are always measured clockwise</li>
5160 </ul>
5161 <p><span
5162 class="gatsby-resp-image-wrapper"
5163 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5164 >
5165 <a
5166 class="gatsby-resp-image-link"
5167 href="/static/71c143c98f02af3d4502f27d460e7d2f/e12a7/compass.jpg"
5168 style="display: block"
5169 target="_blank"
5170 rel="noopener"
5171 >
5172 <span
5173 class="gatsby-resp-image-background-image"
5174 style="padding-bottom: 80.98159509202453%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMBAgX/xAAVAQEBAAAAAAAAAAAAAAAAAAABAP/aAAwDAQACEAMQAAAB0xdiYSD/AP/EABkQAAIDAQAAAAAAAAAAAAAAAAABAhARQf/aAAgBAQABBQLTuoRGv//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEABj8CX//EABoQAQACAwEAAAAAAAAAAAAAAAEAMRAhUeH/2gAIAQEAAT8hTUOnbUIAKIl9Mf/aAAwDAQACAAMAAAAQDy//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAaEAEBAQADAQAAAAAAAAAAAAABEQAhMXFB/9oACAEBAAE/EEokXuZh3qeDIKNv0HBrLzGc1i8wxxv/2Q=='); background-size: cover; display: block;"
5175 ></span>
5176 <img
5177 class="gatsby-resp-image-image"
5178 alt="compass"
5179 title="compass"
5180 src="/static/71c143c98f02af3d4502f27d460e7d2f/6aca1/compass.jpg"
5181 srcset="/static/71c143c98f02af3d4502f27d460e7d2f/d2f63/compass.jpg 163w,
5182 /static/71c143c98f02af3d4502f27d460e7d2f/c989d/compass.jpg 325w,
5183 /static/71c143c98f02af3d4502f27d460e7d2f/6aca1/compass.jpg 650w,
5184 /static/71c143c98f02af3d4502f27d460e7d2f/7c09c/compass.jpg 975w,
5185 /static/71c143c98f02af3d4502f27d460e7d2f/01ab0/compass.jpg 1300w,
5186 /static/71c143c98f02af3d4502f27d460e7d2f/e12a7/compass.jpg 2948w"
5187 sizes="(max-width: 650px) 100vw, 650px"
5188 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5189 loading="lazy"
5190 />
5191 </a>
5192 </span></p>
5193 <ul>
5194 <li>If you forget the compass directions, it spells "WE" left to right.</li>
5195 <li>True north (north pole) vs Magnetic North (which can move around!)</li>
5196 <li>Declination is number of angles from true north to magnetic north</li>
5197 <li>Always keep your moving needle on the declination</li>
5198 <li>Angle of declination needs to be known for your area (look this up!)</li>
5199 </ul>
5200 <p><span
5201 class="gatsby-resp-image-wrapper"
5202 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5203 >
5204 <a
5205 class="gatsby-resp-image-link"
5206 href="/static/19346824ea175b6cf4796d0c7637dbd4/dbde2/declination.jpg"
5207 style="display: block"
5208 target="_blank"
5209 rel="noopener"
5210 >
5211 <span
5212 class="gatsby-resp-image-background-image"
5213 style="padding-bottom: 26.380368098159508%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAME/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAd9AqI//xAAWEAEBAQAAAAAAAAAAAAAAAAAAAQL/2gAIAQEAAQUCZR//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAQ/9oACAEBAAY/An//xAAZEAACAwEAAAAAAAAAAAAAAAABIQAQETH/2gAIAQEAAT8hAx0Bdn//2gAMAwEAAgADAAAAEIAv/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAFxABAQEBAAAAAAAAAAAAAAAAASEAEf/aAAgBAQABPxAAgtwvOtMvNb//2Q=='); background-size: cover; display: block;"
5214 ></span>
5215 <img
5216 class="gatsby-resp-image-image"
5217 alt="declination"
5218 title="declination"
5219 src="/static/19346824ea175b6cf4796d0c7637dbd4/6aca1/declination.jpg"
5220 srcset="/static/19346824ea175b6cf4796d0c7637dbd4/d2f63/declination.jpg 163w,
5221 /static/19346824ea175b6cf4796d0c7637dbd4/c989d/declination.jpg 325w,
5222 /static/19346824ea175b6cf4796d0c7637dbd4/6aca1/declination.jpg 650w,
5223 /static/19346824ea175b6cf4796d0c7637dbd4/7c09c/declination.jpg 975w,
5224 /static/19346824ea175b6cf4796d0c7637dbd4/01ab0/declination.jpg 1300w,
5225 /static/19346824ea175b6cf4796d0c7637dbd4/dbde2/declination.jpg 2815w"
5226 sizes="(max-width: 650px) 100vw, 650px"
5227 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5228 loading="lazy"
5229 />
5230 </a>
5231 </span></p>
5232 <ul>
5233 <li>Angle of declination grows larger as you move north</li>
5234 <li>A compass in the Southern hemisphere isn't going to work very well</li>
5235 <li>North Star does point to true North (only object in sky that doesn't move as the Earth rotates)</li>
5236 </ul>
5237 <h2>Triangulation (my favorite part of the class!)</h2>
5238 <ul>
5239 <li>Brings it all together! This helps you "locate" yourself on a map.</li>
5240 <li>General overview: Finding your location a map by taking three field bearings, making their angles, and then putting compass on the map and drawing a straight line with their angles</li>
5241 <li>You definitely need to know exactly where the objects of interest are on the map for this to work (e.g. a mountaintop, a water-tower, etc)</li>
5242 <li>
5243 <p>Steps:</p>
5244 <ol>
5245 <li>Take bearing of an object by pointing compass at object and moving the dial until the needed is at the angle of declination</li>
5246 <li>Move compass to map and line it up so that it is pointing to angle of declination (but don't change anything on your compass dial!)</li>
5247 <li>Draw a straight line</li>
5248 <li>Repeat 2 - 3 times with different objects</li>
5249 </ol>
5250 </li>
5251 <li>At this point, you should have created a "triangle" where you are likely somewhere inside!</li>
5252 </ul></content:encoded></item><item><title><![CDATA[Dean of Discipline]]></title><description><![CDATA[When I first got to Red Bank Catholic High School, I’d hear some manner of the following all the time: “Your dad is the best” “Your dad is…]]></description><link>https://www.charlieharrington.com/dean-of-discipline</link><guid isPermaLink="false">https://www.charlieharrington.com/dean-of-discipline</guid><pubDate>Sun, 01 Mar 2020 00:00:00 GMT</pubDate><content:encoded><p>When I first got to Red Bank Catholic High School, I’d hear some manner of the following all the time:</p>
5253 <p>“Your dad is the best”</p>
5254 <p>“Your dad is so scary”</p>
5255 <p>“Your dad is the MAN”</p>
5256 <p>I’d nod along, because often these comments were from some of the more notorious characters at school. But eventually, I cracked:</p>
5257 <p>“Yeah, he is! But wait til you meet him. Because Mr. Harrington isn't my dad - he's my UNCLE!”</p>
5258 <p>Yes, I will finally admit here that Uncle Dennis gave me a bit of a head start at RBC. But only by throwing me alongside the summer detention kids as part of the St. James / RBC Maintenance Crew in the summers before freshman, sophomore, and junior years.</p>
5259 <p>To this day, it was the best job I’ve ever had. We smashed walls with a sledgehammer, we scraped gum off carpets with Gum-Freez (and sprayed each other in the arms with it, too), we changed the codes on every single locker. And we got a paycheck for it! One day we were told that there were 3 pigeons on the 4th floor. That was our mission. Good luck!</p>
5260 <p>I learned a lot about my uncle from his other charges in summer detention. Even though this man was their ostensible gate-keeper, they respected and adored him. When I told them that my internment was voluntary, they nodded. They understood.</p>
5261 <p>In my dad’s side of the family, the men are commanding, stubborn, strong, and loyal. (No offense, mom’s side). Grandpa Corn, his brothers Willie, Mike, and Dan, my dad.</p>
5262 <p>Uncle Dennis, Mr. Harrington, is no exception. He breaks the mold.</p>
5263 <p>Perhaps this comes from growing up in 1950s and 60s Keansburg - a place that is in my mind a combination of THE WONDER YEARS, A CHRISTMAS STORY, LEAVE IT TO BEAVER, and, of course, DENNIS THE MENACE.</p>
5264 <p>Getting a HARRINGTON in your morning homeroom wasn’t a curse - it was a blessing. You were invited into that inner sanctum of the cafeteria, that little pod with him and Mr. Mont, and you had your chance to make your stuttering case for the uniform violation or whatnot. But what it really was was a chance to get advice from the paragon of what Red Bank Catholic represents: learning, forgiveness, respect for others, self-dignity, community.</p>
5265 <p>Ask just about any RBC student and they’ll agree.</p>
5266 <p>For the last sixteen years, I’ve received countless out-of-the-blue messages from fellow students about Uncle Dennis.</p>
5267 <p>This is what they say:</p>
5268 <p>“Your uncle is the best.”</p>
5269 <p>“Your uncle saved my life”</p>
5270 <p>“Your uncle is the MAN.”</p></content:encoded></item><item><title><![CDATA[Bullet Train to Merlin's Grave]]></title><description><![CDATA[If this is the future, why are you the same? My cousin Megeen got married two weeks ago. Instead of the traditional night-before-the-wedding…]]></description><link>https://www.charlieharrington.com/bullet-train-to-merlins-grave</link><guid isPermaLink="false">https://www.charlieharrington.com/bullet-train-to-merlins-grave</guid><pubDate>Fri, 08 Nov 2019 00:00:00 GMT</pubDate><content:encoded><blockquote>
5271 <p>If this is the future, why are you the same?</p>
5272 </blockquote>
5273 <p>My cousin Megeen got married two weeks ago. Instead of the traditional night-before-the-wedding welcome party, she and her now-husband David Pope hosted POPESTOCK - a musical celebration featuring a variety of family-and-friends acts.</p>
5274 <p>It was amazing.</p>
5275 <p>The location for POPESTOCK was the mysterious Elk's Lodge in Red Bank, New Jersey. This rectangular shack of a building stands next to Riverside Gardens Park with perfect views of the Navesink River - the primo of primo locations in my hometown. For years, my cousins and I have wondered what lay beyond its unassuming doorway. We soon learned the answer: a really big bar and an even bigger empty room. In other words, exactly what we needed.</p>
5276 <p>Uncle Mike and Aunt Susan emceeded the festivities. They had one explicit rule: each act would be limited to one song. We've got a lot of musical cousins (see <a href="https://www.buffalorosemusic.com/">Buffalo Rose</a> or <a href="https://www.darkcitystrings.com/">Dark City Strings</a>).</p>
5277 <p>But there were three exceptions to that rule:</p>
5278 <ol>
5279 <li>David's old band <a href="https://lightninging.bandcamp.com/">Lightninging</a> performed the ENTIRE BACKSIDE of Abbey Road, straight-through. It was completely unreal. I felt like I was watching the Beatles, if the Beatles lasted into the 1970s and moved to Brooklyn and also worked at Vinny's Pizzaria. If you have the means, I highly recommend seeing Lightninging live.</li>
5280 <li>Aunt Eileen (the mother of the bride) and her old friend (along with her son-in-law Greg) played two songs that they wrote years ago, one of which was last performed only at her own wedding. I've always been told that Aunt Eileen could give Joni Mitchell a run for her money, and I was told right. Their set was reminiscent of the MUSIC FROM MALLARD concert series that my aunts and uncles put together in the mid-1980s at my Nana and Grandpa's house on Mallard Road in Middletown, New Jersey. These concerts pre-date my appearance on Earth, but I've got a handful of the cassette tapes in my possession and I still wear the MALLARD III t-shirt all the time.</li>
5281 <li>My set.</li>
5282 </ol>
5283 <p>Although, one could argue (and I did) that my performance was really more of a medley than two distinct songs. Further, I think one could even argue that my set was less of a medley and more of a complete disaster.</p>
5284 <p>Allow me to explain.</p>
5285 <p>I've written a six-fingered handful of songs in my life, but the two that seem to echo in eternity are called MERLIN'S GRAVE and BULLET TRAIN. These two have been battle-tested and laughed at across many-a-campfire with my cousins over years.</p>
5286 <p>You see, neither of them are very good. Nor am I a good singer. But you can't tell me that they aren't groovy. </p>
5287 <p>My vision for the one-song set was this: I play the entire Merlin's Grave up to the jam section, which would turn into this epic Mike Oldfield's Tubular Bells style as I introduce additional instruments, one at a time. First, banjo by my cousin Jack. Then, mandolin by my cousin Michael. Finally, electric guitar by my cousin Peter. To cap it off, I'd come in with some harmonica on top of it all. I put together a quick-and-dirty take of my vision on my laptop a few days before the wedding and emailed it to my cousins, which you can listen to here:</p>
5288 <iframe width="560" height="315" src="https://www.youtube.com/embed/8UCJSqumSgg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
5289 <p>So far, so good. Simple. One-song. No Bullet Train. I was attempting to be a rules-follower.</p>
5290 <p>But you can't stop the bullet train once it goes off the rails...</p>
5291 <iframe width="560" height="315" src="https://www.youtube.com/embed/WFA1TjSE6L0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
5292 <p>We are <strong>Hotdog Johnny and the Shady Oaks</strong>:</p>
5293 <ul>
5294 <li>Charlie Harrington - Vocals, Acoustic Guitar, Harmonica</li>
5295 <li>Michael Byrnes - Mandolin, Vocals</li>
5296 <li>Jack Byrnes - Banjo</li>
5297 <li>Aidan Byrnes - Drums</li>
5298 <li>Peter Clabby - Electric Guitar</li>
5299 <li>Alex "The Grones" Groneman - Acoustic Guitar</li>
5300 <li>Some dude no one knew - Bass</li>
5301 <li>Tommy Clabby - Sound engineer</li>
5302 </ul></content:encoded></item><item><title><![CDATA[Summer Wind]]></title><description><![CDATA[Newport, Rhode Island A film photo I took with my friend Kristen's old camera. Alternative title: Kite Armada.]]></description><link>https://www.charlieharrington.com/summer-wind</link><guid isPermaLink="false">https://www.charlieharrington.com/summer-wind</guid><pubDate>Tue, 10 Sep 2019 00:00:00 GMT</pubDate><content:encoded><p><span
5303 class="gatsby-resp-image-wrapper"
5304 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5305 >
5306 <a
5307 class="gatsby-resp-image-link"
5308 href="/static/122831651add0d67a1e0dc8f814101f0/f21dd/summerwind.jpg"
5309 style="display: block"
5310 target="_blank"
5311 rel="noopener"
5312 >
5313 <span
5314 class="gatsby-resp-image-background-image"
5315 style="padding-bottom: 66.25766871165644%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAAD/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAWaE0qEQJP/EABkQAAMBAQEAAAAAAAAAAAAAAAABAhIDEf/aAAgBAQABBQJdINSeoyhyM//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABgQAAMBAQAAAAAAAAAAAAAAAAABMSAy/9oACAEBAAY/AukVFx//xAAcEAACAQUBAAAAAAAAAAAAAAAAATERIUFhkdH/2gAIAQEAAT8hZ9hMjsaXRYEUVZkj/9oADAMBAAIAAwAAABBrL//EABYRAAMAAAAAAAAAAAAAAAAAAAARYf/aAAgBAwEBPxBQcP/EABcRAAMBAAAAAAAAAAAAAAAAAAABEUH/2gAIAQIBAT8Qr0p//8QAHBABAAIDAAMAAAAAAAAAAAAAAQARIVGBMbHx/9oACAEBAAE/EKyutPcLtQaE+WgAAM6ggrkvxDTFvk//2Q=='); background-size: cover; display: block;"
5316 ></span>
5317 <img
5318 class="gatsby-resp-image-image"
5319 alt="email"
5320 title="email"
5321 src="/static/122831651add0d67a1e0dc8f814101f0/6aca1/summerwind.jpg"
5322 srcset="/static/122831651add0d67a1e0dc8f814101f0/d2f63/summerwind.jpg 163w,
5323 /static/122831651add0d67a1e0dc8f814101f0/c989d/summerwind.jpg 325w,
5324 /static/122831651add0d67a1e0dc8f814101f0/6aca1/summerwind.jpg 650w,
5325 /static/122831651add0d67a1e0dc8f814101f0/7c09c/summerwind.jpg 975w,
5326 /static/122831651add0d67a1e0dc8f814101f0/01ab0/summerwind.jpg 1300w,
5327 /static/122831651add0d67a1e0dc8f814101f0/f21dd/summerwind.jpg 3583w"
5328 sizes="(max-width: 650px) 100vw, 650px"
5329 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5330 loading="lazy"
5331 />
5332 </a>
5333 </span></p>
5334 <p><em>Newport, Rhode Island</em></p>
5335 <p>A film photo I took with my friend <a href="http://www.kristineugenio.com/">Kristen</a>'s old camera. Alternative title: <em>Kite Armada.</em></p></content:encoded></item><item><title><![CDATA[Relay]]></title><description><![CDATA[I opened up Logic on a whim tonight and found the beginnings of this song, just sitting there, from a previous flight or some other bored…]]></description><link>https://www.charlieharrington.com/relay</link><guid isPermaLink="false">https://www.charlieharrington.com/relay</guid><pubDate>Tue, 02 Apr 2019 00:00:00 GMT</pubDate><content:encoded><iframe width="560" height="315" src="https://www.youtube.com/embed/TAogrz_UZV0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
5336 <p>I opened up <em>Logic</em> on a whim tonight and found the beginnings of this song, just sitting there, from a previous flight or some other bored evening. I think I probably ruined anything good about this song with the new middle section, but I swear it sounded good in my head(phones).</p>
5337 <p>The bouncing ball animation was created with the <a href="https://editor.p5js.org/">p5.js web editor</a>, which is both awesome and easy to use. Don't take my word for it -- try out this code (not exactly the same as in the video, but probably cooler) and you'll see how fun p5.js / processing can be for kids of all ages.</p>
5338 <div class="gatsby-highlight" data-language="javascript"><pre class="language-javascript"><code class="language-javascript"><span class="token keyword">function</span> <span class="token function">setup</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
5339 <span class="token function">createCanvas</span><span class="token punctuation">(</span><span class="token number">400</span><span class="token punctuation">,</span> <span class="token number">400</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
5340 <span class="token function">background</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
5341 <span class="token punctuation">}</span>
5342
5343 <span class="token keyword">function</span> <span class="token function">draw</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
5344 <span class="token function">circle</span><span class="token punctuation">(</span>mouseX<span class="token punctuation">,</span> mouseY<span class="token punctuation">,</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
5345 <span class="token punctuation">}</span></code></pre></div></content:encoded></item><item><title><![CDATA[An Afternoon with Arduino]]></title><description><![CDATA[For the last eight years or so, I've been carrying around an Arduino (not literally on my person, but, you know, amongst my treasures…]]></description><link>https://www.charlieharrington.com/afternoon-with-arduino</link><guid isPermaLink="false">https://www.charlieharrington.com/afternoon-with-arduino</guid><pubDate>Thu, 28 Mar 2019 00:00:00 GMT</pubDate><content:encoded><p>For the last eight years or so, I've been carrying around an <a href="https://www.arduino.cc/">Arduino</a> (not literally on my person, but, you know, amongst my treasures), waiting for just the right time to start tinkering with it.</p>
5346 <p>That time, it turns out, was yesterday afternoon. This post outlines some of things I've learned so far.</p>
5347 <h3>Ard-what-now?</h3>
5348 <p>An Arduino is a <strong>microcontroller</strong> board. The board contains a CPU (central processing unit) along with some I/O (input / output) connections. You can think about it as a small circuit - a circuit that happens to contain a programmable computer on a chip. A chip that you can learn to easily program.</p>
5349 <p>Here's a picture of my Arduino (of the <a href="https://store.arduino.cc/usa/arduino-uno-rev3">Uno</a> varietal):</p>
5350 <p><span
5351 class="gatsby-resp-image-wrapper"
5352 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5353 >
5354 <a
5355 class="gatsby-resp-image-link"
5356 href="/static/5136bc8af49a005eba462180a3bf7000/9568a/uno.jpg"
5357 style="display: block"
5358 target="_blank"
5359 rel="noopener"
5360 >
5361 <span
5362 class="gatsby-resp-image-background-image"
5363 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMCBP/EABcBAAMBAAAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAZJbl9jBVy1I1uEf/8QAGBABAAMBAAAAAAAAAAAAAAAAAQACEhH/2gAIAQEAAQUCylTsqKbVLMrMncEKk//EABgRAAMBAQAAAAAAAAAAAAAAAAABAhEh/9oACAEDAQE/Aatp8FZiMP/EABkRAAIDAQAAAAAAAAAAAAAAAAACARARIf/aAAgBAgEBPwFVjOkqbX//xAAZEAACAwEAAAAAAAAAAAAAAAAAMQEQETL/2gAIAQEABj8C2YOBD0U0r//EAB4QAQACAQQDAAAAAAAAAAAAAAEAETEhQVGBYZGh/9oACAEBAAE/IcQjzN87XLAg7lgCJtMek4iu1stxxDZoK4+wxpfuf//aAAwDAQACAAMAAAAQ+8g+/8QAGREAAgMBAAAAAAAAAAAAAAAAABEBIUFR/9oACAEDAQE/EEQSqxmCcP/EABgRAAMBAQAAAAAAAAAAAAAAAAABESFR/9oACAECAQE/EGqGuFdKz//EAB0QAQEAAgIDAQAAAAAAAAAAAAERACExQVFxgZH/2gAIAQEAAT8QDqJhX3zgkpOgJlqOyJcdi0CqdHH3FlaB5T3igu8F0hoxD5Jb3gKr9ZOwPbP/2Q=='); background-size: cover; display: block;"
5364 ></span>
5365 <img
5366 class="gatsby-resp-image-image"
5367 alt="Uno"
5368 title="Uno"
5369 src="/static/5136bc8af49a005eba462180a3bf7000/6aca1/uno.jpg"
5370 srcset="/static/5136bc8af49a005eba462180a3bf7000/d2f63/uno.jpg 163w,
5371 /static/5136bc8af49a005eba462180a3bf7000/c989d/uno.jpg 325w,
5372 /static/5136bc8af49a005eba462180a3bf7000/6aca1/uno.jpg 650w,
5373 /static/5136bc8af49a005eba462180a3bf7000/7c09c/uno.jpg 975w,
5374 /static/5136bc8af49a005eba462180a3bf7000/01ab0/uno.jpg 1300w,
5375 /static/5136bc8af49a005eba462180a3bf7000/9568a/uno.jpg 3024w"
5376 sizes="(max-width: 650px) 100vw, 650px"
5377 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5378 loading="lazy"
5379 />
5380 </a>
5381 </span></p>
5382 <p>I love the MADE IN ITALY mark in the upper left.</p>
5383 <p>The microprocessor (the computer chip) is the long flat black rectangle near the bottom-right corner of the device. It has 28 pins (14 on each side). Along the top edge of the Arduino you can see a strip of black input pins - these are the Arduino's "digital" pins (meaning that they can either be "on" or "off"). Below the CPU on the bottom right you can see another 5 "analog" pins (meaning that they can receive analog / continuous signals), and then a few "power" pins to the left to provide voltage, ground, and some other stuff that I don't know about yet.</p>
5384 <h4>Arduino vs Raspberry Pi</h4>
5385 <p>At this point, you might be asking yourself, "How is an Arduino different from a <a href="https://www.raspberrypi.org/">Raspberry Pi</a>?"</p>
5386 <p>It's a good question, since both are affordable, adorable, tiny little computers that you can buy for about $30 bucks or less. But the Raspberry Pi is a full-on Linux computer. An Arduino is... not. Instead, the Arduino computer holds just one program at a time. It stores this program in durable memory, so that you can turn the Arduino on and off, and it will still "remember" its latest program. It's more like a single-purpose device -- except you can dream up and build that single-purpose as many times as you want.</p>
5387 <h4>Open-source roots</h4>
5388 <p>The company behind Arduino is a non-profit and the Arduino itself is open-source - which means that anyone can build an Arduino board themselves. The original idea behind Arduino was to make a simple device that designers and artists could use for rapid prototyping of <em>physical computing</em> projects that use <strong>sensors</strong> (aka <em>inputs</em> like a keyboard or mouse or motion detectors) and <strong>actuators</strong> (aka <em>outputs</em> like a display or printer or lights) to interact and communicate with us human beans. Cool.</p>
5389 <p>Arduino is closely tied to the <a href="https://processing.org/">Processing community</a>. In fact, that's a bit of an understatement, since you actually write Processing code when writing programs for the Arduino -- and, just like in Processing, these programs are also called Sketches. I was happy to see this, since one of my earliest computing classes was <a href="https://twitter.com/blprnt">Jer Thorp</a>'s <a href="http://blog.blprnt.com/workshops">Introduction to Processing course</a> (which I unabashedly recommend, by the way).</p>
5390 <p>As I mentioned, anyone can download the open-source schematics for Arduino and build a board themeselves with basic components. But if you'd like to make your tinkering lifestyle easier, then I suggest picking up a pre-assembled Arduino from a retailer like <a href="https://www.makershed.com/">Makershed</a> or <a href="https://www.adafruit.com">Adafruit</a>. The kit I bought (eight years ago) is the <a href="https://www.makershed.com/products/make-getting-started-with-arduino-kit-special-edition">MAKE: Getting Started With Arduino Kit</a> -- the current version (v3) appears to be retailing for $79.99 bucks. IMHO, it's definitely worth it -- the kit comes along with a bunch of goodies that help you get started right away, like a breadboard, colorful wires, clickable switches, LEDs, sensors, and a friendly introductory book. I also picked up <a href="https://www.amazon.com/Arduino-Quick-Start-Guide-Quick-start-Guides/dp/1934356662">Arduino: A Quick-Start Guide</a> by <a href="https://twitter.com/maik_schmidt">Maik Schmidt</a>, and I've been enjoying this book as well.</p>
5391 <h3>Fun with LEDs</h3>
5392 <p>I believe you're legally required to write a program that blinks an LED on and off as your first project with Arduino.</p>
5393 <p>If you asked me a few days ago about LEDs - yeah, sure, I know about LEDs. Those little red lights in things like my Game Boy. Stands for... light emitting... diode.</p>
5394 <p>Great, you continue, what's a diode?</p>
5395 <p>Um.</p>
5396 <p>This is already one of the fun things about playing with Arduino. There are all sorts of basic electronics stuff that I sorta know about, but couldn't explain to a five-year-old or to a <a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging">rubber duck on my desk</a>. Or just don't know at all. But Arduino is helped me tackle these topics in a practical, tangible way.</p>
5397 <p>So, let's take a look at an LED together.</p>
5398 <p><span
5399 class="gatsby-resp-image-wrapper"
5400 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5401 >
5402 <a
5403 class="gatsby-resp-image-link"
5404 href="/static/cf793aa4e22bdb748b2369630827f146/9568a/led.jpg"
5405 style="display: block"
5406 target="_blank"
5407 rel="noopener"
5408 >
5409 <span
5410 class="gatsby-resp-image-background-image"
5411 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAQADAQAAAAAAAAAAAAAAAAMBAgUE/8QAFwEAAwEAAAAAAAAAAAAAAAAAAQIDAP/aAAwDAQACEAMQAAABtXx3R+iiK8zYxwKz/8QAGhAAAwEAAwAAAAAAAAAAAAAAAAECERAhMf/aAAgBAQABBQJYRct9HpOCzlWz/8QAFREBAQAAAAAAAAAAAAAAAAAAEAH/2gAIAQMBAT8BKf/EABURAQEAAAAAAAAAAAAAAAAAABAB/9oACAECAQE/ASH/xAAZEAABBQAAAAAAAAAAAAAAAAAAEBEgMeH/2gAIAQEABj8CGhq2f//EABwQAAICAgMAAAAAAAAAAAAAAAABESExgUFRkf/aAAgBAQABPyFkVkAKdCpgUdvRsFK2JDkJWYII/9oADAMBAAIAAwAAABAwJ33/xAAYEQACAwAAAAAAAAAAAAAAAAAAERAhQf/aAAgBAwEBPxCtFBn/xAAXEQEAAwAAAAAAAAAAAAAAAAABABAR/9oACAECAQE/EAthP//EABwQAQACAwEBAQAAAAAAAAAAAAEAESExQWGBkf/aAAgBAQABPxAUhDxgNS66H2GjCEAsBlYCgHwESrz+0CuKt5Nkuz2dpuf/2Q=='); background-size: cover; display: block;"
5412 ></span>
5413 <img
5414 class="gatsby-resp-image-image"
5415 alt="LED"
5416 title="LED"
5417 src="/static/cf793aa4e22bdb748b2369630827f146/6aca1/led.jpg"
5418 srcset="/static/cf793aa4e22bdb748b2369630827f146/d2f63/led.jpg 163w,
5419 /static/cf793aa4e22bdb748b2369630827f146/c989d/led.jpg 325w,
5420 /static/cf793aa4e22bdb748b2369630827f146/6aca1/led.jpg 650w,
5421 /static/cf793aa4e22bdb748b2369630827f146/7c09c/led.jpg 975w,
5422 /static/cf793aa4e22bdb748b2369630827f146/01ab0/led.jpg 1300w,
5423 /static/cf793aa4e22bdb748b2369630827f146/9568a/led.jpg 3024w"
5424 sizes="(max-width: 650px) 100vw, 650px"
5425 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5426 loading="lazy"
5427 />
5428 </a>
5429 </span></p>
5430 <p>See the longer pin / leg sticking out of the red part? That's the <strong>anode</strong> terminal. The anode is the positive end of the LED. The shorter leg is the <strong>cathode</strong> - the negative side. Electrons will flow from the anode to the cathode when connected. You'll want to connect the positive end to something providing voltage, and the negative end needs to be connected to ground. All diodes are polarized, meaning they have these distinct positive and negative sides. And LEDs (light emitting diodes) happen to provide illumination when they're connected to an active circuit.</p>
5431 <p>And they can be lots of pretty colors, too.</p>
5432 <p>Okay, so here's our legally-required sketch for blinking an LED connected to digital pin 13 every half-second.</p>
5433 <div class="gatsby-highlight" data-language="c++"><pre class="language-c++"><code class="language-c++">const int LED = 13;
5434
5435 void setup() {
5436 pinMode(LED, OUTPUT);
5437 }
5438
5439 void loop() {
5440 digitalWrite(LED, HIGH);
5441 delay(500);
5442 digitalWrite(LED, LOW);
5443 delay(500);
5444 }</code></pre></div>
5445 <p>Pretty simple, right? We first declare a constant variable for the pin we're using. The <code class="language-text">setup()</code> function will run once per program, right before the <code class="language-text">loop()</code> kicks off its infinite loop, so we'll just let the Arduino know that we want to set pin 13 to <code class="language-text">OUTPUT</code> mode. And then during our infinite loop, we'll toggle the voltage to the pin by passing <code class="language-text">HIGH</code> (5 volts) or <code class="language-text">LOW</code> (0 volts) to our pin 13 using the <code class="language-text">digitalWrite</code> function, pausing 500 milliseconds between these operations.</p>
5446 <p>If you're coming from the Processing world, then this program structure of <code class="language-text">setup()</code> and <code class="language-text">loop()</code> should look very familiar, since it's literally the same.</p>
5447 <p>The Arduino IDE provides an easy way to verify your programs compile before flashing them over to your actual Arduino, so I suggest clicking the <code class="language-text">Verify</code> button first. This will catch syntax errors, like pesky missing semi-colons.</p>
5448 <p>Next, we can set up our physical device.</p>
5449 <p>I'm going to stick the LED into the Arduino, with the anode leg going into pin 13 and the cathode leg into ground. Note here that pin 13 is a special pin on the Arduino that has a resister built-in. If you try this with any other pin the Arduino, then the LED will burn out.</p>
5450 <p>Finally, we can send our program from our computer to the Arduino over a USB connection by clicking the <code class="language-text">Upload</code> button in the IDE. Your Arduino should flash happily once its complete, and then it's off to the infinite races.</p>
5451 <p><img src="/7c4ea7182fa3fc012a5256b4bdb6dd00/blink.gif" alt="Binary Counting"></p>
5452 <p>Look at that blinker. Pretty great, huh? Note that this gif definitely speeds things up a bit.</p>
5453 <h3>Putting the "S" in USB</h3>
5454 <p>So, as I continued building stuff, I inevitably found myself wanting to <code class="language-text">console.log</code> the heck out of a program that wasn't working.</p>
5455 <p>Let's talk about printing stuff with Arduino.</p>
5456 <p>Your Arduino is connected to your computer via a USB cable. USB. USB. That has to stand for something, right? It does. It stands for "Universal Serial Bus." USB is a quote "industry standard" for communications between computers and peripherals. If you think back really hard to the time of Captain Marvel or even earlier, you might remember other ways that we connected peripherals to our computers -- like an dot matrix printer's parallel port or a PS/2 keyboard port. Well, in the time since Carol Danvers left us here to fend for ourselves, USB has taken over our hearts, minds, and wallets. But we're still using a "serial connection" when we're using USB devices - so we'll need to use the serial protocol to communicate with our Arduino.</p>
5457 <p>In other words, if we want to send or receive info from our Arduino program, we need to establish a serial connection with the device. Here's how you do that in a Processing sketch:</p>
5458 <div class="gatsby-highlight" data-language="c++"><pre class="language-c++"><code class="language-c++">const unsigned int BAUD_RATE = 9600;
5459
5460 void setup() {
5461 Serial.begin(BAUD_RATE);
5462 }
5463
5464 void loop() {
5465 Serial.println(&quot;Hello, world!&quot;);
5466 }</code></pre></div>
5467 <p>Baud rate, huh? I know this <code class="language-text">baud</code> term, too. Modems had baud rates, IIRC. Some Wikipedia-ing and Google-ing reveal that baud rates are the rates at which information is transferred in a serial channel. In this case, with a baud rate of 9600, we're transferring a max of 9600 bits per second. 9600 happens to be the standard baud rate for Arduinos, but I believe you can choose a different rate.</p>
5468 <p>To view your "console", you can click the "Serial Monitor" button in the IDE. </p>
5469 <p><span
5470 class="gatsby-resp-image-wrapper"
5471 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5472 >
5473 <a
5474 class="gatsby-resp-image-link"
5475 href="/static/486d5a5af4d5686a9ea7aabad18cdbc3/763a5/hello.png"
5476 style="display: block"
5477 target="_blank"
5478 rel="noopener"
5479 >
5480 <span
5481 class="gatsby-resp-image-background-image"
5482 style="padding-bottom: 52.760736196319016%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAACH0lEQVQoz42SS2sTURiG59+4EhdCf4S1lKpFKm66VEQQF4obLytXRcXSCFIiErBVK0VBIZY2bXrL5B6TzD3NRU1KsYg0ySQzeTyZJkVbKb7wzjdzzuHh/eZ8kpKvUqvsoig1EqlvhCMVFtYrzC+WWEuoJNUySaVCWikTzxZZjRssbmp8XDd4u2IyGzKYWTJ4E9KYmMsiXQkuMD7/gUv+AKPTAS76XzH2cpbxwDsUXWd7u0q1VqVer9NqtWg2m9h2A6dtg9vy7Dqi0iS4qSP51BzXl8PcXgpxNxLhQTTK/ViMeysbyPEUqqKgqKoHOqxO1+LhuB3vO5QsIVH/IeCNI4dbu7ukUkl0w0AXSfvAjiActtsDyrkKkmPvsSeAv2ybZrtNy3FwxWbta4Ev6TiFrS1M0xRt2gfAv1J2gb01basqEvZi9+W6rlerZYt0IoYhYJZlHQvsrxnlnX1gWyRzRLKuu+9dlS2NeDSCYZhewj9bPpKwFyIiJ/aB/9LPne8kBFDT9P/4h463p8qfkIYfTzLm8zEy9YzhySlRfQw+neLai+ekU3Hy+TyquOVGo9EDuj33ga4Ym/2urI05pBNnBjk9MsSp4SEGRs8zcOEcJ4fOcvnGVTEyOXEpRYql0sFoHKeC/B7JXH2CHprACj9CDT4k9voOsZlbhPw3WV/+TFTeJCGvYeSTVCyFkpnDUlIUTI1cNoOhZLwuCnqOTHCa30J1FzsyeaLHAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
5483 ></span>
5484 <img
5485 class="gatsby-resp-image-image"
5486 alt="Hello"
5487 title="Hello"
5488 src="/static/486d5a5af4d5686a9ea7aabad18cdbc3/a6d36/hello.png"
5489 srcset="/static/486d5a5af4d5686a9ea7aabad18cdbc3/222b7/hello.png 163w,
5490 /static/486d5a5af4d5686a9ea7aabad18cdbc3/ff46a/hello.png 325w,
5491 /static/486d5a5af4d5686a9ea7aabad18cdbc3/a6d36/hello.png 650w,
5492 /static/486d5a5af4d5686a9ea7aabad18cdbc3/e548f/hello.png 975w,
5493 /static/486d5a5af4d5686a9ea7aabad18cdbc3/3c492/hello.png 1300w,
5494 /static/486d5a5af4d5686a9ea7aabad18cdbc3/763a5/hello.png 2804w"
5495 sizes="(max-width: 650px) 100vw, 650px"
5496 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5497 loading="lazy"
5498 />
5499 </a>
5500 </span></p>
5501 <p>In addition to viewing received information, you can also send messages back to the Arduino in this monitor using the text input on the top panel and the <code class="language-text">Send</code> button. For example, you might write a program that toggled an LED on or off based on a specific input key.</p>
5502 <p>What if you don't want to use the Serial Monitor in the Arduino IDE? Maybe it's time to let the old ways die. I agree. If you're on a Mac, then you can try running the <code class="language-text">screen</code> command from your terminal, specifying both the name of your serial connection to your Arduino and the baud rate.</p>
5503 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token function">screen</span> <span class="token operator">&lt;</span>name_of_serial_connection<span class="token operator">></span> <span class="token number">9600</span></code></pre></div>
5504 <p>In my case, the name of the connection was <code class="language-text">/dev/cu.usbmodem14101</code>, which you can find in the <code class="language-text">Tools/Port</code> menu of the Arduino IDE.</p>
5505 <p>Word of warning, however. If you close this terminal window, it won't close the sesssion, and you'll be unable to Upload new programs to your Arduino. This is called a "detached screen" and it's annoying. You need to quit the screen somehow, and you can use this command to do so:</p>
5506 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token function">screen</span> -X -S <span class="token operator">&lt;</span>name_of_session<span class="token operator">></span> quit</code></pre></div>
5507 <p>Oh, to get the name of the detached session, you can type:</p>
5508 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token function">screen</span> -ls <span class="token builtin class-name">.</span></code></pre></div>
5509 <p>This whole serial communications thing opens up some interesting ideas, since you can have two way comms between your Arduino and something else. Forget Alexa. Not-okay, Google. Go away, Siri. Now you can build your own talking robotic best friend, instead. Hopefully gets some gears turning for you, too.</p>
5510 <h3>Counting in binary with LEDs</h3>
5511 <p>In general, life-goal-wise, I've been trying to get better at thinking and counting in binary, so I decided to build a little binary counter for my next Arduino project.</p>
5512 <div class="gatsby-highlight" data-language="c++"><pre class="language-c++"><code class="language-c++">const unsigned int LED_BIT0 = 12;
5513 const unsigned int LED_BIT1 = 11;
5514 const unsigned int LED_BIT2 = 10;
5515 const unsigned int LED_BIT3 = 9;
5516
5517 long result = 0;
5518
5519 void setup() {
5520 pinMode(LED_BIT0, OUTPUT);
5521 pinMode(LED_BIT1, OUTPUT);
5522 pinMode(LED_BIT2, OUTPUT);
5523 pinMode(LED_BIT3, OUTPUT);
5524 }
5525
5526 void loop() {
5527 result++;
5528 if (result == 16) {
5529 result = 0;
5530 }
5531 output_result(result);
5532 delay(500);
5533 }
5534
5535 void output_result(const long result) {
5536 digitalWrite(LED_BIT0, result &amp; B0001);
5537 digitalWrite(LED_BIT1, result &amp; B0010);
5538 digitalWrite(LED_BIT2, result &amp; B0100);
5539 digitalWrite(LED_BIT3, result &amp; B1000);
5540 }</code></pre></div>
5541 <p><img src="/9f9c59880917a658e0ecd9f3cd98d8ab/binary.gif" alt="Binary Counting"></p>
5542 <p>I'm not sure why the red LED isn't as bright as the other three LEDs. I tried swapping it out with another LED to no avail. But, hey, other than that, this thing works!</p>
5543 <p>I also learned that breadboards are great. Being able to run all the cathode sides of the LEDs to the bottom negative row of the breadboard, and then only connecting that row once to the Arduino's ground port is pretty darn helpful. I have more to learn and appreciate here, for sure.</p>
5544 <p>Also, this is the first time that I've really leveraged the power of the bitwise-and operator. I'm taking my <code class="language-text">result</code> and bitwise-and it with a binary number that represents a binary digit (1's, 2's, 4's, 8's) for each of the LEDs. The bitwise-and operation returns <code class="language-text">true</code> if <code class="language-text">result</code> and our binary number both contain a <code class="language-text">1</code> for the given binary digit. For example, let's look at the number <code class="language-text">3</code></p>
5545 <div class="gatsby-highlight" data-language="c++"><pre class="language-c++"><code class="language-c++">3 &amp; B0001; // true
5546 3 &amp; B0010; // true
5547 3 &amp; B0100; // false
5548 3 &amp; B1000; // false</code></pre></div>
5549 <p>The final trick here is that <code class="language-text">digitalWrite</code> function transforms <code class="language-text">true</code> boolean values into <code class="language-text">HIGH</code> (turn on the LED) and <code class="language-text">false</code> into <code class="language-text">LOW</code> (turn off the LED). So, for the number <code class="language-text">3</code> the LED for the <code class="language-text">1</code>'s digit and the <code class="language-text">2</code>'s digit should be lit, and the <code class="language-text">4</code>'s and <code class="language-text">8</code>'s should be off.</p>
5550 <p>That's pretty awesome and makes this code very concise. There's much more to explore here for me.</p>
5551 <h3>More tinkering</h3>
5552 <p>So, after a mere afternoon, I've learned a ton and had quite a bit of fun along the way.</p>
5553 <p>What's next, you ask? Well, resistors are still perplexing. I'm not sure yet how to determine what level of resistence is needed for a given situation. I've already fried an LED (a delightful puff of smoke wisps out during its last gasp of life), likely for this very reason. It's also really hard to read those colorful bands to try to determine their resistance level. This seems like it could be a great little computer vision / deep learning app. Or perhaps I should just use my multimeter more regularly.</p>
5554 <p>I'm also thinking more about the difference between analog and digital signals. Digital is binary (either on or off), whereas analog is continuous. Most of what we observe in life is an analog signal. So when we choose to digitize them, we need to choose specific moments to "sample" the values of the continuous signal. The Schmidt book explained that an audio CD takes a sample every 44,100 per second (or 44.1 kHz). Maybe this is why vinyl is back.</p>
5555 <p>I thinking that my obvious next project here with Arduino is to make an alarm clock with binary numbers. There are tons of neat examples of this project across the web, and I think it could be a good way to learn / improve my soldering skills, as well as my quick mental binary counting, especially while groggy in the middle of the night.</p></content:encoded></item><item><title><![CDATA[Novels with Giant Possibly Magical Libraries]]></title><description><![CDATA[I'm currently reading a fantastic novel where the protaganist - who is in her teens and lives in a sort-of convent for sightseers in the…]]></description><link>https://www.charlieharrington.com/novels-with-libraries</link><guid isPermaLink="false">https://www.charlieharrington.com/novels-with-libraries</guid><pubDate>Wed, 23 Jan 2019 00:00:00 GMT</pubDate><content:encoded><p>I'm currently reading a fantastic novel where the protaganist - who is in her teens and lives in a sort-of convent for sightseers in the middle of a glacier - is asked by the elders to choose a role for part-time work. Our hero considers two options:</p>
5556 <ul>
5557 <li>Become a pilot of paper-mache, semi-alive airplanes controlled by whistling</li>
5558 <li>Become a librarian</li>
5559 </ul>
5560 <p>I held my breath as I read further: <em>choose The Library!</em></p>
5561 <h3>Why Libraries?</h3>
5562 <p>There are two things that, when I encounter them in a book, immediately cause me to fall in love.</p>
5563 <ul>
5564 <li>The word <code class="language-text">palimpsest</code></li>
5565 <li>A giant, possibly magic, library (extra points for a Forbidden Section or two)</li>
5566 </ul>
5567 <p>The two are not unrelated. A <a href="https://en.wikipedia.org/wiki/Palimpsest">palimpsest</a> is a book that has been one or more books before, with the older knowledge hidden just beneath the surface of the parchment, waiting to be unearthed. A giant library must, invariably, contain books with once-known, now-forgotten knowledge, just beyond that locked door over there.</p>
5568 <p>But I have the key...</p>
5569 <p>I hereby present a list of the very best novels featuring giant libraries filled with secrets.</p>
5570 <h3>My List of Novels with Giant Libraries</h3>
5571 <ul>
5572 <li><a href="https://www.amazon.com/gp/product/0143034901/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0143034901&#x26;linkId=7b51c22444a8be59bcff15afc13efe51">La Sombra del Viento (The Shadow of the Wind)</a> - Carlos Ruiz Zafón</li>
5573 <li>
5574 <p>The Kingkiller Chronicles</p>
5575 <ul>
5576 <li><a href="https://www.amazon.com/gp/product/0756404746/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0756404746&#x26;linkId=d4b51238762ea3883b0ed9db5c9cfee1">The Name of the Wind</a> - Patrick Rothfuss</li>
5577 <li><a href="https://www.amazon.com/gp/product/0756407915/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0756407915&#x26;linkId=c4d23a503d1b93ef9455655661e16edc">The Wise Man's Fear</a> - Patrick Rothfuss</li>
5578 </ul>
5579 </li>
5580 <li><a href="https://www.amazon.com/gp/product/0544176561/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0544176561&#x26;linkId=57f7feea7ab107e4e2ac694e33798a0b">The Name of the Rose</a> - Umberto Eco</li>
5581 <li><a href="https://www.amazon.com/gp/product/B000FC12L4/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B000FC12L4&#x26;linkId=0fc0d40b2d8f75a34a52bd01814e3708">Lirael</a> - Garth Nix</li>
5582 <li><a href="https://www.amazon.com/gp/product/0553418629/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0553418629&#x26;linkId=efcb0fde52892489e0911d1bbf7b62f1">The Library at Mount Char</a> - Scott Hawkins</li>
5583 <li><a href="https://www.amazon.com/gp/product/0765356155/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0765356155&#x26;linkId=d34ad098edfb335746ed0e4530a99623">Jonathan Strange and Mr. Norrell</a> - Susanna Clarke</li>
5584 <li>
5585 <p>Harry Potter</p>
5586 <ul>
5587 <li><a href="https://www.amazon.com/gp/product/B00OHX65I2/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B00OHX65I2&#x26;linkId=0798e010bcb3334768f375e8258b7ab3">Harry Potter and the Sorcerer's Stone</a> - J.K. Rowling</li>
5588 <li><a href="https://www.amazon.com/gp/product/0545791324/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0545791324&#x26;linkId=b5cd0f1b4b5bbf36948989d265050520">Harry Potter and the Chamber of Secrets</a> - J.K. Rowling</li>
5589 <li><a href="https://www.amazon.com/gp/product/0439139600/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0439139600&#x26;linkId=a6ba2d6b1c2bfdac125d341989ff23e4">Harry Potter and the Goblet of Fire</a> - J.K. Rowling</li>
5590 </ul>
5591 </li>
5592 <li><a href="https://www.amazon.com/gp/product/B00SB32ST4/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B00SB32ST4&#x26;linkId=a296165c788623176aab44e4cd65db3b">Rainbows End</a> - Vernor Vinge</li>
5593 <li><a href="https://www.amazon.com/gp/product/0812515285/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0812515285&#x26;linkId=8b3d099da4cca9a239f336344773d2fd">A Fire Upon the Deep</a> - Vernor Vinge</li>
5594 <li><a href="https://www.amazon.com/gp/product/0812536355/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0812536355&#x26;linkId=6e0133d53af84b4532620de8ad19324e">A Deepness in the Sky</a> - Vernor Vinge</li>
5595 <li><a href="https://www.amazon.com/gp/product/006147410X/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=006147410X&#x26;linkId=acbaea0cf216d3102012a9c426e14f9d">Anathem</a> - Neal Stephenson</li>
5596 <li><a href="https://www.amazon.com/gp/product/0553380958/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0553380958&#x26;linkId=abf3caf9f77c64ef1503e437b7463153">Snow Crash</a> - Neal Stephenson</li>
5597 <li><a href="https://www.amazon.com/gp/product/1250037751/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1250037751&#x26;linkId=2a70e649d7428e557e654397bf8560c9">Mr. Penumbra's 24 Hour Bookstore</a> - Robin Sloan</li>
5598 <li><a href="https://www.amazon.com/gp/product/B004DI7HZ6/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B004DI7HZ6&#x26;linkId=6238642fb928a95804cd6bb997931bc3">A Discovery of Witches</a> - Deborah Harkness*</li>
5599 <li><a href="https://www.amazon.com/gp/product/9939518757/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=9939518757&#x26;linkId=53fb16307682363738f2eb5fe27115ae">The Library of Babel</a> - Jorge Luis Borges*</li>
5600 <li><a href="https://www.amazon.com/gp/product/B00ECTR26U/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B00ECTR26U&#x26;linkId=bd4c9c2c96287554af6e75458f70676b">The Pagemaster</a> - Todd Strasser*</li>
5601 <li><a href="https://www.amazon.com/gp/product/0385354304/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0385354304&#x26;linkId=61adf5d2fcd0eef14bafe8f09d5de4f3">The Strange Library</a> - Haruki Murakami*</li>
5602 <li><a href="https://www.amazon.com/gp/product/0156453800/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0156453800&#x26;linkId=73c9318067a8daf3c6f834e43b73d8b8">Invisible Cities</a> - Italo Calvino*</li>
5603 <li><a href="https://www.amazon.com/gp/product/1400079276/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1400079276&#x26;linkId=4bb1046b55e17d2c4f2b0599564a5d48">Kafka on the Shore</a> - Haruki Murakami*</li>
5604 <li><a href="https://www.amazon.com/gp/product/B07GCSJ72W/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B07GCSJ72W&#x26;linkId=fbd212d64827a7deb8331c6203995002">In the Stacks</a> - Scott Lynch*</li>
5605 <li><a href="https://www.amazon.com/gp/product/0451473132/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0451473132&#x26;linkId=d89f0625907fa90f3b53ab893148d10d">Ink and Bone</a> - Rachel Caine*</li>
5606 <li><a href="https://www.amazon.com/gp/product/0062225677/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0062225677&#x26;linkId=9ad495e0fd9c2c3f9a419ba8e2ede7fa">The Colour of Magic (Discworld #1)</a> - Terry Pratchett*</li>
5607 <li><a href="https://www.amazon.com/gp/product/0156439611/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0156439611&#x26;linkId=917a65fce2cbea549967980ec24cd37f">If on a Winter's Night a Traveler</a> - Italo Calvino</li>
5608 <li><a href="https://www.amazon.com/gp/product/1401284779/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=1401284779&#x26;linkId=c35338e2e6f497a3bba6e99781c05e42">Preludes &#x26; Nocturnes (The Sandman #1)</a> - Neil Gaiman*</li>
5609 <li><a href="https://www.amazon.com/gp/product/B002AU7MEK/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B002AU7MEK&#x26;linkId=cf8dd146c099100b6452a22611d7719b">Wireless</a> - Charles Stross*</li>
5610 <li><a href="https://www.amazon.com/gp/product/B075JL493G/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B075JL493G&#x26;linkId=6a0cf43320e0c1ea1aa7ec2d484de7c6">The Book of the New Sun</a> - Gene Wolfe*</li>
5611 <li><a href="https://www.amazon.com/gp/product/B00J3EU5RC/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=B00J3EU5RC&#x26;linkId=ab1c6d1ceed5c7bc06227161b7b3fbe2">Eon (The Way #1)</a> - Greg Bear*</li>
5612 <li><a href="https://www.amazon.com/gp/product/0345353129/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0345353129&#x26;linkId=d2322df408c9bf0ef16b37ece60fffe9">Protector</a> - Larry Niven*</li>
5613 <li><a href="https://www.amazon.com/gp/product/0143105299/ref=as_li_qf_asin_il_tl?ie=UTF8&#x26;tag=whatrocks09-20&#x26;creative=9325&#x26;linkCode=as2&#x26;creativeASIN=0143105299&#x26;linkId=979204c2b6688608dc3e13a40827f384">The Book of Sand</a> - Jorge Luis Borges*</li>
5614 </ul>
5615 <p>*<em>Indicates that I haven't read this book (yet), but rest assured that it was recommended by a semi-close friend, cousin of mine, or <a href="https://news.ycombinator.com/item?id=19108230">Hacker News commenter</a>.</em></p>
5616 <p>Let me know on Twitter (<a href="https://twitter.com/whatrocks">@whatrocks</a>) if I'm missing anything and I'll update the list, almost like a palimpsest.</p></content:encoded></item><item><title><![CDATA[Borrowing Library Books for Your Kindle]]></title><description><![CDATA[Basically, do it. It's super easy. I'll show you how in this post. How to borrow library books for your Kindle Obtain a Kindle from Amazon…]]></description><link>https://www.charlieharrington.com/borrowing-library-books-for-your-kindle</link><guid isPermaLink="false">https://www.charlieharrington.com/borrowing-library-books-for-your-kindle</guid><pubDate>Sun, 13 Jan 2019 00:00:00 GMT</pubDate><content:encoded><p>Basically, do it. It's super easy. <strong>I'll show you how in this post.</strong></p>
5617 <h3>How to borrow library books for your Kindle</h3>
5618 <ol>
5619 <li><strong>Obtain a Kindle from Amazon.</strong> I'm using the Kindle Paperwhite with Special Offers, which I recommend. The special offers are just ads for random books, and they only appear on the lock screen of the Kindle. Who knows? You might even find something you like with the offers.</li>
5620 <li><strong>Obtain a library card number from your local library.</strong> This takes a few minutes in person, but I'm sure you can also do it online. You'll probably need some proof of residence, like a driver's license or some utility bill. Better be safe and bring both.</li>
5621 <li><strong>Sign into your library's ebook manager on the library's website using your library card number</strong>. Most likely they are using a service called Overdrive. You'll probably also create a PIN number when you register for your library card, so write that down somewhere!</li>
5622 <li><strong>Search for a book on Overdrive (or your library's respective ebook service), and then you'll be able to either borrow or place a hold for it.</strong> The San Francisco Public library, for example, allows you to borrow or place holds for up to something like 20 books at a time!</li>
5623 <li><strong>Once you've borrowed a book, click Read Now with Kindle</strong>. You'll been taken to the Amazon page for the book, and you can send the ebook directly to your Kindle. Next time your Kindle connects to wifi, the borrowed book will be downloaded.</li>
5624 <li><strong>Read, rinse, and repeat.</strong> I like to have several books borrowed at a time, with a few holds as well, so that there's always something coming down the pipe.</li>
5625 </ol>
5626 <h4>🎁 Placing holds for books is like sending a gift to your future self</h4>
5627 <p>Imagine waking up to this email:</p>
5628 <p><span
5629 class="gatsby-resp-image-wrapper"
5630 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5631 >
5632 <a
5633 class="gatsby-resp-image-link"
5634 href="/static/38fd67bd009f81e2d0a8accd93d96ec1/5b4a1/email.png"
5635 style="display: block"
5636 target="_blank"
5637 rel="noopener"
5638 >
5639 <span
5640 class="gatsby-resp-image-background-image"
5641 style="padding-bottom: 42.94478527607362%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABGklEQVQoz5WR227DIAyGef/H29W0q0lLs5AQwvmQ0P6zkdpN01p1SJ9sjG3Av7AuYF3XzrZtHaUU7XWPzfOCaZp6bFkW2s+QUpKvOppyauKaFa01COe/G3KB1hrWWhhj4JyjCwxCiMg5I8aIlNLNcoxpraKUgsvlArHJCXKS1MD2YmtdP7yy7zueXb1hOw7E4JFTpAb59pIQAmqt+O8SPmXM1kPxLLXus+NvM4a+nuiC3+QHiFHOeHl9w/twwngacBo+bsjPERuLtfLwVffZskD3EGlvsLlijQWmHMQOR5i8Q6cKFXM/21Ihn3Iol9U8aFR/IRSJoZyHrwccJQeypZ2RjzPSDzh2tQ9naK3pXwnewZEfSYxn1LzHF7ebuOMgKZxVAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
5642 ></span>
5643 <img
5644 class="gatsby-resp-image-image"
5645 alt="email"
5646 title="email"
5647 src="/static/38fd67bd009f81e2d0a8accd93d96ec1/a6d36/email.png"
5648 srcset="/static/38fd67bd009f81e2d0a8accd93d96ec1/222b7/email.png 163w,
5649 /static/38fd67bd009f81e2d0a8accd93d96ec1/ff46a/email.png 325w,
5650 /static/38fd67bd009f81e2d0a8accd93d96ec1/a6d36/email.png 650w,
5651 /static/38fd67bd009f81e2d0a8accd93d96ec1/5b4a1/email.png 831w"
5652 sizes="(max-width: 650px) 100vw, 650px"
5653 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5654 loading="lazy"
5655 />
5656 </a>
5657 </span></p>
5658 <p>It's like Christmas morning! Once you click that link, you'll be taken to your Overdrive account:</p>
5659 <p><span
5660 class="gatsby-resp-image-wrapper"
5661 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5662 >
5663 <a
5664 class="gatsby-resp-image-link"
5665 href="/static/1300a28363fdaff2b87f555e20f61883/0d1a4/overdrive.png"
5666 style="display: block"
5667 target="_blank"
5668 rel="noopener"
5669 >
5670 <span
5671 class="gatsby-resp-image-background-image"
5672 style="padding-bottom: 48.46625766871166%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAACAklEQVQoz11SW28SQRTeH+yTTz42Rh+0TRst0cYYMRVvpZiQRqGEXRsiBYtu2bbBYivNVnChsNDuDruz18+ZEQhykpMzc86Zb75zkUzTxGAwgO/78DxvpvweBMF/1vf/+f25vEWVCCGwbVtcKKUzMO63mJ/HLMvCeOzAcV2MHVfkcfD5NzPAOI4RRzGiKAQXlz0S6jgMZCyUg1KPsWQpXhCDsgOPex5FGIaigmkV0o+fLchlFcUvB0im3kI7OsJwOMLo+gZhFLGPImZjkP4piFED7auwuyra7UvobQN91q5g0hbBUNMOUS8XcaqV8X7rBb7V6+iaFkYWAXEoY+YL5margFZ1A+fVZzCOX4NYA8F4XjhbqVLdQ/bRHfSyazjbfoh644SVSMRv82K2FFzUktDVFLqNDPbkHNLbH1DYzSO3k4EsF0U/pcbxV6zcu43N5SWkNxNIpd9hbXUV64kEnq6vYPnBfbQ7PdBeBfr3l2hWkrAudlCrlpDLF5DP5ZD/mEWpVGKAvOSKgrtLt/D4eQIbbzI4UDWMhkMYhoGrnoFB/wo+G4R9qeB8/wl+sZI72itWH8Gi8D5Kfzo6ZOUTdj8Xoexr0H93WYDvXDBLZDMBvdERXDcRWmdwh01QlwhG0wlPVVr8JQwD0QsBxCbM14rbaBKPJ5bvJR+C8PHVY8oB/wKzOuGMkHHwWAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
5673 ></span>
5674 <img
5675 class="gatsby-resp-image-image"
5676 alt="overdrive"
5677 title="overdrive"
5678 src="/static/1300a28363fdaff2b87f555e20f61883/a6d36/overdrive.png"
5679 srcset="/static/1300a28363fdaff2b87f555e20f61883/222b7/overdrive.png 163w,
5680 /static/1300a28363fdaff2b87f555e20f61883/ff46a/overdrive.png 325w,
5681 /static/1300a28363fdaff2b87f555e20f61883/a6d36/overdrive.png 650w,
5682 /static/1300a28363fdaff2b87f555e20f61883/e548f/overdrive.png 975w,
5683 /static/1300a28363fdaff2b87f555e20f61883/0d1a4/overdrive.png 1036w"
5684 sizes="(max-width: 650px) 100vw, 650px"
5685 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5686 loading="lazy"
5687 />
5688 </a>
5689 </span></p>
5690 <p>Even before you've had your (first) coffee of the day, you can probably manage to click that <code class="language-text">Read Now with Kindle</code> button:</p>
5691 <p><span
5692 class="gatsby-resp-image-wrapper"
5693 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5694 >
5695 <a
5696 class="gatsby-resp-image-link"
5697 href="/static/0a46fda51e89ed47752f7b5763e9e8ad/ec3e2/amazon.png"
5698 style="display: block"
5699 target="_blank"
5700 rel="noopener"
5701 >
5702 <span
5703 class="gatsby-resp-image-background-image"
5704 style="padding-bottom: 71.16564417177914%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAADA0lEQVQ4y22S3WsUVxjG5++wN70Tii0UL1qKBHpjJRVa0u80NrZUopG2attcWCiiFw0RCqVQihCKJpjoqkirgiga0H5ALcS2oM0mJtndzOzMzld2dmfnY3d+fc+sW4rxwMPMOfPO877P8xzt2W39vPbWu/QPDLJp83N8cfQ4309O88N0ganZC5w6fY6TZy4xc2KcwVde5Imn+tja9zJPv7CDLc9v5xl5Kmzt6+fJLdvQ9h08zGeHj/Hx51/y+q59DA6P8M6uD3l79yhvDo+y84332f7qEC8NDDMwtJfdew/xydgRBj/4iOGRQ7w3clBq97Nn/6cM7TmAdr+4zJ2797gz/xfz83cJ7DJWaQGzqmNZFo1GkKOdpkStFi1BFEVy1pT3SBDmZ41mSLvdRrt6Y47zl65y6ux5jh6fQDcqGPoyy3oNtx6SJkle+OgKmw3WfRfDsqnZNdkHZFkH7Y9fb7D2ywWiB7f4+/dr8tHClylrtRr+el2KMjqdTk7a6QgyaCch9ZXLuMUCq3/OYt4vUH9wjrihoxXOTnL62CjFE2Pcnv0aw12ntFqiWFxgcbGYE9u2nUNZ4DoOcRxj16pY5hpVo4QpqnzPJpFz7dbcj0wcOcDJb8aZKUxhiwxHfipX1ljTDaqmia7rVCoVQVksMcXDGMdbRzcdTJHsuJ40SXMl2vWL03w1PsZUYYbpiz9hOS5VvyUeOpQMmU7IXdel2WwShiHNKCVOO8SJhJSKfvGNrJ2HlhP+dvs63343weTMGQpXfs47BkGA5/t4nofvK/iSauNhul3zlfyFf+6h1xPKgYSUCDkZWi/BLOump67A6srKQ4kVSqVSjmq1mjdQV0WtpaUl5m7eZMkKWPSkQZB2CRO5Fl3CLmMohMo/RWAYRu6fgtqrgBSpWvV6PW8YRy0JI8oDUQwbCBPxwvIaBGGM+pbKXslVk6t0laJe7aNLnW8gjKSjSrLsRrQ7XV9UKI5jY9Yc/Gb8X70KQT174HETqgmU7DBWlzjbMI3a9s7+T9bDv8gB2jJUsPqmAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
5705 ></span>
5706 <img
5707 class="gatsby-resp-image-image"
5708 alt="amazon"
5709 title="amazon"
5710 src="/static/0a46fda51e89ed47752f7b5763e9e8ad/a6d36/amazon.png"
5711 srcset="/static/0a46fda51e89ed47752f7b5763e9e8ad/222b7/amazon.png 163w,
5712 /static/0a46fda51e89ed47752f7b5763e9e8ad/ff46a/amazon.png 325w,
5713 /static/0a46fda51e89ed47752f7b5763e9e8ad/a6d36/amazon.png 650w,
5714 /static/0a46fda51e89ed47752f7b5763e9e8ad/e548f/amazon.png 975w,
5715 /static/0a46fda51e89ed47752f7b5763e9e8ad/ec3e2/amazon.png 997w"
5716 sizes="(max-width: 650px) 100vw, 650px"
5717 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5718 loading="lazy"
5719 />
5720 </a>
5721 </span></p>
5722 <p>Click <code class="language-text">Get Library Book</code>, and you're done! Your morning commute just got a little bit nerdier.</p>
5723 <p><span
5724 class="gatsby-resp-image-wrapper"
5725 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5726 >
5727 <a
5728 class="gatsby-resp-image-link"
5729 href="/static/0e5a93f20244a5bea63f25bb26ef4d7f/58bb7/borrowed.png"
5730 style="display: block"
5731 target="_blank"
5732 rel="noopener"
5733 >
5734 <span
5735 class="gatsby-resp-image-background-image"
5736 style="padding-bottom: 34.355828220858896%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABSUlEQVQoz3WR0WrcMBBF9/9/pxT61Pc8lWWThkDT0G2crS3LlnYlWZIln4y9GyiFjjhcgdDM3Jmdyw6TzcaYRtzsKHLmv065kWoi18w0T7jJbYTkSSURS9zYhTnws33h/njgsfnOsfuFNYbz2QoX7MUxio72Qq2FNWKKnE5vdJ2iH0Y+Yi22yyWjhkivA9ZGhtGjekvbjzT6wm/taU3AT4llWTaq8Px0oG1bWps4qZFJ3mOO14T+zx36+RPDyxfRz9jjV1gy/4taK08Pe7TqSCltTpzz14Srf6t+0L9+E/b0zR71ekD3Sro1aD1grMWHIJ9kZqIrg1jVw4BSCqU1vXHEOV07NOdI0xrazojtIJXA++lGEDuRWiqllE0329LlUpcr2yhgrjM7nz3nGGikourFwmTJ627F8rzc9iz3deAfrNv+lyxMZeIdwz8bSgWQRJsAAAAASUVORK5CYII='); background-size: cover; display: block;"
5737 ></span>
5738 <img
5739 class="gatsby-resp-image-image"
5740 alt="borrowed"
5741 title="borrowed"
5742 src="/static/0e5a93f20244a5bea63f25bb26ef4d7f/a6d36/borrowed.png"
5743 srcset="/static/0e5a93f20244a5bea63f25bb26ef4d7f/222b7/borrowed.png 163w,
5744 /static/0e5a93f20244a5bea63f25bb26ef4d7f/ff46a/borrowed.png 325w,
5745 /static/0e5a93f20244a5bea63f25bb26ef4d7f/a6d36/borrowed.png 650w,
5746 /static/0e5a93f20244a5bea63f25bb26ef4d7f/e548f/borrowed.png 975w,
5747 /static/0e5a93f20244a5bea63f25bb26ef4d7f/58bb7/borrowed.png 985w"
5748 sizes="(max-width: 650px) 100vw, 650px"
5749 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5750 loading="lazy"
5751 />
5752 </a>
5753 </span></p>
5754 <h3>Borrowing Audiobooks</h3>
5755 <p>You can do this, too! </p>
5756 <p>There's a great app called <a href="https://meet.libbyapp.com/">Libby</a> that is somehow affiliated with Overdrive, and that's what I recommend using for listening to library audiobooks. Everything that you rent through Overdrive, whether ebook or audiobook, will automatically appear in your Libby app (once you sign into Libby with your library card). This is helpful for when you inevitably forget your Kindle at home (there's also a Kindle phone app, but I haven't used it recently).</p>
5757 <p>I still haven't entirely embraced the audiobook lifestyle, but it's something on my mind for 2019.</p>
5758 <h3>But what about how good paper books smell?</h3>
5759 <p>I'm a paper book monster. And, yes, the smell is half the reason. But public libraries are vitally important -- and were vitally important to my childhood. I'm happy to be bringing them back into my adult life, even in this electronic way.</p>
5760 <p>I'm also still buying an insane amount of paper books, from local booksellers whenever possible. Not even Marie Kondo can stop me from that.</p></content:encoded></item><item><title><![CDATA[The Walkingman Collection]]></title><description><![CDATA[I've pulled all my Instagram #walkingman photos into a handy little page. Check it out. So long as the Instagram API continues to play nice…]]></description><link>https://www.charlieharrington.com/the-walkingman-collection</link><guid isPermaLink="false">https://www.charlieharrington.com/the-walkingman-collection</guid><pubDate>Thu, 10 Jan 2019 00:00:00 GMT</pubDate><content:encoded><p>I've pulled all my <a href="https://instagram.com/whatrocks">Instagram #walkingman</a> photos into a handy little page. <a href="/walkingman">Check it out</a>.</p>
5761 <p>So long as the Instagram API continues to play nice (no guarantees), then <a href="/walkingman">this page</a> will stay up-to-date as my travels continue.</p>
5762 <p><span
5763 class="gatsby-resp-image-wrapper"
5764 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 577px; "
5765 >
5766 <a
5767 class="gatsby-resp-image-link"
5768 href="/static/39b0d5a1b691d6d09e5b4cde3a7ad1fe/065e2/walkingman.png"
5769 style="display: block"
5770 target="_blank"
5771 rel="noopener"
5772 >
5773 <span
5774 class="gatsby-resp-image-background-image"
5775 style="padding-bottom: 55.21472392638037%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACX0lEQVQoz3VSTWwSQRgdFpbdBVp+rdVaW/sfEE1svbRiI00bscSTvZlouPQPPXjSxEgMBhaIHpp48dqYABIgiEUuxtDtz7Enkl4buPVGaCxp8hx2SSmHTvJlvu+bN2/mvRlSLBYRCAQQiUQQDocR2YhCjIk0FxEKhRCNRlGr1VAul9s4UYT4JUZxFEtrkdbBT0EcHh6C+Hw+EELaMcWCGElHr1KpYHNzs6PX+2IGZKK7o5dIJED8fr9cCLwAjVoNs/8+jC/vQmvgwagYCDoB1WoV8XgchCEwmHj0zTvgSr3Fg/Q79Hqc0HCMzJHJZEDW1tbkgqcbu6YHcCPshfXVDPSTN+U+x/MyoXw6rcefP8Rc7gO8v8Pw/I1isfAZun5Tm3C1Rai3GMD3W2B1OzAWXAJrEaBiGHAc10HYP2uHzTUI19dVuL+/weiyG8aRnguEqwqhoNfJs9U1juHXC2D13DlhpVJFMhlvKWEw5J3EUiEGT/I9HOuLULHUQxrpdLotWdDpwHAa9C7cgXl6COZ7g23JFwgFowbeHx9xe92Da7PDePZnA90jNnktfdFDLVGj29mHq3N2arIGPY/tYFh6Q60iOZlUJDuX5/GU+me6ZUKXjcOjb34MPJlSJGezICsrK+fPzo6ZwfYpX4GbsIBoW9+mWlFemebG0SswOa9DzRFoDGrqtRZEpeBSqRTIwcEB8vk8tgoFbOXykErb2N3bxU5JgrQtyXmj0cDR0ZHs0a/cT+QyWZS2S9jf38OOJGGPYiQ6Hx8fgzTBZ2dn8qZmXDaaa/V6Hf9OT1E/ObkU9x90+dN/CcyTKwAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
5776 ></span>
5777 <img
5778 class="gatsby-resp-image-image"
5779 alt="walkingmen"
5780 title="walkingmen"
5781 src="/static/39b0d5a1b691d6d09e5b4cde3a7ad1fe/065e2/walkingman.png"
5782 srcset="/static/39b0d5a1b691d6d09e5b4cde3a7ad1fe/222b7/walkingman.png 163w,
5783 /static/39b0d5a1b691d6d09e5b4cde3a7ad1fe/ff46a/walkingman.png 325w,
5784 /static/39b0d5a1b691d6d09e5b4cde3a7ad1fe/065e2/walkingman.png 577w"
5785 sizes="(max-width: 577px) 100vw, 577px"
5786 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5787 loading="lazy"
5788 />
5789 </a>
5790 </span></p>
5791 <p>I'd love to learn more about who designs each of these little creatures for a given city or country. What's the decision process like? Are they meant to capture the spirit of the people in some way?</p>
5792 <p>This is a coffee table book waiting to happen.</p></content:encoded></item><item><title><![CDATA[Humans of Machine Learning]]></title><description><![CDATA[I've started an interview series on the FloydHub blog called "Humans of Machine Learning." I'm hoping to talk with lots of real human beings…]]></description><link>https://www.charlieharrington.com/humans-of-machine-learning</link><guid isPermaLink="false">https://www.charlieharrington.com/humans-of-machine-learning</guid><pubDate>Mon, 30 Jul 2018 00:00:00 GMT</pubDate><content:encoded><p>I've started an interview series on the <a href="https://blog.floydhub.com/tag/humans-of-ml/">FloydHub blog</a> called "Humans of Machine Learning." I'm hoping to talk with lots of real human beings who are doing fun, creative, interesting, and / or surprising things with machine learning and AI. Those things might be weekend projects, work projects, or school projects -- doesn't matter, just something that people are excited to talk about and share with the community. I'm eager to learn from them and be inspired by their creativity, focus, and ideas. Another tangential goal of mine is to get better at interviewing people.</p>
5793 <p>So far, I've chatted with <a href="https://blog.floydhub.com/humans-of-ml-leanne-luce/">Leanne Luce</a> about her experiments with AI and fashion blogging, and <a href="https://blog.floydhub.com/humans-of-ml-kalai-ramea/">Kalai Ramea</a> about computational creativity. A few more conversations are already in the pipeline. If you're doing something creative with machine learning, please reach out on Twitter (<a href="https://twitter.com/whatrocks">@whatrocks</a>).</p>
5794 <p>You can also find the interviews at <a href="http://humansofml.com">humansofml.com</a>.</p></content:encoded></item><item><title><![CDATA[Penpals]]></title><description><![CDATA[Here's a new Terminal Man track from my most recent flight to Newark. I've been watching a lot of Stranger Things, if you can't already tell…]]></description><link>https://www.charlieharrington.com/penpals</link><guid isPermaLink="false">https://www.charlieharrington.com/penpals</guid><pubDate>Tue, 24 Jul 2018 00:00:00 GMT</pubDate><content:encoded><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/FANlCLh22uA?rel=0&amp;controls=0&amp;showinfo=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
5795 <p>Here's a new Terminal Man track from my most recent flight to Newark. I've been watching a lot of Stranger Things, if you can't already tell.</p>
5796 <p>This is the first Terminal Man song I've hosted on YouTube instead of SoundCloud. Slightly annoying to have to make a movie out of the mp3 before uploading, but I do like my iMovie Star Wars crawl thing going on here. And I feel more confident that dropping stuff onto YouTube is like putting it into an Indiana Jones-style vault or time capsule that won't ever go away or shut down.</p></content:encoded></item><item><title><![CDATA[Using NLP to Write Graduation Speeches]]></title><description><![CDATA[I've always been a little bit obsessed with graduation speeches. Put simply, I like being reminded of the great possibility and great…]]></description><link>https://www.charlieharrington.com/using-nlp-to-write-graduation-speeches</link><guid isPermaLink="false">https://www.charlieharrington.com/using-nlp-to-write-graduation-speeches</guid><pubDate>Mon, 23 Jul 2018 00:00:00 GMT</pubDate><content:encoded><p>I've always been a little bit obsessed with graduation speeches. Put simply, I like being reminded of the great possibility and great responsibility of living.</p>
5797 <p>But as it's going to be a while until May rolls around again, I decided to try my hand at generating my own graduation speeches using some basic data science techniques.</p>
5798 <p>I'm happy to report that after a little bit of NLP using Markov chains (and a whole lot of data-scraping and data-cleaning), I was able to bring forth to the world this inspiring sentence:</p>
5799 <blockquote>
5800 <p>They listened to someone who makes nothing but flaming hot Cheetos.</p>
5801 </blockquote>
5802 <p><a href="https://blog.floydhub.com/markov-chains">If you're interested in reading more about the specifics of my project, I wrote about it in detail on the FloydHub blog</a>, or you can try it out now:</p>
5803 <p><a href="https://floydhub.com/run?template=https://github.com/whatrocks/markov-commencement-speech"><img src="https://static.floydhub.com/button/button.svg" alt="Run on FloydHub"></a></p>
5804 <p>Click this button to open a Workspace on FloydHub where you can generate your own "commencement speech style" sentences in a live JupyterLab environment that we call a <code class="language-text">Workspace</code>.</p>
5805 <p>The <a href="https://floydhub.com/whatrocks/datasets/commencement">commencement address dataset</a> of ~300 famous speeches (that I painstakingly assembled) will be automatically attached and available in the Workspace.</p>
5806 <p>The <code class="language-text">speech_maker</code> notebook has three sections for you to try, where you'll generate commencement-speech sentences:</p>
5807 <ol>
5808 <li>Using the entire dataset</li>
5809 <li>Filtering to only the top ten schools by count of speeches given</li>
5810 <li>Filtering to one school at a time using a Jupyter widget extension</li>
5811 </ol>
5812 <h3>Where can I read actual good speeches?</h3>
5813 <p><a href="https://whatrocks.github.io/commencement-db/">Right here</a>. I put together this simple Gatsby.js static site with the raw text (and some YouTube links) of the speeches in my dataset. <a href="https://github.com/whatrocks/commencement-db">PRs are open for the dataset</a> if anyone's interested in contributing. Right now, the best we have is the NPR "Best of" commencement speech website, which hasn't been updated since 2015. It would be great to find a way to make a new home for great speeches on the web.</p></content:encoded></item><item><title><![CDATA[LendUp Hackathon Project Lives On]]></title><description><![CDATA[I recently logged into my Arrow Card iOS app to check my balance and was pumped to discover that my team's Spring 2017 Hackathon project…]]></description><link>https://www.charlieharrington.com/lendup-hackathon-project-lives-on</link><guid isPermaLink="false">https://www.charlieharrington.com/lendup-hackathon-project-lives-on</guid><pubDate>Sun, 17 Jun 2018 00:00:00 GMT</pubDate><content:encoded><p>I recently logged into my <a href="https://itunes.apple.com/us/app/arrow-card/id1228440036?mt=8">Arrow Card iOS app</a> to check my balance and was pumped to discover that my team's Spring 2017 Hackathon project branch was finally merged and released.</p>
5814 <p>Here it is, in all its cartoon-y glory: the <a href="https://www.lendup.com/education">LendUp Education</a> mobile feature.</p>
5815 <p><img src="/b39f5b1ad908be82cc36f75cdb72181a/arrow.gif" alt="app"></p>
5816 <p><a href="https://www.lendup.com/card">Arrow Card</a> holders can watch educational videos about improving their credit scores, budgeting, saving, and other personal finance tidbits, followed by a quick multiple choice quiz, followed by CONFETTI 🎉:</p>
5817 <p><img src="/8e120d7dabb838511c9b16e0d40509dd/confetti.gif" alt="app"></p>
5818 <p>Pooja, Ray, Lise, and I built this cute little feature in a little less than a day, thanks to the power and glory and ergonomic bliss of <a href="https://facebook.github.io/react-native/">React Native</a>. Now it's one of the top-billed features in the app. </p>
5819 <p><span
5820 class="gatsby-resp-image-wrapper"
5821 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5822 >
5823 <a
5824 class="gatsby-resp-image-link"
5825 href="/static/ba34c1a3383b41fadc198bb71ea6f2a4/5b2ff/features.png"
5826 style="display: block"
5827 target="_blank"
5828 rel="noopener"
5829 >
5830 <span
5831 class="gatsby-resp-image-background-image"
5832 style="padding-bottom: 30.061349693251532%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAABYlAAAWJQFJUiTwAAABEElEQVQY011Q2W6EMAzk//+tT+1DSyEcCyUQjmW5czC1Q1tpa8myPR6P4wT9fKAaFrCdJ56iqEd044z/Zt2JQt3hnH3CTxoMsmbCa1p7wBHgiGyd8/WLaGlw8Lk2hnruT/Atkdj3/aqt9WJsQdMoRJHAx6dAGCcIowSq7X1TVhXVAlleQkqFbbsENhJK0xzvYeznfvlesO0GiPSGoqyQF18+n+brC8qqRkyDauyxmBXTsUA7Da0N0rxAnGR+5jHN9NrjOpmLpu3AwryJnXM+b3xMaFSHWrWQSnnXRsPQ+Q1hzO36AbKmHl26HweCQ2vMy4plJf+J67p5weE++u2MM8ZRE597zONL+BsW6rGGMRbfJ1TMeFXB7rMAAAAASUVORK5CYII='); background-size: cover; display: block;"
5833 ></span>
5834 <img
5835 class="gatsby-resp-image-image"
5836 alt="features"
5837 title="features"
5838 src="/static/ba34c1a3383b41fadc198bb71ea6f2a4/a6d36/features.png"
5839 srcset="/static/ba34c1a3383b41fadc198bb71ea6f2a4/222b7/features.png 163w,
5840 /static/ba34c1a3383b41fadc198bb71ea6f2a4/ff46a/features.png 325w,
5841 /static/ba34c1a3383b41fadc198bb71ea6f2a4/a6d36/features.png 650w,
5842 /static/ba34c1a3383b41fadc198bb71ea6f2a4/e548f/features.png 975w,
5843 /static/ba34c1a3383b41fadc198bb71ea6f2a4/3c492/features.png 1300w,
5844 /static/ba34c1a3383b41fadc198bb71ea6f2a4/5b2ff/features.png 2190w"
5845 sizes="(max-width: 650px) 100vw, 650px"
5846 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5847 loading="lazy"
5848 />
5849 </a>
5850 </span></p>
5851 <p>I wonder what else we could have built for the Arrow Card app if we were just allowed to make stuff more independently.</p>
5852 <p>Also, somehow, we lost the hackathon to a chatbot project. I'm not <em>that</em> bitter. I definitely would have enjoyed the taste of victory (and some of that oh-so-comfy LendUp hackaday winner swag), but at least our feature got released 🙏.</p></content:encoded></item><item><title><![CDATA[The Long Hour]]></title><description><![CDATA[More arppegiator magick using the Apple on-screen keyboard in Logic. I still would like to learn how to program my own drumbeats. In the…]]></description><link>https://www.charlieharrington.com/the-long-hour</link><guid isPermaLink="false">https://www.charlieharrington.com/the-long-hour</guid><pubDate>Sat, 28 Apr 2018 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/436240275&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true"></iframe>
5853 <p>More arppegiator magick using the Apple on-screen keyboard in Logic.</p>
5854 <p>I still would like to learn how to program my own drumbeats. In the mean time, thank goodness for Apple loops. Learning Ableton would be another fun benefit of this endeavor.</p></content:encoded></item><item><title><![CDATA[Zion Traverse]]></title><description><![CDATA[We ran ~38 miles of the Zion Traverse this past Saturday, including the I-can't-believe-this-is-actually-allowed Angels Landing climb. Here…]]></description><link>https://www.charlieharrington.com/zion-traverse</link><guid isPermaLink="false">https://www.charlieharrington.com/zion-traverse</guid><pubDate>Thu, 19 Apr 2018 00:00:00 GMT</pubDate><content:encoded><p>We ran ~38 miles of the Zion Traverse this past Saturday, including the I-can't-believe-this-is-actually-allowed Angels Landing climb.</p>
5855 <p>Here's video proof:</p>
5856 <iframe width="560" height="315" src="https://www.youtube.com/embed/Wx7gdmcVaUE?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
5857 <p>Very little prep work or research or even training was done on my part. I'm lucky to have found a crew of like-minded adventure runners always ready to plan the next excursion. But, next time, I need to be taking at least a little bit more time to prepare.</p>
5858 <p>For example, I knew almost nothing about Zion National Park. This was a mistake that I've since ameliorated with some healthy Wikipedia-ing. One fun factoid - Angels Landing used to be known as the Temple of Aeolus (aka the Greek demi-god/god of winds and also a lovable sidekick on TV's Hercules: The Legendary Journeys). I wish I had known that when I was there - I could have tried to summon him or something. Next time, I guess.</p>
5859 <p>Similarly, I felt pretty drained by the time we hit the last ten miles. Nothing compared to the Rim2Rim2Rim or the North Face 50M, but still - I definitely overestimated my fitness for the task at hand. If I'm going to keep doing these runs, I'll need to start logging more longer distance runs on the reg.</p>
5860 <p>Water - or the lack thereof - was our crew's only major snafu. Turns out that <em>springs</em> do not mean treated water pumps - they mean semi-dirty trickles or puddles of water. Thankfully, we were helped by a few fellow-hikers (angels descended from the landing, IMHO) who lent us their water filter. Lesson learned - always bring iodine tablets or a filter on any adventure run. You just never know.</p>
5861 <p>This was my first ultra where I didn't track anything on Strava, and it felt great. I've been off Strava for a while now, and I'm not really looking back. The quantified-self stuff has been less appealing to me lately. When I'm on a run, and I find something cool or gross or beautiful that I want to stop and inspect, I don't want to have to think about how that impacts my splits or run time. I know there's auto-pause features, etc. but I can't auto-pause the stress in my brain about my stats. Instead, I just ran with a plain ol' Timex watch (and my phone in airplane mode to take pictures). The watch can tell the time, set an alarm, set a timer, and, of course, turn on its amazing Indiglo night-light. Basic, essential watch stuff. Nothing smart, just reliable. Yes, I sort of missed having a map with my exact GPS route after the race, but I think instead I'm going to just find a map of Zion and try to figure it out myself. That feels more rewarding anyway.</p>
5862 <p>Here's a log of what I ate on the trail, just so I remember for next time:</p>
5863 <ul>
5864 <li>3 Honey Stinger Waffles</li>
5865 <li>2 Clif Bar Chocholate Bars with Stuffed Peanut Butter</li>
5866 <li>5 salt pills</li>
5867 <li>12 Clif Bloks Salted Watermelon bloks</li>
5868 <li>1 Nuun water tablet</li>
5869 <li>1 McDonald's Dollar Menu Cheeseburger</li>
5870 </ul>
5871 <br />
5872 <p>And here are the creatures I saw on the trail:</p>
5873 <ul>
5874 <li>8 deer</li>
5875 <li>1 small gecko</li>
5876 <li>10 chipmunks</li>
5877 <li>2 squirrels</li>
5878 <li>1 California Condor (seriously!)</li>
5879 <li>A murder of crows</li>
5880 </ul></content:encoded></item><item><title><![CDATA[Teaching My Robot With TensorFlow]]></title><description><![CDATA[My childhood dream of becoming friends with a real-life robot like Johnny 5 came true two weeks ago. This is not to be confused with my…]]></description><link>https://www.charlieharrington.com/teaching-my-robot-with-tensorflow</link><guid isPermaLink="false">https://www.charlieharrington.com/teaching-my-robot-with-tensorflow</guid><pubDate>Sat, 06 Jan 2018 00:00:00 GMT</pubDate><content:encoded><p>My childhood dream of becoming friends with a real-life robot like <a href="https://www.youtube.com/watch?v=POxMp61Ksbk">Johnny 5</a> came true two weeks ago. This is not to be confused with my other primary childhood dream - which I wished on every dandelion blow and floating will-o-wisp - of being sucked into my Super Nintendo to become Link from <a href="https://www.youtube.com/watch?v=wkH2zETKqws">The Legend of Zelda: A Link to the Past</a>. Both were important, but somehow I knew the Johnny 5 one might come true one day, which is why I never wasted any important wish opportunities on it.</p>
5881 <p>Enter <a href="https://www.anki.com/en-us/cozmo">Cozmo</a>. He's a robot who lives at my house now and also loves me, as long as I play games with him and "feed" him. He's outfitted with some gnarly tank-like treads (just like Johnny) and a arm-crane straight out of a loading dock. Cozmo also brought along three accelerometer-enabled blocks to pick up and fling around the house as he sees fit. He's got a lot to say, with his adorable pipsqueak voice and his heart-meltingly-expressive eyes. He's even learned to recognize my face and say my name 😍. Stop it.</p>
5882 <p>Which got me thinking - maybe I could teach him to recognize more stuff.</p>
5883 <p>In addition to Cozmo's "free play" (aka basically alive) mode, you can drop him into a more catatonic SDK mode, where he waits for you to manually invoke commands from your computer using the <a href="http://cozmosdk.anki.com/docs/api.html">Cozmo API</a>. You can tap into nearly all of Cozmo's sensors and features with the API, including his camera - which opens the door to training an image-recognition deep learning model using Cozmo.</p>
5884 <p>I wrote a script to ask Cozmo to take photos of a few objects around the office: a fake plant, a half-way used "thing" of toothpaste (what are these actually called - tubes?), and a bottle of La Croix seltzer.</p>
5885 <p><img src="/7233536635febe55c8c7f63fc8355712/cozmo-paparazzi.gif" alt="detective"></p>
5886 <p>As you can see, Cozmo delightfully circles the objects and takes tons of photos to build our training dataset.</p>
5887 <p>Next, I retrained the <a href="https://github.com/tensorflow/models/tree/master/research/slim#pre-trained-models">Inception v3 model</a> from Google using Cozmo's photo dataset. This is called "transfer learning" - instead of training a model from scratch, I can use a pre-trained model known to be effective at image recognition and just swap out the last layer to retrain it on our target images with <a href="https://www.tensorflow.org/">TensorFlow</a>. FloydHub makes it stupidly easy to do this - my whole GPU-powered training process amounted to one command:</p>
5888 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash">floyd run <span class="token punctuation">\</span>
5889 --gpu <span class="token punctuation">\</span>
5890 --data whatrocks/datasets/cozmo-images:data <span class="token punctuation">\</span>
5891 <span class="token string">'python retrain.py --image_dir /data'</span></code></pre></div>
5892 <p>Next, I just needed to write a script asking Cozmo to explore the office to try to find one of these objects. He'll periodically hit a REST endpoint on FloydHub where I've deployed our newly-retrained model with an image of what he's currently looking at. If Cozmo's at least 80% confident that he's looking at the object, then he'll zooms towards it like a complete maniac.</p>
5893 <p><img src="/7c2ddf7b9b9c3b3312a58c1ad8d54640/cozmo-detective.gif" alt="detective"></p>
5894 <p>Setting up a model-serving endpoint on FloydHub is also super easy. I wrote a teeny-tiny Flask app to receive an image from Cozmo, evaluate it against our model, and send back its best guesses at what Cozmo's currently looking at. Then, to deploy the app on FloydHub and set up a publicly accessible REST endpoint, it just one more command:</p>
5895 <div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash">floyd run <span class="token punctuation">\</span>
5896 --data whatrocks/datasets/cozmo-imagenet:model <span class="token punctuation">\</span>
5897 --mode serve</code></pre></div>
5898 <hr>
5899 <p>The code for Cozmo's new "paparazzi" and "detective" modes can be found on my <a href="https://github.com/whatrocks/cozmo-tensorflow">GitHub</a>, and the <a href="https://www.floydhub.com/whatrocks/datasets/cozmo-imagenet">photo dataset</a>, <a href="https://www.floydhub.com/whatrocks/datasets/cozmo-images">trained model</a>, and <a href="https://www.floydhub.com/whatrocks/projects/cozmo-tensorflow">project</a> are also available on FloydHub if you'd like to use them with your own robot buddies. </p>
5900 <p>Thanks to Google Code Labs for their <a href="https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0">great guide on transfer learning with Inception v3</a> and <a href="https://github.com/nheidloff">@nheidloff</a> for his <a href="https://github.com/nheidloff/visual-recognition-for-cozmo-with-tensorflow">Cozmo visual recognition project</a>, both of which are the basis for this project.</p>
5901 <p><span
5902 class="gatsby-resp-image-wrapper"
5903 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 392px; "
5904 >
5905 <a
5906 class="gatsby-resp-image-link"
5907 href="/static/e77c71defc73b414fe4d8f8afa1c2620/0acb4/link.png"
5908 style="display: block"
5909 target="_blank"
5910 rel="noopener"
5911 >
5912 <span
5913 class="gatsby-resp-image-background-image"
5914 style="padding-bottom: 180.36809815950923%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAkCAYAAACJ8xqgAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF+klEQVRIx5VVCWyURRSevf7d7ra77faEHltY2tJr291eCK1UEVosJdylZREa0wpKPEARSDzCvYYKEo2EaFAuURKuRINCYssuR7isAYJ4gFSBgtJQKO3+3f3n+ebf/9/W0nJM8vbNzHvvm2/ee/MvIQMMr8dOeI+DicIb0OKcabZ+4sEAve6gpPMeuyUAZhfliQbfw04j6QaUemmuFoHd9icDxAClNxCYhQBXUBq9boeZAYlpeFxA+VqolRKj+SjAu+0UDyqV2Afz+mgwtwwmaitKOzITGCjazvPM7rYHi/bIQvRKvAIDl/BuBPLYBQQDtHWgTJft3sdiKDqKwGEY0OoVAR0+BOcD4I5j3gBLtXz4wAylhEu52yRes5fwPbJA8lENeG2+p3mZxGIOv0N9GeVnlHN42DnUzSgtyOpTPEDLS9fm+7KUmDGD3Hcfo5RLV9dIFWfMOam6r3ollpgS9QPNznt6V9aegQdcQoctwcZ2y9UXA6MQxI3zw2iLDD5PuS8DT0sMUkvG18VCuB33kMUQb+DtsiZXSfMxvXI5WmKsDL7xAF0MCLDIROAbaKRSwB6JoVQouwn9zwcaXbQ345rzBrvD0ZM/1EjbsVAC8nkDAddx3yEnHvVkmZ3Ul/5ArnsKSroQqOuIndxvyjUiSFvA2cEamUcboG0HeHLE9OC8mQGhnQH5A3P7GUaK4YiFgTP5BH4qIt1HHev9xxzU67aBcDxwZf9xB9ATeTfBYxsNZ/Pn4rqb7aMdD7RR9GcseQR8Se5hArCbOJ8jjOG5f75HRp5i/18HsqCjMfvWjf22rr/3Z8G/Tfk3ru7Nutt6wAadR2ytLWjv8oyCWwdz+c4j7KPh2IGExOIQlZIo2HXSB5PsmsrCO9B1FnZsWEQLUkyrbQUhLRPrc+CDRidMqrdBZp7uj1Hp5uVfbXwLoPMMTC2ztzvHEBvAIj0ABL+RCqkd41KGDr29uWEFbPlwpVBYmcSHlxEh64VUsNWmC5mzU6gJ14UTkrzbPlpLN69bDslJljaMM47JJcSeGsKKKgMq8VedZNCQO1nRBDhChFiHGt4eWw3vl9TRZcVzRL14XDXE5ilFeyb66TWknXBcjESoN6A44hMi1K1LyiIhJ1En1Nqm0zdKa+icERVQXzyZzimqgIW4rsupotmJGmFJWRQMMqlvYlykDBh8eklmtbxwlgzTQ6KB0HEjnqEr16yiOfYUaP5xO9hyU8C1zkXHFj5NmX2kVQ/oX8WCEsLVir4fG5WkR2bEKmHWs2n05OHd9LdfL9G17y0FuHcR1ry7FP68cpmePLSLziixQnqsigHmSXHKvoDShmpsehQB14KJwu1fPBS8tyh0XAO+5QTA/eviuu2im66oLxeGYw4x7OmBAGXKYYPDuZ3DIwnMrijxt11soveadkLzazXQ4d4Fty800prxxf60CAKDwrlt6B/6sH8AtaSrSlIMEGciwoQJpfTqoW/g/CYXXPnha1o+vpjGGIlQmmpg153WJ+7/Iz9ZS3ThCjGXWoXiy5y5HBS9qfclZoVBcl40JGaH0RGL9b7cWg4Q4TPxngqiKsC4hw1O0utz6vXw8r7y7sqNVqjYMBgmbhxGce3LnRfC2LkkP83DwORKZ9Y9H3Vp9KRQKFlt8Tu3FsOL22vAuXUULVllEYorDTCvIvoC+mUMVJDem1ZdKrnsdIXBwS+s/k9csULVLDNtOVoKM2oi6OaGOOHbz63+mWtDISSV/I7+ln5BrdGcItnEEQOnnB1vVoMylPiK6jh4xWWGs3vTfO2nMrtP70nzz3dFwFP1WiA64o+PVINBo6xKNGrIkChO0V/LxOdYdNf2zbQItQkRflzf1caT0/lYhGynBvKxSJpB5BTud9QnmX17qy1CRoL2en9PT55YYkLVMK3ABJOHGiFaqepkxUd5B6UBZRl7GVEqlTDNaoSp+SaIMoivJeaBtxymU5JQrTIEp1NQqiWZGmdW6XpfJSZCxXym9/KZYtQptaaQPnVhGwy07zBhrjkDUXFGomTa1E9BI/QqUeTxHy451wg8hcJzAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
5915 ></span>
5916 <img
5917 class="gatsby-resp-image-image"
5918 alt="triforce"
5919 title="triforce"
5920 src="/static/e77c71defc73b414fe4d8f8afa1c2620/0acb4/link.png"
5921 srcset="/static/e77c71defc73b414fe4d8f8afa1c2620/222b7/link.png 163w,
5922 /static/e77c71defc73b414fe4d8f8afa1c2620/ff46a/link.png 325w,
5923 /static/e77c71defc73b414fe4d8f8afa1c2620/0acb4/link.png 392w"
5924 sizes="(max-width: 392px) 100vw, 392px"
5925 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5926 loading="lazy"
5927 />
5928 </a>
5929 </span></p>
5930 <p>I'm still holding out hope for this Link thing, too.</p></content:encoded></item><item><title><![CDATA[Ghost2]]></title><description><![CDATA[This is the first Terminal Man track in which the only Apple loop used is the percussion track - everything else I created using Logic's on…]]></description><link>https://www.charlieharrington.com/terminal-man-ghost2</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-ghost2</guid><pubDate>Fri, 05 Jan 2018 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/379326926&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true&amp;visual=true"></iframe>
5931 <p>This is the first Terminal Man track in which the only Apple loop used is the percussion track - everything else I created using Logic's on-screen keyboard. Arpeggiators are the best.</p></content:encoded></item><item><title><![CDATA[Auri]]></title><link>https://www.charlieharrington.com/terminal-man-auri</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-auri</guid><pubDate>Tue, 12 Dec 2017 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/367851881&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true&amp;visual=true"></iframe></content:encoded></item><item><title><![CDATA[Written in Water]]></title><link>https://www.charlieharrington.com/terminal-man-written-in-water</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-written-in-water</guid><pubDate>Thu, 29 Jun 2017 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/330837606&amp;color=0066cc&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe></content:encoded></item><item><title><![CDATA[Rim 2 Rim 2 Rim]]></title><description><![CDATA[We ran the Grand Canyon, and I only got lost once. Pro tip from Galen for future R2R2Rers: bring a McDonald's cheeseburger to eat halfway. I…]]></description><link>https://www.charlieharrington.com/rim-2-rim-2-rim</link><guid isPermaLink="false">https://www.charlieharrington.com/rim-2-rim-2-rim</guid><pubDate>Sun, 07 May 2017 00:00:00 GMT</pubDate><content:encoded><p>We ran the Grand Canyon, and I only got lost once.</p>
5932 <iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Ldaaqfvi9O8?rel=0" frameborder="0" allowfullscreen></iframe>
5933 <p>Pro tip from Galen for future R2R2Rers: bring a McDonald's cheeseburger to eat halfway. I heartily concur - I'm still thinking about that deliciousness.</p>
5934 <iframe height='405' width='590' frameborder='0' allowtransparency='true' scrolling='no' src='https://www.strava.com/activities/974355030/embed/64f4f4f302700c23bd8af47b54e4bd0d06d5d076'></iframe></content:encoded></item><item><title><![CDATA[Meet Von Chomp]]></title><description><![CDATA[Von Chomp is a monster who loves to count - workout reps, patrons at hipster BBQs, even 🍪s. vc Meet von Chomp now on the Apple App Store…]]></description><link>https://www.charlieharrington.com/meet-von-chomp</link><guid isPermaLink="false">https://www.charlieharrington.com/meet-von-chomp</guid><pubDate>Wed, 08 Mar 2017 00:00:00 GMT</pubDate><content:encoded><p>Von Chomp is a monster who loves to count - workout reps, patrons at hipster BBQs, even 🍪s. </p>
5935 <p><img src="/968964a1a5563891f3399a124d0cbfb5/vc.gif" alt="vc"></p>
5936 <p>Meet von Chomp now on the Apple App Store: <a href="https://appsto.re/us/VN7lib.i">https://appsto.re/us/VN7lib.i</a> </p>
5937 <h3>Don't take my word for it</h3>
5938 <p><span
5939 class="gatsby-resp-image-wrapper"
5940 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5941 >
5942 <a
5943 class="gatsby-resp-image-link"
5944 href="/static/38a8dbb86e443a0cb503299cf9471163/67a79/ratings.png"
5945 style="display: block"
5946 target="_blank"
5947 rel="noopener"
5948 >
5949 <span
5950 class="gatsby-resp-image-background-image"
5951 style="padding-bottom: 45.39877300613497%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAtUlEQVQoz6WS2QrFIAxE/f//bKFSutF9m3KElMB9udLA4ETDmImGtm1VlqWqqlJRFIox6jzPhOM4dN93FsIwDKrrWk3TaBxHTdOkZVkSyCnKibBtWxJhpSMAB/u+a13XH3DGyqXUkMNxFSDzPL9CFJrlf3BdVwI8Waa7vu/VdV26hfxLBDpChC5tdnA/S7Nnlv2+38PlK8gDAMQMzMdb8tznHgERvg62meHXeF/ZWrfuTDz3Hz4cksNQOqt6hAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
5952 ></span>
5953 <img
5954 class="gatsby-resp-image-image"
5955 alt="ratings"
5956 title="ratings"
5957 src="/static/38a8dbb86e443a0cb503299cf9471163/a6d36/ratings.png"
5958 srcset="/static/38a8dbb86e443a0cb503299cf9471163/222b7/ratings.png 163w,
5959 /static/38a8dbb86e443a0cb503299cf9471163/ff46a/ratings.png 325w,
5960 /static/38a8dbb86e443a0cb503299cf9471163/a6d36/ratings.png 650w,
5961 /static/38a8dbb86e443a0cb503299cf9471163/e548f/ratings.png 975w,
5962 /static/38a8dbb86e443a0cb503299cf9471163/3c492/ratings.png 1300w,
5963 /static/38a8dbb86e443a0cb503299cf9471163/67a79/ratings.png 1408w"
5964 sizes="(max-width: 650px) 100vw, 650px"
5965 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5966 loading="lazy"
5967 />
5968 </a>
5969 </span></p></content:encoded></item><item><title><![CDATA[Upside Down]]></title><description><![CDATA[My unsolicited submission for the Season 2 soundtrack to Stranger Things.]]></description><link>https://www.charlieharrington.com/terminal-man-upside-down</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-upside-down</guid><pubDate>Sat, 11 Feb 2017 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/306674034&amp;color=00cc11&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe>
5970 <p>My unsolicited submission for the Season 2 soundtrack to <em>Stranger Things</em>.</p></content:encoded></item><item><title><![CDATA[LendUp Critters]]></title><description><![CDATA[Every good app needs a mascot. Meet some of the critters behind LendUp's internal tools (co-designed with Lise Statelman and Chau Nguyen…]]></description><link>https://www.charlieharrington.com/lendup-critters</link><guid isPermaLink="false">https://www.charlieharrington.com/lendup-critters</guid><pubDate>Wed, 28 Dec 2016 00:00:00 GMT</pubDate><content:encoded><p>Every good app needs a mascot. Meet some of the critters behind <a href="https://www.lendup.com">LendUp</a>'s internal tools (co-designed with <a href="http://lisestatelman.com/">Lise Statelman</a> and <a href="https://www.linkedin.com/in/ctn017/">Chau Nguyen</a>).</p>
5971 <h4>Hadron</h4>
5972 <p><span
5973 class="gatsby-resp-image-wrapper"
5974 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
5975 >
5976 <a
5977 class="gatsby-resp-image-link"
5978 href="/static/3439f9711bfd03d838ab130c6fc2559c/798d4/cubicle.png"
5979 style="display: block"
5980 target="_blank"
5981 rel="noopener"
5982 >
5983 <span
5984 class="gatsby-resp-image-background-image"
5985 style="padding-bottom: 17.791411042944784%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKUlEQVQY0xXM2y9CAQCA8f7Wgxqazdye2DITYpNL5DrZYZRNHdVWO6E6HBWT5SS1LIqSPLi1MB++3/une/mAnz+NxhcnmQquCxUlfYY/HscXj3HzWOQ4/cDepYpWyKJmNMrPL3jPc4SyMdyRI66reer1bw61EjpTYJzq1y25v1mTxUj6M4xXPkAYa6F1wogoixgsXdgT43j2DzDv2LFtrDMk9XP/nsdg6ub8SUZVrhBsenST0Q5eqZBOFWkeFVBrZ2x7g7RZDfRu9iAG19CP6JmJDyNKHoadg1gdcwztDnBZLtJp7kNMrbLidNO+IKArVSr8V7x7YmrHilKTCMUU5r3TJN9ktFyGRWmJ1GuIo9MEWxEH/rDMcnSKZPUE0eMiWHDiU4IsBWb5Bcuu/b9i9mCcAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
5986 ></span>
5987 <img
5988 class="gatsby-resp-image-image"
5989 alt="Hadron"
5990 title="Hadron"
5991 src="/static/3439f9711bfd03d838ab130c6fc2559c/a6d36/cubicle.png"
5992 srcset="/static/3439f9711bfd03d838ab130c6fc2559c/222b7/cubicle.png 163w,
5993 /static/3439f9711bfd03d838ab130c6fc2559c/ff46a/cubicle.png 325w,
5994 /static/3439f9711bfd03d838ab130c6fc2559c/a6d36/cubicle.png 650w,
5995 /static/3439f9711bfd03d838ab130c6fc2559c/e548f/cubicle.png 975w,
5996 /static/3439f9711bfd03d838ab130c6fc2559c/798d4/cubicle.png 976w"
5997 sizes="(max-width: 650px) 100vw, 650px"
5998 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
5999 loading="lazy"
6000 />
6001 </a>
6002 </span></p>
6003 <h4>Badron</h4>
6004 <p><span
6005 class="gatsby-resp-image-wrapper"
6006 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
6007 >
6008 <a
6009 class="gatsby-resp-image-link"
6010 href="/static/784c66032f59ba7f5afe0551c7c994e4/561da/holodeck.png"
6011 style="display: block"
6012 target="_blank"
6013 rel="noopener"
6014 >
6015 <span
6016 class="gatsby-resp-image-background-image"
6017 style="padding-bottom: 29.447852760736193%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAABh0lEQVQY0z2QS0tbURSF76/xD3ToRGgpiDiwQ8GZFBFxIooDoYMgYsB0oBKDOvGR2Fa0vjVWjRGieMU3CkENvrC51RhTTe77cycRD2ex9lrr7DNYCm9HNx3+vxhkdaugn01IPRvotvuuTRust/eZnI2sCMueIciaBU/ZS6Q4/acTXIxSPRjm25xK668Y9Svn1A1McaSlaR9bo3YlQcvIMl+nD/BOrNMQTeJbUPHEbuhZUin3jTN/8YDysbmLpvldAqFJPgTC1P7epLStm8rRCFVdQ/TsXFHW7OXTcIQKj5/P/hm+eHqpid7S6P9Jy9op3uAsJR1Bpi+fUCa3Djh+zLJxFMf3R6V/Y5/OyCHjmsWgzIF4is6wSihp0beqMvPgsrS1z/d4mh/bJ/iOk4R2z+hYiLGjZVB06SMt3chFk7ruBZp0k9BdHsW7M4veRa6or3WHDMU8z3+l1Jd8pwJZQ3FdeS1wHIes7WAITJkNxy3MjmSWaF20WciKnM9t8S3h/B85y8YWfgUURaGqG7IdTQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
6018 ></span>
6019 <img
6020 class="gatsby-resp-image-image"
6021 alt="Badron"
6022 title="Badron"
6023 src="/static/784c66032f59ba7f5afe0551c7c994e4/a6d36/holodeck.png"
6024 srcset="/static/784c66032f59ba7f5afe0551c7c994e4/222b7/holodeck.png 163w,
6025 /static/784c66032f59ba7f5afe0551c7c994e4/ff46a/holodeck.png 325w,
6026 /static/784c66032f59ba7f5afe0551c7c994e4/a6d36/holodeck.png 650w,
6027 /static/784c66032f59ba7f5afe0551c7c994e4/561da/holodeck.png 969w"
6028 sizes="(max-width: 650px) 100vw, 650px"
6029 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6030 loading="lazy"
6031 />
6032 </a>
6033 </span></p>
6034 <h4>Levi</h4>
6035 <p><span
6036 class="gatsby-resp-image-wrapper"
6037 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 503px; "
6038 >
6039 <a
6040 class="gatsby-resp-image-link"
6041 href="/static/ac74355773bfffc9f0cbbd73829b747a/a4078/levi.png"
6042 style="display: block"
6043 target="_blank"
6044 rel="noopener"
6045 >
6046 <span
6047 class="gatsby-resp-image-background-image"
6048 style="padding-bottom: 32.515337423312886%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABnUlEQVQoz5WST0sbURTF5/P0I7hoaaW0KNKNChFsLFSlWP90Y3e6KEiDpdqFFQRXoiB1I2jddFDHxml0psZOzEwTJ2Y0MiFFRdTYpJP5+RKpVbrywuGcc8+Dy7tcyedmeb5PoVSqaN//l5b1df9/fsnS860N3uwkOCoWmMhmqItpPDbW+fTLrTwoeh4lMcAT7Hmliv6LS+9f+fIAKWhGuaMp1Dtxgo5FtJDnezHPPWONnPeH25Y0F7fQXZcpeQV1bRMnmSZl2tRuRlja30eLRDEsG1mJoKzqpNIZErZDes9FUXUybo54IoWV3CGbO0AaDo3wbVml6m49oXejNLS8or2zT3x9nbczs1Q/bCI0NEZjsIeu3gGa217T3t3P4PsxHtQ8ZejDOE8CHdyvDSIvriK9kE0+Jg95NK0yb+4RmNXoU216nWNaI7s0LmwxvLHLoO4wZR/wbCZMx7xOp5Ik8PkHXV9ivJzTqJ78StjJIS2cgnIC8m8wC6AXwRKri53BioDlQVRkhshsgW2xp7johfPws8znkBBHYQhkhb8ApETjMAq5t+oAAAAASUVORK5CYII='); background-size: cover; display: block;"
6049 ></span>
6050 <img
6051 class="gatsby-resp-image-image"
6052 alt="Levi"
6053 title="Levi"
6054 src="/static/ac74355773bfffc9f0cbbd73829b747a/a4078/levi.png"
6055 srcset="/static/ac74355773bfffc9f0cbbd73829b747a/222b7/levi.png 163w,
6056 /static/ac74355773bfffc9f0cbbd73829b747a/ff46a/levi.png 325w,
6057 /static/ac74355773bfffc9f0cbbd73829b747a/a4078/levi.png 503w"
6058 sizes="(max-width: 503px) 100vw, 503px"
6059 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6060 loading="lazy"
6061 />
6062 </a>
6063 </span></p>
6064 <h4>Adele</h4>
6065 <p><span
6066 class="gatsby-resp-image-wrapper"
6067 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 229px; "
6068 >
6069 <a
6070 class="gatsby-resp-image-link"
6071 href="/static/c331752af447683fae61633f15c83f4e/d0281/adele.png"
6072 style="display: block"
6073 target="_blank"
6074 rel="noopener"
6075 >
6076 <span
6077 class="gatsby-resp-image-background-image"
6078 style="padding-bottom: 121.47239263803682%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAACXBIWXMAAAsTAAALEwEAmpwYAAADJElEQVQ4y4WVW1PaQBiG/XH9Af0FnelVb3rRm15743Rqx9aLTjtVe1BBEDxgBETUimdLtQel1sNUR5QBRTkkhABJNm93FwOJQdyZnWzY3Sfffu+7Hx2GYYA19rR2s1nnc0Wdd0IM25y1dVhh1vFJSsXydhnRdRk1lUCpEPgiIiKrsm2tA2j9UZIJf2q6AWGxhMEpEaOREoUqiKwpcAUlxBMVvoZF2Rb4bVehm0Vs71UwSwG+2RI8oTyGAhn0+87Q5z1F/+gpUhfVOrAFzAY8y6jwhEV8mSrg83iaAo4p4ISOU3AHsxgWcliMS+ygYFtu59oGNCeS6RqGJ5MY8CVphBICMR3CMj3+MoF/XsPPA2KL7k5R2FfNRbKiYT5uYOKrBn+0DO+MyLs7VIQQk6CqdvHaiGJAv7HD3+MahoQiz6kJZOPh6SKOz2oNUVpFabONuYjl0zUtcmHMPjZXxki4hPmNcts8djQN3PzaVUGjEBkjwRwV45IqfYFX79bxpu87fb/GZU5v5LIOvQdYqRrUxHm8eLuKfqq2S8jCNVPA0GwBg4EcNn5XHLfLAWzmo/5F4SsFTF1xHw5S4PveFXQ/6oGXRu6nDjAvwb1Ac3JpS4FnRsaA5x963HvofdiJDw+ewxOj1hIK2DmsthTHATTts/WnwpVmYkws1DDCVA4XuEAjIZFaqARVc1rICWxYp0ptUreLJ8wsJNG8lriFfHTMXHB8rjqi7LhtTGK5iu6QyEGsN/1Yf3cHRcxtyA4L3ZnDPK17dYjUgDR7He4JS0hn7dfREWHTOgTjcxIvGNYbY0Y5NqdgclFDeM1ANt/myCaQ5SWyxm6HxAsFE8PPBapiaklHcAUILBnwRnX8OiT3A2u0CMxuEF5xGIBVHFZ5GGRikRo/qiK6qSMv427bWCcy1wb8CwSTMVa+wJ+BGEFkneDHPpA4ErEZT2A3sY/TZPr+CFkOSwqwe1DEwloSqSxwXST8d9bOz1N4/KQTXS8/Il8Q7wZaFVOUMrpff8LTZ11YWonfbKoDT88y2EkcNfeQNkc2o1QqVb7pPHUJTdNblqzb/5j/AWM++OEwsRzDAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
6079 ></span>
6080 <img
6081 class="gatsby-resp-image-image"
6082 alt="Adele"
6083 title="Adele"
6084 src="/static/c331752af447683fae61633f15c83f4e/d0281/adele.png"
6085 srcset="/static/c331752af447683fae61633f15c83f4e/222b7/adele.png 163w,
6086 /static/c331752af447683fae61633f15c83f4e/d0281/adele.png 229w"
6087 sizes="(max-width: 229px) 100vw, 229px"
6088 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6089 loading="lazy"
6090 />
6091 </a>
6092 </span></p>
6093 <h3>Tool time</h3>
6094 <p>You can read more about our work on the Home Improvement team at LendUp on our <a href="https://www.lendup.com/engineering/post/home-improvement">engineering blog</a>.</p></content:encoded></item><item><title><![CDATA[Alcatraz Challenge 2016 - Review]]></title><description><![CDATA[This was a much smaller race than I expected. Only 116 souls according to the official results. I felt lucky to have snagged a race number…]]></description><link>https://www.charlieharrington.com/alcatraz-challenge-2016-review</link><guid isPermaLink="false">https://www.charlieharrington.com/alcatraz-challenge-2016-review</guid><pubDate>Fri, 16 Dec 2016 00:00:00 GMT</pubDate><content:encoded><p>This was a much smaller race than I expected. Only 116 souls according to the official results. I felt lucky to have snagged a race number when I did — the website warned it would be capped at 500 swimmers. That was enough for me. I frantically entered my credit card details and breathed a sigh of terrible relief at what I’d done.</p>
6095 <p>The Alcatraz Challenge is a 1.5 mile swim from Alcatraz Island to the northern shore of San Francisco, followed by a 7 mile run over the Golden Gate Bridge and back to Crissy Field. Alcatraz Island is a tiny rock in the San Francisco Bay surrounded by shark-friendly, freezing cold waters with notorious tidal currents — and famously the former home to an inescapable maximum security prison.</p>
6096 <blockquote>
6097 <p>In its 29 years of operation, there were 14 acknowledged attempts to escape from Alcatraz prison involving 34 inmates. Officially, every escape attempt failed, and most participants were either killed or quickly re-captured. However, the participants in the December 1926 and June 1962 attempts, though presumed dead, disappeared without a trace, giving rise to popular theories that they were successful.</p>
6098 </blockquote>
6099 <p>I paid over $100 dollars to give it a shot.</p>
6100 <p><span
6101 class="gatsby-resp-image-wrapper"
6102 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 595px; "
6103 >
6104 <a
6105 class="gatsby-resp-image-link"
6106 href="/static/5a3d0e7e41b61a9822851d5f20ea8527/3dd3e/connery.png"
6107 style="display: block"
6108 target="_blank"
6109 rel="noopener"
6110 >
6111 <span
6112 class="gatsby-resp-image-background-image"
6113 style="padding-bottom: 68.71165644171779%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAADLklEQVQozw2S74vbdBzH80coyuxsu7Zp0mZt2qTJN/nmR5NvfjRJmzTNtdem7by7dbveyd2uY+fBvJ2KqMwdoqJD3WTbcU9OHzg3UFAQJiLssfjE5yL+QARB8IFgPryffnjx/oEF5zY7k3V7sLZ8cefm7Tvz7Uuz57dYpsFVq6YATMB5IuiqsqdKpqrYjtcdrZrhc25/1hmuY53JPJHWnbx8+N7rb964uL0YTKYEUa5XK5YIdL7RlsQIaQ4ELa2pI9QbTs1g4kSrbv8C5o5mzjDR+Xdu3dvefWFx9ZrleiRRIglSZuuuAulyqX62LLE1x0CarvlhZAWxFZxzls5jrf6qFa24w9kH944Xe3sbO5dN26qQZD6TqZWIjgLrJVJkWZVv2AZCBnI9rx2NNW/UClcxe2lF8YbzKwdHJycvvXF9c7ErAoE4k81lM2K1EqqyA8UWhAYUTF1DSLdss7c81tyh5U8xPRgjP37/4+OTz+6/dvh2vLIGBZBLpwvZbFuWujJ0ea4lCi1VtQ2jqUi63oyGI6sT684QQ0GsdZYPb97+5P6D3f2DfjxheSGbx3MFvEwUQY02OT5Jy7NNy7JkKMiSEEaRE4xUq48Bw9f8/qeff/Hwy68Sz4N4zIkSUSjQJEnhRZIkKxTl6k3HaTWbCViUJRD0uu1erFgR9u6Hdx599/jPP/7+9vvHu/v7XhAqyIQAgCpl8g1T5EkCN5CRcGVFkWWYkINu2+sOZBRiv//21y8///rvP/99/c2jtfmG4wcNABRVQ03Nt52O12HYBsfUpeRTUSAUFVn0/XbYjyXUxvZfufHq9bd++PGnW3ePkrRanYBh6jRFKZKCNKQIYhXPU3hBhBKUFMBzEALf727tvHhhcw8TVHs6m390dHzl2oEbLqmGXedA0i1LFHiyCIg8lX6GInCGZQURsgwjAN6yrY3NrUuLq1imWHXDwfrOZacbSbrFAEhWangBV+iKSBF07lk89VSxkCuXyzwQaZrmGqye7CwIhuMplsFp5PXa0ajGSQ3YJM/WcnjpyVPpdCpVPXOayqQyTz9xOnUqly8wLE/XkmMEQWCYRpVm/wdrjfygJbfpGgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
6114 ></span>
6115 <img
6116 class="gatsby-resp-image-image"
6117 alt="Sean Connery in the Rock"
6118 title="Sean Connery in the Rock"
6119 src="/static/5a3d0e7e41b61a9822851d5f20ea8527/3dd3e/connery.png"
6120 srcset="/static/5a3d0e7e41b61a9822851d5f20ea8527/222b7/connery.png 163w,
6121 /static/5a3d0e7e41b61a9822851d5f20ea8527/ff46a/connery.png 325w,
6122 /static/5a3d0e7e41b61a9822851d5f20ea8527/3dd3e/connery.png 595w"
6123 sizes="(max-width: 595px) 100vw, 595px"
6124 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6125 loading="lazy"
6126 />
6127 </a>
6128 </span></p>
6129 <div style="text-align:center;padding-bottom:10px">You know… you’re almost the only evidence that I exist.</div>
6130 <p>I arrived at the East Beach of Crissy Field around 5 AM. The sky was dark grey, the water quiet and serene. All was calm at the transition area. A few people chitter-chattered while applying Body Glide. I looked for someone to chitter-chatter with myself, but no takers. Instead, I jumped on an early shuttle to the appointed ferry building at 5:45 AM instead of my scheduled 6 AM departure. I closed my eyes as we made our way across the city amid the warming sunrise.
6131 It sounded like a bunch of 8th graders were on the bus behind me. I turned around — a bunch of 8th graders were on the bus behind me. My confidence boosted — <em>if they could make the swim with their tiny 8th grade arms</em> — until I remembered their parents. I am 30 years old and I barely told my parents I was swimming this race. These kids must be future Olympians.</p>
6132 <p>After body-marking at the ferry area, I ran into the woman who I sat next to at the Sports Basement race prep talk the day before. She was nervous. Me too. We discussed. We met another woman who swam this race for the last two years. Her times varied widely — the first year took her a speedy 35 minutes and the second a brutal 75. She, like everyone else who has swam these waters, told us that every Alcatraz swim is different. This point was hammered home by the race director during our mandatory prep session. The opening slide was a visualization of GPS data plotting his last 100 swims from Alcatraz — a blooming display of paths stretching across 3+ miles on shore. He told us that he recently completed his 1000th Alcatraz swim. 1000 swims — approximately one crossing a week for 20 years. He also does them naked. Not naked naked. But without a wetsuit. I think we were supposed to be reassured by him.</p>
6133 <p>We boarded the ferry and headed out to the island. I spent some quality pre-race time in the bathroom, and then laid down on the floor of the ferry and pretended to stretch. I felt powerless. I had no choice now but to proceed with this insane trial. I felt like I wasn’t really there — I was someone else watching myself.</p>
6134 <p>After a half hour, we neared the jump-zone. It really was a skydiving-like jump-zone situation. We would be jumping out of the side hatch of the boat into the water from about 8 or more feet, and then told to swim like hell so that we don’t get clobbered by the next leaper behind us. A final warning: “Don’t make this your come-to-Jesus moment at the edge, cause he ain’t coming — it’s already too late.”</p>
6135 <p>Our nervous final tittering centered around our complete lack of visibility of Sutro Tower. We were told the day before by the race director that Sutro Tower would be our one sighting landmark to rule them all: “Just keep it at your 12 o’clock at all times and let the tide do the rest.” With Sutro entirely ensconced in Karl the Fog, we’d now be tracking towards the lesser landmarks of Fort Mason, then the golden dome of the Palace of Fine Arts, and then finally East Beach of Crissy Field.</p>
6136 <p>We crowded around the starboard door, hummed along to the anthem, chanted a 30 second count down, and shuffled to the hatch. The race organizers began yelling “Go! Go! Go!” I neared the edge, came to Jesus, started my watch, and jumped feet first, trying not to go too deep into the colder layers of water below.</p>
6137 <p>It felt great actually. I swam mindlessly and rapidly away from the boat so that I wouldn’t get jumped on. The coldness I feared had been contained by my wetsuit and my beloved new thermal skull cap. After a minute I began to adjust to my new reality:</p>
6138 <blockquote>
6139 <p>I’m over a mile from shore, open water swimming for the first time, with choppy, relentless, clobbering waves smashing into my right side every three seconds. And don’t even get me started thinking about what’s swimming around beneath me right now.</p>
6140 </blockquote>
6141 <p>I turned around to take in Alcatraz in its terrible glory from a few hundred feet out in the water, and then began chopping water towards land. I tried to establish a constant stroke, but found left-breathing to be impossible because I would lose sight of the next incoming wave. My stuttering stroke became 1–2-breath-1–2-gulp-seawater-breath.</p>
6142 <p>I swam like this for what I assumed was a half hour. I tried to conjure Edmund Dantès, escaping from imprisonment after being thrown into the sea from the island tower of Château d’If, en route to Monte Cristo, where I would find fortune, plot revenge, and win back my long-lost love Mercédès. I was scared to look at my watch — I didn’t want to know how long I’d been swimming given how far I had yet to go. At this point, I’d lost sight of all other swimmers. I saw a kayak on my left and a jet-ski ahead in the distance. I was either in first or last place.</p>
6143 <p>My only happiness was that the fog finally broke and Sutro Tower was again visible. I started to kick into high gear, and suddenly cramped in my right calf. The muscle screamed in pain — I couldn’t bend my leg. I waved to the kayak and asked to hang on for a bit to stretch it out. I doggy-paddled over with my aching leg hanging behind me. I held onto his bow and started to massage out the cramp. It didn’t seem to be helping, but it was so good to rest. I was clearly dehydrated from the nearly gallon of seawater I’d drank. I asked him how I was doing, he lied and said okay, but that I needed to start heading for the Palace of Fine Arts now, confirming my fear that I’d been too conservative in my route.</p>
6144 <p>The cramp was not getting any better. There was no way I could make it back to shore like this. I decided to give up — surviving seemed better than drowning.</p>
6145 <p>“Maybe you should go get a boat for me,” I said.</p>
6146 <p>“Okay, but there’s none nearby. I can radio one over if you want.”</p>
6147 <p>What I wanted was to make it to shore. I told him I changed my mind. I was going to make it to shore myself, no matter what, thank you very much. I asked him to please keep an eye on me as I swam away from the kayak. Somehow the cramp started to dissipate. After a few minutes, he said he had to go help someone else, and I was on my own again. Thankfully, the shore start to creep closer. For the next 25 minutes, I slowly plodded forward with my 1–2-breath stroke.</p>
6148 <p>Eventually I saw the beach and then the color of people’s shirts on the beach and then peoples faces on the beach. I closed my eyes for while to just keep moving, but started to get dizzy and thought I was going to black out. Finally, finally, I stood up and ripped off my googles and cap. I felt the sand, the glorious earth, and wanted to puke on it.</p>
6149 <p>I’d made it — I survived. I still had a seven mile run over the Golden Gate Bridge and back, but nothing else mattered. Fortune, revenge, and Mercédès awaited.</p>
6150 <p><span
6151 class="gatsby-resp-image-wrapper"
6152 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
6153 >
6154 <a
6155 class="gatsby-resp-image-link"
6156 href="/static/d06e4690a848e0a919b40759b184e577/5a190/success.png"
6157 style="display: block"
6158 target="_blank"
6159 rel="noopener"
6160 >
6161 <span
6162 class="gatsby-resp-image-background-image"
6163 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEh0lEQVQ4y03P+U/aZwDH8ceKoIInzi94K1WH4gGCeKCidUoP14rDo1pn58osa52mW6exrZ1T19qmTWqPzVtBrAgqHqAIiuAB2G7Lmi1T5MtldT8t/RP2lXRJk1c+eZIn7zx5wHO5+cXc/s8LcJ/COqC0Di7ZhpbhUY1TqD0aWzscUdtG1dYxtW1Mc0yIWLW7OESrDuDK4AEljDRDKnhYBYt0R08lxvvPZc9EavGaY3zNKVq1IytGaJ3idefE/8DAkgXJhl3ZiAoW6w57+hfzMllJMRGsFDL/y2tClVmiP5zUOid1BwjJB8CQyjK8Ao+6TOgP7w0sJ31MiQwOiSeGC3jc9qt1Pz4YkJv+nVp3TOmd0o0DmR7xVrqBOAAjanhUDQs1VqHaMvfqXWV9Szg++CyTzaXnTXTd39Wpenv7pg1H05uO6S3HDGLTZcsxu+UAQrV1XANPrFrFGljx27vaq7dIBAKTQqWSKCkkCj2N1djcPm96K992IOYMzg8BscYyqbVI1mGJ1jJnOnw8tkyKjsP54qEA6DwrP52S2tfePi/fnH/1z7zBsWB0vmc6BibXzFPr+1K9RabblxucwlnD6bTMvITUzIiYu7wLjxr4093tapVx/vXhgtG+sONYMDmO1wVMac3S9X2ZzjKt35dv2yQrfwhKK8uYjOK4eAGDLGptkvY+WnqFNPbFnfcUO7bFHRuyQKLdla3vSnV7Mp15dsO8YLRNrfxeVcwppdM5ZNqT5qa1mZcKI6wwWRFKF4XJ5lorkOrMMxuwfBO5tsv1uwoDvPLrAb+86gwt8VxaSi2nYG74qfa1XWWyLSGlwaI0wktG67LJjhzAU5HqSmNHr2jlzoMxieavCeXr5i5hfnpxdS6Dx8po4pXM9j8Z2dwbXHmzuLGHNIvbljn97szaG+W2BZy5+B0ng9nV0ye4cuOzz28QQmPdPMOxXsmfZjDrP2Hzi3Nav+lukPydxW+rrOI/7pdodmxDk+oXg2KlyQ7obEH5pYddjyeYhZfdUH4n3NHuWAj3EYcUmcvNyS7JSC8p7azt0RNS2TQK9VTNtY7lP1+81D8bUbe1PgQVlTc5ZT1RjEvAOwHjjcd4+rphw/zCOGFxX0CRaX6hKdTsjozyXzBEMjmWQsk+m/WT7OI9aU5hDYNRAr5qaC+r/h4Qs7ARLKREe+FRAfHANz4q9UpgHBd4x8YntxLIl90hCvIjiEiC2PUFP4wXFeb6B0WC8prbqcXXUdG5uJhsT08sOiAGFZTs5nsSG5qVVNSCCqTifLiewWxcbAE2OCGEGOGfWBTFu1197ds7LY0glsLyiSvEhDHRQSTkZQ8oFRWY4IEnA1xMXu2TUHKFN+Y0BsrG07iBtDIoPA4XTvPLqDvHbxkZ7gbXb94CeKpnKN3DNwTtA6GJdPfABP/ILExgPO1CJznntocb1YtAx0TlxFTcwSfmoPAJweyr4bk1d7sE4HJ9EwiiY6BklA8BhYM8iDQ0geaNJ2P9I0iZX0fTOoOJRWn5FafO80tvDREZRSf8TkZz23DJPJ6g7j8uA0jDUVocbAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
6164 ></span>
6165 <img
6166 class="gatsby-resp-image-image"
6167 alt="Finisher pic of Charlie Harrington"
6168 title="Finisher pic of Charlie Harrington"
6169 src="/static/d06e4690a848e0a919b40759b184e577/a6d36/success.png"
6170 srcset="/static/d06e4690a848e0a919b40759b184e577/222b7/success.png 163w,
6171 /static/d06e4690a848e0a919b40759b184e577/ff46a/success.png 325w,
6172 /static/d06e4690a848e0a919b40759b184e577/a6d36/success.png 650w,
6173 /static/d06e4690a848e0a919b40759b184e577/5a190/success.png 800w"
6174 sizes="(max-width: 650px) 100vw, 650px"
6175 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6176 loading="lazy"
6177 />
6178 </a>
6179 </span></p>
6180 <div style="text-align:center;padding-bottom:10px">Hey, Mercédès.</div></content:encoded></item><item><title><![CDATA[One Day Lord Shardik Will Return]]></title><description><![CDATA[Not quite Watership Down, but still pretty weird in a good way. Here's my musical book review of Shardik.]]></description><link>https://www.charlieharrington.com/terminal-man-one-day-lord-shardik-will-return</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-one-day-lord-shardik-will-return</guid><pubDate>Tue, 06 Dec 2016 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/296624683&amp;color=00aabb&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe>
6181 <p>Not quite <em>Watership Down</em>, but still pretty weird in a good way. Here's my musical book review of <em>Shardik</em>.</p></content:encoded></item><item><title><![CDATA[Too Much]]></title><link>https://www.charlieharrington.com/terminal-man-too-much</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-too-much</guid><pubDate>Wed, 10 Feb 2016 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/245527707&amp;color=%2300cc11&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe></content:encoded></item><item><title><![CDATA[Glass-Steagall Act Farewell Show]]></title><description><![CDATA[Six years ago Mark Mager convinced me it was a good idea to play an acoustic Beatles medley in front of our entire Morgan Stanley division…]]></description><link>https://www.charlieharrington.com/glass-steagall-act-farewell-show</link><guid isPermaLink="false">https://www.charlieharrington.com/glass-steagall-act-farewell-show</guid><pubDate>Fri, 22 Jan 2016 00:00:00 GMT</pubDate><content:encoded><p>Six years ago Mark Mager convinced me it was a good idea to play an acoustic Beatles medley in front of our entire Morgan Stanley division to celebrate my departure and his return. Now you too can witness the final (only) show of The Glass-Steagall Act (thankfully featuring the talents of Bill "The Intern" Ward):</p>
6182 <iframe width="560" height="315" src="https://www.youtube.com/embed/FOdLVF24zpQ?rel=0" frameborder="0" allowfullscreen></iframe></content:encoded></item><item><title><![CDATA[Space Time Travel with Wormie]]></title><description><![CDATA[Wormie is an iOS app to connect you with people in the places you want to see. Live Maybe you want to see if there's a line at your favorite…]]></description><link>https://www.charlieharrington.com/space-time-travel-with-wormie</link><guid isPermaLink="false">https://www.charlieharrington.com/space-time-travel-with-wormie</guid><pubDate>Sat, 02 Jan 2016 00:00:00 GMT</pubDate><content:encoded><p><span
6183 class="gatsby-resp-image-wrapper"
6184 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
6185 >
6186 <a
6187 class="gatsby-resp-image-link"
6188 href="/static/2ffd4f417faf2083be8def2a5c6fdbd4/00d43/logo.png"
6189 style="display: block"
6190 target="_blank"
6191 rel="noopener"
6192 >
6193 <span
6194 class="gatsby-resp-image-background-image"
6195 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACxLAAAsSwGlPZapAAACoklEQVQ4y2P4TwFgQBf49/f/3z8g9A8h9ucfFOHW/A9D8h+mELKZcM1gZf++ff57dMufddP+7F7+7+VjiMzT73+2PP+26OGXDc++Pf72B1k/A9SpQOLmuV859t99xH54CP3wFv0ZpfF//fQ1z38EHn/ldOiF3eFXjodeANkbnn2F62eA6nx+/2e8/k8v4f+hct99xH/6S/7zE/8YoRl66JHbyff+x1767L0ffOaD17HXTodfHnj9A6jl7z+g5r8gzb+nlf1w4/8dJLtAk8VPkrNaU+CxLdfXROPYY09dtl43TSlStnbSSi0POPzE9cirzPNv//6DO/vXjx8ZNv8DJA6Y87AyMIhJy6qaWKbxM3yP0Uk481ouKkdJQlRTQ52BgcG8YZr/uS++R188+Pobpvn71++Jxv8DJadrsgNVsDMBCUYXXoY3YeoJJ19Ie4QB+cxsICntlNLAi998Dj+//fk3IrR/1oX/9Ra+7iCoyAbSCUQTlRl/xunGnnpl1rWYjYMTKMojJe+69JDXiXdRJ199BUc6Ayg9AH1/YvsPL5F/wXKX7fhbVVg3G3L89xL6lGAcfeih9+mPTvN3G1f0uq0+GXjqnf3BF8sff4EFGCyS/yxsAYbZnxCF/2FyT0M0tgYavIs3ij3yyHH5Ua9t14Iufvc7+c7h0Itpdz9jTyR/Vvb/8JX87SN2L1Trkr/a53iDGGBob7nqvemix9FXrodfzH/4BVfyBMXZ37P7fqZb/vEQAAb+xwTjmCOPvE59dD72JvrU62Nvf0JciyNjgOP8/8e3v2ZU/PIW/RSpFXb4sdOR1+033r/88RdNJ45cBckOZ/d+rAkvP/XowLs/UJP/EcySEP+DvfDnx7cfv39DBYjKz6hBgJYHidZMTklCCgAAH5C+VnS+lRAAAAAASUVORK5CYII='); background-size: cover; display: block;"
6196 ></span>
6197 <img
6198 class="gatsby-resp-image-image"
6199 alt="Live"
6200 title="Live"
6201 src="/static/2ffd4f417faf2083be8def2a5c6fdbd4/a6d36/logo.png"
6202 srcset="/static/2ffd4f417faf2083be8def2a5c6fdbd4/222b7/logo.png 163w,
6203 /static/2ffd4f417faf2083be8def2a5c6fdbd4/ff46a/logo.png 325w,
6204 /static/2ffd4f417faf2083be8def2a5c6fdbd4/a6d36/logo.png 650w,
6205 /static/2ffd4f417faf2083be8def2a5c6fdbd4/e548f/logo.png 975w,
6206 /static/2ffd4f417faf2083be8def2a5c6fdbd4/00d43/logo.png 1000w"
6207 sizes="(max-width: 650px) 100vw, 650px"
6208 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6209 loading="lazy"
6210 />
6211 </a>
6212 </span></p>
6213 <p><a href="http://www.wormieapp.com/">Wormie</a> is an iOS app to connect you with people in the places you want to see.</p>
6214 <p><img src="/70f4bb033609f915de56b76602148fd0/WormieLive.gif" alt="Live"></p>
6215 <p>Maybe you want to see if there's a line at your favorite restaurant right now. Or maybe you want to see tonight's sunset, but from Australia.</p>
6216 <p><img src="/5b786d6755995fd58b55716cd22c89c3/WormieExplore.gif" alt="Live"></p>
6217 <p>Just open up Wormie, make a new Wormhole request, and Wormie will connect you with someone who can live stream back your request in real-time.</p>
6218 <p><img src="/dc356b2515de8e3e24a9b9b5e518c828/WormieCreate.gif" alt="Live"></p>
6219 <p>Think TaskRabbit meets Periscope. You can look up specific places with Yelp within Wormie to help you make your Wormhole requests.</p>
6220 <p><img src="/0c968594e3f7338fce7721e74ec8ce78/WormieYelp.gif" alt="Live"></p>
6221 <p>Design your own Wormie icon, and when you make a Wormhole connection, your Wormies will join together in unique heart!</p>
6222 <p><img src="/dc356b2515de8e3e24a9b9b5e518c828/WormieCreate.gif" alt="Live"></p>
6223 <h2>The react natives</h2>
6224 <p>The Wormie team is:</p>
6225 <ul>
6226 <li><a href="https://github.com/SunyoungKim508">Sunyoung Kim</a></li>
6227 <li><a href="https://github.com/nickfujita">Nick Fujita</a></li>
6228 <li>Me (Charlie Harrington)</li>
6229 </ul>
6230 <p>We had a great time building Wormie as a way to learn some new technologies and libraries:</p>
6231 <ul>
6232 <li><a href="https://facebook.github.io/react-native/">React Native</a></li>
6233 <li><a href="http://www.django-rest-framework.org/">Django Rest Framework</a></li>
6234 <li><a href="https://socket.io/">Socket.io</a></li>
6235 <li><a href="https://webrtc.org/">WebRTC</a></li>
6236 <li><a href="https://www.docker.com/">Docker</a></li>
6237 <li><a href="https://developers.google.com/youtube/">YouTube API</a></li>
6238 <li><a href="http://www.graphicsmagick.org/">GraphicsMagick</a></li>
6239 <li><a href="https://www.mapbox.com/api-documentation/">MapBox</a></li>
6240 <li><a href="https://www.yelp.com/developers/documentation/v2/overview">Yelp API</a></li>
6241 </ul></content:encoded></item><item><title><![CDATA[Minnow]]></title><link>https://www.charlieharrington.com/terminal-man-minnow</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-minnow</guid><pubDate>Mon, 21 Dec 2015 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/238473937&amp;color=%2300cc11&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe></content:encoded></item><item><title><![CDATA[Pseudoclassical Star Wars]]></title><description><![CDATA[Subclassing in JavaScript is quite useful. I used JavaScript subclasses to create this Star Wars inspired game. game You can play it right…]]></description><link>https://www.charlieharrington.com/pseudoclassical-star-wars</link><guid isPermaLink="false">https://www.charlieharrington.com/pseudoclassical-star-wars</guid><pubDate>Mon, 26 Oct 2015 00:00:00 GMT</pubDate><content:encoded><p>Subclassing in JavaScript is quite useful. I used JavaScript subclasses to create this Star Wars inspired game.</p>
6242 <p><img src="/d133c65d7c3e8457531f4fea327e0e3c/subclasswars.gif" alt="game"></p>
6243 <p>You can <a href="https://whatrocks.github.io/aluminum-falcon/">play it right now</a>, or check out the <a href="https://github.com/whatrocks/aluminum-falcon">code on Github</a>. The rest of this insanely long post will demonstrate how to use JavaScript subclassing to build the foundations of a similar game or visualization.</p>
6244 <h3>Subclassing overview</h3>
6245 <p>A class can be written to create fleets of similar objects with shared properties and methods. For example, if you're building the game Frogger, you can create a class called Vehicle that will produce a single instance of one of those pesky little cars. Let's imagine that your Vehicle class has one property (location, to track a car's current location) and one method (move, to drive a car forward). Based on the difficulty of the game level, you can use your Vehicle class to produce as many cars as you want to hinder that frog from its goal.</p>
6246 <p>But what if you get the idea to introduce a new type of vehicle that nefariously changes lanes at random, or a friendly car that scoops up the froggie and brings him to the pond? You could certainly add those features to your original Vehicle class, but then all instances of Vehicle would have those new properties and methods, and it may prove difficult to track and turn them on for certain Vehicle instances based on your game design (e.g. produce one and only one friendly car per level).</p>
6247 <p>Another option could be replicating the existing class for these new vehicle types. Now you'll have separate Vehicle, AggressiveVehicle, and FriendlyVehicle classes, and you can instantiate them all independently to your heart's delight. However, you've likely duplicated a lot of similar code in each of these classes - such as the location property and the move method. If you ever want to change how all the vehicles move, you'll now need to remember to change the code in each of the classes. There's got to be a better way to do this. And there is - subclassing!</p>
6248 <p>Subclassing allows you to create a fleet of objects that look vaguely similar to other objects. Subclasses are able to "share" properties and methods from their "parent" or "superclass". In JavaScript, subclassing is implemented via delegation. Rather than keeping the Frogger metaphor going, let's transition to a galaxy far, far away...</p>
6249 <h3>Starfield simulation</h3>
6250 <p>Like all great games, SubclassWars.js is based on a Windows screensaver.</p>
6251 <p>We want to simulate moving through space. A good first step could be randomly drawing a bunch of white dots on a black background. They don't even have to move - just get them to show up.</p>
6252 <p>Let's create a base class called Star:</p>
6253 <div class="gatsby-highlight" data-language="javascript"><pre class="language-javascript"><code class="language-javascript"> <span class="token comment">/**
6254 * Star class: the base class
6255 */</span>
6256 <span class="token keyword">var</span> <span class="token function-variable function">Star</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">x<span class="token punctuation">,</span> y</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6257 <span class="token comment">// "Stars" are just HTML spans </span>
6258 <span class="token keyword">this</span><span class="token punctuation">.</span>$node <span class="token operator">=</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'&lt;span class="star">&lt;/span'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6259 <span class="token comment">// Location along x-axis</span>
6260 <span class="token keyword">this</span><span class="token punctuation">.</span>x <span class="token operator">=</span> x<span class="token punctuation">;</span>
6261 <span class="token comment">// Location along y-axis </span>
6262 <span class="token keyword">this</span><span class="token punctuation">.</span>y <span class="token operator">=</span> y<span class="token punctuation">;</span>
6263 <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setPosition</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6264 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6265 <span class="token comment">// // Position the HTML span based on x and y</span>
6266 <span class="token class-name">Star</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">setPosition</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6267 <span class="token keyword">var</span> positionSettings <span class="token operator">=</span> <span class="token punctuation">{</span>
6268 top<span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>x<span class="token punctuation">,</span>
6269 left<span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>y
6270 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6271 <span class="token keyword">var</span> styleSettings <span class="token operator">=</span> <span class="token punctuation">{</span>
6272 <span class="token string">"border"</span><span class="token operator">:</span> <span class="token string">"2px"</span><span class="token punctuation">,</span>
6273 <span class="token string">"border-style"</span><span class="token operator">:</span> <span class="token string">"solid"</span><span class="token punctuation">,</span>
6274 <span class="token string">"border-color"</span><span class="token operator">:</span> <span class="token string">"white"</span><span class="token punctuation">,</span>
6275 <span class="token string">"border-radius"</span><span class="token operator">:</span> <span class="token string">"2px"</span><span class="token punctuation">,</span>
6276 <span class="token string">"position"</span><span class="token operator">:</span> <span class="token string">"absolute"</span>
6277 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6278 <span class="token keyword">this</span><span class="token punctuation">.</span>$node<span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span>styleSettings<span class="token punctuation">)</span><span class="token punctuation">;</span>
6279 <span class="token keyword">this</span><span class="token punctuation">.</span>$node<span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span>positionSettings<span class="token punctuation">)</span><span class="token punctuation">;</span>
6280 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6281
6282 <span class="token comment">/**
6283 * Setup starfield size
6284 */</span>
6285 <span class="token keyword">var</span> height <span class="token operator">=</span> <span class="token number">200</span><span class="token punctuation">;</span>
6286 <span class="token keyword">var</span> width <span class="token operator">=</span> <span class="token number">700</span><span class="token punctuation">;</span>
6287
6288 <span class="token comment">/**
6289 * Build star helper function
6290 */</span>
6291 <span class="token keyword">var</span> <span class="token function-variable function">buildStar</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6292 <span class="token keyword">var</span> star <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Star</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> width<span class="token punctuation">)</span><span class="token punctuation">,</span>
6293 <span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> height<span class="token punctuation">)</span>
6294 <span class="token punctuation">)</span><span class="token punctuation">;</span>
6295 <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#stars'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span>star<span class="token punctuation">.</span>$node<span class="token punctuation">)</span><span class="token punctuation">;</span>
6296 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6297
6298 <span class="token comment">/**
6299 * Initialize the game
6300 */</span>
6301 <span class="token function">$</span><span class="token punctuation">(</span>document<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ready</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6302
6303 <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'.starfield'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
6304 <span class="token string">"height"</span><span class="token operator">:</span> height<span class="token punctuation">,</span>
6305 <span class="token string">"width"</span><span class="token operator">:</span> width<span class="token punctuation">,</span>
6306 <span class="token string">"background-color"</span><span class="token operator">:</span> <span class="token string">"black"</span><span class="token punctuation">,</span>
6307 <span class="token string">"position"</span><span class="token operator">:</span><span class="token string">"relative"</span>
6308 <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6309
6310 <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">20</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6311 <span class="token function">buildStar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6312 <span class="token punctuation">}</span>
6313
6314 <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div>
6315 <p>Hello, stars! Note that I've used the pseudoclassical instantiation pattern (rather than the functional or prototypal patterns) to build the Star class, so new stars need to be instantiated with the "new" keyword. Another important detail for this and any other HTML visualizations is that the origin (the [0,0] location) of any HTML element or document is the upper left corner.</p>
6316 <p>Now, let's make those stars twinkle to show you how subclassing works. We will need to refactor our base Star class slightly:</p>
6317 <div class="gatsby-highlight" data-language="javascript"><pre class="language-javascript"><code class="language-javascript"><span class="token comment">/**
6318 * Star class: the base class
6319 */</span>
6320 <span class="token keyword">var</span> <span class="token function-variable function">Star</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> timeBetweenSteps</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6321 <span class="token keyword">this</span><span class="token punctuation">.</span>$node <span class="token operator">=</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'&lt;span class="star">&lt;/span'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6322 <span class="token keyword">this</span><span class="token punctuation">.</span>x <span class="token operator">=</span> x<span class="token punctuation">;</span>
6323 <span class="token keyword">this</span><span class="token punctuation">.</span>y <span class="token operator">=</span> y<span class="token punctuation">;</span>
6324 <span class="token comment">// New param to create a loop</span>
6325 <span class="token keyword">this</span><span class="token punctuation">.</span>timeBetweenSteps <span class="token operator">=</span> timeBetweenSteps<span class="token punctuation">;</span>
6326 <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">step</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6327 <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setPosition</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6328 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6329 <span class="token class-name">Star</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">step</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6330 <span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">step</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
6331 <span class="token keyword">this</span><span class="token punctuation">.</span>timeBetweenSteps<span class="token punctuation">)</span><span class="token punctuation">;</span>
6332 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6333 <span class="token class-name">Star</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">setPosition</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6334 <span class="token keyword">var</span> positionSettings <span class="token operator">=</span> <span class="token punctuation">{</span>
6335 top<span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>y<span class="token punctuation">,</span>
6336 left<span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>x
6337 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6338 <span class="token keyword">var</span> styleSettings <span class="token operator">=</span> <span class="token punctuation">{</span>
6339 <span class="token string">"border"</span><span class="token operator">:</span> <span class="token string">"2px"</span><span class="token punctuation">,</span>
6340 <span class="token string">"border-style"</span><span class="token operator">:</span> <span class="token string">"solid"</span><span class="token punctuation">,</span>
6341 <span class="token string">"border-color"</span><span class="token operator">:</span> <span class="token string">"white"</span><span class="token punctuation">,</span>
6342 <span class="token string">"border-radius"</span><span class="token operator">:</span> <span class="token string">"2px"</span><span class="token punctuation">,</span>
6343 <span class="token string">"position"</span><span class="token operator">:</span> <span class="token string">"absolute"</span>
6344 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6345 <span class="token keyword">this</span><span class="token punctuation">.</span>$node<span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span>styleSettings<span class="token punctuation">)</span><span class="token punctuation">;</span>
6346 <span class="token keyword">this</span><span class="token punctuation">.</span>$node<span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span>positionSettings<span class="token punctuation">)</span><span class="token punctuation">;</span>
6347 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6348
6349 <span class="token comment">/**
6350 * TwinkleStar class (our first subclass!)
6351 */</span>
6352 <span class="token keyword">var</span> <span class="token function-variable function">TwinkleStar</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> timeBetweenSteps</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6353 <span class="token function">Star</span><span class="token punctuation">.</span><span class="token function">call</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> timeBetweenSteps<span class="token punctuation">)</span><span class="token punctuation">;</span>
6354 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6355 <span class="token class-name">TwinkleStar</span><span class="token punctuation">.</span>prototype <span class="token operator">=</span> Object<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token class-name">Star</span><span class="token punctuation">.</span>prototype<span class="token punctuation">)</span><span class="token punctuation">;</span>
6356 <span class="token class-name">TwinkleStar</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span>constructor <span class="token operator">=</span> TwinkleStar<span class="token punctuation">;</span>
6357 <span class="token class-name">TwinkleStar</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">step</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6358 <span class="token class-name">Star</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function">step</span><span class="token punctuation">.</span><span class="token function">call</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6359 <span class="token keyword">this</span><span class="token punctuation">.</span>$node<span class="token punctuation">.</span><span class="token function">toggle</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6360 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6361
6362 <span class="token comment">/**
6363 * Setup starfield size
6364 */</span>
6365 <span class="token keyword">var</span> height <span class="token operator">=</span> <span class="token number">200</span><span class="token punctuation">;</span>
6366 <span class="token keyword">var</span> width <span class="token operator">=</span> <span class="token number">700</span><span class="token punctuation">;</span>
6367
6368 <span class="token comment">/**
6369 * Build star helper function
6370 */</span>
6371 <span class="token keyword">var</span> <span class="token function-variable function">buildStar</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6372 <span class="token keyword">var</span> star <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Star</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> width<span class="token punctuation">)</span><span class="token punctuation">,</span>
6373 <span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> height<span class="token punctuation">)</span><span class="token punctuation">,</span>
6374 <span class="token number">100</span>
6375 <span class="token punctuation">)</span><span class="token punctuation">;</span>
6376 <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#stars'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span>star<span class="token punctuation">.</span>$node<span class="token punctuation">)</span><span class="token punctuation">;</span>
6377 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6378
6379 <span class="token keyword">var</span> <span class="token function-variable function">buildTwinkleStar</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6380 <span class="token keyword">var</span> star <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">TwinkleStar</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> width<span class="token punctuation">)</span><span class="token punctuation">,</span>
6381 <span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> height<span class="token punctuation">)</span><span class="token punctuation">,</span>
6382 <span class="token number">100</span>
6383 <span class="token punctuation">)</span><span class="token punctuation">;</span>
6384 <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#twinkle'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span>star<span class="token punctuation">.</span>$node<span class="token punctuation">)</span><span class="token punctuation">;</span>
6385 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6386
6387 <span class="token comment">/**
6388 * Initialize the game
6389 */</span>
6390 <span class="token function">$</span><span class="token punctuation">(</span>document<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ready</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6391
6392 <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'.starfield'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
6393 <span class="token string">"height"</span><span class="token operator">:</span> height<span class="token punctuation">,</span>
6394 <span class="token string">"width"</span><span class="token operator">:</span> width<span class="token punctuation">,</span>
6395 <span class="token string">"background-color"</span><span class="token operator">:</span> <span class="token string">"black"</span><span class="token punctuation">,</span>
6396 <span class="token string">"position"</span><span class="token operator">:</span><span class="token string">"relative"</span>
6397 <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6398 <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">20</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6399 <span class="token function">buildStar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6400 <span class="token function">buildTwinkleStar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6401 <span class="token punctuation">}</span>
6402
6403 <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div>
6404 <p>Now we're getting somewhere!</p>
6405 <p>A lot happened in the last in the last iteration of code, and it's important to highlight some things now. First, we introduced a new method to our base Star class called 'step' that essentially mimics a game loop with the native JS function setTimeout. This is a little hacky and definitely not what you want to use for a real game, but this is just a demo, and hey, it's me.</p>
6406 <p>TODO: fix stars</p>
6407 <p>With our new step method built into the base Star class, we can now create lots of different subclasses of Star that add unique functionality. TwinkleStar twinkles, but we might want other stars that don't twinkle. How about stars that move instead of twinkle? Good idea, but we're not ready to get there just yet.</p>
6408 <p>Notice that we are calling setTimeout within the step method, and then passing in step as the function argument for setTimeout. setTimeout takes two arguments, a function to execute after a specified time, and that specified time. However, when setTimeout receives the function argument, it will simply accept the function value without maintaining any reference to the star instance that called step in the first place. That means that step will be called again as a free function invocation - 'this' will be bound to the global window object. That's not what we want at all. One solution is to set a context variable (var that = this) in the step function and use it as context for calling step. Another solution, which I've used, is to use bind to create a function called step where "this" is specifically bound to the star that called step. That was a mouthful, but an important mouthful.</p>
6409 <p>Let's talk about how we created the TwinkleStar subclass. We created a function called TwinkleStar with the same parameter signature as Star. Within that function, the Star class function is called using the .call method to bind 'this' to the new TwinkleStar object being created. Now, the new TwinkleStar will be set up with the base properties of a regular ol' Star (e.g. x, y, timeBetweenSteps, $node). Outside of the TwinkleStar function, we set up property and method delegation to the Star class using the Object.create pattern so that our new TwinkleStars can use any of the methods from the Star class (e.g. step, setPosition). Then we changed the constructor property to the TwinkleStar class so that any new TwinkleStars will be able to state that they are an "instanceof" TwinkleStar (and not Star). Finally, the coolest thing we do is write a new step method for TwinkleStar where we specify our unique action for all TwinkleStars. First we call the original Star step method, and then, crucially, we use jQuery to toggle the star span node on and off each time step gets executed - AKA making them twinkle.</p>
6410 <p>That's it! JavaScript subclassing in the pseudoclassical pattern.</p>
6411 <h3>The lost city of Z</h3>
6412 <p>Now it's time to get serious about our screensaver replica. We need to make moving stars. But not just any moving stars, we need our stars to move in such a way that it feels like we are being whisked away to a faraway planet for a new and exciting adventure. The stars need to move "towards" the screen, even though we can only place these HTML spans on a flat 2D surface. Yikes. Now, there are lots of really impressive implementations of moving starfields on the web, so it's definitely possible, but will require some math. After some searching, I discovered a very simple procedure that can calculate an x and y position for a star taking into account a simulated z-axis property.</p>
6413 <p>I'll walk through our changes in the code. Note that I'm not including the code for the Star or TwinkleStar classes since those won't be changing anymore.</p>
6414 <div class="gatsby-highlight" data-language="javascript"><pre class="language-javascript"><code class="language-javascript"><span class="token comment">/**
6415 * MoveStar class
6416 */</span>
6417 <span class="token keyword">var</span> <span class="token function-variable function">MoveStar</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> z<span class="token punctuation">,</span> timeBetweenSteps</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6418 <span class="token keyword">this</span><span class="token punctuation">.</span>z <span class="token operator">=</span> z<span class="token punctuation">;</span>
6419 <span class="token function">Star</span><span class="token punctuation">.</span><span class="token function">call</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> timeBetweenSteps<span class="token punctuation">)</span><span class="token punctuation">;</span>
6420 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6421 <span class="token class-name">MoveStar</span><span class="token punctuation">.</span>prototype <span class="token operator">=</span> Object<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token class-name">Star</span><span class="token punctuation">.</span>prototype<span class="token punctuation">)</span><span class="token punctuation">;</span>
6422 <span class="token class-name">MoveStar</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span>constructor <span class="token operator">=</span> MoveStar<span class="token punctuation">;</span>
6423 <span class="token class-name">MoveStar</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">setPosition</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6424
6425 <span class="token keyword">var</span> k <span class="token operator">=</span> <span class="token number">128.0</span> <span class="token operator">/</span> <span class="token keyword">this</span><span class="token punctuation">.</span>z<span class="token punctuation">;</span>
6426 <span class="token comment">// Translate into x-pos in 2D</span>
6427 <span class="token keyword">var</span> px <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>x <span class="token operator">*</span> k<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token punctuation">(</span>width <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6428 <span class="token comment">// Translate into y-pos in 2D</span>
6429 <span class="token keyword">var</span> py <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>y <span class="token operator">*</span> k<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token punctuation">(</span>height <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6430
6431 <span class="token keyword">var</span> positionSettings <span class="token operator">=</span> <span class="token punctuation">{</span>
6432 top<span class="token operator">:</span> py<span class="token punctuation">,</span>
6433 left<span class="token operator">:</span> px
6434 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6435
6436 <span class="token comment">// Stars "grow" larger when closer</span>
6437 <span class="token keyword">var</span> size <span class="token operator">=</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span><span class="token number">1</span> <span class="token operator">-</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>z <span class="token operator">/</span> <span class="token number">32</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">3</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
6438
6439 <span class="token keyword">var</span> styleSettings <span class="token operator">=</span> <span class="token punctuation">{</span>
6440 <span class="token string">"border"</span><span class="token operator">:</span> size<span class="token punctuation">,</span>
6441 <span class="token string">"border-style"</span><span class="token operator">:</span> <span class="token string">"solid"</span><span class="token punctuation">,</span>
6442 <span class="token string">"border-color"</span><span class="token operator">:</span> <span class="token string">"white"</span><span class="token punctuation">,</span>
6443 <span class="token string">"border-radius"</span><span class="token operator">:</span> <span class="token string">"2px"</span><span class="token punctuation">,</span>
6444 <span class="token string">"position"</span><span class="token operator">:</span> <span class="token string">"absolute"</span>
6445 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6446 <span class="token keyword">this</span><span class="token punctuation">.</span>$node<span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span>styleSettings<span class="token punctuation">)</span><span class="token punctuation">;</span>
6447 <span class="token keyword">this</span><span class="token punctuation">.</span>$node<span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span>positionSettings<span class="token punctuation">)</span><span class="token punctuation">;</span>
6448
6449 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6450 <span class="token class-name">MoveStar</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">step</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6451
6452 <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setPosition</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6453
6454 <span class="token comment">// Each tick, decrement z slightly</span>
6455 <span class="token keyword">this</span><span class="token punctuation">.</span>z <span class="token operator">-=</span> <span class="token number">0.2</span><span class="token punctuation">;</span>
6456
6457 <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">this</span><span class="token punctuation">.</span>z <span class="token operator">&lt;=</span> <span class="token number">0</span> <span class="token operator">||</span>
6458 <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>y <span class="token operator">*</span> <span class="token number">128.0</span> <span class="token operator">/</span> <span class="token keyword">this</span><span class="token punctuation">.</span>z<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token punctuation">(</span>height <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">&lt;</span> <span class="token number">0</span> <span class="token operator">||</span>
6459 <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>y <span class="token operator">*</span> <span class="token number">128.0</span> <span class="token operator">/</span> <span class="token keyword">this</span><span class="token punctuation">.</span>z<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token punctuation">(</span>height <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">></span> height <span class="token operator">||</span>
6460 <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>x <span class="token operator">*</span> <span class="token number">128.0</span> <span class="token operator">/</span> <span class="token keyword">this</span><span class="token punctuation">.</span>z<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token punctuation">(</span>width <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">&lt;</span> <span class="token number">0</span> <span class="token operator">||</span>
6461 <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>x <span class="token operator">*</span> <span class="token number">128.0</span> <span class="token operator">/</span> <span class="token keyword">this</span><span class="token punctuation">.</span>z<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token punctuation">(</span>width <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">></span> width
6462 <span class="token punctuation">)</span><span class="token punctuation">{</span>
6463 <span class="token comment">// When star "reaches" the screen, send it far away!!</span>
6464 <span class="token keyword">this</span><span class="token punctuation">.</span>x <span class="token operator">=</span> <span class="token function">randomInRange</span><span class="token punctuation">(</span><span class="token number">25</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6465 <span class="token keyword">this</span><span class="token punctuation">.</span>y <span class="token operator">=</span> <span class="token function">randomInRange</span><span class="token punctuation">(</span><span class="token number">25</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6466 <span class="token keyword">this</span><span class="token punctuation">.</span>z <span class="token operator">=</span> <span class="token number">31</span><span class="token punctuation">;</span>
6467 <span class="token punctuation">}</span>
6468
6469 <span class="token class-name">Star</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function">step</span><span class="token punctuation">.</span><span class="token function">call</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6470 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6471 <span class="token comment">/**
6472 * Helper function
6473 */</span>
6474 <span class="token keyword">var</span> <span class="token function-variable function">randomInRange</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">n</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6475 <span class="token keyword">var</span> sign <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0.5</span> <span class="token operator">?</span> <span class="token number">1</span> <span class="token operator">:</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>
6476 <span class="token keyword">return</span> sign <span class="token operator">*</span> Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> n<span class="token punctuation">)</span><span class="token punctuation">;</span>
6477 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6478
6479 <span class="token comment">/**
6480 * Setup starfield size
6481 */</span>
6482 <span class="token keyword">var</span> height <span class="token operator">=</span> <span class="token number">400</span><span class="token punctuation">;</span>
6483 <span class="token keyword">var</span> width <span class="token operator">=</span> <span class="token number">700</span><span class="token punctuation">;</span>
6484
6485 <span class="token comment">/**
6486 * Build star helper function
6487 */</span>
6488 <span class="token keyword">var</span> <span class="token function-variable function">buildStar</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6489 <span class="token keyword">var</span> star <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Star</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> width<span class="token punctuation">)</span><span class="token punctuation">,</span>
6490 <span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> height<span class="token punctuation">)</span><span class="token punctuation">,</span>
6491 <span class="token number">200</span>
6492 <span class="token punctuation">)</span><span class="token punctuation">;</span>
6493 <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#stars'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span>star<span class="token punctuation">.</span>$node<span class="token punctuation">)</span><span class="token punctuation">;</span>
6494 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6495
6496 <span class="token keyword">var</span> <span class="token function-variable function">buildTwinkleStar</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6497 <span class="token keyword">var</span> star <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">TwinkleStar</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> width<span class="token punctuation">)</span><span class="token punctuation">,</span>
6498 <span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> height<span class="token punctuation">)</span><span class="token punctuation">,</span>
6499 <span class="token number">200</span>
6500 <span class="token punctuation">)</span><span class="token punctuation">;</span>
6501 <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#twinkle'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span>star<span class="token punctuation">.</span>$node<span class="token punctuation">)</span><span class="token punctuation">;</span>
6502 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6503 <span class="token keyword">var</span> <span class="token function-variable function">buildMoveStar</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6504 <span class="token keyword">var</span> star <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MoveStar</span><span class="token punctuation">(</span><span class="token function">randomInRange</span><span class="token punctuation">(</span><span class="token number">50</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
6505 <span class="token function">randomInRange</span><span class="token punctuation">(</span><span class="token number">50</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
6506 Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span> <span class="token number">32</span> <span class="token operator">*</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
6507 <span class="token number">50</span>
6508 <span class="token punctuation">)</span><span class="token punctuation">;</span>
6509 <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#moving'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span>star<span class="token punctuation">.</span>$node<span class="token punctuation">)</span><span class="token punctuation">;</span>
6510 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6511
6512 <span class="token comment">/**
6513 * Initialize the game
6514 */</span>
6515 <span class="token function">$</span><span class="token punctuation">(</span>document<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ready</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6516
6517 <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'.starfield'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
6518 <span class="token string">"height"</span><span class="token operator">:</span> height<span class="token punctuation">,</span>
6519 <span class="token string">"width"</span><span class="token operator">:</span> width<span class="token punctuation">,</span>
6520 <span class="token string">"background-color"</span><span class="token operator">:</span> <span class="token string">"black"</span><span class="token punctuation">,</span>
6521 <span class="token string">"position"</span><span class="token operator">:</span><span class="token string">"relative"</span>
6522 <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6523 <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">20</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6524 <span class="token function">buildStar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6525 <span class="token function">buildTwinkleStar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6526 <span class="token punctuation">}</span>
6527 <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">100</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6528 <span class="token function">buildMoveStar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6529 <span class="token punctuation">}</span>
6530
6531 <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div>
6532 <p>The MoveStar subclass includes an additional parameter called z that will represent the star's position on the z-axis. A value of 32 is as "far away" as possible and a value of zero is as "close" as possible (basically at the screen). The MoveStar subclass will have to simulate motion along the z-axis by starting the stars quite far away, decrementing their z property with each "step" in the setTimeout loop, and then translating their current posision into an x and y position on the screen. Once the stars reach the screen, we reposition them again far away. Because the stars are being replaced in random positions around the center of the 'div' using the new randomInRange helper function, each star will "move" towards its respective quadrant over time as the decrementing z value exaggerates its respective x and y positions on screen. This is key to the visualization looking realistic. We've also decided to have the stars "grow" larger as they get closer to the screen, which further helps simulate motion.Through the magic of subclassing, the "step" and "setPosition" methods were both overwritten while still referencing the superclass methods.</p>
6533 <h3>The Tie Fighters That Bind</h3>
6534 <p>We've now recreated our 90's screensaver. This alone is a very cool accomplishment. But we're still not yet in game territory yet. Specifically, enemy territory. The next change I'll make is to introduce a new subclass of MoveStar called TieFighter. This should be easy.</p>
6535 <div class="gatsby-highlight" data-language="javascript"><pre class="language-javascript"><code class="language-javascript"><span class="token comment">/**
6536 * TieFighter class
6537 */</span>
6538 <span class="token keyword">var</span> <span class="token function-variable function">TieFighter</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> z<span class="token punctuation">,</span> timeBetweenSteps</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
6539 <span class="token function">MoveStar</span><span class="token punctuation">.</span><span class="token function">apply</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> arguments<span class="token punctuation">)</span><span class="token punctuation">;</span>
6540 <span class="token keyword">this</span><span class="token punctuation">.</span>$node <span class="token operator">=</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'&lt;img src="../images/subclass-wars/tiefighter.png">&lt;/img>'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6541 <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">step</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6542 <span class="token punctuation">}</span><span class="token punctuation">;</span>
6543 <span class="token class-name">TieFighter</span><span class="token punctuation">.</span>prototype <span class="token operator">=</span> Object<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token class-name">MoveStar</span><span class="token punctuation">.</span>prototype<span class="token punctuation">)</span><span class="token punctuation">;</span>
6544 <span class="token class-name">TieFighter</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span>constructor <span class="token operator">=</span> TieFighter<span class="token punctuation">;</span>
6545 <span class="token class-name">TieFighter</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">step</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6546 <span class="token keyword">var</span> size <span class="token operator">=</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span><span class="token number">1</span> <span class="token operator">-</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>z <span class="token operator">/</span> <span class="token number">32</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">100</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
6547 <span class="token keyword">this</span><span class="token punctuation">.</span>$node<span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span><span class="token punctuation">{</span>height<span class="token operator">:</span> size<span class="token punctuation">,</span> width<span class="token operator">:</span> size<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6548 <span class="token class-name">MoveStar</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function">step</span><span class="token punctuation">.</span><span class="token function">call</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
6549 <span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div>
6550 <p>Okay, that worked, sort of. Simply by replacing the type of DOM element with an img tag, we've turned our MoveStars into Tiefighters! But there's clearly some kind of CSS border situation going on that we'll have to investigate. And the TieFighters are not disappearing immediately when they hit the bottom or right side of the div. But they are disappearing correctly when they hit the left or top. Strange. However, if you recall that the origin of an HTML element is the upper left hand corner of its rectangle, then this bug makes more sense. In order to resolve, we would have to overwrite some of MoveStar's calculations around resetting the image location to also account for the size of the img.</p>
6551 <p>And then there's this horrible border thing. The border is definitely the result of setting the CSS properties for the Star and MoveStar classes directly in the JavaScript rather than in a separate CSS class that we can toggle on or off. If we move the styling of the Star and MoveStar (specifically the border-style, border-color, and border-radius) to a separate CSS file, then we wouldn't have these white borders on our TieFighters. For now, let's just pretend these boxes are from the Millenium Falcon's weapons targetting system.</p>
6552 <h3>The Force Awakens</h3>
6553 <p>At this point, we've now demonstrated how to use JavaScript subclassing to create the foundations of a Stars Wars or Star Trek type game. A big Chewbacca-style hug to Tate Thurston who was my co-conspirator on this project.</p>
6554 <p>Rather than continue to walkthrough the code (because this post is long enough already), I'll instead list some considerations, challenges, and steps we faced in the transition from this visualization to our game:</p>
6555 <ul>
6556 <li>Millenium Falcon cockpit</li>
6557 <li>Use GIMP to create transparent png and overlay Han and Chewie cockpit image on top with CSS "z-index" property.</li>
6558 <li>Use animate.css to "shake" the cockpit image after a hit from a TieFighter (when the TieFighter reaches a z-position of zero), and/or flash the screen semi-transparent red with CSS.</li>
6559 </ul>
6560 <h4>Tiefighters</h4>
6561 <ul>
6562 <li>Use CSS to flip the image based on initial x-position to make their flight pattern look more realistic.</li>
6563 <li>Turn the mouse cursor into a crosshair with CSS</li>
6564 <li>Use setInterval to consistently generate new Tiefighters</li>
6565 <li>Set an onClick listener to track succesful "hits", and then turn the Tiefighter img source into an explosion-type gif, and then remove the destroyed TieFighter. (Sidenote - this is more challenging than simply removing the DOM node, since the TieFighter object will continue to exist in memory even though the DOM node was removed. Frustratingly, we kept getting invisible "hits" from already-destroyed TieFighters, and we finally resolved by using a boolean flag to track whether a Tiefighter had been destroyed or not before iterating to the next call to the original Star "step" function).</li>
6566 </ul>
6567 <h4>Sounds</h4>
6568 <ul>
6569 <li>Use one of the many free sound effects websites to create laser, explosion, injury, and other fun videogame sounds, and then trigger them via event listeners</li>
6570 <li>Find some background music and set on autoplay with an HTML audio tag</li>
6571 </ul>
6572 <h4>Hyperspace</h4>
6573 <p>If you've already tried the game demo, you may have noticed that the Millenium Falcon's hyperdrive is not operational. That's an obvious next step for future development!</p></content:encoded></item><item><title><![CDATA[Golden Olden]]></title><link>https://www.charlieharrington.com/terminal-man-golden-olden</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-golden-olden</guid><pubDate>Tue, 04 Aug 2015 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/202166678&amp;color=%2300cc11&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe></content:encoded></item><item><title><![CDATA[NOAH Conference in Berlin]]></title><description><![CDATA[I spoke in Berlin, and took a really bad still image, apparently.]]></description><link>https://www.charlieharrington.com/noah-conference-in-berlin</link><guid isPermaLink="false">https://www.charlieharrington.com/noah-conference-in-berlin</guid><pubDate>Tue, 09 Jun 2015 00:00:00 GMT</pubDate><content:encoded><iframe width="560" height="315" src="https://www.youtube.com/embed/SNRU3EV6NrI?rel=0" frameborder="0" allowfullscreen></iframe>
6574 <p>I spoke in Berlin, and took a really bad still image, apparently.</p></content:encoded></item><item><title><![CDATA[Introducing Knerds]]></title><description><![CDATA[Knerds is a simple and fun iOS game that helps you learn the names of your co-workers through brute force, cuddly mascots, and spaced…]]></description><link>https://www.charlieharrington.com/introducing-knerds</link><guid isPermaLink="false">https://www.charlieharrington.com/introducing-knerds</guid><pubDate>Sat, 02 May 2015 00:00:00 GMT</pubDate><content:encoded><p>Knerds is a simple and fun iOS game that helps you learn the names of your co-workers through brute force, cuddly mascots, and spaced repetition.</p>
6575 <p><span
6576 class="gatsby-resp-image-wrapper"
6577 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
6578 >
6579 <a
6580 class="gatsby-resp-image-link"
6581 href="/static/277ec697d74df18b6632441f90b2299a/29007/banner.png"
6582 style="display: block"
6583 target="_blank"
6584 rel="noopener"
6585 >
6586 <span
6587 class="gatsby-resp-image-background-image"
6588 style="padding-bottom: 56.44171779141104%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACGElEQVQoz41RS2sTURSevavURyaPpkWxPiAoBrJQcONSf4AgthXBjUoWKrgSURTfYC1GKygK7cZkJpNna2rMY2buJJO0M2mZqe200WkCaTI6Tac1IC48SaBdqCB893DOvd93z+F8mJ2kdxG0LcDY/wTJ2FqgIe8QzCRtbZcdYI4Acyxe6KFYM0FbAwxO0AC4tAAvwPaGOEcQ2Sm2J4hwknFP8H0htJPI4O0vsH0hJOqGa5zfH+b2htDhWO7IOL/dnzkYyR5NiHtivGtScCdEZ1w4kZxB9dVTKbEvzLkn8jALBhpBN3xq7dZsaXh+ubTehPIskj6t6ItrGxdz8oxukMu1F/Pl6e9r8HpdUJaMH49lFZpjMMaS0TR+/jrNzI5+qT6RVYjBsva5sRGu6reVlcX15vGEwGiNS4UFVG94Cgvp2mq4XG+NDWJgX5tWoO1DWT3HyRAHkfT2ay0mKyc9V8eo0Jmhl8FkuljVopVv/UiKVLT3aq0lhgPbghl2B9leiu1ulxZ/yvZBPHDlxjYMM5m6LgwOPH9wv39oBKcQ7BL6WdprxzZtsLaTDhxkBo9NOW8+YibjDOJQji9J0uVRX5c/7aDYTbcw+98c7iYz5mjedeepLBZpvpBgWKUoesYIk68l3vL5X2I8mnfefaYJXIrzzmWTmlo5P/IOLPwvsTnCH7rnVdPh3MdX2dfD+SlhwPtmBwHiLdpvh9GRMB9s2dQAAAAASUVORK5CYII='); background-size: cover; display: block;"
6589 ></span>
6590 <img
6591 class="gatsby-resp-image-image"
6592 alt="Banner"
6593 title="Banner"
6594 src="/static/277ec697d74df18b6632441f90b2299a/a6d36/banner.png"
6595 srcset="/static/277ec697d74df18b6632441f90b2299a/222b7/banner.png 163w,
6596 /static/277ec697d74df18b6632441f90b2299a/ff46a/banner.png 325w,
6597 /static/277ec697d74df18b6632441f90b2299a/a6d36/banner.png 650w,
6598 /static/277ec697d74df18b6632441f90b2299a/e548f/banner.png 975w,
6599 /static/277ec697d74df18b6632441f90b2299a/3c492/banner.png 1300w,
6600 /static/277ec697d74df18b6632441f90b2299a/29007/banner.png 1600w"
6601 sizes="(max-width: 650px) 100vw, 650px"
6602 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6603 loading="lazy"
6604 />
6605 </a>
6606 </span></p>
6607 <h3>Diving into Objective-C</h3>
6608 <p>Like many tech companies, Knewton organizes a hack day every few months. Beyond the inevitable pizza gorging, the fun and hopefully useful projects, and the geeky camaraderie, hack day has always been important to me — discovering this 2011 Knewton hack day video more or less kept me alive as a functioning human organism during the darkest days of my pre-Knewton career.</p>
6609 <p>I had just finished the Big Nerd Ranch Objective-C book when our April 2015 hack day rolled around, and I decided to try my hand at crafting a dead simple iPhone app.</p>
6610 <p>My idea: Tinder for work. Well, not exactly.</p>
6611 <p>I wanted to build a flashcard app that helped you learn the names of your co-workers with pictures and some randomized guessing action. Fun, potentially useful (especially for those of us in the London office), and quite possibly something I could pull off in a few days.</p>
6612 <p>Pretty soon, after an hour or so on Thursday night, Knerd by Knewton lived:</p>
6613 <p><span
6614 class="gatsby-resp-image-wrapper"
6615 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 200px; "
6616 >
6617 <a
6618 class="gatsby-resp-image-link"
6619 href="/static/4fedb2f8f5ad7cd73079d370a3c57e0b/772e8/k.png"
6620 style="display: block"
6621 target="_blank"
6622 rel="noopener"
6623 >
6624 <span
6625 class="gatsby-resp-image-background-image"
6626 style="padding-bottom: 170.5521472392638%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAiCAIAAADQyG7qAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFxElEQVRIx5WV6VNTVxjG+Vc67Qxu4IJDBSQJkEC2m3tz7p57k5uE7AsQQiADCkKwoiADbqNsIogKtXVasaCsIiBoEdDgaJlaaKfT1hnLV6fTDz3hsgS7zHTm9+Gc957nLM97znsTlt+svl5e/l+8ev0asra2lvDDyopByAcMTxhM/wYZ16Z4c64aydOiL6JLCSsrqzCkBRRKMLpNYBeC4DQENjR6EsF3fIXxhcXFmJjkBNjBSBbdhLPYGJMVZ40QuJTJ5sJZHo0bAFlYfL4tFkN6moPrnGls7r5x69KVtsutHe3XupvOX4JT6P5DrCNYLaC1OAMR7G5fIOQuCBSWhJ2+Ipc/gNGcjopp4BRw55goXl1dje2N43tvtQx809vT2djV0dR+ue5cQ2VVRbCsyBXyWFxm1iOQPKHhgEqgtBTD6LbEgDFygvDyye03Lwai09ejM32TQz3NjTUcT9KU3sygkSJzhR13U/JSK9JaV+h22zWAXny+KTaYhMWpW2+WBuYneqYHW+/2dRQVuJUqRW5utskATviMx+y4E2SdP54/eP2kLd8MjxYTr6zGUkUwbEtd6eCNpnvXGvuvNnRcaHBbeROjVypkp8IFXZ8FI07CS8pLLbqGsM3A0Ahp2No2bzBZ+nta/AJpY3QunnQb6XwSdTKAR5Q8ps6nEFaTo5Km2/WykFFu5BiEMCyui3+E6RFsrvfv34fLSlIPH5JlpFkxnRuRe9VSu1JizpMcTt63JzExNy2ltcrcf9HjdfBqwIpnhmLeaM3/489ffv913s0jqExSaWbKGU2EVhWh8mpG45ZnVhba68vMZwJ0e43FbuW0OBtvGPfT076170dmBrsrraCj0NQXMHbZiS4HaHPQ/RcbZoZud50NeoissE1nFgwIsSkmDAJKEEvTvYN9V+9/3vLyYWdLkGu1o+d4TY8Law9aV17ND92+evNCxE/IbEAGCICKholuowR7ttJbbCN9Zurn6N2WKnejUdnnAefNmkpa/VVbc++FSHWhLWhQC8oMAge6DbF4PfVERchbBZ+DNvdOZ1skVF6OSY4DaQjJrMbluiy5jQQejnBi0iCrAECPUjvEZLHH2F5Zcbm+7Upzb6EjVKpJPaE/2mjIcauOHkpOPbD3gCxNIqCIoJEplGo9w8c9SYD7LJaqYw0C50IUuuxMpUF6+OsS/SW7Ki05ef+e/SlJB5N2701NSctKl+WpEJjdDTE0TE9SLKDSUjKOHEhVytRHU2W7Pk684kbMioxPPtp1cE/y/l1JybuT9iXu+/TgEQQlsfht6ylWrUYyM7Oys3IRDa5QqGEb3i25NCs9XSKV5kglORJJTmZmdnZWHgLo9ZXXxbTRDGeCDxPajhtMgOUhsHqYHB6ry2d1eT8oafA6fygGrBEwnJ42AJqDj97hK/QXl1idXn9xCNYgjGJjnxgOKneIYYkRC1CshnJmEYwxwmsLZ0Tp7SDswmEi22eGlQUBpNEVqOt6IHK6+0FN50h15/Dp7iHYPXXtfv3NcWdpjQbDYZJ31DBRLHhLmu/MbhHpnau6Ode03m76cuZi/4K34rQG1WPxYgqK1wsiJdjc4ZMirrJaT1nEG464w7XrkVpveR1n86EEDcXbqdpyG1qC4hREB0hAsxRvJFleTzJiEAIzisd85f8hVTCkIwwQLWBYk624rKIgGIYN2BXjGMVB5z90W9wJY7L4gsUi/mDAX1LkDxYVlATESEEoyOfb4WP8m9sko8ZIf0nx4+jY9Iuxmejo0NxE/+yjwW8fDTydgMHJxdG576Zq6mvztACj4w2DeaZYjZ7yh4IzS+OPo+OzS2PDzya+mJq8Ozt578nkTHR86vnYs+XpSMNJJYLDq7JhGPzFwpZSB1QoDqe0eb0iDp/XVeBx+j0Ov2cj4veRvEmlw9UYAZlfWEx49+7d2MOJ4dGxkbHx4ZGxwQfDG9yPYzM4NDIKh4n89vbtX/bUwEpBG6OnAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
6627 ></span>
6628 <img
6629 class="gatsby-resp-image-image"
6630 alt="Knerd by Knewton"
6631 title="Knerd by Knewton"
6632 src="/static/4fedb2f8f5ad7cd73079d370a3c57e0b/772e8/k.png"
6633 srcset="/static/4fedb2f8f5ad7cd73079d370a3c57e0b/222b7/k.png 163w,
6634 /static/4fedb2f8f5ad7cd73079d370a3c57e0b/772e8/k.png 200w"
6635 sizes="(max-width: 200px) 100vw, 200px"
6636 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6637 loading="lazy"
6638 />
6639 </a>
6640 </span></p>
6641 <p>It wasn’t a good app — the picture didn’t change, there were no swipes or gestures, and the “quiz” was pretty lame — but the basic elements were there. I had a foundation. I was able to test my app on my actual phone — awesome. Even if I wasn’t able to proceed much further, I knew that I would be able to submit at least a basic working iOS quiz app as my “hack.”
6642 Back to the drawing board</p>
6643 <p>We use a Trello board to organize potential hacks into four categories: Performance, Product, Business, and Culture. The Trello board is also used to recruit fellow hackers to your pet project. Earlier that week, I dropped a vague card into the Product category called “Knerd by Knewton” with an even more mysterious description. </p>
6644 <p>To my shock Dan McGorry, our lead UX designer replied:</p>
6645 <p><span
6646 class="gatsby-resp-image-wrapper"
6647 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 558px; "
6648 >
6649 <a
6650 class="gatsby-resp-image-link"
6651 href="/static/6edf9d10f5f0b0955e405e2a80b99587/42a8d/trello.png"
6652 style="display: block"
6653 target="_blank"
6654 rel="noopener"
6655 >
6656 <span
6657 class="gatsby-resp-image-background-image"
6658 style="padding-bottom: 58.89570552147239%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAABk0lEQVQoz52TyVLCQBCG8/6v4M2zD2F5ViFAWLIRQtaZ7AQCHPjtHokFFFrqVH3VM5mltz/a7PUNU8uCPh5jOpsjLytUzQZl3Sgu57f0e73lu9p8oENkGTzPg++vEYYR0jSFpG8ZEUW8FkiSlEgu9nJEcQwpM2WLssSm3ULb7DpkUqoHu65T7HY77Pd7xXa7Vbbf6zkcDl/n2PJaPSjygjwkiCmCkGwiJMIoRr1p0dABBc/VukV1mfJNCVTKURDAXnowLRsO2eXKh+Mu4QchXG8Fj8qwWgdfVlCqsighKZBbMvquvT+/UFNsDPURRhMD84WJyXSmLrMDy3HPD/vwyBlf5Ei+Q+NDEaUbU+HZMgGlnFc1iqoh6ivuRXYV4dPjAxa2izFFNzGmGAx1pNQkrmFfpytIIveoCXaoObatZPApGx9CCJxOpz/DQ3W5JdkEwRqGYcA0TRyPR/x3tCQxjXNPSKwxS4YsCzQvCggSbN006hB7/g0lp5zSRdZfeNYhN2RNfwvLJ04lFbuE+KERPeLclA+ukYnOhcSUdgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
6659 ></span>
6660 <img
6661 class="gatsby-resp-image-image"
6662 alt="Trello"
6663 title="Trello"
6664 src="/static/6edf9d10f5f0b0955e405e2a80b99587/42a8d/trello.png"
6665 srcset="/static/6edf9d10f5f0b0955e405e2a80b99587/222b7/trello.png 163w,
6666 /static/6edf9d10f5f0b0955e405e2a80b99587/ff46a/trello.png 325w,
6667 /static/6edf9d10f5f0b0955e405e2a80b99587/42a8d/trello.png 558w"
6668 sizes="(max-width: 558px) 100vw, 558px"
6669 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6670 loading="lazy"
6671 />
6672 </a>
6673 </span></p>
6674 <p>And that’s when things got real.</p>
6675 <h3>UX</h3>
6676 <p>Dan and I chatted throughout Friday on Slack (him in New York, me in London) and we debated several challenges with the concept:</p>
6677 <ul>
6678 <li>What does a left swipe mean? A right swipe?</li>
6679 <li>Should the quizzing occur when the picture is still on the screen (and thereby losing the Tinder flicking concept, but reinforcing the memorization experience)?</li>
6680 <li>How should we handle incorrect answers?</li>
6681 </ul>
6682 <p>Designing solid UX is more challenging than I thought. My initial concept for a Tinder-like flow was much more complicated than I had initially anticipated. Dan put together an early set of wireframes in blazing speed, and we continued to discuss how to improve the experience as he iterated on the wires. </p>
6683 <p>Here’s a look at one of the early sets:</p>
6684 <p><span
6685 class="gatsby-resp-image-wrapper"
6686 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
6687 >
6688 <a
6689 class="gatsby-resp-image-link"
6690 href="/static/0204d5d0f0fc454f84197d43baacba50/fcbaf/wires1.png"
6691 style="display: block"
6692 target="_blank"
6693 rel="noopener"
6694 >
6695 <span
6696 class="gatsby-resp-image-background-image"
6697 style="padding-bottom: 74.23312883435584%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAADSUlEQVQ4y2WUy28bVRTG/cew64YFK1iDEN0gsWLJAomwCippFwhBBZGVCpJIRVRKK1FaKlIXOw/HolEjEpuWpHmZxvGj8dgJtR3s+O14ZmyPPT/OvTEIyB0d3Tn33vPdb75zzngcx6HX6zEYDLAsi0AgwNTUFF6vl2g0yvLyMpOTk4yPj7O1tcXKyoreV34kHOZ2YIEPPvuC9658wsO1CB7+NRRwPp8nkUgQj8ep1WoUi0Xtx2Ix7av9dDpNvlDAbDV5dzHCG3eXeOWmn4nf9vCojfWNDRLJpGbZarUol8vU63V9gWma2q8KmPqaSrVKu93+h8THT2I05eyjTI6vfs/gaTWbVAo5ahLU7/dpNBqalQLpdDqcnp5SPilpU36tWqEhAAPXRQIYWd3lh70Drj55xtfRAzxNu8OikSNbbyEUNQvbtjU7RwIGfUe0sHHF1IX9jinnHNwhw3d+fsrLDyJcmF0VwDQeq+ewXqxRsjq4Ety2TCzbErN1khR4W2Zz+K7W2yKDOud0bD4K7/LWfJg35yN8FzPwDORWPdyBsBnQa1n0Ol0GVhenKyxl7spXuPL0hH3fFv/UEtZyVvY7DROz0sJpdehKnM6y1mOY5Z3NLUKhEHP+AEdHR+xLdkNLS/j9fgzDICHZDwWD+O7fJ74fJxHb52EwRMD3gJQk1uMKmDsEVKJPT08zNjbGj7Oz5HI5bt66xejoKCMfjvDLyhrX/Je4+OkFXr/yEt8sfE4yfsBCcJHA3JxUSuKM4d+ASnSfz8fMzAwnpZJeCy4sMHPjW2170T3u7nqJ5Z7y2Fji3s41VHZq9aquBlV25wBVN6yurZHNHopGXVbXN/hp+ZG2RMrg9vqXxDI7hPdD3NmYwLFdCsd5XWoqiecAj48LvDjMUD35U8Tt499+xvXH20z/uknUyHMjMsbl+be5FLjI9xteHddo1jVDVXL/AVQLaSNN6nlKClw6xemRVX58H+N5kmK+xPXwZd6/95rYq9xZnzjTvmvr2HOArmiQMw7JJtNUjkuYbZPCizwH8ZQAZyhXKhwVUmzHI+wdbvJHyaBdP6VULOkOU2179nNQmR7O9MS6A7m2f+b/fzSkc8o9sIblK7XLsFKU/QWb5S63QFZP+QAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
6698 ></span>
6699 <img
6700 class="gatsby-resp-image-image"
6701 alt="Wireframes"
6702 title="Wireframes"
6703 src="/static/0204d5d0f0fc454f84197d43baacba50/a6d36/wires1.png"
6704 srcset="/static/0204d5d0f0fc454f84197d43baacba50/222b7/wires1.png 163w,
6705 /static/0204d5d0f0fc454f84197d43baacba50/ff46a/wires1.png 325w,
6706 /static/0204d5d0f0fc454f84197d43baacba50/a6d36/wires1.png 650w,
6707 /static/0204d5d0f0fc454f84197d43baacba50/fcbaf/wires1.png 895w"
6708 sizes="(max-width: 650px) 100vw, 650px"
6709 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6710 loading="lazy"
6711 />
6712 </a>
6713 </span></p>
6714 <p>That Friday was not exactly a day off from work for me, and I told Dan as much — that we should continue to develop the wires and concept up to the end of the day, and that I would devote my weekend to implementing our app, but with no guarantee of my success — just the old hack day try.</p>
6715 <h3>Enter the knerds</h3>
6716 <p>Dan and I had never worked together on anything before, but we were really syncing up well on Friday. I don’t want to say that our collaboration was effortless, because we both put in quite a bit of work, but it was easy. And fun. That’s one of the real beauties of hack day, discovering similar interests and collaborating with folks outside of your day-to-day job.</p>
6717 <p>Importantly, Dan and I agreed that the app was lacking something critical — a cuddly mascot. He showed me a Pinterest board he’d been collecting with mascot ideas, and I also mentioned my love for those armless french-fry guys in the McDonald’s world. </p>
6718 <p>Pretty soon, Dan came back with the knerds:</p>
6719 <p><span
6720 class="gatsby-resp-image-wrapper"
6721 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 563px; "
6722 >
6723 <a
6724 class="gatsby-resp-image-link"
6725 href="/static/2caa3c1f9fa01ac16e1bb2d64a1f550f/7cb89/knerds-group.png"
6726 style="display: block"
6727 target="_blank"
6728 rel="noopener"
6729 >
6730 <span
6731 class="gatsby-resp-image-background-image"
6732 style="padding-bottom: 53.37423312883436%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAADgElEQVQozx3SfVDTBRjA8WeOyru6yzrN7rRkE7nF3BjBgP22EjD0fMuiF2JFCNLNoxzKNUHcjg6lnK8TRFFeZtsPAl/Gapf8YAwGJrZ4G1gSbXGlE27zJgz4/Qa706fFH98/n+dz99wDiADojwDf6Cagb8eztDYZW9WXAl/3pear7qSSpc7NmrLx9DT1H+/AkbubWT9vFYFdKoAOqZA1IBOwftqRBpvON8PG79uXAtSvADSsAhQB0JgC+04lPrPbIIWchuQzeQYC95JSzCMljXlGCey/KGEPEnEsMyFaNifjQb9MANRWGQv6/MC/Qi0FqHsZsPZVFm4BmHmasjIRt0ScqI6DXH3y6YxzQnxfJ8DPG5KN7zYnQ6VaGGFNksCPhAj8sjfWjkr5IncCN7wEgW8eAH5TN0DX62LoIqQwZ4+vZBoF3nkN5zbGwEo5+VaF1lKIZ6nDmKsnjBXHCAhfB27u3PVKZscUWy5JUlxIJWLe05wAoaFDLTR2pggMVgCPaBUEstYAU8Ydmyrk4FQRB1G55vKHBml5sTkDD5s/wmyjpBFh3XMjb3Isf4kiPddjoz05EslFxSefQVLNDS6v1oK8OouVW3UVltR5bQwwqsgRnyoKvSU8xAPrSLmeOLeHTMS9zWL8wCQtvR+74cKEfAf+qfgU3fmZ2P92gic8y44mbfWy6iYk6lox2mjbDXS5eBn91YtAH4rsWVBvxGDJBgx8sbw+7LCVFNF8yJ5m/x8dF0fdmiwvwTHT1cWH9dXokgrmc8tOKXlkJyaRVhSHi7lCuYC+VswOVu6CYMn640EtH5kzCfi47SyNiF16p/qeqjOt13lUA+NRL6SPxb2G4yJO6F48F3+PXasDuXkFV9/28T7nP85sh4tcf9myHeboELQqIsB96ybHbd3pcPXucTAhLB1xOqmi4v3ug8UFvqOnzxfg3+bMhePb7kwXbe+lixKphZ4aaxhVzE5OpH7bPzr83a/DJ7NtQwDT09Nmmgku/mZvXzTVnsTrl7TYUnUsp3XQ/bznvsflnfKiz/8YJ0YcSNWUPelq0gU76ioWh6gWfIrYTZpMLVnKgz9kKQ/U5mu+iYaZmRl5IBDQ+R/5DI+83kveyckjD/+diA3rL9H0fNXs3KyLYZjQgweeJwOOQRzqHw790tN3t73NVkC1dYdfECH9y0JYnZEFuvqGZ/8DBcfRMEwTrAcAAAAASUVORK5CYII='); background-size: cover; display: block;"
6733 ></span>
6734 <img
6735 class="gatsby-resp-image-image"
6736 alt="Knerds"
6737 title="Knerds"
6738 src="/static/2caa3c1f9fa01ac16e1bb2d64a1f550f/7cb89/knerds-group.png"
6739 srcset="/static/2caa3c1f9fa01ac16e1bb2d64a1f550f/222b7/knerds-group.png 163w,
6740 /static/2caa3c1f9fa01ac16e1bb2d64a1f550f/ff46a/knerds-group.png 325w,
6741 /static/2caa3c1f9fa01ac16e1bb2d64a1f550f/7cb89/knerds-group.png 563w"
6742 sizes="(max-width: 563px) 100vw, 563px"
6743 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6744 loading="lazy"
6745 />
6746 </a>
6747 </span></p>
6748 <p>We chatted through some minor tweaks, like the placement of bows, the eye colors, and the introduction of a fourth triangle-y knerd, but these little geometric critters were pretty much perfect from the start. And my love for the knerds began. </p>
6749 <p>By the end of Friday, our wires looked like a real app:</p>
6750 <p><span
6751 class="gatsby-resp-image-wrapper"
6752 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
6753 >
6754 <a
6755 class="gatsby-resp-image-link"
6756 href="/static/f93eb333b5a97bd41214561718d3e36f/c6671/wires2.png"
6757 style="display: block"
6758 target="_blank"
6759 rel="noopener"
6760 >
6761 <span
6762 class="gatsby-resp-image-background-image"
6763 style="padding-bottom: 25.153374233128833%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAABfklEQVQY0z2QSUsbAQBG81MEL3oQvKa4FwrFg0cPYk6eirghlZYqLqAnDz2ECE11XIhbI2prYhw1ioyJSyVuNSrUwojJMBlnkjASncTXgOC7fO/0HZ4tm81hPWWxLIv9/T3EgJ/fRxH2wiE2xDWk3TCCMIbb7cbn8+X3G8LYOMFdkQX/OF6/h4eMiWxcYmUtbElD4+zPEeZDhp3tTVxf2gkdHLOxssjoYDeLvwK8raqg/I2dvv4BqsvsvKuqYSbgQRj+jNM5gJJSOb88RtdUbJn7v5xJc6hJk7aWVioKCpmcmqKp0cH7klJGBYGPnZ20NTfjdLlocDhobemg92sPlcVFNNbXoqXjmCmT03j+UNd11LiCbujIskwkckJC07i5+Uc0esXFRRRJkvIJwswt/eTT9wmGJpYZWe/jg9dOl68O4zqAdScTM1LYFEVBvr0lkUiQy+V44fnVY7E7xDWRra0gYr6pZ9rD/OwPDq6DhFQvh+oKmcc099urPKeT/Aeaxjy3miuyWAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
6764 ></span>
6765 <img
6766 class="gatsby-resp-image-image"
6767 alt="Wireframes"
6768 title="Wireframes"
6769 src="/static/f93eb333b5a97bd41214561718d3e36f/a6d36/wires2.png"
6770 srcset="/static/f93eb333b5a97bd41214561718d3e36f/222b7/wires2.png 163w,
6771 /static/f93eb333b5a97bd41214561718d3e36f/ff46a/wires2.png 325w,
6772 /static/f93eb333b5a97bd41214561718d3e36f/a6d36/wires2.png 650w,
6773 /static/f93eb333b5a97bd41214561718d3e36f/e548f/wires2.png 975w,
6774 /static/f93eb333b5a97bd41214561718d3e36f/c6671/wires2.png 1129w"
6775 sizes="(max-width: 650px) 100vw, 650px"
6776 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6777 loading="lazy"
6778 />
6779 </a>
6780 </span></p>
6781 <p>Now it was time for me to code up or shut up.</p>
6782 <h3>Weekend of code</h3>
6783 <p>I spent the next 48 hours doing nothing but coding, reading, power-napping, and drinking coffee, with a few sanity breaks for running and grabbing pizza — and it was amazing. I made continual progress throughout the weekend, which was both exhilarating and nerve-wracking because I needed to get it all working by the Monday deadline.</p>
6784 <p>Some challenges encountered along the way:</p>
6785 <p><strong>Moving between view controllers</strong>: The standard UITabBarController or the UINavigationController flows did not fit into our card-based app design, so I spent time exploring different flows for our game. Eventually, I used modal view controllers to toggle between the three screens (Start, Game, and Finish), with a UIAlertController for the quiz questions. Here’s how I present the Game Screen when a user clicks the “Let’s Go” button:</p>
6786 <div class="gatsby-highlight" data-language="objective-c"><pre class="language-objective-c"><code class="language-objective-c">- (IBAction)playGame:(id)sender {
6787 KDGameViewController *gvc = [[KDGameViewController alloc] init];
6788 [self presentViewController:gvc animated:YES completion:nil];
6789 }</code></pre></div>
6790 <p>Once you’re in the KDGameViewController, the “finish/victory” screen is shown in a similar fashion. Then, when the user taps “Play Again”, the “finish” screen is dismissed, and the user returns to the Game screen (where everything is reset).</p>
6791 <div class="gatsby-highlight" data-language="obj-c"><pre class="language-obj-c"><code class="language-obj-c">- (IBAction)playAgain:(id)sender {
6792 [self dismissViewControllerAnimated:YES completion:nil];
6793 }</code></pre></div>
6794 <p><strong>Resetting the game</strong>: After the Finish screen, I wanted to draw the users back into the app to try the game again (hello, viral hook!), but the analytics counters were not properly resetting (my basic game analytics / metrics included number of hints, wrong choices, cards remaining, etc). I resolved this by utilizing the viewWillAppear() lifecycle method to reset all my counters.
6795 Randomizing the answer choices: This was a fun challenge — displaying randomized answer choices in the “Alert” pop-up. Here’s my naive but workable solution:</p>
6796 <div class="gatsby-highlight" data-language="objective-c"><pre class="language-objective-c"><code class="language-objective-c">// Select the &quot;correct&quot; and &quot;distractor&quot; choices
6797 NSMutableArray *names = [[NSMutableArray alloc] init];
6798 // name1 points to the &quot;correct&quot; name
6799 [names addObject:name1];
6800 // name2, name3, and name4 point to the distractor names
6801 [names addObject:name2];
6802 [names addObject:name3];
6803 [names addObject:name4];
6804 // Randomly pick one of the &quot;names&quot; in names,
6805 // then create a new NSString to hold that name,
6806 // and finally remove it from the names array
6807 int random1 = arc4random() % [names count];
6808 NSString *nameTitle1 = names[random1];
6809 [names removeObjectAtIndex:random1];
6810 int random2 = arc4random() % [names count];
6811 NSString *nameTitle2 = names[random2];
6812 [names removeObjectAtIndex:random2];
6813 int random3 = arc4random() % [names count];
6814 NSString *nameTitle3 = names[random3];
6815 [names removeObjectAtIndex:random3];
6816 int random4 = arc4random() % [names count];
6817 NSString *nameTitle4 = names[random4];
6818 [names removeObjectAtIndex:random4];</code></pre></div>
6819 <p>At this point, I’ve got 4 NSString pointers called nameTitle1, nameTitle2, etc. that will randomly hold the “correct” answer choice every time — sometimes the correct choice will be nameTitle2, other times it will be nameTitle4, etc. All I then have to do is create UIAlertActions with titles that reference nameTitle1, nameTitle2, etc.</p>
6820 <p><strong>Feature creep</strong>: I kept coming up with ideas for fun new features and mechanics before I even had the base functionality working (e.g. adding score “analytics” to the finish screen). This is a real problem. At the same time, it’s great to feel that continuous inspiration, and I would never want to entirely constrain that creativity.</p>
6821 <p>By 1:45 AM on Monday morning, Knerds was a working iOS game! Here’s a screencast that I recorded to submit the hack, just ahead of the Monday morning deadline (note that I hadn’t yet fixed the “repeated name” bug for the distractor answers, which I resolved later that morning, and also note that I say the word “sweet” a lot in this video):</p>
6822 <iframe src="https://player.vimeo.com/video/125413885" width="640" height="1183" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
6823 <p>I shouldn’t have recorded this at 1:42 AM on Sunday.</p>
6824 <h3>What’s next for Knerds</h3>
6825 <p><strong>TestFlight</strong>: After some clunking around with iTunesConnect, I’ve now got a dozen or so actual knerds testing out the app via TestFlight. The swiping UX needs to be improved. It may just make more sense to go with a “double-tap to guess” concept. Also, I need to fix the positioning of the views for different phone sizes. I had quickly used the “Reset to Suggested Constraints” option in Interface Builder for each view object ahead of releasing on TestFlight, but I’ve heard back and it didn’t work out as well as I had hoped.</p>
6826 <p><strong>Release as an internal company app</strong>: This requires an enterprise account, and a Dun &#x26; Bradstreet number. My hope is that we’ll be able to release Knerds for all current and future Knewton employees as a helpful HR tool.</p>
6827 <p><strong>Automatic content refresh</strong>: I scraped the pictures, names, and titles from our company page on Employee-List. It doesn’t look like they have an API, so I’m exploring some options for automatic content updates as more folks join Knewton.</p>
6828 <p><strong>Game improvements</strong>: One obvious improvement could be better distractors — filtering by team or location.</p>
6829 <p>I had a great time building this app with Dan, and I can’t wait to continue to develop Knerds!</p>
6830 <h3>One more thing</h3>
6831 <p>I flew to NYC later that week, and I couldn’t stop thinking about the knerds, and I decided to come up with a backstory for them. I quickly sketched up some storyboards on some scraps of paper during my flight, and emailed them to Dan to see what he could put together.</p>
6832 <p>Here it is — the backstory of the knerds:</p>
6833 <iframe src="//www.slideshare.net/slideshow/embed_code/key/lBIMolu34oh74u" width="768" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
6834 <p>But Dan and I kept going. We named them all. And then I couldn’t stop myself — the knerds needed personalities:</p>
6835 <h4>Olive</h4>
6836 <p><span
6837 class="gatsby-resp-image-wrapper"
6838 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 204px; "
6839 >
6840 <a
6841 class="gatsby-resp-image-link"
6842 href="/static/db4c390ca72be4e62a92aa1bda53b54d/779ef/orange.png"
6843 style="display: block"
6844 target="_blank"
6845 rel="noopener"
6846 >
6847 <span
6848 class="gatsby-resp-image-background-image"
6849 style="padding-bottom: 194.47852760736194%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAnCAYAAAAPZ2gOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGyklEQVRIx32We2wURRzHp62g/qMmKkJb6d0VS5WHpa1QbSupSnxA0EiUUo1GDdpSwB6F61GMRl5R8YF6LQYhJoghJGq0idGgJggaoKgQpC3hWYXW2mtt7+jt9nb39uf3Nzt7PYp6yTfz2JnPfH8zv509YXYUphvtRYLoBvH7/gpW+tm996ZFj5aMNdFvdhRVWu2FD8UvFAt92+Qx3cuzM84vzUr7Y2mWoNaHxO+1WaLPf7NI/qyOIsFA7djMdCFIQtv2PCAiR0oEgLMBI0Cb6evpIlKVJbqWZYv2xePFn8uz0zuXZKadrckUfwCKRZLAmUZb8VXx48WCOqcycP25fffs/vvwXbVWW+Hf5okiMn8u6I6u8nzY75/4xoVl2U90LB6fyYCTL0wQ55ZkZnQ4CzhQs73wCJz02idmbA0fKtve+UMFde6toO6Ds8k6XUzWySLLPF5I+sZcGlrhIYAp7J84AFcfnK6eMAEScJnhyxASysDNAFKio5Cix0ro3IH7zLOH5pgX9pRb8S+mJMyDBWSdKU4M77jVjPlzDC3otfQGL0VW5hDc9p2ryZx7SkH3VV0vQ55rthXCTVHc2H+72bdtBvXsnkmR9ZNtrS7Hjq32kv7mJFt/+xY7BnexBq8dC3gSgBoX0QaUEPaCM4BiTzME9ucGOOhlJ9orvoRWN9HW63NIWwlY0EuYTLF6R1qDbNuaAyVAzSicIvw4TnsKwELooTxhfD/9O21DLsX8HktCGhxpDQ7EFUMugwa9BvaUXX579JlxQuCBB6EMcjjuIBc2FPBKxQL/2rZd8BC2ACdMCLmCgXXKgakGyMk8yQh6yAx6LmvHRkE59J4Xb2aXzQIdu1KB7uBhQM4s99HxJbkSyO2TS33UUZsr6+44BbT6V8iwWwH07tfkal7LCdlLcbjo9vto0yOT6dV5+dQOSFedjzbOz6cN0AmA2enQCNAexEHiYHQO+ScV5iXAnhVeeu/RyRJyapmPevxeegsL8CLs3BgB8mkTgDaAxMDP3ZBT94+hXXB5FpN1Dhnt83DZ+aJP1lNCZmBiAA5xKF0M3KJSwUDotnuiLtRImZzalotzRjhAdw9/YeDLmrOSGWsYORQXOpImKslT66pELlp9Ti7u5VNerEK23DyU7aAvBeJICyL5Azl4a7JSn8m0CdfJtGlhh3PVg4Sbh7Ltv4liK7MvfVPqbiStMY/iO2sV3HHJwL+cPNzJwBlqgnqd8B433kLDzY+Rtu4Ox5Fyp781h+Itr5L+7jy4zMQcn+vQUIndJLBCFkDDKVC52fr7D1N8dz3FPw06+my144wXgXsFS4aMu5BPeaPA5Ouw0efdsP89ZN9IH+9f0Jd6KGzC7F4mgQF2OAYdv7gHk3yfRx3KSJ8v9dZxgdYFB/g87yFDv0lJbnv0dTW6PqqPx8vbBm/KQk4bBu5QA8zRk/5PLjCmri9ctPdjD73sclMK0L5sovtW8GRH7qdAZgY+BTZgBGgJ3zbssE5NNDXOR4QwajK3nds8mOzj/eaXwcKXUF4M2Md8uYfQQm3EhSzxTSGdVZ+T0Pg2h3T/xISOdxayk2Mh/q7gD4CN1MlygeXK4TAGhuGiK7I2LzG4Id8eeOM2iq7Na4uuy2vtC02n8JbbE+HtMyi6Pm+TviLnaYythNMH4XIWQr/CBV6J0CfFXvJl6/NuvOZiS8HU6M+zopFfS+zIkTsp0nbX8oEz5QsGj5fSQFupwWW/OSfn4rYpQn8uS+CbIvCdFgDyR8qj5BXG4+PEwK4C8Vf77Ozew2XR3tYyu/dQGYUPlQbCB0qf6j1YRpCJfxjU9+OdBd1DD4rI1qljhlZ50nF9sYRMGy0ggWkXP5mWEem6W8CdB3+WIhAclhBUHz1SUqXqpiqn8h8qKF2M/jWtqRGhxmoRbi1L6ztcKnoOlHvDraVRyIYIfaugJ7kOGVz2HCyf3o+xqKfzfFYSppTW0rRoLBH+1PXcNj7228yBoWOzSKkeqlJ1k0s6P20S0Tjx1QcLx4bWVKcloeysqbFGdrzbsERsW7tY7Hjt2Xu/aKqili2LTIhLP7RI1eNfNlfRx68/s/Cj9c+JzQ21IqQMASwduvRrQ4019U1rqjeh7N4cqCXIUKX/nUBtZWofxgxi7GaUqwEcz1Aojd05WlOzBwN4IHHZ/FJ1ArIgrvuhSlU3ITt1LOYeRaRXc7SAVXPY+eqBoZSAuG3iOU/yo17JfSHuc57ZeMZjh2W7sabC2UMn3OsB7Q/JyUmYA5TlCDDZJ93xWMxprMbCNblwLPfQPfb52NQhd/UQO/hvoK3kRNVY/WyTs4fp/wBMhQDTMEHZ6QAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
6850 ></span>
6851 <img
6852 class="gatsby-resp-image-image"
6853 alt="Olive"
6854 title="Olive"
6855 src="/static/db4c390ca72be4e62a92aa1bda53b54d/779ef/orange.png"
6856 srcset="/static/db4c390ca72be4e62a92aa1bda53b54d/222b7/orange.png 163w,
6857 /static/db4c390ca72be4e62a92aa1bda53b54d/779ef/orange.png 204w"
6858 sizes="(max-width: 204px) 100vw, 204px"
6859 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6860 loading="lazy"
6861 />
6862 </a>
6863 </span></p>
6864 <p>Olive is the young Captain of the knerds. This mission was her first ever. Olive is brave and bold, and loves to explore, but she’s still young and inexperienced. She’s determined to make the most of their mission!</p>
6865 <h4>Mr. Figg</h4>
6866 <p><span
6867 class="gatsby-resp-image-wrapper"
6868 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 183px; "
6869 >
6870 <a
6871 class="gatsby-resp-image-link"
6872 href="/static/ead2b49e58be920cb5122cdaf1a7647c/e6f05/green.png"
6873 style="display: block"
6874 target="_blank"
6875 rel="noopener"
6876 >
6877 <span
6878 class="gatsby-resp-image-background-image"
6879 style="padding-bottom: 266.25766871165644%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA1CAYAAABBecueAAAACXBIWXMAAAsTAAALEwEAmpwYAAAG0klEQVRYw+1WWVAUVxRtGfXbSlWq4l8sozHummEZGNmmZ3pQY6pccMFhc2EUV4jAqKAoAUVFowaRfdSI+4qoqGgBiooLUYkmajSRqBjXMoqyzM15r3tgMAikKlX5carOnNv33Xvufa/7dT8h6YFxR9JDowUwJz40xoFHAUNh68AuGP8U6Ap8hOtO8AtJDpCvJfn6gVEQEu9L+4EVwBJgV+IDKQFIBDYCmcASYAGwDklRYDMSA2BPgZgWtjrxodQb3BO+zkLyU7/tK577LQK+Wf7EL3v5Y2PUsmojE1iNAmuBuG/vS7Fgq1I4USm6F1gKJANJwB4I9hJmH/esnHvK6+C8Mh/rwmu6g7HXxVVL7hoSlj0yrk5+4rdqxTO/6JUv/CJRMBWIQwMWFI1JqjZugkAMhBYps9sH9BYCs9woMFtGUI4bhWzSvAndonkyeZv7o6m7PG5P26+9OKNgyLHIEu/ieWd98iyXfdPjUDShSsqD4HyIL0x+5rcAhbdhhl8IwbmaBgfYmCgHK5L1DuBjMcFWXvTVpK3u96fu9LgxbZ/2EmZ6Leqsz+cCD5CFbHZbQUMLaFbQDl4s040mbnTtyQSpDdiL0TsF7UXrFbsWnbdLsD0FGdcB/40g46CcD4LKwlLjY+GANvzKo9RCh3ynWDVstzTBqrHvoGYItjY20XqHEza4kP93avJfp+Y8PtWZ+8etdyb/tWoZ8AdsdGm9Q+actMWddFF9qO+YbjQwoDv1Gd2NPMJ78W5cJvegvv6KH+PGuP4UivhWBVmA3tKPBps+I9cpPcl5Ug/SRffl0/aa2xuiPbl/kKk7DY0fQKGb2xBkbGJ7Ml3enwiikFx37mfMrpnfPt7mlLlgjjOgponZajJlO9PELGbbWfax8cCcNtYwJNeDxqb3p+3l66mwcjuduL6b9lVkUcnNfNp7OYNO/byPCq5uoUNXN1PJL/mUXhxP4zIGsM5bvsuhVi2NTOtFV6rK6PFfD+nF6yd0+89Kqq1/Szerr9Crty/p/vO79MezO9xX+NMOGp3Wm+W1LMjWaELmYEo5FkEbixdTRskSWlcUQ9mnk2htUTRlliZQ6qlYYCH3JRSEUUDWYOS+p8MQqwf5p/ej/RXZVHqrgMp+LaSjldvo0u/FdORaHpXfLeLTPgkwX+6Z5XyJkPf+Dtma/HBuNV+nI9e20q6LaXTixm7aeSGVT5EVYzhxYw9tQLetrqH9Lo/PHEhjM/rz6ixhLLoelzGw8ZqBzYQtT/v2MjrlwBKEWN353Zd9Hk1jsIP5c+nW+uvL8S0iP9iOb5p/vrraFGwMxJcsbI8HtpaGf83Y1mP72S7CdpPj66tNQSYSc8mHYq/7Ej74FLChabuF4tUVnq/lr7B/1eH8H30o+ZmBIk/70FCLKw2PdaUZ+UNo6V0dLbqla/+U7S/T+DsiJVbrKbzAk/yiZcEFV3W0/KmBdx8knyLaIYhAHDEoosSLcLbhBSZ8D6S60eyjQyjpgd4Wdd6bTBmNJ4165YP/BughtHDX7Atvw5rZ5F2EBMCEdQw/oLXNODyErXND81wgV9NL4A9mrlvjsQLXddxuuqu2xsNTtpvNlOHKiynFX4PvgM8BmyD4sf301fxLJh+AGsD2M00V3ub3wnZpafp+z7pZh70p/KBn/KgVX34yeat7FzTEdNCcRuBTDpLPJY+BCojkhe3UVsw85EVzCr3rI0/6MvaKPi2Gx5SJBNQwnn9eP2b2UW8hn0I6BOdoOiDXiYkywRHBuW79wF1mFnh1mlXgJSA4kSefEd9GnxHJclY/CIJhUaU6Amo4l+iCLOf0QsQJn05yd3KX/C8YF8yx+KrRaX65XkDwGiW5VmFnwMxsCNcobAIEoKPg+IOgCi074SZ0iCjyVbEgJKSAuSBjQM0EFbtG4ZYF7T9lUKVwipL0QfD/FIwqYXdXVAGMUwDcZbFWYQiKZsWu4VwimpTYjkZJai7GHNM3iYLlgs4ptlInRJfhsSnDs1aGx0ZmNWBW7BrGMWU604IKnWAp16mMBoPA0Cgm4aKzMEwIWanvNDVNL0QeE9dEHhcJeKuwM2BW7NeMI46KwdOsojB5nb4zE2MavFP2J8OgMoiSYPCVug/72lA6fJSBho801AM0fLTBGWzm9khDLRsb+pUhX/SUuiKe5aveFVRBEFUkF3ChpJeqIF4viVIDQLDVYDOzgXo+ppfuIfYAcvo2aciCKqVDLXAcAVVgUtCgsBowK3adfRyxv4EPIn+QUe5QJShGoCRJSJZeonXGSJBsDrYacWbFruNjsl0PvMLYG8SOkJQO5yiBjmBirQmSgyg6RccMkhTyNw1MVvcLqFDtAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
6880 ></span>
6881 <img
6882 class="gatsby-resp-image-image"
6883 alt="Mr Figg"
6884 title="Mr Figg"
6885 src="/static/ead2b49e58be920cb5122cdaf1a7647c/e6f05/green.png"
6886 srcset="/static/ead2b49e58be920cb5122cdaf1a7647c/222b7/green.png 163w,
6887 /static/ead2b49e58be920cb5122cdaf1a7647c/e6f05/green.png 183w"
6888 sizes="(max-width: 183px) 100vw, 183px"
6889 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6890 loading="lazy"
6891 />
6892 </a>
6893 </span></p>
6894 <p>Mr. Figg is Head of Security. He’s responsible for protecting the Knerds from trouble, but somehow Isaak always seems to find a way to make it anyway. Mr. Figg has a tough exterior, but also a heart of gold.</p>
6895 <h4>K.A.M.</h4>
6896 <p><span
6897 class="gatsby-resp-image-wrapper"
6898 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 286px; "
6899 >
6900 <a
6901 class="gatsby-resp-image-link"
6902 href="/static/a193634d682ab8bccc256ac4db3f4075/357e3/red.png"
6903 style="display: block"
6904 target="_blank"
6905 rel="noopener"
6906 >
6907 <span
6908 class="gatsby-resp-image-background-image"
6909 style="padding-bottom: 147.8527607361963%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGOElEQVRIx51WaUxUVxS+zkD90R/9Z2MiMsCMyAyryszbBiugUosCg0g11GiNW9VqRaSoNdbW1qjQikqqSRvb1JhGjWnSJlrjguBaN0RlFlxocV+KwMwgM/NOv/vmYerPepMv57zzzv3uOeeee99j7DXHVmkUc8u2QTdkG2uVbRboT7yK9dfXIisWBDZLdLCHSoqxSxnJOpWUaXcUK3lkm/q/yUpEUYfAFor2mAWinc0X7eN3S5nP7ikpM15xPitlsiZxlIbTUhZrFrM0ye2nIE/h+RdxNJsKMhAaSyGhDykSxC5FkNfUoQzaOK07n9YJMNkIGPbbHewMns+BkMtjIPsT7zaJ2TFlIHOJQmyxIF4COc0V7cOYPZ+xa3KqFtFxzTnDQOPe1iby5z0OhaHob1yV0968IqXFnIDtIogbsfA4QUQtxX0AAT8CPGqDRhjOiePSeB6R0Ng4TpaHReqBc8Bd4FGzOKoDUR8DvghI6clIs5ZHpiO/JFoGA8PK2PY0w3UQI7UxF6SMxktSOl2W0+kKcBk6bISUCcR0FkDKofcQGWpIIL6wXrQb52LXeW15LxkAhi2f2YZthySfYo0A/UBY1yPwiSD1MDao/yvRzqPq56QzRWHdIpAtEx2x+1ESTsThQlOSjn6PTqxLTYdd9em9dl1KVw+KoyOrQfw7SuKTMpM9KBe6wsDJhsL5qUfhBNYQl17FpnqVVEDTgVQNHk1Gba0oB9IPNaMUqGvjUXEMY/kRxvBykzdK1q85O1NVj5AMjKA2u4XcDgtFdTP0EZrukVJUr9OmnkdtUdfQKU4qZhXx1mMexdoKMr5qGFJ12y1qe4FA7YVO+rs0jzpKcqEr1Fk2nm4XjaX2yU7yjk0nj8OitiFikITQATzKvZCIULZ2D0Tmzk5SHzfUUiQYJAoG6GbLFbrf7iMV+o1zZ+n5vbtE/f3Ud9NLt8oLyAvSC3JWuClKeBkbFsui9bJpafjyRquhJ4+JDxWYPaWINq9dS909PTQhI4N+O3CABsbjXVvJnRGntjgzIzqhD631Fif0v4zQblaf7d0dnaFG6GJzE/muXSM1HKamw4foUWen9ir09AndmT2VvMjompI+EOHVM1LmYBBa3XoNIzxKjjsVU6jjwzJ6+FEF3Z8/nTpmuejx4pnUObecOuZMo5uoKa+1D9m1yqkhnfBgM78cQNTwyi7DidfSw3cVC3Eg+qguJJN7TCJpXYCMfLC1yGkaIS6VCm2XEaEFvRjUmzoyQOrLzaLb0wp0TKTb779L7ZMketla0RMVwvnnrdOCUxaDlDVCjgX6yYjwE8EJeQtpPSeMiEoHpDSSou+ixxPnn7dNGOk6+I3Frzx2Kz/FcGt8CmsfZ93Ao3SLtjAkYAvxuvIGBkiTvM44TTwT+BGiCzbJowpPyhqZUevD54sTjS8+i2fhL4eLT+cl0c38lJB+dkmPmv5znqN2CREWWunhQkvTkTHZ7FCq3UC1Q9lRMZuxYI3JALDeFQn5kOSvSqBOV/J3bQ7bT16n9b4vB5dCDt8Yax/IfG6Hrf7JHLM7UG2ivhoT+iqW0fo4FvjUpN32zL8ywQBwmQsQd0S0ec/mJbGuRUlJ3UsTH3R/nEjPlyRup2+GsfvlI1jfatORwEosvjKhsacygfVWafOj3xN/NQirE7jMBYgDDq7gGhMLrjYNC9Qk3AUoUGPa1LM8kdGWOD65Ufdt1Odq0Eag0mQAuMwFSEdxYIWJ+ZebhkO/p9tqgyvjWV9VPPc9odtOBivjGYcfHNoI1ycZQvVJ7J/N5jz/Nxby11moa7O5pO/bJPZoozm+t87Sye3dteZaakCEPySynjrLcW7rqTM30pV4Rvss7MHXlihh3ZIy49Zl5WzP57OlHZXTaEdlOf28btbEhqoZ7PC2xUMaVpT/tX15GX2/6oMNGxe42KqKSWxn9fQ/tn1SRruqZxyZU+BkCwtzBjXuXKr9ALDpk7ewikkLmEty7p7sUGiKw0mlcs7u8ncmslJZWVYkOKnQrpBLHnu1RMgYjG+xvVh09hZmy1Qi5XSVyvLoqYrCXLJi0Aj1XwsB/yv8wxMpER0U1cUJkO36Z/IFtxWL4iz+LS6BDuJAsaD57uf/OoCRc/0LN5sijCAwUhMAAAAASUVORK5CYII='); background-size: cover; display: block;"
6910 ></span>
6911 <img
6912 class="gatsby-resp-image-image"
6913 alt="K.A.M."
6914 title="K.A.M."
6915 src="/static/a193634d682ab8bccc256ac4db3f4075/357e3/red.png"
6916 srcset="/static/a193634d682ab8bccc256ac4db3f4075/222b7/red.png 163w,
6917 /static/a193634d682ab8bccc256ac4db3f4075/357e3/red.png 286w"
6918 sizes="(max-width: 286px) 100vw, 286px"
6919 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6920 loading="lazy"
6921 />
6922 </a>
6923 </span></p>
6924 <p>K.A.M. is the Communications Officer. She’s part robot (we think). Her suction cup legs can rotate around her body, so she can easily climb and stick to any surface. She also can upgrade her legs to new components, like helicopter drone blades so she can fly, but she lost her repair/upgrade kit during the crash.</p>
6925 <h4>Isaak</h4>
6926 <p><span
6927 class="gatsby-resp-image-wrapper"
6928 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 274px; "
6929 >
6930 <a
6931 class="gatsby-resp-image-link"
6932 href="/static/1c1349d98a8db2c7dae669ffefc15804/d3fa7/blue.png"
6933 style="display: block"
6934 target="_blank"
6935 rel="noopener"
6936 >
6937 <span
6938 class="gatsby-resp-image-background-image"
6939 style="padding-bottom: 136.1963190184049%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAYAAAB836/YAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEV0lEQVRIx41UW0xcVRQ9w5Ca1hg/TIxflQhU8M4lmGjVmhhjosYhNSbGmDamAxo1aab1txqFmhQEnEGoYwbD6w5QaBMJsdpyL6/SYqQRBdp+SKx2khaoPGQkkPKYmbtd53FhUFQmWdl7zt17nbXP3ucwtsXPY1hMi5jME7HcALeHgVeU76yxbf9EgmG6PJL0HmABm1zRDJNxyO/WdslMhXUlFQBhA4J9mxNtWyUP4KVqhpWm8bIN62GsrQpCiQkQ3qsUuv6X1GOsq0tTSWc0qSyuwP0ysbFhupXa/zg3SeJWpM/JUq0kVNvwbVX2MpCl4tM8spJ/JxQHL0q3hgRBU1dCWOnHucW3dm1Tx83NZJpDFjHd0lo+kdjcHddOXbDx34ZvKz+pSJ/hRE7OptJViS7ZCPNuJES1SDd56r9J6pX1UHbe9tSdtfXKBu4nNNn1QXGGYmZTCNdL3RiF4yiNtLaBNf2Dcsp/aq+tl4VJP1ZKj+57wtY/qSXtVD9KR0zEfOMfw556uNg1A2qXREktvUn9ZJudf/R9O6+2g/TqFtKPHLO1cAd5mnuSqvs3gF2Kw8WnhDmDKufPjPBAlI4RMWmP0W1nRHoos8mkbANltg1QfmuvrcjW5BiZxerI0iUhDlXeW3MfDwCZGJGcpi7b23GJPhy8SqHR69R5fYKuzcToSN+I/VD9OTuPNyciiBeB3ZpsUJqUKiUPCEI1wLmGaT/d3k/7OwfpJRC/CLzw1UV6rLWHHjHEXFLKsDeq8XE7Z3hAfUhwdZpKgErKbDhPWUB2o0SuLJdkjIQ6gifFPKoO/Szlmyt8VwTw84nrmL285m7SsVFes5UUfrPYkA+4cx2XlRhLddn8VO1If7fZ9ecoq+7bZC6U5kAd9/dAbWrMhi9I3+GdRZesahAHYINAFQgqH2/vq3v9wpXEgYtX6fmzQ30FXcNjBy9do1d7R6ahshp5TnyQi8LZh2DfY85ddAZzd/hr9rI5zMaJ7gvNLq2EZpaoYWH1rdr5OzWhmUX6YnbpR/ZuDdt7up+hgo0HVz7KTA01f4rEnXTvN4fTbxCx0ujvmcGpP1cACkzEjgYmY7XcD07Gxvwj4zvZaydcz3Z+ly564OTjlXeuHXOe94qbs67PbsdY1dRcRhUIq6YWCNYPhJU/Gpi4vePz6Vl2Ijq9/jpt+dgWFL7JghNzLoAFbk1nVE3GVgAC/EBY+vOjFb9Gd1RGb7LgrVmRs+WPf+BoIHK1ouTqmYWMk38sL9fMLROsHwgLf37lp/JffruLENMO8BxvYdFWZEXC+ioC6YcbW9jxH8YeLP5+JF4yNEYlQ6N+IFxyeYw+GhweP03kPlRazg4Wf5zmCPE6Sp0FBbeyu7y+okZgFSDAD9QqfxEo8x4qdHIkqS+V0LfxAcEPwJ6BvQO7BghC2C+5r9ZiWAvB7izwicpcBYWbCV1eSZoDRLkS2CSQUCSphHHAVjGXgfu9ipTz/QWRPcxojvYdUQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"
6940 ></span>
6941 <img
6942 class="gatsby-resp-image-image"
6943 alt="Isaak"
6944 title="Isaak"
6945 src="/static/1c1349d98a8db2c7dae669ffefc15804/d3fa7/blue.png"
6946 srcset="/static/1c1349d98a8db2c7dae669ffefc15804/222b7/blue.png 163w,
6947 /static/1c1349d98a8db2c7dae669ffefc15804/d3fa7/blue.png 274w"
6948 sizes="(max-width: 274px) 100vw, 274px"
6949 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6950 loading="lazy"
6951 />
6952 </a>
6953 </span></p>
6954 <p>Isaak is Olive’s younger brother. He snuck onto the ship before takeoff because he didn’t want to miss out on the adventure! Isaak is always getting into trouble, which is easy because he’s so tiny, but his misadventures often lead the knerds to important new discoveries.</p>
6955 <h3>The continuing adventure</h3>
6956 <p>I think that the story of the knerds could be the basis for a great game for kids to learn maths (see, I’m living in Europe now) and vocab content on their phones, following along with the mission of the knerds as they relearn their skills and try to salvage their mission in time.</p>
6957 <p>As validation, I showed the knerds to my eight-year-old cousin Avery over the weekend, and she came up with even more superpowers for them. Apparently, Isaak can turn into a tiny paper football. And Mr. Figg can grow his hair really really long. And Olive is actually a popsicle and she can melt and surf along her melted self and then regenerate.</p>
6958 <p>Avery convinced me that helping the knerds solve puzzles would be a fun game for kids. She even started to memorize the names of the Knewton employees after repeatedly playing the app.
6959 Oh, and Avery invented bad guys for the knerds! I asked her to draw them:</p>
6960 <h4>Binky</h4>
6961 <p><span
6962 class="gatsby-resp-image-wrapper"
6963 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; "
6964 >
6965 <a
6966 class="gatsby-resp-image-link"
6967 href="/static/99feb273a3b28529e803a9643815a07f/066f9/binky4.jpg"
6968 style="display: block"
6969 target="_blank"
6970 rel="noopener"
6971 >
6972 <span
6973 class="gatsby-resp-image-background-image"
6974 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAMEBQL/xAAWAQEBAQAAAAAAAAAAAAAAAAACAQP/2gAMAwEAAhADEAAAAe7edbzeGnWS3BHMBf8A/8QAHBAAAgICAwAAAAAAAAAAAAAAAQMCEQAyBBIi/9oACAEBAAEFAuJpIipbJPihTlnujSGPJLf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQMBAT8BrVR//8QAFxEAAwEAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPwFGCn//xAAaEAACAgMAAAAAAAAAAAAAAAAAARBxAiFB/9oACAEBAAY/AncMdxro7jI//8QAGxABAAMAAwEAAAAAAAAAAAAAAQARIRAxYXH/2gAIAQEAAT8hXwjEJUP1lREYKZvnBfAadlpPTRP/2gAMAwEAAgADAAAAEAw3gf/EABYRAQEBAAAAAAAAAAAAAAAAAAEAMf/aAAgBAwEBPxB7AtNgv//EABYRAQEBAAAAAAAAAAAAAAAAAAEAMf/aAAgBAgEBPxA4zME7f//EAB0QAQACAgIDAAAAAAAAAAAAAAEAETFBIbFhgcH/2gAIAQEAAT8Q4PT4IMKZwQ2zHcx3VWh1oiI2O+YR3Qe++om3y6IDjDUHlqqHAT//2Q=='); background-size: cover; display: block;"
6975 ></span>
6976 <img
6977 class="gatsby-resp-image-image"
6978 alt="Binky"
6979 title="Binky"
6980 src="/static/99feb273a3b28529e803a9643815a07f/066f9/binky4.jpg"
6981 srcset="/static/99feb273a3b28529e803a9643815a07f/d2f63/binky4.jpg 163w,
6982 /static/99feb273a3b28529e803a9643815a07f/c989d/binky4.jpg 325w,
6983 /static/99feb273a3b28529e803a9643815a07f/066f9/binky4.jpg 400w"
6984 sizes="(max-width: 400px) 100vw, 400px"
6985 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
6986 loading="lazy"
6987 />
6988 </a>
6989 </span></p>
6990 <h4>Chill Factor</h4>
6991 <p><span
6992 class="gatsby-resp-image-wrapper"
6993 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; "
6994 >
6995 <a
6996 class="gatsby-resp-image-link"
6997 href="/static/1d625bcc3a8051394ccd7f5ab0d9ab1f/066f9/chillfactor4.jpg"
6998 style="display: block"
6999 target="_blank"
7000 rel="noopener"
7001 >
7002 <span
7003 class="gatsby-resp-image-background-image"
7004 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAUEAQL/xAAWAQEBAQAAAAAAAAAAAAAAAAACAwD/2gAMAwEAAhADEAAAAfeyZsm4TjbXSHOKBT//xAAdEAACAQQDAAAAAAAAAAAAAAACEQEABCExAxIy/9oACAEBAAEFArTRLpXAShKCwVv6DR5P/8QAFhEBAQEAAAAAAAAAAAAAAAAAEAEC/9oACAEDAQE/AdFP/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8BIT//xAAZEAADAQEBAAAAAAAAAAAAAAAAAQIQEXH/2gAIAQEABj8CraWNFHSvT//EAB0QAQACAgIDAAAAAAAAAAAAAAEAIRExEFFhgaH/2gAIAQEAAT8h+qNIr1xjrdQABeWHwyy0aLoS6dsf/9oADAMBAAIAAwAAABAo58P/xAAYEQEBAQEBAAAAAAAAAAAAAAABADERIf/aAAgBAwEBPxBet0tsZf/EABcRAAMBAAAAAAAAAAAAAAAAAAABMRH/2gAIAQIBAT8QWGEodP/EAB4QAQACAgIDAQAAAAAAAAAAAAEAESExQVFhcaGx/9oACAEBAAE/EMxK148QSudlLErtnMkrXuJYq5t7l+cb7Fk9H6wlIKiXrUWFKFn/2Q=='); background-size: cover; display: block;"
7005 ></span>
7006 <img
7007 class="gatsby-resp-image-image"
7008 alt="Chill Factor"
7009 title="Chill Factor"
7010 src="/static/1d625bcc3a8051394ccd7f5ab0d9ab1f/066f9/chillfactor4.jpg"
7011 srcset="/static/1d625bcc3a8051394ccd7f5ab0d9ab1f/d2f63/chillfactor4.jpg 163w,
7012 /static/1d625bcc3a8051394ccd7f5ab0d9ab1f/c989d/chillfactor4.jpg 325w,
7013 /static/1d625bcc3a8051394ccd7f5ab0d9ab1f/066f9/chillfactor4.jpg 400w"
7014 sizes="(max-width: 400px) 100vw, 400px"
7015 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
7016 loading="lazy"
7017 />
7018 </a>
7019 </span></p>
7020 <h4>Bill</h4>
7021 <p><span
7022 class="gatsby-resp-image-wrapper"
7023 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; "
7024 >
7025 <a
7026 class="gatsby-resp-image-link"
7027 href="/static/c1ce1b5e15af0c710bbe8779aef91b76/066f9/bill3.jpg"
7028 style="display: block"
7029 target="_blank"
7030 rel="noopener"
7031 >
7032 <span
7033 class="gatsby-resp-image-background-image"
7034 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAUEAQL/xAAVAQEBAAAAAAAAAAAAAAAAAAACAP/aAAwDAQACEAMQAAAB90JukOA6qhpGJAD/AP/EABsQAAEFAQEAAAAAAAAAAAAAAAEAAgMEERIh/9oACAEBAAEFAqi8AVY4G4Q8Y+JNUh6k/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAECEDH/2gAIAQMBAT8BdS0R/8QAFxEAAwEAAAAAAAAAAAAAAAAAAQIQMf/aAAgBAgEBPwERcn//xAAYEAADAQEAAAAAAAAAAAAAAAAAAQIQUf/aAAgBAQAGPwKtsY0XlN9P/8QAGxABAQADAAMAAAAAAAAAAAAAAQAhMWFxgZH/2gAIAQEAAT8h18iFJqcrfHQUXNy5tvSeZuIX/9oADAMBAAIAAwAAABCQ6D7/xAAYEQADAQEAAAAAAAAAAAAAAAAAATERIf/aAAgBAwEBPxB+4JlyEf/EABcRAAMBAAAAAAAAAAAAAAAAAAABETH/2gAIAQIBAT8QSqkMR6f/xAAdEAEAAgIDAQEAAAAAAAAAAAABABEhMUGhsVFx/9oACAEBAAE/EFZmjwgdql0RWF5hMd6dzIF5Jjly1+RoHAjqWVolRl2w+GDyf//Z'); background-size: cover; display: block;"
7035 ></span>
7036 <img
7037 class="gatsby-resp-image-image"
7038 alt="Bill"
7039 title="Bill"
7040 src="/static/c1ce1b5e15af0c710bbe8779aef91b76/066f9/bill3.jpg"
7041 srcset="/static/c1ce1b5e15af0c710bbe8779aef91b76/d2f63/bill3.jpg 163w,
7042 /static/c1ce1b5e15af0c710bbe8779aef91b76/c989d/bill3.jpg 325w,
7043 /static/c1ce1b5e15af0c710bbe8779aef91b76/066f9/bill3.jpg 400w"
7044 sizes="(max-width: 400px) 100vw, 400px"
7045 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
7046 loading="lazy"
7047 />
7048 </a>
7049 </span></p>
7050 <p>It looks like the knerds will need all the help they can get — will you help them?</p></content:encoded></item><item><title><![CDATA[Terminal Man - Live in Concert]]></title><description><![CDATA[Last week, streaming live from London, TERMINAL MAN performed its first show ever, appearing live in New York City at the Knewton Talent…]]></description><link>https://www.charlieharrington.com/terminal-man-live-in-nyc</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-live-in-nyc</guid><pubDate>Tue, 07 Apr 2015 00:00:00 GMT</pubDate><content:encoded><p>Last week, streaming live from London, <strong>TERMINAL MAN</strong> performed its first show ever, appearing live in New York City at the Knewton Talent Show. This may have been the first musical performance for a Double Robotics robot ever, but I certainly hope it's not the last.</p>
7051 <p>What follows may shock you:</p>
7052 <iframe src="https://player.vimeo.com/video/124292973" width="640" height="1138" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
7053 <h3>Here's how I brought TERMINAL MAN to life.</h3>
7054 <h4>The music</h4>
7055 <h5>Garageband</h5>
7056 <p>I've spent a lot of time at airports over the last year and a half. When you have that much free time, you invent some hobbies. One of mine is creating loop-driven songs on Garageband.</p>
7057 <p><span
7058 class="gatsby-resp-image-wrapper"
7059 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
7060 >
7061 <a
7062 class="gatsby-resp-image-link"
7063 href="/static/f9b5c6e93322799f0d86bad6b08f8286/59173/garageband.png"
7064 style="display: block"
7065 target="_blank"
7066 rel="noopener"
7067 >
7068 <span
7069 class="gatsby-resp-image-background-image"
7070 style="padding-bottom: 68.09815950920245%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAABYlAAAWJQFJUiTwAAAC/0lEQVQ4y0VTW3PSUBjkbzhjLdBwaYVcSEhIyD0h0JYQxEFrLcW7oy/aobWFXhz64Pjqs5cZZ/R3rt85VH3Y2UlyZrPft3tyVx8XOL+4wOXlJZbLa87zxQKzsyMcvT/C/Qf7GO9NOI/Gj/Dy1Rt+ZkFnrpdLzK/mmF28w/niA87mC+R2uh0EUQeu6yMIIlhtB1rTgKrrUDUdkqJB0Qw0CLKqQzcsNA0TLcuBZVkwTAOtNqFlwDBayO0mIXZ2++j0OohjH0Y8gphMIScTyN1DKAmBWL7hBkGi77qfok2ClmnBcz0y5MK2beSyXoh0kGF4L0Oa9smRimKpCqGyBaG8Sbx5w6vn8maNf29oTTiOzYUcx+HwfZ85DLhDz2N/aEORZRQKeQgbRWwUC4Qix+q5iFJJQCGfh6o2uQATYqIMXHCw3UE2vIduN6Ed+hAlCWtrayRa+Ic8CfyFIGxgfX0djYZKJjw+JsNfYS7IHEbdiA5YcNMp2nuncPeOEU3OEDw+hf3wmHACZ+8E0cEposNzWMl92JbJxUzao2maNzvcTpBlQwQ0uu+b6E3nGJz9wuDkB7LTn+jPvmPwgfE3pLOvGBx/Qzb/DTt7QYIt2I6Lel1ErVbn0+W6gbPaYeyRQxNu9hTtyRLewQWiJ1dwD5ewH83hPfuM6M0XJM+vETz7BKO3D58lywUlDllprFJmO+xQHz2X9pGMUKkpqBs+1HCEcqUKNRiilT6HGo9RqVRQouRlnaUa0JjOP4cKExxuR9xhSH10bAPB+C0a/dcwRu/gTa8hxvucW+PZqovJAfVzSj/JEFCqOpW8VhNXDmXlf8oxhRKEPiR6yXtYrqJQFLBBvH7nNrT0NRwaXyhVIFTrkHR35ZBGFkWJO5QkGbl+N8AuOXR9it1zIIlkPRyj3op5DzdFjXNN9yC1uyjeuYX82i1ImoUwjOn62auRCSITTFnKNztkPVQUhVzRrSiVUb4rw0hfoFTdQs0IofUmqLd3ULdTKBaJUVXY/WUOGZpNHX8AxB7vtVv+wz8AAAAASUVORK5CYII='); background-size: cover; display: block;"
7071 ></span>
7072 <img
7073 class="gatsby-resp-image-image"
7074 alt="Garageband"
7075 title="Garageband"
7076 src="/static/f9b5c6e93322799f0d86bad6b08f8286/a6d36/garageband.png"
7077 srcset="/static/f9b5c6e93322799f0d86bad6b08f8286/222b7/garageband.png 163w,
7078 /static/f9b5c6e93322799f0d86bad6b08f8286/ff46a/garageband.png 325w,
7079 /static/f9b5c6e93322799f0d86bad6b08f8286/a6d36/garageband.png 650w,
7080 /static/f9b5c6e93322799f0d86bad6b08f8286/e548f/garageband.png 975w,
7081 /static/f9b5c6e93322799f0d86bad6b08f8286/3c492/garageband.png 1300w,
7082 /static/f9b5c6e93322799f0d86bad6b08f8286/59173/garageband.png 3014w"
7083 sizes="(max-width: 650px) 100vw, 650px"
7084 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
7085 loading="lazy"
7086 />
7087 </a>
7088 </span></p>
7089 <p>This screenshot is one of my more recent tracks Over Water, Under You. I assembled July Nineteen in a similar fashion, playing with the pre-set available loops to come up with weird and interesting combinations. I decided to use 'July Nineteen' for the talent show performance because it's loud and short and catchy.</p>
7090 <h4>The video</h4>
7091 <h5>The skull</h5>
7092 <ul>
7093 <li>Wikimedia Commons</li>
7094 <li>GIMP</li>
7095 </ul>
7096 <p>When I was growing up, my dad called me "Skull" as a nickname. To this day, if someone yells "Skull!", I will come running. Anyway, I wanted a giant skull on giant screen, so I grabbed a decent skull image from Wikimedia Commons and then doctored it up in GIMP to remove clutter and the white background, saving as a .png.</p>
7097 <h5>The background</h5>
7098 <ul>
7099 <li>Processing</li>
7100 <li>YouTube</li>
7101 <li>CloudApp</li>
7102 </ul>
7103 <p>I've always loved the weird video backdrops behind live performances of My Morning Jacket or Wilco or Sufjan or Animal Collective. Who creates these trippy backgrounds, and how much input comes from the band?</p>
7104 <p>Hey, so, when we're playing "I'm The Man Who Loves You" I want the background to be like crying rainbow waves. And triangles, lots of triangles.</p>
7105 <p>Well, <strong>TERMINAL MAN</strong> definitely needed its own trippy background for its debut live show, and Processing made it happen.</p>
7106 <p>I created a Processing sketch that used keyboard strokes to trigger different backdrops behind the giant skull. Some of the backgrounds were native Processing functions (like creating random flashing colors or drawing lots of random lines), and others were looped video clips that I grabbed from YouTube with CloudApp. The central theme: the joy of Windows 95.</p>
7107 <p>Here's the code for the sketch:</p>
7108 <div class="gatsby-highlight" data-language="java"><pre class="language-java"><code class="language-java"><span class="token comment">// ----------------------</span>
7109 <span class="token comment">// T E R M I N A L M A N</span>
7110 <span class="token comment">// ----------------------</span>
7111 <span class="token comment">// @ w h a t r o c k s</span>
7112 <span class="token comment">// ----------------------</span>
7113
7114 <span class="token comment">// import video library</span>
7115 <span class="token keyword">import</span> <span class="token namespace">processing<span class="token punctuation">.</span>video<span class="token punctuation">.</span></span><span class="token operator">*</span><span class="token punctuation">;</span>
7116
7117 <span class="token comment">// movies</span>
7118 <span class="token class-name">Movie</span> pipeMovie<span class="token punctuation">;</span>
7119 <span class="token class-name">Movie</span> doomMovie<span class="token punctuation">;</span>
7120 <span class="token class-name">Movie</span> solitaireMovie<span class="token punctuation">;</span>
7121 <span class="token class-name">Movie</span> toastersMovie<span class="token punctuation">;</span>
7122 <span class="token class-name">Movie</span> mazeMovie<span class="token punctuation">;</span>
7123 <span class="token class-name">Movie</span> wc2Movie<span class="token punctuation">;</span>
7124 <span class="token class-name">Movie</span> tiefighterMovie<span class="token punctuation">;</span>
7125 <span class="token class-name">Movie</span> rollercoasterMovie<span class="token punctuation">;</span>
7126
7127 <span class="token comment">// images</span>
7128 <span class="token class-name">PImage</span> skull<span class="token punctuation">;</span>
7129 <span class="token class-name">PImage</span> miniSkull<span class="token punctuation">;</span>
7130
7131 <span class="token comment">// font</span>
7132 <span class="token class-name">PFont</span> f<span class="token punctuation">;</span>
7133
7134 <span class="token keyword">void</span> <span class="token function">setup</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7135 <span class="token function">size</span><span class="token punctuation">(</span><span class="token number">800</span><span class="token punctuation">,</span> <span class="token number">800</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7136 <span class="token function">smooth</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7137
7138 <span class="token comment">// load the pictures</span>
7139 skull <span class="token operator">=</span> <span class="token function">loadImage</span><span class="token punctuation">(</span><span class="token string">"skull2.png"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7140 miniSkull <span class="token operator">=</span> <span class="token function">loadImage</span><span class="token punctuation">(</span><span class="token string">"skull2.png"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7141 <span class="token comment">// resize the big skull to dimensions of the canvas</span>
7142 skull<span class="token punctuation">.</span><span class="token function">resize</span><span class="token punctuation">(</span>width<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">;</span>
7143
7144 <span class="token comment">// black background</span>
7145 <span class="token function">background</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7146
7147 <span class="token comment">// load the font</span>
7148 f <span class="token operator">=</span> <span class="token function">loadFont</span><span class="token punctuation">(</span><span class="token string">"TwCenMT-BoldItalic-100.vlw"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7149
7150 <span class="token comment">// load the movies</span>
7151 mazeMovie <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Movie</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">"maze.mov"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7152 mazeMovie<span class="token punctuation">.</span><span class="token function">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7153
7154 solitaireMovie <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Movie</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">"solitaire.mov"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7155 solitaireMovie<span class="token punctuation">.</span><span class="token function">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7156
7157 doomMovie <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Movie</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">"doom.mov"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7158 doomMovie<span class="token punctuation">.</span><span class="token function">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7159
7160 pipeMovie <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Movie</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">"pipe.mov"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7161 pipeMovie<span class="token punctuation">.</span><span class="token function">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7162
7163 toastersMovie <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Movie</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">"toasters.mov"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7164 toastersMovie<span class="token punctuation">.</span><span class="token function">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7165
7166 tiefighterMovie <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Movie</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">"tiefighter.mov"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7167 tiefighterMovie<span class="token punctuation">.</span><span class="token function">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7168
7169 wc2Movie <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Movie</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">"wc2.mov"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7170 wc2Movie<span class="token punctuation">.</span><span class="token function">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7171
7172 rollercoasterMovie <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Movie</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">"rollercoaster.mov"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7173 rollercoasterMovie<span class="token punctuation">.</span><span class="token function">loop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7174
7175 <span class="token punctuation">}</span>
7176
7177 <span class="token keyword">void</span> <span class="token function">draw</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7178
7179 <span class="token comment">// black background</span>
7180 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'x'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7181 <span class="token function">background</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7182 <span class="token punctuation">}</span>
7183
7184 <span class="token comment">// play doom video</span>
7185 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'1'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7186 <span class="token function">image</span><span class="token punctuation">(</span>doomMovie<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">;</span>
7187 <span class="token punctuation">}</span>
7188
7189 <span class="token comment">// play maze video</span>
7190 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'2'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7191 <span class="token function">image</span><span class="token punctuation">(</span>mazeMovie<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">;</span>
7192 <span class="token punctuation">}</span>
7193
7194 <span class="token comment">// play toasters video</span>
7195 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'3'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7196 <span class="token function">image</span><span class="token punctuation">(</span>toastersMovie<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">;</span>
7197 <span class="token punctuation">}</span>
7198
7199 <span class="token comment">// play pipes video</span>
7200 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'4'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7201 <span class="token function">image</span><span class="token punctuation">(</span>pipeMovie<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">;</span>
7202 <span class="token punctuation">}</span>
7203
7204 <span class="token comment">// play solitaire video</span>
7205 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'5'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7206 <span class="token function">image</span><span class="token punctuation">(</span>solitaireMovie<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">;</span>
7207 <span class="token punctuation">}</span>
7208
7209 <span class="token comment">// play tiefighter video</span>
7210 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'6'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7211 <span class="token function">image</span><span class="token punctuation">(</span>tiefighterMovie<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">;</span>
7212 <span class="token punctuation">}</span>
7213
7214 <span class="token comment">// play rollercoaster video</span>
7215 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'7'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7216 <span class="token function">image</span><span class="token punctuation">(</span>rollercoasterMovie<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">;</span>
7217 <span class="token punctuation">}</span>
7218
7219 <span class="token comment">// play wc2 video</span>
7220 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'8'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7221 <span class="token function">image</span><span class="token punctuation">(</span>wc2Movie<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">;</span>
7222 <span class="token punctuation">}</span>
7223
7224 <span class="token comment">// print mini skulls everywhere!</span>
7225 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'s'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7226 miniSkull<span class="token punctuation">.</span><span class="token function">resize</span><span class="token punctuation">(</span>width<span class="token operator">/</span><span class="token number">10</span><span class="token punctuation">,</span> height<span class="token operator">/</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7227 <span class="token function">image</span><span class="token punctuation">(</span>miniSkull<span class="token punctuation">,</span> <span class="token function">random</span><span class="token punctuation">(</span><span class="token operator">-</span>width<span class="token punctuation">,</span> width<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">random</span><span class="token punctuation">(</span><span class="token operator">-</span>height<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7228 <span class="token punctuation">}</span>
7229
7230 <span class="token comment">// flashy background colors!</span>
7231 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'b'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7232 <span class="token function">background</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">(</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token punctuation">(</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token punctuation">(</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token punctuation">(</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7233 <span class="token punctuation">}</span>
7234
7235 <span class="token comment">// draw blue lines from the center</span>
7236 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'l'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7237 <span class="token function">stroke</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token function">random</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">random</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7238 <span class="token function">line</span><span class="token punctuation">(</span>width<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">,</span> height<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">,</span> width<span class="token operator">/</span><span class="token number">2</span> <span class="token operator">+</span> <span class="token function">random</span><span class="token punctuation">(</span><span class="token operator">-</span>width<span class="token punctuation">,</span> width<span class="token punctuation">)</span><span class="token punctuation">,</span> height<span class="token operator">/</span><span class="token number">2</span> <span class="token operator">+</span> <span class="token function">random</span><span class="token punctuation">(</span><span class="token operator">-</span>height<span class="token punctuation">,</span> height<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7239 <span class="token punctuation">}</span>
7240
7241 <span class="token comment">// Load big skull picture on top of all these other backgrounds</span>
7242 <span class="token function">image</span><span class="token punctuation">(</span>skull<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7243
7244 <span class="token comment">// show 'terminal man' text, even on top of the big skull</span>
7245 <span class="token keyword">if</span> <span class="token punctuation">(</span>key <span class="token operator">==</span> <span class="token string">'t'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
7246 <span class="token function">textFont</span><span class="token punctuation">(</span>f<span class="token punctuation">)</span><span class="token punctuation">;</span>
7247 <span class="token function">textAlign</span><span class="token punctuation">(</span>CENTER<span class="token punctuation">)</span><span class="token punctuation">;</span>
7248 <span class="token function">fill</span><span class="token punctuation">(</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token number">155</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token function">random</span><span class="token punctuation">(</span><span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7249 <span class="token function">text</span><span class="token punctuation">(</span><span class="token string">"TERMINAL MAN"</span><span class="token punctuation">,</span> width<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">,</span> height<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7250 <span class="token function">fill</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token function">random</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">random</span><span class="token punctuation">(</span><span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7251 <span class="token function">text</span><span class="token punctuation">(</span><span class="token string">"TERMINAL MAN"</span><span class="token punctuation">,</span> width<span class="token operator">/</span><span class="token number">2</span><span class="token operator">+</span><span class="token number">10</span><span class="token punctuation">,</span> height<span class="token operator">/</span><span class="token number">2</span><span class="token operator">+</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7252 <span class="token punctuation">}</span>
7253 <span class="token punctuation">}</span>
7254
7255 <span class="token comment">// Called everytime a new frame is available</span>
7256 <span class="token keyword">void</span> <span class="token function">movieEvent</span><span class="token punctuation">(</span><span class="token class-name">Movie</span> m<span class="token punctuation">)</span> <span class="token punctuation">{</span>
7257 m<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
7258 <span class="token punctuation">}</span></code></pre></div>
7259 <p>The sketch creates an app that lets you use the keyboard to jump between the different backdrops (for example, I can press 'b' for crazy random flashing colors, and '5' for a looped Solitaire video). Note that the media files need to appear in the 'data' folder of your sketch for this to work correctly.</p>
7260 <h3>Pulling it all together</h3>
7261 <ul>
7262 <li>QuickTime</li>
7263 <li>iMovie</li>
7264 <li>Vimeo</li>
7265 </ul>
7266 <p>Even though the sketch works great as a live companion to the song, I was really concerned with potential lag and getting out of sync with the music, so I decided to record it all as a video. CloudApp stopped cooperating, conveniently right after I registered for the one-month premium package, so I Googled and discovered that I could also use QuickTime to record screencasts. For free.</p>
7267 <p>I put on some DJ-like headphones, press record on the Quicktime screencast, pressed play on the track in iTunes, and just pretended that I was Chris Kuroda, the de facto fifth member of Phish who runs all their stage effects and lights, as I recorded the background changes along with the song.</p>
7268 <p>Then all I had to do was drop the mp3 and the video files into iMovie, line them up, and post to Vimeo!</p>
7269 <iframe src="https://player.vimeo.com/video/123845456" width="640" height="360" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
7270 <h3>The live performance</h3>
7271 <ul>
7272 <li>Double Robotics robot (we call it the Krobot at Knewton)</li>
7273 <li>Terminal</li>
7274 <li>Stage crew (Fernando, Sam, and others!)</li>
7275 </ul>
7276 <p>I had elaborate plans to introduce myself in a scary and funny robot voice using the Terminal 'say' command. This totally failed, however, as you can see in the video. No one could hear my hilarious introduction. No one heard me explain that I wrote the song and created the background video.</p>
7277 <p>But none of that mattered once I started to dance.</p></content:encoded></item><item><title><![CDATA[Merlin's Advice]]></title><description><![CDATA[The best thing for being sad is to learn something. That's the only thing that never fails. You may grow old and trembling in your anatomies…]]></description><link>https://www.charlieharrington.com/merlin's-advice</link><guid isPermaLink="false">https://www.charlieharrington.com/merlin's-advice</guid><pubDate>Thu, 05 Mar 2015 00:00:00 GMT</pubDate><content:encoded><blockquote>
7278 <p>The best thing for being sad is to learn something. That's the only thing that never fails. You may grow old and trembling in your anatomies, you may lie awake at night listening to the disorder of your veins, you may miss your only love, you may see the world about you devastated by evil lunatics, or know your honour trampled in the sewers of baser minds. There is only one thing for it then — to learn. Learn why the world wags and what wags it. That is the only thing which the mind can never exhaust, never alienate, never be tortured by, never fear or distrust, and never dream of regretting. Learning is the only thing for you. Look what a lot of things there are to learn.</p>
7279 </blockquote>
7280 <p><span
7281 class="gatsby-resp-image-wrapper"
7282 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; "
7283 >
7284 <a
7285 class="gatsby-resp-image-link"
7286 href="/static/80667a21a152af75c83a37789c285779/f212f/ma.jpg"
7287 style="display: block"
7288 target="_blank"
7289 rel="noopener"
7290 >
7291 <span
7292 class="gatsby-resp-image-background-image"
7293 style="padding-bottom: 131.90184049079755%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAaABQDASIAAhEBAxEB/8QAGQAAAwADAAAAAAAAAAAAAAAAAAMEAQIF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABio5uxQThhzWkhaH/xAAcEAABBQADAAAAAAAAAAAAAAAAAQIQERIDITH/2gAIAQEAAQUCR5ttbLLiu14zIvrI/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAGBAAAwEBAAAAAAAAAAAAAAAAACAhAUH/2gAIAQEABj8CJi04v//EABwQAAMBAAIDAAAAAAAAAAAAAAABESExUXGBof/aAAgBAQABPyFEZmehZSbFHKZbtNRgZ23s8vgqvBE3qHyf/9oADAMBAAIAAwAAABBADQz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAcEAEAAwEBAAMAAAAAAAAAAAABABEhMUFRkbH/2gAIAQEAAT8QoHKwryU1RF62sb3OSh11+I4USaK59QVl1vZqdS4vkGDVfT9TOMiUDr5MAOekJfJ//9k='); background-size: cover; display: block;"
7294 ></span>
7295 <img
7296 class="gatsby-resp-image-image"
7297 alt="Merlin"
7298 title="Merlin"
7299 src="/static/80667a21a152af75c83a37789c285779/6aca1/ma.jpg"
7300 srcset="/static/80667a21a152af75c83a37789c285779/d2f63/ma.jpg 163w,
7301 /static/80667a21a152af75c83a37789c285779/c989d/ma.jpg 325w,
7302 /static/80667a21a152af75c83a37789c285779/6aca1/ma.jpg 650w,
7303 /static/80667a21a152af75c83a37789c285779/f212f/ma.jpg 916w"
7304 sizes="(max-width: 650px) 100vw, 650px"
7305 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
7306 loading="lazy"
7307 />
7308 </a>
7309 </span></p></content:encoded></item><item><title><![CDATA[Trickle of Water]]></title><description><![CDATA[My favorite Calvin and Hobbes strip]]></description><link>https://www.charlieharrington.com/trickle-of-water</link><guid isPermaLink="false">https://www.charlieharrington.com/trickle-of-water</guid><pubDate>Sun, 01 Mar 2015 00:00:00 GMT</pubDate><content:encoded><p>My favorite <em>Calvin and Hobbes</em> strip</p>
7310 <p><span
7311 class="gatsby-resp-image-wrapper"
7312 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; "
7313 >
7314 <a
7315 class="gatsby-resp-image-link"
7316 href="/static/082a73a40fc58149b9098649c62e2b45/b4294/ch.jpg"
7317 style="display: block"
7318 target="_blank"
7319 rel="noopener"
7320 >
7321 <span
7322 class="gatsby-resp-image-background-image"
7323 style="padding-bottom: 31.288343558282207%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAGABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAIDBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAdaAWA//xAAYEAEAAwEAAAAAAAAAAAAAAAABAAIRIf/aAAgBAQABBQKsVw4f/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFhABAQEAAAAAAAAAAAAAAAAAAAER/9oACAEBAAY/AmRI/8QAGRABAAMBAQAAAAAAAAAAAAAAAQARITFB/9oACAEBAAE/IV3xeRSwjvG2tan/2gAMAwEAAgADAAAAEPAP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGxABAAICAwAAAAAAAAAAAAAAAQAhETFBUfD/2gAIAQEAAT8QffHAWBGILt79cVxLQGXvE//Z'); background-size: cover; display: block;"
7324 ></span>
7325 <img
7326 class="gatsby-resp-image-image"
7327 alt="comic"
7328 title="comic"
7329 src="/static/082a73a40fc58149b9098649c62e2b45/b4294/ch.jpg"
7330 srcset="/static/082a73a40fc58149b9098649c62e2b45/d2f63/ch.jpg 163w,
7331 /static/082a73a40fc58149b9098649c62e2b45/c989d/ch.jpg 325w,
7332 /static/082a73a40fc58149b9098649c62e2b45/b4294/ch.jpg 600w"
7333 sizes="(max-width: 600px) 100vw, 600px"
7334 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
7335 loading="lazy"
7336 />
7337 </a>
7338 </span></p></content:encoded></item><item><title><![CDATA[edCrunch in Moscow]]></title><link>https://www.charlieharrington.com/edcrunch-in-moscow</link><guid isPermaLink="false">https://www.charlieharrington.com/edcrunch-in-moscow</guid><pubDate>Sat, 18 Oct 2014 00:00:00 GMT</pubDate><content:encoded><iframe width="560" height="315" src="https://www.youtube.com/embed/T952UorytGs?rel=0" frameborder="0" allowfullscreen></iframe></content:encoded></item><item><title><![CDATA[Over Water, Under You]]></title><link>https://www.charlieharrington.com/terminal-man-over-water-under-you</link><guid isPermaLink="false">https://www.charlieharrington.com/terminal-man-over-water-under-you</guid><pubDate>Mon, 04 Aug 2014 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/161700259&amp;color=%2300cc11&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe></content:encoded></item><item><title><![CDATA[ELTJam Sesh in London]]></title><description><![CDATA[My five minute pitch to the masters of the ELT universe.]]></description><link>https://www.charlieharrington.com/eltjam-sesh-in-london</link><guid isPermaLink="false">https://www.charlieharrington.com/eltjam-sesh-in-london</guid><pubDate>Mon, 28 Apr 2014 00:00:00 GMT</pubDate><content:encoded><iframe src="https://player.vimeo.com/video/93132331?title=0&byline=0&portrait=0" width="640" height="360" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
7339 <p>My five minute pitch to the masters of the ELT universe.</p></content:encoded></item><item><title><![CDATA[SEPM Conference in Copenhagen]]></title><description><![CDATA["It's so awesome that we are in a planetarium, first of all." - Charlie Harrington]]></description><link>https://www.charlieharrington.com/sepm-conference-in-copenhagen</link><guid isPermaLink="false">https://www.charlieharrington.com/sepm-conference-in-copenhagen</guid><pubDate>Thu, 21 Nov 2013 00:00:00 GMT</pubDate><content:encoded><iframe width="560" height="315" src="https://www.youtube.com/embed/87sBLMbBoFM?rel=0" frameborder="0" allowfullscreen></iframe>
7340 <p>"It's so awesome that we are in a planetarium, first of all." - Charlie Harrington</p></content:encoded></item><item><title><![CDATA[Cape Seafood Logo]]></title><description><![CDATA[My friend Luke asked me to design a new logo for his new company. You may know his other company: Luke's Lobster. Here's what my other…]]></description><link>https://www.charlieharrington.com/cape-seafood-logo</link><guid isPermaLink="false">https://www.charlieharrington.com/cape-seafood-logo</guid><pubDate>Mon, 21 Jan 2013 00:00:00 GMT</pubDate><content:encoded><p>My friend Luke asked me to design a new logo for his new company. You may know his other company: <a href="https://www.lukeslobster.com/">Luke's Lobster</a>.</p>
7341 <p>Here's what my other friend <a href="http://www.katiekosma.com/">Katie Kosma</a> and I came up with:</p>
7342 <p><span
7343 class="gatsby-resp-image-wrapper"
7344 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 364px; "
7345 >
7346 <a
7347 class="gatsby-resp-image-link"
7348 href="/static/1564ddff2da0feb019088d38eb6d2ae9/e45a9/capeseafood.png"
7349 style="display: block"
7350 target="_blank"
7351 rel="noopener"
7352 >
7353 <span
7354 class="gatsby-resp-image-background-image"
7355 style="padding-bottom: 54.601226993865026%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACQ0lEQVQoz22TzU9TQRTFu3Jj4sqFJv4DJv4Frl25cGdiTBCjEXfqws+dCxcixqWi0Y2xskGDJsaQCpEUBKwtlIamFAKhLa39oO17b957/bI/7ry2tjEuztyTuTPn3Jm547NtGw2lFLZAdXkP1gD31nTz1n/W6JzPHhAwBYbVSVjKpiYR18bpGXZjzbFpuR1eF94W7nZzPj3oDXoRroKmiyWiDVuRNRTzOUW5a2JoMYmZqiJW7AinKopwXlEwOjpehRXZkJZFX9MWdyMVzn1MEMnscyFkcTlkkthXxEuKYeHixL2oycmAwfOkxdVfJmcXDGKSb4qBT6sWTMWZBYsjE2l8YxFOvIryNFriesQSAUXLUTxYM/FNVaQaMV01OPWtin/b5PyiwUjY8O7Rq1APRRE8HbQ47E9x6FmI4+NREr/LDK+6XIrYzBVchqTaayuKx5suo0mH6awD1BkK21yMOMTLDg0x/nvk2aziZrjKscksR1+vk88XmQpv82Jhiy8rO+zky6xvpfH/2OC9YGkjzedQkunYLmOBdWKpAg3X6T+K3LYYyis3mox9TxLfzfNwcpEbb2YYnVrmyniAO++CPPn0k/v+ILcFt97O8ejDIiMvA0wE49Cq6wr7LVORo7frLtHNDLlShdXtHEuJNLNrO4S39jyu72o+nmJzr8jyRsYznpF8rlTF1Y+iBnqs03993hTxP40abUGrLpCo5/VcveZ4sVFzaTdrIuZ0+rC32f6neXs/QPekafW56kZrIJpW/6ccAFxIGDki540tAAAAAElFTkSuQmCC'); background-size: cover; display: block;"
7356 ></span>
7357 <img
7358 class="gatsby-resp-image-image"
7359 alt="logo"
7360 title="logo"
7361 src="/static/1564ddff2da0feb019088d38eb6d2ae9/e45a9/capeseafood.png"
7362 srcset="/static/1564ddff2da0feb019088d38eb6d2ae9/222b7/capeseafood.png 163w,
7363 /static/1564ddff2da0feb019088d38eb6d2ae9/ff46a/capeseafood.png 325w,
7364 /static/1564ddff2da0feb019088d38eb6d2ae9/e45a9/capeseafood.png 364w"
7365 sizes="(max-width: 364px) 100vw, 364px"
7366 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
7367 loading="lazy"
7368 />
7369 </a>
7370 </span></p>
7371 <p>Check out <a href="http://www.capeseafoodllc.com/">Cape Seafood</a> for more seafood-y goodness.</p></content:encoded></item><item><title><![CDATA[Four Track]]></title><description><![CDATA[This is the first song I wrote and recorded on my Fostex four-track.]]></description><link>https://www.charlieharrington.com/four-track</link><guid isPermaLink="false">https://www.charlieharrington.com/four-track</guid><pubDate>Thu, 18 Dec 2003 00:00:00 GMT</pubDate><content:encoded><iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/341989983&amp;color=%2300cc11&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe>
7372 <p>This is the first song I wrote and recorded on my Fostex four-track.</p></content:encoded></item><item><title><![CDATA[About]]></title><description><![CDATA[Hello! My name is Charlie Harrington. I'm a computer programmer and writer living in San Francisco, California. I grew up in Red Bank, New…]]></description><link>https://www.charlieharrington.com/about</link><guid isPermaLink="false">https://www.charlieharrington.com/about</guid><pubDate>Sat, 01 Jan 2000 00:00:00 GMT</pubDate><content:encoded><p>Hello! My name is Charlie Harrington. I'm a computer programmer and writer living in San Francisco, California. I grew up in Red Bank, New Jersey, and it ain't no sin to be glad you're alive.</p>
7373 <p>I'm an engineering manager at <a href="https://www.getcruise.com">Cruise</a>, building software to deliver fully-autonomous vehicles aka self-driving cars. You can see Cruise autonomous vehicles driving around San Francisco right now! Like <em>right now</em>, look outside!</p>
7374 <p>I love <a href="/my-new-old-apple-iie-computer">old computers</a>, <a href="/library">books of all kinds</a>, <a href="/school-supplies">playing music</a>, and <a href="/rim-2-rim-2-rim">the Great Outdoors</a>. Here's a grainy photo of me playing <em>Let It Be</em> on banjo: </p>
7375 <p><span
7376 class="gatsby-resp-image-wrapper"
7377 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; "
7378 >
7379 <a
7380 class="gatsby-resp-image-link"
7381 href="/static/a073f24e876ae150e393ddc9865a39ba/066f9/ch.jpg"
7382 style="display: block"
7383 target="_blank"
7384 rel="noopener"
7385 >
7386 <span
7387 class="gatsby-resp-image-background-image"
7388 style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMEBf/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAc9aSMzai1C3njpj/8QAGxAAAwEBAAMAAAAAAAAAAAAAAAECEQMSFCH/2gAIAQEAAQUCc4XzSgvKH9PUZxiWYuZ5Pf/EABYRAAMAAAAAAAAAAAAAAAAAAAERIP/aAAgBAwEBPwFiP//EABcRAAMBAAAAAAAAAAAAAAAAAAEQEkH/2gAIAQIBAT8BkrAv/8QAGxAAAgMAAwAAAAAAAAAAAAAAAAECEBEiM3H/2gAIAQEABj8CFJVgoHZno21pxr//xAAcEAEAAwEAAwEAAAAAAAAAAAABABEhMUFRYXH/2gAIAQEAAT8hQbHJrd2UwfM7DQffb5FdPx6mizmxIo2+viKJW37P/9oADAMBAAIAAwAAABDULwH/xAAYEQEBAAMAAAAAAAAAAAAAAAABABARMf/aAAgBAwEBPxAARtR1x//EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAgEBPxDTK1RH/8QAHRABAAMAAwADAAAAAAAAAAAAAQARITFBUYGh0f/aAAgBAQABPxBxQGuX2L7WC3vOvmNnJNWvYGo5p0LcoOj8lKAp7/SIAWBNAUOEHGWBoh8j47m3Sz//2Q=='); background-size: cover; display: block;"
7389 ></span>
7390 <img
7391 class="gatsby-resp-image-image"
7392 alt="charlie"
7393 title="charlie"
7394 src="/static/a073f24e876ae150e393ddc9865a39ba/066f9/ch.jpg"
7395 srcset="/static/a073f24e876ae150e393ddc9865a39ba/d2f63/ch.jpg 163w,
7396 /static/a073f24e876ae150e393ddc9865a39ba/c989d/ch.jpg 325w,
7397 /static/a073f24e876ae150e393ddc9865a39ba/066f9/ch.jpg 400w"
7398 sizes="(max-width: 400px) 100vw, 400px"
7399 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
7400 loading="lazy"
7401 />
7402 </a>
7403 </span></p>
7404 <p>I'm also in the middle of <del>writing</del> <del>editing</del> re-editing a novel about robots. If you like robots and adventures and being a kid and summer reading and box fans, then this could be the book for you!</p>
7405 <h3>Elsewhere on the Internet</h3>
7406 <ul>
7407 <li><a href="https://twitter.com/whatrocks">Twitter</a></li>
7408 <li><a href="https://twitch.tv/what_rocks">Twitch</a></li>
7409 <li><a href="https://www.youtube.com/channel/UCqk3WloxX7Ya5bYSqYNA2Lg">YouTube</a></li>
7410 <li><a href="https://github.com/whatrocks">GitHub</a></li>
7411 <li><a href="https://instagram.com/whatrocks">Instagram</a></li>
7412 <li><a href="https://www.goodreads.com/whatrocks">Goodreads</a></li>
7413 <li><a href="https://www.linkedin.com/in/charlieharrington">LinkedIn</a></li>
7414 </ul>
7415 <p>Thank you for visiting my site.</p>
7416