<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Josh Thompson</title>
 <link href="https://josh.works/atom.xml" rel="self"/>
 <link href="https://josh.works/"/>
 <updated>2026-04-06T01:09:45+00:00</updated>
 <id>https://josh.works</id>
 <author>
   <name>Josh Thompson</name>
   <email>joshthompson@hey.com</email>
 </author>

 
 <entry>
   <title>Continuos Glucose Monitors (part 2)</title>
   <link href="https://josh.works/cgm-part-2"/>
   <updated>2026-03-12T13:00:00+00:00</updated>
   <id>https://josh.works/continuous-glucose-monitors-part-2</id>
   <content type="html">&lt;p&gt;About a year ago, I wrote &lt;a href=&quot;/cgm&quot;&gt;this post about continuous glucose monitors&lt;/a&gt;, that’s sorta ‘part 1’ of these two parts.&lt;/p&gt;

&lt;p&gt;Since then, and parallel to this most recent time with the sensor, I’ve encountered improvements to the ecosystem. The sensor technology is way better, as is the app/rendering of the data.&lt;/p&gt;

&lt;h2 id=&quot;the-long-story-and-comparison-between-the-new-system-and-the-old&quot;&gt;The long story and comparison between the new system and the old&lt;/h2&gt;

&lt;p&gt;the technology has gotten &lt;em&gt;way better&lt;/em&gt; and now costs $50/sensor instead of the $100/sensor it was as recently as a year ago, and I’ve updated my mental models in this space. It was time for an update on that post. Here it is.&lt;/p&gt;

&lt;p&gt;My disappointment with the original implementation of the CGM device was that it was difficult to obtain and expensive, at $100 per two-week-long sensor, the sensor stored only a few hours of data on itself and needed frequent syncing, and the syncing was delicate. The phones NFC reader had to be almost exactly on the sensor itself. The apps for viewing the data were clunky and slow as well. There were two of them.&lt;/p&gt;

&lt;p&gt;That’s all gone now! The default Amazon device is finally good enough! &lt;a href=&quot;https://www.amazon.com/dp/B0DRVD8TH8?ref=nb_sb_ss_w_as-reorder_k0_1_5&amp;amp;amp=&amp;amp;crid=2BD9SVPN24QS1&amp;amp;amp=&amp;amp;sprefix=lingo&quot;&gt;Lingo Continuous Glucose Monitor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I also don’t have diabetes, and don’t have any warnings signs of pre diabetes or ‘metabolic syndrome’. I’m simply an intensely curious person.&lt;/p&gt;

&lt;p&gt;The last time I checked the ecosystem for continuous glucose monitors, the sensors were still costing $100 per sensor, which lasted for two weeks. Wildly expensive, for something that doesn’t have too much going on inside of it. The actual cost to manufacture the sensor must be low numbers of dollars, to perhaps maybe even less than a dollar per sensor, at a certain scale of production.&lt;/p&gt;

&lt;p&gt;Anyway, &lt;a href=&quot;https://www.goodreads.com/book/show/41725763-how-to-hide-an-empire&quot;&gt;in the greater united states&lt;/a&gt; the price is now down to $53 per two week sensor, and &lt;a href=&quot;https://www.amazon.com/dp/B0DRVD8TH8?ref=nb_sb_ss_w_as-reorder_k0_1_5&amp;amp;amp=&amp;amp;crid=2BD9SVPN24QS1&amp;amp;amp=&amp;amp;sprefix=lingo&quot;&gt;is finally available via Amazon&lt;/a&gt;, instead of jumping through insurance-related hoops.&lt;/p&gt;

&lt;h3 id=&quot;improvements-in-the-sensorapp&quot;&gt;improvements in the sensor/app&lt;/h3&gt;

&lt;p&gt;The sensor collects the data, the app displays it. The old sensor had a crappy app, and allowed for a brittle and slow third-party integration so the data could get off the ‘walled garden’ of the company that produced the sensor, and into a usable app. The integration was so slow I’d mostly use the default app, even though it was pretty bad.&lt;/p&gt;

&lt;p&gt;Now the default app has a better UI than the third party app I used before, and the data syncs immediately. The device uses bluetooth to talk to the phone. The old CGM used near-field communication (the same technology for a cell phone’s ‘tap to pay’ feature. I had to tap my phone against the CGM to read it)&lt;/p&gt;

&lt;p&gt;Now, because the device uses bluetooth, I no longer have to tap my phone to my upper arm to read the data. I open the app, and it pulls the data in in just a few seconds.&lt;/p&gt;

&lt;p&gt;The app supports meal logging and exercise logging. (when one is exercising, often enough blood glucose goes up. Muscles are requesting energy, the liver responds by dumping a little bit of the 150 grams of glycogen it stores into the blood stream as glucose.)&lt;/p&gt;

&lt;p&gt;The app is opinionated, and is designed f with diabetes, and labels all spikes in glucose as potentially troubling - if you log exercise it won’t count the rise as a negative thing. If it’s food-related, it counts the rise as a bad thing.&lt;/p&gt;

&lt;p&gt;When I eat low-carb, no-sugar meals (which is my default meal) it’s sorta uncanny to see my blood sugar change &lt;em&gt;not at all&lt;/em&gt; compared to the giant rise and eventual fall in my blood sugar after eating something carb-y and/or sugary.&lt;/p&gt;

&lt;h3 id=&quot;how-much-glucose-is-in-a-human-body-anyway&quot;&gt;How much glucose is in a human body anyway?&lt;/h3&gt;

&lt;p&gt;At one point I was trying to figure out how much glucose &lt;em&gt;was&lt;/em&gt; in my body anyway. Here’s my math, I was surprised at how small the actual figure was.&lt;/p&gt;

&lt;p&gt;Supposedly, people who weigh what I do have about 4.5 liters of blood in their body. Imagine four 1 liter bottles side by side.&lt;/p&gt;

&lt;p&gt;normal blood glucose readings are above 70mg/dL and below 140 mg/dL&lt;/p&gt;

&lt;p&gt;if we were to convert those readings to grams per liter, what would it be?&lt;/p&gt;

&lt;p&gt;How much sugar would i add to each liter of water, before it has the same sweetness level is normal in blood?&lt;/p&gt;

&lt;p&gt;Does 7 gram per liter sound right? It sounded plausible to me - 7 grams of sugar mixed into a liter of water would make it perceivably sweet. it couldn’t be 70 grams of glucose per liter of blood.&lt;/p&gt;

&lt;p&gt;What about .7 grams of glucose per liter of blood?&lt;/p&gt;

&lt;p&gt;TURNS OUT THAT IS THE CONVERSION!&lt;/p&gt;

&lt;p&gt;so my entire circulating supply of blood, when the reading is on the lower side, contains 3.15 grams of glucose. And at the higher side, contains 6.3 grams of glucose. That’s wild to me. That figure is so much less than I expected.&lt;/p&gt;

&lt;p&gt;I use a food scale for brewing coffee and baking, so I know how small 5 grams of something is. That’s how much baking soda I’ll put in a single loaf of banana bread. I might put 70 grams of brown sugar into that loaf.&lt;/p&gt;

&lt;p&gt;so, when my blood glucose is on the lower side of things, at .7 gram of glucose per liter of blood, with 4.5 liters of blood, I’d have 3.15 &lt;em&gt;grams&lt;/em&gt; of glucose, in my entire blood stream.&lt;/p&gt;

&lt;p&gt;A high level of glucose is 140mg/dL, or 1.4 grams of glucose per liter of blood.&lt;/p&gt;

&lt;p&gt;My whole blood stream would be containing about 6.3 grams of glucose, max. I notice that this is less than I expected, and I’m sorta impressed with how quickly perhaps my body can use what’s in the blood stream, and can get more glucose into it.&lt;/p&gt;

&lt;p&gt;Now I’m more impressed with my body’s ability to metabolize carbs and sugar than I was before. I was sorta off by a factor of 5 or 10, in my mental model for how this worked in my body. Whoops. I’m also impressed at my body’s ability to manage digestion in such a way, that even when I eat tons of sweet and carby things, the blood sugar doesn’t go through the roof.&lt;/p&gt;

&lt;h2 id=&quot;giant-qualifications-about-health-and-eating&quot;&gt;Giant qualifications about health and eating&lt;/h2&gt;

&lt;p&gt;Supremacy and purity culture/abstinence goes together. I talk a lot about food, but I don’t abstain from anything (including sex! but also food!) sorta ever. I’d rather feel extremely nourished, and when it comes to food, I do. When I talk about fasting or fasting essentialism stuff, it’s from a place of satiation and curiosity, sorta a sense of &lt;em&gt;wow, I’m shocked to not yet feel hunger, how convenient all the other things I can do with my time/life/energy…&lt;/em&gt; sorta way. Not suffering. This concept is why I hate the concept of ‘counting calories’, either in or out. More on that another time.&lt;/p&gt;

&lt;p&gt;I also try pretty hard to avoid anything that feels too eating-disorder adjacent. For fun, I read a memoir from someone with an eating disorder, to see if my relationship with food seemed sufficiently different than the one modeled in the book. Indeed, my suspicion/hope is satisfied, it doesn’t seem like an eating disorder.&lt;/p&gt;

&lt;p&gt;It’s simply an idiosyncratic, adaptable/flexible/consistent form of feeding myself, alternating between periods of not eating, interspersed mostly with eating really nice, healthy meals.&lt;/p&gt;

&lt;p&gt;I mix in a bit of ‘working out’. Same as how I sorta hate american hunting culture, I sorta hate gym culture.&lt;/p&gt;

&lt;p&gt;anyway… I’ve been freaking loving &lt;a href=&quot;/isometric-deadlift-holds&quot;&gt;these “isometric bar holds” I’ve been doing&lt;/a&gt;. That’s part 1, and I have a part 2 soon to land. It’s been huge, for me, and a bunch of friends have tried these lifts with me, and they give pretty good reviews.&lt;/p&gt;

&lt;h2 id=&quot;mixing-it-all-together---slightly-timing-meals-and-eating-plant-fat--mushrooms--cruciferous-stuff&quot;&gt;mixing it all together - slightly timing meals, and eating plant fat + mushrooms + cruciferous stuff&lt;/h2&gt;

&lt;p&gt;The original thesis was mostly that intermittent fasting is cool (like skipping breakfast) and otherwise model sugar as to be avoided and bread-type-things as overall delicious but best avoided. Fat, especially olive oil, I treat as a health food. The more the better.&lt;/p&gt;

&lt;p&gt;I hope we all add at least 10-15 g of olive oil to every meal for the rest of our lives.&lt;/p&gt;

&lt;p&gt;if there’s enough fat, and/or glucose isn’t extremely plentiful/overly-saturating, eventually the body burns through some glucose stores (seemingly mostly in the liver, a few hundred grams of it) and then turns on this whole cool-as-heck freaking ‘energy generation via ketone bodies’ thing.&lt;/p&gt;

&lt;p&gt;the tl;dr is the body CAN make glucose out of fat, and can metabolize fat directly for energy.&lt;/p&gt;

&lt;p&gt;The liver can make molecules out of fat (it can also make glucose out of fat), and some of these molecules are called ‘ketones’.&lt;/p&gt;

&lt;p&gt;and then mitochondria, which usually use glucose to generate energy can also generate energy via these ketone bodies.&lt;/p&gt;

&lt;p&gt;There’s urine tests one can use to measure ketones, or breath ketone detectors, or blood ketone detectors. All look at different molecules, but in all cases nearly levels of any of the looked-for molecules count as ‘being in ketosis’&lt;/p&gt;

&lt;p&gt;Mid levels of ketone readings, in the blood, is like .4 grams per liter, once that system is in operation. Close in amount to the amount of glucose that is in the blood.&lt;/p&gt;

&lt;p&gt;And it’s not ‘glucose OR ketones’, it’s always ‘glucose AND ketones’. There simply will not be any ketones made by the liver until the glucose levels stay low for a long enough time. Then the liver begins to make ketone bodies, along with glucose.&lt;/p&gt;

&lt;h2 id=&quot;a-reluctant-book-recommendation-brain-energy&quot;&gt;A reluctant book recommendation: Brain Energy&lt;/h2&gt;

&lt;p&gt;I encountered a few more books. Turns out the brain functions pretty differently in a high/medium sugar environment vs. low-sugar and ketones environment.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/61129785-brain-energy&quot;&gt;Brain Energy&lt;/a&gt; by Christopher Palmer was… adequate. I sorta hate books written by western doctors, usually. They seem patronizing and self-aggrandizing, but maybe that’s me projecting my own least favorite parts of myself onto the author. lol.&lt;/p&gt;

&lt;p&gt;The book &lt;a href=&quot;https://www.goodreads.com/book/show/17333302-grain-brain&quot;&gt;Grain Brain&lt;/a&gt; was interesting enough to justify renting it from the library and listening to the audiobook. I dislike something that seems to be common among books written by medical professionals. It seems nakedly condescending, and paternalistic, at times. alas, still worth sifting through. The focus on the brain was distinctive. After reading it, I began to appreciate that my brain is like three pounds of pure fat, and my spinal cord and the main parts of the 11 or 22 cranial nerves is probably most of another pound of fat.&lt;/p&gt;

&lt;p&gt;Another splash of olive oil. Some coconut oil, too. Those are the two plant fats I eat lots of.&lt;/p&gt;

&lt;h2 id=&quot;crucial-point-of-distinction-it-can-be-done-without-meat&quot;&gt;Crucial point of distinction: it can be done without meat&lt;/h2&gt;

&lt;p&gt;Nearly every book I’ll link to, in this piece, and in most books one encounters about a low-carb high-fat consumption pattern, seems to take as a given that meat can or should be consumed, daily, or in every single meal, and the authors (maybe they’re too propagandized by the american agricultural industry) cannot bring themselves to even mention the possibility of this thing being done with zero or very low amounts of meat. Some of the books seriously advocate for the ‘carnivore diet’, which is mostly eating pure meat.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;sidebar: after originally writing these words I sorted out what ‘glutamate’ was, and how interesting it is now when I notice that some cancer cells are known to be able to ferment glutamate IF glucose isn’t available.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;almost&lt;/em&gt; don’t eat any meat. I do sometimes eat some fish. (salmon or sardines, very occasionally. Certainly at least once a month, never close to daily)&lt;/p&gt;

&lt;p&gt;Mushrooms are a complete protein - every essential amino acid is available via mushrooms.&lt;/p&gt;

&lt;p&gt;The paper &lt;a href=&quot;https://www.researchgate.net/publication/318622070_Edible_mushrooms_a_potential_source_of_essential_amino_acids_glucans_and_minerals&quot;&gt;Edible mushrooms: A potential source of essential amino acids, glucans and minerals. Int. J. Food Sci. Technol. &lt;/a&gt; could be an interesting read. It was for me.&lt;/p&gt;

&lt;p&gt;So, a few years ago, I started ensuring mushrooms are present in my diet regularly, as consistently as some people might eat meat, and I think with a similar sense of savory nourishment. &lt;a href=&quot;/mushroom-foraging-in-the-park&quot;&gt;I literally tripped over the &lt;em&gt;agaricus bisporus&lt;/em&gt; mushrooms at a local park&lt;/a&gt;, and have since then been picking all my mushrooms from there and I eat them regularly. I’ve foraged dozens of pounds of mushrooms from the park, now.&lt;/p&gt;

&lt;p&gt;But before foraging them from the park, I’d always have mushrooms on hand from a local grocery store, and would add them to my meal, described below.&lt;/p&gt;

&lt;h3 id=&quot;autophagy&quot;&gt;Autophagy&lt;/h3&gt;

&lt;p&gt;The body is always taking old cells apart for parts, and rebuilding structures as needed. Some cell types (epethelial cells) regenerate/renew relatively quickly, lasting for just a few days or weeks, and others turn over slowly, lasting for months.&lt;/p&gt;

&lt;p&gt;‘Autophagy’ is the sciency term for this. The process is determined by mitochondria. The cell doesn’t decide it’s time for itself to die, &lt;em&gt;mitochondria&lt;/em&gt; decide it’s time for the cell to die, and basically induce a suicide for the cell. (the book, &lt;a href=&quot;&quot;&gt;power, sex, and suicide&lt;/a&gt; is all about mitochondria and their rather interesting relationship to the cells they operate within and around)&lt;/p&gt;

&lt;p&gt;healthy mitochondria are hella smart, and it’s very very nice for the body to do some autophogy. Fasting and fasting-mimicking nutrition patterns encourage autophagy. The cool thing is, it seems mitochondria are smart enough to consume to unhealthiest parts of the body. So, one can sorta replace the oldest/most-worn-out parts of oneself, if one is having lots of autophagy going on.&lt;/p&gt;

&lt;p&gt;Augophagy is low when glucose levels are high. Atophagy is high when glucose levels are low and ketone bodies are high.&lt;/p&gt;

&lt;h4 id=&quot;meat-is-wildly-over-consumed&quot;&gt;Meat is wildly over-consumed&lt;/h4&gt;

&lt;p&gt;Something that annoys me a little in the ketosis-discussing books is how the authors (or posters online) seem to all hold oddly strong beliefs about the “obvious” need for nearly daily consumption of meat!&lt;/p&gt;

&lt;p&gt;I find this super disappointing. It seems possible that meat is not bad for you. Yet the consumption of factory-raised-and-slaughtered animal products, the scale at which it’s happening, and the legit concerns about the actual product, even if one had no ethical qualms about the animal slaughter itself… i remember when I was eating meat regularly and couldn’t imagine stopping eating it. Bacon was in my daily omelette, I didn’t think I could give it up. Then I read &lt;a href=&quot;https://www.goodreads.com/book/show/6604712-eating-animals&quot;&gt;eating animals&lt;/a&gt; and that’s basically the last time I ate meat. I have had a few bites of meat here and there in the decade that’s elapsed since I read the book.&lt;/p&gt;

&lt;p&gt;I’m certainly not a vegan.&lt;/p&gt;

&lt;p&gt;I eat eggs, so many eggs, almost never less than three per day, and I put heavy cream in my coffee, usually, and sometimes eat cheese, and I bake with butter. It’s been almost ten years since I’ve bought meat in a grocery store and taken it home to cook, but it’s been twenty years since I’ve not eaten at least three eggs every single day, except for rare days when I’m fasting. I keep dancing around the idea of eliminating eggs from my consumption, but have not found a way yet.&lt;/p&gt;

&lt;p&gt;I now think it probable that eating a lot of meat is unhealthy. Drinking milk seems obviously problematic, for the same reasons as meat, and maybe some extra ones as well. (animals when drinking milk in normal states are in a period of growth, so the rich hormone profile of animal milk, reasonable for babies, makes less sense for adults. Milk to me is sorta carby, too. Anything that ends in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-ose&lt;/code&gt; is a sugar. Glucose, fructose, lactose)&lt;/p&gt;

&lt;p&gt;So, if one takes meat and most dairy away, and if one treats grains like bread and rice as unhealthy and best avoided - is there even anything left to eat?&lt;/p&gt;

&lt;p&gt;yes. endless varieties of vegetables, mushrooms, eggs, and an abundance of olive oil.&lt;/p&gt;

&lt;p&gt;So, that’s what I eat, nearly exclusively. For things to taste ‘good’ vs. bland (I grew up in a white peoples cooking culture - bland and unseasoned) I use lots of spices. I keep a big bag of ginger and garlic nearby - every meal gets a little of that, diced. Spicy peppers. Salt &amp;amp; pepper, of course, and I’ve lately been spicing the meal with garam masala, curry, tumeric, cumin, and more. I’ll splash some lemon juice and scallions over the whole thing when plating it, and the food is so good that even now, after making variations of this meal hundreds of times, it is still remarkable to me how good it tastes.&lt;/p&gt;

&lt;h4 id=&quot;on-meat--protein--gaining-muscle&quot;&gt;On meat &amp;amp; protein &amp;amp; ‘gaining muscle’&lt;/h4&gt;

&lt;p&gt;sometimes I’m a bit angry when I’m penning some words, if it’s not obvious.&lt;/p&gt;

&lt;p&gt;there is something in gym culture that is distasteful to me. Seems like ‘getting big muscles’ is the presumed good and ideal outcome of nearly all exercise? At least from one POV. There’s people who add tons of protein powder to every meal. There’s things floating around that says someone “should” eat 1 gram of protein per pound of lean body mass, or per kg of lean body mass. I’ve never counted calories and never counted grams of protein. When I do count up my regular protein consumption, it works out to way less than half the ‘recommended’ amount of protein. I rock climb, and would gladly accept a lower weight, if it didn’t come with any strength penalty, or hunger. No meat, no protein powder, and I’m doing just fine, though I must mention I don’t consider myself to be particularly good at rock climbing.&lt;/p&gt;

&lt;p&gt;even a gram of protein per KG of lean body mass is wild, to me. No one’s body is simply adding muscle to the frame because there’s extra protein in the system.&lt;/p&gt;

&lt;p&gt;I simply wanna name that, because I’ve been seeing a comical amount of new muscle lately with these isometric bar holds, for the first time in my life. Small amounts of muscle, small amounts of protein, small amounts of high-quality exercise-adjacent stimulus.&lt;/p&gt;

&lt;h3 id=&quot;calories-incalories-out&quot;&gt;Calories in/Calories out&lt;/h3&gt;

&lt;p&gt;I hold the Calories In/Calories Out model, for what is implied on both the inputs side, and energy expenditure side. Literally never in my life have I looked at the calory count on a food package. literally all I look at is the quantity of carbs.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;But it’s physics …&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;say the CI/CO people.&lt;/p&gt;

&lt;p&gt;I also don’t know what it means to ‘burn a calorie’. Like, whatever is meant when someone says “walking burns so and so calories.” or “i ate a &lt;bad thing=&quot;&quot;&gt;, so now I have to &amp;lt;&apos;exercise&apos; a certain amount&amp;gt;.&quot;&lt;/bad&gt;&lt;/p&gt;

&lt;p&gt;I think that mental model is unhelpful at best.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The body manages itself pretty well. weight gain is driven by insulin levels. If insulin is stuck in the system, cells that can store fat, will store fat. If insulin is low, the body can access energy in normal ways, including metabolizing fat that already exists in the system. If insulin is kept high, eventually ‘insulin resistance’ happens, all sorts of other troublesome effects happen.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;‘Weight gain’ is extremely NOT related to ‘eating more calories than one expends’. &lt;a href=&quot;https://www.goodreads.com/book/show/29874881-the-case-against-sugar?ref=rae_1&quot;&gt;The Case Against Sugar&lt;/a&gt; goes through the stories of so many different people groups who encountered industrialized food systems, even into the 1950s. Sugar/carbs causes the blood glucose levels to rise, and eventually insulin gets secreted to bring the glucose back down, but if more and more stuff is in the system resulting in insulin needing to stay up, bad things happen.&lt;/p&gt;

&lt;p&gt;Sustained, ‘chronic’ reliance upon insulin leads straight to &lt;a href=&quot;https://en.wikipedia.org/wiki/Metabolic_syndrome&quot;&gt;metabolic syndrome&lt;/a&gt;. Metabolic syndrome is the same as insulin resistance, is the same as pre-diabetes.&lt;/p&gt;

&lt;p&gt;Fasting will very, very quickly bring back insulin sensitivity, if it’s been absent. “exercise” cannot address the issues of elevated levels of insulin, except for a bit of movement after eating, maybe?&lt;/p&gt;

&lt;p&gt;I use my glucose sensor, a low carb meal + a five minutes of walking sometims around seems to let the blood sugar levels stay completely flat. Even if I don’t walk around at all, after this ‘sorta weird’ meal I usually eat, there’s zero bump to blood sugar, in a way that I maybe seems surprising. It was to me, at least.&lt;/p&gt;

&lt;h3 id=&quot;sidebar-on-oral-health&quot;&gt;Sidebar on Oral Health&lt;/h3&gt;

&lt;p&gt;This whole thing is talking about food, and digestion. The gut is pretty cool. (I really liked &lt;a href=&quot;https://www.goodreads.com/book/show/23013953-gut&quot;&gt;Gut: The Inside Story of Our Body’s Most Underrated Organ&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Part of oral health is keeping the mouth clean and inhospitable to bacteria while letting the mouth do its own thing.&lt;/p&gt;

&lt;p&gt;Fasting and/or no-sugar eating seems obviously gentle on the teeth, compared to using the mouth constantly.&lt;/p&gt;

&lt;p&gt;I stumbled across a thing called &lt;a href=&quot;https://en.wikipedia.org/wiki/Oil_pulling&quot;&gt;oil pulling&lt;/a&gt; once. I saw that coconut oil was one of the suggested oils.&lt;/p&gt;

&lt;p&gt;I already think of coconut oil as nearly pure ketones. The story goes:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;MCT (medium chain triglycerides) Oil is really expensive and fancy ‘pure liquid ketones’, supposedly.&lt;/p&gt;

  &lt;p&gt;Coconut oil has a lot of the biological precursors of those ketone-specific form of MCTs, and is antibacterial, and great for the skin, lips, body anyway.&lt;/p&gt;

  &lt;p&gt;It seems that most people who subscribe to oil pulling spit out the oil, but it cannot go into a sink because it contributes to clogged pipes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The solution that seemed easiest to me is to pick an oil I already consume and think highly of, and simply swish it around for a bit before eating it, so that’s now what I do with coconut oil, in a way that relates to oral health.&lt;/p&gt;

&lt;p&gt;I also found some gum with nano-hydroxyapatite, seems to help resurface the teeth, and floss, and have a home de-scaler so I can make sure plaque doesn’t build up around my permanent retainer.&lt;/p&gt;

&lt;p&gt;So far, my oral health has been nice in a way it’s historically not been, but the biggest intervention I made was &lt;a href=&quot;/tongue-tie&quot;&gt;fixing my tongue tie&lt;/a&gt; and my mouth no longer is open when I sleep or when I’m awake, so that alone could have more of an improving effect on my oral health than all over interventions combined.&lt;/p&gt;

&lt;h3 id=&quot;mitochondria-are-cool-as-heck&quot;&gt;Mitochondria are cool as heck&lt;/h3&gt;

&lt;p&gt;I was one of the folks with a certain mental model of mitochondria as sorta passive ‘energy making things’, left over from some high school biology textbook.&lt;/p&gt;

&lt;p&gt;I quite liked this book about cellular biology: &lt;a href=&quot;https://www.goodreads.com/book/show/39001.Power_Sex_Suicide&quot;&gt;Power, Sex, Suicide: Mitochondria and the Meaning of Life&lt;/a&gt;. Mitochondria as energy generation (including the aerobic oxygen+glucose pathway, the anerobic glucose fermentation pathway, and the pathway that uses ketones to generate energy, when there’s not glucose in the environment).&lt;/p&gt;

&lt;p&gt;The ‘suicide’ part of the title of that book refers to how mitochondria decide “for the cell” when the cell is to be deconstructed for parts. From the cell’s POV, it’s an induced suicide, from the mitochondria’s POV, it’s taking apart a structure for the bare materials and re-assembling a fresh or related or different structure. In american scientific english, that is called ‘autophagy’, and healthy/happy mitochondria do a lot of selective, necessary cell removal.&lt;/p&gt;

&lt;p&gt;Related, &lt;a href=&quot;https://www.goodreads.com/book/show/145624879-change-your-diet-change-your-mind&quot;&gt;Change Your Diet, Change Your Mind: A Powerful Plan to Improve Mood, Overcome Anxiety, and Protect Memory for a Lifetime of Optimal Mental Health&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hate the title. Again, american medical establishment paternalistic talk. And yet, worth sifting through. Talks about low-sugar brain function vs. high-sugar brain function. The former is quite a bit different and improved from the latter.&lt;/p&gt;

&lt;p&gt;I’d never conceived of a high-fat low-carb feeding pattern as a tool for ‘managing moods’ until pretty recently, but I encountered it on reddit (&lt;a href=&quot;https://www.reddit.com/r/keto/search/?q=mood&quot;&gt;example search&lt;/a&gt;), eventually found the above book, and was glad I did.&lt;/p&gt;

&lt;h3 id=&quot;other-reading&quot;&gt;Other Reading&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Just a few months ago, I found &lt;a href=&quot;https://www.goodreads.com/book/show/50355140-ravenous&quot;&gt;Ravenous: Otto Warburg, the Nazis, and the Search for the Cancer-Diet Connection&lt;/a&gt;. I’d long heard of Otto Warburg, in the history of cancer research for his encounter of that interesting feature of call cancer cells - that their normal cellular metabolic functioning is broken and they laboriously ferment blood sugar. The book is fascinating, Otto Warburg was a bit of an ass, and the vignettes about Hitler and other Nazis were top notch. (Lots of american purity culture is in common with some nazi norms around purity culture).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/52424370-tripping-over-the-truth&quot;&gt;Tripping over the Truth&lt;/a&gt; this book is nearly the origin story, I first read it many years ago now, and still think of it regularly. Seems reasonable now to say “cancer is a reasonable result of ‘everything is too sugary too much of the time’.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;that means resolving THAT issue, and keeping things low-sugar for a while and seeing what happens, works so well.&lt;/p&gt;

&lt;h3 id=&quot;note-on-fast-adjacent-things&quot;&gt;note on fast-adjacent things&lt;/h3&gt;

&lt;p&gt;I keep noticing a pattern when medical people talk about this low-glucose state, and I think they’re overstating aspects of it. But maybe the technology wasn’t available when they wrote these books - a good continuous glucose monitor + app integration became widely available only in 2024 or however long Lingo figured out how to get $50 two-week CGM sensors on Amazon available to anyone with a credit card.&lt;/p&gt;

&lt;p&gt;as I’ve read some of the books like finally finding an e-book copy of [Thomas Seyfried’s book]https://www.goodreads.com/book/show/13719723-cancer-as-a-metabolic-disease?from_search=true&amp;amp;from_srp=true&amp;amp;qid=B9UvTfpzvN&amp;amp;rank=1() that kept getting mentioned in other texts.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://thepiratebay.org/search.php?q=cancer+as+a+metabolic+disease&amp;amp;all=on&amp;amp;search=Pirate+Search&amp;amp;page=0&amp;amp;orderby=&quot;&gt;Cancer as a metabolic disease&lt;/a&gt;, libraries and had no luck getting a physical copy….&lt;/p&gt;

&lt;p&gt;I found the PDF on thepiratebay, and started skimming around the document. I notice that I sorta find myself eating in a way that could be called ‘keto-ish’ sometimes, was curious to see what they said about it all.&lt;/p&gt;

&lt;p&gt;For instance, they talk about caloric restriction a lot, but I don’t think that’s part of the solution at all. Turns out cancer can also or maybe ferment something besides &lt;em&gt;exclusively&lt;/em&gt; glucose - sometimes maybe it can do glutamate too? (if your next question is the same as mine, ‘what he hell is glutamate?’ and you google ‘sources of glutamate’, you’ll say “oh that makes sense”)&lt;/p&gt;

&lt;p&gt;If someone drops meat out of their diet, and backfills it with cruciferous vegetables, mushrooms, eggs, and olive oil &amp;amp; coconut oil, and occasional salmon &amp;amp; sardines (those fish in particular!), that person probably wouldn’t consider themselelves to be starving, but while keeping that pattern, their blood sugar will go to levels that some medical people think is ‘dangerously low’ (it’s not) and their body will go into pretty hefty ketosis.&lt;/p&gt;

&lt;p&gt;I think then there’s no sugar in the system for fermentating energy systems to ferment. Supposedly cancer cells can also ferment glutamine. I didn’t know what glutamine was and how it was different than glutamate, or what their relationships to anything else was. &lt;a href=&quot;https://www.reddit.com/r/medicalschoolanki/comments/biqjpd/comment/em4j76r/&quot;&gt;a med student on r/medicalschoolanki had a beautiful answer.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;anyway, knowing now what glutamate is, could you imagine a way to have less of it floating around, because just like glucose the body can apparently fabricate it itself? One would simply stop eating meat, if one was eating meat. Knowing that perhaps cells can ferment glutamine same as glucose, or that they can in at least some situations, was an interesting connection for me to make. I think there’s plenty of other good reasons to gnerally not eat meat, though. (except for, again, occasionally, sardines and salmon, or maybe fish overall but not very much. Certainly never pigs, dinosaur birds (chickens) or cows).&lt;/p&gt;

&lt;p&gt;So I think a crucial mistake ppl might make when thinking they’re avoiding sugar is not avoiding the glutamate. Model an ideal nutrition source as ‘not glucose’ and ‘not glutamate’, and drop meat out of one’s diet completely, and good things might happen. all the meat-based amino acids float around the blood stream perhaps, same as sugar?&lt;/p&gt;

&lt;p&gt;anyway…. I want to introduce ‘the meal’ and eating it once or twice-ish a day. And always eating once or twice-ish a day. If this meal is one of those regular meals, it might count as…. I donno. solves a lot of problems, in a pretty humble package, kinda. But still enough pretentiousness that it can be appreciated, and it’s delicious &lt;em&gt;enough&lt;/em&gt; and can be done in just a few steps. A preference for spending most of the time &lt;em&gt;not eating&lt;/em&gt; also gets fun. perhaps.&lt;/p&gt;

&lt;h2 id=&quot;visualizing-mitochondria&quot;&gt;Visualizing Mitochondria&lt;/h2&gt;

&lt;p&gt;I had always thought of mitochondria as sorta passive blobs that did biochemistry to generate ATP, which was used by the body to ‘do shit’.&lt;/p&gt;

&lt;p&gt;Turns out they are busy as hell.&lt;/p&gt;

&lt;p&gt;A book titled &lt;em&gt;Power, Sex, and Suicide&lt;/em&gt; really did it all for my brain when it comes to mitochondria. (The book is about mitochondria)&lt;/p&gt;

&lt;p&gt;For instance, cells do not want to ‘die’ and strenuously resist apoptosis until the very end. It’s mitochondria that get in there, and in a rather surgical and ruthless way, sorta eviscerate the cell from the inside out, &lt;em&gt;and then they leave the cell and carry on in other places&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I thought mitochondria were stuck inside of cells, floating, sorta like plastic balls floating on the surface of a pool.&lt;/p&gt;

&lt;p&gt;Turns out that isn’t the case &lt;em&gt;at all&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The first 3 of these videos were the first ones I saw and really surprised me. As I’ve since tried to re-find those videos from years ago, I’ve linked a few other short timelapse videos of mitochondrial movement/dynamics&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/shorts/DKEYnwUpeSg&quot;&gt;5 hr timelapse mitochondria, in like 6 seconds &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=YyFQ51bayws&quot;&gt; 30 minutes of Mitochondrial transport along microtubules, 10 second timelapse &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=bdkkVjWCJv8&quot;&gt;11 second video, mitochondria moving in a cell&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/shorts/r5gwVcfVOJU&quot;&gt;Mitochondrial transfer between pre-adipocytes?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=qxeUZT8lgu8&quot;&gt;mito movement (12 seconds)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/shorts/uFYIAdwqAac&quot;&gt;Golgi and Mitochondria Dynamics in Fibroblast Cells Under a Fluorescence Microscope&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/shorts/KrnTUO46d00&quot;&gt; Visualizing mitochondrial trafficking in neurons &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/shorts/CuNFjsFsudY&quot;&gt; Mitochondrial dynamics through cell division &lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;a-note-on-calories-incalories-out&quot;&gt;A note on calories in/calories out&lt;/h2&gt;

&lt;p&gt;this model, ‘calories in calories out’, is total bullshit. so many issus with the input side of calories, and in the ‘output’ side of calories.&lt;/p&gt;

&lt;p&gt;I AM SO SORRY I CANNOT HELP BUT LEAD WITH HOW I FEEL ABOUT IT! I’ll explain.&lt;/p&gt;

&lt;p&gt;Unfortunately, though, I never really ever thought CICO was true, it felt intuitively wrong to me my whole life.&lt;/p&gt;

&lt;p&gt;Even the last youtube video above, right after the timestamp it opens to, the creator says “too much nutrition”.&lt;/p&gt;

&lt;p&gt;It’s not that! It’s not too much energy or nutrition or over-feeding, it’s &lt;em&gt;too much glucose&lt;/em&gt; and ‘too much’ and ‘too long’.&lt;/p&gt;

&lt;p&gt;Body composition things is OBVIOUSLY a hormone issue! It’s so screamingly obvious and assumed as true by every other related domain that it’s wild that anyone still says CICO! If that were the case, hormone therapies of all kinds would not be an option! Weight gain and loss and muscle recomposition is such a known part of horomone therapies. They’re either the entire point, or they’re the entire obvious downside.&lt;/p&gt;

&lt;p&gt;if the body is soaked in sugar for too much of the time, insulin gets created and sent into the system in excessive quantities. Insulin has an effect on hormones of all sorts. Insulin resistance is synonymous with miss-calibrated everything else.&lt;/p&gt;

&lt;p&gt;“working hard” is a waste compared to “moving enough that the muscles are involved in drawing glucose out of the blood, &lt;em&gt;if there is 1) too much sugar in the blood, or 2) there is sugar in the digestive tract that needs to be metabolized and released into the bloodstream, _because there’s no where else for it to go&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Is it possible for the intestines to preferentially avoid digesting sugar and/or carbs? Can it be ‘spent’ in the gut biome, instead of going into the blood stream? If a dog were to eat shit post-sugary meal, would it taste sweeter than a regular shit?&lt;/p&gt;

&lt;p&gt;the body absolutely does not need any sort of steady input of nutrition, to maintain itself in a perfectly suitable fashion.&lt;/p&gt;

&lt;p&gt;‘calorie restricted’, ‘calorie deficit’ is the same attitude&lt;/p&gt;

&lt;h2 id=&quot;calorie-deficit-is-propaganda-counterproductive&quot;&gt;calorie deficit is propaganda, counterproductive&lt;/h2&gt;

&lt;p&gt;to think in the concept of calorie deficit, &lt;em&gt;or to try to retain it like an emotional pool noodle&lt;/em&gt; is harmful.&lt;/p&gt;

&lt;p&gt;source is everything. Fat is far better as fuel than sugar, which is obvious when you see both burn in a fire. fat will puddle, bubble, it obviously has a higher heat retention capacity, catagorically different than cellulose (woody stuff, bready stuff, wet sugar).&lt;/p&gt;

&lt;p&gt;That said, here’s some interesting videos I recently watched on mitocohndria.&lt;/p&gt;

&lt;p&gt;(I was looking for some videos I’d seen where mitochondria were ‘tagged’ with some thing and able to be seen moving around)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=KQBmtzT4VTU&quot;&gt;https://www.youtube.com/watch?v=KQBmtzT4VTU&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;mitochondria-generate-energy-inside-of-neurons--mitochondria-prefer-to-consume-ketone-bodies&quot;&gt;Mitochondria generate energy inside of neurons &amp;amp; mitochondria prefer to consume ‘ketone bodies’&lt;/h2&gt;

&lt;p&gt;ketone bodies are made by the liver, same sorta process as the liver makes glucose. (the liver makes glucose, it stores it, and releases into the blood stream if the muscles or whatever asks for it)&lt;/p&gt;

&lt;p&gt;ketone bodies theoretically generate like 10x molecules of ATP per input molecule than glucose molecule. (8 in, 30 out?) I don’t exactly remember. It’s the ‘krebs cycle’ or ‘cytric acid cycle’.&lt;/p&gt;

&lt;p&gt;The krebs cycle happens &lt;em&gt;inside&lt;/em&gt; of the physical structure of a mitochondria. That sorta grooved membrain thing. It’s a shape that maximizes internal surface area, same as the folding grooves of the brain.&lt;/p&gt;

&lt;p&gt;mitochondrial health and ‘brain/neuron health’ are 1:1. I did not know until like a year ago that there was any correlation between ketone bodies and mental/emotional stuff. &lt;em&gt;read that again&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;the book &lt;em&gt;power sex and suicide&lt;/em&gt; posits that mitichondria &lt;em&gt;are their own type of organizem&lt;/em&gt; and sorta colonized/invaded/helped regular cells, sorta an inside out version of the harmonious relationship between bacteria and plants in the “rhiozome”. (in the top layer of soil, plants deposit sun/water combined energy, it’s eaten by bacteria, bacteria create as a result certain metabolic products that is then taken up and used by the plant.)&lt;/p&gt;

&lt;p&gt;These systems could be considered to have their own independent existences, but happily exist with each other, wherever there’s metabolizing to be done.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/61129785-brain-energy&quot;&gt;brain energy&lt;/a&gt; was an adequate read.&lt;/p&gt;

&lt;p&gt;a huge tldr of all this is to just get a continuous blood glucose monitor, eat a high fat, low-carb, low protein meal next, and then begin successive 18 hour fasts. perhaps within one day (for me) but maybe more one will see one’s glucose levels stay pretty low, except during exercise or activity. climbing, walking, running, throwing a frisbee, walking stairs, etc.&lt;/p&gt;

&lt;p&gt;Though if I did those things after eating a big meal, and seeing my blood sugar go up, with a little activity, it would sorta dive right back to normal. At least until a little more of the meal was digested, then it might go up again.&lt;/p&gt;

&lt;p&gt;big part of the demand side for getting blood sugar down is ‘any process in the body requesting energy’ so if one walks long/fast enough (or, my favorite stim, walking up and down a few flights of stairs) for the body to request energy, one can see one’s blood sugar plummet, in the space of a few minutes.&lt;/p&gt;

&lt;p&gt;It’s like wringing out a sponge, how quickly the few nalgine bottles worth of blood in our body to pick up 4 grams of glucose, it gets pulled out of the blood and the digestive tract can dump another few grams of glucose, which it’ll do smartly and with reasonable timing, if you set it up well enough for success.&lt;/p&gt;

&lt;p&gt;more on that later&lt;/p&gt;

&lt;p&gt;(I can be fasted for one, two, three days, and my glucose levels stay pretty similar during the day to when I’m eating normal low-carb type shit. )&lt;/p&gt;

&lt;p&gt;in the space of a few minutes, if I do intense exercise, like hill sprints or climbing or lifting, or walking around for five minutes, or walking up and down the stairs in the six-floor building in which i live….&lt;/p&gt;

&lt;p&gt;while wearing a cgm, i can see blood sugar go up, then down, then up, then down, quickly, right after having a big meal of bread, or doughnuts, or pizza, or indian food buffet with naan, or this, or that, or whatever…&lt;/p&gt;

&lt;p&gt;so, it’s not ‘too much calories’. blood sugar &lt;em&gt;does not budge at all&lt;/em&gt; when I eat this meal.&lt;/p&gt;

&lt;p&gt;TODO: insert a few screenshots of Libre CGM data? this needs to be it’s own blog post.&lt;/p&gt;

&lt;p&gt;anyway, this meal is good, everyone loves it.&lt;/p&gt;

&lt;h2 id=&quot;-the-meal-&quot;&gt;✨ The Meal ✨&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;todo: make this its own page&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I have a meal that I eat basically every day. If I eat a meal that isn’t this meal, my other meal for the day will be this meal. I eat almost exclusively twice-ish a day. Sometimes less, sometimes more, never breakfast.&lt;/p&gt;

&lt;p&gt;TODO: Add a photo of the finished result?&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://docs.google.com/document/d/16FRfqSiJB9DxsnZ5B80AhdFZiMMUs5IC-IEqGoIhrTk/edit?usp=sharing&quot;&gt;Google doc of printable instructions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I like it because while I can cook it easily, I always make it in bulk and get a few meals out of a single session with the cutting board/cast iron skillet meal vibe.&lt;/p&gt;

&lt;p&gt;I note that it is something that in some communities is a big deal, or even &lt;em&gt;an impossibility&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It’s a ‘keto-friendly’ meal, functionally zero carbs or zero net carbs. This meal as eaten is both &lt;em&gt;deeply&lt;/em&gt; satiating and will cause not a single point increase in your blood sugar. It HATE counting calories and never have and never will, and i dislike the concept of ‘macros’, but this meal is zero carb, high fat, medium protein, zero meat, some eggs.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;i don’t eat meat&lt;/em&gt; which matters to me when I talk about keto things, because some keto communities eat wild, horrifying amounts of meat. Cows, pigs, chickens. I don’t eat those anymore. I do sometimes eat fish.&lt;/p&gt;

&lt;p&gt;But I can easily go weeks without eating any sort of meat, not even fish, and not miss it or think about it or feel that I am in any way nutrient deficient.&lt;/p&gt;

&lt;p&gt;I’ve cooked this meal or a version of this meal &lt;em&gt;every day for at least 12 years&lt;/em&gt;. I’ve cooked this meal in like 18 countries, many dozens of kitchens. It’s easy to grocery shop for, flexible based on if any produce is in the refrigerator and going bad, but can also be made out of vegetables that only slowly go bad.&lt;/p&gt;

&lt;p&gt;onions and carrots, for instance, will keep for a long time (weeks), and can be a perfect base of the meal. But it can also take spinach or any other ‘delicate’ vegetable.&lt;/p&gt;

&lt;p&gt;I cook it because I am dumb and lazy and am sometimes using unfamiliar kitchens. I am not dumb, but some people have &lt;em&gt;literally made fun of me&lt;/em&gt; for learning some of the things I’ve learned related to the kitchen, making fun of me for &lt;em&gt;not having already known something&lt;/em&gt;. what the fuck.&lt;/p&gt;

&lt;p&gt;for instance, mushrooms can be/want to be cooked ‘dry’ on a pan. No oil needed. Lots of veggies can accommodate this method.&lt;/p&gt;

&lt;p&gt;Also, if the pan is getting hot &lt;em&gt;or you want to steam the contents a bit&lt;/em&gt; you can add water to a hot pan while the food is cooking, and the temperature of the pan goes down, food sticks a bit less, and sometimes steam is created. I was 36, burning food to the bottom of a stainless steel pan in an unfamiliar kitchen, trying unsuccessfully to scrape burnt food off the bottom of that pan, when I learned this, and immediately found the obviousness of ‘add water to a pan’ breathtaking. I use it often when cooking, now, even in my cast iron, and love it for me.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://m.xkcd.com/1053/&quot;&gt;today’s 10,000&lt;/a&gt;, &lt;a href=&quot;https://www.explainxkcd.com/wiki/index.php/1053:_Ten_Thousand&quot;&gt;explanation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;it’s good as hell. I’ve gotten particularly good with it in the last year or so, but even the ‘basic’ version of this meal is delicious, and many others have reported as such to me.&lt;/p&gt;

&lt;p&gt;When I do my standard, current, at-home meal, it’s mouth wateringly good. And still, I cook it because it’s the fastest way of putting heat and food together and then shoveling the results into my mouth.&lt;/p&gt;

&lt;p&gt;People who know what they’re talking about have remarked on the speed and voracity with which I sometimes consume my food. The first time this was pointed out to me, in such a gentle and interesting way, I was instantly shocked that I’d never noticed it before. I’ve since gained lots of ‘mindfullness’ around food, or at least I can observe myself and have awareness when I’m deep into what seems to be pouring food into my body (and sometimes water) in a way that gives ‘camel’.&lt;/p&gt;

&lt;p&gt;todo: insert photo of the pan sitting one step away from where I type these words…&lt;/p&gt;

&lt;p&gt;I have a printable version of this ‘recipe’/instruction combination.&lt;/p&gt;

&lt;p&gt;I could/should include perhaps a timelapse video that shows the prep. It’s relatively quick, and I consider myself skillful with a chef’s knife and enjoy the chopping of the veggies and the prep of the meal.&lt;/p&gt;

&lt;p&gt;Because of a few decisions/tools/workflows, this meal is also for me easy to set up and easy to clean up. I can finish cooking with a cleaner workspace than what I start with, because most of the meal time is spent with the food sitting quietly &amp;amp; sauteeing, not needing active tending. It makes zero dirty pots and pans.&lt;/p&gt;

&lt;p&gt;side note, the convection cook top unit I use makes it &lt;em&gt;even easier&lt;/em&gt; to get this meal done quickly and effortlessly. It’ll maybe show up in the time lapse some day.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://docs.google.com/document/d/16FRfqSiJB9DxsnZ5B80AhdFZiMMUs5IC-IEqGoIhrTk/edit?usp=sharing&quot;&gt;Google doc of printable instructions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;interestingness is next to beauty, sorta. I think deliciousness is next to beauty, too, and this meal sometimes tastes delicious and interesting.&lt;/p&gt;

&lt;p&gt;Basically, as many of the first line with one or two items from the second line for bulk:&lt;/p&gt;

&lt;p&gt;mix as much of this as possible: garlic, ginger, tumeric, lemon juice. Salt, cumin. Mushrooms. Spiciest peppers possible, at least a little&lt;/p&gt;

&lt;p&gt;Fill volume of cooking container with one: Broccoli, cabbage, carrots, onions,&lt;/p&gt;

&lt;p&gt;Oil/fat: olive oil or coconut cream.&lt;/p&gt;

&lt;p&gt;Acid: lemon.&lt;/p&gt;

&lt;p&gt;Mix it all together, cook it up, add eggs, mix the eggs in somehow, cook it all through, serve it up. Top with green onions, squeeze a lemon slice over it if you can, and then pour a HEAVY drizzle of EVOO, maybe sriracha or something spicy. It’s a meal, satisfying as hell.&lt;/p&gt;

&lt;p&gt;I can eat this meal once a day and hardly even detect hunger in my body between meals.&lt;/p&gt;

&lt;p&gt;Cast Iron is crucial, and a &lt;a href=&quot;https://www.amazon.com/Dexter-Russell-CECOMINHK02900-Dexter-Pancake-Turner/dp/B0015R7P6O?crid=BZBJSFA39LVP&amp;amp;dib=eyJ2IjoiMSJ9.wlmVBOmcJUBDcuDVFTl4T6aBa0tlN9utgUbqrrAmg2fOBX0IUQxRZbQnG__kHlm8wg0l3nYIKIaV1IdAEb5pjaJQlJ-RzJ_vBIY9aWSsoBhDvlGkTjhm_68hy3JX_gceqvfx_qS03uW6JQnQvGufKSSA2Z95GVuSxssPiXMaj2VzL90Zs7QFUB6mEbdNo6Kor3qBVVY9gwbe4cFib6N_O0ZIIAWFmwT25Jya7DHPCA0.CoU5dzuHPZxaqFV28fuxnCCrvrihdJp6G--9lcrymyI&amp;amp;dib_tag=se&amp;amp;keywords=dexter+spatula&amp;amp;qid=1774025560&amp;amp;sprefix=dexter%2Caps%2C214&amp;amp;sr=8-1&quot;&gt;‘cookie turner’ spatula&lt;/a&gt;. This would mean there’s iron in a very healthy way.&lt;/p&gt;

&lt;p&gt;The point isn’t iron, it’s ease and effortlessness. I can scrape my pan clean with a metal spatchula if I want, i never have to put water on it to clean.&lt;/p&gt;

&lt;p&gt;It perhaps makes sense in the video timelapse… that I’ve not yet published. I’ve got some time lapses of chunks of this meal prep. Maybe I’ll just combine them all and link it here.&lt;/p&gt;

&lt;p&gt;i recently started adding fresh squeezed lemon to all sorts of things. And energy generation in the body is named the &lt;a href=&quot;https://en.wikipedia.org/wiki/Citric_acid_cycle&quot;&gt;citric acid cycle&lt;/a&gt;, so maybe the deliciousness relates to how useful it is to have in the body.&lt;/p&gt;

&lt;p&gt;Similar as the ‘lemon in lots of things’, I started wearing socks inside of my climbing shoes, virtually 100% of the time, from the first time I tried it. I never want to stick my bare feet in a climbing shoe again and it’s unlikely I ever will. &lt;em&gt;consider trying it with a sense of curiosity, if you can&lt;/em&gt;. I’m weird, but not for this. Thank you, person who introduced me to these things.&lt;/p&gt;

&lt;p&gt;Garlic, as much as I can get in a meal and in my life. I found &lt;a href=&quot;https://www.goodreads.com/book/show/334888.The_Healing_Power_of_Garlic?from_search=true&amp;amp;from_srp=true&amp;amp;qid=0vZevWyhIs&amp;amp;rank=1&quot;&gt;this delightful book&lt;/a&gt; in the library attached to the botanic gardens. I was already pro-garlic because of taste, and now I’m all the more pro-garlic.&lt;/p&gt;

&lt;p&gt;Garlic is a ‘natural antibiotic’, but unlike most normal antibiotics, it works on both &lt;a href=&quot;https://en.wikipedia.org/wiki/Mycobacterium&quot;&gt;gram positive&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Mycoplasma&quot;&gt;gram negative&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Gram-negative_bacteria&quot;&gt;bacteria&lt;/a&gt; cell wall types. penaccilin works on only one of those types of bacteria. something something all bacteria have cell walls that are either gram positive or gram negative, but it affects how they interact (or don’t interact) with traditional antibiotics.&lt;/p&gt;

&lt;p&gt;Super cool. Again, this book that I stumbled across was great. Garlic has been used sorta by everyone, across time, to do useful things for all sorts of life-related domains. &lt;a href=&quot;https://www.goodreads.com/book/show/334888.The_Healing_Power_of_Garlic?from_search=true&amp;amp;from_srp=true&amp;amp;qid=0vZevWyhIs&amp;amp;rank=1&quot;&gt;this 1996 book is a nice compendium of what is known in english about garlic, the chemical compounds within it, why they seem to do what they do&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;pulse-oximiter-blood-oxygen-level--breath-holding&quot;&gt;Pulse oximiter, blood oxygen level &amp;amp; breath holding&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;this could be it’s own article.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There’s an interesting little device one can get off amazon, it’s quite cheap, a fingertip pulse measuring device, it also detects blood oxygen levels.&lt;/p&gt;

&lt;p&gt;footnote? “technically something about oxygen carrying capacity of available total as detected in the capillary network of the fingertip”&lt;/p&gt;

&lt;p&gt;I got it around the same time that I started using a &lt;a href=&quot;https://getstamina.app/&quot;&gt;‘breathholding training’ app&lt;/a&gt;. I wanted to know what my pulse was, and this was a simple way to measure.&lt;/p&gt;

&lt;p&gt;So, I can clip this to my finger, and immediately see my pulse printed out, and the blood oxygen level.&lt;/p&gt;

&lt;p&gt;And, turns out that when doing breath holding training, the blood oxygen level sometimes does really interesting things, and I’ve not seen other people talk about this yet.&lt;/p&gt;

&lt;p&gt;I can watch my blood oxygen level change (or not change) as I hold my breath. Sometimes I’d be at the end of my breath, it felt like my body was screaming for me to take another breath, and my blood oxygen level would be close to the max value, 99 or 100%.&lt;/p&gt;

&lt;p&gt;I noticed this but it didn’t really mean anything of interest to me, for months.&lt;/p&gt;

&lt;p&gt;I can do some breath holding training, and do a ‘one rep max’ breath hold test, and always was able to do above two minutes, maybe close to three. with a little practice, I found myself easily doing three-something minutes.&lt;/p&gt;

&lt;p&gt;Sometimes during long breath holds, when my body was still, I’d see the blood oxygen level tick downward to the low 90s or 80s. Nothing too severe.&lt;/p&gt;

&lt;p&gt;And then a tiny realization clicked, it was based off observations of how I sometimes observed my blood oxygen level going down, and then DOWN QUITE A LOT! and then popping right back up within seconds once I started breathing again. I gained an appreciation for how quickly blood that was allowed to pick up oxygen would reach the tips of my finger, to be read by the blood oxygen level sensor.&lt;/p&gt;

&lt;p&gt;turns out the thing that makes you want to breath is buildup of CO2, not lowering blood oxygen levels. This was always something I knew academically, but I’d not had much experience with it.&lt;/p&gt;

&lt;p&gt;So, a few weeks ago, a new mental model of my own respiration and metabolic processes clicked into place. I’ll do deep breathing for at least 30 seconds before starting a breath hold - in my mind, I’m running blood that has some amount of CO2 in it through my lungs, and i’m draining it of CO2 faster than my body is placing CO2 back in the blood cells.&lt;/p&gt;

&lt;p&gt;I believe my body circulates my entire 4.5 liters of blood at least once a minute, so this deep breathing moves more CO2 out of my blood than normally would be displaced if I were not doing that deep breathing.&lt;/p&gt;

&lt;p&gt;Then, when I take a deep breath and hold it, I have much more space in my blood supply to store CO2, which is being generated, slowly, throughout the breath hold.&lt;/p&gt;

&lt;p&gt;This means I can hold my breath much longer before the same amount of ‘pressure to breath’ builds. And, consequentially, much more of the oxygen that is in my blood gets consumed, before I take another breath.&lt;/p&gt;

&lt;p&gt;The same day I had this realization, I did far and away the longest breath hold that I’d ever done - over four minutes. I was shocked! It’s so interesting.&lt;/p&gt;

&lt;p&gt;I also was able to see my blood oxygen level go far lower than I ever had before. At no point did I experience any sort of cognitive effect or any sort of loss of conciousness, but I was comforably holding my breath while watching the pulse oximiter show values in the 70s, and then even into the 60s.&lt;/p&gt;

&lt;p&gt;It always dips a few more points after I start breathing, so the lowest values I’ve ever seen are always a few seconds after I begin breathing. This time I even saw it dip down to 51% for a brief moment, and then a few breaths later it was back to 100%.&lt;/p&gt;

&lt;p&gt;It feels like a form of training, no different than sprint workouts or heavy isometrics or climbing - I am imagining that some aspect of my respiratory or circulatory system is getting ‘tuned up’ by this practice. I find it deeply regulating and peace-promoting.&lt;/p&gt;

&lt;p&gt;I use the ‘STAmina Apnea Trainer app’ for android. it’s free. There seems to be an iphone version too.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://getstamina.app/&quot;&gt;here’s the app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I always do the breath holding while lying in my bed or hammock, by the way. Zero interest in water, never will have any.&lt;/p&gt;

&lt;p&gt;I also sometimes am in deeper-than-usual ketosis, when doing the breath holding training, and that almost certainly extends how long I can hold my breath. I’ve not tested it very much, but maybe i’ll update this section with more on that sometime.&lt;/p&gt;

&lt;h2 id=&quot;ketone-bodies-whatever-the-heck-those-are&quot;&gt;‘ketone bodies’ whatever the heck those are&lt;/h2&gt;

&lt;p&gt;this is extra drafty, I’ve been curious about this all, and I’ve long ago occasionally used some ‘ketone urine test strips’ (like &lt;a href=&quot;https://www.amazon.com/KETO-MOJO-Ketosis-Ketogenic-Low-Carb-Extra-Long/dp/B088C3GF9T?crid=27076FUA1NDIJ&amp;amp;dib=eyJ2IjoiMSJ9.-SdF-9EZQsGtp2jJW0pKhc_RO-J8GChWkHDxnxkyPl47_K0Omd7Bhh1AcWD2RsONrFJqbRcuajhDKzHz5VvGhy5PpKJK-T95be1NDftbcWDjsZqWlhqVO75yjDTy_iV5ps7rq1KNJ5h_R5IDyjQv4GmjKIu6C8hZybzt_R7hAYIHeywLhPQUca4tuWsVkPq7kUmpsHcFpIwLKxA-kokOdanOYNHkOVcYMNNqJ3get7JKqiKmlAhYTZ8WsEzDeW6k0DAM6KR-4u4Cg43aonqHdE30uRVSFQF7H2Vr-HWKFVN9bfgCz1lJJCDKRNOjbt93mtgWiP7gUSa6n8KHLBBXU5iDpSVWowaWiJ5jPC8sOb8.GAhmfgpZizp8495-eG2GdXDS8Q86IsWCKpdndbIDN4U&amp;amp;dib_tag=se&amp;amp;keywords=ketostix&amp;amp;qid=1743438084&amp;amp;s=hpc&amp;amp;sprefix=ketosti%2Chpc%2C190&amp;amp;sr=1-5&quot;&gt;this on amazon, i don’t do affiliate anything fwiw)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and those are fine, whatever, but sorta hard to read, and usually I was sorta low, but way more often than I’d expected I was getting positive ketone measurements.&lt;/p&gt;

&lt;p&gt;also, I didn’t/don’t have too much of a mental model of how much is what, what it means. blah blah blah.&lt;/p&gt;

&lt;p&gt;Those are just a few dollars on Amazon, so just a few cents per test. But still not free.&lt;/p&gt;

&lt;p&gt;More expensive per test, but something that was more interesting to me was a blood ketone testing kit. It’s basically a blood sugar testing kit (finger prick, then measure with a disposable stick) which I’ve used in the past, prior to my first test with the continuous blood glucose monitor. I’d never had them both at the same time. Anyway, the first batch of those tests, I remember being surprised at how often my body was in slight ketois. .2 mmol/liter or .3 or .4, and ‘nutritional ketosis’, whatever that is, is generally considered by american medical people to begin at .5 mmol/liter. I’d be at/above that value quite often, too, when doing my normal nutritional pattern around ‘the meal’, I describe elsewhere.&lt;/p&gt;

&lt;p&gt;Anyway, that was a long time ago.&lt;/p&gt;

&lt;p&gt;More recently though has been a breath ketone measuring device! &lt;a href=&quot;https://www.amazon.com/KETO-MOJO-Ketosis-Ketogenic-Low-Carb-Extra-Long/dp/B088C3GF9T?crid=27076FUA1NDIJ&amp;amp;dib=eyJ2IjoiMSJ9.-SdF-9EZQsGtp2jJW0pKhc_RO-J8GChWkHDxnxkyPl47_K0Omd7Bhh1AcWD2RsONrFJqbRcuajhDKzHz5VvGhy5PpKJK-T95be1NDftbcWDjsZqWlhqVO75yjDTy_iV5ps7rq1KNJ5h_R5IDyjQv4GmjKIu6C8hZybzt_R7hAYIHeywLhPQUca4tuWsVkPq7kUmpsHcFpIwLKxA-kokOdanOYNHkOVcYMNNqJ3get7JKqiKmlAhYTZ8WsEzDeW6k0DAM6KR-4u4Cg43aonqHdE30uRVSFQF7H2Vr-HWKFVN9bfgCz1lJJCDKRNOjbt93mtgWiP7gUSa6n8KHLBBXU5iDpSVWowaWiJ5jPC8sOb8.GAhmfgpZizp8495-eG2GdXDS8Q86IsWCKpdndbIDN4U&amp;amp;dib_tag=se&amp;amp;keywords=ketostix&amp;amp;qid=1743438084&amp;amp;s=hpc&amp;amp;sprefix=ketosti%2Chpc%2C190&amp;amp;sr=1-5&quot;&gt;this is what I got&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s cost-per-use is &lt;em&gt;free&lt;/em&gt;, and I’ve always noticed and/or wondered about value changes around exercise, fasting, pseudo-fasting, binging-on-pizza-and-ice-cream or having regular or occasional foods like that.&lt;/p&gt;

&lt;p&gt;Sorta testing the Standard American Diet on myself sometimes, and also testing my normal/default eating pattern.&lt;/p&gt;

&lt;p&gt;the breath meter is super easy, way easier than a BLOOD PRICK of course, generates zero waste, is just battery powered. Perfect.&lt;/p&gt;

&lt;p&gt;But then I was like “what tf is this thing measuring”, and what is the possible relationship between the number this thing prints out, and metabolic processes inside my own body.&lt;/p&gt;

&lt;p&gt;I’ve so far seen plenty of readings as low as 1 for myself, including times that I had thought I wouldn’t be in any form of ketosis, and values of 4-6 WAY more frequently than I would have thought.&lt;/p&gt;

&lt;p&gt;It does read zero, as well, at reasonable times. I’ve also seen values as high as 46!!!&lt;/p&gt;

&lt;p&gt;I’m pretty healthy, I like how I eat, and it turns out I’m in ketosis way more than I ever thought I would be, and I think it’s a big deal.&lt;/p&gt;

&lt;p&gt;Basically, it’s easy, healthy, and I’m low-key advocating for more people to consider some of the same patterns. It’s a bit feral, unconventional, and even low-capitalism. My personal implementation of these norms are very interesting to me, and I’d have done more of this long ago if I knew some of what I know now.&lt;/p&gt;

&lt;p&gt;breath acetone is what the breath thing measures - acetone is one of the three main ‘ketone bodies’ (whatever the heck those are) the other one is what is measured in the urine test strip, and the third is measured in the blood.&lt;/p&gt;

&lt;p&gt;Turns out they all seem to sorta follow each other, but I don’t know how closely.&lt;/p&gt;

&lt;p&gt;breath meter -&amp;gt; acetate (might be/probably ‘downstream’ of being burned for energy)&lt;/p&gt;

&lt;p&gt;urine stick -&amp;gt; ACETOACETIC ACID (might be ‘upstream’ of being burned for energy)&lt;/p&gt;

&lt;p&gt;blood stick -&amp;gt;&lt;/p&gt;

&lt;p&gt;I sometimes have done all this experimentation while exercising, or various amounts of time since my last meal, or my last high-glucose meal. I now have an intuition for the answers to all these options.&lt;/p&gt;

&lt;p&gt;I seem to usually have positive values on the breath ketone meter, even at times I thought I wouldn’t. Sometimes the values are quite high, _even when I am consuming my normal eating patterns, which doesn’t set out to accomplish any of this kind of thing.&lt;/p&gt;

&lt;h2 id=&quot;more-lists-of-books-that-have-been-quite-interesting-to-me&quot;&gt;More lists of books that have been quite interesting to me&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/13719723-cancer-as-a-metabolic-disease?from_search=true&amp;amp;from_srp=true&amp;amp;qid=B9UvTfpzvN&amp;amp;rank=1&quot;&gt;Cancer as a Metabolic Disease: On the Origin, Management, and Prevention of Cancer&lt;/a&gt; I was able to find the PDF on the &lt;a href=&quot;https://thepiratebay.org/search.php?q=Cancer+as+a+Metabolic+Disease&amp;amp;all=on&amp;amp;search=Pirate+Search&amp;amp;page=0&amp;amp;orderby=&quot;&gt;peer to peer file sharing prot=ocol&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/39001.Power_Sex_Suicide&quot;&gt;Power, Sex, Suicide: Mitochondria and the Meaning of Life&lt;/a&gt; best cell biology book I’ve read. Dense, I was able to get it via the library’s interlibrary loan system, was exceptional, mitochondria have a sorta…. adversarial relationship with the cell. Seems like mitochondria developed independent/before cells, very interesting relationship between volume of mitochondria, density of them within cells, some biological power laws that are the energy equivalent of the size/volume power laws. And the book has a great name! which serves as an outline of the concepts: the three big divisions of what mitochondria as active organelles do is: 1) generate power in impressive and diverse ways, 2) drive and control the different sorts of functions and roles the cells create, like sexual bimorphism, and 3) if mitochondria decide the cell needs to die, even if the cell does not quite want to die (it does not) the mitochondria induce the cell to kill itself. It’s no more difficult to read then &lt;a href=&quot;/robert-moses&quot;&gt;the power broker/the story of robert moses&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
</content>
 </entry>
 
 <entry>
   <title>Demonstration Junction Repair on Downing in Denver</title>
   <link href="https://josh.works/demonstration-on-downing"/>
   <updated>2025-12-09T13:00:00+00:00</updated>
   <id>https://josh.works/cones-on-downing</id>
   <content type="html">&lt;p&gt;&lt;em&gt;author’s note:  This is a story about an demonstration I filmed. I demonstrated a proof-of-concept for ‘intersection repair’.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Lots/most intersections are broken in many ways. They don’t work very well, at least some of the time, for some of the users. Like anything broken, it can be repaired. I’ve got an interesting-to-me approach to repairing a broken intersection.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Traffic cones are the main tool, and I use those cones to shape and define the spaces for the cars.&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;on a recent warm saturday night I stumbled across of traffic cones, spread rather widely in a local neighborhood.&lt;/p&gt;

&lt;p&gt;Earlier in the week Silva Construction had been doing concrete work all around the area. &lt;strike&gt;I&apos;m not sure what they were doing, but they were scattered all about the neighborhood.&lt;/strike&gt; turns out they’re repairing broken sidewalk! I’ve wanted this to happen for so long, Silva Concrete is great! Not only did they informally sponsor this proof of concept, monday morning they showed up and used the cones to block of the concrete they were repairing. 🎉&lt;/p&gt;

&lt;p&gt;TODO: add link to photo album of the before/after treatment of Corona&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/on-coning&quot;&gt;I’ve done a lot with cones before, of course&lt;/a&gt;. Its come to be a refined process.&lt;/p&gt;

&lt;p&gt;There were many, many more traffic cones in the vicinity than I used. I set the cones up on the way to a local climbing gym, did a board session, checked in on them on the way home. Every cone was exactly where I placed it.&lt;/p&gt;

&lt;p&gt;Shout out Silva Concrete, for sure, for the cones.&lt;/p&gt;

&lt;p&gt;So, the next morning, sunday morning, I was at cheesman, and from the park, one can see down maybe six blocks of 10th ave, and I could see that even the next day, the cones remained.&lt;/p&gt;

&lt;p&gt;TODO link to photos down 10th from cheesman&lt;/p&gt;

&lt;p&gt;so I did the park thing, then walked from the park to corona, where I’d placed the cones the night before. I passed more cones, and dotted those into the road in spots that caused delination and a bit of attention to be attracted.&lt;/p&gt;

&lt;h2 id=&quot;timelapse-of-me-placing-the-cones--observations&quot;&gt;Timelapse of me placing the cones &amp;amp; observations&lt;/h2&gt;

&lt;p&gt;The treatment (moving the existing traffic cones from the adjacent curb to this particular pattern on the Downing &amp;amp; 10th junction) brought about many, many changes.&lt;/p&gt;

&lt;p&gt;Here’s a silent video. Literally. No audio, no commentary, and almost no editing. Thus, not necessarily a lot of story-telling.&lt;/p&gt;

&lt;p&gt;I just wanted to get a first pass up, as I make it more self-explaining I’ll update this section. Below the video I list some of the changes. The video is a 4 minute long, 4x timelapse of the junction.&lt;/p&gt;

&lt;p&gt;Here’s a graphic of the shape I had in my mind, as I placed the cones. I didn’t have as many as I’d like to have, else the finished shape would more closely match the green shape:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/junction-before-after.jpg&quot; alt=&quot;cones on downing&quot; /&gt;&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/l96-8uzb8DM?si=pD8eX7_rBmlxkzRF&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;changes-from-placing-these-cones&quot;&gt;Changes From Placing These Cones&lt;/h2&gt;

&lt;p&gt;Some phenomina is hard to even write about. It’s best seen with the video slider going back and forth, showing something about the path a car took on a turn or whatever.&lt;/p&gt;

&lt;p&gt;Alas, plenty of the changes are visible in the timelapse (like the effect the cones have on the path a vehicle takes), I’ll list that and more.&lt;/p&gt;

&lt;p&gt;here’s a list:&lt;/p&gt;

&lt;p&gt;before: 30 foot crossings for pedestrians on all sides, having to look left and right in some cases, sorta at the same time
after: max crossing is 15 feet, with possible car traffic arriving from one side only&lt;/p&gt;

&lt;p&gt;before: regular vehicle speeds of 40 mph
after: most vehicle speeds much closer to 20 mph (no speed bump or stop sign or path deviation required)&lt;/p&gt;

&lt;p&gt;more things:&lt;/p&gt;

&lt;p&gt;reduced width means:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;reduced time spent in the crossing for pedestrians AND other vehicles.&lt;/li&gt;
  &lt;li&gt;Much less space one has to be concerned about being inside of. Sharper delineations between the spaces&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;reduced-junction-size&quot;&gt;Reduced junction size&lt;/h3&gt;

&lt;p&gt;A huge component of this roads and junctions thing is that to dramatically increase the junction efficiency, one has to be able to reduce the size. Huge and inefficient becomes small and efficient.&lt;/p&gt;

&lt;p&gt;The way to get some space back is to sorta ‘scribe’ the outer edge, define it with cones. Compare these two shapes:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/junction-before-after.jpg&quot; alt=&quot;cones on downing&quot; /&gt;&lt;/p&gt;

&lt;p&gt;They may look almost the same in size, but the inner shape is like 40% smaller than the outer one.&lt;/p&gt;

&lt;p&gt;Here’s how I see in my mind the unimproved junction shape, and then the improved junction shape:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/from-downing.jpg&quot; alt=&quot;POV from downing&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;before-size: 300 square meters. After-size: 180 sq meters&lt;sup id=&quot;fnref:junction-efficiency&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:junction-efficiency&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;the sounds improved. It used to be that many vehicles were accelerating through the junction. It’s one block from a traffic light and super market exit and it looks super open and wide. With the cones, almost every vehicle coasted or at worst very gently accelerated through it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;shared-space-vibes&quot;&gt;shared space vibes&lt;/h3&gt;

&lt;p&gt;In theory, someone should not be eligible to be destroyed by a car, simply for being in the wrong spot at the wrong time. Nor should they have to wait and defer a crossing to a person that is still hundreds of yards away, which is what happens when pedestrians are waiting to cross unbroken streams of vehicular traffic.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/shared-space.jpg&quot; alt=&quot;shared space&quot; /&gt;&lt;/p&gt;

&lt;p&gt;At the 2:51 point, a person in a car stops it to let some people on foot cross. This is a big deal. No signs demanded that the right of way be given to pedestrians in the crosswalk. There wasn’t a stop sign or a speed bump. It was a chill handoff of that space.&lt;/p&gt;

&lt;p&gt;A little more squeezing of the lanes with the cones, and more and more of the passing vehicle traffic would stop as soon as pedestrians showed up to cross.&lt;/p&gt;

&lt;p&gt;my ideal junction treatment turns it into a ‘shared space’ (vs a car-dominated space) where the larger/motorized vehicles defer to smaller/non-motorized/leg-powered vehicles. (counting walking people as vehicles here)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;the experience for turning left and right off of downing is much improved&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;notice-the-changed-shape-of-left-and-right-turns&quot;&gt;Notice the changed shape of left and right turns&lt;/h3&gt;

&lt;p&gt;I could imagine overlaying a line representing all the possible different left and right turns - sometimes cars turn fast, taking a wide turn. Sometimes too wide, too fast. Once the cones go out, some of the least desireable possible turning paths are eliminated, and more vehicles take a slower, defined turn.&lt;/p&gt;

&lt;p&gt;That sort of turn makes it much safer for pedestrians crossing the road at the same time.&lt;/p&gt;

&lt;p&gt;The turning into and out of the darkness of the shadow also complicates the junction. Reducing speed and complexity (as I did) makes everything move in a much flowier way.&lt;/p&gt;

&lt;h3 id=&quot;rear-endingtailgatingracing-past-behavior-is-eliminated&quot;&gt;Rear ending/tailgating/racing past behavior is eliminated&lt;/h3&gt;

&lt;p&gt;since both sides of the junction are constrained, if a vehicle stops to make a left or right turn and is waiting for the path to be clear, the vehicle behind them cannot fit around and race past.&lt;/p&gt;

&lt;p&gt;There’s a tremendous rear-ending danger in the original intersection design.&lt;sup id=&quot;fnref:danger-still&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:danger-still&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;If a car were turning right, for instance, and suddenly stopped, noticing a pedestrian in the space in front of it, and got rear ended, it could end up bouncing into the space the person was occupying anyway.&lt;/p&gt;

&lt;h3 id=&quot;the-sounds-so-much-better&quot;&gt;The sounds. so much better.&lt;/h3&gt;

&lt;p&gt;cars are loud. so freaking loud. especially when accelerating up a hill, which is what every single car going north on downing is doing. this cone treatment encouraged gentler driving. While I was standing near it, I noticed that while some vehicles still drove very fast straight through the junction, the vast majority would at least remove their foot completely from the gas and would &lt;em&gt;coast&lt;/em&gt; through the junction.&lt;/p&gt;

&lt;p&gt;The acoustics were very improved. And the sound of racing/tailgating/rushing is unmistakable, even from a great distance.&lt;/p&gt;

&lt;h2 id=&quot;manifesting-repair-as-a-service&quot;&gt;manifesting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Repair as a Service&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;In this capitalistic hellscape we live in, I could imagine &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Repair as a Service&lt;/code&gt;, sorta like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Software as a Service&lt;/code&gt;. (in some circles, SaaS is &lt;em&gt;the&lt;/em&gt; stuff).&lt;/p&gt;

&lt;p&gt;TODO: add a section about why this satisfies capitalism, and not just via general harm reduction, risk mitigation, though there are billions of dollars of industry doing just that. Maybe this improves customer access. It’s known that foot traffic makes money, this is all in line with pedestrianizing/making pedestrian friendly spaces.&lt;/p&gt;

&lt;p&gt;I have &lt;a href=&quot;/parking&quot;&gt;this thing about parking&lt;/a&gt; that’s conceptually related. A bit more capitalistic.&lt;/p&gt;

&lt;p&gt;if something were a service, that means it can be purchased, and this is america, so if something is available &lt;em&gt;for purchase&lt;/em&gt;, that means it’s available &lt;em&gt;at all&lt;/em&gt;. Currently, however, one cannot, to my knowledge, quite purchase a repaired junction, the same way one can purchase a repair to some commonly repaired physical items, like vehicles, houses, devices.&lt;/p&gt;

&lt;p&gt;In the spirit of &lt;a href=&quot;/write-it-now&quot;&gt;write it now&lt;/a&gt; and the iterative nature of the internet, here’s two different options plausible ‘junction repair as a service’ solutions, and everything technically works so I can get this page live.&lt;/p&gt;

&lt;p&gt;the ‘let josh truthfully say at any point in the future “someone has hired me/is hiring me at this very moment to run a pop-up experiment &lt;em&gt;right here&lt;/em&gt;”:’ option:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://buy.stripe.com/aFa9AM7yGd6Va0ld1P8Vi0a&quot;&gt;purchase ‘Josh’s Junction Coning’&lt;/a&gt; via Stripe. google pay/apple pay works&lt;/p&gt;

&lt;p&gt;A three-cheers-for-capitalism option. Includes above plausibility beard, and some recorded outputs and magical calculations:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://buy.stripe.com/aFa9AM7yGd6Va0ld1P8Vi0a&quot;&gt;purchase ‘Josh’s Junction Repair Writeup’&lt;/a&gt; via Stripe.&lt;/p&gt;

&lt;p&gt;I’m pleased to talk about any of this. Email or Whatsapp or a walk is preferred, ranked by preference, reverse sorted.&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/on-coning&quot;&gt;prior coning adventures&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/traffic-bean&quot;&gt;the traffic bean&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/vehicles-per-sq-meter-per-minute&quot;&gt;calculating vehicle efficiency metrics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:junction-efficiency&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I popped this open on google earth. 300sq meters to 180 sq meters is a 40% reduction in size. WE REDUCED THE SIZE OF A CRITICAL PIECE OF INFRASTRUCTURE BY ALMOST HALF. It’s interesting to me.  the junction was never ‘maxed out’ in terms of vehicles moving through it for a time frame, so a direct count of vehicles per minute doesn’t quite make sense, but the principal of it’s efficiency being unaffected even as the space required is reduced by over a third is, I think, clear enough. &lt;a href=&quot;/vehicles-per-sq-meter-per-minute&quot;&gt;Here’s much more about this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vehicles per square meter per minute&lt;/code&gt; value&lt;/a&gt; &lt;a href=&quot;#fnref:junction-efficiency&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:danger-still&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;and of course ‘danger still persists’ with this treatment. ‘spot fixing’ a mobility network isn’t a thing. One fixes a route, for a vehicle class, at minimum ‘legs’ is a vehicle class, and ‘the other side of the street’ is a valid route, but most trips will include at least a few junctions in sequence. This treatment is best applied to junctions in sequence, a little of the video I have shows an adjacent junction a block away I fixed. I think three fixed junctions in a row is a nice thing, so doing two in a row is getting close. To appreciate three of these in a row starts with experiencing one. &lt;a href=&quot;#fnref:danger-still&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>On Foraging Mushrooms at Cheesman Park</title>
   <link href="https://josh.works/mushroom-foraging-in-the-park"/>
   <updated>2025-10-30T13:00:00+00:00</updated>
   <id>https://josh.works/mushroom-foraging-in-cheesman-park</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;I live quite close to this park in Denver, Cheesman Park. Last year, &lt;a href=&quot;/botanic-gardens&quot;&gt;I wrote something about accessing the Botanic Gardens from Cheesman&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A few months later I updated it, noting that I’d found mushrooms in the park and began feeding them to the fish.&lt;/p&gt;

&lt;p&gt;I also regularly am in the park doing these &lt;a href=&quot;/kettlebell-swings-and-sprints&quot;&gt;barefoot hill sprint things&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The koi fish obviously love the mushrooms, I’ve fed them to the fish dozens of times, now.&lt;/p&gt;

&lt;p&gt;&amp;lt; todo: add a photo or video of the koi busily eating mushrooms &amp;gt;&lt;/p&gt;

&lt;p&gt;As I spent more attention on the mushrooms, I got some books about mushrooms identification, from the botanic gardens library, so I could positivity identify whatever kind of mushroom this was with more confidence than the seek app + me looking at photos of things online.&lt;/p&gt;

&lt;h2 id=&quot;agaricus-bisporus&quot;&gt;Agaricus Bisporus&lt;/h2&gt;

&lt;p&gt;turns out it’s not too difficult to classify mushrooms. It’s a bit of a flow chart one works through. I learned to positively identify these mushrooms, as well as the two kinds of mushrooms responsible for 100% of fatal mushroom ingestions.&lt;/p&gt;

&lt;p&gt;It helps to be able to easily observe the mushroom across all stages of development. I made my first spore prints.&lt;/p&gt;

&lt;p&gt;This mushroom variety is known as ‘the common mushroom’, &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Agaricus_bisporus&quot;&gt;agaricus bisporis (wikipedia)&lt;/a&gt;&lt;/em&gt;. It’s the most commonly consumed mushrooms in the world also the same as what you could buy in the grocery store.&lt;/p&gt;

&lt;p&gt;The common mushroom! And so abundant in the park. I love common things. It’s the most commonly sold mushroom in grocery stores. I often note the mushrooms for sale, when I pass by them in a grocery store. I’v not bought a mushroom in the better part of a year.&lt;/p&gt;

&lt;p&gt;Here’s some of what the page on wikipedia says:a&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It is cultivated in more than 70 countries and is one of the most commonly and widely consumed mushrooms in the world. It has two color states while immature – white and brown – both of which have various names, with additional names for the mature state, such as chestnut, portobello, portabellini, button, cremini, and champignon de Paris.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;-from-the-park-vs-the-grocery-store&quot;&gt;🍄 from the park vs the grocery store&lt;/h2&gt;

&lt;p&gt;Since that moment over a year ago, I’ve fully replaced my mushroom purchasing from grocery stores with mushrooms chosen from Cheesman park, and it’s been a persistent source of interestingness, and a quality-of-life improvement across many dimensions.&lt;/p&gt;

&lt;p&gt;I pass by the park far more frequently than I go to a grocery store, and I pass through the park on my way to other places, &lt;a href=&quot;/scootering&quot;&gt;on my scooter&lt;/a&gt;, all the time, and I can, with a glance from my scooter as I ride by, check different spots I’ve seen mushrooms growing, or a quick walk about. There’s almost always many, many more findable mushrooms than I could ever pick, even on the days that I’ve picked 35 pounds of mushrooms.&lt;/p&gt;

&lt;p&gt;Getting mushrooms from the park sort of reminds me of the experience of having a corner store that sells produce, right around the corner from wherever I’m living, and I can dash inside and get vegetables for dinner that night or the next day, any time of day and night, as I’m walking home.&lt;/p&gt;

&lt;p&gt;This experience (the ‘corner grocery store’) is common in so many cities around the world, but is ‘banned’ in america because supremacists got their way and still do. &lt;sup id=&quot;fnref:zoning&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:zoning&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I have been willing but unhappy to be giving money to capitalism, especially the kind of capitalism of local chain grocery stores. A corner, neighborhood grocer, I’d prefer to give my money too, but that’s not even a viable option, because of “zoning”.&lt;/p&gt;

&lt;p&gt;with this park mushroom encounter, however, I now have something with the convenience of a veggie stand a half block away, yet it doesn’t even allow for money to be transacted, and it’s always open. As long as it’s not too wintery outside, the park has had mushrooms in it 100% of the times I’ve been there. The park is watered regularly, and that helps there be lots of mushrooms continuously.&lt;/p&gt;

&lt;p&gt;No one is forced to run a checkout machine, no electronic devices are used to collect money. There is no concept of ‘price per pound’. I usually walk through the grass barefoot. There’s no florescent lighting. I can collect in large-enough quantities that if I wanted to go weeks between a visit to the park, I could. The largest amount I once collected was just as much as I could fit in my backpack and the two grocery bags I had with me, and it was 35 lbs of mushrooms. It was still only a small fraction of the ripe, edible mushrooms available in the park at that moment.&lt;/p&gt;

&lt;p&gt;I’ve certainly become much more attentive to how the grass and dirt feels under my toes, the presence of moisture, the temperatures that I notice, when walking around the park, too. Less capitalism and more nature and walking barefoot in wet grass? Yes please. I am still using it for my &lt;a href=&quot;/kettlebell-swings-and-sprints&quot;&gt;barefoot hill sprints&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;where-in-the-park-to-find-them&quot;&gt;Where in the park to find them&lt;/h2&gt;

&lt;p&gt;The mushrooms grow in very reasonable patterns throughout the park. Often they grow on the edges of root balls, the root balls of long-dead cedar trees, where not even a stump remains. My mental model is that a certain kind of mycelial network is metabolizing the roots, and as it metabolizes, when the water is abundant and conditions are right it sorta takes a breath, and exhales a flush of mushrooms.&lt;/p&gt;

&lt;p&gt;They might develop for 3 days, eventually open up and drop spores, and then fade back into the grass. Any time they’re above ground, as long as they’ve not gotten stepped on or smashed or dried out, they could be good for the plucking and eating.&lt;/p&gt;

&lt;p&gt;It can go from ‘no mushrooms are visible anywhere’ to ‘wow that is a lot of mushrooms’ overnight.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/in-the-park.jpg&quot; alt=&quot;in the park&quot; /&gt;&lt;/p&gt;

&lt;p&gt;some people call the patterns in the grass, left by these underground root balls ‘fairy circles’. They’re sometimes faint, sometimes quite distinct. This is exactly where the mushrooms seem to like growing.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/fairy-circle.jpg&quot; alt=&quot;more mushrooms&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This single blob of mushrooms might be 3 lbs of mushrooms, maybe more:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/mushrooms.jpg&quot; alt=&quot;even more&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The abundance is distinctive.&lt;/p&gt;

&lt;p&gt;I have made mushrooms an intentional, specifically sought out part of my diet for years. Now I don’t even pay for them, and I eat even more of them than I did before.&lt;/p&gt;

&lt;p&gt;Sometimes at the park I pick just a few handfuls of mushrooms, enough for me to add to my meals regularly for a few days. Some single mushrooms are so big that I will eat only half of it with my next meal.&lt;/p&gt;

&lt;p&gt;Sometimes I’ve collected many more mushrooms than I could eat in just a few days, and I suspect mushrooms are unlikely to grow year-round, so I baked them down in the oven at 350 degrees for a while, then vacuum sealed them and stored them in the freezer.&lt;/p&gt;

&lt;p&gt;I have already been surprised by how late into the year the mushrooms continue to grow and the mycelial networks continue to fruit. (It’s currently almost November, and I picked a kilo of mushrooms a few minutes ago, I’ll eat them later today, two days ago I filled a reusable grocery bag, it was like 12 lbs of mushrooms)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/bagofmushrooms.jpg&quot; alt=&quot;mushrooms in a bag&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;mushrooms-and-fungal-networks-are-cool&quot;&gt;Mushrooms and fungal networks are cool&lt;/h2&gt;

&lt;p&gt;I’ve been a huge fan of mushrooms for many years, but it was only a few days ago that I learned after encountering &lt;a href=&quot;https://pmc.ncbi.nlm.nih.gov/articles/PMC10088739/&quot;&gt;this document&lt;/a&gt;, that mushrooms technically contain all of the essential amino acids, just some sort of amino acid that cannot be manufactured within the body.&lt;/p&gt;

&lt;p&gt;The documentary &lt;a href=&quot;https://www.youtube.com/watch?v=bxABOiay6oA&quot;&gt;fantastic fungi&lt;/a&gt; has tons of beautiful time laps photography/videography of fruiting fungal networks.&lt;/p&gt;

&lt;p&gt;The book &lt;a href=&quot;https://www.goodreads.com/book/show/52668915-entangled-life&quot;&gt;Entangled Life: How Fungi Make Our Worlds, Change Our Minds &amp;amp; Shape Our Futures&lt;/a&gt; is worth snagging at a library, too.&lt;/p&gt;

&lt;p&gt;something feels particularly right about at least a few bites of mushroom in with the egg and veggies that I eat every day.&lt;/p&gt;

&lt;h2 id=&quot;fat-is-cool-too&quot;&gt;Fat is cool, too&lt;/h2&gt;

&lt;p&gt;Seems worth mentioning that I also make sure to be eating what feels like an adequate amount of fat, in the form of olive oil and coconut oil.&lt;/p&gt;

&lt;p&gt;I spoon a tablespoon or 2 of coconut oil into meals as I sauté them, often enough, or add coconut cream (stored in the freezer if I don’t use it all) to some dishes, and virtually always pour 10-20 grams of olive oil (a few table spoons) on every meal I have.&lt;/p&gt;

&lt;h3 id=&quot;sidebar-on-fermented-food&quot;&gt;Sidebar on fermented food&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;this piece is turning into being about more than just mushrooms, so sorry&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I also would advocate for kimchi, sourkrout or kombucha. any sort of fermented food. I make my own kombucha, so at least every few days will have at least a few sips of kombucha. I imagine nice things happening in my gut when I do that. I don’t think more than a tablespoon or two is needed for a full dose of active culture of whatever is being fermented. So, i try to get at least a little fermented food with most meals. I have a friend that gets me costco kimchi containers, and i’ll make one last for a while. I will make my own kimchi someday. I love fermented food of all types, and appreciate what my gut bacteria do for me. I try to be a reasonable enough host for that collection of bacteria.&lt;/p&gt;

&lt;p&gt;Fat is the main portion of the structure of our a brain such as ours, as well as the spinal cord. Fat also can be metabolized by the liver for energy generation stuff, same same but different as sugar can be metabolized for energy. &lt;sup id=&quot;fnref:fat-and-sugar&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:fat-and-sugar&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;foraged-mushrooms-vs-capitalism&quot;&gt;Foraged mushrooms vs capitalism&lt;/h2&gt;

&lt;p&gt;Anyway… Mushrooms now compromise a meaningful amount of my food consumption, and it’s been over a year since I’ve bought mushrooms.&lt;/p&gt;

&lt;p&gt;I didn’t get into this with the intent of decapitalizing any my food consumption, and I note now having done so it feels satisfying. In the same way that hunting an animal might engender a sense of accomplishment, or raising plants in a garden might spark accomplishment, finding mushrooms in the park feels appealing. I had nothing to do with any part of the process besides showing up and plucking the mushroom, and there isn’t even &lt;em&gt;time&lt;/em&gt; invested. This is vastly preferable to all forms of gardening I’ve ever encountered in my life, until now.&lt;/p&gt;

&lt;p&gt;I dislike capitalism, and would like to see dramatically less of the human experienced affected by the intrusion of currency, money, into the human experience&lt;sup id=&quot;fnref:foraging-with-others&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:foraging-with-others&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I’d love to see infinite food available for all. I don’t believe in political authority, but if there WAS a case for political authority, it would look like ‘using resources to cafe for those in need’, and providing food to anyone who wanted it checks the book. I wish no other bombs or cars were ever allowed to be created again until everyone in the USA, maybe in the world, who wanted food, had it, for free, no obligations or dehumanizations involved, and american cities were covered again with streetcars, trams, rail transport. Such is my fantasy.&lt;/p&gt;

&lt;h2 id=&quot;foraging-mushrooms-respectfully&quot;&gt;Foraging Mushrooms respectfully&lt;/h2&gt;

&lt;p&gt;I dislike capitalism, and I dislike colonialism, slavery, and genocide, and all of those things are sorta opposed to healthy relationships (between us and ourselves, us and each other, us and the land people live on top of and travel around on).&lt;/p&gt;

&lt;p&gt;Robin Wall Kimmerer wrote this article: &lt;a href=&quot;https://www.allcreation.org/home/honorable&quot;&gt;‘the honorable harvest’&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve read many books, but never &lt;a href=&quot;https://www.goodreads.com/book/show/17465709-braiding-sweetgrass?ref=nav_sb_ss_1_14&quot;&gt;Braiding Sweetgrass: Indigenous Wisdom, Scientific Knowledge, and the Teachings of Plants&lt;/a&gt;, also by by Robin Wall Kimmerer. I’m listening to the audiobook right now, and it’s a delight.&lt;/p&gt;

&lt;p&gt;Foraging has sometimes been a less-than-innocuous activity when it comes to issues of political power, but it’s also the activity that quite directly encourages a certain respectful relationship between people and nature. It’s a stark contrast to agriculture, which is synonymous with the State and its armies and slave labor.&lt;/p&gt;

&lt;p&gt;For some fascinating takes on the state and the people living beyond the state, and foraging and the many other forms of how life existed outside the strictures of agriculture &amp;amp; the state, I suggest &lt;a href=&quot;https://www.goodreads.com/author/show/11958.James_C_Scott&quot;&gt;James C Scott&lt;/a&gt;. I just finished &lt;a href=&quot;https://www.goodreads.com/book/show/6477876-the-art-of-not-being-governed&quot;&gt;The Art of Not Being Governed: An Anarchist History of Upland Southeast Asia&lt;/a&gt; and found it to be exceptional. (It’s nominally an examination of state formation and un-formation in a region centering on modern-day thailand.) It deserves its own blog post. &lt;sup id=&quot;fnref:a-teaser&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:a-teaser&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;long-term-storage&quot;&gt;Long-term storage&lt;/h2&gt;

&lt;p&gt;I’ve also only recently made some big improvements in how I prep the results of this foraging.&lt;/p&gt;

&lt;p&gt;Sometimes I’ve collected far more than I can eat in a few days.&lt;/p&gt;

&lt;p&gt;&amp;lt; as I type these words I have a ten pound bag of mushrooms in my fridge waiting for prep - add the photo &amp;gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Bake mushrooms whole&lt;/li&gt;
  &lt;li&gt;Pan fry whole too&lt;/li&gt;
  &lt;li&gt;Treat like steaks - crispy on the outside, seasoned, v uniform and juicy on the inside. Different energy than chopping them up, prior way I prepped all mushrooms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;lt; insert photo of using torch to sear outsides of the mushrooms &amp;gt;&lt;/p&gt;

&lt;p&gt;They seem to bake and do even better in the fridge with this treatment, which makes sense.&lt;/p&gt;

&lt;p&gt;When they’re growing in the earth, and maintain their shape and structure, they grow successfully, but if smushed or cut or kicked or they already dropped spores and are thus expired, some other stuff, depending on the stage of development, different sorts of failure set in. An undisturbed, normally-growing mycilial network fruiting body is a neat capsule that retains mosture and structure with a pretty distinctive outermost shell that’s a bit flexible and rigid at the same time.&lt;/p&gt;

&lt;p&gt;So far I believe mushrooms have been spotted in the park surprisingly many months of the year. Through November for sure, and it was sometime this last spring I spotted them for the first time this season.&lt;/p&gt;

&lt;p&gt;I have noticed that I spend less at the grocery store; I no longer buy mushrooms, which per-pound are sorta expensive, and since it’s abundant and free to me, I have shifted my regular veggie mix (a rotation of broccoli, zucchini, squash, cauliflower, cabbage, asparagus, brussel sprouts…) more towards mushrooms.&lt;/p&gt;

&lt;p&gt;I mostly don’t eat meat&lt;sup id=&quot;fnref:exceptions&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:exceptions&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;, and low-key I wish more did the same. I dislike enslavement and forced/coerced suffering. Chattel slavery was some shit, in the American south, that energy continues today and something in the meat industry too willingly embraces enslavement in so many directions. I stopped eating meat in 2017 after reading &lt;a href=&quot;https://www.goodreads.com/book/show/6604712-eating-animals?ref=nav_sb_ss_1_14&quot;&gt;Eating Animals&lt;/a&gt;. I’ve tried to reduce the amount of enslavement and suffering my eating habits rely upon. If you are what you eat, I wonder what I am. I eat almost exclusively mushrooms, eggs, cruciferous veggies, olive oil and coconut oil.&lt;/p&gt;

&lt;p&gt;Now that mushrooms are available abundantly, for free, three blocks from my house, well, my meat consumption continues to stay at almost 0, and my mushroom &lt;em&gt;spending&lt;/em&gt; is 0, but my mushroom consumption has gone up, nicely.&lt;/p&gt;

&lt;h2 id=&quot;mushrooms-and-amino-acids&quot;&gt;Mushrooms and amino acids&lt;/h2&gt;

&lt;p&gt;I didn’t know until quite recently that &lt;a href=&quot;https://pmc.ncbi.nlm.nih.gov/articles/PMC10088739/&quot;&gt;mushrooms seem to contain all essential amino acids&lt;/a&gt; (and maybe the non-essential ones, too). I didn’t know that. I’ve been wanting to reduce my egg consumption, so when I heard this my ears perked up, and I’m sorta playing with reducing egg consumption. I’ve done some days where I eat only two eggs, so far so good. &lt;sup id=&quot;fnref:amino-acids&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:amino-acids&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;how-to-prep--eat-mushrooms-deliciously&quot;&gt;How to prep &amp;amp; eat mushrooms, deliciously&lt;/h2&gt;

&lt;p&gt;No one likes to feel dirt or sand in their teeth, so give the mushrooms a good scrub in water. Maybe two scrubs. Trim the stem where it connected to the mycilial network, to remove the dirt embedded there. Or, scrub it all off. Or trim it, sorta making the shape of the tip of a pencil, to remove the dirt from that part of the mushroom. Rinse it with water again.&lt;/p&gt;

&lt;p&gt;I’d been cooking and eating these mushrooms for almost a year before I ever ate one raw. The thought had never crossed my mind. Then it did, and I was immediately brought back, taste-wise, to the experience of eating salads with raw mushrooms on them. Familiar and normal. Now I eat these (after rinsing them) raw, regularly, and I don’t know why I didn’t start long ago.&lt;/p&gt;

&lt;p&gt;They are fine raw, but finer with some olive oil and salt. Usually I’d chop and sauté them, and they go great with onions, garlic, ginger. maybe some broccoli or zucchini. once everything is soft add some eggs, and drizzle some olive oil when plating. It’s delicious.&lt;/p&gt;

&lt;p&gt;They can be sliced up before cooking, but my most recent innovation has been to &lt;em&gt;not&lt;/em&gt; slice them up before cooking! I’ve been pleased with the results. Sometimes I’ll slice them up after cooking, like a little fillet.&lt;/p&gt;

&lt;p&gt;I’ve recently started cooking them whole, it’s been great:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/whole-mushrooms.jpg&quot; alt=&quot;whole mushrooms&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’ll probably add more to this post soon. I was noticing big improvements in the &lt;em&gt;cooking&lt;/em&gt; part of the mushrooms, and lamented that I’d not even created a single page about them on this website, even though so much of my actual, day-to-day life has been affected, improved, by this encounter.&lt;/p&gt;

&lt;p&gt;I’ve told many people about this, in person, but still have not yet encountered a single other person foraging mushrooms for their own use. I hope to someday meet someone else, or many others, doing just this.&lt;/p&gt;

&lt;p&gt;I’ve found these mushrooms growing in other parks, too. I don’t know other parks like I know cheesman, but I’ve sometimes spotted some. Maybe explore around wherever you live. I’ll maybe update this if I find other parks with abundant quantities of mushrooms growing in them, especially if &lt;em&gt;agaricus bisporus&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;foraging-and-pesticides&quot;&gt;Foraging and pesticides&lt;/h2&gt;

&lt;p&gt;The city of denver’s website says they don’t use pesticides broadly, and when they do use them, it’s on specific trees, and they place a yellow flag saying ‘pesticides recently applied here’ next to the tree. I’ve occasionally seen the yellow flags, but infrequently.&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://pmc.ncbi.nlm.nih.gov/articles/PMC10088739/&quot;&gt;Nutritional Quality and Biological Application of Mushroom Protein as a Novel Protein Alternative&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/52668915-entangled-life&quot;&gt;Entangled Life: How Fungi Make Our Worlds, Change Our Minds &amp;amp; Shape Our Futures&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=qIsS6PBLvu8&amp;amp;t=533s&quot;&gt; Yunnan people are currently obsessed with one thing: mushroom foraging in the mountains…【滇西小哥】 &lt;/a&gt; (I watched this video a few times when cleaning and prepping my foraged mushrooms)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6604712-eating-animals?ref=nav_sb_ss_1_14&quot;&gt;Eating Animals, Jonathan Foer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/17465709-braiding-sweetgrass?ref=nav_sb_ss_1_14&quot;&gt;Braiding Sweetgrass: Indigenous Wisdom, Scientific Knowledge, and the Teachings of Plants by Robin Wall Kimmerer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.allcreation.org/home/honorable&quot;&gt;The Honorable Harvest (Robin Wall Kimmerer)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Anything by &lt;a href=&quot;https://www.goodreads.com/author/show/11958.James_C_Scott&quot;&gt;James C Scott&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:zoning&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This thing we could call ‘american-style zoning’, or ‘euclidean zoning’, ‘separation of use zoning’, ‘segregated land use zoning’, etc. It’s a scheme where boxes drawn on a map determine quite a lot about what can be built there, and was used to devestating effect all across the greater united states. The original designation for R1 neighborhoods was in a section titled, and I am not kidding in the slightest, ‘race zoning’. It says more: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;r1 - wh*te, r2 - c*lored&lt;/code&gt;. &lt;a href=&quot;/full-copy-of-1922-atlanta-zone-plan&quot;&gt;Here’s the link to the whole thing&lt;/a&gt;. &lt;a href=&quot;/full-copy-of-1922-atlanta-zone-plan#race-zoning&quot;&gt;Here’s a deep link to the above section&lt;/a&gt;, and the goal was create something of a mix of enclaves, and reservation-type conditions, and to segregate a city by the fantasy of race. these people used zoning to push all economic activity to the ‘edge’ of the enclave. Everything about it is rooted in this energy to dominate others. It’s why the united states has lost the ‘cultural technology’ of the corner store, &lt;em&gt;a&lt;/em&gt; corner store, and we’re all vastly harmed by it.&lt;/p&gt;

      &lt;p&gt;This pamphlet trying to hype the concept of zoning was written by people who loved the enslavement of others at scale. The mayor of Atlanta! I’m bummed to see so many people tirelessly working on replicating his kinky fantasy of a world separated by race, created by a violent and stupid person, small groups of likeminded people. &lt;a href=&quot;#fnref:zoning&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:fat-and-sugar&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The comparisons and contrasts between ingested sugar-based things (any food that is an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-ose&lt;/code&gt;, like sucrose, glucose, fructose, lactose) as energy and ingested fatty things as energy is riveting. &lt;a href=&quot;/cgm&quot;&gt;I wrote a thing about wearing a continuous glucose monitor&lt;/a&gt;. The experiences and observations from that monitor continue to be some of the more interesting and impactful-in-an-ongoing-way of my life. Sorta like psychedelics, or an experience of the numinous. I walked away from the experience with an increased gratitude and appreciation for what my own body did for me, when it comes to energy generation, digestion, energy storage, response to exercise, etc. managing blood sugar levels, raising it when exercising, lowering it via insulin or activity if I ate carby stuff. &lt;a href=&quot;#fnref:fat-and-sugar&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:foraging-with-others&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I sometimes entertain the idea in my mind of starting a little ‘forage mushrooms from cheesman park’ group. When it’s producing mushrooms, &lt;em&gt;hundreds&lt;/em&gt; of pounds of mushrooms can be found in the park. Could represent meaningful money savings from some people. Many, many people could be fed. &lt;a href=&quot;#fnref:foraging-with-others&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:a-teaser&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This book deserves its own book review, for now I’ll copy/paste a sentiment I agreed with, from &lt;a href=&quot;https://www.goodreads.com/review/show/475893066&quot;&gt;this comment&lt;/a&gt;:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;It covers far too much to try to sum up. I found the most thought-provoking chapters to be the three last.&lt;/p&gt;

        &lt;p&gt;Though in fact he calls one of them chapter 6 ½, because he’s just feeling his way: it’s on **‘Orality, Writing and Texts’, and talks about possible attitudes to writing that go dead against civilized assumptions. Might a people reject writing, the orthodoxy of a text, that is a foundation-stone of states, and feel they are better off with oral history?&lt;/p&gt;

        &lt;p&gt;That was fascinating, and the next chapter is &lt;strong&gt;‘Ethnogenesis: A Radical Constructionist Case’ on the artificiality or fictionality of tribes.&lt;/strong&gt; He comes at this from two sides. Administrators have to order populations into tribes that weren’t there beforehand; but the peoples themselves have uses for a fictional ethnicity – several uses that Scott explores. This chapter includes the why of state mimicry, or what he calls ‘cosmological bluster’ – where tribal peoples take on the trappings of states, in ways that may be more subversive than subservient. 
Lastly, &lt;strong&gt;‘Prophets of Renewal’, on the question of how and why (and what type of) religion has served in revolts of the marginal and the dispossessed&lt;/strong&gt;. This is a terrific chapter, that does begin on explanations, and those might not be what you thought. (emphasis added)&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:a-teaser&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:exceptions&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;i do &lt;em&gt;technically&lt;/em&gt; eat some meat. it’s been almost a decade since I’ve eaten cows, pigs, or chickens, and I wish those industries were dramatically reduced, or eliminated. Native people ate bison, i say stop growing corn and turn all the land back to native people and bison herds. Ending concentrated animal feeding operations/slaughterhouses would be so cool.&lt;/p&gt;

      &lt;p&gt;95% of my meat consumption is the occasional consumption of sardines and salmon. Even then, I eat these much less than weekly. At restaurants, I might order something with shrimp (the other 5%). Otherwise, a vegetarian dish for me.&lt;/p&gt;

      &lt;p&gt;before 2017 I ate lots of cows, pigs, chickens, then read &lt;a href=&quot;https://www.goodreads.com/book/show/6604712-eating-animals?ref=nav_sb_ss_1_14&quot;&gt;eating animals&lt;/a&gt;, and stopped all meat consumption. I do eat and have always have eaten a lot of eggs, and sorta wish I ate &lt;em&gt;less&lt;/em&gt;. Not even none, but have not yet found my way to low egg consumption. I eat at least three a day, maybe closer to 4 or 5 sometimes. I don’t drink milk, I sometimes eat cheese, certainly sometimes eat ice cream, and a little heavy cream is sometimes tasty in the coffee. I do not avoid butter. &lt;a href=&quot;#fnref:exceptions&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:amino-acids&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I still don’t quite know what an amino acid &lt;em&gt;is&lt;/em&gt;. Why is there exactly 22 of them for human animals? can existing amino acids be reused or recycled? My mental model was always that my body can mostly fabricate the amino acids it needs, and the stuff it cannot, it’ll scavenge it from the environment or the self (reusing, recycling). My mental model of a cell is not that it ever spontaneously falls apart and washes away, but that the structural elements can be taken apart and re-used. Like taking down a brick wall, moving the bricks, and re-building the wall. I also happen to view eggs as a source of everything the body could need, so &lt;em&gt;if&lt;/em&gt; I needed external sources of compounds or molecules, I’d get it in eggs. I don’t begrudge my body at all if it decided to take down some tissue to reuse the components elsewhere. &lt;a href=&quot;https://en.wikipedia.org/wiki/Autophagy&quot;&gt;autophagy&lt;/a&gt; is cool, I theorize that I might get more of it than some people, because my protein consumption is not so high, + the occasional intermittent fasting vibe. &lt;a href=&quot;#fnref:amino-acids&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Movies I went out of my way to watch</title>
   <link href="https://josh.works/movies-i-went-out-of-my-way-to-watch"/>
   <updated>2025-10-22T13:00:00+00:00</updated>
   <id>https://josh.works/movies-to-go-out-of-your-way-to-watch</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;I’ve long liked to accrue certain lists of things I like within certain categories. to list appreciable books invites a similar list for movies and movie-like things.&lt;/p&gt;

&lt;p&gt;It feels strange to list all of these movies like this, in some ways, especially the first two documentaries, juxtaposed against some of the other recommendations I have around here.&lt;/p&gt;

&lt;p&gt;Some of these shows I found or watched on Netflix, or Jeff Bezos’ internet. Some I searched the pirate bay, and found them there. Example: &lt;a href=&quot;https://thepiratebay.org/search.php?q=homebodies+1974&amp;amp;cat=0&quot;&gt;https://thepiratebay.org/search.php?q=homebodies+1974&amp;amp;cat=0&lt;/a&gt;. I’m using Folx as my torrent manager most recently, and NordVPN.&lt;/p&gt;

&lt;h2 id=&quot;two-documentaries&quot;&gt;Two documentaries&lt;/h2&gt;

&lt;p&gt;I &lt;em&gt;just&lt;/em&gt; finished an incredible documentary. One of the more substantial I’ve ever seen. By a distinctively-named Joshua Oppenheimer.&lt;/p&gt;

&lt;p&gt;Full warning, it’s about recent acts of genocide, ethnic cleansing, a coordinated campaign of mass killing, in Indonesia.&lt;/p&gt;

&lt;h3 id=&quot;the-act-of-killing&quot;&gt;The Act of Killing&lt;/h3&gt;

&lt;p&gt;The first is about recent, &lt;em&gt;recent&lt;/em&gt; events in Indonesia. &lt;a href=&quot;https://www.imdb.com/title/tt2375605/?ref_=nm_knf_t_2&quot;&gt;The Act of Killing, 2012, IMDB&lt;/a&gt;. It’s worth skimming &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Act_of_Killing&quot;&gt;the wikipedia page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Useful additional contextual reading could be the book &lt;a href=&quot;https://www.goodreads.com/book/show/53054943-the-jakarta-method?from_search=true&amp;amp;from_srp=true&amp;amp;qid=Jo6AXroH5q&amp;amp;rank=1&quot;&gt;The Jakarta Method&lt;/a&gt;, and &lt;a href=&quot;https://www.goodreads.com/book/show/41725763-how-to-hide-an-empire&quot;&gt;How to Hide An Empire&lt;/a&gt; &lt;sup id=&quot;fnref:mass-death&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:mass-death&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-look-of-silence&quot;&gt;The Look of Silence&lt;/h3&gt;

&lt;p&gt;Oppenheimer did another documentary, after that one, with a similar theme. &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Look_of_Silence&quot;&gt;The Look of Silence, 2014&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Joshua Oppenheimer’s documentaries repeatedly land in unexpected ways. he shows interviews of the people who carried out the killing campaigns in Indonesia, and movies they direct about what they did. They speak very openly, and approvingly, of their own actions.&lt;/p&gt;

&lt;p&gt;The last ten minutes of &lt;em&gt;The Look of Silence&lt;/em&gt; were distinctive. &lt;sup id=&quot;fnref:horrifying&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:horrifying&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;scooter-themed&quot;&gt;Scooter-themed&lt;/h2&gt;

&lt;p&gt;Of &lt;em&gt;course&lt;/em&gt; I will find something arbitrarily more interesting than otherwise if it involves a Vespa-style scooter, in any way. &lt;a href=&quot;/scootering&quot;&gt;I like scooters, of course&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I once looked through a few lists of movies having scooters in them, and have since watched at least a few from the list. That’s how I encountered some of the following.&lt;/p&gt;

&lt;h3 id=&quot;super-cub&quot;&gt;Super Cub&lt;/h3&gt;

&lt;p&gt;Super Cub is about that super classic motorcycle-style vehicle that is very similar to a scooter.  It’s a peaceful show (sorta gives Studio Ghibli at times) about a kid who gets a moped and the unfolding of adventures around it. I found it &lt;a href=&quot;https://www.crunchyroll.com/series/GJ0H7QM1J/super-cub&quot;&gt;on Crunchyroll&lt;/a&gt;. Here’s &lt;a href=&quot;https://www.youtube.com/watch?v=CKlzh_AgEC8&quot;&gt;a youtube video&lt;/a&gt; about the series.&lt;/p&gt;

&lt;h3 id=&quot;the-interpreter&quot;&gt;The Interpreter&lt;/h3&gt;

&lt;p&gt;From the same list (‘all movies that feature scooters in any way’), I encountered &lt;a href=&quot;https://www.imdb.com/title/tt0373926/?ref_=fn_all_ttl_1&quot;&gt;The Interpreter, 2005&lt;/a&gt;, and quite liked it. It ended up having satisfying and subversive messages throughout, in my opinion. I have a page of notes I took, as I watched it, I might add here or in it’s own post.&lt;/p&gt;

&lt;p&gt;The protagonist’s mode of transportation is a scooter, which is how it got on the list of movies I considered watching. I ended up liking the movie a lot more than I expected!&lt;/p&gt;

&lt;p&gt;The person’s use of the scooter is unrealistic in only one way - at one point there is a vehicular chase, and the people in the car are able to keep up with the person on the scooter. I kept wishing the scooter user would pass through a gap too narrow for the car and ‘solved’ the problem that way, instead of failing to utilize it’s primary beneficial attribute.&lt;/p&gt;

&lt;p&gt;I liked many other parts of the movie, too.&lt;/p&gt;

&lt;h3 id=&quot;amalie&quot;&gt;Amalie&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Amelie&quot;&gt;wikipedia&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;2001 French-language romantic comedy film directed by Jean-Pierre Jeunet&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;absolutely delightful in 100 ways. One of the best I’ve ever seen. Totally unexpected. I was moved, watching it. The description only touches on a portion of what is delightful about it. It’s about love, indeed.&lt;/p&gt;

&lt;h2 id=&quot;robert-moses-themed-movies&quot;&gt;Robert-Moses-themed movies&lt;/h2&gt;

&lt;p&gt;I still maintain Robert Moses as a delightful conceptual compression for ‘why are things the way they are’ (I.E, why do the greater united states not have any functioning inter/intra-city rail system? why are highways virtually always approved with dollars and permissions and signed contracts and rights of way, seemingly of their own volition? Why is the american urban transit system devoid of the people that built the tram systems of the 1920s?)&lt;/p&gt;

&lt;p&gt;Robert moses ran those kinds of people out of the industry. Not only did he employ thousands of engineers, and would fire anyone who advocated for rail transit solutions, but he would instruct the people he issued contracts to, to not hire those people either.&lt;/p&gt;

&lt;p&gt;The theme here is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;movies directly featuring Moses and/or his slum clearance/urban renewal/ethnic cleansing-via-displacement programs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Often enough reading about it feels very academic, talking about him as an urban planner. He’s so worth discussing because his effect on the world was not academic at all.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/robert-moses&quot;&gt;I discuss Robert Moses quite a bit more here&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;motherless-brooklyn-2019-edward-norton&quot;&gt;Motherless Brooklyn, 2019, Edward Norton&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Motherless_Brooklyn&quot;&gt;Motherless Brooklyn, 2019 film written, directed, produced by edward norton&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;a bunch of well known actors, including the person playing robert moses himself.&lt;/p&gt;

&lt;p&gt;I wish I could cut the scene that is lifted directly from &lt;em&gt;the power broker&lt;/em&gt;. Robert Moses (called Moses Randolph, in this movie) is in a very distinctive way &lt;em&gt;bullying&lt;/em&gt; the mayor into giving him another board seat, for instance.&lt;/p&gt;

&lt;p&gt;It’s all about Robert Moses, and the way he was destroying a neighborhood and community in pursuit of whatever it was he was pursuing.&lt;/p&gt;

&lt;p&gt;Told in a film-noir murder-mystery style. I’ve not (yet) read the book it’s based on (the book titled &lt;em&gt;motherless brooklyn&lt;/em&gt;, but I have read the other book it’s obviously based on, &lt;em&gt;The Power Broker: Robert Moses and the Fall of New York City&lt;/em&gt;)&lt;/p&gt;

&lt;h3 id=&quot;i-wont-go&quot;&gt;“I Won’t Go”&lt;/h3&gt;

&lt;p&gt;a 1960s-era 25 minute comedy show, titled “I Won’t Go”, &lt;a href=&quot;https://youtu.be/OKp-8I6q1xM?si=dAUlrFED3YopYIfQ&quot;&gt;available on youtube&lt;/a&gt; from the 1960s, depicting a 1950s-era event - the destruction of housing in order to make way for a piece of a highway, an approach to the George Washington Bridge.&lt;/p&gt;

&lt;p&gt;I cannot help but think of the land of Palestine, and the many different forms of settler colonialism/occupation pushed into that area. The kinds of justifications used for this sort of action, all around the world. the many similar themes (bulldozers, the different authorities and permits and men with guns)&lt;/p&gt;

&lt;p&gt;about an entire municipality and police force evicting an old lady from her house, and her various ways of trying to remain in her own house.&lt;/p&gt;

&lt;p&gt;Episode ends with her pointing out to everyone where her house &lt;em&gt;used&lt;/em&gt; to be, under what was then turned into an approach road for one of Robert Moses’ bridges.&lt;/p&gt;

&lt;h3 id=&quot;homebodies-1974-satirical-comedy-horror&quot;&gt;Homebodies, 1974 satirical comedy horror&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Homebodies_(film)&quot;&gt;Homebodies&lt;/a&gt;, 1974 satirical comedy horror film&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The film centers on a group of elderly residents in a Cincinnati tenement building who resort to murder when their building is condemned in the wake of urban redevelopment. (&lt;a href=&quot;https://en.wikipedia.org/wiki/Homebodies_(film)&quot;&gt;wikipedia&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is, in short, a close up and personal, look at what it was like for the residents of a &lt;em&gt;single building&lt;/em&gt;, as they were being made to be without housing. Please note how similar the scenes in that movie are, and the genocide and ethnic cleansing of the palestinian people. The buildings, the torn up streets.&lt;/p&gt;

&lt;p&gt;It’s a lovely film. To find it online, &lt;a href=&quot;https://thepiratebay.org/search.php?q=homebodies%2B1974&amp;amp;cat=0&quot;&gt;something like this might work&lt;/a&gt;. Or Jeff Bezos’s internet, i believe.&lt;/p&gt;

&lt;p&gt;Lots of bulldozers, urban renewal, wrecking balls, destruction of neighborhoods for highways and luxury apartments. This movie is entirely centered in &lt;a href=&quot;/robert-moses&quot;&gt;robert moses’ world&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So many poignant scenes. A cool depiction of a certain use of power, defensive power, perhaps.&lt;/p&gt;

&lt;h2 id=&quot;no-particular-theme&quot;&gt;No particular theme&lt;/h2&gt;

&lt;p&gt;Maybe anime?&lt;/p&gt;

&lt;h3 id=&quot;delicious-in-dungeon&quot;&gt;Delicious in Dungeon&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Delicious_in_Dungeon&quot;&gt;Delicious in Dungeon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A delightful show, prominently featuring cooking, food prep, foraging, creative problem solving, and lots of other nice things. It keeps delivering delight.&lt;/p&gt;

&lt;h3 id=&quot;suzume&quot;&gt;Suzume&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Suzume&quot;&gt;Suzume&lt;/a&gt; is a delightful film in 100 different ways. I’ve seen it at least three or four times, probably will watch it at least three or four more times.&lt;/p&gt;

&lt;h3 id=&quot;the-way-of-the-house-husband&quot;&gt;The Way of the House Husband&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/The_Way_of_the_Househusband&quot;&gt;wikipedia&lt;/a&gt;, also delightful.&lt;/p&gt;

&lt;p&gt;Synopsis:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Tatsu, an infamous and feared yakuza boss nicknamed “the Immortal Dragon”, retires from crime to become a househusband so that he can support Miku, his kyariaūman wife. The episodic series depicts a variety of comedic scenarios, typically wherein Tatsu’s banal domestic work as a househusband is juxtaposed against his intimidating personality and appearance, and his frequent run-ins with former yakuza associates and rivals.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s delightful, at least the first season or two. I feel like I remember some of the later episodes of the latest season sometimes trailing off, but overall an incredible and delightful show. Subversive in delightful ways!&lt;/p&gt;

&lt;h3 id=&quot;charlie-wilsons-war&quot;&gt;Charlie Wilson’s War&lt;/h3&gt;

&lt;p&gt;The story of a person named Charlie, and the war he wanted and got.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.imdb.com/title/tt0472062/?ref_=fn_all_ttl_1&quot;&gt;Charlie Wilson’s War&lt;/a&gt; on IMDB.&lt;/p&gt;

&lt;p&gt;Based on &lt;a href=&quot;https://www.goodreads.com/book/show/29358.Charlie_Wilson_s_War?from_search=true&amp;amp;from_srp=true&amp;amp;qid=VjKrjpC0QJ&amp;amp;rank=1&quot;&gt;the book&lt;/a&gt; by the same title.&lt;/p&gt;

&lt;p&gt;Similar theme be said to emerge with &lt;a href=&quot;https://www.goodreads.com/book/show/193388249-killers-of-the-flower-moon?from_search=true&amp;amp;from_srp=true&amp;amp;qid=zOTmQKgN8l&amp;amp;rank=1&quot;&gt;Killers of the Flower Moon: The Osage Murders and the Birth of the FBI&lt;/a&gt;. I believe a movie or a show was released, based on the book, but I’ve not seen it.&lt;/p&gt;

&lt;p&gt;Anything by Chalmers Johnson is thematically similar, like &lt;a href=&quot;https://www.goodreads.com/book/show/40709.Blowback?ac=1&amp;amp;from_search=true&quot;&gt;Blowback: The Costs and Consequences of American Empire&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;America’s/american attitude towards the rest of the world is similar to ‘its/their’ attitude towards native people (genocide, displacement, reservation-ization, not unlike Palestine) and the enslaved people that found themselves existing within ‘its’ borders, among “them”.&lt;/p&gt;

&lt;p&gt;War, death, enslavement. What a disaster to have unfolded on this continent. I wish it had never been like this.&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/recommended-reading&quot;&gt;Recommended Reading (and watching)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/studio-ghibli-a-favorite-production-studio&quot;&gt;A Love Letter to Studio Ghibli&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:mass-death&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I view all acts of mass killings as some enactment of supremacy. I dislike the concept of refinements in the USA of some sorts of supremacy as ‘white supremacy’. The phrase ‘white’ cedes too much to the supremacists. Supremacists of all flavors commit acts of dehumanization, of all flavors, against all/most/enough people they encounter, and themselves, of course.&lt;/p&gt;

      &lt;p&gt;I’ve always been interested in how and why (and THAT) things go wrong.&lt;/p&gt;

      &lt;p&gt;Have you yet crossed paths with the &lt;a href=&quot;https://en.wikipedia.org/wiki/Rwandan_genocide&quot;&gt;Hutu massacre of the people of Tutsi heritage/ethnicity/class&lt;/a&gt;? The 1991 genocide in rwanda? in a small number of days, many people were murdered, often-enough by machete. It’s close enough to the distinctively american tradition of &lt;a href=&quot;https://www.goodreads.com/book/show/61676927-i-saw-death-coming&quot;&gt;night riding&lt;/a&gt;. &lt;a href=&quot;#fnref:mass-death&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:horrifying&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’d first written &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;horrifying&lt;/code&gt;, in a slow, unfolding way. The subject, who murdered a lot of people and then made a documentary about it, determined that &lt;em&gt;because he played a role in a movie&lt;/em&gt;, being pretend-tortured and pretend killed, he had appreciation for the experiences of his victims, and thus &lt;em&gt;was forgiven for his actions&lt;/em&gt;!!! Maybe I’m wrong. You watch it and tell me if you get something else. &lt;a href=&quot;#fnref:horrifying&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Words and Phrases I Find Myself Using and Avoiding, with Kid</title>
   <link href="https://josh.works/words-i-use-and-avoid"/>
   <updated>2025-09-18T13:00:00+00:00</updated>
   <id>https://josh.works/words-and-phrases-i-use</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;As is common for how I write these posts, this began as a few pages of paper notes, collected across weeks and months.&lt;/p&gt;

&lt;p&gt;This is a list of words and phrases and sentiments I find myself using around Eden, and a list of some words and sentiments I &lt;em&gt;never&lt;/em&gt; use around Eden.&lt;/p&gt;

&lt;p&gt;I noticed, for instance, that I don’t say ‘nice work’ or ‘good job’, and many, many other people DO say those things in the face of many aspects of any sort of accomplishment.&lt;/p&gt;

&lt;p&gt;I’m much more likely to say something like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“that looked cool”&lt;/li&gt;
  &lt;li&gt;“that seemed like it was tricky”&lt;/li&gt;
  &lt;li&gt;“whoaa!!!!”&lt;/li&gt;
  &lt;li&gt;“was that interesting to you/did you find that to be difficult?”&lt;/li&gt;
  &lt;li&gt;“i see you!/I saw that!”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I intentionally don’t say &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;good job&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nice work&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When explaining it to someone else, I’ll say something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Capitalism already runs the world in so many ways, I prefer to not let it further intrude into such special emotional space as ‘delight’ and ‘interestingness’ by saying a child is ‘doing a job’ or ‘doing work’ when they’re experiencing some unrelated aspect of the human experience.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Often enough I thought of these in pairs. Something I &lt;em&gt;do&lt;/em&gt; say has a corresponding common phrase that I do not say.&lt;/p&gt;

&lt;p&gt;Here those notes, in the order in which I wrote them:&lt;/p&gt;

&lt;h2 id=&quot;page-1-things-i-do-and-do-not-say-to-kids&quot;&gt;Page 1, things I do and do not say [to kids]&lt;/h2&gt;

&lt;p&gt;I don’t issue commands. I try to not interrupt.  I don’t say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“good job”, “nice work”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;that looked interesting!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;was that tricky to you?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I try to not center it being about me validating her. Her validating herself, for sure. And sometimes even more, making the comment be more about taste, interestingness, awareness.&lt;/p&gt;

&lt;h3 id=&quot;how-i-compliment&quot;&gt;how I compliment&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;(the choice you made/thing you exhibited) seems:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;reflective of a refined awareness or sensitive taste.&lt;/li&gt;
    &lt;li&gt;inherently interesting&lt;/li&gt;
    &lt;li&gt;funny&lt;/li&gt;
    &lt;li&gt;laudible&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;things-i-say&quot;&gt;things I say&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;mmm&lt;/li&gt;
  &lt;li&gt;hmm&lt;/li&gt;
  &lt;li&gt;oh, that &lt;em&gt;is&lt;/em&gt; interesting&lt;/li&gt;
  &lt;li&gt;oh, that is &lt;em&gt;interesting&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;hmm, [thing they did] looked tricky.&lt;/li&gt;
  &lt;li&gt;was that tricky? (balancing on rocks, one foot, jumping, catching something, throwing something, riding a strider bike in a certain way.)&lt;/li&gt;
  &lt;li&gt;I usually say ‘tricky’ instead of what might be called ‘difficult’ &lt;sup id=&quot;fnref:tricky-vs-difficult&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:tricky-vs-difficult&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;was that interesting to you?&lt;/li&gt;
  &lt;li&gt;you looked so smooth and controlled doing {something they just did}&lt;/li&gt;
  &lt;li&gt;oh? what do you like that it/that/them?&lt;/li&gt;
  &lt;li&gt;what do you notice about it/that/them?&lt;/li&gt;
  &lt;li&gt;that took such balance!&lt;/li&gt;
  &lt;li&gt;you used such strength!&lt;/li&gt;
  &lt;li&gt;you kept at that for a long time&lt;/li&gt;
  &lt;li&gt;I feel that way too sometimes&lt;/li&gt;
  &lt;li&gt;you keep yourself safe!&lt;/li&gt;
  &lt;li&gt;thank you for helping keep yourself safe! &lt;sup id=&quot;fnref:you-keep-yourself-safe&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:you-keep-yourself-safe&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;paying attention to tripping hazards, wearing a helmet when on the bike, not bumping into something or falling off something, ensuring there’s not food in the mouth when jumping or rolling around on the floor&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;thank you for helping me help you be safe!&lt;/li&gt;
  &lt;li&gt;you help you stay safe (listening for cars when we’re out and about on foot/jogger, holding railings when going down stairs, reminding me to bring shoes for her to ride her strider bike later, holding my hand/staying close when crossing roads or slippery/slip/fall-prone surfaces)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Say the following things when they are true, and find ways to make these things true when hanging out with kids.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;that is a great idea&lt;/li&gt;
  &lt;li&gt;I’m pleased to help&lt;/li&gt;
  &lt;li&gt;thank you for letting me know that&lt;/li&gt;
  &lt;li&gt;I wish we/you could do that&lt;/li&gt;
  &lt;li&gt;maybe, some day, exactly that thing will happen!&lt;/li&gt;
  &lt;li&gt;I’d love to do something like that with you some day (riding horses, eating dumplings, many things inspired by what she sees others do, IRL or movies)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[another page of notes]&lt;/p&gt;

&lt;h2 id=&quot;i-do-not-say&quot;&gt;I do not say&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;because, because I said so&lt;/li&gt;
  &lt;li&gt;compliance countdowns. (“one… two… three…”)&lt;/li&gt;
  &lt;li&gt;say ‘please’, say ‘thank you’&lt;/li&gt;
  &lt;li&gt;any form of language or grammar correction. &lt;sup id=&quot;fnref:grammar-nazi&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:grammar-nazi&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;be careful, stop, come here &lt;sup id=&quot;fnref:commands&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:commands&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;i-say-instead&quot;&gt;I say instead&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;thanks for letting me know?&lt;/li&gt;
  &lt;li&gt;how is this? (food, the size the food has been cut to, temperature of water, the selection of an item of clothing)&lt;/li&gt;
  &lt;li&gt;good idea&lt;/li&gt;
  &lt;li&gt;you’ve got great taste&lt;/li&gt;
  &lt;li&gt;I easily use labels for things that work for her. When she says ‘lets go to cheese park’, I know exactly what she’s saying, and I call it cheese park. I don’t say ‘do you mean cheesman?’ or ‘I think you mean cheesman’. I use my own language skills to help reach towards whatever it is she’s trying to express, and then often-enough confirm with her that I’m understanding what she said.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;i-solicit--treat-with-warmth&quot;&gt;I solicit &amp;amp; treat with warmth:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;expressions of interest&lt;/li&gt;
  &lt;li&gt;curiosity, observations, introspection (she once said, when 3 years old ‘i used to not have so many words, but now I have so many words’. She was referring to things as far back as when she was 2, remembering when it was harder to communicate with me/other adults)&lt;/li&gt;
  &lt;li&gt;guidance &amp;amp; instruction (‘i need water’, ‘i need the bathroom’, ‘let me up’, ‘put me down’)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I might comment when I see a skill or interesting decision. I think kids experience beauty via interestingness. &lt;sup id=&quot;fnref:interestingness&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:interestingness&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; So, in the same way some people might look for or note beauty (sunsets, people, a tree) I look for and note interestingness.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“what skill you have”&lt;/li&gt;
  &lt;li&gt;“I see you moving so fast, jumping over things, spinning, balancing. wow.”&lt;/li&gt;
  &lt;li&gt;“wow that looked tricky”&lt;/li&gt;
  &lt;li&gt;not ‘good job’, but ‘hmm, i see so much fastness, quick turning, smooth movement. You seem so focused and graceful.’&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;another-page-of-notes&quot;&gt;Another page of notes:&lt;/h2&gt;

&lt;p&gt;Not exactly phrases, but…&lt;/p&gt;

&lt;p&gt;I speak well of, and celebrate, my own body/skillfulness, all the time. I do not criticize other people’s bodies or skills.&lt;/p&gt;

&lt;p&gt;I dislike being around people who often speak of themselves in critical ways. It’s less common to hear people speak positively about themselves.&lt;/p&gt;

&lt;p&gt;I grew up around lots of AFAB people criticizing their own appearance and bodies. &lt;sup id=&quot;fnref:looks-policing&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:looks-policing&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; This is America, that energy is tragically strong, obviously, in many different manifestations. A way that I move to counteract this energy is that I allow Eden to hear how I express appreciation for what my body lets me do (climb, balance, jump, play, move myself and other things around, how it keeps me cool in the heat and warm in the cold) and I express appreciation and gentleness towards it when I feel sore or tired.&lt;/p&gt;

&lt;p&gt;I’ll also say things like “I like how I look in this hat” or “I like the look of these pants” or “I like how I look today.”&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Wow, my body carried me so far today on my feet, it is quite tired. we walked miles! how cool that my feet and legs can do that.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I speak well of my own skills. Not bragging, simply no false modesty. For instance, sometimes I crash to the ground under a tension board, pop to my feet, and state to myself (or anyone else) with complete seriousness:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;That was some damned good rock climbing there.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or I send something, and I say the exact same thing, with as much seriousness. I often enough direct the same sentiment at others, when I witness it.&lt;/p&gt;

&lt;p&gt;why? bc sometimes I do some damned good rock climbing, by my book. If I saw someone else do some of those moves, and they thought well of themselves, I’d never dream of diminishing their accomplishment. So I don’t diminish my own. I’m skillful at climbing, usually plenty of times in a gym session I’ll do a move in such a way that I think “nice, that was pretty good”.&lt;/p&gt;

&lt;p&gt;I also have great respect for quality efforts, without any particular results. Trying a hard move 8 times in a row, and I didn’t really get it any of the times? And each try felt full effort, or some subtle body positioning thing was gained? &lt;em&gt;nice&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;how-the-why-questions-sometimes-go&quot;&gt;How the ‘why’ questions sometimes go&lt;/h2&gt;

&lt;p&gt;Eden, at three years old, asks why-based questions, often enough. If she’s asking about something, she’s likely thinking about it, so I’ll give her the floor:&lt;/p&gt;

&lt;p&gt;She asks a question, I might respond with:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;hmm, that’s an interesting question. why do &lt;em&gt;you&lt;/em&gt; think that might be?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;…I listen to her thoughts…&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;ah, yes. you’re saying that maybe [rephrase what she said]?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;yeah, that could be it. &lt;sup id=&quot;fnref:that-could-be&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:that-could-be&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;food-things-with-kid&quot;&gt;Food things with kid&lt;/h3&gt;

&lt;p&gt;a collection of norms I’ve noticed with Eden, including food norms from when she was first beginning to eat solids, which started as simply augmenting the nutrition she was getting from her mom. Because of the norms of &lt;a href=&quot;/on-peeing&quot;&gt;elimination communication&lt;/a&gt;, it was natural to observe her expressions of hunger and thirst. As natural as observing the patterns of elimination.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;food is/was always given, either what parents were making for themselves, and/or whatever she could communicate to us as wanting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Long before she could use words, she could say more, no, and yes, (in that order) with sign language. So, we could present options one at a time, and she could say “no, no, no, more” and get exactly the food that she wanted (the 4th thing in the list), and we could easily sort whatever it was that was needed.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;if it’s around, in the house, it’s available to eat.&lt;/li&gt;
  &lt;li&gt;no rigid eating times. I, Josh, &lt;a href=&quot;/cgm#strong-defaults-will-win&quot;&gt;do not eat breakfast&lt;/a&gt;, obviously kids usually eat food in the mornings; I get her food when she expresses an interest. Sometimes it’s upon waking up, sometimes not. Sometimes it’s for a traditional breakfasty thing, sometimes it’s not.&lt;/li&gt;
  &lt;li&gt;some of the unconventional favorite foods that Eden often requests: broccoli, mushrooms, brussle sprouts, asparagus, ‘mustard eggs’, sardines, salmon, kimchi, sriracha, pickles (not olives), almonds. She likes dark chocolate, vanilla ice cream, casadillas of many varieties. &lt;sup id=&quot;fnref:i-make-good-food&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:i-make-good-food&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;a &lt;a href=&quot;https://lilhelperusa.com/collections/mats&quot;&gt;little helper&lt;/a&gt; lifesaver mat, original size is what I have, and it’s great. Waterproof and very absorbent. helpful for meals, and a nighttime sleeping mat for her, for any night time urination.&lt;/p&gt;

&lt;h3 id=&quot;misc&quot;&gt;Misc&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Eden very confidently ensures that her mouth is empty of food or gum before jumping on/off of things, or flipping upside down. Always spits gum out, if any is in the mouth.&lt;/li&gt;
  &lt;li&gt;She is intentional about putting her hands out and trying to not hit her head or face when she falls.&lt;/li&gt;
  &lt;li&gt;happily puts on shoes and a helmet when riding her strider bike. (&lt;a href=&quot;/masks-breathing-helmets&quot;&gt;I love helmets&lt;/a&gt;. For me, and anyone else)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s easy to embody a collaborative and peaceful energy with her.&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://takingchildrenseriously.com/punishment-as-a-teaching-tool/&quot;&gt;Punishment as a Teaching Tool&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://takingchildrenseriously.com/we-shall-not-coerce/&quot;&gt;We Shall Not Coerce&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://takingchildrenseriously.com/children-do-not-want-parental-coercion/&quot;&gt;Children do not want parental coercion&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://takingchildrenseriously.com/the-primary-function-of-teachers-is-to-coerce-children/&quot;&gt;The primary function of teachers is to coerce children&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/on-peeing&quot;&gt;On Peeing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/studio-ghibli-a-favorite-production-studio&quot;&gt;A Love Letter to Studio Ghibli&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:tricky-vs-difficult&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I could write a whole blog post about tricky things vs difficult things. Often a difficult thing has a bunch of unknown/hard-to-see patterns to it. But once the pattern is learned, it’s hard to unsee it. Easy example, in the same way that someone can use their hips to generate power inside of a punch, one can use their hips to generate power when throwing a frisbee. Someone who doesn’t know/has never experienced using their hips and ‘hip rotation’ to add power to their limb (be it for throwing an empty hand or a hand holding something) might find some of those throws to be (correctly) quite difficult, regardless of how they power them. Someone who &lt;em&gt;can&lt;/em&gt; move power from hips to frisbee will find it sometimes effortless. I always describe these things as tricky. It’s tricky to do, but many things are, and a little practice could make a big difference. &lt;a href=&quot;#fnref:tricky-vs-difficult&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:you-keep-yourself-safe&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;catching herself with her hands when she falls, noticing tripping hazards, being thoughtful and cautious around roads, stairs, when climbing up and down things, noticing things. Emptying her mouth of food before rolling around on the ground or jumping up and down. putting cushions down to soften potential falls. many different potential decisions when riding her bike. This is just a few things from a 3-year-olds perspective &lt;a href=&quot;#fnref:you-keep-yourself-safe&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:grammar-nazi&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;My estranged mother is/was a self-proclaimed ‘grammar nazi’, in both english and spanish. Have you encountered the sentiment, ‘Every joke works because there is some truth to it.’ 😬 ‘Correcting’ someone every time they try to express something, &lt;em&gt;even though you knew what they meant&lt;/em&gt;, can become very cruel, and can be used to build a wall between oppressor and victim. This is an extension of: high-authoritarian language, a form of social control, and is common enough in how colonialists replicated themselves onto/into their own/other people’s children. Think the horrible catholic schools that demand endless perfect formulaic compliance from the students, used to break up the communities of native peoples. &lt;a href=&quot;#fnref:grammar-nazi&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:commands&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I said before, &lt;em&gt;I do not issue commands&lt;/em&gt;. I think it’s a big deal, I could give it many more words than just this. &lt;a href=&quot;#fnref:commands&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:interestingness&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Here’s a coherent case for why many things (more than just people) find humor, novelty, interestingness to be delightful, adjacent to beauty. &lt;a href=&quot;/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;Driven by Compression Progress&lt;/a&gt; &lt;a href=&quot;#fnref:interestingness&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:looks-policing&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I consider this collection of dispositions and decisions ‘looks policing’. If someone says positive things about your appearance when, and only when, someone else puts on makeup and does their hair a certain way and wears certain clothing, that’s a form of ‘training via neglect’, but it’s identically as dehumanizing as punishing someone for non-compliance. to ‘reward’ behaviors as a strategy is simply encouraging compliance with whatever norm is being accorded to. The thing called ‘evangelicalism purity culture’ relies upon this sentiment. Having survived long enough/well enough to exit the cult I was raised in (evangelical purity culture) I now assess purity culture as rape culture. &lt;a href=&quot;#fnref:looks-policing&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:that-could-be&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;there’s a fundamental difference between ‘can something be true’ and ‘must something be true’.&lt;/p&gt;

      &lt;p&gt;I’m pretty imaginative, so I don’t need expressions to be particularly literal, in order to find lots of potential truth in it. Poetic expressions can be just as true (or even more true) than any other form of expression. Kids speak in poetic expressions more than most adults I know. Eden never encounters a squelching, punishing, shaming energy from me in response to her expressions. She’s not always poetic, but I take her words seriously because they’re as likely to contain something true and reasonable as anyone else’s expression. I know many adults that dismiss/diminish the words of young people, casually, out of hand, because the person is young. I dislike that energy. &lt;a href=&quot;#fnref:that-could-be&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:i-make-good-food&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I generally can make pretty delicious food, eden loves to eat it with me. I customize things for her, but I don’t think she has a ‘childish’ pallet - she eats spicy things, sometimes, and &lt;a href=&quot;#fnref:i-make-good-food&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>A Junction Efficiency Metric: Vehicles Per Square Meter Per Minute</title>
   <link href="https://josh.works/vehicles-per-sq-meter-per-minute"/>
   <updated>2025-09-13T13:00:00+00:00</updated>
   <id>https://josh.works/vehicles-per-square-meter-per-minute</id>
   <content type="html">&lt;p&gt;&lt;em&gt;still sorta drafty, but also its entirely possible the point is easily apprehended, and I’m way over-explaining&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Elsewhere, I’ve been referring to a ‘vehicles per square meter per minute’ calculation, when talking about junctions on mobility networks. The first place was this substack piece, &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;A Pattern of Repair: The Traffic Bean&lt;/a&gt;, then again in depth in &lt;a href=&quot;/traffic-bean&quot;&gt;The Traffic Bean: An Idea Applied to 17th &amp;amp; Monaco&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Overall I’m arguing that the traffic bean concept is one or two orders of magnitude more efficient than a traditional american-style light-mediated junction. Those are big claims. This metric (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vehicles per square meter per minute&lt;/code&gt;) is part of the math part of these claims.&lt;/p&gt;

&lt;p&gt;Again, later, I did a &lt;a href=&quot;/demonstration-on-downing&quot;&gt;demonstration on Downing&lt;/a&gt;, and addressed how by placing some cones, I got the junction size down by almost half, and the situation for everyone was dramatically safer/smoother.&lt;/p&gt;

&lt;p&gt;Here’s a bit of an example of what we’re about to discuss: It’s possible that this single graphic perfectly encapsulates everything I’m trying to share in the following &lt;em&gt;thousands&lt;/em&gt; of words:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/junction-before-after.jpg&quot; alt=&quot;cones on downing&quot; /&gt;&lt;/p&gt;

&lt;p&gt;See how those two shapes have different dimensions? and also specific, knowable dimensions? Now add the concept of ‘counting numbers of vehicles that can pass through the space in a given time’ and we have everything we need for a junction efficiency metric.&lt;/p&gt;

&lt;p&gt;I’ve noticed wishing for better ways to calculate some of the stunning differences in efficiency of certain road junctions.&lt;/p&gt;

&lt;p&gt;I’ve put this together partially by cutting the relevant pieces of other posts, and aggregating it here.&lt;/p&gt;

&lt;p&gt;Having a metric like this allows someone to say something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;configuration A gave 1 vehicle per 20 square meters per minute throughput. Configuration B gave 3 vehicles per 20 square meters per minute, and was preferable in many other ways, so we’re going with configuration B.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;the current junction moves .5 vehicles per 10 square meters per minute&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It allows two different junctions, of different sizes, to be compared. If one junction moves 30 cars per minute, and a different design moves 45 cars per minute, which one is better? If the 2nd junction is twice the square meters of the first one, it’s less efficient per square meter, even though it moves more vehicles.&lt;/p&gt;

&lt;h2 id=&quot;how-to-calculate-vehicles-per-square-meter-per-minute&quot;&gt;How To Calculate Vehicles per Square Meter per Minute&lt;/h2&gt;

&lt;p&gt;every junction moves vehicles, and can move a certain number of vehicles through it, in a certain time, and that junction has a certain shape/area.&lt;/p&gt;

&lt;h3 id=&quot;1-determine-the-size-of-the-junction&quot;&gt;1. determine the size of the junction&lt;/h3&gt;

&lt;p&gt;I think this is the easy part. Crack open Google Earth, and draw boxes around junctions. I’ve got a bunch of examples of other junctions here:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part-510&quot;&gt;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part-510&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s a few different ways a junction could be shaped. Everything is full of tradeoffs!&lt;/p&gt;

&lt;p&gt;Consider reading that piece (or the entire series) as context for this junction efficiency metric.&lt;/p&gt;

&lt;p&gt;It lets one say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;such-and-such junction is 290 square feet/26 sq meters, and such-and-such number of cars moved through it in five minutes. (3-5 minutes is probably the minimum time you’d want to do counts on a junction to get a per-minute time. One probably doesn’t need to count for a full hour to get an accurate time)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If a junction was 600 square meters, and in a 5 minute time at rough hour counted it as moving 150 cars, we could calculate it’s ‘vehicles per square meter per minute’ value. in this case, it would be:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;v/m²/min = 
150 vehicles / 600 sq meters × 5 minutes = 
150 / 3000 = 0.05 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;thus, it could be expressed as:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.05 vehicles per sq meter per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or could be expressed in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;square meters per minute per vehicle&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;1 vehicle per 20 m² per minute
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Who knows yet what the actual values are we might see for a junction.&lt;/p&gt;

&lt;p&gt;The expression seems reasonable enough, aids in reasoning about different junctions or plans.  I think it might make more intuitive sense once we start looking at certain junctions.&lt;/p&gt;

&lt;h3 id=&quot;2-do-some-vehicle-counts-example-from-the-17th--monaco-junction&quot;&gt;2. do some vehicle counts (example from the 17th &amp;amp; Monaco junction)&lt;/h3&gt;

&lt;p&gt;What do you think the value might be for the junction in question, in terms of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vehicles per square meter per minute&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;How many square meters do you think the junction is?&lt;/p&gt;

&lt;p&gt;These are the two questions I posed in the above drone video. Without actually doing the counts or looking yet at google earth, my predictions are:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;the junction size is probably about 40 meters in both directions/on two sides, which is 1600 square meters&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;as far as throughput:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The vehicles in 5 minutes is probably ~150.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thus, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;150 vehicles / 1600 square meters / 5 minutes&lt;/code&gt; would be how many &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vehicles per square meter per minute&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;≈ 0.01875 vehicles per square meter per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;gonna round that to .02, which is &lt;em&gt;two percent&lt;/em&gt; of a vehicle per square meter per minute!&lt;/p&gt;

&lt;p&gt;Or flipped:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1 vehicle per ~53.3 m² per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;rounding it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1 vehicle per 54 square meters per minute&lt;/code&gt;. Or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1 vehicle per 580 square feet per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I contend that 1 vehicle per square meter per minute (1 vehicle per 10 square feet per minute) is a better reasonable expectation for an efficient, performant junction. I’ll accept getting half-way there as a mid-point. :)&lt;/p&gt;

&lt;p&gt;this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1 of a vehicle per square meter per minute&lt;/code&gt; goal would be like two orders of magnitude higher than it currently is. that’s a ludicrous improvement, i say impossible in the USA, but i’ll settle for half of that improvement. 1 half of a vehicle per square meter per minute, or 1 vehicle per two square meters per minute. This is, I think, realistic. A typical sedan is 90 square feet. 1 square meter is 11 feet. so, a normal vehicle is about 10 square meters. or 10% per square meter per minute.&lt;/p&gt;

&lt;p&gt;This isn’t the first intersection I’ve done this evaluation for, I’m developing an ability to estimate, the last time I did the math on Colfax &amp;amp; Franklin, the final figure was atrocious. Like 2% of a vehicle per meter per minute. :(&lt;/p&gt;

&lt;p&gt;I’m going to watch the video again and count the total vehicles for a five minute period.&lt;/p&gt;

&lt;h3 id=&quot;21-the-counts-examples--time-lapse-video&quot;&gt;2.1 the counts, examples &amp;amp; time lapse video&lt;/h3&gt;

&lt;p&gt;The video is running at a 3x timelapse, in a continuous fashion, so every vehicle can be counted. It was taken at the peak of a morning rush hour. On my scooter I’m unimpeded by traffic, so it’s effortless for me to pop out to somewhere, even when traffic is maxed out.&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/5W8BM-LBG-Q?si=rO_7NKSgpCcDsNpu&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;five minutes is 300 seconds, and since the video is a 3x time lapse, that means I’m going to count the total number of vehicles that pass through the marked polygon in 100 ‘video seconds’:&lt;/p&gt;

&lt;p&gt;Before we start counting, lets determine exactly how large the junction is:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/17th_and_monoco_polygon_options.jpg&quot; alt=&quot;options for junction polygon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Lets see the square foot value for both of those polygons. We’ll do the math all the way through for both, of course.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/17th_google_earth_01.jpg&quot; alt=&quot;pull it up in google earth&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Above is the view of this junction in google earth. Next I’ll use the measuring tool to open a polygon drawing menu. The image below is what this looks like:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/17th_and_google_earth_02.jpg&quot; alt=&quot;draw a polygon, note the value&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So the ‘larger’ polygon is 1691 square meters.&lt;/p&gt;

&lt;p&gt;Lets look at the smaller option:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/17th_google_earth_03.jpg&quot; alt=&quot;draw a smaller polygon, note the value&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Simple enough, the smaller polygon is 1230 square meters.&lt;/p&gt;

&lt;p&gt;I’ll pause here for now, but the next step will be to measure the vehicles entering that shape.&lt;/p&gt;

&lt;p&gt;I’ll use the video I mentioned before, &lt;a href=&quot;https://youtu.be/5W8BM-LBG-Q?si=4UDXBRRjgWRbw7JA&amp;amp;t=15&quot;&gt;starting from when the intersection comes into view at the 15 second mark&lt;/a&gt; and continuing to the 115 second/1:55 mark, which is an equivalent of 5 minutes of real-time car counting.&lt;/p&gt;

&lt;h3 id=&quot;how-i-do-the-counts&quot;&gt;How I do the counts&lt;/h3&gt;

&lt;p&gt;Feel free to check my math or methodology.&lt;/p&gt;

&lt;p&gt;I’m sorta counting by light cycle. Pausing and replaying sections as needed, counting all the vehicles in that particular part of the light cycle.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;13 cars in initial light cycle, as the junction pans into view&lt;/li&gt;
  &lt;li&gt;38 cars on the southbound leg&lt;/li&gt;
  &lt;li&gt;9 cars on the northbound leg, ‘second blob’ after the start of the counting.&lt;/li&gt;
  &lt;li&gt;11 more on the next cycle going east&lt;/li&gt;
  &lt;li&gt;9 vehicles on the westbound cycle&lt;/li&gt;
  &lt;li&gt;13 more vehicles on the east-bound cycle, some turning south on monaco, some going west on 17th, some ending up north-bound monaco.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m at the 59 second mark on the video, that’s about half-way through the five clock minute sample. We’ve got 93 cars that I’ve counted going through the intersection at this point. I’m absolutely going to count twice.&lt;/p&gt;

&lt;p&gt;I’ve also paused to serve myself some food. Dinner’s ready. […]&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;32 more cars on the next southbound monaco light cycle&lt;/li&gt;
  &lt;li&gt;14 cars on the same northbound monaco light cycle (approx 59 seconds to 1:23 in the video)&lt;/li&gt;
  &lt;li&gt;9 more cars on the westbound cycle&lt;/li&gt;
  &lt;li&gt;8 cars on the matching eastbound cycle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ooh, the video pans away for a few seconds, so need to pause the vehicle counting&lt;/p&gt;

&lt;p&gt;pans back into sight at 1:39, there was 5 seconds of missed light cycle time (15 real-time seconds. I’ll extend the ‘end point’ that we time to by 5 seconds. We’re now going to the two minute mark)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;27 cars in the south bound monaco cycle, that’s visible&lt;/li&gt;
  &lt;li&gt;11 cars north bound&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;almost at time&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;2 more eastbound 17th&lt;/li&gt;
  &lt;li&gt;7 more westbound.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’re at time, lets count it up:&lt;/p&gt;

&lt;p&gt;110 more vehicles, in this second half of counting.&lt;/p&gt;

&lt;p&gt;There was 93 in the first half, so 203 vehicles passed through this junction in that five minute time span. “about 203” is true, might be 195, could I have over-counted? Or 208, maybe I under-counted. And maybe under some certain situations, like a bit more traffic from one direction, more cars would have gone through the junction because there WAS some time it was green and no one was using it.&lt;/p&gt;

&lt;p&gt;oh, what a sidebar, the amount of time a junction direction is usable but empty, or the time there are people waiting to use the junction, AND the junction is completely empty, as a percentage of the time it’s in operation.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The junction was completely empty while there were vehicles waiting to enter 28% of the time&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or something like that.&lt;/p&gt;

&lt;p&gt;So, like we’re discussing, how many vehicles in 5 minutes? &lt;strong&gt;203 vehicles in five minutes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s plug these values into the formula:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;203 vehicles | 5 minutes | 1690 square meters&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0.0240 vehicles per square meter per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or flipped:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1 vehicle per 41 m² per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;41 square meters is about the size of:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A small studio apartment (6.4 m x 6.4 m)&lt;/li&gt;
  &lt;li&gt;Half of a tennis court&lt;/li&gt;
  &lt;li&gt;A single parking space (with buffer) plus some sidewalk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Half of a tennis court to move a single vehicle in a minute? Seems ‘obviously inefficient’ to me.&lt;/p&gt;

&lt;p&gt;The way to make it more efficient, at first pass, would be to simply find a smaller area for the junctino. A square piece of asphalt controlled by lights does the job, sort of, but so too would a much smaller, circular junction with access/departure points for all directions of travel as needed.&lt;/p&gt;

&lt;p&gt;earlier I said, I contend that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1 vehicle per square meter per minute&lt;/code&gt; is a reasonable accomplishment. How might we get closer? The first pass would be to improve the number of vehicles that can use the junction, in a few ways, &lt;em&gt;and&lt;/em&gt; reduce by a significant percentage the amount of space directly allocated to the junction.&lt;/p&gt;

&lt;p&gt;If we could get 30% &lt;em&gt;more&lt;/em&gt; vehicles through it, and it was half the size, we’d have accomplished technically a stunning increase in efficiency.&lt;/p&gt;

&lt;p&gt;A first pass would be to reduce the junction size. Ironically, to reduce the size (and allow the continuous flow type design) would probably also increase the number of vehicles that can fit through the junction, but the number doesn’t have to budge for this to still be a gain in efficiency. If the junction was smaller, and the volume of vehicles stayed the same, the efficiency would obviously go up, relative to the reduction in junction size.&lt;/p&gt;

&lt;p&gt;For instance, compare the following:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;203 vehicles | 5 minutes | 1690 square meters
203 vehicles | 5 minutes | 550 square meters
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;203 / 5 * 1690?
203 / 5 * 550&lt;/p&gt;

&lt;p&gt;203 / 8450 = 0.024
203 / 2750 = 0.054 &lt;/p&gt;

&lt;p&gt;40.6 vehicles/minute 1690 sq meters = 0.02 vehicles per square meter per minute
40.6 vehicles/minute 550 sq meters  = 0.072 vehicles per square meter per minute&lt;/p&gt;

&lt;p&gt;That second value would be 3x the efficiency: 0.23704142&lt;/p&gt;

&lt;h2 id=&quot;animation-of-what-3x-efficiency-could-look&quot;&gt;animation of what 3x efficiency could look&lt;/h2&gt;

&lt;p&gt;3x the efficiency could be achieved purely by making the junction much smaller - 500 square meters vs 1600 square meters.&lt;/p&gt;

&lt;p&gt;Here’s a way this could be visualized. Do you see a the way that this exhibits better efficiency? This is only one possible way the difference can be viewed, obviously. This isn’t how junctions work exactly, but it perfectly shows one of the dimensions of efficiency improvements.&lt;/p&gt;

&lt;h3 id=&quot;intersection-efficiency-comparison&quot;&gt;Intersection Efficiency Comparison&lt;/h3&gt;

&lt;p&gt;If you had limited space and needed junctions in three different places, and nothing else about the space could be used for anything BUT moving these vehicles, which would you want more of?&lt;/p&gt;

&lt;p&gt;Both intersections process 203 vehicles in 5 minutes&lt;/p&gt;
&lt;canvas id=&quot;efficiencyCanvas&quot; width=&quot;800&quot; height=&quot;400&quot;&gt;&lt;/canvas&gt;

&lt;script&gt;
    const canvas = document.getElementById(&apos;efficiencyCanvas&apos;);
    const ctx = canvas.getContext(&apos;2d&apos;);

    const zones = [
      { x: 50, y: 100, w: 300, h: 200, area: 1690, color: &apos;#d0eaff&apos;, label: &apos;Large Zone (1690 m²)&apos; },
      { x: 450, y: 100, w: 150, h: 200, area: 550, color: &apos;#ffd6d6&apos;, label: &apos;Small Zone (550 m²)&apos; },
    ];

    const totalVehicles = 203;
    const duration = 5 * 60 * 1000; // 5 minutes in ms
    const vehicleRadius = 4;
    const vehicleSpeed = 0.5; // pixels per frame

    let vehicles = [];

    function spawnVehicle(zone) {
      return {
        zone,
        x: zone.x,
        y: zone.y + Math.random() * zone.h,
        dx: vehicleSpeed,
        color: &apos;black&apos;,
      };
    }

    function drawZone(zone) {
      ctx.fillStyle = zone.color;
      ctx.fillRect(zone.x, zone.y, zone.w, zone.h);
      ctx.strokeStyle = &apos;black&apos;;
      ctx.strokeRect(zone.x, zone.y, zone.w, zone.h);
      ctx.fillStyle = &apos;black&apos;;
      ctx.font = &apos;14px sans-serif&apos;;
      ctx.fillText(zone.label, zone.x + 10, zone.y - 10);
    }

    function drawVehicle(v) {
      ctx.beginPath();
      ctx.arc(v.x, v.y, vehicleRadius, 0, Math.PI * 2);
      ctx.fillStyle = v.color;
      ctx.fill();
    }

    function update() {
      ctx.clearRect(0, 0, canvas.width, canvas.height);
      zones.forEach(drawZone);

      vehicles.forEach(v =&gt; {
        v.x += v.dx;
        drawVehicle(v);
      });

      vehicles = vehicles.filter(v =&gt; v.x &lt; v.zone.x + v.zone.w);
    }

    function loop() {
      update();
      requestAnimationFrame(loop);
    }

    function spawnLoop() {
      zones.forEach(zone =&gt; {
        const rate = totalVehicles / duration;
        if (Math.random() &lt; rate * 100) {
          vehicles.push(spawnVehicle(zone));
        }
      });
      setTimeout(spawnLoop, 100);
    }

    loop();
    spawnLoop();
   &lt;/script&gt;

&lt;p&gt;My desire with the traffic bean isn’t even necessarily to move more cars through - it’s to reduce certain forms of pollution, difficulty, distress, waste, excesses.&lt;/p&gt;

&lt;p&gt;I think of the potential harm &lt;em&gt;to everyone&lt;/em&gt; of a crashing car as a form of pollution.&lt;/p&gt;

&lt;p&gt;Conversation with the people who live in that house indicate that everyone has become extremely aware of all sounds/implications of passing vehicles.&lt;/p&gt;

&lt;p&gt;One notes intrusive thoughts when one hears the sound of a whining, high-speed engine, wondering if it’ll take the turn or crash into a building. &lt;a href=&quot;/traffic-bean#how-to-deal-with-incorrect-speeds&quot;&gt;click here to read about how this plan handles the wide range of potential inbound speeds&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;different-ways-the-efficiency-could-be-expressed&quot;&gt;Different ways the efficiency could be expressed&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;≈ 0.081 vehicles per square meter per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or flipped:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1 vehicle per ~12 m² per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Part of the reason the traffic bean would be so much more effective than a light-controlled junction is there is no need for the junction to ever be completely empty, while there is anyone queued up to use it.&lt;/p&gt;

&lt;p&gt;So, a traffic bean allows anyone to go if there is room for them to proceed, no waiting around for a light to change.&lt;/p&gt;

&lt;p&gt;The space needed would be JUST a single lane in a large enough circle/bean shape to wrap around the center island, which would be be ‘hollow’, the inner space being returned to non-car uses.&lt;/p&gt;

&lt;p&gt;It being hollow like this would allow the junction size to be considered even smaller. Instead of a fully enclosed volume of space being allocated to the junction, JUST a unified connecting travel path the width of a medium-sized car lane running in a circle.&lt;/p&gt;

&lt;p&gt;The inside and outside would be unavailable to cars, so the junction square footage could be so much smaller.&lt;/p&gt;

&lt;p&gt;There’s some image mock-ups below.&lt;/p&gt;

&lt;p&gt;I’m thinking lots of space could be carved out, on the inside and outside of the ‘bean’ thing, which is how I’m getting to such a low square meter value:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;260 vehicles
5 minutes
400 square meters
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;an-audacious-goal&quot;&gt;An audacious goal&lt;/h2&gt;

&lt;p&gt;Lets see if a workable junction of that size could be achieved. Can we replace this 1600 sq meter junction with a 400 sq meter junction that moves &lt;em&gt;even more cars per minute&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;If so, it would give us:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0.13 vehicles per square meter per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or flipped:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1 vehicle per ~7.7 m² per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Which might be good enough for now. That gets us the 10x improvement I want.&lt;/p&gt;

&lt;p&gt;It’s such a ludicrous improvement, that even if it came with zero other benefits, it would be worth trying, but in reality this traffic bean thing comes with TONS of other benefits.&lt;/p&gt;

&lt;p&gt;An order-of-magnitude-improvement on efficiency, larger potential throughput, and reductions in all forms of emissions (noise, tailpipe, tire rubber microplastic, brake dust). (this is the result of the slow, non-rushed procession of vehicles through the junction, please refer to the poynton videos I have elsewhere on the page)&lt;/p&gt;

&lt;h3 id=&quot;achieving-a-400-square-meter-junction&quot;&gt;Achieving a 400 square meter junction&lt;/h3&gt;

&lt;p&gt;to get this junction, we’d want something bean shaped, with the inner shape hollowed out, like a doughnut. This frees up lots of square meters.&lt;/p&gt;

&lt;p&gt;The following shape is 147 sq meters:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/hollow_traffic_bean.jpg&quot; alt=&quot;147 square meters&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, this inside space can be subtracted from the outer space. Lets jot down a shape that could work for the outside.&lt;/p&gt;

&lt;p&gt;It needs to be only a single lane wide, with entry/exit points wherever needed.&lt;/p&gt;

&lt;p&gt;How would you feel about this shape? its 360 sq meters, which of course includes the 147 sq meters we’re gonna count as ‘for the people’ and not as space for cars:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/outer-bean.jpg&quot; alt=&quot;360 square meters&quot; /&gt;&lt;/p&gt;

&lt;p&gt;its 360 sq meters.&lt;/p&gt;

&lt;p&gt;so, less the inner area that doesn’t need to be counted,&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;360 sq meters (outside shape)  - 147 square meters (inside shape) = 213 square meters&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I had proposed that this junction could be 400 square meters, and we’ve used only a little more than half. I don’t think it will take 200 square meters to provide the access points for vehicles. the main shape could be clear now, I think, thus ‘the vibe of what I speak’.&lt;/p&gt;

&lt;p&gt;Lots of the remaining space would need to be ‘shaped down’ with traffic cones, until the right shape was found. Here’s a very crude example:&lt;/p&gt;

&lt;p&gt;The red inner lines are 11 feet long, which is certainly not a &lt;em&gt;wide&lt;/em&gt; lane, but isn’t super narrow, either. The dimensions here are pretty comfortable, even for commercial vehicles, I think. A normal sedan is almost 6 feet wide (and 14 feet long) A cement truck is 9.5 feet wide, including the mirrors, or 8.5 feet not including mirrors.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/extremely_crude.jpg&quot; alt=&quot;very crude mockup&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The above was my super wonky first mockup. Can you see what I’m aiming for, even as it’s obviously not the exact right shape?&lt;/p&gt;

&lt;p&gt;The junction has sorta widely-separated inputs and outputs, so this is a sorta extreme example of the paths that would be ‘carved out’ of the existing junction space.&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/traffic-bean&quot;&gt;the traffic bean&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;&quot;&gt;my first pass at this calculation, looking at a junction near my house&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part-072&quot;&gt;“Traffic Congestion” as Solvable, Part 4: Junction Repair: Decrease Dangerous Complexity by Increasing Safe Complexity&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part-22e&quot;&gt;Traffic Congestion as Solvable, Part 3: Intro to Path Shaping&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
</content>
 </entry>
 
 <entry>
   <title>A love letter to Studio Ghibli</title>
   <link href="https://josh.works/studio-ghibli-a-favorite-production-studio"/>
   <updated>2025-08-27T13:00:00+00:00</updated>
   <id>https://josh.works/love-letter-to-studio-ghibli</id>
   <content type="html">&lt;p&gt;I’ve had a bunch of notes floating around related to Studio Ghibli, a production studio started by &lt;a href=&quot;https://en.wikipedia.org/wiki/Hayao_Miyazaki&quot;&gt;Hayao Miyazaki&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you like movies, or have kids, and have not yet encountered Studio Ghibli, you’re welcome. I first encountered Studio Ghibli in 2020. Their first film was released in 1984, there’s now 22 films they’ve made. I’ve seen nearly all of them.&lt;/p&gt;

&lt;h3 id=&quot;studio-ghibli&quot;&gt;Studio Ghibli&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;first written sometime in 2024&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I brought this over from &lt;a href=&quot;/recommended-reading&quot;&gt;a page of recommended books&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I didn’t even hear of Studio Ghibli until I was quite old, and am now happily working on watching &lt;a href=&quot;https://en.wikipedia.org/wiki/Studio_Ghibli#Feature_films&quot;&gt;the entire 25 piece anthology&lt;/a&gt;. I’ve seen more than half.&lt;/p&gt;

&lt;p&gt;As you might imagine, there’s lots kids love about these pieces.&lt;/p&gt;

&lt;h4 id=&quot;a-little-history&quot;&gt;A little history&lt;/h4&gt;

&lt;p&gt;Studio Ghibli is a production studio that made/makes animated movies, starting in 1984, based in Japan. It’s refreshingly non-western. Haio Miyazaki was the founder/director. I’ve &lt;em&gt;ahem&lt;/em&gt; managed to find a collection of all the works with the original japanese audio and english subtitles. For movies I’ll watch and rewatch with Eden, I’ve usually ended up torrenting the movie so I can have the file, easily accessible, no streaming service required.&lt;/p&gt;

&lt;p&gt;Noteworthy starting points could be &lt;em&gt;Kiki’s Delivery Service&lt;/em&gt;, &lt;em&gt;Pom Poko&lt;/em&gt;, &lt;em&gt;My Neighbor Totoro&lt;/em&gt;, &lt;em&gt;Tale of Princess Kaguya&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I, personally, usually prefer them in the original japanese, with english subtitles.&lt;/p&gt;

&lt;p&gt;But I’ve now mostly see them with english language tracks, with eden.&lt;/p&gt;

&lt;p&gt;Amazon Prime has one version of &lt;em&gt;Totoro&lt;/em&gt;, as my toddler-aged kid calls it, and &lt;a href=&quot;https://archive.org/details/totoro-fox-dub&quot;&gt;the wayback machine/archive.org has an older english dub for free&lt;/a&gt;. I bought the Amazon one, and ended up torrenting the same file, just to save bandwidth on the many times we’ve seen the movie.&lt;/p&gt;

&lt;p&gt;I’m exploring finding good english dubs for the best ones, turns out there are plenty of good-enough ones. Some I’ve paid for, some I’ve found for free, sometimes both. There’s at least one Studio Ghibli that doesn’t have any spoken words, so the audio is available in &lt;em&gt;every&lt;/em&gt; language. It is a bit slow, and when Eden and I watched it, we skipped through most of it, and it didn’t get slotted for a re-watch like &lt;em&gt;Kiki’s Delivery Service&lt;/em&gt; or &lt;em&gt;Howl’s Moving Castle&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;HBO Max has a lot of studio ghibli. I agree with Lawrence Lessig: &lt;a href=&quot;https://www.goodreads.com/book/show/72011.Free_Culture&quot;&gt;Free Culture: The Nature and Future of Creativity&lt;/a&gt;, thus after suffering through HBO max and forced english dubs and UI changes for a while, I ‘gave up’ and torrented at least some of the entire collection, so I can have fine-grained control over subtitles and audio tracks via &lt;a href=&quot;https://www.videolan.org/vlc/&quot;&gt;vlc&lt;/a&gt;, and didn’t have to navigate crappy smart TV menus again.&lt;/p&gt;

&lt;p&gt;I usually look up the movie on Wikipedia before I watch it, to help contextualize/orient myself to time/place/context in which the movie was created.&lt;/p&gt;

&lt;p&gt;Here’s &lt;a href=&quot;https://www.bbc.com/culture/article/20200123-studio-ghibli-an-indispensable-guide&quot;&gt;a piece from the BBC&lt;/a&gt; that gives a brief introduction to every Ghibli piece.&lt;/p&gt;

&lt;h3 id=&quot;kikis-delivery-service&quot;&gt;Kiki’s Delivery Service&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;I jotted down some notes about this movie last time I watched it with my kid, she was ~3.5 years old when we first watched this together.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s the trailer:&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/4bG17OYs-GA?si=4IQ0LdWGp5D37BU-&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;It’s available via &lt;a href=&quot;https://thepiratebay.org/search.php?q=kikis+delivery+service&amp;amp;all=on&amp;amp;search=Pirate+Search&amp;amp;page=0&amp;amp;orderby=&quot;&gt;the pirate bay&lt;/a&gt;, or sometimes various streaming services. I’ve been able to now get good copies of all the Ghibli films Eden likes to see.&lt;/p&gt;

&lt;p&gt;Eden loves this movie, and so do I. One of my favorite aspects of the movie is that the depictions of cities is &lt;em&gt;stunning&lt;/em&gt;, beautiful.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/kiki_cityscape.jpg&quot; alt=&quot;beautiful city&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;it contains moving motifs about a coming-of-age young person&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;the part with birds, Eden and I skip, and the dirigible part at the end. It’s a bit intense, and she reminds me (when we’re starting the movie) that we’ll skip those parts.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;it’s about a very independent, earnest kid being treated well-enough, helped, cared for, by the people around her.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/kikis_delivery_service_city.jpg&quot; alt=&quot;more pretty buildings&quot; /&gt;&lt;/p&gt;

&lt;p&gt;no one betrays, tries to kill, or fabricates an evil, violent creature to attack someone’s family. (looking at you, &lt;a href=&quot;/notes-on-frozen-and-suzume&quot;&gt;&lt;em&gt;Frozen&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/kikis_delivery_service_view.jpg&quot; alt=&quot;restaurant&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;the aunt person (the painter in the woods) is so useful in the story.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;so few engines are heard in the entire movie. Normalized alternative modes of transport: walking, using a broomstick (which functions like a sky scooter?), or creative leg-powered vehicles, electric street cars.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;images/kikis_deliver_service_narrow_street.jpg&quot; alt=&quot;narrow street&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/this_can_exist.jpg&quot; alt=&quot;beautiful gate&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;no normalization of abuse or power dynamic exploitation (looking at you, &lt;a href=&quot;/notes-on-frozen-and-suzume&quot;&gt;&lt;em&gt;Frozen&lt;/em&gt;&lt;/a&gt;.)&lt;/li&gt;
  &lt;li&gt;no tanks, war planes, bombs, guns, police (mostly, and the main interaction with a police officer involves him getting tricked), military, teachers, school conflict, bedtimes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;look at the cobblestone streets!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/cobblestones.jpg&quot; alt=&quot;cobblestone streets&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Look at the streetcars!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/street_cars.jpg&quot; alt=&quot;streetcar&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I get sometimes viscerally angry that something like this is &lt;em&gt;possible&lt;/em&gt;, but American zoning/urban renewal/ethnic cleansing programs have caused cities to look like the normal american city - wide roads, parking lots everywhere, endless strip malls, soullesness, death. That many kids movies normalizes this form of urban design is sad.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/look_at_the_city.jpg&quot; alt=&quot;beautiful&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;it’s about a young girl starting and running a business, not at all interested or obsessed w/love interests. It aces the &lt;a href=&quot;https://en.wikipedia.org/wiki/Bechdel_test&quot;&gt;Bechdel test&lt;/a&gt;, in like ten different ways, &lt;em&gt;in contrast to literally every movie made by Disney&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;images/can_you_feel_it.jpg&quot; alt=&quot;how nice&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’ve written about the outsides of the buildings, the beautiful streets and buildings, but of course Studio Ghibli delivers beautiful interiors as well:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/interiors_are_lovely_too.jpg&quot; alt=&quot;inside&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here’s how Denver looks. I find it alternatively sad and angering that anyone expects anyone else to take shit like this seriously. American cities, under the guidance of supremacists/decendents of european americans, are car gutters and parking lots:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/parking_lots_and_car_gutters.jpg&quot; alt=&quot;car gutters and parking lots&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Do you know what used to exist, before these parking lots?&lt;/p&gt;

&lt;p&gt;The above satellite view of Denver depicts American-style ethnic cleansing. Americans would rather slaughter/destroy/exterminate an environment than allow that some other way of being is permissible.&lt;/p&gt;

&lt;p&gt;Reference &lt;a href=&quot;https://en.wikipedia.org/wiki/Agent_Orange&quot;&gt;Agent Orange in Vietnam&lt;/a&gt; The &lt;a href=&quot;https://en.wikipedia.org/wiki/Tulsa_race_massacre&quot;&gt;bombing of Black Wallstreet in Tulsa, Oklahoma&lt;/a&gt; R1 and R2 ‘race zoning’ designations.&lt;sup id=&quot;fnref:race-zoning&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:race-zoning&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; The state-sponsored extermination of the American Bison to ‘force the Indian onto the reservation’. &lt;sup id=&quot;fnref:reservation&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:reservation&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; the current, ongoing genocide of the people living in Palestine.&lt;/p&gt;

&lt;p&gt;Here’s what could be:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/what_a_view.jpg&quot; alt=&quot;beautiful&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;ponyo&quot;&gt;Ponyo&lt;/h3&gt;

&lt;p&gt;Delightful. &lt;a href=&quot;https://en.wikipedia.org/wiki/Ponyo&quot;&gt;Wikipedia entry for Ponyo (2008)&lt;/a&gt;. The literal title is &lt;em&gt;Ponyo on the Cliff&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The english dubs are great, I thought, and there is only one english dub floating around out there. My evaluation of at least one toddler’s experience of the movie (on the first, second, n-th experience) is that she very much likes it, and it engages a lot of her imagination and enjoyment, at least in the ways we’ve experienced it.&lt;/p&gt;

&lt;h3 id=&quot;my-neighbor-totoro&quot;&gt;My Neighbor Totoro&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/My_Neighbor_Totoro&quot;&gt;My Neighbor Totoro (wikipedia)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think my daughter watched it first at ~2.5 years old, sat enraptured almost the whole way, we spoke about it extensively after.&lt;/p&gt;

&lt;p&gt;The file I torrented only included the original audio, which isn’t helpful for an english-speaking toddler, even though she’s gotten along pretty well in japanese-language movies, or with me voicing via subtitles a bit.&lt;/p&gt;

&lt;p&gt;I think the best english audio is what I’ve found on Amazon prime - $4 to rent, $16 to buy:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/My-Neighbor-Totoro-English-Language/dp/B08123SMCH&quot;&gt;https://www.amazon.com/My-Neighbor-Totoro-English-Language/dp/B08123SMCH&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also found a different english dub online for free, but really dislike the voices, and find it unwatchable:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://archive.org/details/totoro-fox-dub&quot;&gt;https://archive.org/details/totoro-fox-dub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The latter voices the toddler in diminishing, stereotyped ways, and the dad’s voice feels equally mis-fitting to the context, while the amazon dub feels ‘right’.&lt;/p&gt;

&lt;p&gt;OK, here’s how I got the file with the right audio, so I can just &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd+space&lt;/code&gt; (open alfred) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[space]my n[tab][return]&lt;/code&gt; file-search query &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;my n&lt;/code&gt; focus first result, default open file in vlc.&lt;/p&gt;

&lt;p&gt;Eden learned this routine with &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Grinch_(film)&quot;&gt;the Grinch&lt;/a&gt; (she really liked the 2018 version, as did I, watched it many times, knows it takes no time at all to get playing. I really like the theme song, and it has lots of clever moments that )&lt;/p&gt;

&lt;p&gt;the search I ran to get the options: https://thepiratebay3.co/s/?q=my+neighbor+totoro&lt;/p&gt;

&lt;p&gt;what I ended up downloading:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;My Neighbor Totoro - Streamline - FOX English Dub.mp4&lt;/code&gt; (update nvm, wrong dub, don’t love this one)&lt;/p&gt;

&lt;h3 id=&quot;howls-moving-castle&quot;&gt;Howl’s Moving Castle&lt;/h3&gt;

&lt;p&gt;Howl’s Moving Castle, released in 2004, is nice. Strong anti-war themes, reflect’s Miyazaki’s opposition to the American Empire attacking Iraq in 2003. &lt;a href=&quot;https://en.wikipedia.org/wiki/Howl%27s_Moving_Castle_(film)&quot;&gt;Wikipedia&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’d like to read &lt;a href=&quot;https://en.wikipedia.org/wiki/Howl%27s_Moving_Castle_(novel)&quot;&gt;the novel it’s based on&lt;/a&gt; some day.&lt;/p&gt;

&lt;p&gt;Can be watched for free with english dubs (and downloaded) &lt;a href=&quot;https://archive.org/details/jnjnjnjnjnjnjnjn&quot;&gt;here on the Internet Archive&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/recommended-reading#studio-ghibli&quot;&gt;other things I’ve written about studio ghibli&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.imdb.com/list/ls066662290/&quot;&gt;all 22 studio ghibli movies (imdb.com)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h3&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:race-zoning&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Some of you know about residence zoning designations in the USA. Or, at least, that’s what I &lt;em&gt;thought&lt;/em&gt; the R1, single family homes, r2, multi family homes designation meant.&lt;/p&gt;

      &lt;p&gt;Residence zones imply, definitionally, commercial and industrial designations as well. Unfortunately ‘residence zoning’ was not the original intent of r1/r2 zoning. The person that first wrote up these designations did it in 1922, and wrote ‘race zoning: r1 - white, r2 - col*red, r3 - undecided’, and those designations persist in every. single. american. city. today. some cities have ‘improved’ the concept to ‘use zones’, ‘form zone overlays’, and/or ‘form types’. This all was first popularized &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;The Atlanta Zone Plan&lt;/code&gt;, I did a &lt;a href=&quot;https://josh.works/full-copy-of-1922-atlanta-zone-plan#race-zoning&quot;&gt;fairly detailed write-up/re-print/signal-boost&lt;/a&gt;, as it seemed/seems like a crucial piece of history, from a forensic/action perspective.&lt;/p&gt;

      &lt;p&gt;Any zoning expert in America who knows this history of american zoning (one doesn’t imply the other) knows that american zoning became law in &lt;em&gt;Euclid v. Ambler&lt;/em&gt;, 1926.&lt;/p&gt;

      &lt;p&gt;&lt;a href=&quot;https://tile.loc.gov/storage-services/service/ll/usrep/usrep272/usrep272365/usrep272365.pdf&quot;&gt;Here’s a PDF of the supreme court ruling&lt;/a&gt;, from the Library of Congress. Here’s some quotes:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;On November 13, 1922, an ordinance was adopted by
the Village Council, establishing a comprehensive zoning
plan for regulating and restricting the location of trades,
industries, apartment houses, two-family houses, single
family houses, etc., the lot area to be built upon, the size
and height of buildings, etc.
The entire area of the village is divided by the ordinance
 into six classes of use districts, denominated U-1 to
U-6, inclusive; three classes of height districts, denominated
 H-1 to H-3, inclusive; and four classes of area
districts, denominated A-1 to A-4, inclusive.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;This is a direct reference to that 1922 ‘atlanta zone plan’. &lt;a href=&quot;https://josh.works/full-copy-of-1922-atlanta-zone-plan#residence-districts&quot;&gt;here is a link to that exact text from the Atlanta Zone Plan&lt;/a&gt;. Read in the mayor of Atlanta’s own words his desires for residence districts and race zoning!!! That document got encoded, as is, into law.&lt;/p&gt;

      &lt;p&gt;Note that the discussion of ‘apartment houses’ is a dogwhistle for “those kind of people” or “non-white people”. From page 30 of &lt;a href=&quot;https://tile.loc.gov/storage-services/service/ll/usrep/usrep272/usrep272365/usrep272365.pdf&quot;&gt;Euclid v. Ambler, 1926 (library of congress/supreme court ruling) PDF&lt;/a&gt;:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;With particular reference to apartment
houses, it is pointed out that the development of
detached house sections is greatly retarded by the coming
of apartment houses, which has sometimes resulted in
destroying the entire section for private house purposes;
that in such sections very often the apartment house is
a mere parasite, constructed in order to take advantage
of the open spaces and attractive surroundings created by
the residential character of the district. Moreover, the
coming of one apartment house is followed by others,
interfering by their height and bulk with the free circulation 
of air and monopolizing the rays of the sun which
otherwise would fall upon the smaller homes, and bring-
ing, as their necessary accompaniments, the disturbing
noises incident to increased traffic and business, and the
occupation, by means of moving and parked automobiles,
of larger portions of the streets, thus detracting from their
safety and depriving children of the privilege of quiet and
open spaces for play, enjoyed by those in more favored
localities,-until, finally, the residential character of the
neighborhood and its desirability as a place of detached
residences are utterly destroyed.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:race-zoning&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:reservation&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;this paper, &lt;a href=&quot;https://web.archive.org/web/20200706150320/https://history.msu.edu/hst321/files/2010/07/smits-on-bison.pdf&quot;&gt;THE FRONTIER ARMY AND THE DESTRUCTION OF THE BUFFALO:1865-1883&lt;/a&gt; a good starting point for the tactic that european american descendants/colonialists used to destroy the plains indians. These kinds of people were given awards, lauded, and their ways of being were copied/pasted across this land:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;both civil and military officials concerned with the Indian problem applauded the slaughter, for they correctly perceived it a crucial factor that would force the Indian onto the reservation.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;blockquote&gt;
        &lt;p&gt;Phil Sheridan had finally gained control of the Shenandoah Valley,the &lt;em&gt;Journal&lt;/em&gt; recalled, by laying “waste the grain fields – the supply of food and forage to the enemy –and it was like robbing the Indian of his buffalo.”As long as the buffalo roamed in great herds the plains tribes would spurn the reservations.&lt;/p&gt;

        &lt;p&gt;Hence, according to the Journal,”to campaign against the buffalo would be, if successful, not only to destroy the enemy’s supplies, but to put the whole casus belli out of existence by annihilation.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:reservation&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Masks, Breathing, Helmets, Environmental Exposure, Risk Reductions</title>
   <link href="https://josh.works/masks-breathing-helmets"/>
   <updated>2025-08-14T13:00:00+00:00</updated>
   <id>https://josh.works/masks-breathing-and-helmets</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;still sorta drafty&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I find that at some level, nearly everyone I know will take actions to protect their head from the environment. A warm hat in the cold, something for shade in the sun. Sunglasses, perhaps, or safety glasses sometimes. Ear plugs here and there. Maybe a mask if they’re sick or in a really noxious environment.&lt;/p&gt;

&lt;p&gt;Hello, its me.&lt;/p&gt;

&lt;p&gt;Here’s a collection of thoughts, all of which relate to the theme of ‘protecting the part of the body we might call our head’&lt;/p&gt;

&lt;p&gt;(is a mask head protection or lung protection? etc)&lt;/p&gt;

&lt;p&gt;I wrote &lt;a href=&quot;/on-peeing&quot;&gt;a thing&lt;/a&gt; a time ago about peeing, and this post might be thought of as a similar grouping. Either &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;everything for me, having to do with head protection &amp;amp; adjacent topics&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;why I wear one mask or another so much&lt;/code&gt;&lt;/p&gt;

&lt;strike&gt;But&lt;/strike&gt;
&lt;p&gt;And &lt;em&gt;breathing&lt;/em&gt; is a big part of the masking thing. So it’s hard to draw the boundary exactly around what I’m writing about. Maybe after I finish writing I’ll re-do this section and it’ll be clear what unites the the set of topics we’re about to encounter.&lt;/p&gt;

&lt;p&gt;I recently wrote &lt;a href=&quot;/on-risk&quot;&gt;/on-risk&lt;/a&gt;, basically was two stories about risk that inform my decision-making. Whi&lt;/p&gt;

&lt;p&gt;This post got drafted the same time I was &lt;a href=&quot;/on-risk&quot;&gt;writing about risk &amp;amp; lynn hill’s near-fatal incident regarding a not-tied bowline &amp;amp; no safety check&lt;/a&gt;. In it, I briefly touch on the non-climbing related, safety-critical process of ‘ensuring the buckle of a helmet strap is closed’, as the most available-to-my-brain example of that ‘in some situations, once you start tying a knot, finish it’ principal applied elsewhere.&lt;/p&gt;

&lt;p&gt;That helmet-related aside turned into a paragraph, then into a big footnote, then I decided to pull the whole conversation into it’s own piece, and this is what you’re reading now.&lt;/p&gt;

&lt;h3 id=&quot;helmets&quot;&gt;Helmets&lt;/h3&gt;

&lt;p&gt;I love helmets. I don’t like head injuries. I find my full-face motorcycle helmet damned useful because it makes everything more peaceful - quieter, less windy, warmer, etc. My current helmet even has a shaded lense that I can flip down by pushing a lever on the helmet, so I can close the clear outer visor and have an inner shade layer, if I want.&lt;/p&gt;

&lt;p&gt;I wear a climbing helmet as well, 100% of the time I’m outside, climbing or belaying. I so like my full-face helmet that when I wear a climbing-style helmet, it feels barely good enough. No visor? Nothing covering the sides of my face or my chin? Psh, does it even count as a helmet?&lt;/p&gt;

&lt;p&gt;I’ll say more about helmets someday, for sure. I’m just… a big fan of helmets. [^helmets]&lt;/p&gt;

&lt;h3 id=&quot;earplugs&quot;&gt;Earplugs&lt;/h3&gt;

&lt;p&gt;Uuuugh what can I say about ear plugs? I wear them a lot.&lt;/p&gt;

&lt;p&gt;Virtually all the time I’m on my scooter, and often enough after I get off the scooter, I’ll leave them in.&lt;/p&gt;

&lt;p&gt;Especially any place that has music, or loud noises. I have tried and really like the Loop reusable ear plugs, but I mostly just use (and reuse) the orange disposable foam earplugs.&lt;/p&gt;

&lt;p&gt;I have a small bag I keep full in my sling bag/fanny pack, thus they’re always available. I wear them if I’m walking alongside roads with loud traffic, or concerts, or any sort of american indoor restaurant. Anywhere that someone has to raise their voice to be heard, I’m wearing earplugs.&lt;/p&gt;

&lt;p&gt;I sometimes sleep in the orange foam ones, but since I got the Loop earplugs, I’ve found myself much preferring those for sleep. They exert less pressure against the insides of my head, and though they don’t block quite as much noise as the foam ones, they block plenty of what I need blocked for sleeping. Most (all?) of the noise I happen to encounter by default when sleeping is vehicle noise.&lt;/p&gt;

&lt;p&gt;There’s correlations between things like ‘hearing loss and dementia’, but also loud environments &amp;amp; depression, &amp;amp; regardless of all that, I find loud environments unpleasant!  If I’m just walking around or near loud cars, or in any sort of loud environment, I’ll put in earplugs.&lt;/p&gt;

&lt;p&gt;I have very comfortable ear plugs that are less silencing than the foam ones, that I sometimes wear when I sleep, because I can hear vehicle traffic from where I sleep, unfortunately. I carry a small fabric bag of disposable orange earplugs in my ‘sling bag’/fanny pack/’purse’, so I always, always have earplugs available to me.&lt;/p&gt;

&lt;p&gt;So, not only do I wear ear plugs regularly enough when not on my scooter, I certainly wear them when I am on my scooter.&lt;/p&gt;

&lt;h3 id=&quot;nuisance-level-organic-vapor-relief-particulate-respirator-&quot;&gt;Nuisance Level Organic Vapor Relief Particulate Respirator (😷)&lt;/h3&gt;

&lt;p&gt;I have noticed sometimes someone asks:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Why are you wearing a mask?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;when they see me with a particulate respirator. (“mask”)&lt;/p&gt;

&lt;p&gt;I put it on just before putting on my helmet, and it’s sorta visible inside the helmet in some situations, and it’s of course visible as I take off my helmet, again.&lt;/p&gt;

&lt;p&gt;Sometimes there’s a certain energy with the question. it’s a different energy than the “what is that device attached to the side of your helmet” or “what’s the miles-per-gallon of that?” ‘&lt;sup id=&quot;fnref:cardo&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:cardo&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;There are so many things I like about wearing a mask, I’ll explain them below, but I note feeling that some of the reasons that float to my mind are more available to me when I am &lt;em&gt;not&lt;/em&gt; feeling like someone’s coming at me with preemptively defensive energy.&lt;/p&gt;

&lt;p&gt;I recently encountered a question about masking on my scooter. I’ll probably now start answering with “why wouldn’t I wear a mask?” and leave it at that.&lt;/p&gt;

&lt;p&gt;In the past, I’ve given an answer like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I used to ride a moped around without a mask, I used just a wool buff. Essential in the cold, obviously, and nice to have the extra protection against sun even when it’s not cold.&lt;/p&gt;

  &lt;p&gt;Then I ended up reading something that clicked as ‘oh, that makes sense’ as soon as I read it. Something like:&lt;/p&gt;

  &lt;p&gt;exposure to vehicle emissions correlates to an increase in symptoms of depression&lt;sup id=&quot;fnref:emissions&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:emissions&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

  &lt;p&gt;ya know? ✌️&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;that’s the answer I give if I’m feeling a bit defensive, or I feel like &lt;em&gt;they&lt;/em&gt; are getting defensive with me. ward them off with vulnerability!&lt;/p&gt;

&lt;p&gt;But if there isn’t defensive energy, here’s a bunch of the other reasons I love to wear a &lt;a href=&quot;https://www.amazon.com/3M-Particulate-Respirator-Nuisance-Organic/dp/B008MCV5ZM?crid=1C5PG6S5FNCP7&amp;amp;dib=eyJ2IjoiMSJ9.5vM4GRPcU-OVJXsUNDDQWso9zXZWpPoFgYSLi0BAF_4nq2V7rz3VO5P51OKAy6FQDowuxASeA1yMgIuOUdtPHaYaiZeZKguSiBLs7-8svbKFPXhxA4zpg7WMi5VbsreWIgVFq2Hw6LJM0J0MF5y-jAP_BsH2BmPhTxK2G0tYScGntcd0OHA-gAVBlWWWV6ibpwjT9Cts2gMQRxd2pPhnc2uWmkDGGKm0mgfou5fHeW2AGsQLIizvhgjYTI7FDOgdBSAaZCoB3KSBg9l9mMH1s8RaE0POrQtaZuhfThRmkPI.OuZypANOOC7TDP3QDL3atl1GT-zJA1plMnDxhqFDD0s&amp;amp;dib_tag=se&amp;amp;keywords=NIOSH-APPROVED+R95&amp;amp;qid=1753202998&amp;amp;sprefix=niosh-approved+r95%2Caps%2C173&amp;amp;sr=8-8&quot;&gt;Particulate Respirator 8247, R95, NIOSH APPROVED, Nuisance Level Organic Vapor Relief&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;I do not like to smell vehicle exhaust, and because of how scooters work, roads work, and how I ride my scooter, I sometimes am passing fairly close to the exhausts of vehicles, and even if not trailing a vehicle (and it’s plume of tailpipe and tire rubber emissions, all the time, or brake dust if it’s braking) sometimes big heavy vehicles under load pass by perpendicular to my path. Again, I sorta imagine a plume or a cone of emissions following the vehicle, sorta like a shockwave following an airplane exceeding the speed of sound. These masks, when worn correctly, cause me to not smell the exhaust nearly as much. I take that to mean there’s a commensurate decrease in the particulate count I ingest from the air if I happen to take a breath in the vicinity of that vehicle.&lt;/li&gt;
  &lt;li&gt;A mask provides great sun protection, thus I wear a mask even if I know I’m not going to be around any other moving vehicles (like 6am). I put on sunscreen every day, and do everything else I can to minimize sun exposure. A full-face motorcycle helmet covers lots of my face, and lots of potential directions sun/heat has to bounce onto my skin are thus completely blocked. Covers the top of the nose down to the chin, and the cheecks.&lt;/li&gt;
  &lt;li&gt;A mask adds a lot of warmth and wind reduction, pairs well with my full-face helmet. I always view comfort and safety as closely related. Staying comfortably warm is crucial, so in the winter my combination is a mask + a wool buff, and that inside my full-face helmet usually does well enough.&lt;/li&gt;
  &lt;li&gt;The mask helps me sorta pre treat the air I’m breathing. Do you know/can you recall the winter-time sensation of how air can become &lt;em&gt;quite&lt;/em&gt; painful to breath, if it’s sufficiently cold and/or you’re breathing sufficiently hard? And how the opposite of that is shallow, smooth breaths of warmed air? If you can have a breath of air close to your face sorta trapped in a scarf, that bit of the air is not painful, or is less painful to breath, than the air that’s not yet been warmed up. The mask creates a little bubble of air that stays warm, humid, and presumably a bit cleaner than the air outside the bubble, &lt;em&gt;especially if you’re in the middle of an intersection and changing light cycles and groups of accelerating vehicles&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;In the winter, a mask reduces &lt;em&gt;a bit&lt;/em&gt; the condensation with my breath and incrementally seems to lower the issues of a frosting-over visor.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The real win is to not have to deal with traffic at all, or unwanted vehicular trips at all, and sometimes that’s been the case for my life, and sometimes not. So this is how I protect my lungs when I ride around Denver.&lt;/p&gt;

&lt;p&gt;So much for masking.&lt;/p&gt;

&lt;h2 id=&quot;my-masking-norms-around-illnesssickness&quot;&gt;My masking norms around illness/sickness&lt;/h2&gt;

&lt;p&gt;I keep a fabric mask in my ‘sling bag’/purse thing, and I wear it 100% of the time if I ever feel sick, or am exhibiting symptoms of any sort of sickness. It goes straight into the wash after I wear it.&lt;/p&gt;

&lt;p&gt;Maybe it’s allergies, maybe I’m getting truly ill, so as soon as I feel nasal/respiratory/flu/stomach anything, I’m likely to be masked 100% of the time when I’m inside. It would be awkward to feel ill, not be masked, the next day feel way worse, find out it’s something severe, and &lt;em&gt;only then&lt;/em&gt; start wearing a mask. 😬&lt;/p&gt;

&lt;p&gt;I already wear a mask 100% of the time I’m on my scooter, wearing one other parts of the time is hardly distinctive to me.&lt;/p&gt;

&lt;p&gt;I’ll also more likely be wearing a mask out and about if I’ve been around a known-sick person, like sometimes when my kid is sick, or if I’m about to be around an immuno-compromised person, or if I’m around sick people. (So, sometimes, just a big-enough/dense-enough crowd is enough for me to put a mask on. or being at a hospital, even if I am not sick at all)&lt;/p&gt;

&lt;p&gt;It provides sun protection, too, and my nose is particularly prone to getting sunburned, so having ‘mechanical’ sun protection via a fabric mask is great.&lt;/p&gt;

&lt;p&gt;My mask also has flowers on it, I like flower-themed things, I don’t hate it like I’ve sometimes hated really severe-looking masks.&lt;/p&gt;

&lt;p&gt;That made sense. Especially because it might not be &lt;em&gt;just&lt;/em&gt; the increase in ingested vehicle consumables (brake pade dust, aerosalized tire rubber, tailpipe emissions), but because &lt;em&gt;to be close to the sheer physical and emotional weight carried in the structures generating all that pollution&lt;/em&gt; is to have your own physical form pretty aggressively exposed. To be somewhere where the pollution is high is to experience a known-harsh environment &lt;em&gt;that would be depressing/ensaddening even if there was no pollution to be ingested&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Also, to be exposed to more vehicle miles traveled is then, thus, to be exposed to more of the ensaddening conditions of what causes/correllates with vehicle emissions is to be exposed to a bit more ensaddening things, AND one gets low-level dosed with noxious stuff along the way.&lt;/p&gt;

&lt;p&gt;So, I see the state of ‘not exhibiting anything/enough of the things that some people say rounds to depression’ is achievable, certainly something that everyone is equally entitled to, and is made a bit harder or a bit less available as any portion of your life takes one into heavily polluted, dangerous places.&lt;/p&gt;

&lt;p&gt;Or, put another way:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you feel at all depressed, &lt;em&gt;and&lt;/em&gt; are ever exposed to vehicle emissions, here’s some ways that might help you reduce your exposure, because of some precautionary principal&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;masks--scootering&quot;&gt;Masks &amp;amp; Scootering&lt;/h2&gt;

&lt;p&gt;Sometimes I get asked why I wear a mask when riding my scooter around. I wear what looks like a heavy duty kn-95 type thing when on my scooter, I buy them by the 25 pack and wear them for a while. Maybe I could/should swap them out more frequently than I do, whatever. Better than nothing, and, again, it’s only part of the strategy for reducing how much vehicle pollution I ingest.&lt;/p&gt;

&lt;p&gt;I like it for two primary reasons:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;skin/sun protection (year round) and especially for the heat retention in the winter.&lt;/li&gt;
  &lt;li&gt;Part of a strategy of avoiding ingestion of the most prevelant categories of vehicle emissions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Did you know exposure to vehicle pollution correlates with increased signs of depression?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh, of course breathing the tailpipe emissions from combustion engines is bad!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;vehicles-generate-tremendous-pollution--emissions&quot;&gt;Vehicles generate tremendous pollution &amp;amp; emissions&lt;/h3&gt;

&lt;p&gt;This is a quick overview for why I &lt;em&gt;always&lt;/em&gt; wear a &lt;a href=&quot;https://www.amazon.com/3M-Particulate-Respirator-Nuisance-Organic/dp/B008MCV5ZM?crid=1C5PG6S5FNCP7&amp;amp;dib=eyJ2IjoiMSJ9.5vM4GRPcU-OVJXsUNDDQWso9zXZWpPoFgYSLi0BAF_4nq2V7rz3VO5P51OKAy6FQDowuxASeA1yMgIuOUdtPHaYaiZeZKguSiBLs7-8svbKFPXhxA4zpg7WMi5VbsreWIgVFq2Hw6LJM0J0MF5y-jAP_BsH2BmPhTxK2G0tYScGntcd0OHA-gAVBlWWWV6ibpwjT9Cts2gMQRxd2pPhnc2uWmkDGGKm0mgfou5fHeW2AGsQLIizvhgjYTI7FDOgdBSAaZCoB3KSBg9l9mMH1s8RaE0POrQtaZuhfThRmkPI.OuZypANOOC7TDP3QDL3atl1GT-zJA1plMnDxhqFDD0s&amp;amp;dib_tag=se&amp;amp;keywords=NIOSH-APPROVED+R95&amp;amp;qid=1753202998&amp;amp;sprefix=niosh-approved+r95%2Caps%2C173&amp;amp;sr=8-8&quot;&gt;3M Particulate Respirator R95, Nuisance Level Organic Vapor Relief&lt;/a&gt; when out and about on my scooter.&lt;/p&gt;

&lt;p&gt;Vehicles emit a variety of forms of pollution:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Tailpipe emissions (duh)&lt;/li&gt;
  &lt;li&gt;Brake pad metal dust&lt;/li&gt;
  &lt;li&gt;Tire rubber microplastics&lt;/li&gt;
  &lt;li&gt;Noise (engine noise. Tire/rubber rolling noise. The noise of the wind/pusshing through the air)&lt;/li&gt;
  &lt;li&gt;Light (both sunlight glaring off the car, and wildly obnoxious, hostile, aggressive headlights)&lt;/li&gt;
  &lt;li&gt;Psychological intimidation&lt;/li&gt;
  &lt;li&gt;the constant psychological threat of total destruction of whatever the vehicle might encounter, if it either deviates from the intended path, or doesn’t stop quickly enough in any particular way.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;electric cars are no better. They generate less/no tailpipe emissions, but tire rubber microplastics go up, and the space consumption &amp;amp; danger to others is the same as any other car.&lt;/p&gt;

&lt;h3 id=&quot;reducing-the-volume-of-polluted-air-i-might-encounter&quot;&gt;Reducing the volume of polluted air I might encounter&lt;/h3&gt;

&lt;p&gt;I assess that my lungs are kept relatively cleaner by me riding a scooter rather than riding a bike - I work hard on a bike, so I do lots of heavy respiration, and I’m moving slower/spending more time adjacent to the sources of pollution.&lt;/p&gt;

&lt;p&gt;If I were biking alongside high-pollution corridors, I’d be spending &lt;em&gt;extra&lt;/em&gt; time breathing &lt;em&gt;extra&lt;/em&gt; heavily, without a full-face helmet or a high-quality respirator.&lt;/p&gt;

&lt;p&gt;I don’t know how much extra air pollution I’d be exposed to, but it would be a lot. On my scooter I move quickly through polluted areas, I have the visor down and I have the quality mask, and because I’m not powering the vehicle with metabolic output, my breathing can be slow, relaxed. It allows me to hold my breath when anywhere close to engine exhaust.&lt;/p&gt;

&lt;h3 id=&quot;breath-holding-especially-when-close-to-accelerating-engines&quot;&gt;Breath holding, especially when close to accelerating engines&lt;/h3&gt;

&lt;p&gt;I have pretty good lung capacity. To enjoy/expand my own lung capacity, I combine light ‘training’ with good timing, to further reduce exposure to air pollution.&lt;/p&gt;

&lt;p&gt;I’ll hold my breath anytime I’m near engines/tailpipes emitting anything. When my current breath is ‘up’, I’ll smoothly exhale, take another deep breath, and then hold it again.&lt;/p&gt;

&lt;p&gt;Sometimes I hold a full breath, sometimes it’s a half-breath. I don’t do anything stressful, but it means I might take only a single breath in 60-90 seconds of scootering, timed to not ingest new air until I’m not overly close to a polluting vehicle. And I 100% nasal breath.&lt;sup id=&quot;fnref:nasal-breathing&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:nasal-breathing&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I have experienced enough of ‘the sads’ over the last few years that any incremental reduction of exposure to depression-exacerbating vehicle pollution feels like the right move.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh, you seem overly concerned about air pollution&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Vehicle tires are consumable, right? Smallish sedan tires are 20 lbs. Heavier pickup trucks (ick) are 45-100 lbs. A few pounds of rubber is aerosolized and ejected into the environment when tires are used up.&lt;/p&gt;

&lt;p&gt;Tire rubber emissions obviously go up when the vehicle is braking or accelerating. The rubber is being pulled harder, so the emissions spike. Same with noise and tailpipes.&lt;/p&gt;

&lt;p&gt;this is why the Standard American Design for junctions (SAD junctions) are doubly egregious. The stopping and starting created by light-mediated and stop-sign mediated junctions is like a 10x increase in emissions, vs. something like &lt;a href=&quot;/traffic-bean&quot;&gt;the traffic bean&lt;/a&gt; which encourages slow, smooth, interleaved flow without stopping or the acceleration of a traffic light.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;4 tires on 10 million cars, losing 2 pounds per tire about every two years……..that’s like 80,000,000 pounds of rubber that seemingly just disappears into thin air! &lt;a href=&quot;https://forum.miata.net/vb/showthread.php?t=39073&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/science/comments/pd5dz8/exposure_to_trafficrelated_air_pollution_is/&quot;&gt;Exposure to traffic-related air pollution is associated with increased mental health service-use among people recently diagnosed with psychotic and mood disorders such as schizophrenia and depression. (r/science)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/3M-Particulate-Respirator-Nuisance-Organic/dp/B008MCV5ZM?crid=1C5PG6S5FNCP7&amp;amp;dib=eyJ2IjoiMSJ9.5vM4GRPcU-OVJXsUNDDQWso9zXZWpPoFgYSLi0BAF_4nq2V7rz3VO5P51OKAy6FQDowuxASeA1yMgIuOUdtPHaYaiZeZKguSiBLs7-8svbKFPXhxA4zpg7WMi5VbsreWIgVFq2Hw6LJM0J0MF5y-jAP_BsH2BmPhTxK2G0tYScGntcd0OHA-gAVBlWWWV6ibpwjT9Cts2gMQRxd2pPhnc2uWmkDGGKm0mgfou5fHeW2AGsQLIizvhgjYTI7FDOgdBSAaZCoB3KSBg9l9mMH1s8RaE0POrQtaZuhfThRmkPI.OuZypANOOC7TDP3QDL3atl1GT-zJA1plMnDxhqFDD0s&amp;amp;dib_tag=se&amp;amp;keywords=NIOSH-APPROVED+R95&amp;amp;qid=1753202998&amp;amp;sprefix=niosh-approved+r95%2Caps%2C173&amp;amp;sr=8-8&quot;&gt;3M Particulate Respirator 8247, Pack of 20, R95, NIOSH APPROVED, Nuisance Level Organic Vapor Relief&lt;/a&gt;. Once you try a nice mask like this, it might be hard to go back. Once I started getting choosy about masks, I started wearing them &lt;em&gt;a lot&lt;/em&gt;. I appreciate that to smell a vehicle or be downwind of it while it’s changing its speed via brakes and thus increased rolling friction on the ground, or its changing its speed via the engine, and thus increasing the particulate shedding rate and tailpipe emissions, is to be sorta ‘bathed’ in a plume of emisssions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:cardo&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The thing on my helmet: It’s a cardo audio system - I can listen to google maps and/or a podcast or music, and I’ve even done phone calls with it while riding, but my voice is kinda hard to hear at medium to high speeds, so I don’t use it a lot. And it does 90 or 100 miles per gallon. (~40 km per liter) &lt;a href=&quot;#fnref:cardo&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:emissions&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;vehicles emit not just the tailpipe emissions, but tire rubber microplastics and brake dust floating in the air. most environmental plastic contaminant is rubber that’s simply rubbed off of tires. We all ingest so much of it. Vehicles also emit light (sun reflections during the day, horrific light pollution at night), they emit noise, engine noise, tire rolling noise, and wind noise.&lt;/p&gt;

      &lt;p&gt;They also emit space consumption, the ‘at rest’ 140 square feet a vehicle consumes, plus the access to the at-rest spot if they’re in a parking space. A parking space is considered to be the space plus half of the adjacent access lane. might be 325 sq feet, total.&lt;/p&gt;

      &lt;p&gt;A vehicle in motion emits consumed space to the tune of 400 sq feet per second at 10 mph, or 640 sq feet per second at 20 mph, etc. &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part&quot;&gt;more details and visuals here&lt;/a&gt;. at 60 mph, a vehicle emits consumed space at a rate of 3190 sq foot per second!!! &lt;a href=&quot;#fnref:emissions&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:nasal-breathing&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The nasal breathing thing for me was round-about. The first part was when &lt;a href=&quot;/tongue-tie&quot;&gt;I got my tongue tie fixed&lt;/a&gt;. The myofunctional therapy I did in prep for the procedure talked regularly about mouth position, tongue position. Nasal breathing. It matters. About the same time I also read &lt;a href=&quot;https://www.goodreads.com/book/show/48890486-breath&quot;&gt;Breath: The New Science of a Lost Art, by James Nestor&lt;/a&gt;. So I breath through my nose now 100% of the time, &lt;em&gt;except&lt;/em&gt; extremely high output aerobic activities, and even then I resist the mouth breathing as long as I can, and as soon as the need for air goes down again to where I can breath through my nose, I do so. I do short sprints, and keep the nasal breathing, and most of my rock climbing happens with nasal breathing. &lt;a href=&quot;#fnref:nasal-breathing&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Taiwanese &amp; Balinese Scooter Norms</title>
   <link href="https://josh.works/scooter-norms"/>
   <updated>2025-08-14T13:00:00+00:00</updated>
   <id>https://josh.works/balinese-scooter-norms</id>
   <content type="html">&lt;p&gt;Sometimes I’ve told people “I ride with Asian scooter norms.” or “I ride with Taiwanese and Balinese scooter norms”. Here’s what I mean by this statement.&lt;/p&gt;

&lt;p&gt;a ‘norm’ is ‘something common, accepted, sometimes codified in law, but certainly accepted as ‘right’ or ‘acceptable’ or ‘ethical’.&lt;/p&gt;

&lt;p&gt;There’s a distinctive vibe on scooters in Bali, and since I’ve spent a bunch of time there (partially because of their lovely scooter norms!) I brought with me lots of habits and skills from Bali, and some of the scooter-specific social/technological innovations common in Taiwan.&lt;/p&gt;

&lt;p&gt;Since I ride in the USA in ways affected by what’s common in Bali. I also do some ‘mental imports’ of norms from Taiwan in some specific ways.&lt;/p&gt;

&lt;h2 id=&quot;interesting-scooter-movement-patterns-noticed-in-taiwan&quot;&gt;Interesting scooter movement patterns noticed in Taiwan&lt;/h2&gt;

&lt;p&gt;Lets discuss some norms common to Taiwan, first.&lt;/p&gt;

&lt;p&gt;I once had a 24 hour layover there, and it wasn’t my first time in the city, so I already knew I was looking forward to exploring it.&lt;/p&gt;

&lt;p&gt;The first time I’d been to Taiwan, I’d only a few times ridden a 50cc scooter in Greece on a few days long climbing trip. I didn’t particularly enjoy the experience, it sorta soured me on scooters, overall. The vehicle was loud and rattly and barely got even just me up hills, let alone me and a passenger and gear. Years later, I learned, in an experiential way, that a 125cc scooter can be a very different experience, much improved. I then ended up with a 170cc scooter, and loved it, I still have it, have ridden it everywhere.&lt;/p&gt;

&lt;p&gt;So, this time in Taipei, I had the motorcycle endorsement, and a new/updated international drivers license, and I had plenty of experience on my scooter in the USA, I’d ridden my 170cc scooter to Canada and back from Denver.&lt;/p&gt;

&lt;p&gt;I’d brought my gloves, my mask, ear plugs, various things to make the riding comfortable, as I planned on making regular use of rental scooters. the place I stayed was next door to a scooter rental place, it was cheap, and I love riding scooters around, and found everything about it interesting. For instance, it’s nearly impossible to rent a scooter, or even a motorcycle, in the USA. bummer.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://trip-displayer-21ca9ac0f616.herokuapp.com/?zoom=14&amp;amp;latlng=25.049867,%20121.516728&quot;&gt;here’s a link to a map that shows my exact trip around for the day. Some of the line is the fast train from the airport.&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s an image of what opens on the map, if you click the above link:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/taipei_scoot.jpg&quot; alt=&quot;taipei scoot&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Taiwan has exceptional scooter norms, and most of the people moving around are on scooters.&lt;/p&gt;

&lt;p&gt;Most of the space is still given to/taken up by the small number of people in very large cars, but, unlike the norms of the greater united states, the cities were never quite torn up (‘urban renewal’) with car colonialization quite the same.&lt;/p&gt;

&lt;p&gt;Taiwan’s mobility network is still over-affected by American road norms, of course.&lt;/p&gt;

&lt;h3 id=&quot;the-scooter-box&quot;&gt;The Scooter Box&lt;/h3&gt;

&lt;p&gt;A common feature in some junctions, especially junctions of a certain size, is a box painted on the ground ahead of where the cars and large vehicles stop, where all the scooter riders collect.&lt;/p&gt;

&lt;p&gt;Click &lt;a href=&quot;https://www.google.com/maps/place/Taiwan/@25.0569827,121.5157223,3a,75y,344.39h,74.25t/data=!3m7!1e1!3m5!1sfbF0RcEbTH90Ge9JfW5gaA!2e0!6shttps:%2F%2Fstreetviewpixels-pa.googleapis.com%2Fv1%2Fthumbnail%3Fcb_client%3Dmaps_sv.tactile%26w%3D900%26h%3D600%26pitch%3D15.752719281466483%26panoid%3DfbF0RcEbTH90Ge9JfW5gaA%26yaw%3D344.3901365898217!7i16384!8i8192!4m7!3m6!1s0x346ef3065c07572f:0xe711f004bf9c5469!8m2!3d23.69781!4d120.960515!10e5!16zL20vMDZmMzI?entry=ttu&amp;amp;g_ep=EgoyMDI1MDgxMi4wIKXMDSoASAFQAw%3D%3D&quot;&gt;this link&lt;/a&gt; to open a google street view image of a junction in Taipei. See the scooters in the painted scooter box?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/bike_box.jpg&quot; alt=&quot;bike box&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There is a scooter logo painted inside the box, it’s a ubiquitous feature of the environment. It makes things better for everyone in so many ways.&lt;/p&gt;

&lt;p&gt;Scooters filter to this box through stopped traffic, and then they can go in a blob when they light changes. (which changes a second early for scooters vs. regular cars)&lt;/p&gt;

&lt;p&gt;I treat american intersections similarly, the (usually empty) crosswalk space functions for me as ‘the scooter box’.&lt;/p&gt;

&lt;p&gt;If there are people in the crosswalk, I’ll still go to the front, I’ll just stay out of the crosswalk until it’s empty.&lt;/p&gt;

&lt;h3 id=&quot;the-box-turn-strategy-for-making-certain-left-turns&quot;&gt;The ‘box turn’ strategy for making certain left turns&lt;/h3&gt;

&lt;p&gt;To go left on certain roads, in Taiwan, one first goes right. Or proceeds around the junction with the shape of a box, but different than the above ‘scooter box’.&lt;/p&gt;

&lt;p&gt;Regardless, I use the concept when crossing American junctions, especially anything that seems like an arterial. Left turns on arterials, in particular, are very difficult/dangerous, or at least can be, and this box turn is a reliable problem solving strategy.&lt;/p&gt;

&lt;p&gt;Here’s a bunch of youtube videos explaining this concept: &lt;a href=&quot;https://www.youtube.com/results?search_query=taiwan+left+turn&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taiwan left turn&lt;/code&gt;, youtube&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This video is particularly nice, the embed starts at the 43 second mark:&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/1yv41KF9mjA?si=J7AQ4eum4PX6rrpP&amp;amp;start=43&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Here’s my written explanation:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;for certain junctions of certain geometries/dynamics, to go left, one first goes right. the junction is usually marked with a sign, which means ‘it is not expected that you collect on the left to go left, but on the right’. As one enters the junction, one pulls their scooter to a sometimes painted box, at the front-most part of the column of traffic waiting to proceed straight. When the light changes for them, they go straight, so do you, and it’s as if you’d gone left through the junction.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another way of phrasing it:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;where there is no access to a a protected left turn, to prevent otherwise having to wait in a risky spot, darting through gaps in traffic (something so common with american intersections).&lt;/p&gt;

  &lt;p&gt;one pulls to the front of the line of traffic waiting at the light to proceed straight. When it’s their turn, you go with them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s very unenjoyable to feel ‘pinned’ between fast traffic driving straight at you, as you’re waiting for a gap in one or two lanes, to go left, while having fast traffic passing by on the right side, continuing, because they are not going left.&lt;/p&gt;

&lt;p&gt;this is all solved by the &lt;a href=&quot;/traffic-bean&quot;&gt;traffic bean&lt;/a&gt;, by the way. Making every junction sorta roundabout-ish, with the right curve geometries to get a first-in-first out vehicle flow. The junctions can be made smaller, and can serve more vehicles at a smoother, more interleaved rate. my fantasy is to be able to say ‘coming soon to a junction near you’, plausibly. &lt;sup id=&quot;fnref:innuendo&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:innuendo&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Here’s what that alternative, a quick right turn to obtain a left turn, looks like:&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/FxOVH9_3u5Y?si=B-voWM1Jn70QI9Ux&amp;amp;start=301&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Painted on the ground, ahead of even the aforementioned scooter box, even closer to the junction, there is another square, it’s the collection point for scooters wanting to make a left turn.&lt;/p&gt;

&lt;p&gt;Thus, one first makes a right turn and stop at the very front of the traffic waiting for the light to change (in this box painted on the ground).&lt;/p&gt;

&lt;p&gt;Then, they wait the rest of the light cycle, out of the flow of traffic&lt;/p&gt;

&lt;p&gt;When the light changes and turns green for them, they now get to go through the junction with all the other scooter riders, just as protected as could be.&lt;/p&gt;

&lt;p&gt;I use this strategy to make left turns sometimes on my scooter in the states.&lt;/p&gt;

&lt;p&gt;There’s lots of signage for this in Taiwan, and after experiencing the first one, it was easy, peaceful, safe.&lt;/p&gt;

&lt;p&gt;I found riding my scooter around Taipei to be quite peaceful and safe.&lt;/p&gt;

&lt;h3 id=&quot;the-pre-green&quot;&gt;The Pre-green&lt;/h3&gt;

&lt;p&gt;Because all scooters collect at the scooter box, they have better views to the cross streets, and are smaller and do best moving as clumps anyway.&lt;/p&gt;

&lt;p&gt;The light counts down, and in some different ways will turn green for scooters before it turns green for cars. (in the videos from the box turn/left turn section, a few different green light countdowns are visible)&lt;/p&gt;

&lt;p&gt;I call it ‘taking the pre-green’, and is something I do in America, often enough. Some junctions will turn green for pedestrians crossing a second or two before turning green for cars.&lt;/p&gt;

&lt;p&gt;I’ll treat the pedestrian walk as a green light for me on my scooter, if I want. I never assume that cross traffic is stopping because of a light, by the way, I watch vehicles pointed at me/where I want to be very carefully.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;but wait there is more&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, I’ll take the honest pre-green, too. It still looks red in some ways, in some directions, and I’ve met some timer in my head and I go.&lt;/p&gt;

&lt;p&gt;I know when the light is going to change, especially because I’m so far to the front of the intersection I can easily see the light for the other direction of traffic. I know when it goes yellow, red, and I can stare straight down the line of traffic. Some of the junctions I’ve gone through thousands of times.&lt;/p&gt;

&lt;p&gt;I can tell (and indeed always note) if there is a vehicle, and if there &lt;em&gt;is&lt;/em&gt; a vehicle, I note if the speed is changing or the same, what it is, where, and so much more. intricacies of where the driver’s head is pointed (even if it’s not relevant to me), or I might note whatever path they’re taking across whatever stretch of asphalt they’re on. If they seem attentive or not.&lt;/p&gt;

&lt;p&gt;Anyway, if there is no car especially, I’ll ‘take the pre-green’ and will advance through the junction before the light turns green for the larger vehicles, as is common in Taiwan.&lt;/p&gt;

&lt;p&gt;I have a well-calibrated and sensitive process I use to go through junctions, safely. I have itchy brake fingers, I rarely rush. When I’m alone and on familiar paths, and it’s early in the morning perhaps, like 6:30a, I sometimes ride with a different energy than if I have a passenger, or a load of groceries, or it’s at night or it’s rush hour instead.&lt;/p&gt;

&lt;p&gt;Honestly, I’d rather not be perceived, so to anyone who’s ever seen me on my scooter and felt personally affronted (this has happened at least a few times), to you I’d say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Honestly, I wish I wasn’t there, then, for you to have to have seen me either. And if I were there, I wish you didn’t even notice me. Better luck next time, to both of us. Can I tell you a little about &lt;a href=&quot;/robert-moses&quot;&gt;robert moses&lt;/a&gt;? He’s sorta why the roads are the way they are, and the way that ‘enforcement’ works on them the way that it does.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;p&gt;So, from Taipei I bring the concept of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bike box&lt;/code&gt; to the USA. As well as the ‘left turn via bike box’ strategy.&lt;/p&gt;

&lt;p&gt;This contributes to my own safety, as a few common ways of getting injured on a vehicle like a scooter is getting rear ended by someone not seeing you, as they’re stopping. I never stop behind a stopped car, and rarely in front of moving cars, I’m thus ineligible for this sort of accident.&lt;/p&gt;

&lt;h3 id=&quot;masking-norms&quot;&gt;Masking Norms&lt;/h3&gt;

&lt;p&gt;It’s odd to me in the USA that wearing masks when on/near roads isn’t more common. It’s ubiquitous in Asia, and I now wear a mask 100% of the time I’m on my scooter. It’s like earplugs, to me. Ubiquitous, I store at least one mask in my scooter seat at all times, next to my rain layer. Here’s &lt;a href=&quot;/masks-breathing-helmets&quot;&gt;a long thing about my head/lung/skin protection norms&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;balinese-innovations-around-scooter-movements&quot;&gt;Balinese innovations around scooter movements&lt;/h2&gt;

&lt;p&gt;Bali is a pretty mountainous place, so lots of the cleverness of Bali’s mobility network is in the narrow, winding paths. Entire parking garages can be fit in a space smaller than two american parking spaces.&lt;/p&gt;

&lt;p&gt;This section could be 30 points long. Maybe it’ll grow with time. I have lots of video footage from Bali, I’ll add it here eventually.&lt;/p&gt;

&lt;h3 id=&quot;the-green-for-scooters-first-light-cycle&quot;&gt;The ‘green for scooters first’ light cycle&lt;/h3&gt;

&lt;p&gt;Often enough on the occasional light-mediated road junctions in Bali, one notices that the red lights blink red/white a few times before before they turn green. Sometimes similar to things visible in Taiwan, sometimes different.&lt;/p&gt;

&lt;p&gt;When the light starts blinking red/white (sorta a 3-2-1 countdown to the green light), the scooters can go, then when the light turns green, the large vehicles can go.&lt;/p&gt;

&lt;p&gt;in the USA, when I am on my scooter, I might treat intersections as if they’re equipped with the same feature.&lt;/p&gt;

&lt;p&gt;Because I am so close to the front of the intersection (see prior point, choosing to hang out in the bike-box/cross-walk) I can easily see long distances in both directions, and I always know exactly when the light will change, thus can choose to give myself pre-emptive green. &lt;sup id=&quot;fnref:jaywalking&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:jaywalking&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h3 id=&quot;making-excellent-usage-of-small-spaces-parking-edition&quot;&gt;Making excellent usage of small spaces, parking edition&lt;/h3&gt;

&lt;p&gt;Bali sees endless creativity with what can be packed on a scooter, where scooters can be ridden/fit, like gates and doors and ramps, and how they can be parked. (sorta anywhere)&lt;/p&gt;

&lt;p&gt;Scooters are small, can be easily moved, even if just a few inches, when parked and locked. Any event or venue or store or compound had functionally infinite parking, on site, mere steps from the destination. As parking would fill up, either parking attendents or newly arriving-by-scooter-visitors would jostle the parked scooters around a bit to park them more densely, and then would park their own vehicle. It was common to leave scooters without the locked steering column, and then the moving them around was even easier. Very convenient with parades. People walking ahead of the parade or street festival would just move around/clump together the parked vehicles, moving them as little as a few inches, once or twice as far as 20 feet up the curb. Similar to in Thailand if double-parking, or parking someone in, it’s convention to leave the vehicle in neutral so it can be rolled out of the way.&lt;/p&gt;

&lt;p&gt;These are all nice norms!&lt;/p&gt;

&lt;p&gt;If someone is making scooters orderly and trying to pack them densely, hundreds of scooters can be fit, easily, in a space that could be walked across in just a few steps.&lt;/p&gt;

&lt;p&gt;Thus, lots of parking was on the other side of a narrow gate, or a narrow path, and to pass through these small spaces was to feel very aware of having been transported from one place to another. Balinese doors and gates deserves its own blog post.&lt;/p&gt;

&lt;p&gt;I park my scooter at my house inside of a gated, locked, courtyard area. Under a roof, protected from rain and snow and sun, and with a cover on it. It’s nearly invisible in several ways, and it is the most convenient parking spot on site. I always have the best parking, because my eye is well-refined, at finding creative parking spots.&lt;/p&gt;

&lt;h3 id=&quot;scooters-flowing-around&quot;&gt;Scooters flowing around&lt;/h3&gt;

&lt;p&gt;I’m now used to evaluating american road networks as I evaluated Bali’s road networks - if cars are stopped, one goes around them, in a peaceful way. It’s easy and normal to give deference to whatever user of the space can be identified as most vulnerable. Pedestrians get priority over everyone, then scooters, then cars.&lt;/p&gt;

&lt;p&gt;In bali, paint is rarely placed on roads. road markings don’t often exist. Either center lines, shoulders, and much more. And where they do exist, they’re still much more of a guideline than is normal in the greater united states.&lt;/p&gt;

&lt;p&gt;Here’s a slice of what Balinese scooting norms looks like, on their most intensive highway. This is, truly, the largest highway on the island.&lt;sup id=&quot;fnref:bali-norms&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:bali-norms&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;script src=&quot;https://fast.wistia.com/player.js&quot; async=&quot;&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://fast.wistia.com/embed/6egwnjx8q0.js&quot; async=&quot;&quot; type=&quot;module&quot;&gt;&lt;/script&gt;
&lt;style&gt;wistia-player[media-id=&apos;6egwnjx8q0&apos;]:not(:defined) { background: center / contain no-repeat url(&apos;https://fast.wistia.com/embed/medias/6egwnjx8q0/swatch&apos;); display: block; filter: blur(5px); padding-top:177.78%; }&lt;/style&gt;
&lt;wistia-player media-id=&quot;6egwnjx8q0&quot; aspect=&quot;0.5625&quot;&gt;&lt;/wistia-player&gt;

&lt;p&gt;I’m trying to convey a sense of “every place has a distinctive way of doing something, some other places do things differently, sometimes its better”.&lt;/p&gt;

&lt;p&gt;I’ll find videos of some of the smaller roads, the ones that I usually encountered. I rode my scooter on the highway very rarely when I was there.&lt;/p&gt;

&lt;h2 id=&quot;american-legal-norms&quot;&gt;American Legal Norms&lt;/h2&gt;

&lt;p&gt;Often-enough I record myself riding my scooter around and I sometimes want to discuss how I go through junctions. I go through most junctions in a similar-enough way.&lt;/p&gt;

&lt;p&gt;I note wanting to reference this page and some of these norms. Additionally, in some places, 50 cc scooters are legal equivalents with a regular pedal-powered bicycle. So, in a stretch, a scooter can do what a bike can do. That mine happens to have a larger-than-50-cc-engine in it is… true.&lt;/p&gt;

&lt;p&gt;Bikes are ‘allowed’ to treat stop signs as yields. Rolling stop + idaho stop or something. Red lights are ‘allowed’ to be treated as stop signs. I have a firm stance on &lt;a href=&quot;/jaywalking&quot;&gt;jaywalking&lt;/a&gt; anyway. I can move my scooter at the same speed, agility, and ‘footprint’ that I can move myself on my own two feet, so sometimes I treat it exactly as I would me on my own feet. Just better carrying capacity, and easier to move around with.&lt;/p&gt;

&lt;h3 id=&quot;an-uncontrolled-vs-controlled-junction&quot;&gt;An uncontrolled vs. controlled junction&lt;/h3&gt;

&lt;p&gt;So, I discussed navigating a ‘controlled’ junction (those are anything where the path is affected by a stop sign or traffic light), and now lets discuss ‘navigating’ a ‘uncontrolled’ junction&lt;/p&gt;

&lt;p&gt;if you’re driving through a four-way junction, and cross-traffic has a stop sign and you do not, that is an ‘uncontrolled’ junction, in at least one, probably two, probably many more than two, ways.&lt;/p&gt;

&lt;p&gt;Another form of ‘uncontrolled junction’ is every time an alley and a street intersect.&lt;/p&gt;

&lt;p&gt;So street-street junctions can be uncontrolled, alley/street junctions. There’s more. They’re sorta like &lt;a href=&quot;/bollards&quot;&gt;bollards&lt;/a&gt;. Once you know what they are/how to identify them, you might notice them everywhere.&lt;/p&gt;

&lt;p&gt;Imagine a sign hung, that says ‘cross-traffic does not stop’. That sorta implies that the junction is uncontrolled, so you must wait until circumstances support your crossing.&lt;/p&gt;

&lt;p&gt;(a traffic bean brings all inbound speeds to ~10 mph and makes it so all traffic comes exclusively from the left, at 10 mph, thus one doesn’t need to worry about ‘cross traffic does not stop’ signs/dynamics. It can be made large, sorta like a traffic ‘ribbon’, if necessary, or really small)&lt;/p&gt;

&lt;h4 id=&quot;how-i-go-through-uncontrolled-junctions&quot;&gt;how I go through uncontrolled junctions&lt;/h4&gt;

&lt;p&gt;Because an uncontrolled junction is a matter of timing, passing through it can be a rare and special opportunity, especially for people in cars. Their mobility is less, the pressure they feel from lights and stop signs and other cars is much, much more than I feel. If I see a car with any sorta of ‘darting’ energy, or heavy on the gas, late on the brake, I stay well clear of them and anywhere they could bounce, if they hit someone else.&lt;/p&gt;

&lt;p&gt;if I see a person approaching from the left or right, as I’m passing straight, I’ll assume they don’t see me until I have reason to think they do. I might come to a FULL STOP and let them go through first. Why would I not? Because I believe in a fantasy of a thing called ‘right of way’? would never be me.&lt;/p&gt;

&lt;p&gt;I also check junctions for people crossing them by foot. I also am aware of, and stay out of, ‘the dooring zone’&lt;/p&gt;

&lt;h4 id=&quot;the-dooring-zone&quot;&gt;The dooring zone&lt;/h4&gt;

&lt;p&gt;when passing a car or a line of cars, parallel parked, imagine any of them (or all of them) opened the drivers side door all the way.&lt;/p&gt;

&lt;p&gt;Any part of the lane that would be reachable by the door (so, an aweful lot of bike lanes, of course) is called ‘the door zone’.&lt;/p&gt;

&lt;p&gt;My vehicle is not a bike, no one expects me to ride in the dooring zone, least of all me. But I’m intensely aware of it when on my scooter.&lt;/p&gt;

&lt;p&gt;That said, I might squish into the right side of a lane, to ease by some vehicle that is proceeding the other direction, or I won’t, or both.&lt;/p&gt;

&lt;p&gt;I go through all junctions sorta in a roundabout shape. Depending on speeds and cross streets, sometimes as I roll up on a junction, to reduce my exposure to complexity, I’ll plan on taking a right turn, instead of going straight. That eliminates from concern all traffic coming from the right, and I only have to ensure that the lane from the left is clear.&lt;/p&gt;

&lt;p&gt;I can do that, in a variety of ways, and based on the shapes of the junctions, vehicles parked around it, I can ‘clear’ with my eyes the left lane out a certain number of feet.&lt;/p&gt;

&lt;p&gt;Anywhere from 30 feet/3 meters (a pretty small bit of visibility, I wouldn’t go into a junction until I had a lot more than 30 feet of visibility) to 300 feet/100 meters or sometimes far beyond.&lt;/p&gt;

&lt;p&gt;So, I can plan on going right, and then sometimes I might make a u-turn, and then as I approach the junction from the opposite side, I might proceed straight (a j-turn, mentioned above) or make another right turn, which puts me as on the opposite side of the junction, going in the same direction as when I started it.&lt;/p&gt;

&lt;p&gt;Sometimes I make eye contact with other people, who’ve obviously watched the whole thing.&lt;/p&gt;

&lt;p&gt;For example, imagine the POV of a commercial vehicle driver, at the front of a line of traffic, waiting at a red light, who can see me approaching from many stopped cars away on the opposite side. I ride to the front of the line of traffic, make a casual right turn… then pop a quick u-turn after finding a good gap, making another right turn. Many a nod of appreciation has been given.&lt;/p&gt;

&lt;p&gt;Sometimes it’s a quick right turn-u-turn-right turn, or, if it’s ‘really fast’ it follows the shape of a traffic circle or a traffic bean, through the junction.&lt;/p&gt;

&lt;p&gt;At night, sometimes it’s much easier to see cars from much farther away, because most vehicles (certainly not all!) have headlights illuminated.&lt;/p&gt;

&lt;h3 id=&quot;on-headlights&quot;&gt;On Headlights&lt;/h3&gt;

&lt;p&gt;This can be annoying, as the recent proliferation of LED-type headlights is abhorrent, and can make visibility, especially with oncoming traffic and their headlights pointed right at you, very challenging.&lt;/p&gt;

&lt;p&gt;They blind one with the light, and cast deep shadows, making one’s ability to perceive intricacies of the surface one is riding over more challenging.&lt;/p&gt;

&lt;p&gt;At full, deep night, with no moon light or street lights, I might ride at not above 40 or 45 miles per hour, even on big roads where people in cars often go much faster. but even at that fast speed (not fast to motorcycles, very fast to someone like me used to mostly bicycle riding, before this) I can &lt;em&gt;easily&lt;/em&gt; stop the vehicle well within the cone of light cast by my high beams. Momentum (thus breaking distance) increases geometrically with speed. I vastly prefer to be on a road alone, with no one behind me, following me, and no one driving directly at me from the opposite direction, going the other direction.&lt;/p&gt;

&lt;h3 id=&quot;on-noise&quot;&gt;On noise&lt;/h3&gt;

&lt;p&gt;I don’t like to spook animals, or people, and I usually am quiet enough that I see people long before they notice me. There’s plenty of visual queues people give off when they notice me, be they walking or driving. It’s pretty clear in some situations if they have or have not noticed me, and I respond accordingly.&lt;/p&gt;

&lt;p&gt;This is part of why I dislike heavy window tint on vehicles. It makes it much, much harder to see anything about the vehicle operator. I know that’s the point, in some ways. Because of my helmet being an extension of my head, to the degree anyone cares, it’s laughably easy to see where my head is pointed, and sometimes easy eye contact can be made. Body language can be so expressive.&lt;/p&gt;

&lt;p&gt;And that’s just a person walking. If they’re in a car, I guarantee notice them before they notice me. I counted how often I check my rear view mirrors, recently, just so I know if there is anyone behind me, per block, and the answer was never less than three times.&lt;/p&gt;

&lt;p&gt;(another reason to use a ‘scooter box’ is that one of the main multi-vehicle car crash types involving two-wheeled vehicles is the driver of the car behind them not noticing that they’re stopped behind a car in front of them. Their eye never notices the stopped motorcyclist, and they just run the car right into them, from behind.)&lt;/p&gt;

&lt;p&gt;Because I almost never stop behind vehicles (and I check intensively the behaviors of the drivers of vehicles behind me, if I do), this entire accident class is unavailable for me to experience.&lt;/p&gt;

&lt;h2 id=&quot;contrasting-a-gentle-style-of-movement-with-american-style-rights-of-wayentitlements&quot;&gt;Contrasting a gentle style of movement with American-style rights-of-way/entitlements&lt;/h2&gt;

&lt;p&gt;When driving on the roads of the greater united states, or walking or biking or scooting or whatever, it’s extremely common to encounter entitled behavior.&lt;/p&gt;

&lt;p&gt;Even if &lt;em&gt;you&lt;/em&gt; do not operate in an entitled way, it’s common to see someone else. Vehicles not slowing down for pedestrians passing ahead of them is a form of entitlement, for instance.&lt;/p&gt;

&lt;p&gt;The concept of ‘right of way’ is a form of created-from-nothing entitlement. (It’s necessary to create the concept of &lt;a href=&quot;/jaywalking&quot;&gt;jaywalking&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Bali’s road networks and the people who use them don’t have these american-style entitlements, and where there isn’t entitlements, there can grow things like expectations. There are very few roads with center lines painted on them, for instance, and sometimes the roads are too narrow for vehicles to pass in opposite directions at speed. No sweat, it’s easy! When encountering a vehicle going the other way, the drivers coordinate pulling around each other, letting a tire run off the asphalt and onto packed dirt, and then back.&lt;/p&gt;

&lt;p&gt;There’s much less tailgating. not none! but there’s something distinct about american road networks. I sometimes get annoyed, feels like I have to defend that sentiment, then I ask about the driving experience of the other person, and it’s limited. how do I proceed?&lt;/p&gt;

&lt;h3 id=&quot;loud-enginesracing-engines-as-entitlement-and-supportive-of-bad-things&quot;&gt;Loud engines/racing engines as entitlement and supportive of Bad Things&lt;/h3&gt;

&lt;p&gt;loud engines are very popular in the USA. I view loud engines, or loud exhausts (including nearly every motorcycle) as supporting rape culture! deep breath.&lt;/p&gt;

&lt;p&gt;Loud engines normalize the indiscriminate (or highly discriminate) harassment of others. It can be targeted, like revving an engine “at” a person as the vehicle operator passes by on the street, or it can be non-targeted, and “just” everyone with the misfortune of hearing the engine is affected.&lt;/p&gt;

&lt;p&gt;I cannot endure the company of someone who even possesses a vehicle like this. I hate this aspect of car culture. Loud engines normalize harassment, dedignifying behavior, ruthless centering of the self, it’s the same kinds of entitlements necessary for rape culture, thus, I call it rape culture.&lt;/p&gt;

&lt;p&gt;I can tell when someone who’s walking in a quiet place becomes aware of the sound of the engine on my scooter. Even at medium acceleration, it’s not very loud. When I’m trying to be quiet, I’m almost completely silent. And at max volume, it’s still not very loud and it’s certainly not harsh. I also ride in a smooth way, I don’t inflict audible assault on the people I ride pass.&lt;/p&gt;

&lt;p&gt;If someone elects to make a lot of noise with their vehicle, I log that as a form of entitlement.&lt;/p&gt;

&lt;h3 id=&quot;other-forms-of-entitlements-common-on-the-mobility-networks-of-the-greater-united-states&quot;&gt;Other forms of entitlements common on the mobility networks of the greater united states&lt;/h3&gt;

&lt;p&gt;Heavy window tints, hiding the driver’s head and making it impossible for someone else to make eye contact, or to see where the driver’s head is pointed (pretty useful when seeing if the driver is maybe about to pull out in front of you)&lt;/p&gt;

&lt;p&gt;Really bright LED headlights that blind everyone that the headlights land upon, especially if they’re way beyond the line of sight for the driver.&lt;/p&gt;

&lt;p&gt;Tailgating. it’s no different than standing really close behind someone in a line, breathing in their ear.&lt;/p&gt;

&lt;p&gt;Being heavy on the gas and brake, or driving in a way that risks anyone else’s safety.&lt;/p&gt;

&lt;p&gt;I find scooting all over the world, and even in the USA to be relaxing and peaceful, often enough. More than a bicycle, for some reasons. More than a motorcycle, for some reasons. More than a car, for some reasons. More than my feet, for some reasons.&lt;/p&gt;

&lt;p&gt;I’d like to have some videos where I try to parse or explain some of how I move through junctions or road segments safely, but recording the video, audio, editing it all together, has thus far not really happened. I tried something like that &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7375181945073896747&quot;&gt;here&lt;/a&gt;, and don’t love it.&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:innuendo&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I told someone (sorta a gang member, I was very directly hustling on this traffic bean concept) ‘some people would certainly love the innuendo capacity of this traffic bean concept.’ and he laughed and said the more innuendo the better. So, if you are reading this, you are welcome. &lt;a href=&quot;#fnref:innuendo&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:jaywalking&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I also sometimes evaluate my scooter as close-enough to a bicycle, and a bicycle is basically being on foot. &lt;a href=&quot;/jaywalking&quot;&gt;I do not participate in concept of ‘jaywalking’&lt;/a&gt;, thus I use space in ways that I want to, crossing streets however I want. In a fair world, people in cars would feel responsible to not crush people or things outside the vehicle, and thus would not feel/act entitled to space in a way that threatens others. &lt;a href=&quot;#fnref:jaywalking&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:bali-norms&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;It’s inclusive of some things common in other parts of asia, exclusive of some things. Very distinctive. I rode many, many km in Bali and found it to be comfortable. Almost never did my speeds go anywhere close to what is common on American road networks.&lt;/p&gt;

      &lt;p&gt;In bali, every function of society could be done easily by scooter. Food delivery, taxi, water delivery, construction materials, and more. Entire square km were fully serviceable by a road that was, the entire length, quite narrow, well-suited to scooter tires and nothing larger. some so narrow that a single scooter was only centimeters from places one didn’t want to go: a narrow walled alley, an embankment of some sort. One paid attention! Most roads were not harrowing at all, some were certainly harrowing. &lt;a href=&quot;#fnref:bali-norms&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Framing, and Frame Control</title>
   <link href="https://josh.works/frame-control"/>
   <updated>2025-07-25T13:00:00+00:00</updated>
   <id>https://josh.works/frame-control</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;I’ve long wanted to have a definitive place where I can explain why I keep thinking of/referencing this thing I call, others call, ‘frame control’.&lt;/p&gt;

&lt;p&gt;Here’s a good-enough concise definition:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frame control: the act of insisting that only one way of seeing something is valid, and using emotional leverage to force others to adopt it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Its often-enough a tactic of control, especially when it’s a pattern, especially if there’s a power dynamic involved. (Parents ‘controlling the frame’ of their kids reality is how most people first experience frame control in their life.)&lt;/p&gt;

&lt;p&gt;The first time I encountered the phrase ‘frame control’ was in this excellent article:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://knowingless.com/2021/11/27/frame-control/&quot;&gt;https://knowingless.com/2021/11/27/frame-control/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We all hold various frames on all sorts of issues. A ‘frame’ is the collection of important-to-the-perceiver components of the situation. Someone who’s a heavily religious european american descendant living in the greater united states will often hold the frame of ‘the bible says…’.&lt;/p&gt;

&lt;p&gt;Someone else (or the same person) might at other times hold the frame of ‘this particular person says’ or ‘research says…’ or ‘a particular authority says…’&lt;/p&gt;

&lt;p&gt;Having a frame and using it isn’t the same as &lt;em&gt;controlling&lt;/em&gt; the frame. Two people could have two different perspectives on the same issue, two different frames, and there is not necessarily any conflict.&lt;/p&gt;

&lt;p&gt;The issues begin if one of the person is clinging tightly to their frame, and either refusing to move out of it, or refusing to grant the validity of a different frame. They’re &lt;em&gt;controlling&lt;/em&gt; which frame is giving space.&lt;/p&gt;

&lt;p&gt;It’s a form of invalidating someone else. Invalidating or dismissing someone else’s POV, especially in situations where there’s a power dynamic or it’s a family situation, is a short step away from emotional abuse and neglect.&lt;/p&gt;

&lt;p&gt;If it’s a peer situation and happens repeatedly, it’s pretty bad. If it’s a parent doing this to a child, it is horrible to the victim and the dynamic.&lt;/p&gt;

&lt;p&gt;Some people unintentionally ‘use’ frame control to try to achieve a certain outcome on a certain topic. It’s ‘just’ slightly coercive conversation, at it’s lightest, maybe.&lt;/p&gt;

&lt;p&gt;My religious-authoritarian/supremacist parents are great prototypical examples of the emotional/verbal abuse and neglect potential of frame control, in their own distinctive ways. My dad gets hostile if asked to step out of the frame of supremacist/patriarchal american pro-slavery evangelicalism. my mom gets ‘forgetful’, and gives a blank face in response to anything not directly connected to her rigid thoughts of evangelicals, religious authoritarianism, performative femininity, and role compliance.&lt;/p&gt;

&lt;p&gt;Someone like Donald uses frame control to deftly verbally box and bully the victim into some intellectual position, constraining them emotionally as directly as leg shackles constrain someone’s physical movement.&lt;/p&gt;

&lt;p&gt;My childhood experience of my own father figure was similar enough to the experience of the author in the frame control piece &lt;a href=&quot;https://knowingless.com/2021/11/27/frame-control/&quot;&gt;link&lt;/a&gt;. I long ago stopped interacting with him, and a few times recently happened to use words to communicate with him, and could ‘clock’ the tactics so directly and easily this time.&lt;/p&gt;

&lt;p&gt;I nearly laughed in his face when he tried to usurp something I said by claiming a different frame. I could have gladly gone into the frame with him, for the record, but since he wasn’t using words in a mutual or collaborative way, but to overpower me and to make me shut up, I of course didn’t give in to the attempted manipulation. I interrupted him and continued the point I was making. He then accused me of disrespect and tried to end the phone call.&lt;/p&gt;

&lt;p&gt;The conversations was short, but productive. I was telling him that despite what he thinks his sky daddy says, he has no permission to beat my own child or make threats of assaulting children in her company. I was also disabusing him of any possible notions he may have been clinging to around the status of our relationship. I evaluate him as an open abuser of children, and feel disgust for the kinds of actions he has exhibited, and continues to exhibit. This is probably the only time in my life I verbally stood up for myself to him, and he acted so affronted by it, we may never speak again. Which is fine! As I told him, I don’t care to have in my life &lt;em&gt;people who think chattel slavery was good, regardless/especially if that person claims/claimed me as their property/family&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So, in that conversation, as a 36 year old, I didn’t get hurt by this man, per se. (The part of me that remembers holding hope for affection or love from a parent was disappointed, but noted the familiarity of the emotional experience). I cannot say the same for the 5, 8, 12, 16, 22, 30 year old old versions of me who spent hours, days, years in the presence of someone like this, getting brushed aside and dismissed and demeaned in certain patterened ways.&lt;/p&gt;

&lt;h2 id=&quot;signs-of-not-controlling-the-frame&quot;&gt;Signs of &lt;em&gt;not&lt;/em&gt; controlling the frame&lt;/h2&gt;

&lt;p&gt;The ‘not frame control’ response to frame control piece would be a conversational style informed by something like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;frame “choosing and using”, instead of frame controlling&lt;/li&gt;
  &lt;li&gt;frame ‘following’&lt;/li&gt;
  &lt;li&gt;frame ‘checking’&lt;/li&gt;
  &lt;li&gt;conversational mutuality&lt;/li&gt;
  &lt;li&gt;“i can see that point”/”i can see what you’re saying”/”i dont yet understand what you’re saying, say more about {whatever}”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;i keep noticing when I talk with supremacists, I can make a concession and ‘put on’ their frame. Unfortunately they act entitled to this labor. Regardless, I can then usually express something I want to express from the POV of their frame, but since/if it’s non-conforming, I get shunned.&lt;/p&gt;

&lt;p&gt;For example, I can discuss Jesus with them, because they claim to care a lot about him. But american evangelicalism doesn’t actually care at all about the interesting things about Jesus. (‘Would jesus have owned slaves in the american south?’ is a reasonable question. but evangelicalism was the tool supremacists used to justify chattel slavery, so the question cannot be asked. &lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity#&quot;&gt;When I first encountered the story&lt;/a&gt; it reframed how I experienced certain objections. I could never un-see it. &lt;sup id=&quot;fnref:useful&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:useful&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Sometimes one issue is seen as ‘complex’ inside of one frame, but might seem different or even simple, in useful ways seen through a different frame. &lt;sup id=&quot;fnref:too-complicated&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:too-complicated&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;To me, once I learned to dual wield ‘the concept of frame control is real’ and ‘there are many possible frames’, I became a bit pushier in conversation, less enjoyable to discuss things with, from the POV of people who want to control the frame.&lt;/p&gt;

&lt;p&gt;I don’t necessarily think they’re ‘intending’ on being controlling and coercive when they are doing frame-control type things. It’s experienced inevitable, but really it’s habitual. A part of them is trying to keep things familiar and safe, and parroting thought-stopping clichés is certainly a familiar tactic, compared to having a novel, surprising, uncertain conversation about a delicate topic.&lt;/p&gt;

&lt;h2 id=&quot;why-frame-control-is-hurtful&quot;&gt;Why frame control is hurtful&lt;/h2&gt;

&lt;p&gt;in theory, people exchange words to share and learn useful things about each other.&lt;/p&gt;

&lt;p&gt;In talking to my evangelical father about why hitting kids is wrong, he says “well the bible says ….” and he gets pouty and mean when I reference &lt;em&gt;any alternative framing of the situation&lt;/em&gt;. I interpret it as ‘I want to hit children, and I use {a particular reason} to allow myself to do this.’&lt;/p&gt;

&lt;p&gt;He’s not sharing a point of view that makes sense to him with a willingness to explore my point of view -  he’s using frame control, and trying to force me to either stay in ‘his’ frame, where he feels safer, or he wants me to stop talking about it.&lt;/p&gt;

&lt;p&gt;He dismisses physically assaulting me by saying “it was just a few swats on the butt”. That he would probably feel a reasonable, displeased way if &lt;em&gt;I gave him&lt;/em&gt; ‘just a few swats on the butt’ seems unavailable to him.&lt;/p&gt;

&lt;p&gt;He’s grasping for frame control, and got quite disregulated when I didn’t follow along like he was used to child-me following along. Or, of course, when child me &lt;em&gt;didn’t&lt;/em&gt; follow along, him/his wife labeled me as ‘rebellious’ as they ganged up on me. Imagine needing another adult to comfort you after you both assaulted the kid. weird.&lt;/p&gt;

&lt;p&gt;He/supremacists interpret/need to experience ‘stepping outside of the frame’ as ‘disrespect’, and use that as an excuse to end the conversation. (my POV is he needed to end the conversation because nothing he was saying was ‘working’ at restoring his sense of emotional superiority/control, and fabricated the justification of disrespect to accomplish ending the call)&lt;/p&gt;

&lt;p&gt;At that point it seemed likely that a collaborative outcome wasn’t in the cards, so even if I willingly adopted his frame, I expected that he would keep trying to verbally/emotionally beat me into submission, using ever more narrow slices of his frame to do whatever it is verbally abusive people are doing with their words.&lt;/p&gt;

&lt;p&gt;Once one is willing to look at the shape of a conversation to see if it feels like the other person is being collaborative, or aiming to evade and dominate, it becomes &lt;em&gt;very uninteresting&lt;/em&gt; to be in the latter kind of conversation.&lt;/p&gt;

&lt;p&gt;The frame controller is trying to prevent new information from impacting their way of viewing things, and they’re willing to try to destroy the sense of self of the other person in the conversation, to accomplish their selfish goals.&lt;/p&gt;

&lt;h2 id=&quot;examples-of-frame-control&quot;&gt;examples of frame control&lt;/h2&gt;

&lt;p&gt;Bleh. Feels too fraught to try to itemize all the different examples. It’s less about whatever the frame is, and more about the other person being willing to bully you into their frame, or bully you out of your frame.&lt;/p&gt;

&lt;p&gt;Once someone is controlling the frame, continuing the conversation is pointless. Maybe, theoretically, at a point in the future it could be tried again (probably not) but it’s certainly pointless in the moment. Each of my parents, now, as I had conversations with them as an adult, it was laughably overwhelming, their need to keep certain frames in the conversation. I could &lt;em&gt;feel&lt;/em&gt; the panic in both of them. It was very strange, the first time in my life, noticing that my emotional energy was causing them both to panic. I wonder if that was the case even when I was a kid. Plausible. Lots of abusive people fabricate fearing the person they abuse. A little dehumanization, a little disconnection, huzzah!&lt;/p&gt;

&lt;h2 id=&quot;on-verbal-abuse-vs-emotional-abuse&quot;&gt;On Verbal Abuse vs. Emotional Abuse&lt;/h2&gt;

&lt;p&gt;I’ve noticed interactions (my own memories of ‘conversations’ with my verbally/emotionally abusive parents) where the first thing that sorta ‘jumps out’ might be the tactics of verbal abuse.&lt;/p&gt;

&lt;p&gt;It’s coercion with words. But words are ‘just’ manifestations of inner emotional state, so verbal abuse is to me indistinguishable from emotional abuse. Also, both of my parents would seemlessly transition from using words as threats, to using anything else they could construe as threats (physical assault, threats of punishment, deprivation) to coerce me into whatever they wanted. So, if there’s no boundaries between, say, words and hitting, why should I receive their coercive words more gently than if they were physically assaulting me? Emotional coercion &lt;em&gt;always&lt;/em&gt; precedes physical coercion.&lt;/p&gt;

&lt;p&gt;My mom wrote a story from my childhood, trying to ‘convince’ 3 or 4 year old me to put toys away, or take a bath, and child me kept saying “why?” “why?”. In the story &lt;em&gt;she wrote with her own hand and then printed copies of and gave to each of her kids&lt;/em&gt; she said&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I [miriam] got tired of answering all the questions, so I just skipped to the end. I said ‘Josh, if you don’t put your toys away and take a bath, I will beat you.” “OKAY”, josh said contentedly as he put his toys away and went and took a bath.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I grant that I’ve &lt;em&gt;always&lt;/em&gt; had more respect for people when they verbalize their willingness to coerce directly, instead of hiding it behind manipulation. “go take a bath &lt;em&gt;because if you don’t I’ll beat you&lt;/em&gt;” is much more direct than “go take a bath &lt;em&gt;because it’s good for you&lt;/em&gt;” and lying about your willingness to beat someone else. Miriam doesn’t like to say the unstated very often: “you should do such and such, because if you do not _I will hate you/treat you as an object of hatred.”&lt;/p&gt;

&lt;p&gt;Someone can use words in grievous ways, to tear down someone’s sense of self.&lt;/p&gt;

&lt;p&gt;Phrases like “you don’t know what you’re talking about” or “that didn’t happen” or “don’t say such a thing” or “you’re too sensitive” are all words that frame the person saying the phrases as above/better than/wiser than the person they are talking to. It’s a little propaganda, trying to make someone else trust their own point of view less. They’re words that can only be uttered by someone who believes that a hierarchy exists, and they’re at the top of it/not at the bottom of it.&lt;/p&gt;

&lt;p&gt;If you flipped onto them the same language they’re giving you, the way they go through the roof indicates that the language is unfair. If kid me had ever told my dad he was ‘too sensitive’, he’d assault me for disobedience. That sort of minimization is acceptable only by the person who seems on the ‘up’ side of the power dynamic.&lt;/p&gt;

&lt;p&gt;Verbal coerciveness is &lt;em&gt;just&lt;/em&gt; the easiest-to-the-abusive-person tactic to achieve their goals. It connects to entitlement (a right to emotional comfort) and rigidity (“who are you to expect me to change anything about myself because of your existence?”)&lt;/p&gt;

&lt;h2 id=&quot;related-reading&quot;&gt;Related Reading&lt;/h2&gt;

&lt;p&gt;Verbal abuse and emotional abuse are, in my mind, basically the same thing. Words said and unsaid convey the underlying emotional state. Words given with a harsh tone and rolled eyes are so much more than just the words. It’s a whole emotional thing.&lt;/p&gt;

&lt;p&gt;Parents use emotional abuse (and emotional neglect) to achieve whatever they want from their kids all the time. That’s why the following book is so powerful as a parenting book. The frame of ‘power over’ vs ‘mutual power’ is everything.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/402366.The_Verbally_Abusive_Relationship?ref=nav_sb_ss_1_33&quot;&gt;The Verbally Abusive Relationship&lt;/a&gt; “coercive frame control” is another lense of certain tactics of verbal (or really emotional) abuse. If an abuser can achieve their desires to exert power over the other via words, or really, emotions, that might be the most efficient/most learned form of abuse. I noticed lots of connections to my own parents, when I read this book. Their default mode of interacting with their kids, at least when it mattered, was to verbally abuse the kids.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://knowingless.com/2021/11/27/frame-control/&quot;&gt;Frame Control, by Aella, on knowingless.com&lt;/a&gt; canon. The inspiration for this whole piece.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25343.Parenting_from_the_Inside_Out?from_search=true&amp;amp;from_srp=true&amp;amp;qid=VG188vabtC&amp;amp;rank=1&quot;&gt;Parenting from the Inside Out: How a Deeper Self-Understanding Can Help You Raise Children Who Thrive&lt;/a&gt; This book is the ‘alternative’ to moving with coercion, entitlement, neglect, and abuse towards others.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition&quot;&gt;The Most Dangerous Superstition&lt;/a&gt; Here’s a &lt;a href=&quot;https://www.goodreads.com/work/quotes/15750971-the-most-dangerous-superstition?page=4&quot;&gt;page of quotes&lt;/a&gt; from the book. If ‘authority’ doesn’t exist, one’s interpersonal dealings might switch up a bit. It’s not technically a parenting or relationship book, but I found it helpful in both domains.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;finding-novel-frames&quot;&gt;Finding novel frames&lt;/h2&gt;

&lt;p&gt;Sometimes I wonder if someone’s use of frame control is rooted in poor imagination. Maybe they think you’ll do to them what they would do to someone else, and they’re willing to coerce and use violence, so they think &lt;em&gt;you&lt;/em&gt; are willing to coerce and use violence.&lt;/p&gt;

&lt;p&gt;If they had that view, their attacks, their scrabbling for verbal control would feel to them like preemptive defense against you hurting them.&lt;/p&gt;

&lt;p&gt;It’s sorta small, sad, to see this being done by adults with decades of life under their belt. It’s more reasonable to me when I imagine them experiencing certain childhood events.&lt;/p&gt;

&lt;p&gt;If they never had the experience of interacting with someone who &lt;em&gt;didn’t&lt;/em&gt; exploit a power dynamic, they would have an impoverished imagination around sharing conversational power with others. They might not have a felt sense at all that anything good could come from it.&lt;/p&gt;

&lt;p&gt;So, to that end, here’s two (very different) books that round to ‘dramatically increasing one’s imagination for alternative frames’:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/30066446-legal-systems-very-different-from-ours?from_search=true&amp;amp;from_srp=true&amp;amp;qid=Yg8TZ7naVR&amp;amp;rank=1&quot;&gt;Legal Systems Very Different From Ours&lt;/a&gt; a compendium of many different legal systems that were or are in use around the world. &lt;a href=&quot;http://www.daviddfriedman.com/Legal%20Systems/Pirate%20Law.docx&quot;&gt;The chapter on pirate law&lt;/a&gt; is very interesting. The book is available on the &lt;a href=&quot;http://www.daviddfriedman.com/Legal%20Systems/LegalSystemsContents.htm&quot;&gt;author’s website&lt;/a&gt; for free.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.royalroad.com/fiction/25137/worth-the-candle&quot;&gt;Worth the Candle&lt;/a&gt; A long, free book in a world that is based on one person’s different dungeons and dragons maps. Very imagination-sparking, in terms of playing along with, rolling with, a number of different frames.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:useful&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;But never-not-once has a supremacist (and anyone else using frame control as a tactic) expressed a willingness to try out, or even recognize, that there might be a different ‘frame’ on the same issue, and globally useful/good/agreeable actions will probably pass mustard in all frames. Non-frame-control allows for reasoning-by-analogy in instructive ways. &lt;a href=&quot;#fnref:useful&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:too-complicated&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I am less accepting of the claim ‘it is too complicated’, as I now appreciate how often this was used as a reason supremacists used to avoid having to consider their slaves &lt;em&gt;freeable&lt;/em&gt;. Cognitive defenses layer and layer. consider again &lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity&quot;&gt;the story of chattel slavery in the american south&lt;/a&gt;. To evangelicals of the day, slavery was so complex an issue it befuddled all thinkers! And yet, from the perspective of the enslaved people, it was a problem anyone as mature as child could solve. ‘for starters and &lt;em&gt;obviously&lt;/em&gt;, stop with the beatings, the chains, the threats.’ &lt;a href=&quot;#fnref:too-complicated&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Trustworthy Belays and Soft Catches</title>
   <link href="https://josh.works/trustworthy-belays-and-soft-catches"/>
   <updated>2025-07-21T13:00:00+00:00</updated>
   <id>https://josh.works/on-climbing</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;What makes a skilled sport climbing belay?&lt;/p&gt;

&lt;p&gt;How would one build trust in a belayer that gives a skilled-enough sport climbing belay?&lt;/p&gt;

&lt;p&gt;This piece covers:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;the pinch-and-pump method for feeding ‘clipping slack’&lt;/li&gt;
  &lt;li&gt;managing the pile of slack before it feeds into the belay device&lt;/li&gt;
  &lt;li&gt;How I use sandbags to balance weight gaps between me and a heavier climber.&lt;/li&gt;
  &lt;li&gt;My routine for efficiently practicing falling and building trust in the belay.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When I trust the belay, I climb harder, and with a bit more fun and peacefulness.&lt;/p&gt;

&lt;p&gt;These are the skills and habits I use to build that trust in an efficient, progressive way. First, with myself and for myself, and secondly with my climbing partners.&lt;/p&gt;

&lt;h2 id=&quot;belaying&quot;&gt;belaying&lt;/h2&gt;

&lt;p&gt;I love to sport climb, and am attuned to how safe I feel while climbing and belaying.&lt;/p&gt;

&lt;p&gt;I’ve assembled some of the specific ways I find myself making adaptations to feel safe &lt;em&gt;while belaying&lt;/em&gt;. I really want my climber to be safe, which means ‘have comfortable, soft catches, minimizing impact forces, not hitting walls or ledges or roofs, not having extra slack out, not short roping’&lt;/p&gt;

&lt;p&gt;Those are just the things I can manage while belaying. The climber does lots of decision-making too, and one’s relative exposure to risk changes moment-to-moment while climbing, obviously. For example, when trad climbing, one’s safety &lt;em&gt;does&lt;/em&gt; change, moment by moment, related to the location and relative quality of the last piece of protection, regardless of what the belayer does.&lt;/p&gt;

&lt;p&gt;A large point/part of trad climbing is managing that risk. &lt;sup id=&quot;fnref:i-dont-trad-climb&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:i-dont-trad-climb&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I am opinionated about the belays I give, and I note also being opinionated about the belays that I get, at times. &lt;sup id=&quot;fnref:safety&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:safety&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I dislike to shortrope others, even though I totally do sometimes. I also don’t like to have lots of extra slack in the system, usually. I could ‘solve’ the shortrope by letting slack hang out in the system, but that often doesn’t make me feel more comfortable as the belayer, at least as comfortable as some other options. I notice eventually feeling less trust and confidence in my own climbing, if I grow fears around getting shortroped, or certain falls, and I enjoy the vibe of easy clipping &amp;amp; comfy catches as the climber, so I give this to my climbing partners.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;what kind of things do you notice in your own climbing?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ll find myself avoiding situations where I want to clip quickly, because there’s plenty of times that a sufficiently aggressive short rope would cause me to drop the rope, or otherwise jostling the system. Usually not a big deal, but as I get closer to maxing out on difficulty it matters more. I don’t technically mind big falls, but I dislike falling as a result of a short rope. &lt;sup id=&quot;fnref:big-falls&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:big-falls&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;video-walk-throughs&quot;&gt;Video walk-throughs&lt;/h2&gt;

&lt;p&gt;Can you already tell that written words are not the perfect format for the conversation?&lt;/p&gt;

&lt;p&gt;So, I started gathering video of my own belaying, and making commentary on it, trying to draw attention to some key parts.&lt;/p&gt;

&lt;p&gt;It’s most obvious, a skillful belay, when the belay is challenging. Big weight differences, fast clips, etc. So, to accomplish safety in these situations, I think I have thoughts about three specific interventions:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;the pinch and pump&lt;/li&gt;
  &lt;li&gt;slack management&lt;/li&gt;
  &lt;li&gt;Sandbags&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’ve got a few different videos I made, to try to capture the vibe. I just put them all back-to-back as a single youtube video:&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/vfzrYw3LtUA?si=97mCXIEQW-IHXxSq&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;we’ll go one at a time&lt;/p&gt;

&lt;h3 id=&quot;the-pinch-and-pump&quot;&gt;The pinch and pump&lt;/h3&gt;

&lt;p&gt;First, the pinch &amp;amp; pump. it helps me manage slack between me and the climber, even with the limited mobility of the sandbag. At first I’d linked straight to the videos on tiktok, now they’re all embedded on this page, in case your browser supports the video embeds.&lt;/p&gt;

&lt;p&gt;Notice the slack management moves throughout these videos, too:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@boardsfast/video/7510343160002825503&quot; data-video-id=&quot;7510343160002825503&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@boardsfast&quot; href=&quot;https://www.tiktok.com/@boardsfast?refer=embed&quot;&gt;@boardsfast&lt;/a&gt; this is sorta odd to get footage and edit and discuss, and I would love to get it in front of 100 lead belayers and get their discussion on it.  &lt;a title=&quot;climbingtok&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climbingtok?refer=embed&quot;&gt;#climbingtok&lt;/a&gt; &lt;a title=&quot;climb&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climb?refer=embed&quot;&gt;#climb&lt;/a&gt; &lt;a title=&quot;rockclimb&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/rockclimb?refer=embed&quot;&gt;#rockclimb&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - boardsfast&quot; href=&quot;https://www.tiktok.com/music/original-sound-7510343181092752159?refer=embed&quot;&gt;♬ original sound - boardsfast&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Here’s another 45 second video about the pinch-and-pump:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@boardsfast/video/7509768208174386462&quot; data-video-id=&quot;7509768208174386462&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@boardsfast&quot; href=&quot;https://www.tiktok.com/@boardsfast?refer=embed&quot;&gt;@boardsfast&lt;/a&gt; this whole narrative arc of my life around belaying and lead belaying and lead climbing.  &lt;a title=&quot;sportclimbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/sportclimbing?refer=embed&quot;&gt;#sportclimbing&lt;/a&gt; &lt;a title=&quot;climbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climbing?refer=embed&quot;&gt;#climbing&lt;/a&gt; &lt;a title=&quot;greenscreenvideo&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/greenscreenvideo?refer=embed&quot;&gt;#greenscreenvideo&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - boardsfast&quot; href=&quot;https://www.tiktok.com/music/original-sound-7509768290907065119?refer=embed&quot;&gt;♬ original sound - boardsfast&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;I think the main piece of all this is slack management + the pinch and pump. The rope could be, should be, always running smoothly from the pile into the device, and if this is true (and maybe even if it’s not) the pinch and pump is a key tool.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;it allows one to feed a full handful of slack, and then keep feeding slack out, incrementally, without either hand needing to return to the belay device&lt;/em&gt;. It’s timing-based, as the climber pulls slack, the belayer uses their advancing of the rope to feed more slack. It’s a coordinated motion between pinching the rope with the left hand and pumping the right hand down and back up, to generate another foot of slack or so. This can be repeated as needed, if the climber needs more slack.&lt;/p&gt;

&lt;p&gt;Most of these are short videos - less than 60 seconds.&lt;/p&gt;

&lt;p&gt;I always hold the grigri, and the device when I’m feeding is tilted in a way where rope feeds effortlessly through the device. If there’s any friction of inhibition in the feeding, the device might not be tilted in the right way, or the hand holding it is putting friction on the rope somewhere. If the feed isn’t effortless or close to it, this thing won’t work.&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@boardsfast/video/7509930081314295071&quot; data-video-id=&quot;7509930081314295071&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@boardsfast&quot; href=&quot;https://www.tiktok.com/@boardsfast?refer=embed&quot;&gt;@boardsfast&lt;/a&gt; belay beta ideas. been noodling lots on giving good belays.  there&amp;#39;s some subtlety to it, imo I have tools that make it easy to be quickly responsive to whatever is going on with the climber.  &lt;a title=&quot;climbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climbing?refer=embed&quot;&gt;#climbing&lt;/a&gt; &lt;a title=&quot;belaying&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/belaying?refer=embed&quot;&gt;#belaying&lt;/a&gt; &lt;a title=&quot;leadbelay&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/leadbelay?refer=embed&quot;&gt;#leadbelay&lt;/a&gt; &lt;a title=&quot;climb&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climb?refer=embed&quot;&gt;#climb&lt;/a&gt; &lt;a title=&quot;sportclimbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/sportclimbing?refer=embed&quot;&gt;#sportclimbing&lt;/a&gt; &lt;a title=&quot;ropes&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/ropes?refer=embed&quot;&gt;#ropes&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - boardsfast&quot; href=&quot;https://www.tiktok.com/music/original-sound-7509930049206848286?refer=embed&quot;&gt;♬ original sound - boardsfast&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;This one has some slow-motion sections:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@boardsfast/video/7509938274048216350&quot; data-video-id=&quot;7509938274048216350&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@boardsfast&quot; href=&quot;https://www.tiktok.com/@boardsfast?refer=embed&quot;&gt;@boardsfast&lt;/a&gt; more on belaying  trying to draw attention to some subtle things I like to be relaxed when I belay, I like my climber to be relaxed. this is how I get there. &lt;a title=&quot;climb&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climb?refer=embed&quot;&gt;#climb&lt;/a&gt; &lt;a title=&quot;climbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climbing?refer=embed&quot;&gt;#climbing&lt;/a&gt; &lt;a title=&quot;belay&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/belay?refer=embed&quot;&gt;#belay&lt;/a&gt; &lt;a title=&quot;belaying&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/belaying?refer=embed&quot;&gt;#belaying&lt;/a&gt; &lt;a title=&quot;sportclimbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/sportclimbing?refer=embed&quot;&gt;#sportclimbing&lt;/a&gt; &lt;a title=&quot;leadclimbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/leadclimbing?refer=embed&quot;&gt;#leadclimbing&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - boardsfast&quot; href=&quot;https://www.tiktok.com/music/original-sound-7509938190921714462?refer=embed&quot;&gt;♬ original sound - boardsfast&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;These were all different attempts at highlighting the same thing, so there’s certainly redundancy.&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@boardsfast/video/7510339831096986911&quot; data-video-id=&quot;7510339831096986911&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@boardsfast&quot; href=&quot;https://www.tiktok.com/@boardsfast?refer=embed&quot;&gt;@boardsfast&lt;/a&gt; lead belay beta do you lead belay? if so, what do you think? there&amp;#39;s 2 other things maybe that are related. something about holding the grigri in a certain way&amp;#47;hand position, and something about always having a few feet of flaked rope in front of you, so it can move thru the grigri without twists or needing to be pulled  &lt;a title=&quot;climbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climbing?refer=embed&quot;&gt;#climbing&lt;/a&gt; &lt;a title=&quot;belaying&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/belaying?refer=embed&quot;&gt;#belaying&lt;/a&gt; &lt;a title=&quot;ropes&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/ropes?refer=embed&quot;&gt;#ropes&lt;/a&gt; &lt;a title=&quot;sportclimbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/sportclimbing?refer=embed&quot;&gt;#sportclimbing&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - boardsfast&quot; href=&quot;https://www.tiktok.com/music/original-sound-7510339845241129758?refer=embed&quot;&gt;♬ original sound - boardsfast&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Focus on the pinch-and-pump:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@boardsfast/video/7510343160002825503&quot; data-video-id=&quot;7510343160002825503&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@boardsfast&quot; href=&quot;https://www.tiktok.com/@boardsfast?refer=embed&quot;&gt;@boardsfast&lt;/a&gt; this is sorta odd to get footage and edit and discuss, and I would love to get it in front of 100 lead belayers and get their discussion on it.  &lt;a title=&quot;climbingtok&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climbingtok?refer=embed&quot;&gt;#climbingtok&lt;/a&gt; &lt;a title=&quot;climb&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climb?refer=embed&quot;&gt;#climb&lt;/a&gt; &lt;a title=&quot;rockclimb&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/rockclimb?refer=embed&quot;&gt;#rockclimb&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - boardsfast&quot; href=&quot;https://www.tiktok.com/music/original-sound-7510343181092752159?refer=embed&quot;&gt;♬ original sound - boardsfast&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;More focus on the pinch and pump:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@boardsfast/video/7510845329068150046&quot; data-video-id=&quot;7510845329068150046&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@boardsfast&quot; href=&quot;https://www.tiktok.com/@boardsfast?refer=embed&quot;&gt;@boardsfast&lt;/a&gt; &lt;a title=&quot;climbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climbing?refer=embed&quot;&gt;#climbing&lt;/a&gt; &lt;a title=&quot;leadclimbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/leadclimbing?refer=embed&quot;&gt;#leadclimbing&lt;/a&gt; &lt;a title=&quot;climbingtok&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/climbingtok?refer=embed&quot;&gt;#climbingtok&lt;/a&gt; &lt;a title=&quot;sportclimbing&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/sportclimbing?refer=embed&quot;&gt;#sportclimbing&lt;/a&gt; &lt;a title=&quot;ropes&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/ropes?refer=embed&quot;&gt;#ropes&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - boardsfast&quot; href=&quot;https://www.tiktok.com/music/original-sound-7510845356616977182?refer=embed&quot;&gt;♬ original sound - boardsfast&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;slack-management&quot;&gt;Slack Management&lt;/h2&gt;

&lt;p&gt;Slack management - I do two different motions with my hands, to keep slack always ‘free’ ahead of the pile. I like to “flake” a few handfuls of the rope off the top of the pile regularly, while the climber is climbing.&lt;/p&gt;

&lt;p&gt;In all the above videos, at times you can see me pulling slack over to where I’m standing, using one hand or two. Usually a little momentum.&lt;/p&gt;

&lt;p&gt;Even when using both hands to manage slack, my device hand does very little, i might hook the rope over a single finger to hold the rope as the other hand pulls handfuls of slack through the right hand. If you look closely-enough in some of the videos I posted, you’ll see it clearly.&lt;/p&gt;

&lt;h2 id=&quot;sandbags&quot;&gt;Sandbags&lt;/h2&gt;

&lt;p&gt;next, sandbags: I spent a long time sorta never using sandbags, except maybe with really large weight differences. I weigh 145 lbs, and noticed how my own stress while belaying would certainly creep up if the climber weighed 175 lbs, and i really didn’t like belaying 200 lb people - that would be a 30 lb weight difference and 55 lbs.&lt;/p&gt;

&lt;p&gt;It is pretty reasonable and clear when a heavy climber acts like someone who doesn’t like to fall. Climbing well within their limit, using lots of takes, etc. Regularly enough, when I put on a sandbag and coax a fall or two from the climber, when they notice how comfortable and right-sized the fall is, they express pleased surprise, and begin to go a little harder. I think most climbers who outweigh their regular climbing partners by 30+ lbs and there isn’t a sandbag in place adapt a little chronic hyper-vigilance to falling, and it saps some of the fun and smoothness from the climbing experience.&lt;/p&gt;

&lt;p&gt;So, now, if the climber outweighs me by anywhere close to 30+ lbs, I’ll add a 25 lbs weight bag that the gym has floating around. (or the 40lb bag). It lets me move around and still give a soft catch, and makes me heavy enough that I don’t accidentally get pulled with too much force into the wall.&lt;/p&gt;

&lt;p&gt;Getting pulled with too much force into the wall can be really unpleasant, injurious, chaotic, and then the whole belay is spent with a slight level of background anxiety, even if there are no falls or no unpleasent falls.&lt;/p&gt;

&lt;p&gt;As I got better adjusting the length of the leash, deciding where to keep the sandbag relative to me, how to hold it with my feet as I fall - it’s gotten increasingly comfortable. The above videos often-enough feature&lt;/p&gt;

&lt;p&gt;To use a sandbag means being a little less mobile, so it increases the need for quick, efficient feeding of slack. The pinch-and-pump does extra work, because I’m going to be stepping around less.&lt;/p&gt;

&lt;p&gt;It’s nice being able to walk up to any wall, any belay, any climbing partner, be they 100 lbs or 200 lbs, and know I can give a perfect belay - no extra slack in the system, soft catches, no short ropes. I carry an peaceful, composed emotional energy with me into the belay, and I give some of the same energy to the climber.&lt;/p&gt;

&lt;h2 id=&quot;getting-falling-practice&quot;&gt;Getting falling practice&lt;/h2&gt;

&lt;p&gt;So much for skills building. Lets get some practice! I love a good belay, and can help anyone else improve their belay. I regularly climb with different partners, and have noticed that my ability to trust someone’s belay needs to be built on reasonable experiences. I cannot will myself into acting like I trust a belayer more than I actually do, and while everyone can start at a baseline of ‘I assume you’re competent’, it’s nice to get a few experiences under my belt contributing to additional trust.&lt;/p&gt;

&lt;p&gt;It’s a lot to ask your nervous system to treat a belay partner as ‘fully safe in every situation, including exciting edge-case falls’ without getting some reps, practice, some experience where the fall was good, the catch was skillful-enough, etc etc.&lt;/p&gt;

&lt;p&gt;Plenty of belayers climb regularly with climbers who don’t fall a lot, and they as climbers maybe also don’t fall a lot, so it’s possible that one finds themselves with a skilled belayer, perhaps even decades of climbing experience, but the belayer doesn’t have recent practice of catching a you-sized climber.&lt;/p&gt;

&lt;p&gt;And, regardless of the belayer’s recent experience, if it’s not with &lt;em&gt;you&lt;/em&gt;, your own system doesn’t yet recognize them as trustworthy.&lt;/p&gt;

&lt;p&gt;I often-enough am climbing right on the edge of my competence and strength, so even with all the tools in my toolkit, I often-enough find myself very suddenly airborn. I’ve heard from many belayers, immediately after I’ve fallen, something like ‘I had no idea you were about to fall, you were looking so composed up there!”&lt;/p&gt;

&lt;p&gt;To which I say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Yes, I usually climb in a composed way, but it’s because if I climbed any other way I would have fallen off even lower on the wall.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, I can fall at any moment, without warning. I also sometimes decide I don’t like the sequence I’ve started, and like a puppet getting the strings cut, I’ll abort the attempt by simply letting go. No warning. I expect good-enough, soft-enough catches even then.&lt;/p&gt;

&lt;p&gt;If I get a hard catch, and keep getting hard catches, something in me clocks the belayer as ‘uncaring’, and its hard for me to find a comfortable groove with climbing.&lt;/p&gt;

&lt;h3 id=&quot;getting-free-fallcatch-experiences&quot;&gt;getting “free” fall/catch experiences&lt;/h3&gt;

&lt;p&gt;So, how to get good catches? It feels pretty strong, overwhelming, to say&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’m going to climb now, surprise you with falls, and extrapolate a bunch of things about my safety based on what happens.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also, I don’t need anyone to be at any particular skill level! What this section of this long article covers is how to queue up a few &lt;em&gt;shared experiences&lt;/em&gt; to nudge things in a helpful direction.&lt;/p&gt;

&lt;h4 id=&quot;i-never-clip-the-chains&quot;&gt;I never clip the chains&lt;/h4&gt;

&lt;p&gt;My first easy, safe fall, that lets me calibrate to a belayer, or more importantly, lets them calibrate to me, is my ‘norm’ of always ‘taking the whip’.&lt;/p&gt;

&lt;p&gt;When I get to the top of an indoor route, nearly every time I get to the top of a wall, instead of clipping the shuts/chains, I’d ‘take the whip’ and step off from the top.&lt;/p&gt;

&lt;p&gt;It’s so routine I don’t tell my regular climbing partners - it’s just expected. When I climb with a new belayer, I inform them to anticipate a ‘victory whip’. Sometimes I might make eye contact or give a little thumbs up right before I step off the wall.&lt;/p&gt;

&lt;h4 id=&quot;ask-the-belayer-to-use-a-signal-to-announce-two-falls-while-i-climb&quot;&gt;Ask the belayer to use a signal to announce two falls while I climb&lt;/h4&gt;

&lt;p&gt;here’s the upgrade I only recently sorted out.&lt;/p&gt;

&lt;p&gt;sometimes, I want, need, a little more practice and experience. If the catches are good, this extra practice helps me feel an embodied confidence in the belayer. One fall per route, from the top, is not usually a fast enough rate of experience to help me. Especially because the first catch of the session/climbing-belaying dynamic can be stressful, its easy to mis-time it, and it could end up being something besides well-timed.&lt;/p&gt;

&lt;p&gt;I was noticing (with frustration) this lack in my climbing sessions. I couldn’t find myself comfortable while climbing. On indoor routes I can easily climb some 5.12s without a possibility of falling, so I was having trouble feeling taken seriously that I was having trouble feeling confident on lead.&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;looked&lt;/em&gt; confident, but my inner experience was one of pretty constant awareness of ‘it is on me to not fall’. Not fun. I might try hard routes, but with half-effort, half-commitment. As soon as I felt uncomfortable about an upcoming sequence, or uncertain of the clipping position, I’d take a risk-mitigating exit, and maybe take an easy fall, instead of commiting to a sequence where I &lt;em&gt;might&lt;/em&gt; fall, in a more compromised position.&lt;/p&gt;

&lt;p&gt;So, here’s what I now do.&lt;/p&gt;

&lt;p&gt;The first climb of the day, the warm-up, I’ll ask for the belayer’s help. I’ll say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;On the warmup, I want to get some extra milage. I’d like you to call to me, twice, to announce a fall. Once I’m past the third bolt, say my middle name &lt;em&gt;or&lt;/em&gt; whistle at me, and I’ll step off the wall. Wherever the fall ends, i’ll resume climbing from there, and thats how I get extra milage. Cool?&lt;/p&gt;

  &lt;p&gt;if I’ve already begun clipping when you say it, I’ll finish the clip. Also, sometimes it’s hard to hear, so you might say something, expect me to fall, and i’ll just keep climbing. Please repeat yourself, a bit louder, but don’t short rope me because you called a fall.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;next, then, above the third bolt, i’ll hear ‘douglas’ or a whistle float up the wall. I know that &lt;em&gt;they&lt;/em&gt; are ready for me to fall (and sometimes they’re extra anxious about it, compared to if they didn’t think I was about to fall), and so i’ll let go.&lt;/p&gt;

&lt;p&gt;The catch might be great, it might leave a little to be desired. This is why I ask for &lt;em&gt;two&lt;/em&gt; falls on the route.&lt;/p&gt;

&lt;p&gt;Wherever I end on the wall after the fall, i pull back on and quickly re-climb the section. It’s perfect for the warmup, getting extra moves. Helps me find ‘the groove’ of flowy, loose, comfortable climbing, re-climbing 15 foot sections of a climb on a mini TR. (i’ll get a video/time-lapse of this at some point)&lt;/p&gt;

&lt;p&gt;A second time, when I’m higher, i’ll hear ‘douglas’ (or a whistle) float up the wall, and I’ll let go a second time. I usually notice even between the first and second fall, I feel better with the belay.&lt;/p&gt;

&lt;p&gt;If the second catch is good, thrilling. If it’s still a hard catch, i might discuss it with the belayer when I get down to the ground.&lt;/p&gt;

&lt;p&gt;Regardless, it’s almost always better than the first catch, which is ‘just’ a calibrating fall anyway. Regardless of the weight difference, all good belays involve some timing pieces, and it’s nice to get a few practice rounds.&lt;/p&gt;

&lt;p&gt;Giving good catches isn’t a moral issue, simply depends on some attunement and a few rounds of exploratory&lt;/p&gt;

&lt;p&gt;Finally, I still don’t clip the chains and step off at the top of the wall, even after the two belayer-announced falls. now, when I get back on the ground, me and the belayer have three more catches shared with the belayer, and we’ll discuss. I also often repeat routes on TR, so I might get back to the ground, and then do one more lap up the wall, on TR to the last bolt, then I’ll take one more whip at the chains.&lt;/p&gt;

&lt;p&gt;In so many cases, maybe every case, this process has let me feel a lot more comfortable with the belay.&lt;/p&gt;

&lt;p&gt;The belayer gets used to the idea that ‘to belay josh is to catch a lot of falls’ and the belay is often brought in a nice direction.&lt;/p&gt;

&lt;h2 id=&quot;in-conclusion&quot;&gt;In Conclusion&lt;/h2&gt;

&lt;p&gt;Thus, with everything on this page, you can see how I think hard about the belays I give, and how I think hard about safely getting good-enough/perfect catches/belays from others.&lt;/p&gt;

&lt;p&gt;Less short ropes, soft catches, less stress, more trust. This system doesn’t work every time, but it’s how I handle this complex, safety-critical component of climbing. I love love love to climb, I love to feel comfortable while sport climbing, and I’d like to be taken seriously as an evaluator of my own experience.&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:i-dont-trad-climb&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;this might be why i don’t really trad climb. &lt;a href=&quot;#fnref:i-dont-trad-climb&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:safety&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I &lt;a href=&quot;/on-risk&quot;&gt;just wrote something about safety checks&lt;/a&gt;, and why I’m fastidious about one particular safety check, one particular norm; that’s an example of a way I try to nudge the ecosystem of my life towards safety, in some specific ways.&lt;/p&gt;

      &lt;p&gt;I view our lives (each of them, individually, yours, mine, and in some collective way) as a complex system. Every time something fails, or an accident happens, I see it through the principals of &lt;a href=&quot;https://how.complexsystems.fail/&quot;&gt;how complex systems fail&lt;/a&gt; &lt;a href=&quot;#fnref:safety&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:big-falls&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Big falls are usually best caught while the belayer is taking in a handful of slack. If I got short-roped into falling, and the belayer didn’t remove the slack as I fell, &lt;em&gt;and&lt;/em&gt; gave me a hard catch, there’s a possibility of there being ‘too much’ impact force on the whole system for me to be thrilled. I know someone who shattered two ankles on a large-ish indoor fall - onto a volume - as a result of this sort of dynamic happening. Again, complex systems, etc etc. &lt;a href=&quot;#fnref:big-falls&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>On Risk: The two stories I tell</title>
   <link href="https://josh.works/on-risk"/>
   <updated>2025-07-17T13:00:00+00:00</updated>
   <id>https://josh.works/on-risk</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;I have two stories that I notice myself telling others, repeating them. I like to write down things I repeat often (or at all).&lt;/p&gt;

&lt;p&gt;The first story is about someone named Lynn Hill, and a time everyone thought she was attached to a rope.&lt;/p&gt;

&lt;p&gt;The second story is about some common themes among a certain class of accident, “avalanche accidents/fatalities”.&lt;/p&gt;

&lt;p&gt;I link emotional safety and physical safety, closely, in my mind.&lt;/p&gt;

&lt;p&gt;These two stories neatly encapsulate some of the reasons, and come up repeatedly for me, often enough.&lt;/p&gt;

&lt;h2 id=&quot;lynn-hill-an-interrupted-safety-critical-process-and-safety-checks&quot;&gt;Lynn Hill, an interrupted safety-critical process, and safety checks.&lt;/h2&gt;

&lt;p&gt;When I climb, I now always do a safety check.&lt;sup id=&quot;fnref:safety-check-now&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:safety-check-now&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; Sometimes, this story comes up, especially if climbing with a new partner. I’ve said things like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Have you heard that story about Lynn Hill? &lt;sup id=&quot;fnref:lynn-hill&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:lynn-hill&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; A time she fell 70 feet from the top of a warmup? Would have been fatal but landed in a tree and survived.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The time it takes to read this blog post is 100x longer than it takes for me to perform the actual safety check. The words I use is almost exactly something like: “i like the knot. two points. locks, locked” &lt;sup id=&quot;fnref:full-check&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:full-check&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Takes no time, barely a distraction from other ongoing conversation, if any.&lt;/p&gt;

&lt;p&gt;This can all be accomplished in two or three seconds.&lt;/p&gt;

&lt;p&gt;So, here’s the longer story I tell, about why I do this safety check every time, and how I introduce the story to others. It’s an interesting story &lt;sup id=&quot;fnref:story-research&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:story-research&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Lynn Hill was she was tying in with a bowline at an outdoor crag on a colder day, and was wearing a puffy jacket.&lt;/p&gt;

  &lt;p&gt;Something distracted her between when she started the bowline, and finished it. her jacket covered the belay loop, so it wasn’t visible/apparent to her or her belayer that she wasn’t tied in. if she wasn’t wearing the jacket, presumably it would have been obvious she wasn’t tied in.&lt;/p&gt;

  &lt;p&gt;She climbed the warmup, the rope stayed looped through her harness despite there being no knot. She leaned back for the lower, and fell from the top of the climb!!!&lt;/p&gt;

  &lt;p&gt;but for a strange, random, very convenient tree that caught her 70 foot fall, she would have been killed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;what a story. how horrifying it must have been to witness, to hear.&lt;/p&gt;

&lt;p&gt;Something very familiar to people who climb is the sensation of sitting back in the rope at the top of a climb for a lower. Imagining the sensation of sudden weightlessness and falling when one expected snug tension… truly, obviously, the stuff of nightmares. I’ve had falling nightmares where I’ve dreamed of falling a long way. Oof.&lt;/p&gt;

&lt;p&gt;I happen to tie in with a ‘double’ bowline + a ‘safety knot’ or a barrel knot. double overhand. Whatever. I use the bowline because I find figure 8’s very difficult to untie after I fall , and I sometimes, usually, often-enough fall a lot, and the knot can get extremely tight.&lt;/p&gt;

&lt;p&gt;So, I now do a quick safety check every time i climb, and I ‘get’ one, or take one, from my belayer, even if they didn’t plan on doing it. I verify the correctness of their setup with my eyes and ears.&lt;/p&gt;

&lt;p&gt;When I’m the belayer, I’ll say “I like the knot” and then I click the grigri cam a few times by pulling on the climber’s side of the rope coming out of the device, and I click the carabiner a few times to show it’s locked, to hear that it’s locked. If both parties expect it, it can take three seconds, can be done as the climber is walking to the wall, or, if I forgot (rare, but happens) i’ll do it while they’re on the wall, on the first few feet of the climb. I consider the &lt;em&gt;sounds&lt;/em&gt; of the safety check to be part of the verification process, thus it can work for the climber even if they’re facing away from me, beginning the climb, listening but not seeing.&lt;/p&gt;

&lt;p&gt;I observe that this process increases physical safety, telegraphs a certain completeness and attentiveness to things that are undeniably important.&lt;/p&gt;

&lt;p&gt;If I’m with a new climbing partner, it promotes peace within myself if I see their easy participation in the safety checks. I’ve been told directly a few times that someone else’s confidence in my belay is incrementally improved by experiencing the safety check, even if they know nothing else about my belay, and it’s the first time I’ve belayed them.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;There’s two take-aways from the story:&lt;/p&gt;

&lt;h3 id=&quot;when-performing-a-safety-critical-process-plan-to-not-stop&quot;&gt;When performing a safety-critical process plan to not stop&lt;/h3&gt;

&lt;p&gt;Be non-responsive to ‘distractions’, like someone handing something. If you ask someone to hand you something, and they happen to hand it to you while you’re tying your knot, it’s sorta jarring to not take it out of their hands, or maybe they’ll toss it to you.&lt;/p&gt;

&lt;p&gt;I’ll say ‘ah, one moment’, and will keep tying the knot, even if they have the thing extended to me and are waiting for me to take it. (a chalk bag, water bottle, shoes, quick draws, whatever.) Obviously they can put it down on the ground or whatever, if you wanted to spend 60 seconds dealing with a knot, you’re fully entitled to taking the time.&lt;/p&gt;

&lt;p&gt;So, even if it feels a little rude, I won’t stop tying in, once I start. OR! I might pull the whole thing out of my harness, ending the attempt at the knot, putting the rope down away from my body, before I use my hands for anything else. But I think I mostly low-key ignore the thing I label as a distraction.&lt;/p&gt;

&lt;p&gt;Another frequent domain for this ‘don’t interrupt a safety critical process’ is putting on my full-face motorcycle helmet and closing the chin strap. - the helmet doesn’t count as ‘on’ if the chin strap is not closed, it would pop right off the head in a fall.&lt;/p&gt;

&lt;h3 id=&quot;do-a-safety-check-every-time&quot;&gt;do a safety check every time&lt;/h3&gt;

&lt;p&gt;100% of the time I’m attached to a rope, I do a safety check. That means pulling on the rope to ‘prove’ the correctness of the knot, gri-gri. I prefer my partner to do the safety check with me, but if they don’t, I’ll still do my safety check, out loud, to both of us.&lt;/p&gt;

&lt;p&gt;This tiny change makes me and every person I climb with &lt;em&gt;for the rest of my life&lt;/em&gt; impervious to this particular class of error. Not bad, eh?&lt;/p&gt;

&lt;h2 id=&quot;avalanche-related-incidents-leading-to-fatalities-themes&quot;&gt;avalanche-related incidents leading to fatalities, themes&lt;/h2&gt;

&lt;p&gt;The other story is about avalanches, and… I cannot find the paper right now.&lt;/p&gt;

&lt;p&gt;There’s a paper I read once that talked about how in nearly every instance of an avalanche fatality, someone in the group expressed a concern about some aspect of the trip. something about the gear, the conditions, the weather, capacity, etc.&lt;/p&gt;

&lt;p&gt;And in these cases, someone else in the group sorta over-rules the concern, pushing the group forward towards completion of the objective. Then there’s an avalanche, &lt;em&gt;and&lt;/em&gt; an unsuccessful/insufficient recovery of the person(s) caught up in the avalanche.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;why would someone push through concerns?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A memorable instance of this phenomena was:&lt;/p&gt;

&lt;p&gt;a tech company CEO was out on a back country trip with at least one person responsible for investments in that company. Tech CEOs are supposed to project airs of confidence, pushing forward, always achieving the goal. Conditions were marginal for the trip. Do you think the tech CEO would say to the investor “well, this could be fine, but I’m a little concerned that because the freeze/thaw cycles over the last few days, the slopes are more unstable than I’m comfortable with, so let’s not actually go out today.”&lt;/p&gt;

&lt;p&gt;They both might tell the story that “if CEO is hesitant to make moves with avalanche risk, maybe CEO is also hesitant to spend the hundreds of millions of dollars he’s receiving in investment money in a sufficiently aggressive way.”&lt;/p&gt;

&lt;p&gt;So… CEO presses onward, and at least one person died that day.&lt;/p&gt;

&lt;p&gt;From &lt;a href=&quot;https://www.outsideonline.com/outdoor-adventure/snow-sports/silverton-avalanche-school-pete-marshall-death-snow-safety&quot;&gt;outside online&lt;/a&gt;, here’s an instructor talking about the risk assessment he made that particular year:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“I’ve backed off more lines this year than I have in a long time,” he said. “You know, there is no shame in just walking away from something and saying, ‘This isn’t worth it.’”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The next morning, Dave Marshall, a member of Kobrock’s group, started having an eerie feeling about the day. His son, Pete, was in the other group, and Dave worried about the safety of their route. And George, who normally would go skiing or do chores while the class was in the field, was asked by Kobrock, just before she left with her students to dig snow pits, if he would hang around the lodge with a radio as a safety measure—something he’d never been asked to do in more than two decades of hosting avalanche courses at the lodge.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Basic safety protocol dictates skiing avalanche terrain one person at a time—that way only one person is exposed to a potential slide. Lovell explained that he would ski first, to establish a boundary on the right. He then instructed each student to drop in after the prior skier had descended the upper part of the slope, hastening the group’s progress but also placing multiple people on the run at once. One of the students, Andrew Reed, nervously locked eyes with the lone woman in the group.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;PEOPLE’S RISK RADARS WERE PINGING OFF THE CHARTS!!!!&lt;/p&gt;

&lt;p&gt;It wasn’t this particular outside online article that highlighted the phenomena I’m trying to name in this blog post, but it covers close enough conceptual territory.&lt;/p&gt;

&lt;p&gt;I wonder if it was in one of the american alpine club’s accident journals that I found the story, like: &lt;a href=&quot;https://americanalpineclub.myshopify.com/collections/aac-publications/products/2020-accidents-in-north-american-climbing&quot;&gt;https://americanalpineclub.myshopify.com/collections/aac-publications/products/2020-accidents-in-north-american-climbing&lt;/a&gt; The annual accident journal is the main reason I’m a member of the AAC.&lt;/p&gt;

&lt;p&gt;The group dynamics of this phenomena are interesting.&lt;/p&gt;

&lt;p&gt;usually, the person raising the concern ‘less experienced’ relative to others in the group, and the person over-riding them is among the more experienced part of the group.&lt;/p&gt;

&lt;p&gt;Eventually, avalanche, and someone dies, or a situation that shouldn’t have been fatal is fatal, for whatever reason. Avalanches are non-fatal if the person caught in it can be located and rescued quickly enough, too. An avalanche fatality generally requires errors around both estimating the conditions, &lt;em&gt;and&lt;/em&gt; not performing a rescue quickly enough.&lt;/p&gt;

&lt;p&gt;I remember the take-away from this story is&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;often someone expressing doubt or fear or uncertainty is clued into a real issue, and at minimum their concerns ought not be suppressed, but perhaps drawn out and greeted with warmth.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also, errors usually compound.&lt;sup id=&quot;fnref:complex-systems&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:complex-systems&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;It’s not one thing that goes really wrong, but it’s one minor thing that goes wrong, that perfectly aligns with something else that also goes wrong. Rushing can be a big part of mistakes and errors. And moving quickly can be a part of staying safe.&lt;/p&gt;

&lt;p&gt;Plenty of issues crop up when someone notices inadequate gear, insulating layers, rescue equipment, batteries for a headlamp, whatever. If, even with inadequate gear, the trip continues, now a single other point of failure could become a big deal. A sprained ankle becomes an unexpected over-night, which wouldn’t be an issue unless someone forgot their insulating layer, and now hypothermia is a big issue. Does one continue or remain stationary?&lt;/p&gt;

&lt;p&gt;Thus, the big take away for me, from this story:&lt;/p&gt;

&lt;h3 id=&quot;if-someone-else-voices-a-concern-in-a-group-and-i-hear-it-i-give-it-attention&quot;&gt;If someone else voices a concern in a group, and I hear it, I give it attention&lt;/h3&gt;

&lt;p&gt;This is my norm, now. I know group dynamics, it’s hard sometimes to speak up, so if I ever hear someone else speaking up, I think of this whole avalanche dynamic and respond warmly, regardless of my relative skill or power within the group.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;ooh, what was that thing you mentioned? hm, that does seem relevant. good that you brought it up….&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;if-i-am-in-a-group-and-i-feel-concern-im-more-likely-to-voice-it&quot;&gt;If I am in a group, and I feel concern, I’m more likely to voice it&lt;/h3&gt;

&lt;p&gt;So, of course, I can respond warmly to others’s voicing their concerns, &lt;em&gt;and&lt;/em&gt; I can respond warmly to &lt;em&gt;me&lt;/em&gt; voicing concerns! I wrote recently about &lt;a href=&quot;/do-not-neglect-the-needful-role-of-the-witness&quot;&gt;not neglecting the role of the Witness&lt;/a&gt; and that’s in line with this concept - one can Witness oneself, or one’s own recognition of discomfort or risk, and feel bolstered in voicing the risk to others.&lt;/p&gt;

&lt;p&gt;I also easily recall the gist of the 18 principles of failure from &lt;a href=&quot;https://how.complexsystems.fail/&quot;&gt;how complex systems fail&lt;/a&gt;. I dislike when I see other people taking actions that seem to increase their exposure to real risks, and because of all of this (gestures at this collection of writings) I feel pretty comfortable validating my own risk assessments.&lt;/p&gt;

&lt;p&gt;I’ve some clear memories of times other people have tried to stamp down my risk assessments, and in every case, I remember thinking differently about that person, updating my assessment of them based on their responses to my mention of concern or risk.&lt;/p&gt;

&lt;p&gt;For example, I continue to be cognizant that driving in America is the riskiest activity to everyone &lt;sup id=&quot;fnref:driving&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:driving&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; not just the people who drive, the/a top cause of death and injury (or the number 2 cause of death and injury) for basically all people between newborns and old age. Since I have accurate/low opinions of american traffic engineering, I do not evaluate road networks as ‘safe/safe-enough by default’.&lt;sup id=&quot;fnref:safe-by-default&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:safe-by-default&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;i-am-sometimes-rigid-around-these-things&quot;&gt;I am sometimes rigid around these things&lt;/h2&gt;

&lt;p&gt;I note that others have sometimes experienced me as rigid or entitled when moving in some of these domains, and others, with me. I don’t always love it, and I don’t particularly enjoy experiencing myself in these ways either. So, I’ll always affirm someone’s experience. At least sometimes now I try to name it when I notice it in myself.&lt;/p&gt;

&lt;p&gt;I don’t, and will never do back country skiing or anything like that, so avalanche concerns are not germane to me. The story, though, the principles, the theme of ‘someones sensitivity to risk ought to be treated in non-dismissive ways’ lives deep in my bones, and a few different people have encountered pretty pushy versions of me when I feel dismissed with some specific safety concerns.&lt;/p&gt;

&lt;p&gt;I grow more demanding, maybe pushy, maybe manipulative, &lt;em&gt;and sometimes even coercive&lt;/em&gt; if it feels like the way I brought something up is made more important than the thing I’m trying to name, &lt;em&gt;and the thing I’m trying to name ends up dismissed&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I’ve memories of dismissiveness and disattunement at least from crappy childhood caretakers, and when I encounter anything that smells similar as an adult, it’s easy for me to remember the sensations of powerlessness, disconnection, and even shame, that resulted from experiences with those people. (various responses/non-responses can easily telegraph something that rounds to ‘misplaced guilt’, shame, etc).&lt;/p&gt;

&lt;p&gt;I don’t like that for adult me, so I try to not re-experience it. and it feels uncomfortably close to a ‘power move’, or something coercive, to move with entitlement to someone fitting your preference for communication before you extend a willingness to hear them.&lt;/p&gt;

&lt;p&gt;I note the situations where there is mutuality around the safety issue, whatever it is, the conversation has a gentle, coherent, synchronized feel to it. Dismissivness or disconnection has a harsher, non-concordant feel to it.&lt;/p&gt;

&lt;p&gt;When my kid and I overhear tense voices, or anger, or whatever, sometimes in a movie or a show, sometimes in real life, we’ll often discuss what we notice in it.&lt;/p&gt;

&lt;p&gt;I sometimes take the assessment that “I deserve to be heard as carefully/respectfully as anyone else deserves to be heard.”&lt;/p&gt;

&lt;p&gt;For instance, lets say that in a decade, my kid is in a group and has a safety concern. How much do they deserve to be taken seriously?&lt;/p&gt;

&lt;p&gt;However much they presumably deserve it then, I can affirm that I deserve to be taken at least as seriously now. even without knowing other parts of a presumed larger story, anyone obviously deserves to use their voice to advocate for safety, or if they’re not feeling it, they should feel equipped to opt out of the situation. If someone isn’t comfortable with avalanche risk, can they turn around and go home alone? If so, they’ve got a good BATNA (Best Alternative To a Negotiated Agreement). “oh, you’re going to continue even though it’s risky? I don’t love that for me, so I’m turning around here. I’ll have a nice time taking myself back, see you there! 👋”&lt;/p&gt;

&lt;h3 id=&quot;on-entitlement--deserving&quot;&gt;On entitlement &amp;amp; deserving&lt;/h3&gt;

&lt;p&gt;To feel deserving of something is by definition entitlement. When someone is/thinks they are/feels entitled to something, often enough they’ll be coercive to achieve or retain those things they feel entitled to. It seems reasonable to say that sometimes entitlements are fair (one’s entitlement to their bodily autonomy) and some entitlements are deeply, deeply unfair.&lt;/p&gt;

&lt;p&gt;Thus, entitlement is a risky thing.&lt;/p&gt;

&lt;p&gt;Much coercion, maybe most, seems rooted in entitlement.&lt;/p&gt;

&lt;p&gt;when it’s not rooted in entitlement, some coercion might be rooted in disattunement. Someone can be coercive, and maybe not entitled, but disattuned, and might thus not even notice the coercion. I usually think of entitlement as leading to disconnection, but I could find a believable story about maybe it’s disconnection/disattunement that is the setup for entitlement.&lt;/p&gt;

&lt;p&gt;On the ‘severe’ side, settler colonialism and genocide emerges from entitlement and disconnection. :(&lt;/p&gt;

&lt;p&gt;Maybe the way to debug fair from unfair entitlement is “How might the involved parties feel if the roles were flipped? How do the entitlements fit that updated situation?”&lt;/p&gt;

&lt;h2 id=&quot;safety--rigidity&quot;&gt;Safety &amp;amp; Rigidity&lt;/h2&gt;

&lt;p&gt;So, good safety processes matter. When something’s ‘off’, it is often something someone can perceive, thus risk assessments are, can be, helpful input, and healthy systems can metabolize risk assessments.&lt;/p&gt;

&lt;p&gt;When risk assessments get squelched, it sometimes is rooted in someone moving with entitlement (the entitlement to shut down the concern). But really, the entitlement belongs to the person voicing the risk.&lt;/p&gt;

&lt;p&gt;I mention the entitlement part because when we’re inflexible, we’re often moving with entitlement, and I notice that when I am inflexible, at least in some ways, i’m moving with entitlement directly related to these two stories.&lt;/p&gt;

&lt;p&gt;So, I note inclined to rigidity when my risk assessment is seemingly (coercively) denied, dismissed, by someone else, which lands on me as if it’s rooted in entitlement. If there wasn’t entitlement, there wouldn’t be rigid dismissiveness, and there’d be less/no need for my own counter-rigidity.&lt;/p&gt;

&lt;p&gt;Thus, even rigidity could be, should be, part of the risk assessment. Or “I feel rigidity, is there more risk somewhere? &lt;em&gt;Is&lt;/em&gt; there rigidity?”&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;There are two stories about risk.&lt;/p&gt;

&lt;p&gt;One practical climbing risk mitigation tactic: safety checks &amp;amp; being actually attached to the end of the rope you think you’re attached to.&lt;/p&gt;

&lt;p&gt;Since I’ll never do back country anything, I don’t benefit from the other story of avalanche risk mitigation. The &lt;em&gt;principle&lt;/em&gt; seems useful, though. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;voicing risk, the response, dismissal, and maybe bad things happen&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Maybe it’s because of the possible severity of the ‘bad things’, that dismissiveness sometimes lands as coercive in some way.&lt;/p&gt;

&lt;p&gt;my current mental model of coercion has it often-enough attached to entitlements, and since I’ve found myself being sometimes coercive, certainly sometimes rigid and pushy on these things, I wanted to try to paint a path of possible coherence, because sometimes I &lt;em&gt;do&lt;/em&gt; feel entitled to things, and I don’t think it’s wrong.  You are entitled to plenty of things, too!&lt;/p&gt;

&lt;p&gt;Is not coerciveness in defense of a fair entitlement reasonable? so if coerciveness arises somewhere, I want very quickly to debug the broken entitlements.&lt;/p&gt;

&lt;p&gt;Often enough, half of the debugging is found simply in the &lt;em&gt;naming&lt;/em&gt; of the entitlements. one can start the  debugging process without knowing the conclusion, because of this. perhaps.&lt;/p&gt;

&lt;h2 id=&quot;additional-readings&quot;&gt;Additional Readings&lt;/h2&gt;

&lt;p&gt;If curious, these have all been sources of interestingness around these topics:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://bpspsychub.onlinelibrary.wiley.com/doi/abs/10.1348/096317904322915892&quot;&gt;Psychological Safety &amp;amp; Meaningfulness&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://pubmed.ncbi.nlm.nih.gov/19739881/&quot;&gt;Conditions for intuitive expertise: a failure to disagree&lt;/a&gt; I really like the framing - there’s a ‘failure to disagree’ between two experts that lots of people were like “ooooh their theories are in opposition to each other!”. So they got together and said “we emphasize two different aspects of the same thing. We’ve had a failure to disagree.” and I like the framing. Collaborative communication could regularly enough turn up something like “failures to disagree”. Right-spotting vs. wrong-spotting. “Can I find this thing to be reasonable” vs “must I find this thing to be reasonable?”&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.liberatingstructures.com/&quot;&gt;Liberating Structures&lt;/a&gt; says about itself: “Five conventional structures guide the way we organize routine interactions and how groups work together: presentations, managed discussions, open discussions, status reports and brainstorm sessions. &lt;strong&gt;Liberating Structures add 33 more options to the big five conventional approaches&lt;/strong&gt;.”&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:safety-check-now&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;A year or two ago, I was climbing with a friend I’d climbed with many times before, but it had been like a year since we’d climbed together. I noticed (and appreciated) the obvious, clear safety check they did before we started, and it was &lt;em&gt;obviously&lt;/em&gt; conducive to feeling more physical &amp;amp; emotional safety while climbing. I thought “why is this not part of every time I climb?” and now it is. Prior to that point, I was less intentional about safety checks, being more casual in the gym, and maybe more intentional when outside. I’d still do one mentally on myself and my partner before the climbing began, but I was less intentional. Now I’m pretty consistent about safety checks in all situations. &lt;a href=&quot;#fnref:safety-check-now&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:lynn-hill&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Lynn Hill is a wildly accomplished climber, I’d say fairly well known in the climbing community, certainly not everyone knows of her, but her name/face is very recognizable, she’s a big deal, an authority and expert practitioner. &lt;a href=&quot;#fnref:lynn-hill&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:full-check&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;the full check, it’s lots more than just the words:&lt;/p&gt;

      &lt;p&gt;[while looking at the knot, maybe giving a slight tug on the rope to improve visibility of the knot or tie-in points]:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;I like the knot. it’s through two points.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;[pull on the climber side of the gri gri, so the clicking of the locking mechanism is clearly heard]:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;locks.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;[squeeze the carabiner gate, mine happens to give a metallic clicking sound when locked]:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;locked.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:full-check&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:story-research&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;In prep for writing this, I was trying to find the canonical source, in Lynn Hill’s words, rather than my faded memory.&lt;/p&gt;

      &lt;p&gt;Turns out my memory had it all correct, except I didn’t know Lynn was using a bowline (the same knot I use to tie in). I’d thought it was a figure 8.&lt;/p&gt;

      &lt;p&gt;The first reference I found says it was a figure 8, didn’t tie it all the way: &lt;a href=&quot;https://publications.americanalpineclub.org/articles/13201213850/&quot;&gt;https://publications.americanalpineclub.org/articles/13201213850/&lt;/a&gt;, which turns out to be wrong!&lt;/p&gt;

      &lt;p&gt;I looked around on google for a better reference. I found &lt;a href=&quot;https://gripped.com/profiles/lynn-hill-talks-about-her-70-foot-ground-fall/&quot;&gt;https://gripped.com/profiles/lynn-hill-talks-about-her-70-foot-ground-fall/&lt;/a&gt;, but the article ends before discussing the knot thing. The youtube video has a short section on it. Google got me here: &lt;a href=&quot;https://news.ycombinator.com/item?id=5149133&quot;&gt;https://news.ycombinator.com/item?id=5149133&lt;/a&gt;, which pointed out that it wasn’t a figure 8, it was a bowline!&lt;/p&gt;

      &lt;p&gt;then, finally, I found Lynn Hill’s own words about the event, in her book: &lt;a href=&quot;https://books.google.com/books?id=-vp31fS0OvoC&amp;amp;lpg=PA4&amp;amp;dq=bowline%20lynn%20hill&amp;amp;pg=PA4#v=onepage&amp;amp;q&amp;amp;f=false&quot;&gt;https://books.google.com/books?id=-vp31fS0OvoC&amp;amp;lpg=PA4&amp;amp;dq=bowline%20lynn%20hill&amp;amp;pg=PA4#v=onepage&amp;amp;q&amp;amp;f=false&lt;/a&gt;&lt;/p&gt;

      &lt;p&gt;she says she started a bowline and never finished it.&lt;/p&gt;

      &lt;p&gt;Because of how the bowline is tied, until it’s finished, it’s ‘just’ two bends in the rope. There’s no knot. the exact same as no knot, and the rope just passed through the two tie in points with nothing else done to it. It’s not remotely similar to a partially-tied figure 8. &lt;a href=&quot;#fnref:story-research&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:complex-systems&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Or, errors should be assumed to happen regularly enough anyway, so for a catastrophe to occur, it necessarily is composed of several errors. Safe-enough systems accommodate errors, in many ways. &lt;a href=&quot;https://how.complexsystems.fail/&quot;&gt;how complex systems fail&lt;/a&gt; is a short, two-page list of 18 principles, like: &lt;em&gt;Complex systems are intrinsically hazardous systems.&lt;/em&gt;, &lt;em&gt;Complex systems are heavily and successfully defended against failure&lt;/em&gt;, &lt;em&gt;Catastrophe requires multiple failures – single point failures are not enough.&lt;/em&gt;, &lt;em&gt;Human operators have dual roles: as producers &amp;amp; as defenders against failure.&lt;/em&gt;, &lt;em&gt;Change introduces new forms of failure.&lt;/em&gt;, &lt;em&gt;Failure free operations require experience with failure.&lt;/em&gt; &lt;a href=&quot;#fnref:complex-systems&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:driving&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Bleh. So much of the modern existence is loosely or directly coupled to four-wheeled vehicle moving/storage networks, regardless of &lt;em&gt;your&lt;/em&gt; form of transportation. Sorta cannot opt out of car-dependent ways of being, even in a place like NYC, because a street stuffed with cars is always in the vicinity. It’s a walkable place, most people don’t own cars, but their day-to-day existence is still dominated by the vehicle. I don’t like the risk I feel from other people/their cars when I am out and about, by foot or scooter. I cannot really opt out of the vehicle class. I don’t like that my friends have to use cars (clunky) or bicycles (inadequate bike-friendly/safe routes around the city). Being on a bike at night crossing denver is dangerous, unambiguously so, often enough. Not the full trip, but certainly some of it, thus enough of it. &lt;a href=&quot;#fnref:driving&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:safe-by-default&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;american/american-style road networks &lt;em&gt;create&lt;/em&gt;, as a result of their normal operation, astonishingly dangerous conditions for all people all the time. &lt;a href=&quot;https://www.goodreads.com/book/show/201978334-killed-by-a-traffic-engineer&quot;&gt;Killed by a Traffic Engineer&lt;/a&gt; is a place to start the reading, if one wants. &lt;a href=&quot;/bollards&quot;&gt;I wrote a thing about bollards&lt;/a&gt; once, railing against the systems that cause people walking along roads to be ineligible for structural protection from the people driving just inches away from them, on those roads. It’s like a willful blindness to the concept of statistical inevitabilities, or distributions of probabilities. It’s like a religion. I don’t like religions. the &lt;a href=&quot;/traffic-bean&quot;&gt;traffic bean&lt;/a&gt; conveniently solves most of the dangers/delays associated with road junctions. &lt;a href=&quot;#fnref:safe-by-default&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>A Pattern of Repair: The Traffic Bean</title>
   <link href="https://josh.works/traffic-bean"/>
   <updated>2025-07-08T13:00:00+00:00</updated>
   <id>https://josh.works/traffic-bean</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;note: the above reading time is counting towards the word count all the javascript animating &lt;a href=&quot;/traffic-bean#animation-of-what-3x-efficiency-could-look&quot;&gt;this animation&lt;/a&gt;, the actual reading time at 250wpm is 25 minutes&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This whole resource is a collection of threads about this thing called ‘the traffic bean’ and a particularly gnarly junction near me. I live in 16th, this junction is one block north of me and a few miles east of me, 17th &amp;amp; Monaco.&lt;/p&gt;

&lt;p&gt;The ‘traffic bean’ is what I’m calling this ‘shared space roundabout’ installed in Poynton, UK. Here’s an explanation of it:&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/-vzDDMzq7d0?si=swdqg6V0IFGs7b4H&amp;amp;start=570&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;It’s important to know how a junction might look in normal conditions, so here’s a few minutes of continuous timelapse I sourced from a kind person on Reddit, July, 2025:&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/All6lIm7Pk8?si=tl29mZ-8v19XhX5W&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;I first articulated the idea of a ‘traffic bean’ &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;here on my substack&lt;/a&gt;, applying it to Colfax &amp;amp; Franklin &amp;amp; Park, mostly.&lt;/p&gt;

&lt;p&gt;The ‘traffic bean’ concept is based off of &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/interlude-a-pattern-of-repair-episode&quot;&gt;Poynton, UK’s rebuild of a shared-space &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;traffic bean&lt;/code&gt; concept&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s two still images that convey the vibe.&lt;/p&gt;

&lt;p&gt;First, notice the shape I’ve drawn over the junction mockup. This mockup is for work that was planned (and has now been finished, as of 2013) in Poynton, UK:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/poynton_traffic_bean.webp&quot; alt=&quot;poynton UK traffic bean&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As a reminder, here’s what beans may be shaped like:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/fava_bean.webp&quot; alt=&quot;fava bean shapes&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, an ‘irregular circle’ could be considered a bean. Thus, a ‘traffic bean’ shares some conceptual overlap with a traffic circle.&lt;/p&gt;

&lt;p&gt;I’m also suggesting a deviation from what Poynton, UK does - in Poynton, the entire center area of the junction is allocated to cars, so they can drive straight through if they want - I’m suggesting that the ‘circle’ shape be maintained, with the center of the circle kept open for people, not cars.&lt;/p&gt;

&lt;p&gt;here’s one of my own recent videos about junction efficiency:&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/PcWdBekzST4?si=9vvZZeHmr_jfnOMY&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;17th--monaco-traffic-bean&quot;&gt;17th &amp;amp; Monaco Traffic Bean&lt;/h2&gt;

&lt;p&gt;Here’s sorta what I’m thinking. The shape would be initially provided by orange traffic cones, until the right shape and curves are found. Cones allow permeability by people walking and biking, so lots of the space would be ‘reclaimed’ for non-car uses&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/17th_and_monaco_traffic_bean.jpg&quot; alt=&quot;reshaped junction&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here’s some footage of the intersection - I’d not even really thought of the application of the traffic bean concept to this junction until long after seeing it the first time. I originally went out there after reading &lt;a href=&quot;https://www.9news.com/article/traffic/home-5-car-crash-16-months-denver/73-592a599a-a19c-46eb-83e1-6981c4d83972&quot;&gt;this article&lt;/a&gt;, found it in a very relatable subreddit, &lt;a href=&quot;https://www.reddit.com/r/fuckcars/comments/1kwr0jo/family_considers_leaving_home_after_5th_car_crash/&quot;&gt;r/fuckcars&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Popped down to see how the owner of the house would feel about adding some bollards. My initial thought was to get some heavy boulders/bollards&lt;sup id=&quot;fnref:bollards&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:bollards&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; placed in the obvious spots. Might still do that! But beyond the boulders, the entire junction really could be, should be, rendered safe. If there was a car in the way or a person, the next vehicle might still crash into the house, but it would also hurt the other people who had nothing to do with the overly fast vehicle.&lt;/p&gt;

&lt;p&gt;So, a traffic bean, especially mixed with some bollard-type rocks in the median between Monaco northbound/southbound, and a few more in the front yard of the property in question.&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/5W8BM-LBG-Q?si=rO_7NKSgpCcDsNpu&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Here’s some from tiktok, me showing how the traffic bean could/would function, using the convenience of my scooter.&lt;/p&gt;

&lt;p&gt;This would be the same experience a larger vehicle would have, too, except likely even less stopping and waiting for passing traffic.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@boardsfast/video/7524789532680670495&quot;&gt;insta360 footage, on my scooter, treating the center island as a traffic bean (tiktok)&lt;/a&gt; (a direct link)&lt;/p&gt;

&lt;p&gt;below is an embed from tiktok, that depending on your device’s browser’s settings, may or may not render:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@boardsfast/video/7524789532680670495&quot; data-video-id=&quot;7524789532680670495&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@boardsfast&quot; href=&quot;https://www.tiktok.com/@boardsfast?refer=embed&quot;&gt;@boardsfast&lt;/a&gt;&lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;on-mutcd-compliance&quot;&gt;On MUTCD Compliance&lt;/h2&gt;

&lt;p&gt;The &lt;a href=&quot;https://mutcd.fhwa.dot.gov/kno_11th_Edition.htm&quot;&gt;Manual of Uniform Traffic Control Devices (pdf from dot.gov)&lt;/a&gt; is a chunky 900+ pages. I don’t have a paper version. Do you?&lt;/p&gt;

&lt;p&gt;This &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;traffic bean&lt;/code&gt; project is designed as a low-cost, reversible pilot demonstration, informed by MUTCD guidance and implemented under engineering judgment, to test improved traffic flow and pedestrian and vehicular operator/passenger safety. This pilot aligns with the MUTCD’s stated goals of improving the safe and efficient movement of people and goods — particularly vulnerable road users — through clearly communicated, low-speed, high-attention intersections. (see &lt;a href=&quot;traffic-bean#a-quick-introduction-to-junction-efficiency-modeling-vehicles-per-square-meter-per-minute&quot;&gt;section below&lt;/a&gt; on relative values of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vehicles per square meter per minute&lt;/code&gt; throughput)&lt;/p&gt;

&lt;p&gt;There’s two key provisions we’re going to implement, from this document, to be in accordance with the guidelines of this document:&lt;/p&gt;

&lt;h3 id=&quot;new-traffic-pattern-ahead-sign&quot;&gt;‘New Traffic Pattern Ahead’ sign&lt;/h3&gt;

&lt;p&gt;The first piece of signage is, of course, an indication to drivers that things are about to be different. There will be ways of helping them pay attention beyond just this sign, but we’ll use a &lt;a href=&quot;https://www.criticaltool.com/style/dicke-new-traffic-pattern-ahead-roll-up-traffic-sign-mutcd-w23-2-orange&quot;&gt;NEW TRAFFIC PATTERN AHEAD MUTCD W23-2&lt;/a&gt;: for each vehicular point of access. It’ll look something like:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/new_traffic_pattern_ahead.jpg&quot; alt=&quot;new traffic pattern ahead&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;exercising-judgement-engineering-study&quot;&gt;Exercising judgement, engineering study&lt;/h3&gt;

&lt;p&gt;After 36 pages of Table Of Contents, on page 3 of the &lt;a href=&quot;https://mutcd.fhwa.dot.gov/pdfs/11th_Edition/mutcd11thedition.pdf&quot;&gt;MUTCD 11th ed&lt;/a&gt;, there’s a line:&lt;/p&gt;

&lt;p&gt;Section 1A.04 Use of the MUTCD, paragraph 2:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Standard:
02 Where the content of this Manual requires a decision for implementation, such decisions shall be made
by an engineer, or an individual under the supervision of an engineer, who has the appropriate levels of
experience and expertise to make the traffic control device decision. Those decisions shall be made using
engineering judgment or engineering study, as required by the MUTCD provision.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;in the original:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/mutcd.jpg&quot; alt=&quot;mutcd&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;poynton-uks-answer-to-the-same-question&quot;&gt;poynton, UK’s answer to the same question.&lt;/h3&gt;

&lt;p&gt;In the video about Poynton, there’s a few sentances given to compliance with the UK equivalent of AASHTO or MUTCD, I believe the principal holds, discussed at the 9 minute 35 second mark of the video, which should be queued up in the below clip:&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/-vzDDMzq7d0?si=swdqg6V0IFGs7b4H&amp;amp;start=570&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h3 id=&quot;17th--monaco-updates-after-the-meeting-with-various-city-offices-tuesday-early-july-the-8th&quot;&gt;17th &amp;amp; Monaco: Updates after the meeting with various city offices Tuesday, early July (the 8th)&lt;/h3&gt;

&lt;p&gt;The junction needs to be fixed, obviously, but not with punishment or enforcement energy. The Denver Police Department’s staffing levels for speeding/speed monitoring is down quite a bit, according to my conversation with the police officer at the meeting, and even if it wasn’t, relying on police and the implicit threat within them to change driver behavior is &lt;em&gt;not interesting&lt;/em&gt;. He reported being pleased at the idea of no longer having to respond to accidents, fatal or otherwise, at 17th and Monaco.&lt;/p&gt;

&lt;p&gt;People move around based on the environment. When is the last time you walked or drove directly into a tree? That you didn’t walk into a tree isn’t because of enforcement, but because something about the treeishness of the tree caused every part of your brain to consider that space &lt;em&gt;unavailable and uninteresting to you&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The same principal can be brought into ‘traffic engineering’ or ‘mobility network design’.&lt;/p&gt;

&lt;p&gt;I don’t presume that every square meter of asphalt is 1) the same as every other square meter of asphalt, or 2) belongs to cars.&lt;/p&gt;

&lt;p&gt;Roads are a key part of a mobility network. Mobility networks exist to move people/vehicles around.&lt;/p&gt;

&lt;p&gt;Here’s how I evaluate mobility networks:&lt;/p&gt;

&lt;h2 id=&quot;junction-efficiency-modeling-vehicles-per-square-meter-per-minute&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Junction Efficiency&lt;/code&gt; modeling: Vehicles Per Square Meter Per Minute&lt;/h2&gt;

&lt;p&gt;One could imagine a metric for evaluating junction efficiency, for comparing different junctions, or junction designs against each other and themselves.&lt;/p&gt;

&lt;p&gt;I ended up moving most of this conversation to a dedicated post:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;/vehicles-per-sq-meter-per-minute&quot;&gt;A Junction Efficiency Metric: Vehicles Per Square Meter Per Minute&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The video is running at a 3x timelapse, in a continuous fashion, so every vehicle can be counted. It was taken at the peak of a morning rush hour. On my scooter I’m unimpeded by traffic, so it’s effortless for me to pop out to somewhere, even when traffic is maxed out.&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/5W8BM-LBG-Q?si=rO_7NKSgpCcDsNpu&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;five minutes is 300 seconds, and since the video is a 3x time lapse, that means I’m going to count the total number of vehicles that pass through the marked polygon in 100 ‘video seconds’:&lt;/p&gt;

&lt;p&gt;Before we start counting, lets determine exactly how large the junction is:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/17th_and_monoco_polygon_options.jpg&quot; alt=&quot;options for junction polygon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Lets see the square foot value for both of those polygons. We’ll do the math all the way through for both, of course.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/17th_google_earth_01.jpg&quot; alt=&quot;pull it up in google earth&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Above is the view of this junction in google earth. Next I’ll use the measuring tool to open a polygon drawing menu. The image below is what this looks like:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/17th_and_google_earth_02.jpg&quot; alt=&quot;draw a polygon, note the value&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So the ‘larger’ polygon is 1691 square meters.&lt;/p&gt;

&lt;p&gt;Lets look at the smaller option:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/17th_google_earth_03.jpg&quot; alt=&quot;draw a smaller polygon, note the value&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Simple enough, the smaller polygon is 1230 square meters.&lt;/p&gt;

&lt;p&gt;I’ll pause here for now, but the next step will be to measure the vehicles entering that shape.&lt;/p&gt;

&lt;p&gt;I’ll use the video I mentioned before, &lt;a href=&quot;https://youtu.be/5W8BM-LBG-Q?si=4UDXBRRjgWRbw7JA&amp;amp;t=15&quot;&gt;starting from when the intersection comes into view at the 15 second mark&lt;/a&gt; and continuing to the 115 second/1:55 mark, which is an equivalent of 5 minutes of real-time car counting.&lt;/p&gt;

&lt;h3 id=&quot;how-i-do-the-counts&quot;&gt;How I do the counts&lt;/h3&gt;

&lt;p&gt;Feel free to check my math or methodology.&lt;/p&gt;

&lt;p&gt;[I moved a bunch of text from here to the dedicated &lt;a href=&quot;/vehicles-per-sq-meter-per-minute&quot;&gt;vehicles per square meter per minute&lt;/a&gt; post]&lt;/p&gt;

&lt;p&gt;So, like we’re discussing, how many vehicles in 5 minutes? &lt;strong&gt;203 vehicles in five minutes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s plug these values into the formula:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;203 vehicles | 5 minutes | 1690 square meters&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0.0240 vehicles per square meter per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or flipped:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1 vehicle per 41 m² per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;41 square meters is about the size of:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A small studio apartment (6.4 m x 6.4 m)&lt;/li&gt;
  &lt;li&gt;Half of a tennis court&lt;/li&gt;
  &lt;li&gt;A single parking space (with buffer) plus some sidewalk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Half of a tennis court to move a single vehicle in a minute? Seems ‘obviously inefficient’ to me.&lt;/p&gt;

&lt;h3 id=&quot;how-to-make-it-better&quot;&gt;how to make it better&lt;/h3&gt;

&lt;p&gt;The way to make it more efficient, at first pass, would be to simply find a smaller area for the junction.&lt;/p&gt;

&lt;p&gt;For instance, compare the following:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;203 vehicles | 5 minutes | 1690 square meters
203 vehicles | 5 minutes | 550 square meters
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;the second junction, at 1/3rd the size, could be construed to have a 3x efficiency. (7% of a vehicle per square meter per minute instead of 2%).&lt;/p&gt;

&lt;h2 id=&quot;animation-of-what-3x-efficiency-could-look&quot;&gt;animation of what 3x efficiency could look&lt;/h2&gt;

&lt;p&gt;3x the efficiency could be achieved purely by making the junction much smaller - 500 square meters vs 1600 square meters.&lt;/p&gt;

&lt;p&gt;Here’s a way this could be visualized. Do you see a the way that this exhibits better efficiency? This is only one possible way the difference can be viewed, obviously. This isn’t how junctions work exactly, but it perfectly shows one of the dimensions of efficiency improvements.&lt;/p&gt;

&lt;h3 id=&quot;intersection-efficiency-comparison&quot;&gt;Intersection Efficiency Comparison&lt;/h3&gt;

&lt;p&gt;If you had limited space and needed junctions in three different places, and nothing else about the space could be used for anything BUT moving these vehicles, which would you want more of?&lt;/p&gt;

&lt;p&gt;Both intersections process 203 vehicles in 5 minutes&lt;/p&gt;
&lt;canvas id=&quot;efficiencyCanvas&quot; width=&quot;800&quot; height=&quot;400&quot;&gt;&lt;/canvas&gt;

&lt;script&gt;
    const canvas = document.getElementById(&apos;efficiencyCanvas&apos;);
    const ctx = canvas.getContext(&apos;2d&apos;);

    const zones = [
      { x: 50, y: 100, w: 300, h: 200, area: 1690, color: &apos;#d0eaff&apos;, label: &apos;Large Zone (1690 m²)&apos; },
      { x: 450, y: 100, w: 150, h: 200, area: 550, color: &apos;#ffd6d6&apos;, label: &apos;Small Zone (550 m²)&apos; },
    ];

    const totalVehicles = 203;
    const duration = 5 * 60 * 1000; // 5 minutes in ms
    const vehicleRadius = 4;
    const vehicleSpeed = 0.5; // pixels per frame

    let vehicles = [];

    function spawnVehicle(zone) {
      return {
        zone,
        x: zone.x,
        y: zone.y + Math.random() * zone.h,
        dx: vehicleSpeed,
        color: &apos;black&apos;,
      };
    }

    function drawZone(zone) {
      ctx.fillStyle = zone.color;
      ctx.fillRect(zone.x, zone.y, zone.w, zone.h);
      ctx.strokeStyle = &apos;black&apos;;
      ctx.strokeRect(zone.x, zone.y, zone.w, zone.h);
      ctx.fillStyle = &apos;black&apos;;
      ctx.font = &apos;14px sans-serif&apos;;
      ctx.fillText(zone.label, zone.x + 10, zone.y - 10);
    }

    function drawVehicle(v) {
      ctx.beginPath();
      ctx.arc(v.x, v.y, vehicleRadius, 0, Math.PI * 2);
      ctx.fillStyle = v.color;
      ctx.fill();
    }

    function update() {
      ctx.clearRect(0, 0, canvas.width, canvas.height);
      zones.forEach(drawZone);

      vehicles.forEach(v =&gt; {
        v.x += v.dx;
        drawVehicle(v);
      });

      vehicles = vehicles.filter(v =&gt; v.x &lt; v.zone.x + v.zone.w);
    }

    function loop() {
      update();
      requestAnimationFrame(loop);
    }

    function spawnLoop() {
      zones.forEach(zone =&gt; {
        const rate = totalVehicles / duration;
        if (Math.random() &lt; rate * 100) {
          vehicles.push(spawnVehicle(zone));
        }
      });
      setTimeout(spawnLoop, 100);
    }

    loop();
    spawnLoop();
   &lt;/script&gt;

&lt;p&gt;My desire with the traffic bean isn’t even necessarily to move more cars through - it’s to reduce certain forms of pollution, difficulty, distress, waste, excesses. One of the ways it does this is by reducing the physical space allocated to the junction.&lt;/p&gt;

&lt;p&gt;[lots more of this conversation got moved to the &lt;a href=&quot;/vehicles-per-sq-meter-per-minute&quot;&gt;vehicles per square meter per minute piece&lt;/a&gt;]&lt;/p&gt;

&lt;h3 id=&quot;achieving-a-400-square-meter-junction&quot;&gt;Achieving a 400 square meter junction&lt;/h3&gt;

&lt;p&gt;to get this junction, we’d want something bean shaped, with the inner shape hollowed out, like a doughnut. This frees up lots of square meters.&lt;/p&gt;

&lt;p&gt;A bunch of space saving comes from the ‘hollow’ inner space of the traffic bean. We’ll determine an inner shape that will get subtracted from the outer shape.&lt;/p&gt;

&lt;p&gt;The following shape is 147 sq meters:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/hollow_traffic_bean.jpg&quot; alt=&quot;147 square meters&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, this inside space can be subtracted from the outer space. Lets jot down a shape that could work for the outside.&lt;/p&gt;

&lt;p&gt;It needs to be only a single lane wide, with entry/exit points wherever needed.&lt;/p&gt;

&lt;p&gt;How would you feel about this shape? its 360 sq meters, which of course includes the 147 sq meters we’re gonna count as ‘for the people’ and not as space for cars:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/outer-bean.jpg&quot; alt=&quot;360 square meters&quot; /&gt;&lt;/p&gt;

&lt;p&gt;its 360 sq meters.&lt;/p&gt;

&lt;p&gt;so, less the inner area that doesn’t need to be counted,&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;360 sq meters (outside shape)  - 147 square meters (inside shape) = 213 square meters&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I had proposed that this junction could be 400 square meters, and we’ve used only a little more than half. I don’t think it will take 200 square meters to provide the access points for vehicles. the main shape could be clear now, I think, thus ‘the vibe of what I speak’.&lt;/p&gt;

&lt;p&gt;Lots of the remaining space would need to be ‘shaped down’ with traffic cones, until the right shape was found. Here’s a very crude example:&lt;/p&gt;

&lt;p&gt;The red inner lines are 11 feet long, which is certainly not a &lt;em&gt;wide&lt;/em&gt; lane, but isn’t super narrow, either. The dimensions here are pretty comfortable, even for commercial vehicles, I think. A normal sedan is almost 6 feet wide (and 14 feet long) A cement truck is 9.5 feet wide, including the mirrors, or 8.5 feet not including mirrors.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/extremely_crude.jpg&quot; alt=&quot;very crude mockup&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The above was my super wonky first mockup. Can you see what I’m aiming for, even as it’s obviously not the exact right shape?&lt;/p&gt;

&lt;p&gt;The junction has sorta widely-separated inputs and outputs, so this is a sorta extreme example of the paths that would be ‘carved out’ of the existing junction space.&lt;/p&gt;

&lt;h3 id=&quot;a-note-about-the-shapes&quot;&gt;A note about the shapes&lt;/h3&gt;

&lt;p&gt;What I’d suggest is that these shapes, the shapes of the lines, boundaries for cars, be ‘drawn’ or profiled, initially with the humble orange traffic cone.&lt;/p&gt;

&lt;p&gt;Traffic cones are no barrier to anyone but cars, so ias people are walking or biking through the area, they could easily cross perpendicular to the vehicle traffic, barrier free.&lt;/p&gt;

&lt;p&gt;The cars would stick to the paths, everyone else would move however they wanted.&lt;/p&gt;

&lt;p&gt;As is visible in this timelapse video from Poynton, pedestrians easily, safely cross the paths of cars. This is the exact same vibe I’d be aiming to replicate, and it would be easily ensured by putting ‘gate-like’ patterns of cones down, for the cars and pedestrians each, wherever there’s anticipated points of crossings.&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/All6lIm7Pk8?si=tl29mZ-8v19XhX5W&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;check out my series &lt;a href=&quot;/on-coning&quot;&gt;on coning&lt;/a&gt; to see videos, footage of other places I’ve placed traffic cones. It’s very easy to get the kinds of behavior one wants from drivers with traffic cones.&lt;/p&gt;

&lt;p&gt;Some signage on the inbound lanes would say ‘shared space’ or something, and there would begin to be affordances to the space of the junction being a ‘shared space’.&lt;/p&gt;

&lt;p&gt;Same as Poynton, there would be signage that says ‘shared space’ and curves such that vehicles move slowly enough. there could be an arbitrary design speed (13 mph?) that is achieved by people at the fastest part of the junction, and one would simply shape the curve to achieve that speed. &lt;sup id=&quot;fnref:vehicles-take-space&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:vehicles-take-space&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I have a video elsewhere on this page of me driving around and around and around the traffic circle, sorta profiling the shape of this bean. I was moving slowly, a car could have moved as fast as me. That shows how quickly a junction like this could ‘clear’ a vehicle, no stopping required. Much closer to 1 vehicle per meter per minute.&lt;/p&gt;

&lt;p&gt;Here’s the video:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@boardsfast/video/7524789532680670495&quot; data-video-id=&quot;7524789532680670495&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@boardsfast&quot; href=&quot;https://www.tiktok.com/@boardsfast?refer=embed&quot;&gt;@boardsfast&lt;/a&gt;&lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;some-mockups-to-convey-the-vibe&quot;&gt;Some Mockups to convey the vibe&lt;/h2&gt;

&lt;p&gt;Here’s an image with some modifications provided by chatgpt. It’s not perfect, but I think it’s interesting. Here’s the crude images I gave the model, I provided the following annotated screenshots:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/extremely_crude.jpg&quot; alt=&quot;extremely_rough_drawing_1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/extremely_rough_sketch.jpg&quot; alt=&quot;extremely_rough_drawing_2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And it delivered pretty neat images! Not necessarily ‘syntactically correct’ from a vehicular flow perspective, but I believe some of the vibe is being conveyed.&lt;/p&gt;

&lt;p&gt;I note the first image I fed it of mine also isn’t quite syntactically correct.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/chatgpt_cones_01.png&quot; alt=&quot;chat_gpt_proposal_one&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/chatgpt_junction_two.png&quot; alt=&quot;chat_gpt_proposal_two&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Like I said, these are not ‘syntactically correct’, but I notice on the source images, I didn’t bother to provide possibly relevant detail for some of it. Let’s create an accurate sketchup, and see if ChatGPT can generate a correct result. I’ve never tried this exact thing with chatgpt before. Only recently did I do my first image modification with it!&lt;/p&gt;

&lt;p&gt;Here’s the next source image. I’m calling it “syntactically correct” in that this particular shape would solve the problem of the intersection:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/syntactically_correct.jpg&quot; alt=&quot;correct enough&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The prompt I’m giving chatgpt:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This image I’m giving you now I’m calling ‘syntactically correct’, in that it actually works to solve the intersection, based on the current configuration. Could you draw the shapes of the green lines in traffic cones?&lt;/p&gt;

  &lt;p&gt;I note that there would be, then, two ‘islands’ of cones, to keep up with what I’ve drawn out. A long narrow one on the top right, and a sorta triangular one on the bottom left.&lt;/p&gt;

  &lt;p&gt;The width of the travel lanes could be about 11 feet.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here’s the result. Again, pretty good!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/chatgpt_third_result_junction.png&quot; alt=&quot;chatgpt third result&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Anyway, with the above image(s), and some cones, I think nearly anyone could now correct this junction.&lt;/p&gt;

&lt;h3 id=&quot;a-correct-enough-mockup&quot;&gt;A correct-enough mockup&lt;/h3&gt;

&lt;p&gt;Here’s the last mockup I gave - it’s ‘even more correct’ than before. I actually sorta like this design:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/even_more_correct.jpg&quot; alt=&quot;even more correct&quot; /&gt;&lt;/p&gt;

&lt;p&gt;and chat gpt gives me a pretty correct image. Based off these last two, I &lt;em&gt;think&lt;/em&gt; it’s clear what I’m suggesting:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/chatgpt_4th_result.png&quot; alt=&quot;chat gpt 4th go&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;how-to-deal-with-incorrect-speeds&quot;&gt;How to deal with “incorrect speeds”?&lt;/h2&gt;

&lt;p&gt;Some people will not have a correct entry speed, given the POV of these screenshots. If everyone was entering the frame at 10 mph, maybe it would be perfect, but the whole thing that kicked off a conversation about this junction was that at least a few times a day, someone is going 90 mph + (and all other forms of excessive speeds) on the road entering the bottom left on the images. It’s vehicles entering from the left, a long straight road that sorta begs people to go fast, if they’re at all inclined. &lt;sup id=&quot;fnref:i-like-slow&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:i-like-slow&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The way to bring speeds down is to gently begin to ‘shape’ the flow, with traffic cones. Starting by cones on the outsides of the lanes, then whenever it’s decided to make it a single lane, do so. (At least a block away). One’s it’s a single lane, add some curves or ‘horizontal deflection’ until satisfied.&lt;/p&gt;

&lt;p&gt;Watch the way people drive through the space, and iterate until it’s nice.&lt;/p&gt;

&lt;p&gt;I refer you to &lt;a href=&quot;/on-coning&quot;&gt;my piece on coning&lt;/a&gt;. Lots of examples of people’s speeds becoming very reasonable JUST by making something like a ‘gate’ out of a few cones bunched up across a relatively modest distance. Maybe do a gate, then another gate, then a little bend, so from the POV of the beginning, the sight line doesn’t go all the way through.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/accomplish_speeds.jpg&quot; alt=&quot;accomplish_speeds&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And there we go! Wherever there’s potential of excessive inbound speeds (which would probably be all inbound streets) make sure they’re shaped to a single lane and about 18 mph with some curves.  &lt;sup id=&quot;fnref:now-that-traffic-is-slow&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:now-that-traffic-is-slow&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-if-even-those-curves-dont-work&quot;&gt;What if even those curves don’t work?&lt;/h2&gt;

&lt;p&gt;Great question! Sometimes just because a vehicle has to go below a certain speed to navigate a certain curve doesn’t mean any particular vehicle will go the correct speed. What’s stopping a car from crashing through all the cones, and making a mess of everything, even at like 80 mph?&lt;/p&gt;

&lt;p&gt;Again, in &lt;a href=&quot;https://www.9news.com/article/traffic/home-5-car-crash-16-months-denver/73-592a599a-a19c-46eb-83e1-6981c4d83972&quot;&gt;this article about the specific house that’s gotten crashed into 5 times in 16 months, sustaining hundreds of thousands of dollars of damage and near deaths of the family &lt;em&gt;more than once&lt;/em&gt;&lt;/a&gt;.   &lt;sup id=&quot;fnref:the-emotional-safety&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:the-emotional-safety&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;TODO: add link to video of car driving down long rows of flex posts&lt;/p&gt;

&lt;p&gt;We all know that nothing about the best laid out plans, or cones, “guarantees compliance”. You know what does help with compliance? Not cops, not speed radars.&lt;/p&gt;

&lt;p&gt;Bollards. And curves.&lt;/p&gt;

&lt;p&gt;Bollards “help” so much with “compliance”. &lt;a href=&quot;/bollards&quot;&gt;here’s my original love letter to bollards&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For now, I’ll re-use an image that shows what we love about bollards:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/bollard.jpg&quot; alt=&quot;bollards being great&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, this is how one achieve’s speed management. It’s a familiar strategy, once you know to look for it. Let’s say we have cones laid out along the green lines. We’d put bollards behind them in certain spots on the curve:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/bollards_for_speed.jpg&quot; alt=&quot;bollards for speed&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And just like this, the inbound traffic from 17th would be rendered safe!&lt;/p&gt;

&lt;p&gt;This could be repeated for Monaco, and the other inbound direction of 17th. I’d suggest it would need to be implemented as the ‘transition zone’ into this ‘shared streets’ paradigm.&lt;/p&gt;

&lt;p&gt;There would need to be ‘new traffic pattern ahead’ sign to make everything MUTCD compliant.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/new_traffic_pattern_ahead.jpg&quot; alt=&quot;new traffic pattern ahead&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Once that sign is placed, everything goes. It’s pretty cheap online, and Trinity Traffic Control probably already has several of the 36” versions floating around. Here’s an online version of what I’m discussing: &lt;a href=&quot;https://www.criticaltool.com/style/dicke-new-traffic-pattern-ahead-roll-up-traffic-sign-mutcd-w23-2-orange&quot;&gt;Dicke® NEW TRAFFIC PATTERN AHEAD Roll Up Traffic Sign, MUTCD W23-2, Orange, 36” Super Bright Reflective Vinyl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The bollards could start as simple as low piles of bricks, or a bucket with gravel or concrete inside and a two-foot post sticking out the top. It can be destructible, and not stop a car, &lt;em&gt;for now&lt;/em&gt;. As long as it makes noise and scratches up whatever hits it means it’s good enough for now. Later they could effortlessly be upgraded to something else. I really like bell bollards, because they work in clever ways. They don’t stop a vehicle directly, they just lift up the vehicle so a tire doesn’t touch the ground anymore. Has the same effect. I really don’t want to see anyone hit something at a fatal speed, so there’s lots of ways to signal this sort of treatment, and gently bring someone’s speed to a reasonable level.&lt;/p&gt;

&lt;p&gt;For instance, sometimes it’s not excessive speed, it’s inadequate traction - when there’s snow or a particularly slippery storm, all of these interventions still need to work.&lt;/p&gt;

&lt;p&gt;I contend that they do. Even in inclement conditions, and &lt;em&gt;especially&lt;/em&gt; in inclement conditions.&lt;/p&gt;

&lt;h2 id=&quot;calculating-vehicles-per-square-meter-per-minute-of-poynton-uk-shared-space-traffic-bean&quot;&gt;Calculating &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vehicles per square meter per minute&lt;/code&gt; of Poynton, UK shared space ‘traffic bean’&lt;/h2&gt;

&lt;p&gt;I had the idea of &lt;a href=&quot;https://www.reddit.com/r/drivingUK/comments/1lww461/id_like_a_time_lapse_video_of_the_traffic_bean/&quot;&gt;asking in a UK-specific subreddit&lt;/a&gt; for someone to graciously help me out by getting a few minutes of continuous video footage of the Poynton, UK traffic bean in operation.&lt;/p&gt;

&lt;p&gt;And the internet delivered! A kind reddit user made 2 different videos, 3 minutes each, of the junction.&lt;/p&gt;

&lt;p&gt;They also provided a link to resources about the junction, and said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Basically prior to this traffic was heavy, the village was struggling with shops closing and Poynton wasn’t a destination. Following this deliberate shared space design space is shared between cars, bikes and most importantly pedestrians.&lt;/p&gt;

  &lt;p&gt;It’s a deliberate removal of all road signs, lanes etc which feels crazy at first but works really well. Drivers are on high alert, safety is improved and it’s allowed Poynton to open up nice cafe bars, restaurants etc with pavement seating etc and the semi pedestrianisation of the area, which is now thriving.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s do some math.&lt;/p&gt;

&lt;h3 id=&quot;poynton-uk-junction-size-in-square-meters&quot;&gt;Poynton, UK Junction size in square meters&lt;/h3&gt;

&lt;p&gt;This is easy to determine. Open up Poynton, UK in Google Earth:&lt;/p&gt;

&lt;p&gt;We’ll call it 990 square meters:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/poynton.jpg&quot; alt=&quot;poynton square meters&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now, how many vehicles per minute?&lt;/p&gt;

&lt;p&gt;I’ll post a time lapse of the two clips I reviewed.&lt;/p&gt;

&lt;p&gt;70 vehicles in the first clip, but there wasn’t traffic from all directions with pressure - there was consistent traffic from a single direction, it’s &lt;em&gt;possible&lt;/em&gt; more vehicles would fit. Either way, in the video, it’s obviously a generally peaceful flow. not a single vehicle is going fast.&lt;/p&gt;

&lt;p&gt;I counted 84 vehicles in the second 3 minute clip. We’ll do some math with these figures:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;70 vehicles/990 square meters/3 minutes&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;84 vehicles/990 square meters/3 minutes&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Thus, the finished values. The first timelapse:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;70 vehicles
990 m²
3 minutes
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;70 990 × 3 = 702970 ≈ 0.0236&lt;/p&gt;

&lt;p&gt;990×370 ​= 297070​ ≈ 0.0236&lt;/p&gt;

&lt;p&gt;✅ ≈ 0.0236 vehicles per m² per minute&lt;/p&gt;

&lt;p&gt;The second clip:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;84 vehicles

990 m²

3 minutes
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;84990×3=842970≈0.0283
990×384​=297084​≈0.0283&lt;/p&gt;

&lt;p&gt;✅ ≈ 0.0283 vehicles per m² per minute&lt;/p&gt;

&lt;p&gt;Compared to 17th &amp;amp; humboldt:&lt;/p&gt;

&lt;p&gt;203 vehicles
5 minutes
1690 square meters&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0.0240 vehicles per square meter per minute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So, this junction that’s a lot smaller, and has a vastly different design, is at LEAST as efficient as the intersection design we’re replacing.&lt;/p&gt;

&lt;h3 id=&quot;the-poynton-uk-junction-itself-3x-time-lapse&quot;&gt;The Poynton, UK junction itself 3x time lapse&lt;/h3&gt;

&lt;p&gt;Here’s the videos I received from the kind person on Reddit, these videos were recorded July 12, 2025:&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/All6lIm7Pk8?si=tl29mZ-8v19XhX5W&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;It’s a 3x time lapse, so has the same time/pacing as the video above of 17th &amp;amp; Humboldt.&lt;/p&gt;

&lt;p&gt;Maybe I’ll put them side by side in a future video. Poynton is quiet and safe, while 17th &amp;amp; Monaco is loud, unsafe, inefficient. If we were to calculate some of the harms of 17th &amp;amp; Monaco, we could list many. Beyond the issue of 5 crashes in 16 months, too.&lt;/p&gt;

&lt;h2 id=&quot;frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/h2&gt;

&lt;h3 id=&quot;what-about-the-17th-ave-road-diet&quot;&gt;What about the 17th Ave Road Diet?&lt;/h3&gt;

&lt;p&gt;I agree, it’s a great idea. There’s at least two ways it could be done. First pass would be to drop eastbound and westbound traffic on 17th to one lane each way (with cones). It could stay one lane each way, exactly as currently configured, OR something else.&lt;/p&gt;

&lt;p&gt;Here’s some visuals, pardon me for the ways they’re unclear. I suggest right-clicking/long-pressing on the images and opening them in a new tab - that’ll be the better resolution image&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/several_options_for_17th.jpg&quot; alt=&quot;some options&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Again, this could all be done iteratively. Also, rather than really ‘closing’ any roads to cars, I would want to add mid-block modal filters occasionally, just to stop cut-through traffic. The result is still similar to ‘giving the space over to non-car traffic’, but still allows vehicles access to the space. Doesn’t make it harder for homeowners to access the space, etc.&lt;/p&gt;

&lt;p&gt;Here’s another depiction of this approach. The whole block ‘behind’ a modal filter would be strongly protected by it, it would be quiet and peaceful.&lt;/p&gt;

&lt;h3 id=&quot;why-not-consider-dropping-modal-filters-down-the-whole-thing-to-further-pedestrianize-it-without-closing-anything-to-vehicle-access&quot;&gt;Why not consider dropping modal filters down the whole thing to further pedestrianize it, without closing anything to vehicle access?&lt;/h3&gt;

&lt;p&gt;That’s a great idea! I have an eye out on a way to cheaply, iteratively, pedestrianize the whole thing length of the north (or south) side of 17th, while again ensuring &lt;em&gt;lower max speeds of vehicles&lt;/em&gt; and &lt;em&gt;improved junction efficiency at every junction&lt;/em&gt;. Reducing all of the potential points of conflict between people on foot, people in cars, people on bikes, at night, in the snow, etc, is all top of mind.&lt;/p&gt;

&lt;p&gt;If the lowest-effort, quickest path for vehicles is on the south side of 17th, no reason the north could get car-shaped modal filters every block or two:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/pedestrianize_17th_westbound.jpg&quot; alt=&quot;pedestrianize the whole thing&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’d suggest building modal filters out of traffic cones for starters. I don’t know what pops to mind when I say ‘modal filter’ or ‘car-sized modal filter’ or ‘car-shaped modal filter’.&lt;/p&gt;

&lt;p&gt;Here’s a picture I found on the internet of a car-sized modal filter. It’s a filter that ‘filters out’ (same as an air filter ‘filters out’ particulate in the air) a mode of travel.&lt;/p&gt;

&lt;p&gt;Here’s an example of what I could mean by ‘car-shaped modal filter’:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/modal_filter.jpg&quot; alt=&quot;modal filter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This might seem more involved, I’m saying not necessarily that we should start with this, simply that a plan like this shows consideration for pedestrianized spaces and the safety of non-car mobility network users.&lt;/p&gt;

&lt;h3 id=&quot;costs-to-implement&quot;&gt;Costs to implement?&lt;/h3&gt;

&lt;p&gt;I think extremely low cost.&lt;/p&gt;

&lt;p&gt;The main thing is dropping off traffic cones and turning off/bagging traffic signals/signs.&lt;/p&gt;

&lt;p&gt;I’d do the actual implementation, because the final decision-making needs to be made on the ground, watching vehicles flow towards/around the curves.&lt;/p&gt;

&lt;p&gt;It cannot be written up and completely handed off to a contractor, though I’d gladly work with them to get it all placed. Cones are heavy, I, personally, don’t want to place every one of them completely alone. I’ve done it, I’m willing, though.&lt;/p&gt;

&lt;p&gt;I think that because the initial implementation is so temporary, so movable, and once installed can be incrementally upgraded to something more permanent, freeing up the temporary parts (cones) to be re-used elsewhere. Clever re-use of materials available on-site could be done.&lt;/p&gt;

&lt;h3 id=&quot;what-about-pedestrian-prioritization&quot;&gt;What about Pedestrian Prioritization&lt;/h3&gt;

&lt;p&gt;all the space that is going to be won back from cars with traffic cones will be handed over to pedestrians.&lt;/p&gt;

&lt;p&gt;The target vehicle speed when in the junction will be ~10mph, which is slow, and allows drivers to easily stop and allow pedestrians through, whenever a pedestrian shows up ready to cross a junction.&lt;/p&gt;

&lt;p&gt;It’ll be much safer and easier than the options for pedestrians in the current junction. In  &lt;a href=&quot;https://www.youtube.com/watch?v=All6lIm7Pk8&quot;&gt;this video from Poynton, UK&lt;/a&gt;, one can see how the pedestrians and cars hand off priority. I’d seek to re-create the exact same vibe.&lt;/p&gt;

&lt;p&gt;I visualized in &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part&quot;&gt;this piece&lt;/a&gt; that vehicles consume a certain amount of space per second when moving. (and stationary, technically)&lt;/p&gt;

&lt;p&gt;This principal is utilized in creating the pedestrian prioritation of the whole thing. &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/i/138911148/summary&quot;&gt;jump to the summary of the whole thing here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if it would be helpful, I could do some calculations on something like ‘new square meters of pedestrianized space’. Taking a two lane space to a one-lane-for-cars space (and the other lane for non-car people) is the same as taking a zero-lane-for-non-car-people space and turning it into a ‘one lane for non-car people’ space.&lt;/p&gt;

&lt;h3 id=&quot;what-about-fire-department-access&quot;&gt;What about Fire Department Access&lt;/h3&gt;

&lt;p&gt;I’ve got buy-in &lt;sup id=&quot;fnref:fd-buyin&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:fd-buyin&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; from the fire department already, and we’ll of course make sure the fire department vehicles can navigate everything created. In some ways I expect the experience will be easier for the fire department than the current junction configuration.&lt;/p&gt;

&lt;p&gt;AND! the current junction generates fire department calls for devastating car accidents, regularly, and just a single accident cost the home owner like $440k in repairs. The current system isn’t awesome, and this thing &lt;em&gt;might&lt;/em&gt; work.&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;I am proposing that the entire first pass of an iterative fix and/should be implemented with traffic cones. &lt;a href=&quot;/on-coning&quot;&gt;Here’s more of my coning projects&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part&quot;&gt;‘Traffic Congestion’ As Solvable, Part 1: evaluating traffic congestion as simply a result mismanaged street space that could to be handled rightly&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part-510&quot;&gt;‘Traffic Congestion’ As Solvable, Part 2: Turning to Junctions, scraping back layers of pseudo-science.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part-22e&quot;&gt;Traffic Congestion as Solvable, Part 3, Intro to Path Shaping: Cars take space, at rest and when moving, and intersections take space, and can be used by more or less people at once, especially when some thought is given to the paths various can use.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;“But josh {statement in support of the status quo}.” I find the status quo to be less interesting than alternatives. Consider &lt;a href=&quot;https://www.goodreads.com/book/show/201978334-killed-by-a-traffic-engineer&quot;&gt;Killed by a Traffic Engineer: Shattering the Delusion that Science Underlies our Transportation System&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;I’ve achieved failures to disagree (a very good thing) with many different people. Thus, I’ve achieved forms of participation and support on this sort of intervention from a few different representative roles: city engineers (golden, loveland, denver?), city council people (golden, denver), a mayor (golden), police (golden, loveland, denver) and lots of residents and mobility network users (everyone, everywhere). People who own and use a car regularly, &lt;em&gt;and&lt;/em&gt; people who don’t. Suburb people and city people. I’ve also certainly sometimes annoyed a similarly expansive swath of people.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.essexdesignguide.co.uk/case-studies/poynton-cheshire-active-design-principles/&quot;&gt;Applying the EDG in practice: Active Design Principles (essexdesignguide.co.uk)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20140724091522/http://www.sustrans.org.uk/our-services/what-we-do/route-design-and-construction/shared-space-busy-intersection-poynton&quot;&gt;Inspiring Infrastructure: Shared Space at Busy Intersection, Poynton&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;details of the ‘traffic bean’, applied to Colfax &amp;amp; Franklin&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.sociallifeproject.org/two-intersections-one-great-one-killer/&quot;&gt;Killer Intersections vs. Shared Space: From Intersections that Divide to those that Connect&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Shared_space&quot;&gt;shared space (wikipedia)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.pps.org/article/what-is-shared-space&quot;&gt;what is a shared space?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:bollards&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’ve &lt;a href=&quot;/bollards&quot;&gt;written more about bollards&lt;/a&gt;. &lt;a href=&quot;#fnref:bollards&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:vehicles-take-space&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;One of the first parts of the substack I stared is about how much speed is used by a vehicle &lt;em&gt;including a two second stopping distance between the next vehicle&lt;/em&gt;. &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part&quot;&gt;‘Traffic Congestion’ As Solvable, Part 1&lt;/a&gt; Based on such figure (30 feet, for instance) all sorts of useful things can be inferred, like ‘vehicle carrying capacity per lane in a 100 meter block at 20 mph’ &lt;a href=&quot;#fnref:vehicles-take-space&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:i-like-slow&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I, personally, am a cautious vehicle operator, and even when I’m in a car, I don’t assume anyone sees me. I am quite invisible when I’m on my scooter, obviously. I also don’t believe in the concept of ‘right of way’, so I ride at a speed that allows me to easily verify my safety by checking the sightlines of all cross roads. I never “commit” to a junction crossing until I’ve determined it’s impossible for another vehicle to contest the same space. So I, personally, rarely go above 35 mph on roads like this, maybe 40 max. In plenty of the footage above, my speed begins with a 2. &lt;a href=&quot;#fnref:i-like-slow&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:now-that-traffic-is-slow&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Once the traffic is a single lane of reasonable speed, flowing smoothly through a traffic bean, I’d love to see how it felt giving a similar treatment to the next junction, even though the next closest junction in all directions is an unsignalized junction. The traffic bean pattern solves many/most/all? junction types, regardless of if the current junction is signalized or unsignalized, or has a stop sign, or doesn’t. That’s maybe another blog post. Just know that this pattern theoretically replicates/connects to itself very graciously, leading to great reductions in travel time/time spent waiting around for everyone. &lt;a href=&quot;#fnref:now-that-traffic-is-slow&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:the-emotional-safety&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;It feels like I shouldn’t have to/don’t want to spend many words explaining the impact on ones sense of psychological/emotional safety, after experiencing something like that, knowing &lt;em&gt;at any moment&lt;/em&gt; a vehicle could bounce through a wall with barely a warning. The extreme attunement to fast vehicles/racing engines. &lt;a href=&quot;https://www.9news.com/article/traffic/home-5-car-crash-16-months-denver/73-592a599a-a19c-46eb-83e1-6981c4d83972&quot;&gt;Here’s the article about the car accidents.&lt;/a&gt;&lt;/p&gt;

      &lt;p&gt;The homeowner now has several thousand pounds of boulders placed on the edge of the property, facing the traffic which is barrelling towards the property like bullets from a gun, deviating at the last second by a well-timed turn of the vehicle’s steering column. So, the property is now structurally protected, and even now, it’s only a partial solution, and this exact solution shouldn’t be doing all the heavy lifting by itself.&lt;/p&gt;

      &lt;p&gt;Even for the sake of the safety of a driver who, in the eyes of society, might be completely at fault! Even that person deserves a well-enough designed system, and a well-enough designed system might still cause someone to total their car hitting an immovable object at a certain speed, but an environment supporting moving speeds of 25 miles per hour is much gentler than one accommodating 90 mph and then generating perpendicular road crossings and people sleeping in line of those fast vehicles. &lt;a href=&quot;#fnref:the-emotional-safety&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:fd-buyin&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I wandered into the local fire department one night, basically to ask if their sirens were equipped with a volume control knob. Short answer is ‘no’, long answer is ‘no, with inertia’. I tailed them in on my scooter after following the vehicle around the area for a bit, and being tragically bored by how slow they had to move. I asked if they’d want to move around quicker, less interference from bike lanes and lights, everyone gave an enthusiastic yes.&lt;/p&gt;

      &lt;p&gt;No one there signed anything saying they thought it was a good idea, but they probably would if I asked them, and confirmed that the vehicles would fit. Everything we discussed and their concerns are coherent with this particular plan. &lt;a href=&quot;#fnref:fd-buyin&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Do Not Neglect The Needful Role of the Witness</title>
   <link href="https://josh.works/do-not-neglect-the-needful-role-of-the-witness"/>
   <updated>2025-07-07T13:00:00+00:00</updated>
   <id>https://josh.works/do-not-neglect-the-needful-role-of-the-witness</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Elsewhere I’ve mentioned “the role of the witness”, been sitting on this as a draft (in my head) for a long time.&lt;/p&gt;

&lt;p&gt;I absolutely cannot move away from the phrasing:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Do not neglect the &lt;em&gt;needful&lt;/em&gt; role of the Witness&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I capitalize Witness, as this is a real “role”, and it’s needed.&lt;/p&gt;

&lt;p&gt;The context when one finds themselves with this role is that of ‘witnessing mistreatment’. The mistreatment of &lt;em&gt;you&lt;/em&gt;, or the mistreatment of someone else. Indeed, once the skill/context/landscape of this “witnessing” thing is sorted, you can provide this caring treatment for yourself, &lt;em&gt;and&lt;/em&gt; for others. To be able to do it for yourself is to be able to do it for others, and to have the ability is to also find yourself with somewhat of an obligation. Also, once you’re able to Witness for yourself and for others, you unlock a cool next skill, which is ‘Witnessing the other when &lt;em&gt;you&lt;/em&gt; are the source of harm.’&lt;/p&gt;

&lt;h2 id=&quot;witnessing-for-others&quot;&gt;Witnessing for Others&lt;/h2&gt;

&lt;p&gt;When one witnesses (observes) one person mistreating another, it’s like being made (unwillingly) a participant in someone else’s drama. So, sometimes there becomes an obligation to provide the ‘Witnessing’ service to others. At minimum, one can provide Witnessing to the victim of mistreatment, OR the perpetrator, if the victim is no longer available to serve. Here’s something I said to a kid once, after an adult was speaking very meanly to them:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;No adult should ever speak to a kid like that. You don’t deserve to ever be treated like that. If I were in your shoes, I’d probably feel things like disappointment, fear, anger, confusion. That’s all on them, it wasn’t your fault, it in fact cannot be your fault, and it’s even more foul that they’re trying to convince you it is your fault.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Someone once basically saved my life, in high school, when they took me on a walk and told me “your dad is an asshole, he treats you terribly, you won’t always have to live in his house.” That was the first time that sentiment had been shared with me, and it re-made my view of the world. My parents recollection of me before and after the walk was “after hanging out with {person}, we have no idea what they said, but you were so much more relaxed and manageable after.” It was because I was given hope, and someone named the abuse.&lt;/p&gt;

&lt;p&gt;To provide the Witnessing to the adult would look like this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The way you were speaking to that other person is wrong. It was coercive, full of anger and meanness and control and fear. Treatment like that is never acceptable, in any way, and I think dramatically differently about you &lt;em&gt;now&lt;/em&gt;, having witnessed what you just did, than I did before seeing this. Regardless of why you think it’s their fault, it is, in fact, &lt;em&gt;not&lt;/em&gt; their fault, and you trying to excuse it makes your position worse not better.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Remember the abuser’s/supremacist’s syllogism:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;That didn’t hurt. If it &lt;em&gt;did&lt;/em&gt; hurt, it wasn’t on purpose. If it &lt;em&gt;was&lt;/em&gt; on purpose, you deserved it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is why I don’t accept the language of ‘punishment’ or ‘consequences’ or ‘discipline’ anymore, btw. All of those are forms of an adult using their power and control to hurt a child/someone else, &lt;em&gt;and are thus the exploitation of a power dynamic, thus abuse!&lt;/em&gt;. If you think punishing children is acceptible, you’re an abuser.🖕 Some people try to use ‘positive punishment’, AKA rewarding ‘good’ behavior, rather than &lt;strike&gt;punishing bad behavior&lt;/strike&gt; abusing children. It still does the same thing. It’s a clear message to the child “You will receive love and affection and warmth and dignity and aid &lt;em&gt;exclusively&lt;/em&gt; based on if I feel good about you &lt;em&gt;in this moment&lt;/em&gt;.”&lt;/p&gt;

&lt;p&gt;Abusers are resistant to having their mistreatment named. To my parents, I’m still the child they felt entitled to abuse. A time ago, I spoke with each of them. The me of today knows how to recognize and name coercive dynamics in conversations. Like “DARVO” (deny, attack, reverse victim and offender). My dad got in a huff when I interrupted his monologue about sky daddy and patriarchal ways of being (“men deserve to control women, children, and other men they see as lesser than them”), saying ‘if you cannot speak to me respectfully, I will end this conversation.’&lt;/p&gt;

&lt;p&gt;He was, of course, clueless (or did he know it all too well?) to the dynamic that lead to him ETERNALLY TREATING ME WITH DISRESPECT CONTINUOUSLY FOR DECADES. The only times he didn’t treat me with disrespect was when we didn’t interact. He and I basically stopped speaking when I was 16, and that is not odd to him.&lt;/p&gt;

&lt;p&gt;I only reengaged with him when I needed to tell him he is not permitted to physically assault my child. It’s nauseating that this even needed to be stated, and yet desperately needed to be discussed.&lt;/p&gt;

&lt;p&gt;And he accused &lt;em&gt;me&lt;/em&gt; of disrespect. That was the ‘Reverse Victim and Offender’ part of DARVO. In that conversation he’d already denied, dismissed, and attacked. I was not giving in, in the way he’s used to people giving in to his bullying, so he escalated to calling me disrespectful, and threatened to stonewall, which is really projection of his own disrespect towards me. It’s innappropriate for a parent to expect their child to parent them (that’s actually abusive! it’s the exploitation of a power dynamic!) so I told him to get fucked. (slightly more gently than that, but only a little - I told him he deserves the treatment we all think persistent, resistant child abusers deserve. His self image is built on him thinking he’s a good person, so he seems uninterested in engaging with narratives that do not build on that.)&lt;/p&gt;

&lt;p&gt;He dismissed every single one of my concerns, and I noticed him doing this reflexively for years. When my kid was an infant, and he tried to put words in her mouth (he does this to every kid he encounters, it’s disgusting, he makes the kid tell him that he’s the greatest. Literally.). I said “absolutely in no circumstances is it acceptable for you to put words in her mouth or tell her what to say.” his response was “yeah, whatever, i’ll pay for her therapy later.”&lt;/p&gt;

&lt;p&gt;If we were in the same room, I would have perhaps slapped him. We were not, so I just got up (with my kid) and walked out. I cannot keep my kid out of his company, but I think she’ll be okay. I tell her that my parents beat children when they think they’re entitled to it, and while they promised me that they wouldn’t beat my kid, they are still at their core the kind of people that assault children.&lt;/p&gt;

&lt;p&gt;Don, if you’re reading this, you probably already know (because I said it very, very clearly to you, repeatedly) that I have nothing but contempt for the ways you move through the world! Thinking about you makes me ill! Before our last phone call, I noticed how familiar the rising sense of dread was, in me, as we got closer to the time of the call. You spent your whole life making sure I feared you, so you could control me! “a fear of the lord is the beginning of wisdom” you’d say, and because you thought you were god, you figured “a fear of the dad is the beginning of wisdom”, and you allowed yourself to emotionally terrorize, and you disconnected from me enough that it never actually bothered you, to terrorize your own kid. And you were good at terror, and bullying, and shaming. 🤮&lt;/p&gt;

&lt;p&gt;&amp;lt;deeeeeeeep breath&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;️-positive-witnessing-for-others-️&quot;&gt;❤️ “positive” Witnessing for others ❤️&lt;/h2&gt;

&lt;p&gt;I forgot, upon the first pass of this piece, to mention the BEST case for Witnessing! There’s lots of needfulness around Witnessing harm and mistreatment, but the kind of Witnessing that is enjoyable for everyone is to Witness someone else, being them, and name something about it to them, others.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;There’s so much obvious care and intentionality in how you did {such and such}.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;You’re bringing focus, attention, persistence to {x}.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;When I watch you do {such and such}, I notice it in different ways than I usually do, because {something about how they did it}.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There’s tons of this kind of energy that can be directed towards kids. Here’s a few typical statements I’ve made to my almost-four-year-old kid:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Wow, your feet have so much quickness in them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;You noticed that {such and such she commented upon}, from so far away? Wow. I wasn’t looking that far ahead at all.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;You noticed the change in {tree, flowers, spot of grass, a place where something was growing and now something different is growing}? You remembered how it was before? I find that interesting.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;How did you learn this? Did you notice it, or did someone teach you? You taught yourself? Wow. How cool to know that, teach it to yourself, and learn from yourself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The way you do {something} has changed! Have you noticed it? I’ve noticed. It’s fun to watch!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I find you to be an interesting person. Do you find yourself to be interesting? Yeah? I’m thrilled to hear it. And you find yourself to be funny? You make jokes that you find funny? Wow. I’m a fan. Doing things because it’s interesting or funny &lt;em&gt;to ourselves&lt;/em&gt; is such evidence of skill, interestingness, distinctiveness. You have great taste!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;You balanced for such a long time against that hammock! And on one foot! I’ve never seen that before, have you done it before? Was that interesting to you? Was it tricky? [difficult to do]? It looked tricky from here.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gosh, I could say so much more. Witnessing, to others, distinctive or interesting things about them, is sometimes an empowering, affirming, helpful energy to direct towards others.&lt;/p&gt;

&lt;p&gt;A possible hope I have, for someone reading this, is simply for the person to know that we, as people, hold tremendous power with words, simply by verbalizing observations. Sometimes we can provoke incredible outrage, and frustration, interpersonally, but our words can be just as effective towards promoting peace, integration.&lt;/p&gt;

&lt;p&gt;A big thing for Eden that I name and witness is her observation and awareness &lt;em&gt;of herself and things happening around her&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I thank Eden all the time for keeping herself safe. When she falls, she’s &lt;em&gt;skilled&lt;/em&gt; at using her arms to keep her head from hitting the ground. The last time she fell while running, she scraped her palms, elbows, and knees! and her head didn’t touch the ground, even though she fell flat. Even as she was crying as I picked her up, and I was getting bandaids, it wasn’t “oh you fell you poor thing” it was “wow, Eden, I see how forcefully you pushed the ground with your arms, and how strongly you moved your neck, to protect your head. Thank you for keeping yourself safe! I noticed that I felt scared when I saw you fall, at first, but I noticed you kept your head so high in the air and away from the ground - you kept yourself safe. Did you notice that too?”&lt;/p&gt;

&lt;p&gt;She so often affirms that she’s being intentional about protecting her head. She’s got great instincts, and I tell her often how much I notice her instincts keeping her safe.&lt;/p&gt;

&lt;p&gt;Or something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Will you use your eyes and ears, while we’re walking, to help us be safe? If you hear a car engine, will you let me know? (if she’s in the jogger, and I’m jogging, she can possibly hear a bit better than I can, since I’m running, so I’ll ask her to help participate in maintaining our collective safety).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I also note that we’ve got great skills for crossing roads. Sometimes she’s on foot or on her striker bike, and she &lt;em&gt;always&lt;/em&gt; waits for me before crossing a road - she knows I like to go into the road first, and then she starts crossing as quick as she can, and once she’s started crossing, crosses it as quickly as possible, finishing it a bit before I do, minimizing her time in the street.&lt;/p&gt;

&lt;p&gt;I see other parents who obviously don’t quite trust their kids (maybe for good reason, maybe not) around roads, and are constantly issuing commands and anxieties near roads. This isn’t needed at all with Eden. She is so aware of keeping herself safe, she doesn’t actually want to be in roads, and has great situational awareness. She notices if she can hear engines, she notices sightlines and obstructed sightlines, etc. She notices if it seems like drivers are paying attention, if they look like they notice her/us or not.&lt;/p&gt;

&lt;p&gt;I comment on all of this. The first time she said “that person didn’t see us” I said “whoa! You were looking at them in such a way, you could tell they were not looking at you?” “yeah!” “wow, some adults don’t even do that, and don’t know that they could be doing that. What skills you have!”&lt;/p&gt;

&lt;p&gt;So much for kids. It’s easy to Witness with adults, too. For instance, I spend a bunch of time climbing, I spend time with others who climb, it’s easy to note, kindly, the appreciable things others do while climbing:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The way you did that move looked really smooth this time&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;You were so fast through that sequence&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;When you went to that hold, you hit it perfectly. No readjusting the position or the grip. [compared to the last time, where they got three fingers on instead of 4, or readjusted or hit it with an open hand position and then adjusted to a half or full crimp]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I am sometimes drained by climbing with people who seem to practice exclusively ‘wrong spotting’ with their own climbing. Every time they pull onto the wall, when they step off, they have a laundry list of errors or evidences of their inadequacy. It’s not my favorite thing. My approach is to notice what went well, &lt;em&gt;or&lt;/em&gt; what was interesting, &lt;em&gt;or&lt;/em&gt; something that is &lt;em&gt;different&lt;/em&gt; from a prior go. There’s always something here available to comment upon, instead of “gosh, you’re such a shitty climber”. People rarely call others shitty climbers, but they often call themselves a shitty climber. Sigh.&lt;/p&gt;

&lt;p&gt;Also, besides commenting and making an assessement or a judgement, one can also ask the person their own observation of something! “Did that feel different than the last time attempt? Did you try something different? Yeah? And it seemed {better/the same/worse}? Cool!”&lt;/p&gt;

&lt;h2 id=&quot;witnessing-for-yourself&quot;&gt;Witnessing for yourself&lt;/h2&gt;

&lt;p&gt;Sometimes, the person that needs the witnessing isn’t someone else, but it’s us.&lt;/p&gt;

&lt;h2 id=&quot;witnessing-the-inner-critic&quot;&gt;Witnessing the inner critic&lt;/h2&gt;

&lt;p&gt;Sometimes, during a given day or time, the worst thing you hear is something you seem to have said to yourself. This is very evident in climbing communities, for instance. People will casually unleash devestating criticisms of themselves for making a mistake, or not doing something that’s already pretty difficult and challenging.&lt;/p&gt;

&lt;p&gt;Sometimes when I hear it, I’ll interrupt, with something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;if you just said about me, what you just said about you, we’d all be agreeing that that’s super rude. Right?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There’s always agreement. The person totally agrees that if they said about me, what they just said about themselves, it would be wildly inappropriate.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;my model of that critical voice is that it’s not ‘you’, but it’s the internalized voice of an emotionally immature caretaker, often some combination of parents and/or teachers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, it’s not you picking on you, it’s someone else using your brain to pick on you. And my obligation to myself is to name that dynamic when I see it happen, because I’m familiar with that thing, this ‘toxic inner critic’.&lt;/p&gt;

&lt;p&gt;Sometimes I’ve asked for the name of a parent, and the next time the person says something rude to themselves, I’ll say “Shut up, Marsha” or “Shut up, {name they gave me}”. It’s good for a laugh, and really lands the point that maybe that self-shaming voice isn’t actually us, it’s really something that belongs more to a toxic parent.&lt;/p&gt;

&lt;p&gt;A lot more could be said about this. Often it’s hard to treat others much better than we treat ourselves. If someone close to us is endlessly harsh to themselves, it’s a bit of an ill omen for how they might sometimes treat us. Regardless if you &lt;em&gt;need&lt;/em&gt; someone to treat themselves better, it’s nice to &lt;em&gt;not neglect the needful role of the witness&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;witnessing-the-outer-critic&quot;&gt;Witnessing the outer critic&lt;/h2&gt;

&lt;p&gt;Now, sometimes the harsh things are indeed being said by other people. The parent IS on hand to say the thing, or a partner IS on hand, dishing out the bad things.&lt;/p&gt;

&lt;p&gt;The stuff I tend to be attuned to is the Gottman’s ‘four horsemen of the relationship’, with one more that I added:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Defensiveness&lt;/li&gt;
  &lt;li&gt;Contempt&lt;/li&gt;
  &lt;li&gt;Criticism&lt;/li&gt;
  &lt;li&gt;Stonewalling&lt;/li&gt;
  &lt;li&gt;Dismissiveness&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;(I added dismissiveness, it’s a similar energy as defensiveness)&lt;/p&gt;

&lt;p&gt;If &lt;em&gt;you&lt;/em&gt; are being mistreated, and you imagine yourself Witnessing yourself, that can ameliorate the damage, a little. It can reduce the uncertainty and fear. Thinking “They should not treat me like this” and “I don’t deserve this” are powerful thoughts, if you’ve been conditioned in the opposite direction.&lt;/p&gt;

&lt;p&gt;Evangelicalism conditions people, via the motif of ‘the violent atonement’, to think it’s reasonable to be treated terribly. I’d argue evangelicalism creates abusers by ladening every single participant with a giant, strangling burden of shame, then tells them that if they control themselves and the world around them tightly/rightly enough, they can have some temporary reprieve from the shame.&lt;/p&gt;

&lt;p&gt;I tell my kid “isn’t it interesting, that some people think that sin is a real thing?”&lt;/p&gt;

&lt;p&gt;This is &lt;em&gt;very&lt;/em&gt; close, by the way, to how evangelicals &lt;a href=&quot;/hitting&quot;&gt;teach themselves to hurt their own kids&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you do something ‘bad’, I will punish you. That punishment is an expression of my love, so if you are hurt by it, please know that it was &lt;em&gt;you hurting you&lt;/em&gt;, not &lt;em&gt;me&lt;/em&gt; hurting you.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My mother would say “this hurts me more than it hurts you” as she would proceed to dis-attune from me and beat me, until my &lt;em&gt;obviously sensitive self&lt;/em&gt; was completely broken. What a bitch. Maybe it wasn’t a disattunement, I don’t have a single memory of her ever actually attuning to me, so that disattunement was just her default way of being. She would do it with a flat, cold affect, and there would be words afterwards like “this is evidence that I love you”, and she would demand hugs, again, with a disattuned, flat, cold, dead affect. 🤮&lt;/p&gt;

&lt;p&gt;I wrote about this extensively elsewhere, and have quoted much from a book about the &lt;a href=&quot;/hitting&quot;&gt;ritualized assaults of adults against children&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No one in my life Witnessed to me that this was mistreatment; that was a task left to a grown adult me, at 30+ years old, to witness to myself my own experiences. Eventually, the role of the witness became a way that I cared for myself in the midst of really unfortunate dynamics with others.&lt;/p&gt;

&lt;h2 id=&quot;one-take-on-why-witnessing-matters&quot;&gt;One take on why Witnessing matters&lt;/h2&gt;

&lt;p&gt;Here’s a quote from &lt;a href=&quot;https://www.goodreads.com/book/show/402366.The_Verbally_Abusive_Relationship?ref=nav_sb_ss_1_33&quot;&gt;The Verbally Abusive Relationship&lt;/a&gt;, discussing why some different people can experience the same form of harm, and only some of them adopt the attributes of this abusive way of being. (‘abuse’ being synonymous with a belief in power over, controller/controlled dynamics)&lt;/p&gt;

&lt;p&gt;I remembered this book having a section about the role of the Witness, in the child’s life, having a protective effect from the mistreatment, by &lt;em&gt;naming to the victim&lt;/em&gt; dynamics of the situation.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;CHILDHOOD EXPERIENCES OF THE ABUSER&lt;/p&gt;

  &lt;p&gt;Now, let us look at the origins of the abuser’s behavior. The typical abuser also grew up in Reality 1, where Power Over and dominance prevailed, and hence so did verbal abuse. Also, as was the case with the partner, many of his feelings were neither validated nor accepted. However, unlike the partner, he had no compassionate witness to his experience. Without a compassionate witness, he could conclude only that nothing was wrong. If nothing was wrong at all, then all his painful feelings must not exist. Automatically he stopped feeling his painful feelings. He closed them off from awareness as one would close a door. And he did not know what he suffered.&lt;/p&gt;

  &lt;p&gt;In this way he closed the door on a part of himself. He became inured to Reality 1. And, just as Hitler modeled his behavior after that of his brutal father, so, too, the abuser modeled his behavior after his childhood abusers. He became adept at verbal abuse.&lt;/p&gt;

  &lt;p&gt;Without the knowledge of his feelings of what he suffered-he could not experience empathy and compassion and so could not cross the threshold into Reality II. This reality was now behind closed doors.&lt;/p&gt;

  &lt;p&gt;&lt;em&gt;The absence or presence of a helping witness in childhood determines whether a mistreated child will become a despot who turns his repressed feelings of helplessness against others or an artist who can tell about his or her suffering.&lt;/em&gt; (Alice Miller, The Untouched Key, 1990, p. 60)&lt;/p&gt;

  &lt;p&gt;Since the abuser feels justified in his behavior and seems to have no comprehension of its effects, we can assume only that he is acting out his repressed feelings and is, therefore, acting compulsively. Abusers seek Power Over because they feel helpless. The helpless, painful feelings of childhood that “must not exist” and “must not be felt” do exist and, if not felt, are acted out.&lt;/p&gt;

  &lt;p&gt;A long time ago in the abuser’s childhood, he closed the door on these feelings. To survive in childhood he could do no less. His feeling self, nonetheless, lived on behind closed doors. This feeling child within was, psychologically speaking, locked away in a tomb of agony.&lt;/p&gt;

  &lt;p&gt;The longer the child within is unrecognized, the more enraged it becomes, and consequently, the more rage the abuser acts out. Alice Miller tells us&lt;/p&gt;

  &lt;p&gt;&lt;em&gt;As long as this child within is not allowed to become aware of what happened to him or her, a part of his or her emotional life will remain frozen, and sensitivity to the humiliations of childhood will therefore be dulled. All appeals to love, solidarity, and compassion will be useless if this crucial prerequisite of sympathy and understanding is missing.&lt;/em&gt; (Alice Miller, For Your Own Good, 1983, p. xv)&lt;/p&gt;

  &lt;p&gt;Typically, even though the partner tries to explain to her mate what bothers her, the abuse continues. Appeals to the abuser’s compassion are fruitless, because the abuser is not empathetic. As Alice Miller points out, a sympathetic and understanding witness to a child’s suffering is a crucial prerequisite to empathy in adulthood. Without empathy, the abuser cannot be sensitive partner’s anguish.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To me, the difference between abuse and mistreatment is partially up to how it’s received. Is the ‘victim’ aware of the mistreatment, able to label it as such, and properly blame the perpetrator, and able to express anger protectively if needed? Great. That’s mistreatment.&lt;/p&gt;

&lt;p&gt;Conversely, if the victim is told that they are at &lt;em&gt;fault&lt;/em&gt; for the mistreatment, in fact that they deserve it, or that it’s not bad, or that they don’t deserve to be upset about it, or that getting angry about it will make things worse, so they turn off the part of them that is experiencing the harm, that’s abuse. (please, see, again, the entire evangelical framework of ‘spanking’ as definitionally abusive, because of how perfectly it conforms to this physical abuse + emotional control dynamic)&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;witnessing-others-who-will-never-know-it&quot;&gt;Witnessing others, who will never know it&lt;/h2&gt;

&lt;p&gt;so, Witness to others, mistreatment.&lt;/p&gt;

&lt;p&gt;I’m pretty angry at a bunch of people in my life, who saw and became complicit in the mistreatment, by failing to Witness the mistreatment. Not just when I was a kid, or many years ago, but in more recent years. If I queue someone up well-enough for them to respond appropriately, and they &lt;em&gt;still&lt;/em&gt; shit the bed/fail to witness, I’m more likely to lump them in as willingly/unwillingly complicit in the bad things.&lt;/p&gt;

&lt;p&gt;But there are many other people, or systems, I have beef with. Some of them are dead, like &lt;a href=&quot;/robert-moses&quot;&gt;Robert Moses&lt;/a&gt;. Others are normal people helping really terrible systems hum along. I &lt;em&gt;think&lt;/em&gt; the solution is for those people to be able to Witness all this stuff to themselves and others, and then maybe they become practiced in malicious compliance with whatever system they’re stuck inside of?&lt;/p&gt;

&lt;p&gt;This relates to my beef with european-american supremacists. (I don’t use the phrase ‘white supremacy’ or ‘white supremacists’)&lt;/p&gt;

&lt;p&gt;A big part of european american supremacy lies in the power of &lt;a href=&quot;https://www.goodreads.com/en/book/show/29363252&quot;&gt;ignoring and withdrawing affective connection to others&lt;/a&gt;. That book &lt;em&gt;Conflict is not abuse&lt;/em&gt;, a few times touches on the power move that is &lt;em&gt;refusing to discuss something with someone&lt;/em&gt;. That’s the move of someone trying to get &lt;em&gt;more&lt;/em&gt; power, or it’s the move of someone with more power already, simply deciding on the outcome. I learned how effective this particular tactic is with Donald and Miriam - with both of them, as they tried to DARVO their way into a conversationally secure place, and I evaded it, they both eventually blocked me via the channel we’d been communicating, because now that I have a kid I have given myself permission to speak directly with my parents about decisions they made towards me.&lt;/p&gt;

&lt;p&gt;I view the &lt;a href=&quot;https://www.goodreads.com/book/show/41725763-how-to-hide-an-empire&quot;&gt;greater united states as a colonial army with a nation attached&lt;/a&gt;. ‘Whiteness’ feels like supremacy to me. &lt;a href=&quot;https://www.goodreads.com/book/show/14894629-the-half-has-never-been-told?ref=nav_sb_ss_1_18&quot;&gt;Capitalism is just slavery rebranded&lt;/a&gt;, cops are deputized slave patrollers, and they still have the same energy, and should be treated however you think deputized slave patrollers should be treated.&lt;/p&gt;

&lt;p&gt;Lots of modern white femininity is icky to me, because it &lt;a href=&quot;https://www.goodreads.com/notes/43803602-they-were-her-property/27372191-josh-thompson?ref=abp&quot;&gt;smells like chattel slavery&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;witnessing-for-others-when-you-are-the-source-of-their-harm&quot;&gt;Witnessing for others when &lt;em&gt;you&lt;/em&gt; are the source of their harm&lt;/h2&gt;

&lt;p&gt;A cool skill that gets unlocked with Witnessing is you can use this same idea for when &lt;em&gt;you&lt;/em&gt; act wrongly. Out of entitlement, or the expectation of someone else’s obligation or submission to you. It means when someone is reacting as if they were hurt by you, you can &lt;em&gt;gently, easily receive&lt;/em&gt; the reaction. A tiny, simple example:&lt;/p&gt;

&lt;p&gt;A time ago, I was walking with my kid in the sun, she was in her stroller, she put a hat on, and the brim was folded in a way that looked like it might be uncomfortable. I started reaching to unflip the brim, and she put her hand up, and said clearly, “don’t touch me”. A few moments later, I reached down and tried again to fix the brim. She immediately swung her hand behind her, and said with force and passion and anger, “I told you not to touch me!”&lt;/p&gt;

&lt;p&gt;I was shook! My gosh, she was right. So I said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Gosh, Eden, you’re totally correct. I heard you, I could have respected your boundary, but instead I felt entitled to disregarding it! I felt entitled, I acted entitled, and I violated a boundary. I &lt;em&gt;shouldn’t&lt;/em&gt; have done that, I wish I had not done that, and if I find myself in a similar situation again in the future, I will not do that. You’re right to be angry with me, I appreciate your anger and the way you responded. Thank you for all of it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or something like that. Do you see how I Witnessed &lt;em&gt;for her&lt;/em&gt; the mistreatment that I’d just done &lt;em&gt;to her&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;To contrast, I could have denied that anything wrong had happened. “What’s wrong? I didn’t do anything wrong.”&lt;/p&gt;

&lt;p&gt;Or dismissed it: “Oh, stop crying, it was no big deal, I was just adjusting your hat.”&lt;/p&gt;

&lt;p&gt;Or reacted with fear of her anger, and offered a fake/misgrounded apology: “Oh, no! Don’t be upset, I am so sorry! Sorry sorry sorry!”&lt;/p&gt;

&lt;p&gt;Or reacted with avoidance, and not responded to her, acting like I didn’t see that she was angry. Delivering silence, icyness, emotional withdrawal, dis-attunement.&lt;/p&gt;

&lt;p&gt;Or punished her for displaying anger at me: “Hey, don’t be mad at me! I am your parent, it is not wrong for me to do things like that. You should say ‘thank you’!”&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;It’s easiest in relationships to get established a baseline of ‘we expect fair treatment by default in all directions, not out of obligation, but something like peace within ourselves + love for others (in general) and the others, in particular. The above story with my kid around her display of anger would have been different if until now, I’d made a habit of dismissing or denying or avoiding or punishing or withdrawing, without ever Witnessing the mistreatment. And if someone says sorry, but keeps doing the same thing, the words eventually lose their weight.&lt;/p&gt;

&lt;p&gt;I tell Eden that she deserves fair treatment from everyone, and if it’s not what she gets, it’s reasonable to name it and resist the unfair treatment. So, of course, sometimes I expect to receive those energies, because when it happens, when I treat her with an entitlement I didn’t even notice that I had, I would HOPE she names it and resists it, with me. I resent that my own parents attacked me for displaying dissatisfaction with how they treated me, when they were functionally committed to a regime of emotional subjugation. They thought I was fundamentally bad, thus they needed to squelch my displays of anger and grief. It took a lot of energy, on their behalf, to suppress me, and wasted a lot of our lives together that could have otherwise been spent in a real, peaceful harmony.&lt;/p&gt;

&lt;p&gt;In reality, people are fundamentally good, and can be, deserve to be, treated fairly. Just because a person out there happens to be someone’s child does not entitle that person to treat them in a dehumanizing, paternalistic way. To treat kids in a dehumanizing way is to set them up to expect more dehumanizing treatment from others, AND to deny them opportunities to experience healthy, reasonable boundaries. (Like, not being hit, not being verbally assaulted, not being shamed, yes, but what about being also given hugs, being given affirming words based on real decisions and dispositions, being delighted in? laughing with someone, rather than laughing at them.)&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
</content>
 </entry>
 
 <entry>
   <title>Cones, Coning, and Fixing Junctions, And How And Why</title>
   <link href="https://josh.works/on-coning"/>
   <updated>2025-05-16T13:00:00+00:00</updated>
   <id>https://josh.works/coning-intersections</id>
   <content type="html">&lt;p&gt;“Traffic Cones and Junction Fixes: A DIY Guide” ? &lt;em&gt;this is very drafty&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This post is probably best viewed on desktop, with some links opening new tabs, viewed, closed, and then this post returned to. There’s a lot of videos farther down, some of them are tiktoks (sorry) and some of them are youtube videos (that’s not my stuff) and then some of my stuff is also embedded via a service called “Wistia”. I hope you watch at least some of the videos below. maybe the piece still stands up well enough without the videos. &lt;em&gt;maybe&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Here’s a new word, I am introducing to the lexicon:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coning&lt;/strong&gt;, verb&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;to place traffic cones at specific points in a road or junction to shape how people travel through the intersection. Simplifies and smooths complexity, increases safety for everyone. Dramatically reduces the four types of vehicle emissions: engine exhaust, brake dust, tire rubber microplastics, and noise.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wrote recently about this &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;separate-but-related-ish ‘traffic bean’ concept&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Consider the following information about coning to be coherent with, perhaps would be used in conjunction with, the traffic bean idea.&lt;/p&gt;

&lt;p&gt;A few times I’ve had the privilege of stumbling into an idea, act, or articulation that, while firmly rooted in banal phenomena in one domain, feels quite novel when applied to a new domain. This thing I’m discussing in this post is one of those novel things.&lt;/p&gt;

&lt;p&gt;I wonder if you might try something similar some day for yourself, the next time you see a junction that isn’t as safe as you’d like, and there’s a pile of otherwise unused traffic cones nearby.&lt;/p&gt;

&lt;h2 id=&quot;examples-of-my-own-coning-adventures&quot;&gt;Examples of my own coning adventures&lt;/h2&gt;

&lt;h3 id=&quot;may-2025-denver-humboldt--16th&quot;&gt;May 2025, Denver, Humboldt &amp;amp; 16th&lt;/h3&gt;

&lt;p&gt;I’ll place my most recent coning experience here, then below we’ll go through a list of intersections from first to newest. (It’s evolved a lot, obviously, across 10-20 iterations)&lt;/p&gt;

&lt;strike&gt;TODO: Add youtube embed of drone footage w/no overlay&lt;/strike&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/_ckZGOd4MpA?si=ELprBQ5cLigYPhHg&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;TODO: Add youtube embed of drone footage w/overlay&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://photos.app.goo.gl/MEPE8BgajdjzieN9A&quot;&gt;Here’s a photo album of some photos/time-lapse, same intersection, same time&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s some other bits of footage from the same time. Here’s what the project looked like from my window:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@boardsfast/video/7504842629390142751&quot;&gt;part 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@boardsfast/video/7505085435610156319&quot;&gt;part 2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@boardsfast/video/7505090122593897758&quot;&gt;part 3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@boardsfast/video/7505154148875111711&quot;&gt;p 4: thoughts about traffic engineering/the book ‘killed by a traffic engineer’&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@boardsfast/video/7505160999280971039&quot;&gt;p5: other views/perspectives&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@boardsfast/video/7505164656697167134&quot;&gt;p6: more (stressful) views from directly adjacent of this junction&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s one of the very first traffic cones I set out, in my whole life, with the goal of creating/providing safety in mind.&lt;/p&gt;

&lt;h3 id=&quot;1-south-denver-a-pedestrian-crossing-of-a-residential-road&quot;&gt;1. South Denver, a pedestrian crossing of a residential road&lt;/h3&gt;

&lt;p&gt;One rainy day, I observed from my bedroom these traffic cones floating down the street. The rain &lt;em&gt;literally&lt;/em&gt; delivered them to almost exactly where I ended up placing them. I’d not had this idea, but I’d been chafing at the problem for a time.&lt;/p&gt;

&lt;p&gt;this video tells the rest of the story:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7240202349451595054&quot;&gt;https://www.tiktok.com/@josh_exists/video/7240202349451595054&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started with what most traffic planners in America would start with: Bulb-outs&lt;/p&gt;

&lt;p&gt;As you can see in the end of the video, nothing really seemed to change. I ended up with a small change in placement (instead of bulb-outs, I placed the cones where the lane divider would be), and a HUGE change in behavior:&lt;/p&gt;

&lt;p&gt;here’s the first of many videos showing the the CONES IN THE MIDDLE OF THE ROAD!&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7240611295966268718&quot;&gt;https://www.tiktok.com/@josh_exists/video/7240611295966268718&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;please notice in all these timelapses that people are walking down the street, the length of it. See how they scurry out of the road when a car is present, and how confidently they walk when there is no car.&lt;/p&gt;

&lt;p&gt;Here’s a reminder of what the street looks like without any cones: &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7250134620694482218&quot;&gt;https://www.tiktok.com/@josh_exists/video/7250134620694482218&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I say in that video, the mom who walked by was wise to warn her kid about the dangers of the road. Isn’t it a bummer? She’s using the road exactly like a car would, why does she have to be threatened with horrible violence continuously by passing cars? &lt;sup id=&quot;fnref:streets-free-of-cars&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:streets-free-of-cars&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;There was a time that roads were primarily used by people with legs, and often enough the point of the road was to be walked across.&lt;/p&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/crossing_street.jpeg&quot; alt=&quot;crossing the street&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The number of cars inversely correlates with how easy it is for people to cross the street. A ‘fair’ street maybe would be crossable perpendicularly by pedestrians at all points.&lt;/p&gt;

&lt;p&gt;That’s a high bar, but I see it as available.&lt;/p&gt;

&lt;p&gt;here’s another view of the cones, from the POV of cars, looking down the street:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7250134620694482218&quot;&gt;https://www.tiktok.com/@josh_exists/video/7250134620694482218&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;another view of the same treatment:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7240680684472274218&quot;&gt;https://www.tiktok.com/@josh_exists/video/7240680684472274218&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These cones remained in place &lt;em&gt;for weeks&lt;/em&gt;. No one moved them for such a long time.&lt;/p&gt;

&lt;p&gt;Now, the above videos all highlighted the placement of the cones. Here’s views from a drone, in which the cones are &lt;em&gt;nearly invisible&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I think the drone perspective is very interesting. From most points of view, the cones are almost invisible. I wish cars could be rendered so invisible. I resent how much of the visual landscape is filled with cars and asphalt for cars, in the world today.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7240668293420322091&quot;&gt;https://www.tiktok.com/@josh_exists/video/7240668293420322091&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;another view:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7240665861508402478&quot;&gt;https://www.tiktok.com/@josh_exists/video/7240665861508402478&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;another view:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7240639996917632302&quot;&gt;https://www.tiktok.com/@josh_exists/video/7240639996917632302&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, the satisfaction I derive from this kind of stuff is undoubtedly similar to what some people experience with public art, graffiti, etc.&lt;/p&gt;

&lt;p&gt;Here’s the lightest-weight intervention I’ve ever did, that worked shockingly well:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7249134328502947118&quot;&gt;https://www.tiktok.com/@josh_exists/video/7249134328502947118&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;2-south-denver-noise-reduction-on-an-arterial-going-past-cafes-breweries-lots-of-outdoor-seating&quot;&gt;2. South Denver, noise reduction on an arterial going past cafes, breweries, lots of outdoor seating&lt;/h3&gt;

&lt;p&gt;This treatment was excellent, I’m pleased with the results, the noise level came down by so much, AND things were made way safer.&lt;/p&gt;

&lt;p&gt;The cones were taken away after a few hours&lt;/p&gt;

&lt;p&gt;That idea gave birth to the second iteration, sorta on the same walking path two blocks down:&lt;/p&gt;

&lt;script src=&quot;https://fast.wistia.com/player.js&quot; async=&quot;&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://fast.wistia.com/embed/lqt60rz6m1.js&quot; async=&quot;&quot; type=&quot;module&quot;&gt;&lt;/script&gt;
&lt;style&gt;wistia-player[media-id=&apos;lqt60rz6m1&apos;]:not(:defined) { background: center / contain no-repeat url(&apos;https://fast.wistia.com/embed/medias/lqt60rz6m1/swatch&apos;); display: block; filter: blur(5px); padding-top:177.78%; }&lt;/style&gt;
&lt;wistia-player media-id=&quot;lqt60rz6m1&quot; aspect=&quot;0.5625&quot;&gt;&lt;/wistia-player&gt;

&lt;p&gt;Another intersection, later in time:&lt;/p&gt;

&lt;script src=&quot;https://fast.wistia.com/player.js&quot; async=&quot;&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://fast.wistia.com/embed/kuqbgipm8a.js&quot; async=&quot;&quot; type=&quot;module&quot;&gt;&lt;/script&gt;
&lt;style&gt;wistia-player[media-id=&apos;kuqbgipm8a&apos;]:not(:defined) { background: center / contain no-repeat url(&apos;https://fast.wistia.com/embed/medias/kuqbgipm8a/swatch&apos;); display: block; filter: blur(5px); padding-top:177.78%; }&lt;/style&gt;
&lt;wistia-player media-id=&quot;kuqbgipm8a&quot; aspect=&quot;0.5625&quot;&gt;&lt;/wistia-player&gt;

&lt;p&gt;The way one might use this phrase/concept is like so:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Ick, this street is loud and dangerous, I wish someone would put some cones down.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;that person almost hit that other person with their car - if that intersection was properly coned it wouldn’t have happened.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The noise along this road is wild. if the area got well-coned, it would be way quieter.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here’s another denver-area coning, very close to a few different climbing gyms, schools, parks, apartment buildings. I was very pleased with this one. All of these intersections by the way are STILL INADEQUATE even with these cones:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7249752983481732394&quot; data-video-id=&quot;7249752983481732394&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; &lt;p&gt;more cones. huge improvement for all of the people and directions this intersection gets used.&lt;/p&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ Break My Heart - Dua Lipa&quot; href=&quot;https://www.tiktok.com/music/Break-My-Heart-6807639165665019906?refer=embed&quot;&gt;♬ Break My Heart - Dua Lipa&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;A fully complete intersection would have something like a built-in ‘traffic curve’, either a &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;traffic bean&lt;/a&gt;, or if that is a bit too big, the ‘coning’ of the intersection could cause a small deviation in vehicle path.&lt;/p&gt;

&lt;p&gt;The big issue is: if the intersection accommodates vehicles passing through it fast, say, 35 mph, without any change in direction, even a slight wiggle/deviation, it’s not fully fixed.&lt;/p&gt;

&lt;p&gt;In all these intersections, I didn’t place any cones that wasn’t delimiting what is already theoretically delimited, It’s a good enough proof of concept, though, and shows that with a tiny bit of work, any unwanted speed can be filtered out, by these cones, and building little gates, defined curves, turn radii, etc.&lt;/p&gt;

&lt;p&gt;The experience of everyone NOT in a vehicle goes up enormously in these situations. It’s almost dedignifying to enumerate the ways.&lt;/p&gt;

&lt;p&gt;I am extremely aware of how dangerous roads and junctions are. &lt;sup id=&quot;fnref:obvious-danger&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:obvious-danger&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; Cars feel to me as dangerous as guns, and I’m accutely aware of when a car is pointed at me, if it is in motion &lt;em&gt;and&lt;/em&gt; when it’s stationary, if there is someone in the driver’s seat, same as I’d be aware of a gun being pointed at me.&lt;/p&gt;

&lt;p&gt;The driver of that car could kill me with the press of a foot with a car, just as the user of a gun could kill someone with the press of a finger. Check out my piece on bollards for more: &lt;a href=&quot;/bollards&quot;&gt;Bollards: What and Why&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I am unable to dissociate from shit roads and dangerous dynamics created by those road designers, and the people who use them. I’ve slightly unusual points of view, but I am aware of feeling something similar about roads my whole life. I am sensitive, sometimes extremely sensitive, and in ways that unavoidably inconvenience others. If you talk to some former partners, you could get long lists of ways my sensitivity and emotional delicacy has been experienced as extremely inconveniencing.&lt;/p&gt;

&lt;p&gt;Cars, even when the engines are idling or the vehicle is electric are so loud, and one can infer so much about a vehicle and its driver from things like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;relative ratios of accelerating, coasting, braking. (In a 100 second segment of driving, what is the ratio between accelerating, coasting, braking? How quickly does the driver cycle between the three, and how smoothly or sharply?)&lt;/li&gt;
  &lt;li&gt;speed in many different ways - speed through curves, speed through turns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;this list is simply some of the things one can infer about cars from the &lt;em&gt;noise&lt;/em&gt;. Just the noise.&lt;/p&gt;

&lt;h3 id=&quot;3-centeral-denver-reducing-noise-improving-awareness&quot;&gt;3. Centeral Denver, reducing noise, improving awareness&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7249752983481732394&quot;&gt;https://www.tiktok.com/@josh_exists/video/7249752983481732394&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My friend and I did this, as we rode our scooters past, a few blocks from his house, a few blocks from two climbing gyms, grocery stores. There’s a school directly adjacent to the intersection. It is not tolerable, the speeds that can be accessed by people going straight through the intersection, and how crossing it requires one to deconflict with so much space, in both directions.&lt;/p&gt;

&lt;p&gt;The cones we put down obviously changes the turn radii for cars, and created little ‘protected pockets’ for passers-by, without causing a foot or bike barrier for anyone not in a car.&lt;/p&gt;

&lt;h3 id=&quot;4-loveland-pedestrian-crossing-of-a-four-lane-road-with-sometimes-50mph-traffic-i-got-to-plan-a-project-with-the-local-city-engineer&quot;&gt;4. Loveland, pedestrian crossing of a four lane road with sometimes 50+mph traffic, I got to plan a project with the local city engineer&lt;/h3&gt;

&lt;p&gt;This next junction was one I spent a few months living next to, and walking or riding my scooter through several times every day. Some days I went through this junction at least 8 times. I know it well!&lt;/p&gt;

&lt;p&gt;It was a whole fascinating saga. Here’s what happened:&lt;/p&gt;

&lt;p&gt;First, I lived next to this wildly unsafe junction that feels both rural and urban. Rural, in terms of how fast/straight the roads are, and the spacing of lights, lane widths, etc. Most people driving through this intersection are coming from ‘rural’ points of origin. But urban in that it was just a few blocks from downtown Loveland. It’s the kind of junction/road design we’re familiar with when driving around the USA far from a city, but it’s very close to a city.&lt;/p&gt;

&lt;p&gt;Eventually, in talking to neighbors, I heard stories of many car accidents, deaths, vehicles bouncing into yards, fences, trees, etc.&lt;/p&gt;

&lt;p&gt;I found a bunch of traffic cones a short walk away, and the ideas started to emerge.&lt;/p&gt;

&lt;script src=&quot;https://fast.wistia.com/player.js&quot; async=&quot;&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://fast.wistia.com/embed/iobo0kmb31.js&quot; async=&quot;&quot; type=&quot;module&quot;&gt;&lt;/script&gt;
&lt;style&gt;wistia-player[media-id=&apos;iobo0kmb31&apos;]:not(:defined) { background: center / contain no-repeat url(&apos;https://fast.wistia.com/embed/medias/iobo0kmb31/swatch&apos;); display: block; filter: blur(5px); padding-top:177.78%; }&lt;/style&gt;
&lt;wistia-player media-id=&quot;iobo0kmb31&quot; aspect=&quot;0.5625&quot;&gt;&lt;/wistia-player&gt;

&lt;p&gt;Here was a bit of an outline of what I was planning:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7262222886407179566&quot; data-video-id=&quot;7262222886407179566&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; how i could use 20 cones, approximately, to dramatically improve the performance of this intersection. what do you think, tik tok? should I make this change to the intersection and see how it functions? see linked video for some footage of the last time I did this treatment @josh  &lt;a title=&quot;dji&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/dji?refer=embed&quot;&gt;#dji&lt;/a&gt; &lt;a title=&quot;drone&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/drone?refer=embed&quot;&gt;#drone&lt;/a&gt; &lt;a title=&quot;traffic&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/traffic?refer=embed&quot;&gt;#traffic&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - josh&quot; href=&quot;https://www.tiktok.com/music/original-sound-7262222925082692395?refer=embed&quot;&gt;♬ original sound - josh&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;I planned where I’d put cones, and then did so, and got the whole before/during/after on video via drone. The improvements were magnificent.&lt;/p&gt;

&lt;p&gt;Here’s the actual cone placing. It’s on Tiktok, I apologize for the jump. I will sometime combine these into a single video and place it on youtube or something:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7262554154684435755&quot; data-video-id=&quot;7262554154684435755&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; interesting times are afoot!@josh &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - josh&quot; href=&quot;https://www.tiktok.com/music/original-sound-7262554189224512299?refer=embed&quot;&gt;♬ original sound - josh&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Here’s another view of the junction:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7262487014514101546&quot; data-video-id=&quot;7262487014514101546&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; &lt;p&gt;p8, other people use it!&lt;/p&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - josh&quot; href=&quot;https://www.tiktok.com/music/original-sound-7262487024057043758?refer=embed&quot;&gt;♬ original sound - josh&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Unfortunately for all of us, this was an event witnessed almost exclusively by me. No one else was there to agree with me on how much better it was, besides the people using the junction. Most drivers simply let off the gas and &lt;em&gt;coasted&lt;/em&gt; straight through the intersection.&lt;/p&gt;

&lt;p&gt;Those that turned reduced their speeds appropriately to turn.&lt;/p&gt;

&lt;p&gt;It was glorious. Eventually, I went back out with &lt;em&gt;more&lt;/em&gt; cones, and city employees followed me, and tried to get me to take the cones down. (using implication, never threats or demands).&lt;/p&gt;

&lt;p&gt;I simply did my normal word-vomit when talking to authority figures: I flood them with polite, relentless, technically-laced monologue. References to the Manual of Uniform Traffic Control Devices, street typologies and the implication on sightlines, speed calculations, grief (over all of our loved ones killed on/by american roads), ‘we are all out here, together, united by our desire for us and our loved ones to continue to survive’.&lt;/p&gt;

&lt;p&gt;Usually they glaze over, like a dog that licked a toad and now wants the taste out of its mouth.&lt;/p&gt;

&lt;p&gt;They left, and returned with a member of the local deputized slave patrol.&lt;/p&gt;

&lt;p&gt;She did the threatening and provocative “I need your name and ID, any prior arrests or anything I should be worried about?” routine. (Isn’t it funny how slave patrollers will weaponize their own discomfort, in a way that makes it obviously a threat?)&lt;/p&gt;

&lt;p&gt;Again, I did the verbal vomit thing, as only a wealthy-enough-to-have-access-to-lawyers-passing, white-passing american man can do. I have the privilege of treating the deputized slave patrol as a tool for people just like me. I can embody this energy, as I was raised by a person who was also a preacher and a doctor and a military pilot and a supremacist and a military officer and had a penis and was white-passing. He huffed hard on the ‘authority and patriarchy/supremacy’ pipe.&lt;/p&gt;

&lt;p&gt;Me:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;How often do you deal with car accidents? Lots, really? Isn’t that annoying? Here’s a way to make for less car accidents, obviously this shouldn’t be &lt;em&gt;your&lt;/em&gt; problem, it’s an engineering thing, maybe you can help me find the person in the city responsible for the road right here?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;she gave me a hint (“talk to {so-and-so} in the city admin office”) which I kept ‘privilege escalating’ until I was wandering around the city of loveland department of works office building, and found my way to the city engineer’s office, Matt. The admin person gave me his email address, phone number, his physical address. It was a few blocks away in a different building so I popped over and the door I parked my scooter next to was unlocked, so I wandered inside. I’ve never been inside a municipal streets authority building before, and having read &lt;a href=&quot;/robert-moses&quot;&gt;the power broker&lt;/a&gt; I was attending to every detail.&lt;/p&gt;

&lt;p&gt;Lots of interesting stuff inside (a sign making shop, feeds from traffic cameras) and implications for anyone who’s read &lt;a href=&quot;https://slatestarcodex.com/2017/03/16/book-review-seeing-like-a-state/&quot;&gt;seeing like a state&lt;/a&gt;, like… I see why big ugly rural intersections seem so important to municipal people. They have billboard-sized TV’s displaying dozens of feeds of intersections. It was one of the ugliest and most depressing things I could imagine looking at all day.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;traffic beans&lt;/a&gt;, remember? Breaks my heart to see an intersection empty, with cars sitting around waiting to go through. The rate at which people’s time is being wasted is &lt;em&gt;stunning&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Anyway, Matt had time, and was thrilled to nerd out about road junctions. hardly sixty seconds of conversation elapsed, as I gave him a short version of how I ended up in his office, before he had google earth open and we were zipping around Loveland ‘looking’ at intersections. We spoke for a while, it was all interesting. He seemed to obviously want at least some of the same safety outcomes I wanted. What I soon ran into is the very american assumption that ‘fast vehicle movement’ correlates at all with ‘good enough trip time’, among other assumptions.&lt;/p&gt;

&lt;p&gt;He and I swapped emails, and eventually met up again at a few different intersections within loveland, him in his city pickup truck, me on my scooter, to walk around and look at different bits of ‘pedestrian infrastructure’. I kept gently pushing my goal along (a coned-and-traffic-bean’ed intersection) and eventually &lt;em&gt;got permission from him to treat with hay bales a connected series of road segments/junctions, including the one directly next to the house I was living in, that I could see from my front window&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The plan was:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;using hay bales, the smallish rectangular ones, I could build roundabout/traffic-bean-type junctions, defining the inner and outer edges of the junctions with hay bales, leaving the open space free to people walking/biking, and shaping the flow of traffic to that traffic-bean-vibe&lt;/li&gt;
  &lt;li&gt;We were going to treat a series of connected intersections, including the ones closest to where I was living at the time, NOT including, in the first pass, the intersection I had first treated&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I was thrilled, even as it was the smallest definition of the experiment. My plan was, upon my return to that house, try to obtain a pile of hay bales and then, while he stood next to me, start arranging them on the various junctions. I obviously had a plan in mind for where bales might go on each junction.&lt;/p&gt;

&lt;p&gt;I’d ended up travelling out of contry while he and I was discussing it, was gone for a while, ended up moving, and i returned to loveland only for a few hours to collect my stuff. That hard-won project never moved forward. I am still proud of how far I got with my hay-bale traffic bean plan, though.&lt;/p&gt;

&lt;h3 id=&quot;5-humboldt--16th&quot;&gt;5. Humboldt &amp;amp; 16th&lt;/h3&gt;

&lt;p&gt;I moved back to Denver. Soon ended up living where I currently live, as I write these words. Near this intersection at Humboldt and 16th ave. Colefax is the name for 15th ave, so this street is but a single block from Colefax. If you live in the Denver area, you know Colefax.&lt;/p&gt;

&lt;p&gt;This street-level video shows a family driving on bicycles, then a bunch of passing cars. Can you see the obvious danger? I sometimes fear I’m belaboring the point, yet I still encounter people that can look at &lt;em&gt;obviously dangerous interactions&lt;/em&gt; and not see them.&lt;/p&gt;

&lt;script src=&quot;https://fast.wistia.com/player.js&quot; async=&quot;&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://fast.wistia.com/embed/m8dkzdxell.js&quot; async=&quot;&quot; type=&quot;module&quot;&gt;&lt;/script&gt;
&lt;style&gt;wistia-player[media-id=&apos;m8dkzdxell&apos;]:not(:defined) { background: center / contain no-repeat url(&apos;https://fast.wistia.com/embed/medias/m8dkzdxell/swatch&apos;); display: block; filter: blur(5px); padding-top:177.78%; }&lt;/style&gt;
&lt;wistia-player media-id=&quot;m8dkzdxell&quot; aspect=&quot;0.5625&quot;&gt;&lt;/wistia-player&gt;

&lt;script src=&quot;https://fast.wistia.com/player.js&quot; async=&quot;&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://fast.wistia.com/embed/kuqbgipm8a.js&quot; async=&quot;&quot; type=&quot;module&quot;&gt;&lt;/script&gt;
&lt;style&gt;wistia-player[media-id=&apos;kuqbgipm8a&apos;]:not(:defined) { background: center / contain no-repeat url(&apos;https://fast.wistia.com/embed/medias/kuqbgipm8a/swatch&apos;); display: block; filter: blur(5px); padding-top:177.78%; }&lt;/style&gt;
&lt;wistia-player media-id=&quot;kuqbgipm8a&quot; aspect=&quot;0.5625&quot;&gt;&lt;/wistia-player&gt;

&lt;p&gt;another view of the same intersection:&lt;/p&gt;

&lt;script src=&quot;https://fast.wistia.com/player.js&quot; async=&quot;&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://fast.wistia.com/embed/dpgunuzdcy.js&quot; async=&quot;&quot; type=&quot;module&quot;&gt;&lt;/script&gt;
&lt;style&gt;wistia-player[media-id=&apos;dpgunuzdcy&apos;]:not(:defined) { background: center / contain no-repeat url(&apos;https://fast.wistia.com/embed/medias/dpgunuzdcy/swatch&apos;); display: block; filter: blur(5px); padding-top:177.78%; }&lt;/style&gt;
&lt;wistia-player media-id=&quot;dpgunuzdcy&quot; aspect=&quot;0.5625&quot;&gt;&lt;/wistia-player&gt;

&lt;h3 id=&quot;misc-other-intersections&quot;&gt;Misc other intersections&lt;/h3&gt;

&lt;p&gt;Long ago, around the time of my first ‘coning’: &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7249498446703791406&quot;&gt;this drone video of this walk with someone using a wheelchair&lt;/a&gt; is interesting to me. Explains why I don’t always hew to sidewalks like some people would want me to, as if they expected me to act obedient to their entitlement.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7249448308211764526&quot;&gt;another video from the above walk&lt;/a&gt;. Again, I think the minimum reasonable starting point is &lt;em&gt;close most roads to vehicle throughput&lt;/em&gt;, and can you see how an arterial functions as a wall?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;general-complaints-about-inadequate-and-dangerous-and-inefficient-american-intersections&quot;&gt;General complaints about inadequate and dangerous and inefficient American intersections&lt;/h2&gt;

&lt;p&gt;Oh, I have beef with American intersections. I hate to use them, to even witness them, so I don’t travel much by car, and when I do, it feels emotionally expensive. Feels like I’m walking on the graveyard of evidence of ethnic cleansing, and I cannot help but feel affected by the weight over the years of the death, bloodshed, misery, destroyed places and humans, that this whole regime represents.&lt;/p&gt;

&lt;p&gt;Intersections in america are as consumptive as any other part of a colonial culture. They perform unimaginably inefficiently.&lt;/p&gt;

&lt;p&gt;I wish all junctions could be evaluated by the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vehicles per square meter per second&lt;/code&gt; standard. &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/i/158451046/some-things-about-the-current-junction&quot;&gt;Here’s a bit more about that, on my/this substack&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;common-complaintsfaqs&quot;&gt;Common complaints/FAQs:&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;But Josh this is non traditional and I don’t think it will work or should work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How interesting. &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7248901359234485550&quot;&gt;Here’s another video for how land is modified in expensive places to accommodate cars&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I contend that any modification or change to the norm is, in principal, possibly worth entertaining.&lt;/p&gt;

&lt;h2 id=&quot;related-reading&quot;&gt;Related Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=-vzDDMzq7d0&quot;&gt;the ‘shared space’ concept in Poynton, UK (youtube.com)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/interlude-a-pattern-of-repair-episode&quot;&gt;my words on the above shared space concept (substack.com) &lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/jaywalking&quot;&gt;“Jaywalking” is a propagandist term I’ve excised from my vocabulary&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/i/158451046/some-things-about-the-current-junction&quot;&gt;Evaluating Junction Function&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;sorta off-topic, I really like &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7249778097548004651&quot;&gt;this drone video&lt;/a&gt; I obtained, sorta a ‘in praise and hate of intersections’&lt;/li&gt;
  &lt;li&gt;I went on a walk with someone else who was using a wheelchair. &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7249498446703791406&quot;&gt;this video of the walk&lt;/a&gt; is interesting to me. Explains why I don’t always hew to sidewalks like some people would want me to, if they expected me to act obedient.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7249448308211764526&quot;&gt;another video from the above walk&lt;/a&gt;. Again, I think the minimum reasonable starting point is &lt;em&gt;close most roads to vehicle throughput&lt;/em&gt;, and can you see how an arterial functions as a wall?&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7247299472072461611&quot;&gt;one of my all-time fav drone videos I made, isn’t it breathtaking, the amount of space given to these little metal boxes?&lt;/a&gt; and the gravitational effect they have on the buildings/environment around them. The ‘building line’ and setbacks are based on the roads, so every house is built up to a spot determined by the road. Even non-road space is dictated by roads!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:streets-free-of-cars&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;some people might say ‘well the danger from cars is a fact of life’ and I’d retort that just as cars have streets that connect them to places, a sane mobility network would have a similar level of ‘street ennervation’ via &lt;em&gt;car free&lt;/em&gt; streets, as well. If even one out of five of every north/south and east/west streets was shut down to cars passing through via modal filters, and slight &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;traffic bean&lt;/a&gt; type treatment at the junctions where cars pass, the network would be transformed. It’s not ‘complete streets’ it’s ‘connected car-free streets’. Linear park type vibes would be the obvious upgrade to car-free streets. &lt;a href=&quot;#fnref:streets-free-of-cars&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:obvious-danger&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Many, many people seem disconnected, emotionally, physically, with something about the experience of being in/around personal vehicles. I could rant/rave about americans, but it’s really american-ness, which is a certain form of supremacy thinking. How many of your friends need to have been killed by a person driving a car, for you to have some unenjoyable emotional experiences with aspects of being around anyone who is driving? How many people that you know need to have been hit by someone in a car (but not killed!) for you to sorta not be down with the whole thing? How about animals killed? &lt;a href=&quot;#fnref:obvious-danger&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Mobility Networks via Drone</title>
   <link href="https://josh.works/drone-footage-and-other-things"/>
   <updated>2025-05-13T13:00:00+00:00</updated>
   <id>https://josh.works/mobility-networks-via-drone</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;h3 id=&quot;most-recent-most-interestingly&quot;&gt;Most recent, most interestingly&lt;/h3&gt;

&lt;p&gt;Here’s me placing some cones - this is a thing I do, I wish more people would do, read more/see more on &lt;a href=&quot;/on-coning&quot;&gt;/on-coning&lt;/a&gt;&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/_ckZGOd4MpA?si=ELprBQ5cLigYPhHg&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;I’ll post some videos, and a little description for each.&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/EszL_hxQR9M?si=TKj0mlnkXt7_WM8A&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;This is my first time using chatGPT to help me edit some images - I gave it stills from the video I took, and asked it to modify the intersection with some given parameters. I think it did great!&lt;/p&gt;

&lt;p&gt;The above video pairs well with this piece I wrote on &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;traffic beans&lt;/a&gt;, and &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/traffic-congestion-as-solvable-part-072&quot;&gt;patterns of repair for roads and junctions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Basically, using nearly-free materials, one could convert any junction into a &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/interlude-a-pattern-of-repair-episode&quot;&gt;poynton-style traffic bean&lt;/a&gt;, doing a first pass in just a few hours out of temporary materials, without needing to close the intersection. One the bean-shaped traffic circle was placed, and the necessary ‘necking down’ of all the inbound lanes accomplished, the traffic light could be covered, and no longer would the junction be dependent upon a light cycle!&lt;/p&gt;

&lt;p&gt;One would start the interventon with traffic cones, and then as quickly as possible, upgrade the cones to more permanent placements as one feels comfortable with the placement. Temporary and less-temporary interventions would be at least partially inspired by the standard &lt;a href=&quot;https://archive.org/details/tactical-urbanism-guidebook&quot;&gt;local urbanism suite of conceptual tools&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I would want to see upgrades include boulders, bell bollards, and &lt;a href=&quot;/bollards&quot;&gt;regular bollards&lt;/a&gt;. Not a single plastic flex post will be involved.&lt;/p&gt;

&lt;p&gt;Here’s bell bollards:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/bell_bollards.jpg&quot; alt=&quot;a bell bollard&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A bell bollard is uniquely effective at protecting spaces by preventing vehicle intrusion - a tire gets pushed off the tire, placing the vehicle “back” to where it ought to be, or the vehicle is lifted up off a tire and thus immobilized. If one is going to make a space ‘pedestrian friendly’ in America, it seems disrespectful and rude to also make the space “structurally unavailable” to vehicles. Please see my piece on &lt;a href=&quot;/bollards&quot;&gt;bollards&lt;/a&gt; for more&lt;/p&gt;

&lt;p&gt;intersection utilization rate goes up, the amount of time the intersection is empty while there are waiting vehicles &lt;em&gt;would be completely eliminated&lt;/em&gt;, and it would become instantly more habitable to everyone else living nearby or passing through the intersection, be it in a car or not.&lt;/p&gt;

&lt;p&gt;I just found &lt;a href=&quot;https://www.youtube.com/watch?v=6FiV023ktLM&quot;&gt;this cool video showing how/why bell bollards work so well&lt;/a&gt;. They’re particularly important for the inside loop of a traffic bean/traffic curve.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;but josh, the manual of uniform traffic control devices says…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I know, I know. This is all quite coherent with MUTCD, no big deal.&lt;/p&gt;

&lt;h3 id=&quot;timelapse-of-cars-on-colefax-and-park&quot;&gt;Timelapse of cars on colefax and park&lt;/h3&gt;

&lt;p&gt;timelapses are the only way to view footage and not find it boring, sometimes. But can you see how cars sometimes are forced to wait, for a loooooong time, before proceeding through signalized intersections?&lt;/p&gt;

&lt;p&gt;Intersections as creators of:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;waiting time, in vehicles. (5 vehicles, waiting for one minute each, is a total of five waiting-minutes. An intersection like park/colefax/franklin could be generating dozens of waiting-minutes per light cycle.)&lt;/li&gt;
  &lt;li&gt;because the first one who doesn’t make it through an intersection, that person has to wait a full (long) light cycle, this intersection &lt;em&gt;induces&lt;/em&gt; lots of racing behavior. (a &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;traffic bean&lt;/a&gt; would support first-in-first-out junction operation, eliminating racing behaviors)&lt;/li&gt;
  &lt;li&gt;brake dust (lots of brake use at a light like this)&lt;/li&gt;
  &lt;li&gt;tailpipe emmissions (lots of accellerating, obv)&lt;/li&gt;
  &lt;li&gt;tire rubber microplastics (increased tire wear under all braking and accellerating)&lt;/li&gt;
  &lt;li&gt;noise (the noise from this intersection is incredible)&lt;/li&gt;
  &lt;li&gt;danger for cars&lt;/li&gt;
  &lt;li&gt;danger for people not in cars&lt;/li&gt;
&lt;/ul&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/tXAgYrMDL4Q?si=lUn0qAHVZf94ggV0&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h3 id=&quot;parking-lots-not-just-street-segments-and-junctons&quot;&gt;parking lots, not just street segments and junctons&lt;/h3&gt;

&lt;p&gt;Here’s the parking lot of the Trader Joe’s on Colorado Avenue:&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/jfKG3AYVKto?si=TV0zjpZyjqEaP4KU&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;a href=&quot;/trader-joes-parking&quot;&gt;here’s a bit more footage from trader joe’s&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;other-footage&quot;&gt;other footage&lt;/h2&gt;

&lt;p&gt;There’s lots of video I’ve got of intersections, of many kind.&lt;/p&gt;

&lt;p&gt;Here’s a timelapse from my scooter riding across denver: &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7502690216558284063&quot;&gt;https://www.tiktok.com/@josh_exists/video/7502690216558284063&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7434646056232570142&quot;&gt;here’s more drone footage&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;here’s why scooters are time saving tools, and I know most of you have no idea what I am talking about, and do not know that you do not know this!&lt;/p&gt;

&lt;p&gt;I encounter intersections when there is zero other traffic at it, in any direction, sometimes. Sometimes there are other vehicles, and I move responsively to all conditions. So, here’s a video that shows how I can treat an intersection as a traffic circle, even if it’s a regular traffic-light-mediated junction:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7381569250302889246&quot;&gt;https://www.tiktok.com/@josh_exists/video/7381569250302889246&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7428736543289822495&quot;&gt;drone footage of a few people riding bikes/e-scooters across city park and an adjacent neighborhood&lt;/a&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Relational Antipatterns</title>
   <link href="https://josh.works/relational-antipatterns"/>
   <updated>2025-05-12T13:00:00+00:00</updated>
   <id>https://josh.works/relational-antipatterns</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;This list of relational anti-patterns started as a draft of a written list in a small notebook I carry with me most of the time.&lt;/p&gt;

&lt;p&gt;Eventually, I was jotting down notes for both this this particular list &lt;em&gt;and&lt;/em&gt; the list on the piece on &lt;a href=&quot;/on-sadness-and-grief&quot;&gt;sadness and grief&lt;/a&gt;, and there is certainly overlap.&lt;/p&gt;

&lt;p&gt;This ‘relational anti-patterns’ list came about when I was overhearing a conversation among a group, while I was sitting near them at a climbing gym, overhearing their discussion of their ‘red flags’ in certain relationships.&lt;/p&gt;

&lt;p&gt;I reflected on patterns I’ve observed, what would go on my own list I appreciated that these things seem to generally hold true for all sorts of relationships, be it family in any way, chosen family, friends, acquaintances, all relationships of love, etc.&lt;/p&gt;

&lt;p&gt;so, overhearing their discussions of ‘red flags’, I started thinking of how I’d populate my own list. Eventually, ended up with the below list.&lt;/p&gt;

&lt;p&gt;But… I don’t like the red/green/yellow signal of traffic lights. Why does red mean stop? Why does green mean go?&lt;/p&gt;

&lt;p&gt;So, instead of ‘red flags’, I’m calling these ‘relational anti-patterns’, or ‘anti-relationship patterns’.&lt;/p&gt;

&lt;p&gt;Perhaps instead of ‘green flags’ it could be called ‘relational patterns’ or ‘pro-relationship patterns’.&lt;/p&gt;

&lt;p&gt;Some of these are friend/acquaintance filters, some are things that might be learned almost only accidentally, at any point in any sort of a relationship.&lt;/p&gt;

&lt;h2 id=&quot;interlude-to-box-breathing&quot;&gt;Interlude to box breathing&lt;/h2&gt;

&lt;p&gt;Do you do any sort of box breathing? As you read these words, you could try it. I’m doing it as I write this sentence, I’m doing one long breath hold. to do a good box breath practice, it’s nice to know you can enter it from any point of your own breathing cycle.&lt;/p&gt;

&lt;p&gt;while holding your breath, count 1 2 3 4 
while exhaling, count 1 2 3 4
while holding your breath “at the bottom” count 1 2 3 4
while inhaling, count 1 2 3 4 
while holding your breath ‘at the top’, count 1 2 3 4 
continue&lt;/p&gt;

&lt;p&gt;put another way:&lt;/p&gt;

&lt;p&gt;at any cadence, I start counting in my head from one to four, repeatedly, and time either holding my breath with empty lungs, inhaling across 4 beats, holding 4 beats with full lungs, exhaling 4 beats, holding 4 beats, inhaling 4, holding 4, exhaling 4. You can imagine a box, your lungs following the outside of it, four beats to a side. sometimes I felt a way writing some of these, and found myself doing box breathing when I noticed my own feelings, sometimes. And now you have the same tool. It’s been useful to me, often enough.&lt;/p&gt;

&lt;h2 id=&quot;joshs-list-of-relational-anti-patterns&quot;&gt;Josh’s list of relational anti-patterns&lt;/h2&gt;

&lt;p&gt;I left these mostly in the order they occurred to me, at least the first ones were indeed the first items that popped to my mind. I note some of these apply to me!&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;signs of nationalism, &lt;em&gt;at all&lt;/em&gt;, especially american nationalism. An “american” flag (the flag of the greater united states) is an instant no-go, especially.&lt;/li&gt;
  &lt;li&gt;being a ‘truck person’.&lt;sup id=&quot;fnref:ford&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:ford&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; Not just fords, and not just pickups. I have dislike for all forms of car culture, including how strongly any of us ever has to be identified with ‘our’ vehicle, or other people who possess the same kind of vehicle, or a same-enough kind of vehicle. I’ve had the experiences I’ve had, and know what I know. There’s an energy of entitlement that floats especially strongly in the space, I cannot un-perceive it. I resent their miserable sight lines, how little of the ground around them the driver can see. Sometimes I see truck drivers who seem to BARELY be able to see over their own dashboard. And then they’re also driving fast, with angry energy on the throttle.&lt;/li&gt;
  &lt;li&gt;being into four-wheeled-vehicles &lt;em&gt;very much at all&lt;/em&gt;. I dislike car culture, so sometimes find cars, fast cars, going fast, to be unwillingly pushed upon me. I don’t know how to easily reconcile this with my own obvious, usually over-the-top obsession with my scooter, but I can wiggle myself into a reconciliation if I try hard.&lt;/li&gt;
  &lt;li&gt;drives fast, or drives with a pressured emotional energy. Hard on the gas, hard on the brake, little stopping distance, seems unaware of others that are/might be in the space, that type of thing. Again, I know how I ride my own scooter, but I also know how I then drive cars, and I don’t carry the same energy into both vehicles, generally. Many people drive like this. :(&lt;/li&gt;
  &lt;li&gt;un-self-consciously white-passing.&lt;/li&gt;
  &lt;li&gt;participates in ‘patriarchy kink’. Plenty of ppl move in a way that shows they expect/want to be treated in a patriarchal way. Patriarchy kink sometimes sounds like emotional suppression, and obligation and entitlement, participation in/vocal support of certain gender norms.&lt;/li&gt;
  &lt;li&gt;Speaking of patriarchy kink… &lt;a href=&quot;https://josh.works/on-leaving-evangelicalism&quot;&gt;any active participation in evangelicalism&lt;/a&gt;. here’s one of several things I’ve written about that.&lt;/li&gt;
  &lt;li&gt;any &lt;em&gt;past&lt;/em&gt; participation in evangelicalism (hi, its me, I know, I wish I didn’t have past participation in evangelicalism either)&lt;/li&gt;
  &lt;li&gt;believes/acts like they believe in political authority.&lt;sup id=&quot;fnref:voting&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:voting&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;does not view american police as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;deputized slave patrollers&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;any sort of sarcasm, criticism, biting humor directed at others.&lt;/li&gt;
  &lt;li&gt;unselfconscious (over)participation in car culture/car supremacy. this is sensitive, and complicated. Maybe it looks more like also being under-equipped with non-car options, but most of american housing is the suburbs, and they’re hateful places. Most american cities are hateful, too. Any trip that involves using an ‘arterial’ is made so much worse: &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/arterials-as-walls-as-ethnic-cleansing&quot;&gt;Arterials as Walls as Ethnic Cleansing&lt;/a&gt;. This is delicate, so many systems are set up to try to coerce a way of being that is dominated by cars, so ‘that the system gets what it wants’ isn’t anything we internalize as our fault. and yet.&lt;/li&gt;
  &lt;li&gt;eats meat (I’ll often-enough eat salmon, sardines, sometimes shrimp)&lt;/li&gt;
  &lt;li&gt;others some identifiable group in certain ways, especially shaming or dehumanizing ways. &lt;em&gt;I do this myself! I other ‘them’ in some ways, often enough, I wish I could find a better way! I get pushy, less often find myself feeling any sort of gentleness or openness, etc. I push the undeniably judgy energy of “because knowing is solving, if you can get to a close enough view of the situation _as I see it&lt;/em&gt;, you can experience dramatically more peacefulness in your day to day, in/by &lt;em&gt;ceasing to support or enact {behavior that whiffs of something like supremacy}&lt;/em&gt;.” This seems paternalistic. or is it something else? I think it could be offered fairly to a peer, even though I’m ‘standing on business’ and offering zero compromise on my view of things, which is certainly something that &lt;em&gt;is&lt;/em&gt; unfair in some situations.&lt;/li&gt;
  &lt;li&gt;grief-phobic. This looks like responses of… emotional suppression, repression, thought-stopping clichés, invalidation or dismissiveness or trying to change the feeling. It’s always done to others after it’s being done to the self, it’s always a learned response, and I can manage my side of someone else’s discomfort with grief, but I then note that I’m managing something, sometimes, which sometimes is no big deal, but sometimes… tiring, or trying.&lt;/li&gt;
  &lt;li&gt;never playful&lt;/li&gt;
  &lt;li&gt;functional blindness to the issues raised in &lt;a href=&quot;https://www.goodreads.com/book/show/6792458-the-new-jim-crow&quot;&gt;The New Jim Crow&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;doesn’t at least occasionally really enjoy cooking/baking/food prep&lt;/li&gt;
  &lt;li&gt;uncomfortable with, or dehumanizing to, children.&lt;/li&gt;
  &lt;li&gt;if my own kid is uncomfortable around them&lt;/li&gt;
  &lt;li&gt;if they “put on” a voice/affect when talking to kids&lt;/li&gt;
  &lt;li&gt;into rules&lt;/li&gt;
  &lt;li&gt;into sports (american football, especially)&lt;/li&gt;
  &lt;li&gt;makes fun of anyone&lt;/li&gt;
  &lt;li&gt;doesn’t wear/resists wearing helmets. Climbing helmets (while climbing, while belaying), full-face motorcycle helmets, bicycle helmets.&lt;/li&gt;
  &lt;li&gt;persistently, unselfconsciously channels a toxic inner critic. The story I tell myself is “sure, maybe right now that critical voice is dumping only on them, but what if it gets directed at me in some situation?” So, now, I always “Witness” someone’s toxic inner critic attacking themselves&lt;sup id=&quot;fnref:witness&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:witness&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;, and sometimes someone sees it and ‘turns down’ the intensity of the critic, with improved awareness, but sometimes people don’t. I note sometimes being more critical of myself, when around people who seem very critical of themselves. Usually not.&lt;/li&gt;
  &lt;li&gt;reacts poorly to ‘i do not like this’ or ‘could we please do {x} differently’.&lt;/li&gt;
  &lt;li&gt;cannot/will not walk slowly&lt;/li&gt;
  &lt;li&gt;does not like to walk at all&lt;/li&gt;
  &lt;li&gt;plays ‘devil’s advocate’ regularly/ever&lt;/li&gt;
  &lt;li&gt;doesn’t sometimes embrace silence (hi, its me, sometimes, this is something I want more of for me)&lt;/li&gt;
  &lt;li&gt;willing to “do tourism” to Hawaii. &lt;a href=&quot;https://www.goodreads.com/book/show/1722444.Aloha_Betrayed&quot;&gt;Aloha Betrayed: Native Hawaiian Resistance to American Colonialism&lt;/a&gt; is a good starting point.&lt;/li&gt;
  &lt;li&gt;expresses xenophobia&lt;/li&gt;
  &lt;li&gt;does not respond with openness towards sadness, or anger. anger can be expressed in a way that does not hurt others, and thus witnessed/received by others as easily as any other expression. It can also be mis-expressed, and can be a bummer to deal with by anyone else, and handling someone who’s mad &lt;em&gt;at you&lt;/em&gt; is so different than handling someone’s anger that is directed towards some entirely different situation. (the skills of the latter seem like a pre-req for the former, to me.)&lt;/li&gt;
  &lt;li&gt;has pets (dogs especially, cats are a bit less of an anti-pattern. Still, i note it as an anti-pattern, for me)&lt;/li&gt;
  &lt;li&gt;for people with vulvas, wearing makeup, especially ‘lots’ or ‘always’, feels too much like a performance, and I note feeling a little out of step with the norms that lead to that sort of behavior. Feels delicate to name. some performative femininity is uncomfortable to witness, for me, same as performative masculinity, whatever that might mean, might be uncomfortable to witness.&lt;/li&gt;
  &lt;li&gt;also for people with vulvas, i perceive body hair elimination as at least unwitting participation in something &lt;em&gt;like&lt;/em&gt; patriarchy, internalized patriarchy, and clock it as such.&lt;/li&gt;
  &lt;li&gt;ditto if a person with a penis clocks me as ‘safe for patriarchy’ and spontaneously offers up in my company objectifying (overly objectifying?) comments about someone with a vulva. I usually try to clock it, and tell them as such.  (an obligation to Witness bad treatment sometimes means naming to the person doing the mistreatment, that the thing they said/did was mistreatment), and the potential or friendship is reduced.&lt;/li&gt;
  &lt;li&gt;ditto on a person, offering up objectifying comments about anyone else. There’s lots of ways someone might intentionally or unintentionally objectify someone else, and when I see it happen, I cannot help but notice.&lt;/li&gt;
  &lt;li&gt;any sort of ‘seems okay with slavery and colonialism’ energy. I note that to experience good-enough emotional safety with someone, it’s best if they’re sensitive to the different… globalized, industrialized, chains of slavery, like: the animal slaughter industry enslaves the animals &lt;em&gt;and the people&lt;/em&gt; within it. The sugar industry enslaves the people. all batteries depend on cobalt mining done by children in the congo, so I have ethical issues with electric cars and the way they create that market. The automobile/highway industry is rooted in colonial exploitation of metal resources, rubber resources, and more.&lt;/li&gt;
  &lt;li&gt;A part of my soul pulls away from activities that are going to involve much driving, or from people that seem to rely lots, or unselfconsciously, on the ecosystem of driving. &lt;a href=&quot;https://www.goodreads.com/book/show/2023854.The_Slaughter_of_Cities&quot;&gt;America does ethnic cleansing via urban renewal projects&lt;/a&gt;, which often enough rounded to ‘tear down some people’s buildings and replace them with parking lots’ or ‘do not issue a permit to a building unless there is a parking lot’. I wrote &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/parking-minimums-as-ethnic-cleansing&quot;&gt;Parking Minimums as Ethnic Cleansing&lt;/a&gt;. I dislike to even be inside of a parking lot, i dislike driving and using highways.  This obviously sometimes puts me at odds with some norms in the USA, it’s none of our fault’s, I wish it wasn’t this way.&lt;/li&gt;
  &lt;li&gt;believes in, or bases their decision-making on ‘calories in/calories out’. Certain alternatives are too sound, it’s hard to even muster the energy for someone who unselfconsciously propagates CI/CO narratives. &lt;a href=&quot;/cgm&quot;&gt;link to continuous blood glucose post, how I eat&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;references calories &lt;em&gt;at all&lt;/em&gt;, tbh.&lt;/li&gt;
  &lt;li&gt;speaks derogatorily about houseless people.&lt;/li&gt;
  &lt;li&gt;isn’t horrified by the slaughter of animals in medical research. rats, mice, monkeys, rabbits. horrifying.&lt;/li&gt;
  &lt;li&gt;overly into the DSM 5, or views it as a particularly authoritative or reputable document, instead of a piece of propaganda, capitalism/supremacy supporting. (like… the story of &lt;em&gt;drapetomania&lt;/em&gt; being considered a real thing by ‘the medical community’ seems more sidestepped than satisfactorily resolved to me.)&lt;/li&gt;
  &lt;li&gt;talks about ‘men’ or ‘women’ through the lense of gender-essentialism. “Men do X” or “Women do Y”. Gender essentialism is one of the two big intellectual supports of this european american supremacy that dominates the world. The other big support is the… superstition? of “race”. I don’t find the phrase ‘white supremacy’ helpful for me to use, because it seems to concede some dignity to the very concept of race. So, even though i don’t view ‘whiteness’ as a real thing, I view the collective concept of whiteness as &lt;em&gt;so dangerous&lt;/em&gt;, and is thus completely real. Just like ‘political authority isn’t real’, but the concept, the belief, in political authority, is obviously dangerous for anyone that’s been on the wrong side of someone who raised an army and took it out murdering. So, one doesn’t have to believe in something to get got by it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;relational-patterns&quot;&gt;relational patterns&lt;/h2&gt;

&lt;p&gt;writing a list of anti-patterns sometimes knocked loose a corresponding ‘pattern’, but I’m trying to &lt;em&gt;not&lt;/em&gt; compile that list in this post. To even start a list feels overly constraining of the many ways people can experience lovely and loving aspects of relationship, togetherness, humanity, etc etc etc.&lt;/p&gt;

&lt;p&gt;Obviously to list anything is to be able to list many things, so I’m limiting myself to a single item.&lt;/p&gt;

&lt;p&gt;Here’s some particularly nice patterns to encounter:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;enjoys (or is capable of enjoying) &lt;a href=&quot;https://en.wikipedia.org/wiki/Studio_Ghibli#Feature_films&quot;&gt;Studio Ghibli films&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;misc&quot;&gt;Misc&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:ford&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;“Why do you care about trucks, josh?” Good question. from several possible answers, &lt;em&gt;some&lt;/em&gt; truck drivers are one with their trucks and use it to spew hate into the world. I wouldn’t want to accidentally be associated with some of those types of behaviors, and see having that type of vehicle as being (unwittingly) complicit in something. I just don’t like the vibe of trucks and ‘their’ people. &lt;a href=&quot;#fnref:ford&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:voting&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;For anyone who happens to have the option of voting in american elections, I don’t see it as ethical! A president is needed to sustain the american war machine, for instance, and any president seems fine with doing just that. Biden was key in the expansion of the powers of deputized slave patrollers running a domestic war against formerly enslaved people via the concept of a ‘drug war’. they got and used infinite money and resources to enslave and destroy everything black people have ever had.&lt;/p&gt;

      &lt;p&gt;If the american government is the biggest advocate of genocide around the world today, directly and indirectly, would voting &lt;em&gt;at all&lt;/em&gt; be a vote of participation? seems that way to me. many of my friends clock me as safe to shit on trump around (indeed, that’s safe around me) but I wish I heard a bit more shitting on &lt;em&gt;political authority&lt;/em&gt; as a concept at all. Consider &lt;em&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey , _The Most Dangerous Superstition&lt;/em&gt; by Larken Rose. (It says a belief in ‘authority’ is all one needs to justify doing to someone else something that they could never otherwise justify)&lt;/p&gt;

      &lt;p&gt;Yet people living in the countries containing the 700+ american military installations cannot vote. people who’ve been attacked and enslaved by american deputized slave patrols cannot vote. Native peoples, literally, _the people who had governments around the region  we could call ‘the greater united states’ cannot vote (native people). Voting seems to support the concept of ‘the state’ which I no longer abide by. So even if voting did matter, and there was a time that it mattered a lot (reconstruction-era USA, see how the supremacists killed and cleansed everyone who opposed their supremacy?). Peruse &lt;a href=&quot;https://josh.works/recommended-reading&quot;&gt;https://josh.works/recommended-reading&lt;/a&gt; for some more. &lt;a href=&quot;#fnref:voting&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:witness&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’ve a draft floating around titled “Do Not Neglect The Needful Role of the Witness”, or something like that. The idea is… if you witness some mistreatment, some exploitation, between one person and someone else, there’s a bit of a role that &lt;em&gt;needs&lt;/em&gt; to now be played by someone. The person who was mistreated needs/deserves to have affirmed “that shouldn’t have happened, it wasn’t your fault, it was not love, you did not deserve it, you deserved {something different}, it’s expected that something like that would hurt.” The person doing the mistreating also needs/deserves to be told &lt;em&gt;a rather similar message&lt;/em&gt;, slightly modified.&lt;/p&gt;

      &lt;p&gt;So, if I see someone saying to themselves something that would be wildly rude, or critical, if they said it to/about someone else, I’ll usually name exactly that, simply with the goal of inserting the idea that &lt;em&gt;when they are hearing mean things about themselves, it’s very likely someone elses critical voice, internalized, animated by their own energy and thought processes&lt;/em&gt;. &lt;a href=&quot;#fnref:witness&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Related to Grief &amp; Sadness &amp; Supremacy</title>
   <link href="https://josh.works/on-grief"/>
   <updated>2025-04-30T13:00:00+00:00</updated>
   <id>https://josh.works/related-to-sadness-and-grief</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;this post is very drafty, but has been sitting around getting longer for a few weeks now, so I’m simply posting now and will do some more rounds of cleanup, probably.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’d started writing some of this in a letter to a friend, then noticed that, with a little modification, i’d want to share it with a different friend. Then it kept iterating, once I started down this line of reasoning, I kept finding more and more things. It’s nice to have things named. It’s long for a blog post, short compared to watching a movie. Usually my process is ‘get it out’ and then organize it later. Sorry in advance for the length, organization, (lack of) flow.&lt;/p&gt;

&lt;p&gt;Many other people than just me claim that to fully feel joy, one also is able to fully feel grief. I’m dramatically less into the idea of ‘suffering’ than I once does, and yet, I agree with the sentiment. Wanna access joy, without resisting when it passes? Get güd with grief.&lt;/p&gt;

&lt;p&gt;So, there’s many nods to sadness in the coming words, please also know I evaluate myself as very able to feel joy, peacefulness, connection, etc. Indeed, it’s my capacity for and appreciation of joy and connection that gives me some of my energy around railing against suffering, sadness, grief.&lt;/p&gt;

&lt;p&gt;I also affirm that to repress sadness or grief is to eventually lose the ability to experience joy and presence. We cannot ‘choose’ the emotions we feel, and it’s not helpful to try to hustle ourselves out of sadness, just as it’s not helpful to try to cling to a sense of joy or happiness, after the time for it is passed.&lt;/p&gt;

&lt;p&gt;So, in this piece, I’m attempting to move out of myself some of the sadness, perhaps externalizing it into this artifact, and in doing so, feel Witnessed, validated, by myself, and i’ll reclaim some emotional energy that feels stuck, pent up.&lt;/p&gt;

&lt;h2 id=&quot;on-this-being-read-by-evangelicals-or-my-parents&quot;&gt;On this being read by evangelicals, or my parents&lt;/h2&gt;

&lt;p&gt;Obviously, I imagine people like my parents (or other religious authoritarian supremacists) might read this. Part of the composition process indeed demanded that I expect that they would, or people like them. But when I’m channeling anger at someone like one of my parents, I’m condemning the standard american colonial supremacist, with or without religious components to their being.&lt;/p&gt;

&lt;p&gt;The real theorized audience besides myself is others who were raised within any sort of structure like evangelicalism, or a structure shaped by evangelicalism. (operant conditioning footnote? BF Skinner was QUITE traumatized by vivid depictions of hell, told to him by his mother, and says everything downstream of that in his ideas was affected by his desire to not go to hell)&lt;/p&gt;

&lt;p&gt;I just read &lt;a href=&quot;https://aella.substack.com/p/the-joy-is-not-optional&quot;&gt;this very interesting post&lt;/a&gt;. The title is “The Joy Is Not Optional: The Growing Kids God’s Way protocol” and noticed (sadly) all the familiarity between how the author of that post was raised, and I was raised.&lt;/p&gt;

&lt;p&gt;So many similarities. Yikes. Poor all of us. Gary Ezzo’s ideas, the quiverfull movement, james dobson, and his kind of people were familiar names in my childhood home.&lt;/p&gt;

&lt;p&gt;Expectation of instant obedience, on threat of physical assault, was an ever-present energy. To this day, I maintain that the emotional damage done by the &lt;em&gt;willingness to assault someone to get their compliance&lt;/em&gt; is such a deep betrayal to the idea of love and care. It broke my brain, to believe so hard, so needfully, that the people I loved and loved me were also willing to terrorize me, if I made a mistake or wasn’t in full-enough compliance to how they thought I should be. (“fix your mood, josh” was a common-enough sentiment)&lt;/p&gt;

&lt;p&gt;Children are to be seen, not heard, any sign of ‘willfullness’ needs to be stamped out with a genocidal, colonizer-worthy energy. (The ‘paternalism’ between parents and kids in evangelicalism is the same as the ‘paternalism’ between slavers and the enslaved, and the colonizer and the original peoples. One truly needs to be willing to murder, and to believe it’s a good thing, to justify the mistreatment.)&lt;/p&gt;

&lt;p&gt;The person who was my dad would brag about how once he finally got me to do my homework by emotionally bullying me until I was sobbing, and &lt;em&gt;then&lt;/em&gt; I did what he was demanding me to do. (it seems to have never crossed their mind to &lt;em&gt;consider&lt;/em&gt; asking me of my experience of them in any way, and both of my parents begin to deploy heavy, aggressive defensiveness and opposition, when I would ask them to consider me. I sometimes feel a very real sensation of sickness, discomfort, deep in my belly, when I think of some of these experiences, sometimes)&lt;/p&gt;

&lt;p&gt;Lots of traditional education is based in shame. To exist in an environment where someone is considered ‘educated’ means someone else is considered ‘uneducated’, or all of us are considered uneducated in some ways. Ivan Illych’s excellent &lt;a href=&quot;https://www.goodreads.com/book/show/223403.Deschooling_Society&quot;&gt;Deschooling Society&lt;/a&gt; is a useful antidote. I’ve had horrific experiences around ‘education’, and I know others that internalized the shaming messages as a result of interacting within educational institutions.&lt;/p&gt;

&lt;p&gt;And the same is fully felt by anyone who is succeeding within those institutions, too, by the way. Or it can be. Some surely get through it with only a little shame, surely, but enough don’t. Plenty of people who perform exceptionally well in an endeavour are at least sometimes quite bound up by shame. I once saw someone send his second v13 on a tension board &lt;em&gt;in a session&lt;/em&gt; and he said diminishing, self-shaming things about himself, based on how hard they felt for him!!!! Many of my friends have experienced me saying something like&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hey, if you said that thing about yourself, about me, or {someone else present}, we’d all be aghast that you were being so mean, even you’d be shook at how mean that was. When I hear someone saying mean things about themselves, I assume this was the kinds of things a caretaker told them when they were younger, and damn, what a bummer. Also I’ll keep slightly judo-ing this toxic inner critic, sorry, I cannot not.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The combination of a toxic shaming evangelical family system, using a shaming religious and academic system, to try to squeeze, contort, hack into a prim and proper shape the humanity of a child who is waging an actual emotional insurgency… it’s tragic.&lt;/p&gt;

&lt;h3 id=&quot;much-of-this-list-will-reference-evangelicalism-andor-supremacy&quot;&gt;much of this list will reference evangelicalism and/or supremacy&lt;/h3&gt;

&lt;p&gt;I believe it’s our responsibility or our opportunity or our ease-of-insight to discuss ‘our own people’. I have substantial lived experience inside the homes and minds of supremacists, colonizers. The kinds of people who have perpetuated genocide, ethnic cleansing, stripping children from their parents to apply a regime of social control to the children.&lt;/p&gt;

&lt;p&gt;Whatever practices were common in Australia, against the native peoples, and the i-still-cannot-appreciate-hardly-the-shape-of-it supremacy that defines the history of south africa. Israel’s genocide of palestinians, these are tactics of european american supremacists wanting a regime of social control and willing to, well, murder everyone and themselves.&lt;/p&gt;

&lt;p&gt;So, I can channel an insiders perspective to help others defend themselves. Ideally no one would have to defend themselves from people like this. Alas.&lt;/p&gt;

&lt;p&gt;Since I was raised by evangelicals, and a primary tool of evangelicals is “shame the children”, I had shame poured on me constantly, as the first line of defense against indications of my humanity.&lt;/p&gt;

&lt;p&gt;The people who were my parents used shame differently on me from each other, because of their respective damaged ideas about sex and gender. So I’ve got beef with some constructs around sex and gender, and I’ll talk about that later. (my stance is “don’t push your patriarchy kink&lt;sup id=&quot;fnref:kink&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:kink&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; on me unless I consent to it, and I do not consent to it”)&lt;/p&gt;

&lt;p&gt;The-person-who-was-my-father’s full-throated embrace of patriarchy causes him to erupt with a constant verbal stream of criticism at the idea of feeling feelings, and the-person-who-was-my-mother’s studious refusal to ever see me as a person of dignity, and her instead constant objectification of everything about me caused her to also evaluate the emotional side of me as ‘nonexistent’, in a different way. Abuse is the active, inverse of neglect. Even as I can construct exculpatory excuses for culty people who abuse and torture their kids &lt;em&gt;in general&lt;/em&gt;, I note a growing sense of specific, focused anger over some specifics of &lt;em&gt;these&lt;/em&gt; instances of people, and &lt;em&gt;these&lt;/em&gt; situations. &lt;em&gt;stamps foot&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;(keep reading for entries from her diary that she published of physical and sexual assaults upon me as a child, “for jesus”, as early as my third birthday!)&lt;/p&gt;

&lt;p&gt;Technically, my parents couldn’t meet me at a better place than they could meet themselves, &lt;em&gt;their&lt;/em&gt; unaddressed childhood wounds, etc etc.&lt;/p&gt;

&lt;p&gt;The reason I can apply that treatment to them and &lt;em&gt;still&lt;/em&gt; evaluate them (technically, their actions. don’t they say things like ‘hate the sin, not the sinner’?) as contemptible is because they are &lt;em&gt;unable to receive input from the people they are interacting with, how they are being experienced&lt;/em&gt;, and they’ll do damage to someone else in the clinging to their own self-image.&lt;/p&gt;

&lt;p&gt;They would beat me, physically, and interpret the tears of kid josh as evidence that I needed &lt;em&gt;more&lt;/em&gt; of a beating, instead of evidence of the relational harm they were inducing and that they could, should, move differently. Anyone who sees someone else as a person would not be able to throw away the person’s humanity and apply hurt and coercion to that person.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;doing nothing&lt;/em&gt; would be far, far better than making up rules for someone else to follow and then beating them, torturing them, for not following the rules. This would also have obviously been an applicable sentiment in that era of American Chattel Slavery, and yet slavery persisted for hundreds of years, warping the soul of everyone who even only perceived it, let alone the victims of the oppressor/complicit classes, and the people comprising those groups.&lt;/p&gt;

&lt;h3 id=&quot;the-currency-of-shame-inside-of-supremacy-culture&quot;&gt;the currency of shame inside of supremacy culture&lt;/h3&gt;

&lt;p&gt;So, here’s a ‘grand unifying theory’ of why josh is so damn sensitive. It is endemic to the supremacy culture of the people here to categorize and group and rank and order things, so there’s a part of me that resists even recounting all of this.&lt;/p&gt;

&lt;p&gt;often-enough, I’ve been shamed, sometimes severely, for disinhibited self-expression. grief, joy, wonder, curiosity, &lt;em&gt;grief&lt;/em&gt;, enthusiasm. Evangelicalism is obviously a shaming institution, and so to is &lt;em&gt;everything reliant upon operant conditioning structures&lt;/em&gt;. That last piece might seem a hot take, &lt;a href=&quot;/hitting&quot;&gt;it really is not&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pete Walker was the first person I encountered who articulated something like “people, who hurt others, and then refuse to feel shame about it cause the shame to be felt by the others. Even if it’s only dim echos of that shame being felt by others, &lt;em&gt;they are still being forced to experience someone else’s shame&lt;/em&gt; and that stinks.”&lt;/p&gt;

&lt;p&gt;thus virtually every supremacist walking around clinging to supremacy is a tiny little factory of shame, emitting noxiousness like a car emits brake dust and tire rubber microplastics and noise and danger.&lt;/p&gt;

&lt;h2 id=&quot;photos-of-my-moms-journal-entries-describing-her-repeated-assaults-of-me&quot;&gt;Photos of my mom’s journal entries describing her repeated assaults of me&lt;/h2&gt;

&lt;p&gt;Obviously this is some delicate terrain. I don’t remember any of the events described below, that happened to three-year-old-me, of course, but adult me certainly knows what he’d feel about witnessing this happening to child me, or happening to some other three year old. I happen to have my own child, so I can easily access a rather alivened sense of disgust over this behavior, especially when I appreciate that my parents think this behavior is so right, &lt;em&gt;I should be applying it to my own child&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I can appreciate why something in my nervous system goes big when I face icy, stern, cold behavior from others, after reading these entries and remembering the ways this disposition kept showing up &lt;em&gt;my entire life&lt;/em&gt;, despite me clinging to hope that my mother had love or affection for me.&lt;/p&gt;

&lt;p&gt;In my mother’s words, from a diary she maintained and then printed/distributed to her offspring, here’s an early formative experience of shame. I appreciate the irony that this particular incident happened on my birthday. My 3rd birthday:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/miriam_journal_entry.jpeg&quot; alt=&quot;journal entry 0&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;On Joshua’s birthday Joshua asked me for his train set. Now, a few days ago he didn’t want to put it away. I told him if he didn’t want to put it away I would do it for him but I’d put it away out of his reach so he couldn’t play with it anymore. He wanted me to put it away anyway, and I did. Each time he asked for it after that I reminded him that he couldn’t play with it because he didn’t know how to put it away. When I told him that on this day, he assured me that this time he would put it away himself. I got his train set down for him. He played with it. When he was done, I asked him to put it back and he said “Mom put back train set.” He expected me to do it like I had before, and I reminded him that he had to put it away. He repeated, “No, Mom put back train set.” I repeated that it was his responsibility. He refused again and received a spanking. This time when I told him to please put away the train set he cried but he did it and then proudly said “Look, Mom!” I thanked him and then he told methe secret of his obedience. “Yord help Josh put back train set.” Oh how God answers prayer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Wow wow wow. The constructed ‘power struggle’. In religeous authoritarian families, male-passing children are assumed to be ‘strong willed’ or something like that, so the parents are attuned to all displays of preference or agency, and they take it as evidence of evil, ‘sin’, in their kid, and they fantasize situations that justify things like ‘sexual assault of a child, blamed on the child’.&lt;/p&gt;

&lt;p&gt;Miriam phrased this, “he refused again and received a spanking”. So, a 3 year old me opted out of a developmentally inappropriate ask (or maybe it was develpmentally appropriate, I’ve seen three year olds put things away, but usually not under threat of assault), then, the person who at the time represented, in theory, safety and nurturance to me, terrorized and hit me, to extract compliance from me, damn the concept of… emotional attunement? Putting the train set away herself? Letting it be out? my god.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25343.Parenting_from_the_Inside_Out&quot;&gt;Parenting From The Inside Out&lt;/a&gt; is an adequate primer for an answer to the question “if not by assault, how am I supposed to interact with a child?”&lt;/p&gt;

&lt;p&gt;Key lines:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;he refused again and received a spanking&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ve spoken before about &lt;a href=&quot;/on-hitting&quot;&gt;how I view ‘spanking’&lt;/a&gt;, and pulled into it’s own post long quotes from &lt;a href=&quot;/quotes-from-spare-the-child&quot;&gt;Spare the Child: The Religious Roots of Punishment and the Psychological Impact of Physical Abuse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;but it’s de-dignifying to tease that part out as much worse than the rest. “spankings” are what less-propagandized people call “adults hitting children and blaming the kid for it” or “physical assault” or “child sexual assault”, as any kind of assault that targets or involves sexually intimate places is default-escalated to sexual assault.&lt;/p&gt;

&lt;p&gt;When I brought this up to my dad, he dismissed it. So I updated his status in my mind, appropriately. When I mentioned it to my mother, she never responded and eventually blocked me on whatsapp. Ditto, my father. Shunning and refusing to communicate &lt;em&gt;is a classic move of power retention within supremacy culture&lt;/em&gt;. If I still lived in their house and made the same issue, they beat me and assaulted me, now that I &lt;em&gt;don’t&lt;/em&gt; live in their house, they block me. It’s the classic appeal of white women’s tears, when encountering some forms of push back against their supremacy.&lt;/p&gt;

&lt;p&gt;My dad tried verbally fighting back with me, and when that didn’t work, applied the “shunning” treatment, or at least this is my experience of it. In their defense, I suggested both that they deserve whatever sort of peace they think child abusers deserve.&lt;/p&gt;

&lt;p&gt;Here’s another entry:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/threats.jpg&quot; alt=&quot;journal entry 2&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Lately I’ve been trying to teach Joshua to put away his toys when he’s told. Lately, he’s been in the ‘why’ stage. When I ask him to put them away he asks “Why?” “Because it’s bath time.” “Why?” And so on. The questions go on and on when I ask him to pick up his toys. At bedtime timight I asked him to pick up his blocks and he again asked “Why?” I was too tired to think of any logical reasons so I just told him the end result: “Joshua, pick up your blocks because if you don’t you will get a spanking.” “Okay” he said, as he happily and immediately went to pick up his blocks!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These were obviously the bedrock ideas of Miriam’s understanding of the world, and my childhood is full of other stories in line with this kind of thing. I note now, less happily, how often feedback has been about me, happily, in a work setting: “Josh is so [compliant] when given instruction, and works hard at doing whatever we tell him!”&lt;/p&gt;

&lt;p&gt;God, in light of how hard I was working to &lt;em&gt;manage the emotional state of my mother&lt;/em&gt;, at the age of &lt;em&gt;three&lt;/em&gt;, by &lt;em&gt;repeating back to her versions of her broken view of reality&lt;/em&gt; rather than expressing something true to me, like&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I am so mad at you for hitting me, and I feel hurt by, and betrayed by and afraid of you now.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As an adult, when I experience coercive, &lt;em&gt;punishing&lt;/em&gt; behavior, I can more readily identify it and defend myself against it. Yet every time, the absolute crushing betrayal that it represents, feels like it breaks something in me that I didn’t know I had to break. I recognize a similarity, perhaps, between what I must have experienced, the sadness over the emotional loneliness, the hateful, icy, withdrawn, brutal emotional energy that seeped into every crack and pore and surface of those relationships I had with my parents.&lt;/p&gt;

&lt;p&gt;I realize now, when I thought I had a good relationship, it was because I was basically playing for myself both sides of the relationship. I knew how to relate to others without violence or hate, so I simply kept assuming my parents had that capacity within them and occasionally felt well about me.&lt;/p&gt;

&lt;p&gt;I could imagine someone like my parents reading the above, and ‘whataboutism’ing me with “well, James Dobson said…” or “it was just a few swats on the butt” (said in 2025 by my 6 foot 1 inch, 180 lb military officer/doctor/preacher father who’s pleased to tower over and terrorize and bully people).&lt;/p&gt;

&lt;p&gt;Frankly, the dual processes of 1) their inability to feel grief, sadness, over my/their/anyone else’s situation 2) the heavy cloak of defensiveness that gets drawn over the wound of ‘lack of sadness’, or something. Digging in, doubling down.&lt;/p&gt;

&lt;p&gt;(a proper response would be something like a full embrace over my anger, the sadness inherent in this. Evidencing doing work to reduce how quickly they dissociate from the experience of others, welcoming the depth of the human experience, showing that they’re beginning to appreciate how wrong it is to strip someone of their agency, will, bodily safety and lie to that person about why they were assaulted.&lt;/p&gt;

&lt;p&gt;I don’t think the damage is repairable. My dad’s last sentiment was something like “If you, josh, want to repair the relationship with me, you’re welcome to come grovelling to me over how you hurt my feelings by saying things that made me feel bad.”&lt;/p&gt;

&lt;p&gt;…sigh…&lt;/p&gt;

&lt;p&gt;I can appreciate now a bit more why there’s so much emotional deadness within me, towards them, and I find myself angering when it feels like that skillset I built, out of desperation, to defend myself against them, shows up in unhelpful ways &lt;em&gt;today&lt;/em&gt;, as an adult. The hot/cold energy they pointed towards me, emotional devestation that went unaddressed and then ‘love’ was performed, later, and because I desperately wanted love, I accepted all of it. The fake love, and the real harm. What else could I have done?&lt;/p&gt;

&lt;p&gt;I don’t think repair is available until someone can speak extensively about why they used manipulation and bullying. And if there’s a power dynamic involved, it’s obviously abuse! And all of the exact same underlying ideas of entitlement and obligation hum along in the exact same way, in both of their ways of being &lt;em&gt;today&lt;/em&gt;, that are obviously evident in how they perceived others &lt;em&gt;then&lt;/em&gt;.&lt;/p&gt;

&lt;h4 id=&quot;section-faq&quot;&gt;Section FAQ&lt;/h4&gt;

&lt;p&gt;I could imagine:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;well this seems pretty condeming, josh, I don’t see how repair &lt;em&gt;could&lt;/em&gt; be done, while you…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;blah blah blah, focusing on my attitude marks one as the kind of person who’s complicit with bad things.&lt;/p&gt;

&lt;p&gt;I’d suggest &lt;a href=&quot;&quot;&gt;The Verbally Abusive Relationship: How to Recognize it and how to respond&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;An early chapter talks about people who live in reality one “power over” and reality two, “shared power”.&lt;/p&gt;

&lt;p&gt;Ppl in reality one feel anxious in some situations when they don’t feel like they’re dominating someone else, because that means they might be &lt;em&gt;getting&lt;/em&gt; dominated. Or they might be &lt;em&gt;soon to be dominated&lt;/em&gt;, because they dominate others, sometime, when they feel entitled to it.&lt;/p&gt;

&lt;p&gt;Since they’re willing to dominate and see it as useful when ‘push comes to shove’, so if someone else shows to this reality 1 person that they’re feeling as strongly as the abuser does about something, the abuser sorta… telegraphs/projects their own problem solving strategy onto the other, and then ‘moves defensively’ by attacking, in order to not get got.&lt;/p&gt;

&lt;p&gt;From the POV of someone in reality 2, &lt;em&gt;who does not see violence or domination as anything but vastly hurtful to any situation&lt;/em&gt; wants to see the problem resolved. “shared power” appreciates the existance of power dynamics, and generally moves to flatten/reduce the power differential. The book also uses “co-creation” and “Mutuality” to describe reality 2.&lt;/p&gt;

&lt;p&gt;Co-creation and mutuality &lt;em&gt;assume out of the gate&lt;/em&gt; certain things about positive intent, assumptions of dignity, etc. I notice in myself not even wanting to pollute my own brain, the part of me that &lt;em&gt;loves others&lt;/em&gt; and loves co-creation and mutality, when I imagine that ecosystem overly affected by someone that moves through the world like Donald, Miriam, trampling delicate things beneat them, unable, unwilling to feel the sadness over what has been lost.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;and my god, the cost of all this is far, far beyond the individuals involved in this story. My own life, and two interpersonal relationships, compared to all the potential relationships I could have, or my &lt;em&gt;actual&lt;/em&gt; relationships, OR compared against the billions of people alive today, or the billions lived and died, any of whom experienced good and bad things, fair and unfair things, from some of those lines of reasoning, &lt;em&gt;none of this matters&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So much of this document will talk about supremacy, and colonialism, and evangelicalism, as I view them as like three different lenses, three different frames, of the same underlying dissociation from grief and sadness, belief in the world as dominating, fear of power sharing, and thus entitlement to obedience, of them and others.&lt;/p&gt;

&lt;p&gt;I can certainly see how this has affected me, in some ways, I feel i’ve “resolved”, in others I’ve not, and I’m sure in a few more years I’ll be able to speak about things that I’ve not yet found awareness of yet.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I feel a little like I wish a younger version of me had gotten some of the resources current me has. I could have more easily bolstered my own sense of self, clocked the misbehavior around me, etc etc.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;this is indicative of… again, unwellness. &lt;a href=&quot;/hitting&quot;&gt;‘spanking’ is a propagandist term for adults hitting children&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’m so angry that she &lt;em&gt;today, in 2025&lt;/em&gt; thinks it’s admirable, laudable, necessary, for adults, caretakers of kids, to &lt;em&gt;threaten&lt;/em&gt; children with &lt;em&gt;sexual assault&lt;/em&gt; to force them to comply.&lt;/p&gt;

&lt;p&gt;This is colonialism, genocidal energy, I welcome it exactly as anyone thinks I would.&lt;/p&gt;

&lt;p&gt;If you’ve not been raised within the cult of evangelicalism or a different institution of religious authoritarianism, this approach might be full of unfamiliar language. The first 18 years of my life was full of this motif, after which I was hauled off to college by my parents, and mostly never spoken to again. I’m recovering anger these days over the emotional abandonment of it all. It was bad when I was a child, and as I move through my life today, I anger again at the emotional abandonment I experience from my parents. It’s easier to learn to hold your own pain when you have &lt;em&gt;a memory&lt;/em&gt; of sometimes been tenderly held, in pain, safely, by a caretaker. As I rolodex through experiences with miriam and donald, and other evangelicals I relied upon for attuned connection, but esp with miriam and donald, I remember brutal coldness, indifference, or the intentional infliction of deep emotional pain. Donald often enough was physically bullying, grabby, pushy, quick to grab and squeeze and move someone’s body simply because he felt entitled to it. How gross.&lt;/p&gt;

&lt;p&gt;So, having my own kid has been great, and healing in some ways for my own ‘parenting the inner child’ journey - I can see my kid developing normally, without our relationship being poisoned by violence and the dangerous superstitions of ‘authority’ and ‘obedience’, and I can appreciate that when I was policing myself, with an intense and devastatingly critical inner voice, I was not channeling ‘truth’ or ‘god’ or ‘me’, I was channeling the delusional, bullying influences of my parents, who hated themselves, me, and many, many others.&lt;/p&gt;

&lt;p&gt;So, I can turn down my inner critic, often-enough, and the simple &lt;em&gt;naming&lt;/em&gt; of it’s prepense has a nice disarming effect on the worst of the harm it causes.&lt;/p&gt;

&lt;p&gt;And yet, this blog post. Why this blog post?&lt;/p&gt;

&lt;p&gt;Sadness. Shame.&lt;/p&gt;

&lt;p&gt;Other people not easily-enough attuning to me in an expression of pain. When I feel misattunement, the rest of my vulnerability is quick to exit the interaction, because the environment gets labeled as ‘obviously/possibly not safe enough’. Misattunement is endemic in supremacy cultures, so it’s part of the damage done to all of us, and part of the way we might unwittingly propagate that hurt outwards on others.&lt;/p&gt;

&lt;p&gt;This is manageable, but is made less so by a key prior intimate relationship partner said, often, plainly mean &amp;amp; aggressive things simply upon witnessing sadness in me. Tears, especially. This happened repeatedly. Eventually, I ‘managed’ my emotions, to alleviate that particular pain, at great cost.&lt;/p&gt;

&lt;p&gt;i currently feel “low” on the number of sensitive and non-shaming people in my life. Unfortunately, bc ✨supremacy culture in america✨ many, many people, with all sorts of genitalia, have incomplete or uneasy relationships with grief, their own grief and others. Yes, plenty of ‘men’/people with penises do not have easy access to wild amounts of emotional depth. AND! plenty of people who call themselves female/people who have vulvas &lt;em&gt;also&lt;/em&gt; do not have easy access to emotional depth.&lt;/p&gt;

&lt;p&gt;Now, most people do not run around intending to openly shame others for expressing emotions, but when someone’s uncomfortable with their own grief, that discomfort gets telegraphed outwards to others. Sometimes it’s subtle, sometimes it’s extremely not-subtle.&lt;/p&gt;

&lt;h2 id=&quot;some-of-the-stories-the-contents-of-the-original-intent-of-this-written-work&quot;&gt;Some of the stories, the contents of the original intent of this written work&lt;/h2&gt;

&lt;p&gt;when I smell someone responding to an expression of my sadness or grief with something that feels like shame, a part of me operates in a powerful way to shape my future presentation within that relationship. I’m working on naming this thing a bit more directly, so I can give us all an opportunity to perhaps move differently next time.&lt;/p&gt;

&lt;p&gt;I am skilled, now, at either 1) hiding when I feel grief, or 2) avoiding within myself the sensation of grief, so I don’t have to hide it/hide it so effortfully.&lt;/p&gt;

&lt;p&gt;I don’t love the development of this skill for me. I don’t blame any particular person, I have simply come to resent supremacy culture, which causes grief to get mishandled in many ways, for everyone. It goes back generations. Grief, and the systems we live in, is complex and it takes a lot of humanity to hold it well, our own grief and the grief of others.&lt;/p&gt;

&lt;p&gt;In {friend’s name} I grew sensitized because, I remember {friend} saying something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If I ever saw {partner of friend} cry, I’d think it was strange, odd, [vaguely unsettling].&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;sorta trivial, but it felt like an admission of:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;if I saw grief I didn’t understand in the visage of someone else who I don’t think deserves to feel grief, I would not be curious or enter into the experience with them, I’d label it as unexpected and deploy coping strategies.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;EVERYONE IS WELCOME TO DO THIS! This is simply not the kind of response that helps me move with &lt;em&gt;more&lt;/em&gt; emotional safety instead of feeling withdrawn a bit.&lt;/p&gt;

&lt;p&gt;another time, in response to something I shared, there was a “well, at least…” or ‘oh, that seems better than {other bad thing}’. I note that this lands on me as dismissiveness, which unfortunately drafts onto other times I’ve experienced dismissive energy, and something in me withdraws, again, relationally.&lt;/p&gt;

&lt;p&gt;I could follow the thread of ‘sorta invalidating responses’ farther, maybe another time. I have an &lt;em&gt;actual&lt;/em&gt; fear of dragging someone into an emotionally uncomfortable place, without their permission, so if I detect discomfort around grief, I bottle up my own tears, my own grief, pretty firmly, pretty quickly.&lt;/p&gt;

&lt;p&gt;There’s been a few other things that round to me having an assessment as “I don’t know how to handle my own sadness in the context of us. My current strategy is ‘mostly avoid my own’, while still modeling fully welcoming anyone else’s grief, and, in fact, continuing to honor my own grief. I’ll name it, and I know people mean well for me, so I can kinda do both sides of ‘handling my grief’, as needed.” It’s nice to not have to hold both sides of it.&lt;/p&gt;

&lt;p&gt;This leaves me feeling like I need to, or I want to, minimize something about myself, to preserve something that is otherwise very alivening and appreciated. I have often-enough been overwhelmingly, vastly crushed by sadness because of little things &amp;amp; big, and I feel stuck with it, stuck &lt;em&gt;by&lt;/em&gt; it.&lt;/p&gt;

&lt;p&gt;&amp;lt;please read onward for a now-long-and-detailed list of some of the sadnesses I have found at times hard to articulate, or hard to articulate without perhaps finding myself feeling very sad, and sitting around crying in your company is not something I am comfortable with&amp;gt;&lt;/p&gt;

&lt;p&gt;There’s stuff that arose around {another person} and I continued a strategy of avoidance. a little turns into a lot. I feel like throughout {friend} experienced bits of this, from me, with your own sense of disappointments or questions or hurts.&lt;/p&gt;

&lt;h2 id=&quot;joshs-long-list-of-miscellanea-that-engenders-sadness&quot;&gt;Josh’s long list of miscellanea that engenders sadness&lt;/h2&gt;

&lt;p&gt;One of my first sadnesses is a meta-sadness.&lt;/p&gt;

&lt;p&gt;I’m sad about how unskillfully sadness is handled within supremacy culture. In some ways the lack of skills is accidental, a feature of the damage and violence of supremacy culture. yet in other ways it’s necessary. to maintain supremacy culture, one needs dissociation from other’s pain. is a function and coping mechanism of supremacy, war, capitalism, slavery, violence, obv. And it’s rooted in dissociation from one’s own addressed pain or relational betrayals!&lt;/p&gt;

&lt;p&gt;Lots of my childhood experiences were fully informed by growing up with supremacists. These supremacists fabricate the concept of ‘whiteness’ and then use that to justify the supremacy, but I won’t call them ‘white supremacists’, even though it would be an accurate label. It’s simply ceding too much intellectual ground to the delusion of race-as-a-real-thing.&lt;/p&gt;

&lt;p&gt;So, I am &lt;em&gt;sad&lt;/em&gt; about living inside of a supremacy culture.&lt;/p&gt;

&lt;h3 id=&quot;supremacy-culture-vs&quot;&gt;Supremacy culture vs…?&lt;/h3&gt;

&lt;p&gt;I’ll be referencing supremacy and some other stuff a lot, but I won’t be talking much about ‘white supremacy’, for the same reasons as I refuse to not airquote “spanking”, I find my wording simpler for me, here is why:&lt;/p&gt;

&lt;p&gt;the very concept of race was created to support the ideals of a certain group of supremacists. I might use ‘european american supremacy’, or ‘european colonial powers’, or something like that, but ‘white’ supremacy for me cedes a bit too much power to european american supremacists.&lt;/p&gt;

&lt;p&gt;Supremacists also invented a lot of patriarchy&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;what do you mean by ‘supremacy culture’, Josh?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Take a look at this list of characteristics of the supremacy culture of the greater united states:&lt;/p&gt;

&lt;h3 id=&quot;the-15-characteristics-of-supremacy-culture&quot;&gt;the 15 characteristics of supremacy culture&lt;/h3&gt;

&lt;p&gt;Some of &lt;a href=&quot;https://www.whitesupremacyculture.info/characteristics.html&quot;&gt;the 15 tenants of supremacy culture&lt;/a&gt; seem germane here. Reading the list helped me turn down my inner critic, a bit. When you’re getting after yourself for something that’s also on this list, consider blaming someone for playing on you their own internalized colonizer.&lt;/p&gt;

&lt;p&gt;I suggest reading the whole piece. These are all subtle and not-subtle messages poured upon me and maybe you. I find an increasing peacefulness from the ‘toxic inner critic’ that once operated constantly in my life.&lt;/p&gt;

&lt;p&gt;Especially as it relates to “firing the inner cop”, or “expelling the inner colonizer”. I found many parallels between how the US military does it’s “counter insurgency” tactics, and how I ended up defending my emotional safety from my parents.&lt;/p&gt;

&lt;p&gt;It’s not just evangelicals or the military that believe it’s necessary to “stamp out willfulness” wherever it lives - it’s a colonial religious thing, one that white-passing women fully participated in. Patriarchal white women (or, as I call them, people with vulvas who are supremacists) uphold patriarchy as much as a classic patriarchal white man.&lt;/p&gt;

&lt;p&gt;These tenants are non-gendered, non-ethnicity-based characteristics of supremacy culture. Wherever these tenants thrive, so too does supremacy culture. Lets not let these things thrive inside of our own minds, crushing our own sense of self.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://drive.google.com/file/d/1XR_7M_9qa64zZ00_JyFVTAjmjVU-uSz8/view&quot;&gt;Here’s a great, detailed expansion of the list by the original author&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;fear&quot;&gt;Fear&lt;/h4&gt;

&lt;p&gt;Phew.&lt;/p&gt;

&lt;h4 id=&quot;eitheror-thinking&quot;&gt;“Either/Or thinking”.&lt;/h4&gt;

&lt;p&gt;I hear a response, when I say “not this, because…”. The supremacist will say “Well, if that thing cannot be had, WE HAVE TO HAVE THIS OTHER THING!!!!”. That’s thought-stopping. Not helpful.&lt;/p&gt;

&lt;h4 id=&quot;worship-of-the-written-word&quot;&gt;Worship of the written word&lt;/h4&gt;

&lt;h4 id=&quot;individualism&quot;&gt;Individualism&lt;/h4&gt;

&lt;h4 id=&quot;quantity-over-quality&quot;&gt;Quantity over Quality&lt;/h4&gt;

&lt;h4 id=&quot;sense-of-urgency&quot;&gt;Sense of Urgency&lt;/h4&gt;

&lt;h4 id=&quot;paternalism-perfectionism-one-right-way-objectivity&quot;&gt;Paternalism, Perfectionism, One Right Way, Objectivity&lt;/h4&gt;

&lt;h4 id=&quot;progress-or-bigger-is-better&quot;&gt;Progress, or Bigger is Better&lt;/h4&gt;

&lt;h4 id=&quot;fear-of-open-conflict-power-hoarding-right-to-comfort&quot;&gt;Fear of (Open) Conflict, Power Hoarding, Right to Comfort&lt;/h4&gt;

&lt;p&gt;Or “right to emotional comfort”. This sometimes looks like “you know what my preference is, how can you not have given it to me” or “this conversation causes me to think of myself in unflattering ways that are inharmonious with my self-image, I need it to stop and I’d like to distract myself.”&lt;/p&gt;

&lt;p&gt;Discussing conflict (rather than accepting the presumed hierarchy/correctness of the way of things)&lt;/p&gt;

&lt;h4 id=&quot;power-hoarding&quot;&gt;Power Hoarding&lt;/h4&gt;

&lt;h4 id=&quot;urgency&quot;&gt;Urgency&lt;/h4&gt;

&lt;h4 id=&quot;defensiveness--denial&quot;&gt;Defensiveness &amp;amp; Denial&lt;/h4&gt;

&lt;p&gt;Seems self-evident. It’s an intimacy-destroying response, and i appreciate how childhood me, and often enough adult me, survived in a desert of emotional intimacy, getting occasional sips of fake intimacy that I convinced myself was real, and good-enough. The last time I spoke to my dad on the phone, I felt many things. I have detailed notes, I noted how scared I was, going into the conversation, and I relived the many, many times I felt a terror having to go speak to him. It arose within me, a disgust for the kind of person who would &lt;em&gt;want&lt;/em&gt; children to be afraid of them, out of a need to control others.&lt;/p&gt;

&lt;p&gt;I interrupted him as he was monologing, and he got very affronted, and said “if you cannot speak to me with respect I don’t want to be in this conversation.”&lt;/p&gt;

&lt;p&gt;Like many of his generation, he confuses respect with control. He’s never experienced me outside of the context of ‘is josh being &lt;em&gt;obedient&lt;/em&gt; to me?’ because he and I have not spoken or interacted since I was 16, more or less, and he felt fully entitled to control every aspect of my being, then.&lt;/p&gt;

&lt;p&gt;Ooooh, I have anger for behavior like this. More on this later, perhaps.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;These concepts have been top of mind for me during my few recent interactions with both of my parents. The interactions were extremely illuminating to me, and saddening. I feel so sad for the me that spent so many years living with these people! Their fear of open conflict, for instance, or desperate entitlement to emotional comfort, would be radiating from them in every word.&lt;/p&gt;

&lt;h2 id=&quot;an-alternative-better-response-than-supremacy-culture&quot;&gt;an alternative, better response than supremacy culture&lt;/h2&gt;

&lt;p&gt;I can hop around with different frames, as does the supremacy.&lt;sup id=&quot;fnref:frame-control&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:frame-control&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Curiosity is helpful. An ability to sometimes confidently generate a sense of peace within oneself. Mutuality and Co-creation. Opening questions. Silence. ‘tell me more about that’.&lt;/p&gt;

&lt;p&gt;There’s many, many options besides ‘characteristics of supremacy’, and it’s tricky when people reach for available power dynamics to exploit.&lt;/p&gt;

&lt;p&gt;SIIIIIIIIGH.&lt;/p&gt;

&lt;p&gt;Anyway, here’s my big ol’ list of things that relate to sadness and grief.  &lt;sup id=&quot;fnref:300-ways&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:300-ways&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;The one, single time I spent 1:1 time with my mom over the last few years she kept defending her abuse, saying things like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Your father and I tried &lt;em&gt;everything&lt;/em&gt; to make you do what we wanted, and nothing else worked! [Nothing but threatening you with sufficient emotional and bodily harm made you give us what we wanted].&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I &lt;em&gt;almost&lt;/em&gt; threw her out of my house at her unselfconscious utterance of those words. She wasn’t even angry, just matter-of-fact about it. (That changed, quickly, of course. To quickly name certain dynamics in someone else’s passive observation of something can be a pretty strongly-felt statement)&lt;/p&gt;

&lt;p&gt;Her dissociation from others is ironclad. Earlier in the day, I was questing for the possibility of establishing any authentic attuned connection, and like an expert practitioner of judo, she kept blocking and blocking and blocking, reflexively, the possibility of connection.&lt;/p&gt;

&lt;p&gt;As the conversation continued, and I kept discussing her parenting decisions, sometimes in light of observations made as I’ve been a parent myself, it became clearer and clearer she hated me then, and hates me now. “hate” is a bit strong for the emotional deadness that usually exists in the space. She’d say “i don’t hate, I feel nothing” or a vague sense of dis-ease. I don’t dignify that with a serious response, because it continues to center &lt;em&gt;as of primary import&lt;/em&gt; her non-experience of a very-bad-for-me experience.&lt;/p&gt;

&lt;p&gt;An attentive reader (or any reader?) might notice the relatedness of what I said above, and how someone might experience someone else in a sexually coercive situation, or sexual assault. There’s a needful emotional deadness + a plausible excuse for why the deadness existed.&lt;/p&gt;

&lt;p&gt;Maybe that’s why patriarchal women cannot attune to the sadness of their children. To do so might cast light on other things in their life of issue. Like,&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;if I take {specific_issue} seriously for {relationship_z}, I will also take it seriously for {relationship_h}, and {relationship_a}, and that could become Problematic, thus I’ll try to avoid it all.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Both of my parents either hated me, or tolerated me, but the ‘tolerance’ was dispensed when I was not being problematic, which &lt;em&gt;i often enough was just that&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I feel a need to mention that there’s available third-party evidence that I’m not at all times a disastrous piece of shit, which is certainly the dominant vibe I get from my parents in every conceivable way. Yet in conversation with both of them, I kept noticing the &lt;em&gt;constant&lt;/em&gt; emission of energy that rounds to either “someone who does X is fundamentally flawed” or “you do X, and are thus fundamentally flawed”.&lt;/p&gt;

&lt;p&gt;There’s a HEAVY, overwhelming lean into role compliance. Non-compliance is met with deadness, non-responsiveness, silence, skipping over, if it can be. If it cannot be, they emotionally ‘slap back’. they’ve experienced me as vastly less compliant today than I was when I lived in their house, and are both obviously shook.&lt;/p&gt;

&lt;p&gt;Also, some of you might do this kind of stuff to &lt;em&gt;yourself&lt;/em&gt;. There’s a cost to this treatment, but that cost can be lowered a heck of a lot if you can quickly name-and-witness-at-least-to-yourself the phenomena.&lt;/p&gt;

&lt;p&gt;She said over and over, her only goal for me was “to grow up successful”&lt;sup id=&quot;fnref:save-the-child&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:save-the-child&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;, which to her meant becoming a faithful evangelical/republican supremacist. Every aspect of my personhood that stood beyond my compliance with her narrow view of the world was simply flushed down the toilet. I’ve been climbing, intensively, for most of the last 20 years. She and I have never discussed my rock climbing. It’s not listed as a thing in the bible, so how could it be discussed?&lt;/p&gt;

&lt;p&gt;I have memories of her unleashing icy, cold, contemptuous judgement against me, and not a single memory of tenderness or attuned time in the same space. When I read &lt;a href=&quot;https://www.goodreads.com/book/show/43803602-they-were-her-property&quot;&gt;They Were Her Property: White Women as Slave Owners in the American South&lt;/a&gt;, lots clicked for me. I now strongly endorse this book to others as a form of bibliotherapy.  I’ve got lots of kindle notes &lt;a href=&quot;https://www.goodreads.com/book/show/14894629-the-half-has-never-been-told?ref=nav_sb_ss_1_18&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Several years ago, the last time I saw my father in person, I hadn’t the presence of mind to realize I had no desire to sit next to him for a family photo. He was pretending things were nice between us, even though obviously, &lt;em&gt;obviously&lt;/em&gt;, they were not. He decided I should be sitting closer to him than I was, for a family photo, so he did what he always does to people he views as less than/other. Instead of moving himself, or asking me to move closer to him, with his hand, he grabbed my knee &lt;em&gt;hard&lt;/em&gt; and tried to drag me closer to him. This piece of shit probably does this thing to kids all the time.&lt;/p&gt;

&lt;p&gt;If I could tell you the speed with which my hand moved to his arm, grabbed his upper arm &lt;em&gt;firmly&lt;/em&gt;, not bruisingly, and said with harshness befitting his violation of my body: “stop.”, or maybe “don’t do that”. He let go like he’d touched a hot pan. If he’d yanked again, i would have simply shoved him down the bench, out of reach of me. he felt it. i had my own kid sitting on my hip. Things were obviously not unfolding the way he’d expected. I don’t think Donald often encounters resistance to his emotional/physical bulliness, and what he experienced surprised him.&lt;/p&gt;

&lt;p&gt;Back when he used to beat me, and long after he stopped physically assaulting me (understanding that physical assault on kids is uncouth after a certain age, he went for emotional/verbal/psychological bullying), I was in a skinny, small, thin, body, and even my (no longer skinny) adult height is dozens of pounds lighter and 15 cm/6 inches shorter.&lt;/p&gt;

&lt;p&gt;I was small, bony, unmuscled, shorter person, relative plenty of my peers, growing up. I didn’t really care with my &lt;em&gt;peers&lt;/em&gt;, I wasn’t physically bullied by them, and got along with my friends fine, but my dad, he’s over six feet tall, I remember him with big hands and a pushy physicality about him, especially along side his verbal and emotional bullying. I still sometimes fantasize about beating him, I think something in my body remembering the terror and helplessness he would induce, and wishing that I &lt;em&gt;then&lt;/em&gt; had access to the same safety I have access to now. (Krav Maga, living inside my body which is also strong, an embodied physical confidence of deserving access to physical autonomy, verbal peacefulness).&lt;/p&gt;

&lt;p&gt;I could write a whole article about the last phone conversation he and I had. it was the first time we’d spoken together 1:1 on the phone in several years. I have notes from before/during/after, going into it I saw it as likely a standard template for what it’s like to talk about supremacy with supremacists, and that’s exactly what it was.&lt;/p&gt;

&lt;p&gt;He instantly moved aggressively for the control of the ‘frame’ of the conversation. He maintains the fantasy that I call alternatively ‘pro-slavery christianity’, or ‘sky daddy-ism’. He loves the ‘frame’ of ‘we are all under authority. you, me, we’re all under authority. it’s just that &lt;em&gt;that&lt;/em&gt; authority ALSO made me authority over you. convenient, eh? so, with that established, lets proceed…’&lt;/p&gt;

&lt;p&gt;He said I should &lt;em&gt;thank&lt;/em&gt; him, for his child sexual assaults, and it’s irrelevant that I have a single opinion of how he treated me then, because &lt;em&gt;it’s in the past&lt;/em&gt;, and &lt;em&gt;he did what he did&lt;/em&gt;, and &lt;em&gt;he found a book by a &lt;a href=&quot;/quotes-from-spare-the-child#from-a-section-titled-rationales&quot;&gt;eugenicist advocating child abuse&lt;/a&gt;&lt;/em&gt;, so he “was doing what experts recommended”.&lt;sup id=&quot;fnref:nuremburg-defense&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:nuremburg-defense&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;My only purpose to contacting him was to make sure he know that he had no permission to ever physically assault eden, or make jokes about adults assaulting children in her presence. I don’t get my druthers of fully excising him from the life of my kid, and it’s not worth the effort of actually trying. Most of the danger he represents to children comes from no adults in the space ever naming his behavior as abusive.&lt;/p&gt;

&lt;p&gt;So, his response, when I told him to not assault eden?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh, you misunderstand [sky daddy’s wishes]. He doesn’t wish for grandparents to assault their grandkids, he only wishes for parents to assault their kids, so i don’t have to hit your kid. that is your job.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I told him he’s a weak, fearful person for avoiding the book “The Origins of Pro-Slavery Christianity: Black and White Evangelicals in Antebellum Virginia”, because so many of his load-bearing cognitive structures are perfectly described in that book, and I resent being raised &lt;em&gt;in the house of a person espousing to a T the views of slavers&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I view Donald Thompson, Miriam Thompson, as supremacists, prototypical of any other run-of-the-mill emotionally damaged person common in the greater united states today. Their own humanity has been disregarded, by people and systems, starting as children, and they internalized the dehumanization as they aged, eventually projecting it outwards, in some ways, and inwards in other ways. Since the capacity to be a feeling, grieving human is lost to them, every part of his personality exists to paper over the holes and project a sense of togetherness, cohesiveness. The banished bad parts get put on any other definable group, and the psyche finds piece.&lt;/p&gt;

&lt;p&gt;I wish I’d never had to meet them, and instead had a real source of healthy-enough maternal and paternal energy in my life.&lt;/p&gt;

&lt;p&gt;Anyway, this is &lt;em&gt;but one of the stories&lt;/em&gt; i have flowing around my brain when I think of things of parenting, my kid, my parents, and more.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;shaming-nonresponses&quot;&gt;Shaming (non)responses&lt;/h2&gt;

&lt;p&gt;Part of why I’m even writing this section is because I’m &lt;em&gt;much less affected by this sort of response&lt;/em&gt; than I once was. I’m less affected because I can more clearly label diminishing or minimizing or dismissing responses, and be more comfortable in whatever my response is.&lt;/p&gt;

&lt;p&gt;When I’m shamed for something, it’s less likely that the other person is trying to shame me out of feeling a particular way about something, though that has certainly happened (thanks, evangelicals), but it also is the other person deploying a reflexive strategy to deal with &lt;em&gt;their own grief&lt;/em&gt;. They &lt;em&gt;shame themselves&lt;/em&gt; out of feelings of grief, as an adaptive strategy to their own formative relationships, and then deploy the same strategies on others.&lt;/p&gt;

&lt;p&gt;They don’t intend to project shame, but all forms of distraction, avoidance, dismissiveness, vs. connecting and letting the feeling breath, projects shame. :(&lt;/p&gt;

&lt;p&gt;Like I said, trying to explain a list of things that’ll traverse a lot of territory. Often enough, in American society, especially white-passing society, when someone encounters a whiff of sadness, there’s a collective disgust reflect, or shame or fear. Countermeasures are deployed, like:&lt;/p&gt;

&lt;p&gt;“oh, bummer. At least it’s better now.”&lt;/p&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;p&gt;“oh. At least it’s not worse.”&lt;/p&gt;

&lt;p&gt;I don’t think anyone’s experience is extremely unique, generally. Even my most distinctive trait (heavy scooter usage) is common-enough in the USA, and &lt;em&gt;the default&lt;/em&gt; for people of the global majority. It’s rare to ride a scooter as a white-passing person in denver/the greater united states, especially as a primary vehicle, etc etc)&lt;/p&gt;

&lt;p&gt;Possibly by writing it all down, once, or so comprehensively, I can also symbolically reclaim some of the emotional energy tied up in it all. Sometimes it feels so heavy, &lt;em&gt;or&lt;/em&gt; one piece of it feels heavy, which is ‘fine’, and then that clears up (as it always does), and then &lt;em&gt;another&lt;/em&gt; piece of it leans heavily upon me.&lt;/p&gt;

&lt;p&gt;There’s plenty more responses that telegraph some shame. Avoidance telegraphs shame, so even as I know intellectually most of these responses are driven by the persons own relationship to their own grief, &lt;em&gt;some of me is an animal with a nervous system and a good-enough response from another person goes a long ways. A good cry does nice thing&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;joshs-list-of-sadnesses&quot;&gt;Josh’s list of sadnesses&lt;/h2&gt;

&lt;p&gt;not ordered in any particular way. There’s about 50 items? I expect I could do 150 without breaking a sweat, I’ve got other hand-written lists floating around, I need to update this written document with those…&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;lots of family stuff I’m ‘sad’ over. Related to Eden, her mom, my parents, siblings, the dense fabric of relations represented by those words, contrasted with the reality of my particular situation which is that most of those relationships are slightly/severely impoverished, &lt;em&gt;obviously&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;Eden! Sadness over the sparseness of our relationship, certain dynamics in her life. (I’ve heard from some, a sentiment like “oh, well, she’s young and won’t remember much.”, as if that either 1) addresses my own sadness. I’m not so young as to not` remember this. the fuq? also, it presumes that i don’t have a meaningful-to-me relationship with my kid, because &lt;em&gt;dads don’t actually love or have real relationships with their kids&lt;/em&gt;. Also, this overall fits into the category of a ‘closing response’, so when I get it, the entire conversational space of ‘eden’ feels like it gets closed. Bummer)&lt;/li&gt;
  &lt;li&gt;Increased sense of fragility of everything. I drive through 100x more dangerous intersections in a normal week in 2025 than I did in 2020, and it feels like a respective increase in risk. I think so intensely about riding around safely, &lt;em&gt;and&lt;/em&gt; I resent how effortful it is, how dangerous the roads are, by foot, on a bicycle, a scooter, and yes, of course, the roads are outrageously dangerous in a car. I cannot help but notice when a car is pointed at me, when I’m relying on someone else’s decision making to not die. (walking a crosswalk in front of waiting cars sometimes feels like walking in front of loaded gun. “If any of these people move a limb an inch in the wrong way, I could die”. It feels like most people feel the same anxiety that I do, but dissociate from the experience a bit more than I do.)&lt;/li&gt;
  &lt;li&gt;loss of so much that represented interestingness and joy to me. Cool projects, golden, a meaningful relationship, interesting outdoor places, easy access to outdoor climbing, better but still not ideal bicycle infrastructure.&lt;/li&gt;
  &lt;li&gt;cars &amp;amp; car supremacy, the danger I clock. holding how ‘big’ the groups affected are, across time and space, &lt;em&gt;today&lt;/em&gt;, and over the last 100 years. About 1 million people in America have died “accidentally/inevitably” in car-related deaths since the November 11, 2001 blowback event that killed 3,000 people and sparked yet a new round of total, global military domination by the USA. 40,000 people a year die on american roads. pedestrian deaths ‘going up’, the spaces where there is refuge from cars are always getting smaller. I look out my window and can witness close-enough-to-injurious interactions between cars and people all the time.&lt;/li&gt;
  &lt;li&gt;the NOISE of car engines. Even on a third floor apartment, thankfully safe from a car being able to drive through my front wall or whatever, I still am not free from hearing every passing vehicle. Tire noise, engine noise, brake noise, wind noise, they are loud. During the day, and at night. Cars and motorcycles. Loud loud loud. Racing to catch a light. Honking to announce someone’s right of way. I despise it. I wear ear plugs most nights except hot winter nights where I close the windows and run air conditioning. I almost always have a window cracked, for fresh air, even when it’s very cold outside. I love apartment life! I almost never run my heat or my AC, too. Anyway, an open window and quiet indoor space means I hear everything. and I notice the cars. All of them. feels intrusive, disruptive, but it seems like many others I see IRL just… accept, cannot perceive it. I wear ear plugs a lot, and I seem to usually be distinctive in this way. I don’t know how others are not also wearing ear plugs a lot.&lt;/li&gt;
  &lt;li&gt;parking lots. omg. walking through them. the ethnic cleansing they represent. The standard pattern of downtowns with parking lots where there were once buildings is… ethnic cleansing. There was an ethnic neighborhood, the supremacists didn’t want it there, they used zoning and highways to attack the neighborhood, eventually displacing and murdering and harassing and suppressing the area. Disrepair, fabricated, at first, then real. Then the justification of parking minimums to keep non-wealthy people from being prioritized. And now there’s parking everywhere. New development, of the last few decades, is different, the buildings and lots are laid out from the beginning for parking and parking lots, and… the evil spins onwards.&lt;/li&gt;
  &lt;li&gt;past partners handling of driving, the dangers inherent within it. Multiple partners, not just one. Truly shocking levels of conflict emerge sometimes from me expressing a desire for more safety while driving. Years ago, a then-partner &lt;em&gt;almost hit me in the car they were driving while I was on my bicycle&lt;/em&gt; and got mad at me for wanting to talk about it. 💔&lt;/li&gt;
  &lt;li&gt;friends treatment of driving. Multiple friends, not just one. Not only have partners driven dangerously and fought me about it, friends have to. My orientation towards my entitlement to my own safety with a &lt;em&gt;partner&lt;/em&gt; is different than that of a friend. My friends who drive dangerously, I simply find myself spending less and less time with them. It’s sad, and I cannot prevent my own nervous system from registering the issue, eventually it becomes easier for me to simply not experience the issue.&lt;/li&gt;
  &lt;li&gt;urban renewal and thus ethnic cleansing in america, plainly visible in every way in every city. Every vista of mine during the day, of Denver, marred by the history of ethnic cleansing, the tragedy of the lives lost and lives being spent, in it. genocide is ethnic cleansing. I’m so sad, watching the evidence of this all around me. Then my (usually white-passing) friends would imply that I am deficient for not being able to dissociate from the grevousness.&lt;/li&gt;
  &lt;li&gt;supremacy and ‘whiteness’. it’s effects on others, on eden, on me.&lt;/li&gt;
  &lt;li&gt;grief-phobic people, people groups, among family, ‘community’, friends.&lt;/li&gt;
  &lt;li&gt;repeated exposure to malevolence and in-the-moment dissociation from the other party. (car drivers, at the same time aggressive and depersonalizing in their treatment of others)&lt;/li&gt;
  &lt;li&gt;betrayal and betrayal-adjacent behaviors in specific ways w/groups. parents, paternal/maternal, siblings, legally-established family, communities.&lt;/li&gt;
  &lt;li&gt;how shame spews out of some people/memes in culture&lt;/li&gt;
  &lt;li&gt;pregnancy &amp;amp; 4th trimester for K, Eden. I obv wasn’t pregnant, &lt;em&gt;and&lt;/em&gt; i felt unfairly eliminated from the emotional landscape of the whole thing.&lt;/li&gt;
  &lt;li&gt;‘death’ of many friendships&lt;/li&gt;
  &lt;li&gt;as an adult, I want to wander my environment the same way I did as a kid, and I am so outside-constrained. Every city, esp Denver. America, also beyond, so many places are so constraining in the urban environment. Bad roads function as emotional walls to cross.&lt;/li&gt;
  &lt;li&gt;I am so sad over the painful loss of relationship and friendship over the last few years, leaving family systems and religeous structures. Through little or no fault of them, many people remaining in those systems feel unavailable to me. “I’ve not changed” they might say, and correctly. I have. My heart breaks for it. My heart breaks over varieties of loss of relationship, even as it seemed to pre-break even &lt;em&gt;in&lt;/em&gt; some of those same relationships. I miss feeling safe and vulnerable at the same time. Safe enough for disinhibited self-expression. this written document stands as a version of my exercising disinhibited self-expression.&lt;/li&gt;
  &lt;li&gt;death of a friend to cancer&lt;/li&gt;
  &lt;li&gt;death of a another friend to cancer&lt;/li&gt;
  &lt;li&gt;another friend killed in a preventable avalanche incident&lt;/li&gt;
  &lt;li&gt;another friend killed in a car over-run of a road. Friend was walking, passing car drove onto sidewalk, killed her. Her partner was with her, severely injured. If there were a bollard like the ones &lt;a href=&quot;/bollards&quot;&gt;discussed here&lt;/a&gt;, instead of plastic flex posts, Lovisa would still be alive. Bollards can be installed for &lt;em&gt;free&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;the grief and burden of Witnessing mistreatment (to see something bad and fulfil the obligation of naming it as such to the parties, either the victim, or the oppressor, or both). It’s tiring.&lt;/li&gt;
  &lt;li&gt;an ocean of sadness and pain over the loss of time and experiences with Eden.&lt;/li&gt;
  &lt;li&gt;the psychological distance caused by Colefax, Park Ave, Speer, Broadway. Not even saying anything about the I-25 and I-70 highways, running of course through ethnic neighborhoods. Not every highway mile goes through an ethnic neighborhood, of course, but enough of them do. The danger and violence of the vehicles and noise and physics of existing in these space. To drive on these highways with eyes to see it is enormously emotionally painful.&lt;/li&gt;
  &lt;li&gt;people that reflexively attack their own sadness, as a [at one time reasonable] coping strategy with dehumanizing grief-phobic caretakers, and thus attack yours when it arises in the environment, even years later.&lt;/li&gt;
  &lt;li&gt;i do not personally care too much for most gender construct conversation, and am annoyed when it seems like others &lt;em&gt;do&lt;/em&gt;, or do too much. I’m usually annoyed when I get read strongly into the ‘MAN’ gender construct, usually by other people who have penises. ‘MEN’ are expected to not feel things, to not be sad, certainly to not love their children (fuck you, donald thompson) or to feel really anything at all, except dehumanization and objectification of the self and others. It’s a breath of fresh air to encounter male-passing people not traumatically socialized into the reflexive suppression of their emotional nature, but it’s certainly not an affliction exclusively born by english-speaking white-passing people with penises in the greater united states. I’m always pleased to hang with &lt;em&gt;anyone&lt;/em&gt; who has easy-enough access to their own humanity.&lt;/li&gt;
  &lt;li&gt;The book &lt;a href=&quot;https://www.goodreads.com/book/show/29434.Self_Made_Man&quot;&gt;Self-Made Man: One Woman’s Journey Into Manhood and Back Again&lt;/a&gt; does a good job of painting how strongly the emotional damage of people passing as men can be experienced by everyone. The people who consider themselves men, perhaps seemingly willingly clinging to patriarchy (I say propagandized), &lt;em&gt;and everyone they effect with their lives&lt;/em&gt;. The tl;dr of the book is thanks to skillful use of skills common in acting and theater, the author became convincingly male-passing, and could thus ‘go undercover’ in a long-term way, building relationships across time with different individual men, or groups of men. The author was harmed, in the same way that you or I would be harmed doing a long investigation into an area where pollution was being spewed into the environment.&lt;/li&gt;
  &lt;li&gt;I have, in my family, multiple doctors, a therapist, a psychiatrist, many different versions and flavors of these types of people. My dad is a doctor, and we heard about it &lt;em&gt;constantly&lt;/em&gt;. Most of these people I have no special respect for. I have very low regard for american psychiatry. That low regard is partially informed by  &lt;em&gt;most&lt;/em&gt; modern psychiatrists seeming to not know the supremacist origin of american psychiatry, which gave us things like the concept of ‘mental illness’, for not being sufficiently conformed to supremacists ideals. Go read the description for &lt;a href=&quot;https://en.wikipedia.org/wiki/Drapetomania&quot;&gt;drapetomania&lt;/a&gt;, and meditate on how these sorts of people would go on to create the Diagnostic and Statistical Manual (DSM 1). The DSM 1 is such an abhorrent document, it feels self-abandoning to fantasize that anything downstream of it could be credible.&lt;/li&gt;
  &lt;li&gt;i keep appreciating the new, visible, sad ways it manifests that my parents have hated me. (They would feign love towards me if I’d adhered to the pro-slavery christianity cult I was raised in, the patriarchy, nationalism, support of the state of the greater united states. Even when I participated in those systems, fully, I recount confidently the vibe that they hated me. It was simply slightly hidden behind the lie of ‘we all love each other and you’re doing what we think you ought so we give you fake affection!’)&lt;/li&gt;
  &lt;li&gt;a regrettable number of times, key people in my life have attacked me for looking sad. (this happened in distant memory, from my parents, and much more poignantly, this happened during the end of my marriage, and indeed is part of why the marriage ended. I was tolerated when I performed mood-lifting for others, and utterly rejected when my mood was not deemed sufficiently ‘good enough’). As a in-the-moment useful coping mechanism, I can now ‘manage’ and hide my sadness, so, so well. It feels like this now gets unintentionally activated or used, by others, because it arises in me easily, now.&lt;/li&gt;
  &lt;li&gt;I tried all the steps of &lt;a href=&quot;https://www.goodreads.com/book/show/149033.Exit_Voice_and_Loyalty&quot;&gt;Exit, Voice, and Loyalty: Responses to Decline in Firms, Organizations, and States&lt;/a&gt; with them. First loyalty, and I got abuse and torture. Then voice, and I got more punishment, abuse. Then exit, got me pretend peace, because “strong-willed Josh was finally out of the house”. Now I’m back to voice, and get more shunning and avoidance.&lt;/li&gt;
  &lt;li&gt;I’ve always been quick to defect and undermine the control being dropped on me, heavily. the first time I read about &lt;a href=&quot;https://harpers.org/archive/2012/12/anarchist-calisthenics/&quot;&gt;anarchist calisthenics&lt;/a&gt; I thought “oh, easy, I’m already well-practiced at routine, small acts of non-compliance with abusive totalitarian systems! 
1.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Many people, even sometimes myself, are grief phobic, and thus reflexively, instinctively, push away all evidences of grief.&lt;/p&gt;

&lt;p&gt;So, I’ve had experiences of crying, hard, alone, and crying gently, to my self, in the company of others, and overall hiding it from them, AND I HATE THIS! Sometimes the best thing for a nervous system is a good cry, and a good accepting hug.&lt;/p&gt;

&lt;p&gt;I’ve received “what is wrong with you?” or “have you considered medication?” as a normal response to sadness. It hurts to feel disgust pointed at me, for being affected by something, to the point of tears.&lt;/p&gt;

&lt;p&gt;I’ve felt the loss of connection to my own grieving and angering, as I so often avoid perturbing others with the upset that would be experienced by me or them, witnessing my sadness.&lt;/p&gt;

&lt;p&gt;In about a year, i went from thinking I had four good-enough parent figures (two parents, by blood, two parents by marriage). Then, some death via heart attack, and the remaining three quickly evidenced their incompetence and abandonment, and I sadly appreciated that I actually had &lt;em&gt;zero&lt;/em&gt; good-enough parent figures.&lt;/p&gt;

&lt;p&gt;As I became a parent myself, hope after hope dashed itself against the rocks of the supremacy and emotional immaturity of those people. I got shunned, pushed aside. My parents often made jokes about how discardable I was: “I could kill you and make another one like you.”, and more&lt;/p&gt;

&lt;p&gt;Part of my anger &lt;em&gt;today&lt;/em&gt;, is fully rooted in things of the past, and in the context of the relationship with my parents could be fully addressed and resolved, &lt;em&gt;except they’re continuing today exactly the same bad things they did in the past&lt;/em&gt;, thus there’s a second layer of anger piled on top. I wouldn’t imagine entertaining the idea of something like ‘forgiveness’ or ‘a repaired relationship’ without&lt;/p&gt;

&lt;p&gt;I can only guess how my parents feel about my divorce - neither of them have ever mentioned it, and both seem to studiously avoid me, so I suspect I’ve committed the Greatest Sin in their mind (a divorce), and nothing else matters to them. They’ve never spoken to me &lt;em&gt;about my own child&lt;/em&gt;. I have never spoken about parenting, with my parents, in an emotionally regulated way. Perhaps they know that their own parenting was such an abomination there is no point in discussing it with me. All they did was emotionally and physically abuse and neglect me, while my dad was &lt;em&gt;completely absent&lt;/em&gt; from the house, giving his entire life over to work, or the church. When he was at home, he was in his office working, continuously. Never once carved a shred of affection and tossed it my way. I experienced my own father as exclusively consumed by himself, or exclusively disappointed in me, disgusted by me.&lt;/p&gt;

&lt;h2 id=&quot;automobile-supremacy--grief&quot;&gt;automobile supremacy &amp;amp; grief&lt;/h2&gt;

&lt;p&gt;I feel sad that nearly every one of my friendships is mediated by the car dependency common to the greater united states. I don’t have a car, and nearly every single one of my friends has a car and is fully dependent upon it. I want to meet someone in a park? I have few friends that live within walking distance of the park I want to meet at, and so they spend forever driving their car around, finding parking, walking from the parking to the destination, and then however the day unfolds, they have to return to where they parked their car, to move it again.&lt;/p&gt;

&lt;p&gt;I’ve had relationships end, in part, because my partner refused to drive gently in the car. I despise being stuck in a car being driven dangerously, and even now when I go places with friends I weigh asking them to sometimes modify their behavior (hey, there’s .75 seconds of stopping distance between you and the car in front of you, and we’re going 60 mph, could we get a little more stopping distance?)&lt;/p&gt;

&lt;p&gt;highways, literal highways, now separate me from eden. Not just miles, and distance, but the spiritual/psychological distance of the highway. Tragedy, for all of us.&lt;/p&gt;

&lt;p&gt;I feel the weight of slavery, family destruction, I’m re-saddened over the violence, the experience.&lt;/p&gt;

&lt;p&gt;If one models police as deputized slave patrollers, one models “no-knock drug raids” as state-sponsored night-riding. It’s simply terrorism and supremacy. Unlike reconstruction-era night riding, when it’s modern policing, all the night riders are getting paid! What a nice arrangement one would set up for themselves, if they wanted to maintain the racial caste system that is white america.&lt;/p&gt;

&lt;p&gt;Police riding around with sirens?&lt;/p&gt;

&lt;p&gt;Casual emotional neglect in friendships, partnerships, familial relationships. I don’t miss emotional bids for connection, usually, and it’s hard being around people who discard emotional bids for connection. I’ve found voicelessness, within me, disempowerment. A sense of ‘asking for change might cause the relationship to end’.&lt;/p&gt;

&lt;p&gt;I deserve to ask for things, so I’ll ask for change, but the number of times this has led to the end of relationships for me &lt;em&gt;has me feeling weight of grief and loss&lt;/em&gt;, and increases my sense of fear around asking for change. :(&lt;/p&gt;

&lt;p&gt;and I have to fawn my way through the interaction, because if I ask directly and they say no, that’s awkward as fuck, and can rapidly become quite uncomfortable to me. I asked one friend to slow down, and he &lt;em&gt;started arguing with me that my risk perception was bunk, and because he has great reflexes we’re actually completely safe.&lt;/em&gt; Another friend said &lt;em&gt;he had great car insurance so if he got in a car accident he’d just get a new car&lt;/em&gt;. I never drove with the latter friend again.&lt;/p&gt;

&lt;p&gt;I’ve only infrequently driven with the former friend since, and eventually heard me asking him to drive slower, and once he heard it in that way, he changed his behavior.&lt;/p&gt;

&lt;p&gt;When I say&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I feel uncomfortable&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I &lt;em&gt;feel&lt;/em&gt; that the risk of &lt;em&gt;a bad outcome&lt;/em&gt; is unnecessarily elevated because of X, Y, and Z, could we discuss ameliorating it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’d rather not be told “your feelings are wrong”. That’s dismissiveness, defensiveness, and damages the relationship. Certainly is not in line with relational flourishing.&lt;/p&gt;

&lt;p&gt;I have so often found myself drawn into what ends up feeling like an &lt;em&gt;argument&lt;/em&gt; because the other person acts more threatened by my POV of something than the risk I’m trying to collaborate on, and so much relational damage ensues.&lt;/p&gt;

&lt;h3 id=&quot;a-small-instance-of-someone-saying-i-do-not-like-that-treatment&quot;&gt;A small instance of someone saying ‘i do not like that treatment’…&lt;/h3&gt;

&lt;p&gt;… and how I responded&lt;/p&gt;

&lt;p&gt;When Eden says “i don’t like X”, I say “oh, thanks for telling me” and then I check in a few times subsequently to make sure it’s all good. There was a time she felt I was laughing at her in some situations. I was indeed laughing sometimes when she did something, and she was experiencing it as me laughing &lt;em&gt;at&lt;/em&gt; her. I saw it in her face and disposition, and the emotional energy when she said “dont laugh at me!”&lt;/p&gt;

&lt;p&gt;I’ve been laughed at, mocked, criticized by people who think it’s fun to say hurtful things to others, and don’t care that it hurts me. Many family stories I grew up with rounded to “our family (mostly the patriarch donald) mocks Josh because he is sensitive, and ‘men’ are not sensitive, so we’ll bully him into manliness.”, and lots of other mocking behaviors.&lt;/p&gt;

&lt;p&gt;I hated this experience. So, when eden says “don’t laugh at me!” I didn’t fight her on if I &lt;em&gt;was&lt;/em&gt; laughing at her. I said “my gosh, I don’t want you to feel laughed at by me. I have memories of some versions of something similar, I can easily sort this, thanks for telling me.”&lt;/p&gt;

&lt;p&gt;I told her what my plan was: I wrote a sign to myself and taped it up in the kitchen:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;josh,
do not laugh at Eden&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;josh&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;And I told her “going forward, please tell me again if/when you feel laughed at, &lt;em&gt;thank you&lt;/em&gt; for telling me already, i’ll check in on this a few times over the next few days”.&lt;/p&gt;

&lt;p&gt;I stopped laughing at her, including sometimes refraining from laughing in a situation that &lt;em&gt;I&lt;/em&gt; knew I wasn’t teasing her, but I didn’t want her to think she was being teased. I don’t know how other people do/don’t handle her desire to not be laughed at. I’m not going to accidentally be like them.&lt;/p&gt;

&lt;p&gt;of course, humor is not gone, in any way shape or form. sometimes when I would laugh with her (in response to her sometimes doing funny things, saying clever things, being funny) I’d make sure we were both seeing it the same.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Eden, a moment ago when I laughed, I was laughing because {x}, and I think you found it funny too. Was that all okay with you?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;she’s since validated several different times that the issue she clocked is resolved, to her satisfaction.&lt;/p&gt;

&lt;p&gt;I did &lt;em&gt;not&lt;/em&gt; tell her: “I didn’t INTEND to hurt you, I was simply laughing because it was funny, don’t worry about it, don’t be upset by it. It’s how I show love.”&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Further emotional abandonment from siblings, which I also assess as the partial responsibility of my parents. They set us all up for gross failure. Once when I said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Gosh, I’m sad over the current absence in my life represented by my supremacist, propagandized/propagandizing father&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A family member (who I think blames me for my relational ‘difficulties’ with my parents, rather than saying ‘the current relationship is a good reflection of the relationship they built with you’) responded:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Well, what would he do that’s nice for you anyway?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Implying, perhaps:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;what possible difference could you be experiencing in your current life if instead of an abusive, assaulting, bullying father, you had an emotionally attuned father who occasionally embodied healthy paternal and maternal energies?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;what a thing to think and say. supremacy needs gender essentialism (patriarchy) and patriarchy proclaims the message that people with penises have no emotional nature, and I am sometimes angered, or saddened, or both, to encounter people who &lt;em&gt;think&lt;/em&gt; they’re not ruined by patriarchy, playing the same tired message upon me. I no longer am surprised to run into overwhelming patriarchal energy from people with vulvas. I’ve been (ineffectively) critizied by supremacists with penises who have sometimes told me, as if revealing a shameful truth about me, that I have a feminine communication style.&lt;/p&gt;

&lt;p&gt;This is why I get a blank face in response to grief and sadness so often by these people. I cut outside of the proscribed “rule” of emotional suppression, and someone else’s brain sorta fuzzes out when they witness it, until the moment has passed.&lt;/p&gt;

&lt;p&gt;If I am experiencing sadness, and I see the other person with a blank face, I reflexively move away from my own sadness, because if they started &lt;em&gt;assaulting me for my sadness&lt;/em&gt; I’d be even more unhappy. I am simply pissed that these people then proclaim that because &lt;em&gt;they&lt;/em&gt; experience nice things in the relationship with me, it must be healthy for both of us.&lt;/p&gt;

&lt;p&gt;When everyone is committed to the cult, it’s hard to access a sense of aliveness in anyone’s soul. Platitudes abound.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;relational-interdependence-is-impossible-with-supremacists&quot;&gt;Relational interdependence is impossible with supremacists&lt;/h2&gt;

&lt;p&gt;My view of relationships has always been that we are influenced by the people around us, their positive or negative regard towards us. Because of that interdependence, it’s reasonable for us to all be mindful of how we hold our loved ones, in our own minds, or in the shared words/ideas that fill the space of relationship. Like, if you’re dear to me, I’ll try to tell you as such and reflect to you the things that I find distinctive, interesting, laudable, appreciable, about you.&lt;/p&gt;

&lt;p&gt;When dealing with evangelicals, in particular, I began to note that even as I pointed the above energy towards my loved ones, they reflected back to me not anything distinctive &lt;em&gt;about me&lt;/em&gt;, but only things that they thought were laudable that &lt;em&gt;emitted from me playing the role they wanted me to play&lt;/em&gt;. (example: my mom’s favorite thing to talk to me about was what I was reading in the bible, not anything real about my life)&lt;/p&gt;

&lt;p&gt;next, lets talk about parental coercion towards kids, and the way parents like this used alternatively emotional/verbal/physical assault and emotional warmth as a stick, and carrot, to farm from kids desired behaviors. this is called operant conditioning, and it sorta stinks, yet it’s everywhere. It’s dehumanizing.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I will hurt you unless you do what I want&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;is not so different from:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I will dispense rewards for you giving me what I want&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So we ought to be as sensitive to the latter energy as the former.&lt;/p&gt;

&lt;h3 id=&quot;josh-have-you-considered-that-youre-choosing-sadness&quot;&gt;josh, have you considered that you’re choosing sadness?&lt;/h3&gt;

&lt;p&gt;Based on other books, like ‘the courage to be disliked’&lt;/p&gt;

&lt;p&gt;a line of reasoning, could be followed:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I think josh is choosing sadness. The sadness and resulting frozenness (‘depression’) is helpful to josh, it gives him something he wants and needs&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;OOOOH I am 100% ‘choosing’ depression and unhappiness and sadness. I’ll explain why:&lt;/p&gt;

&lt;p&gt;First, I’ve had some horrible experiences of disinhibited self-expression, along many dimensions. Intimate partnerships, marriage, family. Expressing hopes, joys, sadness, all has often enough led to emotional devestation. “depression” is a good way to avoid some of those bad things happening again.&lt;/p&gt;

&lt;p&gt;when I make the kinds of moves I made when i was happy, I kept triggering the disgust response from people close to me. My then-partner, friends, church friends, others. Or a profoundly blank face. The disgust was when I brought up issues with zoning and land use norms in the USA, that are crippling all of us. I kept unintentionally maligning something core to how they were (evangelicalism, patriarchy, car-normalized culture, militarism, violence, dismissiveness of the other) and often-enough they would want to control me/the conversation to achieve emotional comfort.&lt;/p&gt;

&lt;p&gt;To achieve relational comfort, I chose strategies that accomplished safety, which could look like sadness, depression, stuckness. The happy, ageiatic version of me kept running afoul of people near to me. Bummer.&lt;/p&gt;

&lt;p&gt;or “sadness is instrumental” in the same way that any form of hiding is instrumental.&lt;/p&gt;

&lt;h2 id=&quot;bibliotherapy&quot;&gt;bibliotherapy&lt;/h2&gt;

&lt;p&gt;Here’s some of the books that have helped me, over the last few years. Some themese weave together in interesting ways.&lt;/p&gt;

&lt;p&gt;For instance, what’s it like to be colonized by american supremacists? I strongly suggest reading &lt;a href=&quot;https://www.goodreads.com/book/show/1722444.Aloha_Betrayed&quot;&gt;Aloha Betrayed: Native Hawaiian Resistance to American Colonialism&lt;/a&gt;, with special attention given to the experience with american missionaries. Both of my parents spent their entire lives fully participating in colonial missions around the world.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;recovering a capacity to grieve. I don’t agree with everything in this book, and found it enormously helpful &lt;a href=&quot;https://www.goodreads.com/book/show/1136530.The_Tao_of_Fully_Feeling?from_search=true&amp;amp;from_srp=true&amp;amp;qid=vU5yN8OHw9&amp;amp;rank=1&quot;&gt;The Tao of Fully Feeling&lt;/a&gt;. I learned only recently that Spotify has quite a lot of books on it - turns out this book is available on Spotify, so I gave it a re-read/listen recently. It’s helpful, logical, friendly. The author (and anyone else) loses a little of my appreciation whenever speaking positively of Alcoholics Anonymous or any sort of 12-step program. I strongly dislike those sorts of groups. Most other parts of the book were helpful to me.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/20556323-complex-ptsd&quot;&gt;Complex PTSD: From Surviving to Thriving&lt;/a&gt;, also by pete walker, is v helpful.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/23129659-adult-children-of-emotionally-immature-parents&quot;&gt;Adult Children of Emotionally Immature Parents&lt;/a&gt;. Dang. So good. Talks about the deep, aching emotional loneliness that comes from being ‘stuck’ on emotionally vaccuous subjects and people.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/41725763-how-to-hide-an-empire&quot;&gt;How to Hide an Empire: A History of the Greater United States&lt;/a&gt; The delusion of the people of the greater united states of ‘political authority’ and the way those entitlements play out on the world is very similar to ‘emotional immaturity’ and ‘verbal abuse’. The cost is infiniately high. I weep when I read books like this. This book is also why I will never vote again. Native people cannot vote. Imprisoned people cannot vote. Colonized people cannot vote. You know who can vote? The tiny group already almost certainly in favor of more colonialism, so the sytem gets what it wants. More colonialism.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/402366.The_Verbally_Abusive_Relationship?ref=nav_sb_ss_1_20&quot;&gt;The Verbally Abusive Relationship: How to Recognize It and How To Respond&lt;/a&gt; what a bummer of a book to read, and so damn useful. I’d say it’s worth the read even if you’re not remotely questioning your own key relationships. Reading this book gave new color to my relationship with my own parents, and sparked lots of interesting conversations with peers about their relationships with &lt;em&gt;their&lt;/em&gt; parents. Turns out lots of parents, because they feel entitled to control their children, make casual, routine use of verbally and emotionally abusive behaviors, to accomplish that control. Bummer, eh?&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/53260224-white-tears-brown-scars&quot;&gt;White Tears/Brown Scars: How White Feminism Betrays Women of Color&lt;/a&gt; I just finished this book, exceptional. I’d note that “white tears” is how miriam usually responds to my occasional questing along the lines of this post, the thing I wrote about evangelicalism (her… mental dis-ease-dampener of choice?). What I observe is first a loss of attunement, or maybe a never-achieved-sense-of-attunement, and then I’d be clocking many signs of dissociation, in her mannerisms. The physicality of someone trying desperately to look like they’re relaxed when they’re really not relaxed. Totally fine, by the way, these are not easy conversations, I too sometimes do a little box breathing or grounding exercise, or try to shift the topic and attention to something else, so the system can settle back down to peacefulness. (Frisbee! Look at that thing we can both see since we’re out on a walk together!) With someone like miriam, there is no settling or peacefulness. no progress. no connection.&lt;/li&gt;
  &lt;li&gt;When I watched &lt;em&gt;Devil in the Family: The Fall of Ruby Franke&lt;/em&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=TdshoT-K7nQ&quot;&gt;trailer&lt;/a&gt; I felt so much familiarity with my experiences with my own mother. Do you see how she operates fully emotionally alone, continuousy, coercing her kids, keeping up a front. Often, my mom (and not just my mom) would&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyway, I now have to think that when the supremacist is feeling overwhelmed, they’re not mindfully staying in a difficult state for the sake of an improved outcome, they’re dissociating from the experience and thus not able to hear you. Then, when you do something so provocative like “So, what do you think about this? What are you hearing me say? Whats coming up for you as you hear it?” it feels like being put on a stage, or being given a test.&lt;/p&gt;

&lt;p&gt;(I’ve heard “i just cannot say the right thing to you and that’s why I don’t want to talk about this” so many times). It’s that &lt;em&gt;i am no longer accepting appeals to authority to dismissiveness towards me&lt;/em&gt; so, if all someone has is dismissiveness or appleas to authority, for instance, their experience of me is indeed “i just cannot say the right thing to josh”. I simply disagree with their frame. &lt;a href=&quot;&quot;&gt;link to frame control piece? it’s still a draft&lt;/a&gt;. The collapse from that is to just start sobbing, playing the ‘damsel in distress’ trope. Tears are fine, natural, healthy, please note where in this piece about my own tears I’m putting commentary on someone else’s. When this pattern plays out repeatedly, every time I press her directly on supremacy, I cannot help but clock it. Especially having just read &lt;a href=&quot;https://www.goodreads.com/book/show/53260224-white-tears-brown-scars&quot;&gt;White Tears/Brown Scars&lt;/a&gt;. &lt;a href=&quot;https://www.goodreads.com/notes/53921838-white-tears-brown-scars/27372191-josh-thompson?ref=abp&quot;&gt;Here’s my notes/highlights from the book&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I view my parents as colonizing powers, where “the mind and body of male child #1” was just one part of the colonized territory. Part of what caused me to realize they treated me as colonizers treated the lands and people they violenced against, was as I heard stories of resistence to colonizers, and found so much I resonated with, in my own emotional disposition towards them. Like &lt;a href=&quot;https://www.goodreads.com/book/show/1722444.Aloha_Betrayed&quot;&gt;Aloha Betrayed: Native Hawaiian Resistance to American Colonialism&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, my parents responses to me all perfectly fit the script for ‘colonial powers responses of their victims’, which is also the abuser’s syllogism:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I didn’t hurt you. And if I did, I didn’t intend to. If I did intend it, you deserved it. If you didn’t deserve it, it wasn’t that bad.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, I keep naming dynamics in the conversation, sometimes, and that feels quite uncomfortable for people like my parents. They make appeals to authority, I say “That’s an appeal to authority; I continue to evaluate you as the ultimate responsible person for your decisions.”&lt;/p&gt;

&lt;p&gt;Here’s a &lt;a href=&quot;https://www.goodreads.com/notes/53921838-white-tears-brown-scars/27372191-josh-thompson/978e755b-5d5f-444e-925b-6838134c5e38?ref=rnlp&quot;&gt;particularly interesting quote&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The concept of whiteness and racism as a form of pathological narcissism that manifests in some individual white people has a long research history. In 1980, Carl Bell, a clinical psychiatrist and professor of psychiatry, outlined how the hallmark symptoms associated with narcissistic personality disorder, such as grandiosity, entitlement, and lack of empathy, apply to individual racists. More recently, in 2016, assistant professor of education Cheryl Matias described whiteness as narcissistic because its emotional nature insists on positioning itself as the center of the discourse, “especially when one is trying to push it to the margins.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another &lt;a href=&quot;https://www.goodreads.com/notes/53921838-white-tears-brown-scars/27372191-josh-thompson/c985bb05-5e75-4da0-beb2-6514949fa449?ref=rnlp&quot;&gt;quote&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Strategic White Womanhood is a spectacle that permits the actual issue at hand to take a back seat to the emotions of the white woman, with the convenient effect that the status quo continues unabated. White women’s tears are fundamental to the success of whiteness. Their distress is a weapon that prevents people of color from being able to assert themselves or to effectively challenge white racism and alter the fundamental inequalities built into the system.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this case, the person trying to assert himself against her is someone who was once a kid, not a person of color, but the diminishment that supremacism applies to the non-supremacist groups it creates is constant, across class (“child”) and ethnicity.&lt;/p&gt;

&lt;h2 id=&quot;even-more-books&quot;&gt;Even more books&lt;/h2&gt;

&lt;p&gt;In the last few years, I’ve read books like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/61676927-i-saw-death-coming&quot;&gt;I Saw Death Coming: A History of Terror and Survival in the War against Reconstruction&lt;/a&gt;. Brutal. The terror and misery surrounding reconstruction, slavery. I cried so often reading this. &lt;a href=&quot;https://www.goodreads.com/notes/61676927-i-saw-death-coming/27372191-josh-thompson?ref=abp&quot;&gt;I highlighted many sections via my kindle&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/14894629-the-half-has-never-been-told?ref=nav_sb_ss_1_18&quot;&gt;The Half Has Never Been Told: Slavery and the Making of American Capitalism&lt;/a&gt; this was an audiobook I got via the library/libby app, so no kindle highlights.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/43803602-they-were-her-property&quot;&gt;They Were Her Property: White Women as Slave Owners in the American South&lt;/a&gt; Got lots of kindle notes &lt;a href=&quot;https://www.goodreads.com/book/show/14894629-the-half-has-never-been-told?ref=nav_sb_ss_1_18&quot;&gt;here&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/53498439-the-new-jim-crow&quot;&gt;The New Jim Crow: Mass Incarceration in the Age of Colorblindness&lt;/a&gt; here’s &lt;a href=&quot;https://www.goodreads.com/notes/53498439-the-new-jim-crow/27372191-josh-thompson?ref=abp&quot;&gt;some of my kindle highlights&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition&quot;&gt;The Most Dangerous Superstition&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/43459593-fearing-the-black-body&quot;&gt;Fearing the Black Body: The Racial Origins of Fat Phobia&lt;/a&gt; the male/female coded ‘beauty standards’ are directly eugenicist! Huzzah, read this book, decolonize a bit more of your sense of self.&lt;sup id=&quot;fnref:witness&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:witness&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/201736852-killers-of-the-flower-moon&quot;&gt;Killers of the Flower Moon: The Osage Murders and the Birth of the FBI&lt;/a&gt; “what kind of things are settler colonialists willing to do, to get what they think they’re entitled to, Josh?” Great question. For an example of how even a single group believing in the fantasy of (political) authority ruins generations and continents regions and peoples, look no farther than this book. &lt;a href=&quot;https://www.goodreads.com/notes/201736852-killers-of-the-flower-moon/27372191-josh-thompson?ref=abp&quot;&gt;here’s my kindle notes&lt;/a&gt; Remember, some of us have these kinds of people &lt;em&gt;as parents&lt;/em&gt;. 🤮 What should we do about it? “Sorry, world, for my supremacist parent” is a bit of parentification (of the kid) even as it’s a truthfully expressed sentiment.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/8236315-the-origins-of-proslavery-christianity&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt; I reference this everywhere, it’s the most useful conceptual compression of evangelicalism. Everyone is a propagandized participant, wittingly or unwittingly complicit with the strongest themes of supremacy in America. &lt;a href=&quot;https://www.goodreads.com/notes/8236315-the-origins-of-proslavery-christianity/27372191-josh-thompson?ref=abp&quot;&gt;My notes here&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/50641301-the-jakarta-method&quot;&gt;The Jakarta Method: Washington’s Anticommunist Crusade and the Mass Murder Program that Shaped Our World&lt;/a&gt; I was raised by a certified colonizer - he worked in the pentagon and willingly participated in the war efforts of the greater usa, I was raised hearing some of these stories, told in a &lt;em&gt;reverential&lt;/em&gt;, proud way. &lt;a href=&quot;https://www.goodreads.com/notes/50641301-the-jakarta-method/27372191-josh-thompson?ref=abp&quot;&gt;here’s my notes&lt;/a&gt;. The damage to one’s emotional sense of self, ones sense of inherent dignity or worth, in being exposed to this kind of energy, is not trivial. of &lt;em&gt;course&lt;/em&gt; colonialists are willing to murder their own kids, or soul-murder them, they are willing to stampede around the world murdering any number of others. What’s one more? willingly soul-murdering your own kid shows your commitment to the cause. Sorta the cost of entry to the club.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/29363252-conflict-is-not-abuse&quot;&gt;Conflict Is Not Abuse: Overstating Harm, Community Responsibility, and the Duty of Repair&lt;/a&gt; this is one of the best, and I read this book early in the process of ending my marriage and exiting evangelicalism. I began to appreciate how others were responding to conflict that was arising as if I were abusing them. My mother, when I asked why she refused to read something I wrote, said “it is hard to see your children walk away from how they were raised”, as if I was harming her by writing, rather than writing about &lt;em&gt;her harming me&lt;/em&gt; and that being my attempt to resolve the issue &lt;em&gt;today&lt;/em&gt;. So, read that book, and then go create conflict with supremacists, and expect them to claim that you’re abusing them, when you’re not treating them according to the role they fancy themselves to have, and the role they fancy you to have.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;h2 id=&quot;not-yet-integrated-loose-notes-categorize-the-above-list-before-randomly-adding-these-entries&quot;&gt;not-yet-integrated loose notes, categorize the above list before randomly adding these entries:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;ongoing devestating harm of ‘car-dependent culture’, which even that frame is dismissive of the reality. a supremacist ideal, a regime of social control, is represented by ‘single family housing’ on one side, and the requisite zoning regime, and the highwaymen (rubber, asphalt, petroleum. you know, gdp stuff). &lt;a href=&quot;https://www.goodreads.com/book/show/2023854.The_Slaughter_of_Cities?from_search=true&amp;amp;from_srp=true&amp;amp;qid=KQCmhYgxme&amp;amp;rank=1&quot;&gt;urban renewal as ethnic cleansing&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;the greatest threat to my and eden’s ongoing wellness is the possibility of getting crushed by a car for whatever reason, on our day-to-day. The other main risks are &lt;em&gt;related&lt;/em&gt; to car-dependent, car-propagandized american culture. &lt;em&gt;taps sign&lt;/em&gt; &lt;em&gt;40,000 people killed on american roads, not evenly distributed in anyway, by appreciating this it can be fixed&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;all the sadness of less social time w/friends, bc of how much spiritual/psychological/time/risk/hassle exists for anyone to get in the same physical location, if it’s in america, regardless of the distribution of car users.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I don’t have a car, often-enough wish at times that I did. My scooter works &lt;em&gt;so well&lt;/em&gt; and is such an improvement on a car, and I still wish I had a Toyota Sienna, which I’ll purchase whenever I next find myself obtaining a vehicle.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;even when I’m just walking to cheesman, I have to cheat death repeatedly crossing Franklin, Colefax, 14th, 13th. I have plenty of valid beef w/supremacy culture materialized in cars proliferating like cancer or girrardia.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;sadness that fire department is not part of the solution to improving their domain. (I visited local fire department today, chatted w/Tom Ford, the person in charge and a few others. It was an odd vibe.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;my parent’s routine use of silent treatment as punishment. Kid josh was so damn relational (adult josh is too) that depriving me of interaction, affection, warmth, while still in the same physical place, was such a shocking betrayal. I’d get upset and sent to my room or grounded, abandoned, said “you are not welcome here unless you’re putting on a fake face” and we’ll hurt you until you do.&lt;/li&gt;
  &lt;li&gt;I experienced few opportunities of ‘disinhibeted self-expression’ until I’d fully left the toxic family/religeous situation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;a-kids-addendum&quot;&gt;A kid’s addendum&lt;/h3&gt;

&lt;p&gt;My kid has a few things that bum her out. I live within walking distance of several parks, several libraries, a botanic gardens, three climbing gyms, grocery stores, and more.&lt;/p&gt;

&lt;p&gt;Some of these are &lt;em&gt;long&lt;/em&gt; walks. My favorite climbing gym for ropes is a 7 mile round-trip walk. 3.5 miles each way. Totally doable, but not something I relsh doing &lt;em&gt;often&lt;/em&gt;. I usually ride my scooter, of course, but with Eden have done much more walking than I’d do without.&lt;/p&gt;

&lt;p&gt;It’s tons of fun to load up her jogger, and chain trips together. The park, a friend’s house, the gym, another friend’s house on the way back, etc. We can have a super fun trip.&lt;/p&gt;

&lt;p&gt;Walking at night is particularly challenging, as cars have wildly bright headlights, especially the LED lights.&lt;/p&gt;

&lt;p&gt;Eden says “I don’t like it when the cars eyes look into my eyes”&lt;/p&gt;

&lt;p&gt;She’s three feet tall - the car headlights are blinding, a stunning amount of pollution, sometimes travelling hundreds and hundreds of meters.&lt;/p&gt;

&lt;p&gt;She also sometimes says about some trips “The walk is too big”.&lt;/p&gt;

&lt;p&gt;If we could subtract from the walk, all the distance that exists explicitly for cars, these walks would all be dramatically shorter. I estimate 1/2 the distance, conservatively.&lt;/p&gt;

&lt;p&gt;Land utilization is terrible when it’s allocated to vehicles. Of course, that was the point in america - urban renewal as ethnic cleansing. Supremcists WANTED to have parking lots and wide, dangerous streets instead of lively neighborhoods. They went hard in the 1950s, 1960s, 1970s, and less hard since then, but we are all living amongs the rubble of their slow dismantelling of society.&lt;/p&gt;

&lt;p&gt;American cities destroying neighborhoods via ‘urban renewal’ is very, very similar to what people in Israel (with the support of people in America) are doing to the people in Palestine. The bulldozers rumbling around, tearing things down. &lt;a href=&quot;/robert-moses#a-sense-of-scale---the-cross-bronx-expressway&quot;&gt;Look at the photos of where Robert Moses destroyed neighborhoods for the ‘cross bronx expressway’&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Devestation reigns.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:kink&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Is not “patriarchy kink” not a brilliant phrase? I did not come up with it. Nor did I originate ‘sky daddyism’, and found it to also be worth a few giggles. &lt;a href=&quot;#fnref:kink&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:frame-control&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;TODO finish draft, publish “frame control”, it’s inherently coercive to ‘force’ someone else into “your frame”, it’s inherently mutual to follow someone else into “their frame”, for their best understanding of the dynamic. &lt;a href=&quot;https://knowingless.com/2021/11/27/frame-control/&quot;&gt;https://knowingless.com/2021/11/27/frame-control/&lt;/a&gt;. For an explanation and origin of the willingness to enslave and colonize: &lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity#&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt;. I view a belief in authority now as an dangerous superstition, if it mattered to you to keep an appreciation for the figure of Jesus Christ, as one drop-kicks the rest of the structures to the curb, &lt;a href=&quot;&quot;&gt;the politics of jesus post&lt;/a&gt;, but its not necessary. to treat others gently, one needs, &lt;em&gt;needs&lt;/em&gt; to re-access treating oneself gently. I suggested to one friend that they “fire their inner cop”, someone else I pointed out that if they called someone else a fraction of what “they” called themselves, we’d all be horrified. Pete walker calls it ‘the toxic inner critic’, or the internalized voice of a parent, usually or some other caretaking figure who used shame and punishment and coercion to bully others. &lt;a href=&quot;#fnref:frame-control&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:300-ways&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Years ago, I encountered this list of &lt;a href=&quot;https://elodes.substack.com/p/three-hundred-ways-it-can-hurt-to&quot;&gt;300 ways it can hurt to be a man&lt;/a&gt;, and certainly appreciated some of them, and appreciated the impressive number. perhaps it could also be called ‘300 ways it can hurt to be a man inside of american/western/supremacist culture’ &lt;a href=&quot;#fnref:300-ways&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:save-the-child&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;What is her definition of successful? Of course talking directly with her about it involves lots of thought-stopping cliches, but it rounds to the standard toolkit of ‘evangelical religious authoritarianism’ which is a regime of apocalyptic social control? is that too strong? Read some of my notes/quotes from &lt;a href=&quot;/hitting&quot;&gt;on hitting small(er) people&lt;/a&gt; &lt;a href=&quot;#fnref:save-the-child&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:nuremburg-defense&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;this is, of course, the classic ‘appeal to authority’, or &lt;a href=&quot;https://en.wikipedia.org/wiki/Superior_orders&quot;&gt;‘nuremburg defense/just following orders’&lt;/a&gt;. This is why belief in authority is &lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition?from_search=true&amp;amp;from_srp=true&amp;amp;qid=8qQr37oXpa&amp;amp;rank=1&quot;&gt;such a dangerous superstition&lt;/a&gt;. As a reminder, this is my father, who claims he loves me, enlisting the full weight of his cognitive powers and story making potential to double down on defending child abuse &lt;a href=&quot;#fnref:nuremburg-defense&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:witness&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;When passing old white people deign to make remarks now that openly affirm a racialized, supremacist view of the world, out loud, with their full chest, I clap back. the last old white-passing woman that spoke in such a way of eden, to me said in passing to or about my kid “oh, you are such a beautiful little girl” (reinforcing a message of ‘there is a standard, you happen to meet it, therefore you are fundamentally different than someone else, I approve of your seeming conformity to my version of a eugenic ideal.’ Also a bunch of presumed crap around gender roles, femininity, conformity, etc) I stopped, turned, looked at her face, and said “what a strange thing to say to someone.” female-passing people get stripped by ‘society’ of permissible access to rage, by anyone embodying patriarchal, supremacist, emotionally immature ideals. Remember, &lt;a href=&quot;https://www.goodreads.com/book/show/39983237-rage-becomes-her&quot;&gt;Rage Becomes Her&lt;/a&gt;&lt;/p&gt;

      &lt;p&gt;I wish I’d said something a bit more specific, but it is enough. I was not neglecting the role of the Witness. Eden heard me. The supremacist heard me. Its enough. &lt;a href=&quot;#fnref:witness&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Isometric Deadlift Holds (for Climbing!)</title>
   <link href="https://josh.works/isometric-deadlift-holds"/>
   <updated>2025-04-03T13:00:00+00:00</updated>
   <id>https://josh.works/isometric-deadlift-holds-for-climbing</id>
   <content type="html">&lt;p&gt;alternative titles: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yielding isometric mid-thigh pin pulls&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;isometric deadlift &apos;holds&apos; for fun and climbing&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;A few months ago, &lt;a href=&quot;/kettlebell-swings-and-sprints&quot;&gt;I began some barefoot sprints up a hill at a local park, and discussed also adding heavy kettlebell swings&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;My back started feeling great, along with my feet, my legs, the bones and connective tissues and muscles. Truly, i’m now four months in and this is all still part of my toolkit. It also feels great to walk my bare feet across grassy surfaces. The kettle bell swings transferred strongly to climbing.&lt;/p&gt;

&lt;p&gt;After building skills and strengths around one-handed heavy kettlebell swings (and giggling to myself over how fun it was to feel so much stronger while climbing). I found myself wondering ‘what will I do when I max out the kettlebells’, also, ‘I do not currently have any interest in maxing out the kettlebells, but I am curious to perhaps incrementally practice some of the same general pattern’&lt;/p&gt;

&lt;p&gt;I remembered how I’ve always appreciated things about the deadlift that I’ve never quite managed to embody, or make part of my training, and some of the core parts of the deadlift are pretty unappealing to me, too.&lt;/p&gt;

&lt;p&gt;I appreciate the whole ‘strengthen the posterior chain’ thing, but I really, really, really do not care about having any particular deadlift “number”. And the few times I’ve spent a few sessions in a row deadlifting, I’d get to something around 200 lbs and then start getting anxious about how my back would be feeling, because of a prior injury/weakness. AND because of that weakness, I’ve long wanted to get a ‘strong(er) back’, to reduce the chances of an injury, but kept running into that weakness along the way. hm.&lt;/p&gt;

&lt;p&gt;so anyway, my back &lt;em&gt;has&lt;/em&gt; been feeling great, and I was sorta thinking about deadlifty type stuff again.&lt;/p&gt;

&lt;p&gt;I was noticing how little portions of my back would move with the kettlebell swings, thinking about that hip hinge motion. I decided that I could replicate some of the motion simply by ‘pinning’ a bar with a bunch of weight on it close to the top of the deadlift position, and I could then pick it up and hold it.&lt;/p&gt;

&lt;h2 id=&quot;my-first-experience-of-this-particular-exercise&quot;&gt;My first experience of this particular exercise&lt;/h2&gt;

&lt;p&gt;I had been thinking about the motion/exercise for a while, but not quite set it up, I’d never used the pins like this before, and a friend gave a helpful nudge while we were exercising together, and I got it set up right, fiddled with it, started adding weight, slowly, seeing how everything felt as I went.&lt;/p&gt;

&lt;p&gt;AND I WAS SHOOK! The way the exercises felt &lt;em&gt;while I was doing them&lt;/em&gt; and the ways my body felt fatigued, sore, later that day and the next day, the day after, and even three days later, was extremely thought provoking. &lt;a href=&quot;/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;I’m attuned to interestingness&lt;/a&gt;. these were &lt;em&gt;interesting&lt;/em&gt;. From a &lt;a href=&quot;https://en.wikipedia.org/wiki/Proprioception&quot;&gt;proprioception&lt;/a&gt; point of view, there was lots of input and awareness throughout the lifts, AND for hours and days in the soreness and sensation generated by the strain and repair.&lt;/p&gt;

&lt;h2 id=&quot;photos-and-videos-and-timelapses-of-the-exercise-for-context&quot;&gt;Photos and videos and timelapses of the exercise, for context&lt;/h2&gt;

&lt;p&gt;Here’s a still from a video, showing the entire thing. It’s a mostly no-range-of-motion exercise, so I pick it up from close to this ‘finished’ position:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/isometric-barbell-lift.jpg&quot; alt=&quot;isometric barbell lift/hold&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I will tell you about them, but first, it might be best to simply look at the video of the workout:&lt;/p&gt;

&lt;p&gt;🎥 &lt;a href=&quot;https://photos.app.goo.gl/moH3dhVYaU4HMb437&quot;&gt;google photo album of the lifts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s a few short videos, one showing a single heavy-for-me lift. You might notice I hold the bar up for only maybe three seconds. The timelapses show how fast the whole workout can be, and how little time is spent doing anything, and how small the range of motion is.&lt;/p&gt;

&lt;p&gt;I spent more than one session googling around, trying to find a useful name that described what I was doing, and finally, iteratively, with the help of two friends, walked into a title for it.&lt;/p&gt;

&lt;p&gt;I was describing it:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Okay, so, you know the ‘top’ of the deadlift position? [shifts hands into this sorta stance] I’ll put the squat rack safety bars to this level [lowers two inches] and load a bar there, start with a single 45 plate on both sides… [more gesturing, miming]&lt;/p&gt;

  &lt;p&gt;… I kept adding 45s until I was quite a bit past my regular deadlift weight. It was &lt;em&gt;so interesting&lt;/em&gt; to hold a heavy, heavy bar for 5-10 seconds, with almost zero movement. Based off the soreness and fatigue I felt immediately and the following day(s), I could tell the ‘transfer’ to climbing-specific strength was &lt;em&gt;very high&lt;/em&gt;. Not 100%, but close.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This would be considered an isometric lift/hold.&lt;/p&gt;

&lt;p&gt;Google told me that “traditional” barbell isometrics would be pinning the bar in place and then pulling up on on it, rather than lifing it and holding it in an raised position. So, this is a ‘yielding isometric’ hold, in that we are activating muscles to avoid yielding to the weight. This is opposed to an ‘overcoming isometric’, like pushing on a wall (or lifting a bar against a pin), where the entire load is delivered by the body trying to overcome the immovable force.&lt;/p&gt;

&lt;p&gt;I’m so bad at counting weight plates, it takes a long time to figure out how much weight is on the bar, but I absolutely thought “well, I can easily hold my body weight with one arm hanging from a pull-up bar, so I wonder if I can do my body weight from each hand at the same time on this lift?”&lt;/p&gt;

&lt;p&gt;and started adding weight towards 140 * 2, or 280 lbs. Turns out it’s pretty easy for me to hold 280 lbs up there. I was going slowly up in weight, but even on my very first day, I think I went to 320 lbs. (!!!). I always, &lt;em&gt;always&lt;/em&gt; evaluate how a back thing feels the day after the exercise, so I eased into these gently.&lt;/p&gt;

&lt;p&gt;But each time, the day after, things felt good. So I kept the lifting going, and very quickly saw wild numbers, all the way up into the very low 400s eventually. Mostly I stay at a lower weight, maybe 80% of a max, and aim for longer holds, and other forms of improved holding.&lt;/p&gt;

&lt;p&gt;For example, I can find ease with my breathing (slow exhale vs fast exhale and hold) and many versions of trying to keep my shoulders “packed”, and “holding them up” instead of letting them get pulled down (in most of the footage in the album, I’m letting them sag more than I do now).&lt;/p&gt;

&lt;p&gt;I’m not trying to get injured. For instance, breathing is difficult when holding this much weight, but if I’m holding it for a ‘longer time’ (&amp;gt;5 seconds) I can exhale and take a half-inhale. When I’m closer to my limit, there’s no way I can inhale under the tension.&lt;/p&gt;

&lt;p&gt;Anyway, there is tons of good stuff out there about isometric exercises.&lt;/p&gt;

&lt;p&gt;As a climber, nearly 100% of my finger flexor training is isometric, and I’ve noticed over the years more and more of my exercises tending towards isometrics. For example, I virtually never train pullups, but will do lots of holding a 135 degree arm position isometrically in various ways. It’s easy(ier) on the elbow tendons, etc.&lt;/p&gt;

&lt;p&gt;I expect this exercise counts as elbow tendon pre-hab, as I appreciate the soreness I sometimes detect, in the elbow joints. Ditto re knee and ankle and foot tendons. I get tons of proprioceptive input from those places, after holding sufficiently heavy weights.&lt;/p&gt;

&lt;h2 id=&quot;contrasting-this-strange-lifthold-to-a-look-alike-exercise-the-deadlift-lifting-a-much-lighter-amount-of-weight-from-the-ground&quot;&gt;Contrasting this strange lift/hold to a look-alike exercise, the deadlift (lifting a much lighter amount of weight from the ground)&lt;/h2&gt;

&lt;p&gt;Tons of obviously coherent, rooted-in-reasonableness ideas float around out there about why deadlifts are a nice thing to give to the human body, but again, I don’t deadlift, I’m not a gym person.&lt;/p&gt;

&lt;p&gt;I don’t view this lift as even remotely related to a deadlift. There’s no ‘reps’, there’s no movement, it’s just holding it at the top of the position, stressing out the upper body more than a full range-of-motion deadlift ever would be able to do, noticing what I’m feeling as I hold the weight.&lt;/p&gt;

&lt;p&gt;Even rock climbers sometimes talk about deadlifts, and some of the other ‘core’ barbell exercises. I’ve never cared for benching or squats, either. &lt;em&gt;I’m not a gym person&lt;/em&gt;, though I love as much as anyone else the concept of ‘being strong’.&lt;/p&gt;

&lt;p&gt;Years ago, I injured my back in a severe-to-me way. Ultimately found it was ‘just’ a pulled psoaz muscle and not a herneated disk! how nice. the effect on my life and mobility for a long time was that of a severe back injury. Possibly I’ve got a slight congenital back issue (someone thinks the bottom vertebra is maybe partially fused to my pelvis or something, but the x-ray was unclear). I’ve simply always had tightness in my lower back. It’s part of why sometimes I look like I stand up very strait, I think. Anyway, old back injury + legit sensitivity + proclivity to back pain.&lt;/p&gt;

&lt;p&gt;I still don’t ‘run’ (besides those barefoot hill sprints I mentioned, and that’s been only a very recent addition), but things about that portion of my back is still a point of physical sensitivity, and emotional sensitivity, for me.&lt;/p&gt;

&lt;p&gt;Every time I’ve tried deadlifting from the ground, I can see, feel, witness in video recordings, errors in form and technique, and could not generate for myself the collection of body queues I seem to need to get the form right. I’ll maybe hire a coach for IRL training someday.&lt;/p&gt;

&lt;p&gt;Imagine how thrilled I was, then, to have stumbled across this thing that gets me &lt;em&gt;more of the best parts&lt;/em&gt; of what I always wanted from the deadlift, and less of the parts I &lt;em&gt;didn’t&lt;/em&gt; want, from the deadlift.&lt;/p&gt;

&lt;p&gt;I’m thrilled to have discovered this vastly-more-relatable-to-rock-climbing, lower-risk-to-the-back, no-range-of-motion exercise.&lt;/p&gt;

&lt;h2 id=&quot;where-did-the-name-come-from&quot;&gt;Where did the name come from?&lt;/h2&gt;

&lt;p&gt;I watched portions of a painful amount of youtube videos, trying to find a video of someone doing this exercise like this, and couldn’t find any. It’s not often I discover particularly novel things, and I’m pleased when I do. This feels like one of ‘em. &lt;sup id=&quot;fnref:novel&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:novel&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;It’s a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;no-range-of-motion isometric deadlift pin-pull&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yielding isometric mid-thigh pin-pull-and-hold&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I don’t know how to signal in the name that the point of the motion is the &lt;em&gt;holding&lt;/em&gt;, and not reps, per se.&lt;/p&gt;

&lt;p&gt;I can find zero footage on youtube of anyone doing anything quite like this.&lt;/p&gt;

&lt;p&gt;I’d like to emphasize, again, the point is not reps, the point is time under tension.&lt;/p&gt;

&lt;p&gt;Here’s the videos I collected, again: &lt;a href=&quot;https://photos.app.goo.gl/moH3dhVYaU4HMb437&quot;&gt;google photo album of the lifts&lt;/a&gt;. Maybe I’ll make&lt;/p&gt;

&lt;h2 id=&quot;why-does-this-feel-so-transferrable-to-climbing&quot;&gt;Why does this feel so transferrable to climbing&lt;/h2&gt;

&lt;p&gt;We’ve perhaps seen people doing the ‘no-hang’ tension block weighted pulls. I think of this exercise as a version of that. I’ve tried those exersises, I like them well enough. I don’t mind that the tension block is a one-handed thing. these yeilding isometric barbell pin pulls feel conveniently two-handed.&lt;/p&gt;

&lt;p&gt;I can feel all the columns and structures and musculature and connective tissue of my upper body (and lower body) working, hard, to maintain the position throughout the hold. When I climb right after these exercises, I can feel lots of overlapping use. Or, I do these exercises after the climbing, and can feel it then, or in the soreness. The commonality of energy pathways is distinctive.&lt;/p&gt;

&lt;p&gt;It becomes very apparent why this is an interesting exercise as one approaches ‘heavy’, whatever that is for you. Here’s a list of some of the priprioceptive interestingness:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The ‘meaty’ parts of my hands are sore, &lt;em&gt;again&lt;/em&gt;, in a delightful way, with the effort of holding the bar.&lt;/li&gt;
  &lt;li&gt;the pad at the base of the thumb is sore, in a nice way&lt;/li&gt;
  &lt;li&gt;the weight is very heavy, so I absolutely MUST have my hands on opposite sides of the bar. Either direction feels like a direct mimic of the ‘base’ climbing movement. An undercling or ‘regular’ palm-facing-away position&lt;/li&gt;
  &lt;li&gt;I feel soreness in the intercostal muscles across the tops of my ribs, in a way that makes sense when you appreciate how much force is being carried with the the lungs acting like a balloon, rigidly working with the ribs, shoulder structures, to carry the load.&lt;/li&gt;
  &lt;li&gt;delightful soreness all across the forearms, and the rest of the arm and shoulder&lt;/li&gt;
  &lt;li&gt;i was having issues with callouses building (and tearing. ick. happened once. did not like it.) and found that if I set an intention of gripping the bar &lt;em&gt;really really tightly&lt;/em&gt;, my skin sloshes around under the bar less, and skin that gets pulled at less tears less. Also, my hands get &lt;em&gt;even more sore&lt;/em&gt;!&lt;/li&gt;
  &lt;li&gt;the ways the specific shape of the bar transfers directly, &lt;em&gt;directly&lt;/em&gt; to certain hand positions on the wall is &lt;em&gt;wild&lt;/em&gt;. I never had considered this before. It feels like I can hold a ‘c’ shape in my hand more, and thus feel improved on crimps in different/better ways, especially roofy crimps. I can kinda curl my wrist and hooked hand + crimped finger more into a hold, and achieve an improved body position on it, as a result.&lt;/li&gt;
  &lt;li&gt;To appreciate the above, perhaps hold your hand in front of you, rigidely, as if your hand and thumb were wrapped all the way around a bar bell.  Flex the hand. flip the thumb over into a half-crimp position. I can now imagine stronger intercostals at the base of the knuckles, and stronger wrist flexors. Before a few months ago, it would have been hard for me to imagine how this little chain of pulling could be made independently stronger by pulling hard on a bar, and now that I’ve experienced it, it seems of obvious why these exact pulls make this complex of muscles and structures so much stronger. &lt;sup id=&quot;fnref:insufferable&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:insufferable&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;I can feel soreness in the bones and connective tissues in the a2 pulley region and pip joints, which obviously are frequently injured structures in the hands of climbers, and being able to systemically apply load in such controlled fashion feels great for prompting the whole tissue injury/repair cascade. tendon injuries are most likely during highly dynamic moves, or after a lot of wiggly back-and-forth sawing motion has already been applied to the tendons, these lifts are none of that.&lt;/li&gt;
  &lt;li&gt;Theoretically, big early strength gains of some exercises are not the muscles getting any definition of stronger, it’s that the muscle fibers are becoming coordinated; it’s that the load is so high, they’re learning to all apply force at the same time. getting from 88% muscle fiber recruitment to, say, 95% muscle fiber recruitment, seems worthwhile, right? Lots of climbing-specific exercises talk about this principal. It’s sorta like ‘free strength’. “I don’t need more muscle to pull harder, nor do I need more force to be generated by any particular muscle fiber, I simply have some muscle fibers that are not trying at all when I am pulling really hard? And I can simply &lt;em&gt;ask them to try alongside the other muscle fibers already trying?&lt;/em&gt; heck yeah.” I have no idea what sort of numbers anyone actually has, just that there are known ways of improving the coordinated activation of muscle fibers, and as I reflect on the way these exercises work, I note the same principle being applied.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Similar to the kettlebell swings, holding a round bar feels like an ‘active’ position for the palm and structures of the hand. I could &lt;em&gt;easily&lt;/em&gt; feel an interesting and useful transfer to crimping holds, and being able to more easily hold a rounded palm when crimping, vs it flattening out into more of a drag.&lt;/p&gt;

&lt;p&gt;Because the range of motion is tiny, this feels relatively easy on my metabolic system and muscles. Again, early gains are at least partially muscle fiber recruitment type things, perhaps, and I’m thrilled for it, and don’t mind at all when that is not an avenue of further improvement.&lt;/p&gt;

&lt;p&gt;Please don’t get me wrong, my nervous system felt absolutely &lt;em&gt;emptied&lt;/em&gt; of something I didn’t know I had, the first few sessions. The entire body is working so hard - The first time I had the weight of one of me, &lt;em&gt;hanging from each arm&lt;/em&gt; was very interesting. I then had one-of-me plus a 25 lb dumbbell, hanging from each arm. this is difficult to me. &lt;sup id=&quot;fnref:unusual-units&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:unusual-units&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Over the last two years, I’ve had several friends go through heavy-duty surgical interventions for damaged tendons in the ankle and knee. What they have experienced, I would love to avoid. I am THRILLED to be providing stress to the whole system right now, in such safe ways. I can feel things like my achillies tendons, and lots of things inside my knees, expressing a perception of having been used, the day or two after an exercise like this.&lt;/p&gt;

&lt;p&gt;For the next three days my entire body felt like I’d stretched in a way I didn’t know I could. It feels &lt;em&gt;very useful&lt;/em&gt; from a climbing pov to be building capacity for this sort of energy output.&lt;/p&gt;

&lt;p&gt;It’s become perceivably less effortful to hold certain body positions on the wall, now, in ways I didn’t even know I was struggling with, or realizing I could have a certain competency with. In certain moves, I kept feeling like I was “clicking”, like a magnet tile, into ideal body positions during/between moves, with the improved ease with which I could move all of my body around, because of my stronger shoulders and back. Climbing is a skill sport, and I’m pleased to use my stronger body to develop my skill. Guess what one can do more of, with a stronger body? More practicing-by-trying difficult, skillful moves!&lt;/p&gt;

&lt;strike&gt;TODO add video of my surprise casual send of first v9 on the tb2?&lt;/strike&gt;
&lt;p&gt;I added the video to the photo album of the lifts. &lt;a href=&quot;https://photos.google.com/share/AF1QipOBbF2i_JX-xlbwp7DZXLq6zJP3EZYhN0u2ZEh9jj9xH5yvjy7qhBR2Xe5s2UYUEA/photo/AF1QipNf1d8z99QrBZqOiC3eK2URGW_BN3zfO4PNR6GG?key=TkZNV1lkcW1YWXJlTUxZZjBCVDF1ODgyMkxhTy1B&quot;&gt;or click here to view it directly&lt;/a&gt;. It had been months since I’d tried that boulder problem, it was the first of the grade I’ve done on the tension board. I could tell my shoulders and back felt SO STRONG in ways that were not available to me from when I’d last tried it.&lt;/p&gt;

&lt;p&gt;In the video, especially compared to earlier attempts, it’s obvious to me that I am feeling so solid in each body position throughout the climb. Sometimes it’s obvious that I’m barely holding various body positions, and in this video, it’s that obvious that each of these body positions is &lt;em&gt;secure&lt;/em&gt;. This sensation keeps getting born out on ropes and bouldering in many different ways.&lt;/p&gt;

&lt;p&gt;I keep telling people that I climb with that it feels like I’m playing a video game, and I cashed in accrued points for a character upgrade, and I just spent it on stronger shoulders and back. It’s like my joints &lt;em&gt;and the holds I’m holding onto&lt;/em&gt; are more inclined to ‘snap into place’ once I grab them.&lt;/p&gt;

&lt;p&gt;Fantastic, and delightful. Even if I was not climbing, though, I think I would really like these exercises.&lt;/p&gt;

&lt;p&gt;If you’ve read this far, you’ve likely spent about 20 minutes on this piece and the videos, which means you’ve spent more time reading than I usually spend doing the entire isometric pin pull exercise.&lt;/p&gt;

&lt;p&gt;So, next time you’re around a squat rack, maybe you’ll think of me and this idea and try it yourself. If you do, I’d love to hear your experience of it.&lt;/p&gt;

&lt;p&gt;I subscribe to &lt;a href=&quot;/write-it-now&quot;&gt;write it now&lt;/a&gt; philosophies, and this exercise is now pretty familiar to me, even as it’s still novel. I anticipate I’ll keep going with it, I’ll drop updates to this post now and again.&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:novel&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;a few of the other novel things, which I think counts for something: &lt;strong&gt;I was the first one I’d heard of that rode a scooter as far as Denver&amp;gt;Canada&amp;gt;Seattle&amp;gt;Denver&lt;/strong&gt;, &lt;a href=&quot;https://photos.google.com/share/AF1QipN8q_LjvazfURfQUjnI21GQz23_PqlznCQ2fYC6OYCy15AIypU47XTi5S_mPdtaMw?key=N29iaXpDYXI5X2pFVjBUTGpQQmE5TmZTSnYyci1R&quot;&gt;photo album&lt;/a&gt; though turns out now people ride their scooters literally all around the world - findable on youtube. between when I encountered scooters as a useful vehicle in the usa (2022) and made that trip (2023) I had not. Even in the decades of experience among the people at the local scooter dealer, no one had heard of someone going so far on a scooter, and they were impressed. I’m counting this as ‘genuinely novel’. It wasn’t just a long scooter trip, but skillful managing of the logistics, the route, the pacing, the sleeping. I genuinely do not like to ‘work hard’ or to suffer, so a trip like this would be unappealing unless it was also &lt;em&gt;deeply&lt;/em&gt; comfortable, most of the time.&lt;/p&gt;

      &lt;p&gt;Secondly, I’ve never seen someone else collect, render anyone’s mobility data in such granular way as this: &lt;a href=&quot;https://josh.works/mobility-data&quot;&gt;https://josh.works/mobility-data&lt;/a&gt;. Lots more could be said about that. Started as a very simple basic idea that grew into something quite interesting, rendering thousands of precise trips &lt;em&gt;all at once&lt;/em&gt; on a single global map. Are computers not amazing??? Also I feel an odd awareness of my own lived experience, being able to zoom out and see evidences, breadcrumbs, sometimes whole meals of lines, evidences of trips, life lived. mm. the data is possibly self-explanatory?&lt;/p&gt;

      &lt;p&gt;A third point of interestingness, novelty, that I am pleased to have encountered, that is close-enough-to-original: ‘coning’ an intersection, aka &lt;a href=&quot;/on-coning&quot;&gt;fixing the common american-style road junctions with traffic cones&lt;/a&gt;.&lt;/p&gt;

      &lt;p&gt;I also do interesting/novel stuff with drone footage in cities, but &lt;strike&gt;don&apos;t yet anything super easy to link&lt;/strike&gt;. jk, sorta: &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7428736543289822495&quot;&gt;example 1: follow-along of a group on bikes thru a park/neighborhood in Denver&lt;/a&gt;, &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7312173147371949354&quot;&gt;example 2: smooth timelapse footage of a stroad&lt;/a&gt;, &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7312178911956471086&quot;&gt;example 3: trader joes paring lot timelapse&lt;/a&gt; &lt;a href=&quot;#fnref:novel&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:insufferable&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;In certainly one of my less sufferable traits, sometimes after I have what seems like an insight, to me, it becomes clear, obvious, and then I talk to others like it’s as obvious to them as it is obvious to me, even as I have clearly never arrived at this insight until {age_at_which_insight_was_gained}, and I can “be pushy” or at least experienced as “pushy” in some ways. I don’t deny it at all, also, possibly, I am sorry/i don’t disagree with you. 😬 &lt;a href=&quot;#fnref:insufferable&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:unusual-units&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’ve often used unconventional units for calculating things. I sometimes still calculate the cost of items in burritos. “{such and such} is three burriots, &lt;em&gt;with quacamole&lt;/em&gt;, is it worth that much?” from the job where I earned about one chipotle burrito per hour. &lt;a href=&quot;#fnref:unusual-units&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Barefoot Sprinting Up a Grassy Hill, &amp; Kettlebell Swings</title>
   <link href="https://josh.works/kettlebell-swings-and-sprints"/>
   <updated>2025-03-12T13:00:00+00:00</updated>
   <id>https://josh.works/kettlebell-swings-and-sprints</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;A few months ago, maybe in November, certainly by December, I began this ‘barefoot sprinting up grassy hills’ thing I’m going about to talk about in detail below. Shortly after I started, I began making use of the kettlebells I’d usually ignored at the gym(s) I have access to.&lt;/p&gt;

&lt;p&gt;I’ve been dual-tracking in time the two topics in this piece, kettlebell swings and sprints, but because of how text works, I must discuss one of them first, and one of them second.&lt;/p&gt;

&lt;p&gt;I’ve been hustling the kettlebell swings hard lately. If you’re one of the folks I’ve hung out with in-person, you know what I’m talking about. You are reading the blog post I said I’d send you.&lt;/p&gt;

&lt;p&gt;Someone said, believably, credibly:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;tell me more about these kettlebell swings, because I will do &lt;em&gt;literally anything&lt;/em&gt; to be a stronger climber.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gladly.&lt;/p&gt;

&lt;p&gt;As usual, I’ve got a page a few pages  of paper notes that I’ve put together across time, and am now bringing it to here and organizing it.&lt;/p&gt;

&lt;p&gt;I first crossed paths with kettlebells, and the ‘heavy two-handed kettlebell swing’ many, many years ago. I &lt;a href=&quot;/daily-exercise-russian-kettlebells&quot;&gt;wrote my first piece about kettlebell swings&lt;/a&gt; in 2013. Did not write about them again until now.&lt;/p&gt;

&lt;p&gt;In 2013, I was using 55 lb kettlebells, and didn’t have access to other sizes. Now that I have access to &lt;em&gt;real&lt;/em&gt; kettlebells, and at a variety of weights, I am find a lot more interestingness for myself.&lt;/p&gt;

&lt;p&gt;I still stand by that piece, and regularly since then have made kettlebell swings a part of how I use my body. Maybe two months ago I brought kettlebell swings back into my life, first time in many years, and I’m thrilled. My back feels AMAZING, and a bunch of other things.&lt;/p&gt;

&lt;p&gt;In case this information makes it incrementally more likely that any reader harvests any of the same nice things, here’s all of my beta. I try to &lt;a href=&quot;/write-it-now&quot;&gt;write things when it’s first coalecing in my mind&lt;/a&gt;, and this current piece is no exception.&lt;/p&gt;

&lt;h2 id=&quot;kettlebell-swings&quot;&gt;Kettlebell Swings&lt;/h2&gt;

&lt;strike&gt;TODO: Add video of 2-handed swings.&lt;/strike&gt;

&lt;p&gt;&lt;a href=&quot;https://photos.app.goo.gl/WDmZQuUpPWGmMRPh6&quot;&gt;Here’s an album showing one-handed and two-handed kettlebell swings&lt;/a&gt;. The two-handed swings are me &amp;amp; a 75 lb kettlebell, doing reps 81-100 for that day’s work. The one-handed swing is from a different day showing reps 1-5 on each arm with a 55 lb kettlebell. I believe I did ten total on each side that day.&lt;/p&gt;

&lt;p&gt;The blog post &lt;a href=&quot;/daily-exercise-russian-kettlebells&quot;&gt;about kettlebell swings I wrote now 12 years ago&lt;/a&gt; is maybe worth referencing. I no longer have the home-made kettlebell. The piece is a good-enough starting point.&lt;/p&gt;

&lt;p&gt;I remember getting a TON out of kettlebell swings long ago, especially part of training for a high-elevation marathon, and I’m thrilled that I used them then. It helped my back stay healthy, for sure. Then, after I stopped running, I stopped the kb swings, and then WRECKED!!!! my back doing something completely unrelated, and have not run since then… Until now (More on sprinting below)&lt;/p&gt;

&lt;p&gt;I also didn’t really do kb swings the last few years.&lt;/p&gt;

&lt;p&gt;Then, for reasons that do not have anything to do with climbing, I found a way to bring back into my life running, and stumbled backwards back into kettlebell swings, and have noticed so many interesting things as a result. In a way that is no longer surprising to me, my climbing has also been nicely effected as well, even though that was never the original intent of the kettlebell swings.&lt;/p&gt;

&lt;p&gt;Originally, I didn’t expect the exercise to do anything for my climbing, and in fact felt bummed when the kettlebell swings would sometimes leave me tired enough that I felt I was having a lower-effort, ‘maintenence’ climbing session, rather than a fresh, ‘try-hard’ session.&lt;/p&gt;

&lt;p&gt;Then, because of a slight reframe, I’m now &lt;em&gt;thrilled&lt;/em&gt; by the soreness I feel from the kettlebells, and don’t mind that i’ve been carrying fatigue into most of my climbing sessions since I’ve started ‘spamming kettlebell swings’.&lt;/p&gt;

&lt;p&gt;Here’s misc notes I collected across a few days/weeks:&lt;/p&gt;

&lt;p&gt;I really don’t like to work hard, or even breath that hard. When doing my swings, I always breath through my nose, per &lt;a href=&quot;https://www.goodreads.com/book/show/48890486-breath&quot;&gt;Breath: The New Science of a Lost Art&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I started with sets of 5-10 reps. Then rest until my breath returns all the way to normal, and my heart rate, then i do more. Keep going at a low rate of effort until ~100 reps, if feeling good. If I’m a little sick or whatever, I found myself dropping the weight a lot and still finding 60 reps difficult enough to stop there. (that was part of how I knew I was sick at the time. Came down with a slow-onset illness, and I noticed it first by a stunning loss of power. 60 reps of a 60 lb kb is vastly less work than 110 reps of a 75 lb kettlebell, but when I was sick the 60 reps at low weight were harder than the 110 reps of 75lb swings)&lt;/p&gt;

&lt;p&gt;It’s impossible to do kb swings well without chalk, I used to not use chalk, or I’d do swings even if I didn’t have chalk, and that is no longer the case. i found the weights I was using to be so heavy that simply holding on to the dang thing was often-enough a hard part of the exercise. I now recall, the last time I did kettlebell swings without chalk, legitimately, correctly fearing the bell breaking free of my hands during some part of the motion. I don’t climb without chalk, I do not swing kettlebells without chalk.&lt;/p&gt;

&lt;p&gt;As soon as any part of the form would ‘break’, if it ever did, I’d end the set. It almost never broke. &lt;a href=&quot;https://photos.google.com/share/AF1QipN4Ev82tTVALGsfC_Q3JPbYscJtHS0hdtoUmj7POV8hMkEPbjr4PSxB3zsrhTqqWw?key=MnZUNzF1d3NQbmRKQjdwUVA0Ym1peS0wX2hCRlpB&quot;&gt;both of the videos here have pretty good form&lt;/a&gt;. My form isn’t always the exact same, across sets, especially the one-arm swings. In both videos, my heels sometimes come off the ground. It’s reflective of me having to try very hard. Often-enough my heels do not rise off the ground, which feels more correct.&lt;/p&gt;

&lt;p&gt;Heels up or not, I’m pleased with it, because it shows that my form is and looks quite good, even though I know the exercises were quite effortful. Back and shoulders in particular look “packed”. It looks much more straight forward than it felt in my body.&lt;/p&gt;

&lt;h3 id=&quot;an-unexpected-crossover-kettlebell-swings-and-climbing&quot;&gt;an unexpected crossover: Kettlebell Swings and Climbing&lt;/h3&gt;

&lt;p&gt;I noticed lots of kb-swing-related soreness while climbing. Some climbing moves became for a time very sensory-rich because of how it was interacting with soreness recepters.&lt;/p&gt;

&lt;p&gt;The soreness in my hands after the KB swings is similar to the soreness in my hands I experienced after trying something from Tyler Nelson’s insta: &lt;a href=&quot;https://www.instagram.com/c4hp/reel/DFsnMsWSbtY/?api=1&amp;amp;hl=zh-cn&quot;&gt;Drop the load a little and increase the muscle activity. Your fingers will thank you for it (instagram)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;sometimes, usually, I’d begin the climbing session with kettlebell swings. Sometimes I’d do the swings at the end.&lt;/p&gt;

&lt;p&gt;Sometimes I’d do &lt;em&gt;only&lt;/em&gt; kb swings, and would not climb, if I didn’t feel like climbing. the gym I use is close enough that I can walk to it, and will walk/scoot right by it often enough even if I don’t seek it out, so it’s trivial for me to pop in for a few minutes of using a single piece of equipment, and then continue on with my day. #scooterthings&lt;/p&gt;

&lt;p&gt;Often enough, when doing the kb swings before the climbing session, I’d notice how nice it felt to be really warmed up, and warmed up with &lt;em&gt;speed&lt;/em&gt;, not just slow ‘warm up’ climbing.&lt;/p&gt;

&lt;p&gt;The kb is very demanding, and takes speed, the same way that jumping into the air takes certain speed. It’s really nice to soak the nervous system in this level of effort, and helps for the climbing.&lt;/p&gt;

&lt;p&gt;I’d do the kb swings, and feel &lt;em&gt;really&lt;/em&gt; well warmed up for bouldering. I also sometimes would feel really &lt;em&gt;sore&lt;/em&gt; from the kb swings in ways that would be EXTREMELY OBVIOUS when I was climbing. I was thrilled bc that meant I was getting a ton of useful crossover.&lt;/p&gt;

&lt;p&gt;right now, as you read these words, consider ‘shrugging’ your shoulders, up towards your ears, and then pushing them back ‘down’, with firmness, and rigidity - these were very often the muscles that I’d feel EXTREME fatigue in, across days and weeks, and plenty of other muscles, but that these muscles in my body were so sore was continuously surprising to me.&lt;/p&gt;

&lt;p&gt;I pretty quickly dialed down good-enough technique, and then started adding weight. I got to 75 lb two-arm swings, spent a few sessions there, that was the heaviest kettlebell at that gym, then I found an 88 lb kettlebell at a different gym and have now used that one a few times.&lt;/p&gt;

&lt;p&gt;The first time I did it, I’d still not tried any one-handed kettlebell swings. I’ve now done a bunch, and the second time I used that 88 lb kettlebell, it felt &lt;em&gt;shockingly&lt;/em&gt; easy to hold on to and swing, compared to how it felt the first time. It’s still wildly hard. That 2nd set was yesterday, as I type these words, I can feel soreness in my thumb, if I stretch it, each of my fingers, and much more.&lt;/p&gt;

&lt;p&gt;update from a few weeks later than that paragraph was typed^^: that 88lb kettlebell, while not feeling &lt;em&gt;light&lt;/em&gt;, now feels much, much, much easier to move around. I giggled to myself the last time I used it, because of how easy it was to hold on to, and to swing!!!&lt;/p&gt;

&lt;p&gt;this kettlebell swing thing is a high-value 5-10 minutes in every session. i almost always do 100 swings. even when moving slow, it’s only like 7 minutes. If you read half this blog post, you’ve spent far longer reading than I spend on most kettlebell swinging sessions, which, for the record, even the ‘active 7 minute workout’ is still &lt;em&gt;mostly&lt;/em&gt; me standing next to a kettlebell, not swinging it.&lt;/p&gt;

&lt;p&gt;I weigh 140lbs and started with a 55lb kb, then 65, then 75, then 88. Spent a few sessions at each weight before going up one. I switched to one-arm work with a 45 lb suitcase/farmers carry a few times, then 55lb one-arm swings, then 60 lbs, and get use from 45lb one-arm swings too.&lt;/p&gt;

&lt;p&gt;I do between 60 and 130 reps of two-arm swings, and started with like ten reps of one-arm swings, then 20, 30, and have not done more than 40 in a session so far.&lt;/p&gt;

&lt;h3 id=&quot;an-unexpected-variation-one-handed-kettlebell-swings&quot;&gt;an unexpected variation: One-handed kettlebell swings&lt;/h3&gt;

&lt;p&gt;I’ve got a video of me doing one-handed kb swings &lt;a href=&quot;https://photos.app.goo.gl/WDmZQuUpPWGmMRPh6&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I started one-handed swings the very first time on accident, because when I went to the gym, the 70 and 75 lb kettlebells were in use. So I grabbed a 55, and thought “i bet I can still get a version of the exercise I want”.&lt;/p&gt;

&lt;p&gt;Oh, wow, I was correct.&lt;/p&gt;

&lt;p&gt;It feels so stability-encouraging of my toros, back, spine, ‘the box’ of the upper body, because of it’s asymetric nature.&lt;/p&gt;

&lt;p&gt;I could feel my spine and the mucles along it, and the entire “box” of my upper body (sides, front, back, bottom of my core), straining to maintain their body position. Straining to &lt;em&gt;resist&lt;/em&gt; movement, rather than straining to move. Wildly applicable to climbing movements.&lt;/p&gt;

&lt;p&gt;My forearms and hands were quite nicely stressed by the effort - I could feel the familiar sense of fatigue in the muscles/connective tissue inside of my hands, the fleshy part of my thumb, I could feel fatigue and stress in the middle bone of my fingers, too. not the bone in the tip, not the bone connecting to the palms. The one in between. How nice.&lt;/p&gt;

&lt;p&gt;I could feel sensation from the muscles along my spine all that night and the next day - nothing felt painful or damaged, simple soreness and the feeling of use. I could tell the entire system had been thoroughly stressed. It felt so good.&lt;/p&gt;

&lt;p&gt;I could feel my rib intercostals and so many stabilizing muscles that night, feeling so sore and happy as I crawled into bed and went to sleep. I’ve had that feeling in my body now &lt;em&gt;every time&lt;/em&gt; I’ve done KB swings, and usually carry perceivable fatigue into the next day, but it’s partially because I’m often-enough increasing the ‘work’ that I do every session.&lt;/p&gt;

&lt;p&gt;Once I started one-arm swings, I’d do five reps at a time, per side. I started at 55lbs, then went to 60 a few times, tried 45 lb swings once, liked it, and will probably keep upping the reps and weight as it feels good.&lt;/p&gt;

&lt;p&gt;I’ll slowly ease the rep count up, and sets. I started with 5 reps per side, then did 8, then reduced the weight and went to ten reps per side, and maybe 40 swings total, across a few sessions.&lt;/p&gt;

&lt;h3 id=&quot;other-variations-to-the-two-handed-kb-swing&quot;&gt;other variations to the two-handed kb swing&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Hold a kb that’s like 1/3rd your body weight while standing around, or stretching, or shifting weight and doing bodyweight squats and stretches and stuff. Bounce on the toes. Switch it back and forth between your hands often. I started with like a small number of minutes of holding it, while moving around. The one-arm weight/motion is very interesting, both while moving around or perhaps while remaining very still.&lt;/li&gt;
  &lt;li&gt;after a 45 lb/33% bodyweight suitcase carry, a 55lb one-arm kb swing isn’t such a leap, even though at first I surprised myself with how much I could move with the single-armed swing.&lt;/li&gt;
  &lt;li&gt;try to move slowly under/around the kb. Think doing light yoga while holding a kettlebell. mega challenging, interesting. One-leg balancing, golfball pickup type motions, if you want. Felt to me promotive of stability in ways that justified the effort.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So much for kettlebells. These have been something I’ve been doing regularly now for a few months. The same length of time that I’ve been doing this sprinting thing…&lt;/p&gt;

&lt;h2 id=&quot;barefoot-grassy-hill-sprints-in-the-park&quot;&gt;Barefoot Grassy Hill Sprints In The Park&lt;/h2&gt;

&lt;p&gt;I started these sprints I am about to describe before I restarted the KB swings&lt;/p&gt;

&lt;p&gt;The sprints had been going great for maybe two weeks, and then one of the times I walked past the kettlebells at the gym, I was like ‘my back and legs are already feeling great/tired, maybe i’ll be able to do kettlebell swings without my back feeling terrible the next day.’&lt;/p&gt;

&lt;p&gt;I was right.&lt;/p&gt;

&lt;p&gt;Anyway, here’s free-associating through sprints, as recorded in a paper notebook across a few days:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The idea originally had nothing to do with “running”. it started with ‘grounding’. A few friends have spoken in some length about grounding, over the years, the idea always seemed plausible, and I never did any particular action in response to it. years later, another friend that I’d meet at Cheesman Park, throwing frisbee, talked about it as he was taking his shoes off on a warm day in the fall, a few months ago.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I thought ‘what a reasonable idea’, as I took my own shoes/socks off and went barefoot for the rest of the frisbee throwing session. Eventually, I started going barefoot often-enough when the weather was nice and we were throwing a frisbee, but usually never took more than a few lazy steps at a time to catch a disk, while barefoot.&lt;/p&gt;

&lt;p&gt;relevant: years ago (2020) I took a gnarly back injury and basically have not run since then, and for a long time could barely walk. Then even short walks would wreck me. Shortly before the injury, I’d run the Leadville Trail Marathon, and was climbing, so I was pretty abled, and the difference was profound. Deserves it’s own blog post or two, some time. As I think on it, it really changed me, the time of that injury, the things I experienced immediately afterwards.&lt;/p&gt;

&lt;p&gt;also relevant, years before that injury, after reading the &lt;a href=&quot;https://www.goodreads.com/book/show/6289283-born-to-run&quot;&gt;Born to Run&lt;/a&gt; book that made the rounds, maybe in 2009 or 2012 or whenever. That was the one and only other time in my 35 years I’d done a specific ‘barefoot run’, for like 12 minutes, on a patch of grass at a park. My calves were DESTROYED, even though it was a short run, and I was used to long runs in normal shoes. I never ran barefoot again, but the memory stuck with me.&lt;/p&gt;

&lt;p&gt;So, back to 2024…&lt;/p&gt;

&lt;p&gt;I don’t have running shoes, and didn’t want to have to obtain another pair.&lt;/p&gt;

&lt;p&gt;I also know that walking up a hill is lower-impact on the body than a level surface or down a hill.&lt;/p&gt;

&lt;p&gt;I also know that walking on grass is lower-impact than walking on asphalt, concrete, or dirt. It’s gentle on the skin.&lt;/p&gt;

&lt;p&gt;So, I figured if I ran, and even &lt;em&gt;sprinted&lt;/em&gt;, with a strong body position, &lt;em&gt;up a hill&lt;/em&gt;, &lt;em&gt;on grass&lt;/em&gt;, &lt;em&gt;while barefoot and on the balls of my feet&lt;/em&gt;, and went only short distances, while doing &lt;em&gt;lots&lt;/em&gt; of walking or standing around, I might not injure my back, and might find it &lt;a href=&quot;(/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity)&quot;&gt;interesting enough&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I was right. It was all sorts of interesting, enjoyable, peaceful. I’m calling this ‘sprinting’, but it also involved plenty of ‘meandering back from whence I sprinted at a very, very leisurely pace’.&lt;/p&gt;

&lt;p&gt;I started with a short distance and a gentle but fast run. More than ten paces, probably less than 20, usually only the distance I could run while holding a single breath, or maybe two, because breathholding and nasal breathing. It’s a hold-over, always-running script in my brain. Ensuring I’m breathing through my nose, and sometimes holding my breath, or breathing in a very controlled way.&lt;/p&gt;

&lt;p&gt;Sprint sprint sprint, then walk, lazily, back to where I began, then walk around a little more, then sprint sprint sprint, repeat. It is vanishingly rare that I begin a sprint while still breathing hard, at all, from the prior sprint, and I usually let plenty of time elapse &lt;em&gt;after&lt;/em&gt; my breath has all the way slowed down again.&lt;/p&gt;

&lt;p&gt;That was the routine, and it’s been extremely rewarding.&lt;/p&gt;

&lt;strike&gt;TODO: create photo album, link to convey the gist of the vibe of the sprint/walk things&lt;/strike&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://photos.app.goo.gl/f1442CnnQzqbhQiv5&quot;&gt;Here’s a photo album of the vibe of the barefoot park sprints&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;these-sprints-vs-distance-running&quot;&gt;These “sprints” vs. distance running&lt;/h3&gt;

&lt;p&gt;I’m appreciating how uneasy I am naming things sometimes, and ‘sprints’ is making me uneasy. It’s emphasizing the wrong thing. Alas.&lt;/p&gt;

&lt;p&gt;So much about the experience compares/contrasts with running. I like easy things, and tend to do more of something if it’s easy than if it’s difficult.&lt;/p&gt;

&lt;p&gt;Here’s ways this sprinting thing is easy:&lt;/p&gt;

&lt;p&gt;It’s barefoot, and I’m always close to where I start, so I can show up wearing ‘regular’ shoes, normal clothing, with a backpack, coffee, and more. Drop the bag, take off the outer layer of cloathing (i’ll have shorts or leggings under my pants, pretty much all the time, in the winter), take off shoes and socks, fold it all neatly in the grass/under a tree and I’m ready to run.&lt;/p&gt;

&lt;p&gt;I started this in the winter in colorado. there’s plenty of sunny days, and as long as there’s not snow on the ground, I’ll run. I’ve run barefoot in as cold as like 21 degrees farenheight. Only because the sun was out, and there was no snow.&lt;/p&gt;

&lt;p&gt;Again, much of the niceness to me of the sprints isn’t even the sprinting, it’s the walking around on the ground barefoot. Sometimes it’s cold, or the ground is wet in different ways. wet ground still counts as ‘nice’. It’s like a tiny little ice bath, when it’s snow melt or recently frozen. Like I said, I prefer comfort, and I usually run in dry, warm grass, but there’s a blob of trees where I run, and I sometimes interact with the shadow, which keeps ice/swow longer than the spot in the sun.&lt;/p&gt;

&lt;p&gt;Or I run/walk/stand mostly in the shadows of the trees, in the warmth.&lt;/p&gt;

&lt;p&gt;The hill I run up is south-facing, and because it’s sloped, water flows off it, so it dries out really quickly after snow, and becomes very usable very quickly, even when lots of the rest of the ground is covered with snow.&lt;/p&gt;

&lt;p&gt;Having my backpack with water in it, coffee, my coat, extra layers, makes it convenient even in the winter. Since I ride my scooter even in the cold, I’m accustomed to having a pair of leggings (that I can run in) under whatever pants I’m wearing that day anyway.&lt;/p&gt;

&lt;p&gt;I warm up by sometimes moving at a walking speed, but doing ‘high knees’ or doing a slow, ‘in place’ jump on each leg. It can look sorta like skipping. It can ‘build’ towards you doing something that looks like running through thigh-deep water.&lt;/p&gt;

&lt;p&gt;My goal was always to simply stress enough that I’d feel it the next day, &lt;em&gt;on the bottoms of my feet&lt;/em&gt;. It wasn’t an aerobic workout, it wasn’t a leg workout. I’ll never forget how much a 2-mile barefoot run did me in, when I let myself run barefoot with my normal distance running form, in high school.&lt;/p&gt;

&lt;p&gt;The first session I did a low number of trips up the hill and back, I stopped while I felt fine and fresh, and I reflected ‘this small amount of movement is still more than I’ve had for a while’. It felt great, and as importantly, felt great the next day. Since I was at the park again anyway, throwing frisbee with a friend, I did some more ‘sprints’ up the hill.&lt;/p&gt;

&lt;p&gt;I’m a curiosity-driven person, I don’t know if that comes across as why these sprint things are so interesting to me.&lt;/p&gt;

&lt;p&gt;Eventually, I started jogging slowly back to the start, sometimes, and immediately would sprint again. Or I’d walk back, walk some more, walk even more, stand stationary for a bit, and then sprint again.&lt;/p&gt;

&lt;p&gt;After my sprints, to continue with the theme of applying impulse to the balls of my feet, I would/will hop on the balls of my feet, bouncing with two feet a few times and then landing firmly on one foot, to try to catch as much force as I could on each side. I could feel the gentle soreness the next day, always.&lt;/p&gt;

&lt;p&gt;I’d always evaluate how I felt &lt;em&gt;the next day&lt;/em&gt;, and never pushed anything ‘hard’ or ‘got worked’ or anything, still have not, in any particular session.&lt;/p&gt;

&lt;p&gt;It feels so good in the balls of my feet, the arches, calves, supporting structures. I have found tons of interestingness in the simple observation and sensation of the soreness.&lt;/p&gt;

&lt;p&gt;I don’t count things, either. I don’t count reps, steps, distance, time. I start when my breath is still and slow, and I usually stop before it’s much more than ‘slightly elevated’.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://photos.google.com/share/AF1QipNkj3Vt4w7sWCh_1Anqu_AeMHVjbYJbn0Wg6eD-LRmXZw_Xk3mAVAUuWdHSmASNzQ?key=aldOMU1hR2Fob1BQbGxvRWJYenBsSkNtSEs0WTFn&quot;&gt;I got the entire sprint workout from a recent warm day, here&lt;/a&gt;. The first video, it was a bit too sunny, so I moved into the shade of some trees, and finished the sprints, in the second timelapse video. The whole thing took less than ten minutes.&lt;/p&gt;

&lt;p&gt;It feels so nice getting sunshine on my skin (colorado, afterall) and grass, dirt, moisture on my feet. My body feels &lt;em&gt;so good&lt;/em&gt;, months later, still doing these sprint things. SO GOOD!&lt;/p&gt;

&lt;p&gt;I’ve been doing kettlebell swings throughout, too. Sometimes on days I’d run I’d skip the swings. When there’s snow out and I don’t sprint, I’m vastly likely to do some kettlebell swings. Often I’ll do both, because both the park and the gym is ‘right on the way’ for me, to many places. The park is close enough I can walk there, or I’ll take my scooter and convert a 12 minute walk to a 4 minute scoot.&lt;/p&gt;

&lt;p&gt;My brain and mood enjoy the experience. I’ll often take a frisbee and text my normal frisbee throwing friend(s), and he’ll sometimes join me for some frisbee tossing. I might frisbee before, during, or after the sprints.&lt;/p&gt;

&lt;p&gt;I’ve done these sprints with Eden. We were walking through cheesman already, she was asleep in the jogger, so I parked her jogger where I usually sprint, in the shade of a tree, and did the running right next to it. Then tom met me for some frisbee, we tossed for a while, then Eden woke up and was ready to depart, so we did. the whole thing is quite peaceful, full of ease, effortlessness.&lt;/p&gt;

&lt;p&gt;It’s nice to not spend a single dollar on traditional running gear.&lt;/p&gt;

&lt;p&gt;I don’t like the impact of doing anything on asphalt, and I won’t run on a road that is cambered, because it feels devestating to one’s body, to run across a slope like that. I don’t have to deal with cars, in this sprinting thing, either, and I don’t hear any engines nearby, unlike running on a road.&lt;/p&gt;

&lt;p&gt;When traveling, out of town, without access to Cheesman Park, and still wanting to do these sprints, I modified it to run in the playing field of a school near where I’ve visited. It was all fine, by the way. I prefer to run up a hill, yet this format seems to work on a level surface, well enough.&lt;/p&gt;

&lt;p&gt;The whole workout can be done in 5 minutes, or, if I’m feeling a longer session, it will stretch across many more minutes.&lt;/p&gt;

&lt;h2 id=&quot;grand-conclusions&quot;&gt;Grand conclusions&lt;/h2&gt;

&lt;p&gt;I’m so aware of how some of my skeleton and muscles function together often-enough to maintain the shape of a box, other times these systems function to form something of a column. The column of my spine is very perceivable along side the ‘box’ of my torso. I’m aware of holding tension/stiffness/maintaining a position through my whole body, in various situations. my climbing feels &lt;em&gt;better&lt;/em&gt;. way better. My shoulders feel strong, my fingers feel strong, my core feels strong. It’s been interesting to experience the transfer of power from holding the round kb handle, for instance, and the ‘c’ shape one’s hand makes when crimping on steep holds. This is the ‘active hand position’ &lt;a href=&quot;https://www.instagram.com/c4hp/reel/DFsnMsWSbtY/?api=1&amp;amp;hl=zh-cn&quot;&gt;tyler nelson talks about&lt;/a&gt;. Being able to hold that ‘c’ is easier to me now, dramatically so, having ‘trained’ it, unintentionally, with kettlebells.&lt;/p&gt;

&lt;p&gt;I feel light on my feet when walking around.&lt;/p&gt;

&lt;p&gt;I still do not like to train, or ‘work out’, generally, and I don’t think this will change for me.&lt;/p&gt;

&lt;p&gt;I am thrilled that with almost zero time I get so much. The sprinting is also ‘walk barefoot in the grass in a park in the sun’ which obviously we should all be so lucky as to get a little bit of that every day. It’s nice for my 🧠.&lt;/p&gt;

&lt;p&gt;It’s also peaceful in my own head, as I always have found various activities to be supportive of. (climbing, distance running)&lt;/p&gt;

&lt;p&gt;usually I have earplugs in and can only hear my own breath, I do both the sprints and the kettlebell swings. I wear ear plugs most of the time I’m not at home, and even some of the time I am. 😬 Ear plug wearing while exercising seems to make it effortless for me to perceive my own breath. Again, the book &lt;a href=&quot;https://www.goodreads.com/book/show/48890486-breath&quot;&gt;breath&lt;/a&gt; is worth mentioning. I care about air quality, running the air through my nose makes it gentler/cleaner on my lungs. Even if I’m exercicing for such a long time that I need to take breaths through my mouth, I’ll be aware of when the aerobic demand exceeds what I can meet through my nose, I’ll switch to mouth breathing only as much and as long as I must, and then as soon as possible back to nasal breathing.&lt;/p&gt;

&lt;p&gt;Sidebar: After &lt;a href=&quot;/tongue-tie&quot;&gt;i got my tongue tie fixed, and it rocked my world&lt;/a&gt;, per the recommendation of my myofunctional therapist I got ‘bodywork’ from a Dr. Lopez, and it was such an experience. I did a bunch of reading of his stuff before the appointment, read a short pamphlet about using one’s own thumb to apply a little pressure to the inside of one’s nose for about ten seconds. It suggested that if one does it right, one would experience an increased capacity to fit air through the nose, making what feels to me like a big-enough difference in some leters-per-minute measure. So, usually when I do the sprints, if I find myself breathing hard through my nose, I’ll do ten seconds of nostril stretching, on each nostril. I also now note some pictures or slow motion video of elite sprinters, some of them, at times, &lt;em&gt;moving quickly&lt;/em&gt; with a closed mouth and relaxed-looking face. Thought provoking, eh?&lt;/p&gt;

&lt;p&gt;Next, I feel light on the wall.&lt;/p&gt;

&lt;p&gt;the one-arm swings + sprints helped me feel the intense usage of arms/shoulder girdle/the sides/front/back/bottom of the ‘box’ of my core. (Do not neglect the bottom of the box of the core! Kegles &amp;amp; pelvic floor strength is for everyone with a pelvis!)&lt;/p&gt;

&lt;p&gt;Has resulted in me feeling unexpectedly stronger. Been pretty fun.&lt;/p&gt;

&lt;h2 id=&quot;updates-on-sprints-after-two-more-weeks&quot;&gt;Updates on sprints after two more weeks&lt;/h2&gt;

&lt;p&gt;I’m still quite pleased. I did some unexpectedly long walks on concrete, amidst some of the prior exercise, and I felt much stronger, most of the time, than usual. I think it would have been too many miles if I hadn’t been getting stronger.&lt;/p&gt;

&lt;p&gt;I did like three seven-mile days in a row, all back to back.&lt;/p&gt;

&lt;p&gt;I got a slight over-use tendon sensitivity on one of my feet. There was, and to a much lesser degree still is, pain around the movement of lifting my right toe, entirely coherent with a regular walking motion. I modified my gait a little, when it was really bad, and didn’t use it until it felt mostly better, and I’ve been easing back into using it. It was hurting quite appreciably for a few days, and now five days later it’s still delicate and I retain some of my accommodations. Sooo I wish I hadn’t done that to myself. There was a day after the big huge days of walking where I thought “hmm, this feels like it is damaged” and I went on a bit more of a barefoot walk in Cheesman than I wish I had. That night is when I realized it was pretty sensitive. The toe looks/feels like a bruise along the top of it, close to what it would feel like if the nail had been beaten into the nail bed (like after a long run, something I experienced often enough marathon training).&lt;/p&gt;

&lt;p&gt;Truly, this is the only pain of substance I’ve experienced. All the rest of the pain has been pain of &lt;em&gt;interest&lt;/em&gt;, where I note slight sensitivities and sorenesses as I move around, in certain ways, body positions, motions, and it’s all, still, interesting. I appreciate how I’ve felt pleasent stress inside of my knee, the tops of the shin bones. I like how my knees and ankles feel.&lt;/p&gt;

&lt;p&gt;The sprints &lt;em&gt;still feel worthwhile&lt;/em&gt;, and the time walking/bounding barefoot continues to be time very well spent.&lt;/p&gt;

&lt;h2 id=&quot;updates-on-kettlebells-after-two-more-weeks&quot;&gt;Updates on kettlebells after two more weeks&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;some gyms have kettlebells that have rough, textured handles. The high-to-me weights are therefore rough on the skin of my hands. some kettlebell handles are too rough for me to feel comfortable with the swings. I could feel myself trying to accommodate it somehow and it was hurting, so I did a lot less reps. The skin at the base the fourth finger always gets pulled by the kettlebell, picks up callouses that have never torn but have sometimes felt close. Ideal kettelbell handles look like brushed metal, polished smooth. Don’t forget the chalk.&lt;/li&gt;
  &lt;li&gt;I’m still getting lots of climbing-specific benefits from the one-armed swings. I’ve now done both lower-weight higher rep one-arm swings, and higher-weight lower-rep schemes. It’s all been &lt;a href=&quot;/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;interesting&lt;/a&gt; to me, which is good enough. It continues to feel deeply supportive of strong climbing.&lt;/li&gt;
  &lt;li&gt;I’m sorta annoyingly &lt;em&gt;still&lt;/em&gt; telling lots of people about this strange magic that helps my back feel great, and everything else too. If you’ve done more than skim a few paragraphs of this article, you’ve probably spent more time reading than your first two kettlebell workouts would take.&lt;/li&gt;
  &lt;li&gt;I was having issues where the heaviest swings were pulling at the callouses at the base of each hand’s 4th finger. Eventually I noticed that if I sqeeze the handle a bit more at the bottom of the swing, it seems to pull less hard on the skin. So, if the skin in the hands starts hurting, squeeze harder?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My fingers and hands feel nice. I’m not surprised, as often-enough I’ve felt profoundly sore in the small muscles inside my hands themselves, and all over the upper body. Much of the fatigue and soreness moves in waves through the shoulders and ‘shrugging’ motions.&lt;/p&gt;

&lt;p&gt;I am really curious for someone else to replicate this, doing lots of heavy two handed kettle bell swings, and eventually trying one-handed (heavy) kettlebell swings. I did one arm swings recently with 65 lbs, which is like 48% of my bodyweight. Heaviest I’ve done yet, and felt ‘lighter’ than the first time I tried 55 lb one-armed swings. My form and posture keeps getting better, and have I mentioned I feel stronger?&lt;/p&gt;

&lt;h3 id=&quot;more-notes-from-a-few-weeks-later&quot;&gt;More notes from a few weeks later&lt;/h3&gt;

&lt;p&gt;I’ve regularly been dealing with the skin on my hands suffering under the weight of the kettlebell. HUGE NEWS! When I squeeze the kettlebell handles more tightly, much of the discomfort related to the skin pulling goes away. It took years of swinging a kettlebell for me to make this connection, I’ve never heard it articulated before. 🧐&lt;/p&gt;

&lt;p&gt;I was obviously squeezing enough to hold onto it, but the skin was ‘sloshing’ around under the kettlebell. this is now minimized when I squeeze the bell harder. Huzzah.&lt;/p&gt;

&lt;h2 id=&quot;related-reading&quot;&gt;Related Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/48890486-breath&quot;&gt;Breath: The New Science of a Lost Art&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.instagram.com/c4hp/reel/DFsnMsWSbtY/?api=1&amp;amp;hl=zh-cn&quot;&gt;Drop the load a little and increase the muscle activity. Your fingers will thank you for it (tyler nelson instagram)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;Driven by Compression Progress&lt;/a&gt; 
&lt;a href=&quot;https://photos.app.goo.gl/f1442CnnQzqbhQiv5&quot;&gt;a photo album of the vibe of the barefoot park sprints&lt;/a&gt;
&lt;a href=&quot;https://photos.app.goo.gl/WDmZQuUpPWGmMRPh6&quot;&gt;a photo album containing two videos - two-handed swings, reps 80-100, with a 75 lb kettlebell, and one-handed at 55 lbs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>On Peeing</title>
   <link href="https://josh.works/on-peeing"/>
   <updated>2025-02-26T13:00:00+00:00</updated>
   <id>https://josh.works/on-peeing</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Yes, peeing. Also called ‘pissing’, or ‘urination/urinating’. I noticed a collection of thoughts emerging in my mind, tied together with a very specific theme. I was pretty grown before I had necessarily encountered any of these things, so if any of this is interesting or relevant to any of you, may it go well for you. Please see &lt;a href=&quot;https://xkcd.com/1053/&quot;&gt;todays ten thousand&lt;/a&gt; for more context.&lt;/p&gt;

&lt;p&gt;Also, would you believe this is only the &lt;em&gt;second&lt;/em&gt; most contentious thing I am writing today? The piece that is full of &lt;em&gt;actual&lt;/em&gt; spicy takes: &lt;a href=&quot;/on-magic-strings&quot;&gt;I think I believe in magic, &amp;amp; implications&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;elimination-communication-useful-for-infants-and-their-caretakers&quot;&gt;Elimination Communication (useful for infants and their caretakers)&lt;/h2&gt;

&lt;p&gt;The first way I want to talk about peeing is to bring attention to something that is &lt;em&gt;pretty darned cool&lt;/em&gt;, and I was routinely fascinated by my own observations of it.&lt;/p&gt;

&lt;p&gt;“Elimination Communication” is a strategy of learning to communicate with an infant around its own elimination.&lt;/p&gt;

&lt;p&gt;It’s a full drop-in strategy/replacement for what someone is talking about when they say “potty training” or “using diapers” today. (Eden never ‘got potty trained’ because she never ‘got diaper trained’.)&lt;/p&gt;

&lt;p&gt;Babies have routines around when they pee and poop, like you and me. If you leave a newborn naked on a puppy pee pad or a &lt;a href=&quot;https://lilhelperusa.com/collections/mats-pillows&quot;&gt;little helper waterproof mat&lt;/a&gt; while they’re doing their normal infant thing, you’ll be able to see when they eliminate.&lt;/p&gt;

&lt;p&gt;You might notice that there is facial expressions or movements or sounds that happen &lt;em&gt;before&lt;/em&gt; the elimination, and you might start giving the kid ‘potty-tunities’, where you hold them seated in your lap over a little tupperware, when it seems like a good time. (upon transitions, after they’ve been sleeping, seated for a while, etc)&lt;/p&gt;

&lt;p&gt;You take a deep breath for relaxation, their back against your chest, and as you exhale you say “pss pss” or maybe ‘mm mm’. If they have a pee, they might pee, a poop, they might poop. Otherwise, they might squirm a bit and crawl right off and carry on with the day. We taught eden how to say ‘all done’ as one of her first hand signals, so she could simply wave a hand in the air when done.&lt;/p&gt;

&lt;p&gt;You’ll always give more ‘potty-tunities’ than the kid needs, and once you start giving enough well-timed potty-tunities that the kid happens to using the container regularly, you’ll be amazed at how much ease exists in your life.&lt;/p&gt;

&lt;p&gt;It’s peaceful, and how traditional socieities without industrialized diaper systems would did this. It’s how many people around the world today learn. no diaper changes, can be done literally anywhere, without interrupting anything, like a conversation. If outside, one can help the kid pee into the grass. No container required.&lt;/p&gt;

&lt;p&gt;Eden wore lots of long shirts, no diaper or pants, and then legwarmers that went all the way up her legs. We could give her a pottytunity with zero fuss, and she quickly learned the routine of it too. She was only a few months old when often enough she would wake up from a long nighttime sleep with a dry diaper, as soon as she stirred, we’d give her a pottytunity, and immediately she released a &lt;em&gt;huge&lt;/em&gt; amount of urine, and then was ready to begin the day.&lt;/p&gt;

&lt;p&gt;It’s an experience.&lt;/p&gt;

&lt;p&gt;I’d suggest starting with the &lt;a href=&quot;https://godiaperfree.com/elimination-communication/&quot;&gt;go diaper free&lt;/a&gt; podcast/resources, if you find yourself in this spot.&lt;/p&gt;

&lt;p&gt;Forms of ease that were experienced were:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;easy to use cloth diapers, because MOST eliminations would be effortlessly caught in a container&lt;/li&gt;
  &lt;li&gt;zero “diaper rash”. (i didn’t know that the reason some diapers talk so much about how absorbant they are is bc it’s common to leave a soiled diaper on a kid in some situations! Couldn’t be me)&lt;/li&gt;
  &lt;li&gt;eden never had to cry to announce an upcoming elimination, OR to announce that that she had a wet diaper. She usually didn’t wear diapers of any sort, and never when anything was wet. Obv she eventually was able to simply announce to us when she needed help with the bathroom.&lt;/li&gt;
  &lt;li&gt;paired well with a bidet (more on that below)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;on-the-squatty-potty&quot;&gt;On the Squatty Potty&lt;/h2&gt;

&lt;p&gt;I’ve long been very pleased with the squatty potty I’ve had. I suggest you watch this extremely classic commercial:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=CwKNjtx2H1g&quot; target=&quot;_blank&quot;&gt;Squatty Potty Unicorn Commercial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One can sorta ‘fake’ a squatty potty by simply squatting on the floor while eliminating, instead of sitting on the toilet seat.&lt;/p&gt;

&lt;p&gt;It’s more comfortable, though, IMO to squat while using the squatty potty platform, &lt;em&gt;or&lt;/em&gt; to prop your legs on the platform while sitting on the toilet seat like usual.&lt;/p&gt;

&lt;p&gt;I think ‘propping legs on squatty potty while sitting on the toilet like usual’ is how most people use the squatty potty.&lt;/p&gt;

&lt;p&gt;I put my feet on the squatty potty, and then &lt;em&gt;squat&lt;/em&gt; over the toilet, to use it. Very comfortable. Would endorse.&lt;/p&gt;

&lt;p&gt;Anyone out there who is pooping is sitting or squatting when they’re doing so, regardless of if they have a penis or a vulva.&lt;/p&gt;

&lt;p&gt;That in mind… not only do I squat/sit to poop, I also squat/sit to pee.&lt;/p&gt;

&lt;h2 id=&quot;on-why-i-sit-when-i-pee&quot;&gt;On why I sit when I pee&lt;/h2&gt;

&lt;p&gt;For many years, I have almost exclusively sat down to urinate.&lt;/p&gt;

&lt;p&gt;I have a penis, and I know it’s common-enough for others who also have a penis to stand when they pee.&lt;/p&gt;

&lt;p&gt;I don’t like to stand when I pee.&lt;/p&gt;

&lt;p&gt;I don’t remember exactly why I started sitting. It may have been after I took a back injury that left me unable to stand normally or without pain, even for very short periods of time, or maybe was already the case before then.&lt;/p&gt;

&lt;p&gt;I have excellent reasons&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;it’s comfortable&lt;/li&gt;
  &lt;li&gt;there’s zero splashing in any way, not on the toilet bowl, the seat, the area behind the seat, ones legs or pants.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One notices, sometimes, if peeing while standing:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;one feels little droplets of pee or toilet bowl water sometimes bouncing out of the bowl&lt;/li&gt;
  &lt;li&gt;if one is wearing pants and thus not feeling the droplets on one’s skin directly… &lt;em&gt;one is still splashing urine on one’s pants&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When one cleans a toilet regularly, it’s effortless to tell if someone is peeing in it while standing, or if no one ever uses it while standing. There’s a yellow gunk buildup behind the toilet bowl from the splashing. No thank you.&lt;/p&gt;

&lt;p&gt;once someone, upon seeing me in the bathroom peeing for the first time, said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;that is the most attractive thing I’ve ever seen a man do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🤷‍♂️. I say this person would be considered a credible evaluator of attractive attributes in people with penises.&lt;sup id=&quot;fnref:ppl-with&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:ppl-with&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;By the way, when I am using public restrooms, I’m more likely to use a urinal and then stand off to one side, aiming to make as oblique an angle between the stream and the urinal, to achieve some of what is achieved with the shape of &lt;a href=&quot;https://www.newscientist.com/article/2348244-physicists-have-designed-a-urinal-that-drastically-reduces-splashback/&quot;&gt;splashless urinals&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If I use a regular seated toilet out in the while, I’ll almost exclusively squat over it (for peeing or pooping). I mostly squat over my toilet at home, too, but I combine it with the squatty potty for a very comfortable squat. (by that I mean my butt doesn’t come in contact with the seat often-enough)&lt;/p&gt;

&lt;p&gt;This isn’t super novel to me. I use my own bathroom many times a day. I know plenty of other people with penises who also sit when they pee.&lt;/p&gt;

&lt;p&gt;So, if you have a penis, and don’t often pee, consider trying it out more often and see what you think. If you have a penis and want to possibly reduce the cleaning burden of the toilet where one pees, certainly sit down.&lt;/p&gt;

&lt;p&gt;And if you’re sitting, try squatting, AND try squatting WHILE USING THE SQUATTY POTTY. mega comfy.&lt;/p&gt;

&lt;h2 id=&quot;bidets-and-wand-bidets&quot;&gt;Bidets and Wand Bidets&lt;/h2&gt;

&lt;p&gt;Since at least 2019, I’ve used a bidet, exclusively, to clean after defecation. I long used a under-the-seat &lt;a href=&quot;https://hellotushy.com/&quot;&gt;tushy bidet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One still needs to dry oneself after using a bidet, so most people who have bidets still use toilet paper. It is a lot less toilet paper and used in a different way, because it’s needed soley to dry the skin.&lt;/p&gt;

&lt;p&gt;When the pandemic happened and toilet paper shortages were a thing, it felt satisfying to not be affected. One can completely get off toilet paper by using a designated fabric wash cloth to dry, too.&lt;/p&gt;

&lt;p&gt;The under-the-seat bidets can be sorta a pain to install. The warm-water function ends up being pointless.&lt;/p&gt;

&lt;p&gt;I ended up switching to a &lt;a href=&quot;https://www.amazon.com/Handheld-Toilet-Adjustable-Pressure-Feminine-Stainless/dp/B086W1YZSH?source=ps-sl-shoppingads-lpcontext&amp;amp;ref_=fplfs&amp;amp;psc=1&amp;amp;smid=A3GLIMJW6APPOC&amp;amp;gQT=1&quot;&gt;wand-style, hose-style bidet&lt;/a&gt; a few years ago, and never went back. they come as a two-pack from Amazon for like $30, I’ve now installed them in quite a few different houses.&lt;/p&gt;

&lt;p&gt;A bidet and especially a wand bidet helps with cloth diapers and elimination communication. Effortless to rinse out the container when used, or rinse of the cloth diaper if it has a little poop on it, before running it through the washing machine.&lt;/p&gt;

&lt;p&gt;A wand bidet helps with cleaning the toilet itself, and if it’s near the tub, you can use it to rinse things off in the tub.&lt;/p&gt;

&lt;p&gt;A wand bidet doesn’t interfere with the toilet seat.&lt;/p&gt;

&lt;p&gt;The clip for holding it sits over the toilet bowl itself, so there’s no screws to be dealt with, it doesn’t even need to have a wall-mounted clip.&lt;/p&gt;

&lt;p&gt;One doesn’t need to really touch oneself when using it - I direct the stream of water into my other hand, which I use to splash around or scrub anything that needs it. Using the second hand is key wand-bidet usage beta. One needs no hands when using a seat mounted bidet, but then one is getting a jet of water STRAIGHT TO THE BUTT! (or the vulva).&lt;/p&gt;

&lt;p&gt;The wand bidet lets you easily direct the water to flow over, across, parallel to, anything that needs it. You don’t have to spray it straight at your skin. It’s extremely comfortable for anyone with pain or sensitivity in the region. Not having to use paper preserves the skin, if it’s sensitive. If one is pregnant and needing to use the bathroom a lot, a bidet of any sort is gold.&lt;/p&gt;

&lt;h2 id=&quot;notes-on-a-two-container-toilet-system&quot;&gt;Notes on a two-container toilet system&lt;/h2&gt;

&lt;p&gt;Long ago, a friend &lt;a href=&quot;https://xkcd.com/356/&quot;&gt;nerd-sniped&lt;/a&gt; me with this amazing book:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/56246289-the-humanure-handbook-4th-edition&quot;&gt;The Humanure Handbook: Shit in a Nutshell&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I read it all, found it exceptional. Cannot unread it. Was written by someone a few miles from where I went to college, he said&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;instead of writing a PH.D dissertation about bacteriology that no one would read, I decided to write a book about humanure that no one would read… and now we’re on to the fourth edition. a surprising number of people have wanted to read this.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I was so curious by it, I ended up setting up a full, working, two-container toilet system.&lt;/p&gt;

&lt;p&gt;This was possibly the most interesting thing I did that year, tons of learnings, and I kept being &lt;em&gt;shocked&lt;/em&gt; at the convenience and ease that was being experienced as a result.&lt;/p&gt;

&lt;p&gt;Alas, I no longer live in that house, but I plan on setting this all up again when I next have the opportunity.&lt;/p&gt;

&lt;p&gt;I wrote in various ways/places a lot of words about what I experienced, and I’ll probably bring that here when I find them.&lt;/p&gt;

&lt;h2 id=&quot;small-people-peeing&quot;&gt;Small people peeing&lt;/h2&gt;

&lt;p&gt;For eden, at home we have a portable toilet that is available to eden at all times. She usually likes to use the regular toilet, which has a stool in front of it, and usually gets a little help, if she wants. She sometimes opts to use her toilet.&lt;/p&gt;

&lt;p&gt;In her stoller, I keep this &lt;a href=&quot;https://www.amazon.com/Portable-Training-Foldable-Outdoor-Replacement/dp/B09T5M4JMB?source=ps-sl-shoppingads-lpcontext&amp;amp;ref_=fplfs&amp;amp;psc=1&amp;amp;smid=A3PRI6U464NNUK&amp;amp;gQT=1&quot;&gt;portable kids toilet&lt;/a&gt;. She knows we always have it, or almost always have it, especially if we’re going out for a while, and we can use it under a tree or in a private-ish place, even when at a park, and it’s provided a lot of ease to all of us, when using a ‘regular’ bathroom isn’t an option.&lt;/p&gt;

&lt;p&gt;Modern american bathrooms, especially at commercial facilities, have bright lights, bad accoustics, smells, strange sight lines, etc etc etc. Not super kid friendly. A portable toilet is mega convenient, mega peaceful. She also can still simply pee in the grass when she wants, though doesn’t exercise that option as much as she did as when she was an infant.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;I really like ease. I want ease, and usually I want it to be effortless. I know, I know. There’s a lot of ease baked into Eden’s elimination routines. That was a big piece of what I wanted to highlight. If you, or anyone you know, finds themselves on a path of helping a newly-born person sus out peeing and pooping, maybe you’ll think of some of these things.&lt;/p&gt;

&lt;p&gt;Then, of course, the other main part of this piece has nothing to do with kids and helping kids use the bathroom - it has everything to do with helping &lt;em&gt;me&lt;/em&gt; use the bathroom, and I like to be comfortable, clean, and I don’t mind at all being a little unconventional.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;on that note, I’m gonna go use the bathroom/squatty potty/my ability to squat/a wand bidet/a washcloth, brb&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It feels strange to type so many words about &lt;em&gt;urination&lt;/em&gt; (and, of course, technically, defecation), in some ways, and yet I also know I spend a lot of time/frequency peeing. It’s a pretty core human experience.&lt;/p&gt;

&lt;p&gt;I like things to be easy (squatty potty for me, elimination communication for infant), clean (wand bidet, sitting to pee), and I like where I’ve ended up.&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:ppl-with&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I note my language feeling most natural when I use phrasing like “people with penises” and “people with vulvas” as generalized stand-ins for ‘male’ and ‘female’ or ‘man’ and ‘woman’-coded language. I still find myself wrestling with the language, I made some upgrades when I read &lt;a href=&quot;https://www.goodreads.com/book/show/31448995-becoming-cliterate&quot;&gt;Becoming Cliterate: Why Orgasm Equality Matters–And How to Get It&lt;/a&gt;. &lt;a href=&quot;#fnref:ppl-with&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>On Magic, and Magic Strings</title>
   <link href="https://josh.works/on-magic-strings"/>
   <updated>2025-02-26T13:00:00+00:00</updated>
   <id>https://josh.works/on-magic-strings</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;v drafty, but wanted to get this out today.&lt;/p&gt;

&lt;p&gt;I’m publishing two pieces today, this piece you’re reading now is vastly more important than the other one, but it might be worth the click: &lt;a href=&quot;/on-peeing&quot;&gt;On Peeing&lt;/a&gt;. It’s very different than this one.&lt;/p&gt;

&lt;p&gt;I’ve long had a central organizing principal of my life oriented around the concept of “Magic Strings”.&lt;/p&gt;

&lt;p&gt;A string being defined from the programming point of view. A collection of text characters, as opposed to an array, a float, an integer, a boolean. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;True&lt;/code&gt; is a boolean value, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;True&quot;&lt;/code&gt; is a string containing the stringy characters &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;T&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;r&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;u&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;e&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Don’t believe me? If you’re on a mac, open your terminal, type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;irb&lt;/code&gt;, hit return (you’re now in a ruby interpreter) and type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;string&quot;.class&lt;/code&gt;. The return value will be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;String&lt;/code&gt;. Windows-machine-using people can use an online ruby interpreter like &lt;a href=&quot;https://replit.com/languages/ruby.&quot;&gt;replit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this world, today, 2025, I believe it’s goverend by real energies that animate real things, and some of the things governing the world are &lt;em&gt;strings&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;real-examples-of-almostmaybe-magic-contained-in-strings&quot;&gt;Real examples of almost/maybe magic, contained in strings&lt;/h2&gt;

&lt;p&gt;Patio11’s &lt;a href=&quot;https://www.kalzumeus.com/essays/dropping-hashes/&quot;&gt;Dropping hashes: an idiom used to demonstrate provenance of documents&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GUIDs, or ‘Globally Unique ID’ &lt;a href=&quot;https://en.wikipedia.org/wiki/Universally_unique_identifier&quot;&gt;wikipedia&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;While the probability that a UUID will be duplicated is not zero, it is generally considered close enough to zero to be negligible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The second part of that sentance is a &lt;em&gt;big deal&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Between hashing documents and GUIDs/UUIDs, I think it’s easy to say there is &lt;em&gt;real magic&lt;/em&gt; being accessed. It’s sorta mathy magic, and I see it as magic.&lt;/p&gt;

&lt;p&gt;So, by this definition, if &lt;em&gt;this&lt;/em&gt; is magic, I believe &lt;em&gt;all the way&lt;/em&gt; in magic.&lt;/p&gt;

&lt;p&gt;But this isn’t the only form of string magic I believe in.&lt;/p&gt;

&lt;h2 id=&quot;magic-strings-in-computer-systems&quot;&gt;Magic strings in computer systems&lt;/h2&gt;

&lt;p&gt;Next, to upgrade the magic, I’ll explain why strings pick up magical properties in computer systems. Lots of processes/objects/rows in databases are accompanied by a UUID, so if you’re trying to trace the completion of a process across systems, if, &lt;em&gt;if&lt;/em&gt; you can find the right magic string (or you can create the right magic string &lt;em&gt;now&lt;/em&gt; for a future version of you to find, then), you can follow a process through time.&lt;/p&gt;

&lt;p&gt;Imagine someone using a system requests an export of some data. A computer system might log something like `export 2a621613-9d65-4443-b662-547eb2ac715c starting…’&lt;/p&gt;

&lt;p&gt;and then dispatch that request to other systems that compile the data, build the CSV, wait till it’s done, emails the customer that the report is ready, etc. And so you can search your whole logs for that string, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2a621613-9d65-4443-b662-547eb2ac715c&lt;/code&gt;, and anytime you find it, you know it has to do with that original process.&lt;/p&gt;

&lt;p&gt;It can be like magic.&lt;/p&gt;

&lt;p&gt;Next, magic strings can be found as ‘sha’s. We discussed ‘dropping hashes’ above, or Patrick Mckenzie did. One uses that concept everywhere. Hunting through a git repo for a certain sha, looking through a codebase for a certain class name, looking through the ongoing, running system for certain instances of that class name or certain strings…&lt;/p&gt;

&lt;p&gt;so much of the job of a software developer is mediated by an ability to see value in an otherwise seemingly arbitrary collection of symbols.&lt;/p&gt;

&lt;h2 id=&quot;magic-strings-in-archival-documents&quot;&gt;Magic strings in archival documents&lt;/h2&gt;

&lt;p&gt;So, again, software development is often-enough ‘reading code’, so I’m used to looking through things that are old, or older versions of things that are newer. Sometimes ‘older versions’ means ‘a week ago’, sometimes it means ‘a decade ago’, sometimes much older.&lt;/p&gt;

&lt;p&gt;A sure, sure sign of something that matters &lt;em&gt;now&lt;/em&gt; having been placed in a document &lt;em&gt;then&lt;/em&gt; is if it has sufficient randomness &lt;em&gt;and&lt;/em&gt; is visible in the document then. Here’s some examples of sufficiently random things that if you find them now AND THEN you know it existed then:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;2a621613-9d65-4443-b662-547eb2ac715c
ea306dbfe385d5fe9710ac98b514ffba547fc4bb
271b9a
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Any of these, including the last one, contains way more than enough randomness to be useful.&lt;/p&gt;

&lt;h2 id=&quot;where-we-take-a-turn-into-ethnic-cleansing&quot;&gt;Where we take a turn into ethnic cleansing&lt;/h2&gt;

&lt;p&gt;Who’s surprised that this is taking a turn into genocide, murder, war?&lt;/p&gt;

&lt;p&gt;Here’s some other numbers that I think are close enough to magic strings:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;35, 50, 100, 150 (feet tall)
2.5, 2 1/2 (stories tall)
625, 1250, 5000 (square feet)
R1, R2, R3 (race/residence zone)
U1 (dwelling house district) U2 (apartment house district)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;These are some of the documents contained inside of &lt;a href=&quot;https://josh.works/full-copy-of-1922-atlanta-zone-plan#height-districts&quot;&gt;this other document, a 1922 document originating zoning in the USA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Look up any zoning code today, and you’ll see it full of references like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;up to a maximum height of 35’
6,000 sf 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;to read the 1922 document is to find a lot of phrases that hit different when you see them cropping up over and over, like in 1926, when a legal body in the usa approved the government’s use of &lt;a href=&quot;https://supreme.justia.com/cases/federal/us/272/365/&quot;&gt;‘zoning’ in euclid v. ambler&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s some quotes from that judgement:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;With particular reference to apartment houses, it is pointed out that the development of detached house sections is greatly retarded by the coming of apartment houses, which has sometimes resulted in destroying the entire section for private house purposes; that, in such sections, very often the apartment house is a mere parasite, constructed in order to take advantage of the open spaces and attractive surroundings created by the residential character of the district.&lt;/p&gt;

  &lt;p&gt;Moreover, the coming of one apartment house is followed by others, interfering by their height and bulk with the free circulation of air and monopolizing the rays of the sun which otherwise would fall upon the smaller homes, and bringing, as their necessary accompaniments, the disturbing noises incident to increased traffic and business, and the occupation, by means of moving and parked automobiles, of larger portions of the streets, thus detracting from their safety and depriving children of the privilege of quiet and open spaces for play, enjoyed by those in more favored localities – until, finally, the residential character of the neighborhood and its desirability as a place of detached residences are utterly destroyed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;holy run-on sentance. Seem familiar?&lt;/p&gt;

&lt;p&gt;That U-1. Where do you think it came from?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The court below seemed to think that the frontage of this property on Euclid Avenue to a depth of 150 feet came under U-1 district and was available only for …&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that’s how america legalized ethnic cleansing. Because the person that wrote the 1922 document, elsewhere in that document, said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Care has been taken to prevent discrimination and to provide adequate space for the expansion of the housing areas of each race &lt;em&gt;without encroaching on the areas now occupied by the other&lt;/em&gt;. [emphasis mine]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We all live now in a world fully mediated by someone trying to create ‘slave housing’ and ‘ghettos’, and doing so successfully.&lt;/p&gt;

&lt;p&gt;No wonder everyone’s ‘mental health’ in america is shit.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Notes on the movie Frozen, which I dislike, and Suzume, which is excellent</title>
   <link href="https://josh.works/notes-on-frozen-and-suzume"/>
   <updated>2025-02-20T13:00:00+00:00</updated>
   <id>https://josh.works/evaluation-of-the-movie-frozen</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;part of a longer series of drafts about the novel experience of being a parent, to someone currently best defined as ‘a young child’. I once wrote a lot about my experiences of things, then took a break, and drafted this blog post on a few pages of yellow legal pad, by hand, brought/edited/extended for the internet here. &lt;a href=&quot;/write-it-now&quot;&gt;Write It Now&lt;/a&gt; and such.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This will end up maybe being a series of recommendations and anti-recommendations&lt;/em&gt; Please skim, or make judicious use of the anchor links to skip around.&lt;/p&gt;

&lt;p&gt;I am happy to watch movies/shows with my kid. Because of that, and that I follow their interests, generally, I’ve watched a few movies/shows lately that I wouldn’t normally watch. This blog post started as a single page of handwritten notes about the movie &lt;em&gt;Frozen&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Why did you draft a blog post by hand, in this particular format?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Often-enough I watch a movie &lt;em&gt;with eden&lt;/em&gt;, if it’s a painful-to-me movie, a way I process my feelings/disappointment/anger is by creating something out of it. I also don’t begrudge Eden her taste for the interestingness of things. I get why Frozen is so appealing to kids, that is precisely why, or part of why, I am so frustrated by it. Some of the reasons it’s appealing is perfectly valid, of course. Interesting music, interesting visuals, crunchy-enough story line. Eden has normal-for-young-person taste, &lt;em&gt;and&lt;/em&gt; I think sophisticated taste.&lt;/p&gt;

&lt;p&gt;I love to watch movies with Eden. We’ve watched and enjoyed the movies of &lt;a href=&quot;https://josh.works/recommended-reading#studio-ghibli&quot;&gt;Studio Ghibli&lt;/a&gt;, over and over. There’s also been a whole bunch of days where the temperature has been &lt;em&gt;extremely cold&lt;/em&gt;, like a weekend of a high of four degrees farenheight. On most of the days we’ve gone out side at least a little, but my gosh we’ve been inside a lot lately. I’ll probably find more to say about it at some point.&lt;/p&gt;

&lt;p&gt;For instance, we’ve seen &lt;em&gt;Ponyo (2009)&lt;/em&gt; many times &lt;sup id=&quot;fnref:the-files&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:the-files&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, and enjoyed it’s beautiful depictions of all sorts of sea life, dignifying view of the ocean, people who are young, people who are old, the world, the ocean, water, hills, trees, sky, weather, food, independence, and more. We’ve seen many more Ghibli films than &lt;em&gt;just&lt;/em&gt; Ponyo, but &lt;em&gt;Ponyo&lt;/em&gt; is a good example of a movie that perfectly attracts the interest of a child, &lt;em&gt;and&lt;/em&gt; is not demeaning to an adult, and is full of beautiful themes, beautiful depictions of the world, and interesting and exciting movement of the plot through the movie. You might be able to watch it on Amazon Prime right now: &lt;a href=&quot;https://www.amazon.com/Ponyo-English-Language-Noah-Cyrus/dp/B08195R36Q&quot;&gt;&lt;em&gt;Ponyo&lt;/em&gt; with English dubs on Amazon Prime&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Studio Ghibli films are so dignifying and beautiful that to watch them is, to me, like taking a vitamin or going on a walk. It’s so dignifying in so many ways, I’m pleased for anyone to soak in any aspects of those movies.&lt;/p&gt;

&lt;p&gt;More recently, Eden has begun to get socialized into American media, because (unfortunately) we happen to live in America, and kids references to &lt;em&gt;Paw Patrol&lt;/em&gt; and movies like &lt;em&gt;Frozen&lt;/em&gt; and Disney and a number of other bits of media intended of kids are &lt;em&gt;ubiquitous&lt;/em&gt;. There’s of course a giant commercial industry around making tons and derivative media around &lt;em&gt;Frozen&lt;/em&gt;, &lt;em&gt;Paw Patrol&lt;/em&gt;, etc. 🤮&lt;/p&gt;

&lt;p&gt;Those shows unfairly weaponize kids’ interests and attention spans into something that honestly feels like &lt;em&gt;grooming&lt;/em&gt;, and it’s despicable, and anyone involved ought to feel shame for their role in the creation of the piece of media. Truly. I think I’d never watched the movie &lt;em&gt;Frozen&lt;/em&gt; until watching it with Eden, and my jaw hit the floor &lt;em&gt;many times&lt;/em&gt;. When someone else saw just a few minutes of the movie with us, they also routinely expressed shock at what was in the movie.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Strong words Josh, can you back that up?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Oh yes. Keep up.&lt;/p&gt;

&lt;p&gt;I’ve got a media review of &lt;em&gt;Paw Patrol&lt;/em&gt; &lt;strike&gt;coming up&lt;/strike&gt; appended to the bottom of this post.&lt;/p&gt;

&lt;p&gt;Regarding &lt;em&gt;Frozen&lt;/em&gt;, I wrote this blog post via paper, as I watched the movie with Eden. She likes to ‘process’ media, usually some of the interestingness she experiences is around knowing what’s coming next, so she gets a lot of enjoyment from re-watching movies. Without further adeui, here’s the notes, with light editing, as I captured them across multiple re-watches of &lt;em&gt;Frozen&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I’ll sometimes quote dialogue or a song, and add my reactions to it. I don’t think Eden is unfit to make her own assessments of anything, by the way. She often has astute observations.&lt;/p&gt;

&lt;p&gt;When we watch a movie, if it’s the first time we’ve seen it or especially later times, I sometimes (SOMETIMES! NOT OFTEN) ask a question like: - what do you think of that person’s tone? can you tell they have anger? can you hear that tension? are they being kind? do you think they are happy? sad? what do you think they are feeling? did that seem safe? what do you think of that music?&lt;/p&gt;

&lt;h2 id=&quot;notes-upon-watching-frozen&quot;&gt;notes upon watching &lt;em&gt;Frozen&lt;/em&gt;&lt;/h2&gt;

&lt;p&gt;Oof, re-reading the notes as I transcribe them here is a trip. Skim, treat the formatting loosely.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I don’t dislike &lt;em&gt;only&lt;/em&gt; patriarchal themes, I also believe that political authority is a myth, and dislike mononormativity, and moto-normativity.&lt;/li&gt;
  &lt;li&gt;I don’t like jokes in a kids movie that are callbacks to american car culture.&lt;/li&gt;
  &lt;li&gt;Anna, at the beginning, showing that her entire existence revolves around getting &lt;em&gt;chosen&lt;/em&gt; by a person to become that persons… property?&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;🎶 Maybe I’ll be noticed, maybe I’ll find romance? 🎶&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Both the children in this show, elsa and anna, experienced a few gnarly things in sequence. emotional abuse and neglect at the hands of their parents, then the parents died, and the kids were raised by… no one? for a few years? Then Anna and Elsa just reunite in advance of a coronation ball? Is a nation really choosing a traumatized child to become their symbolic head?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The beauty norms, so painful. sexualizes children, explicitely, as the movie starts with the depiction of these two female protagonists as children, maybe 5, and ends with them supposedly ‘adult’, where someone at disney finds it appropriate to see these people as sexualizable objects. Many parts of the the look is the same, and there is little distinction between how a &lt;em&gt;five year old&lt;/em&gt; is being depicted, and an adult. And certainly something appreciable about that distinction might be lost to the viewer of this piece, who is often-enough a child.&lt;/p&gt;

&lt;p&gt;the ‘big, innocent doe eyes’ gives helpless, shows matching the idealized male gaze of femininity. The skinny arms, impossible waists, over-exaggerated breasts, the belt that profiles hips, butt, and pubic region. Please read &lt;a href=&quot;https://www.goodreads.com/notes/43459593-fearing-the-black-body/27372191-josh-thompson?ref=abp&quot;&gt;Fearing The Black Body&lt;/a&gt;. It’s all gross, and has been said by a thousand other people.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Frozen&lt;/em&gt; normalizes emotional neglect and abuse.&lt;/p&gt;

&lt;p&gt;The dad (before his death) repeats over and over “suppress your emotions, conceal yourself, don’t show things” to Elsa, and then _coercively destroys her and anna’s memories to hide their own past from themselves”.&lt;/p&gt;

&lt;p&gt;Identical to how supremacists ‘cleanse’ the history of their victims, to hide from the victims the extent of their own abuse.&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;literally&lt;/em&gt; every single interaction between Elsa and Anna, for much of the movie, Elsa ends a conversation with violence. Anna keeps saying “She wont’ hurt me, we’re family”, normalizing the idea that not only is it acceptable to overlook clear harms and mistreatment from someone because they are family, that it’s in fact &lt;em&gt;good&lt;/em&gt; to end up dying as a result of their misdeeds.&lt;/p&gt;

&lt;p&gt;later, Elsa attempts to murder Anna via proxy by creating a vicious snow monster that, among other things, throws Anna off of a cliff. As soon as the snow monster lept into frame, the first time we saw it, Eden’s whole body stiffened up and she said “i don’t like that”, and we skipped the scene. In all the watchings and re-watchings of this movie, we’ve skipped that scene every time.&lt;/p&gt;

&lt;p&gt;The “we are family” admonishment is particularly painful to see, because much of the harm that people experience &lt;em&gt;is at the hands of their family members&lt;/em&gt;. Parents abusing children, spouses abusing spouses, neglect all around. &lt;sup id=&quot;fnref:family&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:family&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Jesus, I’m three entries into this, and I’m so angry at supremacists, evangelicals, the family system in which I and others was raised, and the long, long legacy of chattel slavery + the ethnic cleansing of the natives/nations, all by european americans.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Frozen&lt;/em&gt; normalizes centering the lives of aristocracy, for no reason. It’s dedignifying to children and young adults.&lt;/p&gt;

&lt;p&gt;This entire movie &lt;em&gt;could&lt;/em&gt; be about two people who are, in fact, not members of the nobility or aristocracy. I tell eden “belief in kings and queens and this ‘ruler’ stuff is a mental affliction experienced by some people who live in this country right now”. It’s extremely annoying when Anna bullies others because she is assuming a magical authority by right of ‘royalty’.&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;The ‘simple’ townsfolk are depicted as experiencing a naive giddy joy about the castle ‘opening its gates’ and a party. I am not interested in watching the self-aggrandizing fantasies of the ruling class. 🤢&lt;/p&gt;

&lt;p&gt;The townsfolk: “It’s corination day!” or “The castle gates are open!!!”&lt;/p&gt;

&lt;p&gt;Studio Ghibli, every single one of it’s movies, are infinitely more dignifying, and comprehendable to children.&lt;/p&gt;

&lt;p&gt;I feel ANGRY that the seemingly nice person Anna meets after her first song (who also commits an act of traffic violence, running her over with his horse) actually is a con man who goes on to almost kill Anna at the end of the movie!!!!! OUT OF SPITE! I get to explain to my three year old what ‘willfull betrayal’ is, and why this person who &lt;em&gt;seemed&lt;/em&gt; good is in fact now being ‘bad’.&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;More family BS:&lt;/p&gt;

&lt;p&gt;Frozen pushes a message:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Family would never hurt you, family is more important than everything, thus accept mistreatment’&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Frozen reinforces a colonizers mindset: No one indicates awareness of the subject class, or a displaced/enslaved people. (Compare this to Studio Ghibli’s &lt;em&gt;Princess Mononoke&lt;/em&gt;)&lt;/p&gt;

&lt;p&gt;Anna displays helplessness, self-abandonment, needs saving because of something inherent in her femininity, not  because her key support structures hurt her and abandoned her when she was a young child, including her parents, which is what actually happened.&lt;/p&gt;

&lt;p&gt;Cristof is written to be obsessed with who posseses her. “You got engaged???” or “She’s engaged!” as the only distinctive things he can note about her. Her status vis-a-vis another male. It’s &lt;em&gt;painful&lt;/em&gt; to behold the dehumanization.&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Frozen&lt;/em&gt;, nearly every interaction between two people who presumably have penises is an interaction mediated by dominance. It is inherent to being a man, to try to dominate someone else, and if you don’t dominate them, you’re getting dominated. Yes, this is a movie intended for &lt;em&gt;children&lt;/em&gt;. But it’s also being watched by their parents. Every message this movie purports to send about the experience of being human makes the world a worse place.&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;Anna, upon meeting a new and novel, sentient, non-threatning being &lt;em&gt;pretends to surprise to justify kicking off its head&lt;/em&gt;, anna and cristof written to be disgusted by Olaf’s injured state, saying things like “eeeewwwww its head” or “eeeewwwwww it’s body”. When Anna puts Olaf’s head back on Olaf’s body, it first goes on wrong, then she flips it over, and Olaf &lt;em&gt;thanks her&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Talk about supremacist fantasy. That’s what a supremacist would love - devestate an indigenous people, then, when &lt;em&gt;slightly&lt;/em&gt; repairing the harm caused by that supremacist, they want to be earnestly thanked by the victim.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;supremacists expect to be thanked by their victims for the abuse they meted out&lt;/em&gt;. &lt;sup id=&quot;fnref:abusers&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:abusers&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Frozen&lt;/em&gt; plays ethnic tropes regularly, as supporters of colonialsm. Non-state people as backwards, un-understandable, fractal variations of the ‘magical negro’ trope.&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;Cristof is depicted as being seen by the trolls as an obviously superior being. #supremacy&lt;/p&gt;

&lt;p&gt;The whol movie is obsessed with &lt;em&gt;romance&lt;/em&gt; take away romance between the protagonist and ‘love interests’ and there is hardly a plot move remaining. Obviously fails the &lt;a href=&quot;https://en.wikipedia.org/wiki/Bechdel_test&quot;&gt;bechdel test&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The entire movie is settler colonialist propaganda. erasing the existance of anyone/thing existing before they showed up. &lt;em&gt;Frozen II&lt;/em&gt; is vastly worse.&lt;/p&gt;

&lt;p&gt;Normalizes women as property, belonging exclusively to someone else, never to themselves.&lt;/p&gt;

&lt;p&gt;Troll song about Cristof is :vomit:, ‘shipping’ him and anna, without anyone’s consent. When he says “BUT SHE IS SOMEONE ELSES PROPERTY, THATS WHY SHE CANNOT BE MY PROPERTY” the trolls say “Eh, that claim of property is weak, you can &lt;em&gt;totally&lt;/em&gt; own her.”. Agriculturalist, state-supporting. ‘true love’ :vomit:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;side-note, as I’m writing this blog post a while after writing the original paper notes. got bored of the movie quickly. We would rewatch it, skipping more and more of the movie, and now when we put on Frozen we may only watch the two main songs. the opening song sung by Anna, and _Let It Go&lt;/em&gt;, of course._&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Frozen&lt;/em&gt; makes white people look like royalty, or makes royalty look like white people.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Frozen&lt;/em&gt; depicts &lt;em&gt;impalement&lt;/em&gt; as a joke. WHAT THE ACTUAL FUUUUUUUUCK. Someone wrote a scene with Olaf getting &lt;em&gt;impaled&lt;/em&gt;, indirectly, by Elsa, and it’s supposed to be read as a joke, not a reference to a horrific act of violence.&lt;/p&gt;

&lt;p&gt;I talk with eden through these movies. Sometimes extensively. She’ll initiate conversation or I will. She appreciates my help skipping the scenes she doesn’t like (vicious wolves, violent snow creatures attacking others, soldiers fighting and trying to kill each other with blades and arrows)&lt;/p&gt;

&lt;p&gt;We discuss themes of adults controlling kids, neglecting kids, coercion, support of the state, the myth of ‘true love’.&lt;/p&gt;

&lt;p&gt;Settler colonialists suppress the sexuality they ‘allow’ themselves to express, and obviously suppress/exploit the sexuality of the ‘other’, and then do strenuous mental gymnastics to justify the whole thing. Please see &lt;a href=&quot;https://www.goodreads.com/book/show/8236315-the-origins-of-proslavery-christianity&quot;&gt;The Origins of Pro-Slavery Christianity: White and Black Evangelicals in Antebellum Virginia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The troll song about Cristof says “He’s a bit of a fixer upper”. This normalizes ‘weaponized incompetence’ and enmeshment and self-abandonment. I wonder which of the creators of &lt;em&gt;Frozen&lt;/em&gt; are being horrific partners to their partners, and expecting the other partner to just keep accepting bad behavior.&lt;/p&gt;

&lt;p&gt;Cristof says ‘but shes engaged to someone else’, normalizing marriage, monogamy, ‘possessive’ love’, ‘true love’&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Frozen&lt;/em&gt; has incredible violence, casual malevolence, and betrayal.&lt;/p&gt;

&lt;p&gt;Anna is so unwise, high conflict, needlessly provocative. (Throws a snowball at the snow creature created by Elsa, after being violently thrown out of Elsa’s ice palace, and the snow creature &lt;em&gt;throws her off a cliff&lt;/em&gt;! instead, what if she read the room, said ‘ew, i hate how my sister is treating me, i am out of here’ and ran away/escaped)&lt;/p&gt;

&lt;p&gt;… I will write something dedicated about Suzume, the movie, soon. It’s the perfect drop-in replacement for Frozen. Just watch Suzeme, never watch frozen. I watched parts of it with Eden, while she was in her &lt;em&gt;Frozen&lt;/em&gt; era, and wept with it’s beauty. I’d love to do a bunch of screenshots, or snippets of scenes, to help illustrate a point. There’s obviously things challenging to convey &lt;em&gt;about a musical&lt;/em&gt; through the written word, especially if you’ve not seen the movie(s) in question, or recently. My notes contain ‘call outs’ to parallel/comparing/contrasting themes between Frozen that really shows the intellectual/emotional un-self-conscious poverty of the people involved with &lt;em&gt;Frozen&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The city-scape differences of &lt;em&gt;Frozen&lt;/em&gt; and &lt;em&gt;Paw Patrol&lt;/em&gt; and the cities/towns/landscapes of Ghibli. You, and I, would be right to anger about the built environment in the world today, and it’s parallels in the landscapes of &lt;em&gt;Frozen&lt;/em&gt;. Enough people in the USA have forgotten there ever was a good streetcar network in every town, so they forgot the kinds of trips and adventures and &lt;em&gt;places&lt;/em&gt; enabled by those infrastructures.&lt;/p&gt;

&lt;p&gt;Multiple acts of traffic violence, and car propaganda.&lt;/p&gt;

&lt;p&gt;Phrases like “Oh noooo, I just paid it off” (a sled, upon witnessing it’s explosive, fire-ball-containing destruction after falling off a cliff after being CHASED BY WOLVES!), comments about treating it in a certain stereotypical way that mimics propaganda about cars, the fact that a sled &lt;em&gt;explodes&lt;/em&gt; after &lt;em&gt;falling off a cliff&lt;/em&gt; after &lt;em&gt;being chased by wolves&lt;/em&gt;, all because this random helpless white woman threw political weight and threats of violence at someone, demanding that they head into the dangerous, cold night, causing catastrophe after catastrophe, because she felt &lt;em&gt;obligated&lt;/em&gt; to &lt;em&gt;other people’s obedience&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The movie ends with Anna buying Cristof’s forgiveness by &lt;em&gt;buying him a car&lt;/em&gt;. It’s a sled, in the movie, but obviously in the minds of the writers, it’s a car.&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;“you should wait out here”, she’s so pushy to Olaf and Cristof and Sven, who have supported her well through difficult times, as she heads into the &lt;em&gt;demonstrably dangerous territory&lt;/em&gt; of interacting with her sister. Abandon your friends who show support of you, to receive more hurt from a family member?&lt;/p&gt;

&lt;p&gt;elsa &lt;em&gt;is&lt;/em&gt; dangerous, over and over, to anna. So dangerous. To rely on family binds makes all this worse.&lt;/p&gt;

&lt;p&gt;the sexualization &lt;em&gt;of children&lt;/em&gt;. Cristof says something, she makes a breathy “I like it fast!”, seeming to make a nod to aggressive sex? Again, &lt;em&gt;this is horrifying&lt;/em&gt;. Big breasts, the eyes, eyebrows, lips.&lt;/p&gt;

&lt;p&gt;Cristof, looking at elsa’s ice palace, he is an ice professional, says “its so beautiful I could cry” and Anna says, derisively, “Go ahead… i won’t judge”. Which directly &lt;em&gt;gives judgement for the sentiment&lt;/em&gt;, how did this make it into the script. That was basically the single most dignifying, humane line in the entire movie, and the female lead brushed it off, encouraged emotional suppression, and issued more demands.&lt;/p&gt;

&lt;p&gt;Stuiod Ghibli films/Suzume is full of reasonable moments of people displaying nice rapt attention to &lt;em&gt;mundane, beautiful&lt;/em&gt; nature, of &lt;em&gt;course&lt;/em&gt; to WITNESS AN ICE PALACE WOULD MOVE ONE TO TEARS and Disney literally attacks someone who displayed an emotional response to beauty. I wish the entire concept had been cut, OR she had given a non-abusive response to his exclamation.&lt;/p&gt;

&lt;p&gt;Elsa’s power was plainly mishandled by her caretakers. She obviously has tons of creative potential, it’s a powerful tool, she just was shamed and attacked and tortured from a young age to think she had no power.&lt;/p&gt;

&lt;p&gt;She could have done useful things for her community, or made things of beauty, and ease, like parks, sculptures, slides, maybe some sort of perpetual motion machine to unburden the townspeople of some labor. If one can fabricate heavy things effortlessly anywhere in space, the potential is &lt;em&gt;unbelievable&lt;/em&gt; and it’s dedignifying to kids and adults to act like demanding that she hide her power is at all a reasonable response.&lt;/p&gt;

&lt;p&gt;She also didn’t need to be doing work or a slave of capitalism bc she has a rare/valuable skill-set. What if she cared for children, because they found her entertaining? Put on free, funny outdoor shows using animated characters for the entertainment of all?  to believe that &lt;em&gt;erasing someone’s memories of their own power&lt;/em&gt; is reasonable enough to model in a movie is disrespectful to children.&lt;/p&gt;

&lt;p&gt;I’d like to add that Eden has me skip large parts of Frozen, because it’s scary. We no longer skip the part with the wolves, but did early on.&lt;/p&gt;

&lt;p&gt;Elsa creates a sentient snow monster that tries, plausibly, to kill the other party. The whole movie could be her doing cool stuff for the entire town, as an inventor/creator/artist/advocate/engineer. Eden has me skip the snow monstor part. Also there’s a part where soldiers attack Elsa in her tower, we skip that part. Wild to make a kids movie and inject war into it.&lt;/p&gt;

&lt;p&gt;the entire troll meme is offensive, based on a bunch of supremacist stereotypes about non-domesticated people groups.&lt;/p&gt;

&lt;p&gt;Olof, about cristof: “He is crazy”, jokes about taking off clothes, then being written to push agricultural marriage norms. to anna: “why are you holding back from such a man” (!!!???!!!)&lt;/p&gt;

&lt;h3 id=&quot;more-on-frozen-from-a-subsequent-re-watch&quot;&gt;More on &lt;em&gt;Frozen&lt;/em&gt;, from a subsequent re-watch&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;i’ve got a few pages of notes from multiple re-watches of Frozen&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Are Producer/writers trying to hide their own misdeeds? Are we seeing deep into their subconcious? The normalization of emotional mistreatment makes me concerned for the personal lives of all who were involved with crafting this movie.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;🎼 people do bad things when scared or tired or stressed… but throw a little love their way… [and you can maybe influence them to not harm you, themselves, or others JFC!!!]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ll link to that song. &lt;a href=&quot;https://www.youtube.com/watch?v=IyO-vdsgq1s&quot;&gt;here it is, ‘fixer upper&lt;/a&gt; This is &lt;em&gt;the normalization of abuse&lt;/em&gt;. It could have been:&lt;/p&gt;

&lt;p&gt;“People get stressed and tired and scared, but if they use that to justify violence or intimidation of you, you can call them at least in your own mind on the bullshit”&lt;/p&gt;

&lt;p&gt;I skip all the overt violence for Eden, as she requests me to do, and its still so violent. prison-based motifs, arrows, implied impalement death, violent and intimate at the same time. In one scene anna is lying her entire body down on the person who &lt;em&gt;she just met&lt;/em&gt; and &lt;em&gt;later betrays her&lt;/em&gt;, and this moment of uncomfortable closeness she experiences becomes a joke and justification for later pushy behavior.&lt;/p&gt;

&lt;p&gt;“true love” meme makes me hurt each time it’s mentioned. so de-dignifying.&lt;/p&gt;

&lt;p&gt;To eden, I ask “Did that surprise you?” often enough. She will say yes or no, and sometimes why, often enough. I firmly believe she enjoys being able to anticipate what is coming in a story line, and how reasonable of a thing to enjoy, eh? In a world one has inhabited for only a few years, one can anticipate/predict what is happening next, in certain situations? How interesting. [^questions-for-kids]
[^questions-for-kids]: I have a draft of ‘words I do and do not use with eden’. ‘was that surprising’ and ‘did you anticipate that happening before it happened?’ are rich, rich phrases. I do &lt;em&gt;not&lt;/em&gt; use words that convey an expectation for things like obedience, compliance, obligation, authority. I don’t say ‘good job’ or ‘good work’, I say ‘that looked interesting’, or ‘that looked tricky’, or ‘i could see you thinking about that’ or ‘that was so smooth’ or ‘was that interesting to you?’ or ‘what did you like about that?’ or ‘I appreciate how you did {thing}’.&lt;/p&gt;

&lt;p&gt;It’s a very rich and active experience, to watch movies with her. It’s not turning a show on and tuning out of the experience. We often-enough have it going in the background, too, as other things happen, the normal movements of life. I don’t put a special magical power around “watching TV”, and I help her have a good, curated, enjoyable experience of the media. My own childhood was filled with this strange magical gatekeeping around screens, plus shame, plus never actually being interested in the stuff I found interesting.&lt;/p&gt;

&lt;p&gt;Once she’s digested a movie, it quickly becomes vastly less interesting to her, and if there is anything else interesting going on, she’ll attend to it. Sometimes she creates the more interesting thing (painting, playing, climbing on things) sometimes I create it (she’s happy to participate in anything like cooking, loves it when friends visit, loves to accompany me to a climbing gym or a park or a playground, she enjoys throwing and catching games, etc.)&lt;/p&gt;

&lt;p&gt;I take children seriously. Sometimes people witness it, and are &lt;em&gt;obviously stunned&lt;/em&gt; by the kinds of cool interactions they witness. I’ll ask Eden &lt;em&gt;very specific, detailed questions&lt;/em&gt;, they obviously think she’s incapable of hearing it or giving a thoughtful response, or of offering her own spontaneous thoughts, and they’re shocked sometimes. It’s always entertaining. I can hear her a little more clearly than someone who’s unfamiliar with her mannerisms and cadence and specific words for things, but when she tells me something, when I relay it with a small dose of translation, they’ll sometimes show with surprise how clear and reasonable they find the statement.&lt;/p&gt;

&lt;p&gt;During a movie (like &lt;em&gt;Frozen&lt;/em&gt;) I’ll sometimes say something like ‘hmm, I don’t like how that person is speaking to that person. seems mean.’ or something like that. She also will clock, sometimes, when one person is speaking meanly to another. I really, really approve of her being sensitive in these ways. I don’t want her to think she needs to endure someone speaking meanly to her, or if she cannot escape the situation (common, when an adult is speaking meanly to one or many children) she at least will clock it as the adult’s misbehavior, rather than something brought on by her fundamental wrongness, for instance.&lt;/p&gt;

&lt;h2 id=&quot;suzume-a-delightful-beautiful-movie&quot;&gt;&lt;em&gt;Suzume&lt;/em&gt;, a delightful, beautiful movie&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;THIS&lt;/em&gt; movie is the one that I’m thrilled for Eden to have in her mind. It’s not a little kids movie, so while we’ve seen most of it, together, we had to skip lots of it and some parts of it are (understandbly) not interesting to her, so it’s not in the rotation with the same level of ‘play it again’ as some other movies currently are._&lt;/p&gt;

&lt;p&gt;It wouldn’t surprise me if someday this movie gets seen many, many times around here.&lt;/p&gt;

&lt;p&gt;Here’s the synopsis: 17-year-old Suzume’s journey begins in a quiet town in Kyushu when she encounters a young man who tells her, “I’m looking for a door.” What Suzume finds is a single weathered door standing upright in the midst of ruins as though it was shielded from whatever catastrophe struck. Seemingly drawn by its power, Suzume reaches for the knob…. Doors begin to open one after another all across Japan, unleashing destruction upon any who are near. Suzume must close these portals to prevent further disaster. The stars. The sunset. The morning sky. Within that realm, it was as though all time had melted together in the sky–guided by these mysterious doors, Suzume’s journey to close doors is about to begin.&lt;/p&gt;

&lt;p&gt;Suzume, made in 2023. &lt;a href=&quot;https://www.youtube.com/watch?v=5pTcio2hTSw&quot;&gt;here’s a trailer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve now seen it a few times, and found it deeply moving. I remember weeping through the end of it the first time, and again the second time. I’ve only seen portions of it with Eden since then and have &lt;em&gt;not&lt;/em&gt; been moved to tears subsequently, but I doubt that I’ve shed all the tears I’ll ever shed watching it.&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Suzume&lt;/em&gt;, a young female protagonist travels around japan in an attempt to achieve certain goals (just like elsa/anna) and has &lt;em&gt;normal&lt;/em&gt; interactions with the people she encounters along the way. There are so many parallels between &lt;em&gt;suzume&lt;/em&gt; and &lt;em&gt;frozen&lt;/em&gt;, and in every single point of comparison, &lt;em&gt;suzume&lt;/em&gt; shows itself to be able to be serious, dignified, and &lt;em&gt;frozen&lt;/em&gt; shows lack of seriousness.&lt;/p&gt;

&lt;h3 id=&quot;suzume-notes-continued&quot;&gt;&lt;em&gt;Suzume&lt;/em&gt; notes, continued&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;OK, these are all written out on yellow legal pad, I’m gonna draft the suzume stuff here, it might get its own post later, I wrote all these notes over the last…. at least a few weeks, I really want to get it written and done&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;I’m so pleased to watch this movie compared to &lt;em&gt;Frozen&lt;/em&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;so much healthier interpersonal stuff. Mom/daughter, aunt/niece, friend/friend, adult/kid, kid/kid interactions. No one gets insanely betrayed by someone who is first presented as kind and safe. (Talking about &lt;em&gt;Frozen&lt;/em&gt;.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Features the real devestation of the loss of a parent.&lt;/p&gt;

&lt;p&gt;Also says ‘the world is made safer by feeling fully what you are feeling’, instead of frozen’s ‘let it go, the past is in the past’, ‘suppress your emotions’ motif.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=5pTcio2hTSw&quot;&gt;here’s a trailer&lt;/a&gt;, and &lt;a href=&quot;https://www.youtube.com/watch?v=qal34e9v_pk&quot;&gt;here’s the &lt;em&gt;delightful&lt;/em&gt; theme song&lt;/a&gt;. I’ve listened to this so many times.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;features a strong (like, actually strong) female lead, as a non-sexualized child. her childness is far more often a factor than her feminine-ness. (unlike &lt;em&gt;frozen&lt;/em&gt;)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;it’s a coming of age trip, with strong built tension. there are even scenes comparable to ‘violence’ and ‘aggression’ but are not the absolute idiotic, fabricated drivel that is &lt;em&gt;frozen&lt;/em&gt;. There’s intense expressions of power, force, resistance.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;Helps if you’ve seen/are able to appreciate Studio Ghibli films.&lt;/li&gt;
  &lt;li&gt;creators love and understand cities. In one scene, a downstairs shop owner helps provide access for Suzume to Souta’s apartment. Jane jacobs, talks about this phenomina directly. this is what american-style ethnic cleansing stole from us. American-style ethnic cleansing &lt;em&gt;literally&lt;/em&gt; wants/wanted to eliminate the ‘upstairs residence downstairs shop’ pattern, from all cities. American movies usually depict the americanized urban spatial form of suburbs/single family housing mixed with ‘downtown’ city cores and massive, car-choked streets connecting everything. There’s certainly not people walking around on streets. This is all handled &lt;em&gt;correctly&lt;/em&gt; in &lt;em&gt;Suzume&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eden is sometimes activated with fear. Scrambles into my lap, shamelessly, and keeps watching. I check in if scared, or she wants to skip this part, she says ‘no’ fully credibly, so we continue. (sometimes she says yes, of course, and I skip the scene). She crawls back out of my lap when the scene ends, back and forth, this goes away as she gets familiar with a movie.&lt;/p&gt;

&lt;p&gt;I find it charming, cute, and useful for her to experience (without being shamed) fear, the safety that comes from &lt;em&gt;responding to it&lt;/em&gt;, experiencing an adult as attentive and helpful, and then the ebbing away of that fear. I have a single memory of a scary scene I saw as a kid, it shook me and my dreams for weeks and months, and as I was watching this movie with my dad, I don’t think it crossed his mind that anything had happened. I was young, it was an Indiana Jones movie, a skeleton erupted from a wall with an arrow embedded in an eye socket. I &lt;em&gt;still&lt;/em&gt; remember the scene. 🤮&lt;/p&gt;

&lt;p&gt;I don’t like the english dubs a lot, vs. original audio + subtitles, this is the first time I’ve seen it with the english dubs, of course it’s far more accessible to Eden when it’s in English, though she watched a lot of the movie in the japanese, when the original audio is all I had.&lt;/p&gt;

&lt;p&gt;beautiful, &lt;em&gt;beautiful&lt;/em&gt; depictions of indoors and outdoors places.&lt;/p&gt;

&lt;p&gt;I think Eden ‘processes’ a movie across re-watches, and easily departs the movie or skips it, once it’s no longer interesting or novel to her, in a reasonable way.&lt;/p&gt;

&lt;p&gt;I value these kinds of times, even though other people criticize it. I’m not a ‘quality time’ person, though I do care about it. I simply also happen to prize the mundane time, too. I protect us from unwanted pressure, trips, rushing, restraining, limiting. I want to see her practice feeling seen as fundamentally good and trustworthy, and her instincts for what she wants as being taken as reasonable things.&lt;/p&gt;

&lt;p&gt;She will confidently and enjoyably watch something, then, when done, herself close the laptop and move on to the next thing. Sometimes we have real grieving that happens over what happens when we cannot watch something &lt;em&gt;right now&lt;/em&gt;, and again, I take that grief (and the opportunity to witness it and hold emotional space for her in it) seriously.&lt;/p&gt;

&lt;p&gt;She enjoys naming when some part is coming. it’s a form of readying herself for scary parts, sometimes. I see it through a lense of helping her build inner resources to deal with the &lt;em&gt;tricks&lt;/em&gt; that adults will sometimes play in moves to get a certain response from you, with or without your permission. (jump scares, certain bits of dialogue).&lt;/p&gt;

&lt;h2 id=&quot;complaints-about-other-hard-to-avoid-herenow-shows&quot;&gt;Complaints about other hard-to-avoid-here/now shows&lt;/h2&gt;

&lt;p&gt;I don’t begrudge Eden for anything that she finds interesting. She knows I’m down for everything that’s interesting to her, and will help maximize her enjoyment of it. (Skipping the scary parts, if any, starting/re-starting the desired bits of media)&lt;/p&gt;

&lt;p&gt;I’ll pus&lt;/p&gt;

&lt;h3 id=&quot;paw-patrol&quot;&gt;Paw Patrol&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;eden happens to really like paw patrol. Again, understandable, from a toddler’s point of view. I feel nothing but contempt and derision for every adult involved in the production of this show. It’s canadian, paid for by the canadian state, and ruthlessly reinforces authority, authoritarianism, political control, single family housing, and a very machanistic/industrialized view of nature. Extremely car-centric, celebrates all things involving engines, and vastly supportive of police, policing. (slave patrollers, slave patrolling)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;[deep breath]&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/full-copy-of-1922-atlanta-zone-plan&quot;&gt;I’ve written a little/lot about zoning, and how I perceive zoning to be precisely enough how america did/does things that round to ethnic cleansing.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“cops”, “police”, mete violence continuously in very specific ways. If one evaluates systems as “the result reflects the need”, there are people in the greater united states who &lt;em&gt;need&lt;/em&gt; society to have the role ‘deputized slave patroller’. Police enforce zoning laws, and target people who use roads for hassling, intimidation, robbery. (police commit &lt;a href=&quot;https://granta.com/violence-in-blue/&quot;&gt;1/3rd of the ‘murdered by a stranger’ violence&lt;/a&gt; in the USA. Police commit &lt;a href=&quot;https://www.illinoispolicy.org/law-enforcement-now-seizes-more-property-from-citizens-than-burglars/&quot;&gt;two thirds of annual burglury&lt;/a&gt; via ‘asset forfeiture’ ritualized theft, robbery, assault, obviously in a way that does not upset the supporters of police. They are obviously good at the ‘deputized slave patrol’ thing.)&lt;/p&gt;

&lt;p&gt;Police and domestic violence go hand in hand, &lt;em&gt;obviously&lt;/em&gt;, these people have given themselves over to supremacy and are ruined by the ruin they enact on others. how could it be otherwise? Whenever I have a police interaction, I extract entertainment for myself, from them, by asking them if they know certain things about the origins of their own industry. Believe it or not, most cops do not know that “they deputized the slave patrollers” was the origin of half of american policing. (The other half was ‘protect the buildings of the capitalists’, that was the policing imported from europe used more in the north east. They were Bad People too)&lt;/p&gt;

&lt;p&gt;I wrote the above upon discovering a certain document that is what got enshrined/encoded in &lt;em&gt;Ambler vs. Euclid&lt;/em&gt;, in 2926. Virtually every zoning ordinance that exists in America is rooted in some way in that document, in a way that seems clear to me from a few different frames.&lt;sup id=&quot;fnref:dropping-hashes&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:dropping-hashes&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;So, it’s not &lt;em&gt;exclusively&lt;/em&gt; american, but it’s some distillation of something representing the ideas of european-american-passing decendents of immigrants, and their idealized sense of social control, or whatever.&lt;/p&gt;

&lt;p&gt;It’s unfair how disney/ppl like this grab the attention in an unfair, gross way, then fills the story with colonialism, authoritarianism, pro-deputized slave patrol propaganda!.&lt;/p&gt;

&lt;p&gt;Eden likes it, and knows that I really don’t like it, so often we’ll reach great compromises. She’ll simply choose a different show she wants to watch. (E, to me: “put on {other show}. I choose it for you, because it doesn’t have police or cars”. me: “wow, gladly, i appreciate your thoughtfulness about what is easy or not so easy for me to watch.”)&lt;/p&gt;

&lt;p&gt;And paw patrol still sometimes is played. No sweat either way.&lt;/p&gt;

&lt;h4 id=&quot;specific-complaints-about-paw-patrol-first-page&quot;&gt;specific complaints about paw patrol, first page&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;the ‘patrol’ obviously references police, policing, the concept of ‘going on patrol’, and &lt;em&gt;always&lt;/em&gt; a ‘patrol’ is virtually synonymous with a supremacist occupying force controlling with violence and intimidation the ‘native’ peoples. In america, many police interactions are the slave-patrolling action of &lt;a href=&quot;/jaywalking&quot;&gt;policing jaywalking&lt;/a&gt;. In &lt;a href=&quot;https://www.goodreads.com/book/show/201978334-killed-by-a-traffic-engineer&quot;&gt;killed by a traffic engineer&lt;/a&gt;, the author mentioned that at one point in time, something like 40,000 people were &lt;em&gt;arrested&lt;/em&gt; for ‘jaywalking’ in chicago????? my jaw dropped. I still hope I am wrong. phew, I checked myself, I am wrong. It was Detroit, not chicago, and it was 20,000 people, not 40,000. &lt;a href=&quot;https://www.goodreads.com/notes/211426719-killed-by-a-traffic-engineer/27372191-josh-thompson?ref=abp&quot;&gt;Here’s a link to &lt;em&gt;all&lt;/em&gt; my highlights for this book&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to goodreads, amazon, kindle versions, and the delusion of ‘american police’, we have the proper quote from the book:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In the same 1958 report, AAA says that “it is time that we become concerned with pedestrian violations and unwise walking practices” and then highlights all the progress on this issue in cities like Detroit, which arrested 19,765 pedestrians for crossing against the signal but only 8,662 drivers for violating the pedestrian’s right-of-way. The report noted that San Francisco arrested 165 pedestrians for crossing between intersections as compared to 7,304 drivers arrested for violating the pedestrian’s right-of-way. But don’t let the numbers fool you; San Francisco also arrested 32,968 pedestrians for public intoxication.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thus, i leave it as an exercise to the reader to infer my opinions for what is sometimes called ‘police’, in the greater united states. &lt;a href=&quot;/jaywalking&quot;&gt;Here’s my thoughts on ‘jaywalking’&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Therefore, because in the USA, where this show is being consumed (even though it’s created by a canadian group, and because of the internet, and colonialism, undoubtedly this show is being requested/demanded beyond the united states, so i bet people in countries victimized by american armies get to watch their kids want to watch this show), the origins of ‘police departments’ was to &lt;em&gt;deputize the existing slave patrols&lt;/em&gt;. The very concept of deputization is sorta religeous (“here, random person, have a stamped piece of metal. Affix to your shirt, you now have magical powers”), and simply conceeds so much that doesn’t justify that concession. (“the state”, “authority”, “retributive justice”, AND THE LIVED EXPERIENCE of people on both sides of that police power, like the story told in &lt;a href=&quot;https://www.goodreads.com/notes/201736852-killers-of-the-flower-moon/27372191-josh-thompson?ref=abp&quot;&gt;Killers of the Flower Moon&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;not only ought one to appreciate police as slave patrolling, but that this role of slave patroller/deputized slave patroller filled a &lt;em&gt;desperately needed position in society&lt;/em&gt;. what was that position, that role? maintaining the suppression of ‘slave rebellions’, also known as ‘people of the global majority taking minimum steps to slightly reduce the daily oppression of themselves and their loved ones’.&lt;/p&gt;

&lt;p&gt;So, ‘slave patrol’ energy is strong in American policing.&lt;/p&gt;

&lt;p&gt;not only are police slave patrollers. not only were they needed/wanted by american society.&lt;/p&gt;

&lt;p&gt;other energies got rolled into American policing, too. Slave patrolling dealt with only one of the two primary fears of european americans.&lt;/p&gt;

&lt;p&gt;Displacing native populations was also critical to the formation/survival of that group of european-american white-passing immigrants!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Killers of the Flower Moon&lt;/em&gt;, mentioned above, is a good-enough sample of the experience of the people who lived in the greater united states before the immigrants arrived with political authority. For someone else’s experience of the same people group, I invite a read of &lt;a href=&quot;https://www.goodreads.com/book/show/61676927-i-saw-death-coming&quot;&gt;I Saw Death Coming: A History of Terror and Survival in the War Against Reconstruction&lt;/a&gt;. &lt;a href=&quot;https://www.goodreads.com/notes/61676927-i-saw-death-coming/27372191-josh-thompson?ref=abp&quot;&gt;here’s my kindle highlights&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the roles a slave patrol would fill is simply &lt;em&gt;reminding&lt;/em&gt; people that violence could happen at any time, and no tactic (rebellion, passive resistance, fawning) could make any individual safe from harassment. This is why I don’t like to see or hear police (or sirens in general). Every time, it’s a proclamation, piercing the air and walls and consciousnesses of everyone around, that the local ‘slave patrol’ is on the move, willing to mete some coercion, if it feels right.&lt;/p&gt;

&lt;p&gt;I have a related contempt for fire departments, by the way. Their sirens are ear-splittingly loud, actually damaging to hear from any proximity, disruptive, pierce the city for hundreds and hundreds of meters in all directions from their vehicle, they &lt;a href=&quot;https://www.google.com/search?q=pedestrian+hit+by+fire+truck&quot;&gt;drive in dangerous and entitled ways&lt;/a&gt;, and RAM their way through a city with their vehicles, and like children hold to strange tropes about their own profession, and continue to resist efforts at narrower, safer streets, because some part of the system acts afraid it might not be able to fit their giant vehicles into a small space.&lt;/p&gt;

&lt;p&gt;God forbid they demonstrate skilled driving or drive around with the kinds of vehicles used _in any other place.&lt;/p&gt;

&lt;p&gt;So, this show, “Paw Patrol”, constantly venerating the institutions of &lt;em&gt;slave patrollers&lt;/em&gt; and &lt;em&gt;people who do not actually contribute good things to society&lt;/em&gt;. I say defund fire departments, fund ambulance riders &amp;amp; libraries/librarians. The vast majority of trips fire departments make in their huge ladder trucks are adequately served by an ambulance, &lt;em&gt;and&lt;/em&gt; are inspired by american highway supremacy, so like three orders of magnitude of improvement would be trivially gleaned.&lt;/p&gt;

&lt;p&gt;Not only does paw patrol hold on a giant, childish pedestal the vaunted role of ‘first responder’, it paints a unbelievable depiction of how the world works. Because kids like animals, and kids shows that depicted (for example) the police brutalizing and assaulting an ethnic group might not do so well. So instead, the police, in Paw Patrol, are involved in things like “rescuing a narwhale that got its horn stuck” or “helping guide a sleepy/hibernating bear back to its den”.&lt;/p&gt;

&lt;p&gt;Paw Patrol features a bumbling mayor and some other sinister wanna-be mayor who plays a trope throughout the show that sparks conflict, when the show needs conflict. Eden is generally unable to appreciate that adults would pour their entire lives into hurting others and controlling them, so some of the tropes in the show goes over her head, or lands with confusion. She has no idea what a mayor is, or why someone with that title would behave in the ways depicted in this show.&lt;/p&gt;

&lt;h3 id=&quot;another-page-of-notes-about-paw-patrol&quot;&gt;Another page of notes about paw patrol&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;more notes as taken by hand, across various episodes, and days&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;statist, arrogant, high-modernist drivel. “police are helpful”. the world &lt;em&gt;and nature&lt;/em&gt; desperately need A WHITE MAN TO TELL EVERYONE WHAT TO DO!!!!! It’s an honor to be given a command and to do it joyfully, and if you do it well enough, a white man might tell you ‘good job’ and scratch you behind the ear &lt;em&gt;as your payment&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Ryder passes out TREATS when they do what he says. This show doesn’t even understand real dog training, or indicates that the adults see children as no more sophisticated as dogs, and equally responsive to treats/threats. (Operant conditioning. 😬). (If one gives treats as rewards, one will also give threats as anti-rewards. This is Not Good). Isn’t it funny how ‘treat’ and ‘threat’ are so similar in spelling?&lt;/p&gt;

&lt;p&gt;Vastly supportive of the &lt;a href=&quot;https://www.whitesupremacyculture.info/characteristics.html&quot;&gt;15 tenants/characteristics of european american supremacy culture&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;each pup has a magic backpack that has a machine, claw, gun, shovel, whatever, that because it’s a machine, solves a problem. high modernist, every problem just needs a technology applied to it. Force and mass and movement are magical, no basis in reality.&lt;/p&gt;

&lt;p&gt;Ryder, a domineering white male, in nearly every line of dialogue, is issuing a command. he is never given orders or direction, even by the pups, never shares/models sharing power or control (remember, that’s &lt;a href=&quot;https://www.whitesupremacyculture.info/characteristics.html&quot;&gt;one of the 15 characteristics of supremacy culture&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Basically fills the authoritative role of ‘god’, or ‘the state’, or ‘benevolent patriarch’. Exercises complete, unquestioning control of the city.&lt;/p&gt;

&lt;p&gt;constant reinforcement of the concept of role confomity. every aspect of every person’s existance, except for the role they play, is expunged from existance.&lt;/p&gt;

&lt;p&gt;The role of the patriarch is ironclad. Gives instructions, endlessly, in fake cheerfulness voice.&lt;/p&gt;

&lt;p&gt;the entire mayor motif i think goes over eden’s head right now, because she is not yet traumatized/inculcated into political authority, where the mayor/political authority motif makes sense to her in the way it ‘makes sense’ to me.&lt;/p&gt;

&lt;p&gt;childlike love of military vehicles portrayed throughout, by the shows creators. Vehicles modeled on v22 osprey, some ocean lander/transport thing, tanks. TANKS!!!!&lt;/p&gt;

&lt;p&gt;eden and I talk a lot throughout the show, often enough. Talk about things happening in the show.&lt;/p&gt;

&lt;h3 id=&quot;about-the-first-of-two-paw-patrol-movies&quot;&gt;about the first of TWO paw patrol movies&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;about Paw Patrol: The Movie&lt;/em&gt; which is AAAAAAAUUUUUUGGGGGGHHHHHHHHH_&lt;/p&gt;

&lt;p&gt;Movie opens with act of traffic violence, same as &lt;em&gt;Frozen&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It normalizes people doing things (white-passing men giving orders) to solve nature’s problems with technology.&lt;/p&gt;

&lt;p&gt;normalizes: ‘bad things’ come from obviously bad people working to nefarous purposes.&lt;/p&gt;

&lt;p&gt;tons of offensive sterotypes.&lt;/p&gt;

&lt;p&gt;people/animals need saving by emergency services constantly.&lt;/p&gt;

&lt;p&gt;they have a hero’s lair, like a marvel movie universe. It’s despicable, I am loath to see it.&lt;/p&gt;

&lt;p&gt;Iron-man esq suits for all pups, glorifying the power and authority of the state and Authority.&lt;/p&gt;

&lt;p&gt;Their HQ vehicle launching thing is so fucked. Every pup isn’t just a specialized pup, but gets a specialized vehicle, that they rev the engine on and drive dangerously. A pup says ‘I could get used to this’ about a car before launching the police car through the downtown city, totally devoid of awareness or concern for the people in the roads.&lt;/p&gt;

&lt;p&gt;that launched police car launches into a traffic jam, and then gets help from a ‘local’, native guide, codes as black, who leads them thru shortcuts. wow wow wow.&lt;/p&gt;

&lt;p&gt;An iraqi-style MRAV type vehicle gets featured/driven around! By the police!&lt;/p&gt;

&lt;p&gt;water cannon bombs a territory for their own benefit. (“bombing people is good!”).&lt;/p&gt;

&lt;p&gt;Normalizes a sense that cops risk themselves to help others. (see Warren v DC, 1981, to see how they really feel about that).&lt;/p&gt;

&lt;p&gt;Bombs a different agent of the state with water to put out flames. See? Shooting people is &lt;em&gt;good&lt;/em&gt;!&lt;/p&gt;

&lt;p&gt;white sky daddy receives scared police force member. Literal domestic abuse. (performative violence when the mayor is angry at the pups).&lt;/p&gt;

&lt;h2 id=&quot;bluey&quot;&gt;bluey&lt;/h2&gt;

&lt;p&gt;Australian, funded by the australian government, has lots of similar vibes to a &lt;em&gt;different&lt;/em&gt; state-funded show I’ve seen lately. (Paw Patrol).&lt;/p&gt;

&lt;p&gt;Ruthlessly normalizes suburban, single-family-home, nuclear family concept. monogomous marriage. Fumbling, emotionally disconnected dad, mom ‘momming’ the entire family, including dad. I dislike Bluey less than paw patrol, and plenty of &lt;em&gt;moments&lt;/em&gt; in the show are fine/appreciable, but for me the whole thing is hamstrung by the context, the expectation of another terrible thing being normalized.&lt;/p&gt;

&lt;h3 id=&quot;season-3-episode-38-cubby&quot;&gt;season 3, episode 38 “cubby”.&lt;/h3&gt;

&lt;p&gt;I’m trying to articulate why I don’t actually like bluey, even though so many people say it’s touching. I say it normalizes patriarchy, belief in authority, abuse.&lt;/p&gt;

&lt;p&gt;dad: “The TV is too small, it’s only 50 inches wide” OMFG, he’s ‘watching the game’ and dissociating from the family.&lt;/p&gt;

&lt;p&gt;agriculturalism, settled/domestication, marriage = the state, patriarchy = entitlement/obligation. ‘i’ll play this role, you MUST play this other role’&lt;/p&gt;

&lt;p&gt;they’re building a play/space/fort out of blankets, a cubby.&lt;/p&gt;

&lt;p&gt;Dad shows exasperation, annoyance with them. dad plays obvious trope of bumbling, clueless male-figure&lt;/p&gt;

&lt;p&gt;the fort they built is SO COOL!!!! he didn’t say this once. how did he dissociate from their whole life/project?&lt;/p&gt;

&lt;h3 id=&quot;bluey-episode-43-dragon&quot;&gt;Bluey episode, 43, ‘dragon’&lt;/h3&gt;

&lt;p&gt;dad diminishes mom and her skills at drawing BECAUSE SHE’S BETTER THAN HIM AT DRAWING!!!&lt;/p&gt;

&lt;p&gt;he could have said “mom’s so good at drawing, I love to see the things she draws.”&lt;/p&gt;

&lt;p&gt;Jesus &lt;em&gt;**&lt;/em&gt;. it’s literally abuse to hack away at someone’s skills, it undermines them/their confidence/independence. this is horrifying to see.&lt;/p&gt;

&lt;p&gt;that does it, my notes. might get this published finally!&lt;/p&gt;

&lt;h3 id=&quot;another-episode&quot;&gt;another episode&lt;/h3&gt;

&lt;p&gt;the mom/kids get pulled over by cops, treated as a friend. the cop is &lt;em&gt;wrong about the law&lt;/em&gt; and instead of doing something realistic, like shooting the family or at least a dog, the cop says to the mom “you’re right, I shoulda known that”. They say “thanks officer”, joyeously, and ride off in the car.&lt;/p&gt;

&lt;p&gt;Zero evidence of ppl of the global majority. The normalization of european-american/nobility/suburbanization-of-everything. Cars take us from our house to everywhere else, all activity is at grocery stories, restaurants, arcades, bowling alleys, back yards.&lt;/p&gt;

&lt;h2 id=&quot;in-conclusion&quot;&gt;In conclusion&lt;/h2&gt;

&lt;p&gt;Mmm, this thing has been months in the making, perhaps that is clear. Based on when I first started editing this file, it was five months ago that I first started copying down notes, but I think that was after more than one page of notes had been created.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://josh.works/recommended-reading#studio-ghibli&quot;&gt;I really like all things by Studio Ghibli&lt;/a&gt;, the movie Suzume, all episodes of Sagwa (available for free on Youtube &lt;a href=&quot;https://www.youtube.com/watch?v=0skmm0FBl-Q&amp;amp;list=PL3FYWyLTi1sKGbGpK2ZcDHaYyE27ZceXH&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;For Studio Ghibli, start with &lt;em&gt;Ponyo&lt;/em&gt;, &lt;em&gt;My Neighbor Totoro&lt;/em&gt;, &lt;em&gt;Howl’s Moving Castle&lt;/em&gt;. I hadn’t seen or heard of these movies until very recently in my life, I’m so pleased to have encountered them, and the other films made by Studio Ghibli. You’re probably not gonna feel the same about &lt;em&gt;Grave of the Fireflies&lt;/em&gt; as you do &lt;em&gt;Totoro&lt;/em&gt;. Be careful, and be warned.&lt;/p&gt;

&lt;p&gt;I dislike Paw Patrol, Bluey, Frozen, in particular, and all Disney in general. &lt;em&gt;Luca&lt;/em&gt; is less-bad than most. &lt;em&gt;Finding Nemo&lt;/em&gt; is atrotious.&lt;/p&gt;

&lt;p&gt;Settler colonial culture is hurtful to exist inside of, and &lt;em&gt;more&lt;/em&gt; hurtful if it exists inside oneself unrecognized. These disliked shows push a message of normalization of the supremacy culture inside of which the shows were made.&lt;/p&gt;

&lt;h2 id=&quot;recommended-reading&quot;&gt;Recommended Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/201736852-killers-of-the-flower-moon&quot;&gt;Killers of the Flower Moon&lt;/a&gt; &lt;a href=&quot;https://www.goodreads.com/notes/201736852-killers-of-the-flower-moon/27372191-josh-thompson?ref=abp&quot;&gt;my highlights&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/61676927-i-saw-death-coming&quot;&gt;I Saw Death Coming&lt;/a&gt; &lt;a href=&quot;https://www.goodreads.com/notes/61676927-i-saw-death-coming/27372191-josh-thompson?ref=abp&quot;&gt;my highlights&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/42129163-fearing-the-black-body&quot;&gt;fearing the black body&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/41725763-how-to-hide-an-empire&quot;&gt;how to hide an empire&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/1335495.Spare_the_Child&quot;&gt;spare the child&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;my gosh there’s more but that’ll do for now.&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:the-files&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;some of the movies I’ve purchased online or found on youtube, like &lt;a href=&quot;https://www.youtube.com/watch?v=0skmm0FBl-Q&amp;amp;list=PL3FYWyLTi1sKGbGpK2ZcDHaYyE27ZceXH&quot;&gt;Sagwa the chinese siamese cat, here’s the 20 episode youtube playlist&lt;/a&gt; line with Lawrence Lessig’s &lt;a href=&quot;https://www.goodreads.com/book/show/72011.Free_Culture&quot;&gt;Free Culture&lt;/a&gt;, I generally look for shows first on the pirate bay &lt;a href=&quot;https://thepiratebay.org/&quot;&gt;https://thepiratebay.org/&lt;/a&gt;, to download the raw files in a piecemeal way called torrenting. Obviously now there’s conversation about the legality of it, but I’ve always been vastly more impressed by the simple mechanics of torrenting. The piecemeal receiving/sending files, peer-to-peer, instead of server/client. How refreshing. Then save it somewhere easy to find, and use VLC to play it on a laptop, my perfectly functional but mostly retired, genuinely aged apple laptop. Would be harder to do all this quite as easily on a smart TV, for instance. It feels wasteful to stream a full-length movie many times, and on many normal internet connections in the world today, it still is. &lt;a href=&quot;#fnref:the-files&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:family&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;my own father, who proudly celebrates the notion of adults assaulting children, in his own words, continues to think that the concept of family makes it not just appropriate, but &lt;em&gt;necessary&lt;/em&gt; for adults to assault and sexually assault their own children. I &lt;strike&gt;am still working on&lt;/strike&gt; finished &lt;a href=&quot;(/hitting)&quot;&gt;this collection of ideas&lt;/a&gt; around ‘spanking’. TL;DR spanking is the ritualized hitting and sexual humiliation of children, served up with a big dose of emotional abuse when the victim is coerced into believing not soley that &lt;em&gt;they are causing their own victimization&lt;/em&gt;, but that the assault is an act of love between the adult and the child.&lt;/p&gt;

      &lt;p&gt;I tell Eden &lt;em&gt;regularly&lt;/em&gt; that anyone who hits children &lt;em&gt;does not love that child/children&lt;/em&gt; and in fact might not be capable of love. I tell her that adults hit children only if the adult &lt;em&gt;wants&lt;/em&gt; to hit the child, and they sometimes tell the strangest stories to explain that away, in a way that would certainly not be acceptible in other dynamics.&lt;/p&gt;

      &lt;p&gt;An adult who hurts a child and doesn’t recoil in horror at what happened and take extensive efforts to prevent it from happening again &lt;em&gt;needs a different imagination&lt;/em&gt;. I’ve another blog post about how the concept of ‘punishment’ or ‘discipline’  and even ‘obedience’ are in themselves abusive. Stay tuned. &lt;a href=&quot;#fnref:family&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:abusers&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Don Thompson, when I pressed him about his abuse of me as a child, eventually exited the conversation with “I did what I did, you are welcome.”. &lt;em&gt;LITERALLY&lt;/em&gt;. Those were his words, he was trying SO HARD to make me play the role he wanted me to play - adulating child. He emotinoally kicked my head off, over and over, but because he thinks it was an expression of love, his self-concept needs me to say “thanks, don, I think you were a great parent.” &lt;a href=&quot;#fnref:abusers&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:dropping-hashes&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;In the world of software, one encounters fancy identification labels called ‘guids’ or Globally Unique ID. It might look like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;19e38c497fa028936823325fb6a57f25142f25152f5b086882c0fa38ab885538d364ffd8941cde001033b4d99d4fc5f35ea66d08d060fb6dd959b3d36f518e04&lt;/code&gt; or in more likelihood, it’ll look like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;9542e1b6-a78b-4b11-8a01-16d1a8adf642&lt;/code&gt;. If you google the first of those ‘magic strings’ you’ll find a really specific blog post by Patio11 titled &lt;a href=&quot;https://www.kalzumeus.com/essays/dropping-hashes/&quot;&gt;‘dropping hashes: an idiom used to demonstrate provenance of documents’&lt;/a&gt;. If you google the second one, you’ll find nothing. Also common in software are ‘magic strings’. Some strange little string that keeps showing up in different places. Maybe it’s the logs, maybe the codebase. Maybe it’s ‘35ft’ or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;5000sq&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;16 dwelling units per acre&lt;/code&gt; but when you see it first show up in one place, then another, they might be linked. The person who invented zoning &lt;em&gt;desperately wanted to live in a supremacist enclave and wanted to keep people of the global majority in ghettos, and was pretty damned successful.&lt;/em&gt; &lt;a href=&quot;#fnref:dropping-hashes&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>My Favorite (and all) body modifications</title>
   <link href="https://josh.works/favorite-body-modifications"/>
   <updated>2025-02-11T13:00:00+00:00</updated>
   <id>https://josh.works/favorite-and-all-body-modifications</id>
   <content type="html">&lt;p&gt;In the range of the human experience, there’s a lot of possible body modifications one can purchase for oneself. Over the years, I’ve purchased three.&lt;/p&gt;

&lt;h1 id=&quot;lasik-vision-correction-in-2016&quot;&gt;LASIK vision correction in ~2016&lt;/h1&gt;

&lt;p&gt;When I was pretty young, mid-20s, my then-employer placed like a few thousand dollars a year into an HSA account for me, as I switched to a ‘high deductible health plan’, so since it felt like ‘free money’, I decided to spend it on LASIK. Possibly right after a long climbing trip, and I remembered struggling with glasses (mine were heavy and prone to falling off my face) and contacts (dealing with contacts without running water for days on end isn’t tons of fun)&lt;/p&gt;

&lt;p&gt;For about $3500, I got LASIK somewhere in Rockville, MD, and for a long time I’d say it was the best thing I’d ever spent money on. It’s now one of the top things I’ve spent money on, still ranks very highly.&lt;/p&gt;

&lt;p&gt;I used to take contacts out of my eyes in tents, then wake up and try to get contacts back in my eyes. I would clean my hands before touching my contacts (which would then touch my eye, of course I never actually touch my eye with my finger, when placing/removing contacts).&lt;/p&gt;

&lt;p&gt;I also didn’t like the dependence on the contact subscription, getting new ones every few months, etc. Some of you know the drill.&lt;/p&gt;

&lt;p&gt;Driving in the morning into the rising sun, wishing I had sunglasses, but preferring the comfort of my glasses.&lt;/p&gt;

&lt;p&gt;At night, not being able to see clearly while moving around my room until I put my glasses on.&lt;/p&gt;

&lt;p&gt;Issues with helmets, hair.&lt;/p&gt;

&lt;p&gt;I didn’t/don’t actually dislike my glasses much, but it wasn’t until I was fully free of them, post surgury, that I could feel in my bones all the ways I was accommodating my need for HEFTY vision correction. I’m pleased that I had a great, normal-ideal outcome from the surgury.&lt;/p&gt;

&lt;p&gt;Without glasses, my vision was so bad i really couldn’t drive, and walking on any sort of uneven surface could be dicy. Anyway, that was over a decade ago, now I just live life as a person who has perfect vision every time my eyes are open. It’s so cool.&lt;/p&gt;

&lt;h1 id=&quot;tongue-tie-revisionrepair-in-2024&quot;&gt;Tongue Tie “Revision”/Repair in 2024&lt;/h1&gt;

&lt;p&gt;Skip over a decade forward… Eden, who is now a toddler, was born. She was born with a tongue and lip tie, and it was preventing her from being able to breastfeed!&lt;/p&gt;

&lt;p&gt;We were lucky and fortunate to get it fixed when she was five or six days old, but at that point it had been missed by many medical professionals.&lt;/p&gt;

&lt;p&gt;She’d been losing weight, basically starving, because her mouth and tongue and lips could not work together in the correct way to generate suction. Her mom’s milk wasn’t coming in. For the mom’s body to make milk, the baby needs to be ‘requesting’ it, and if the tongue and lips are not free to move in the right way, there is no good requesting going on.&lt;/p&gt;

&lt;p&gt;After that, I didn’t think about a tongue tie again for years. “It’s heritable” they said. eventually, it bubbled up in my brain a few times. All sorts of oral health/mouth functioning/breathing things relate to the proper movement of that muscle in the bottom of the mouth.&lt;/p&gt;

&lt;p&gt;A tongue tie can be related to things like sleep apnea like syptoms (the tongue falls into the back of the mouth), which can relate to teeth grinding, because the way the brain ‘frees’ the airway after the tongue has obstructed it is by moving the jaw back and forth!&lt;/p&gt;

&lt;p&gt;Back pain (lower back pain) was related to teh tongue tie - my head had been slightly tilted forward/downward because of the reduced mobility. One of the functional tests of a tongue tie is if you can tilt your head all the way up and still swallow. When I had a tonue tie, I couldn’t swallow, I had to bring my chin back towards the ground to ‘get space’. These are all observations that were made most clear &lt;em&gt;post procedure&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It’s a wild change, I am a huge fan. Lots of things are different, better.&lt;/p&gt;

&lt;p&gt;I explain more, much more, in the blog post:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;/tongue-tie&quot;&gt;i got my tongue tie fixed, and it rocked my world&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Tongue tie’s correlate to things (that I was actively experiencing) like: all sorts of mouth problems, sleep-apnea-like symptoms, sometimes sounding like I’m choking while sleeping, but I didn’t snore.&lt;/p&gt;

&lt;p&gt;I had some of the best sleep of my life after the tongue tie revision.&lt;/p&gt;

&lt;p&gt;I didn’t appreciate how free the structures SHOULD be, between the tongue, throat, sternum, and the top of the spine. After mine was fixed, my head sat in a slightly different tilt/orientation, and there’s less/zero forward lean and there’s less strain on my lower back.&lt;/p&gt;

&lt;p&gt;Again, here’s the full blog post:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;/tongue-tie&quot;&gt;i got my tongue tie fixed&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;vasectomy-permanent-birth-control&quot;&gt;Vasectomy, permanent birth control&lt;/h1&gt;

&lt;p&gt;Also in 2024, I had already realized that I felt fully satisified with Eden as my kid, and do not want to have another kid. I’d always figured I’d get a vasectomy whenever I was ‘done having kids’, and I think that is an easily arrived-upon spot with even one kid.&lt;/p&gt;

&lt;p&gt;I was thrilled to discover &lt;a href=&quot;https://govasectomy.com/&quot;&gt;Chris Tonozzi&lt;/a&gt;, who does “no-scalpel vasectomy with no-needle anesthesia.” $800, 30 minute appointment in Boulder, basically zero discomfort during or after the procedure. No intake call. He’s exceptionally competant, as you’ll see if you click around. If you want a vasectomy and don’t live in colorado, Chris’ methodology is still worth checking out, because if someone else doesn’t seem to be at the same level of quality as him, &lt;em&gt;keep looking&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Having a kid is a big deal, and so is &lt;em&gt;not&lt;/em&gt; having a kid. For a bunch of crappy reasons it seems like the responsibility of not getting pregnant is carried mostly by people who can &lt;em&gt;become&lt;/em&gt; pregnant, the people with vulvas.&lt;/p&gt;

&lt;p&gt;Options for male birth control have been popping up, like &lt;a href=&quot;https://en.wikipedia.org/wiki/Reversible_inhibition_of_sperm_under_guidance&quot;&gt;RISUG&lt;/a&gt; in india, relabeled as &lt;a href=&quot;https://www.wired.com/2011/04/ff-vasectomy/&quot;&gt;Vaselgel in the USA&lt;/a&gt;. (inject an ionized polymer into the vans deferans, it causes cell walls/tails of sperm to be damaged, they still exit the body like normal but are ‘non-functional’, and is permanent, reliable, &lt;em&gt;and&lt;/em&gt; reversable) but the various authorities in the USA related to health advances are trash and absent, so people with penises and people with vulvas continue to suffer without abundant, reliable, non-hormonal birth control.&lt;/p&gt;

&lt;p&gt;I got a vasectomy as a step in the direction of carrying more of the responsibility than I was before of not getting anyone pregnant. It’s a big deal to decide to ‘not have more kids’, perhaps, but it’s a big deal to ‘have another kid’. In 2025, having &lt;em&gt;any&lt;/em&gt; children feels enormously delicate, risky.&lt;/p&gt;

&lt;p&gt;If everyone has a recent-enough STI panel and discussed it, the remaining reason for condoms is the REALLY CRITICAL ISSUE of not getting pregnant. Huzzah for improved margins of safety.&lt;/p&gt;

&lt;p&gt;I have a friend of a friend whose then-partner lied to him about taking birth control, and intentionally, without his permission, became pregnant by him. Horrifying. There’s lots of good ways of not getting pregnant, and most of them seem fully, unfairly, on the shoulders of the person who has the uterus. Also, if one &lt;em&gt;gets&lt;/em&gt; pregnant and wants to be not pregnant, all options are stressful. Having Plan B on hand seems reasonable, and of course I’m an all-the-way supporter of access to easy, skilled, ideally &lt;em&gt;free&lt;/em&gt; abortions, too. It is noteworthy to me that the catholic church made a HUGE deal of making sure birth control/pregnancy management was as unavailable to it’s people as possible.&lt;/p&gt;

&lt;p&gt;Virtually all forms of birth control available to the people who can get pregant are heavy duty. IUD or the pill, both are a hassle, and IUD placements are often-enough very bad experiences.&lt;/p&gt;

&lt;p&gt;I have a lot of thoughts about the obligation of not getting anyone pregnant. Things went poorly with my kid’s mom, I wouldn’t have tried to do parenthood in the exact way I’m doing it now, and EVEN IF things had gone great with Eden and her mom, &lt;em&gt;I still would want a vasectomy for myself&lt;/em&gt;. I still don’t want more than 1 kid.&lt;/p&gt;

&lt;p&gt;It’s easy to be generous as a parent with time when there is one child. It’s easy to be generous with emotional energy. It’s easy(er) to be unpressured in schedule, location needs, etc. Multiple kids seems gnarly, all-consuming. I can carry 100% of my children on my scooter (with a special harness/strap) because I have a single child. How convenient for me. School drop-offs &lt;em&gt;for life&lt;/em&gt; can be done via a two-wheeled vehicle thus I’ll never have to sit in a line of cars. Ever, in my life. Seems nice.&lt;/p&gt;

&lt;p&gt;American culture is individualistic, so there’s no natural community for raising multiple kids. For this reason alone I think it’s fairest to everyone, including any already-born children, to not take from their resource pool what would be needed by another child in the mix.&lt;/p&gt;

&lt;p&gt;Anyway, the vasectomy was the “right” kind. I was thrilled to discover &lt;a href=&quot;https://govasectomy.com/&quot;&gt;Chris Tonozzi&lt;/a&gt;, who does no scalpel vasectomy with no needle anesthesia. Super chill, quick, he’s got spots around colorado, I took the flatiron flyer bus from Denver to a few blocks from his office in Boulder, caught a later bus back, and was good to go. No more kids for me.&lt;/p&gt;

&lt;p&gt;I was thrilled that there was no consultation required with Dr. Tonozzi. I’d called around denver urologists and other offices, doing a little research after reading up on Reddit, and was &lt;em&gt;amazed&lt;/em&gt; when multiple offices thought that it was fine to tell me I had to show up for a $250 intake appointment before anyone would authorize scheduling me for a vasectomy! So much needless complexity to accommodate how some americans see health care.&lt;/p&gt;

&lt;p&gt;anyway…&lt;/p&gt;

&lt;p&gt;I really struggle to find the right tone to talk about some of these things.&lt;/p&gt;

&lt;p&gt;I’ve spoken about vasectomies now with a few different friends. I heard about one of these from his female partner - she said “I wish my [50 year old!!!] partner was willing to get a vasectomy bc I hate having to use birth control”&lt;/p&gt;

&lt;p&gt;Her partner has multiple kids! She has multiple kids! She doesn’t want more, he “thinks” he doesn’t want more! I couldn’t imagine being him.&lt;/p&gt;

&lt;p&gt;the risk profile is not the same, between people with penises and people with vulvas. It’s wildly risky to become pregant! people plan for and hope to have kids all the time, and are anxious throughout the process, because &lt;em&gt;it’s risky&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It seems worth noting also something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Sometimes/often times emotional safety correlates with enjoyable-for-all sexual experiences. A sense of emotional safety gets built in many different ways. Having taken real steps to measurably improve the risk profile around pregnancy dramatically increases a sense of safety for some people.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My own emotional safety goes way up. A partner’s sense of emotional safety can go up. There’s plenty of world for deep emotional safety (and great sex) without having a vasectomy, but it’s unamibigous, undeniable, that the margin of safety is higher. I didn’t realize how much more peace &lt;em&gt;I&lt;/em&gt; would feel having sex, post-vasectomy, than before.&lt;/p&gt;

&lt;p&gt;Anyway, if you’re in Denver/Boulder/Colorado, Chris Tonozzi at &lt;a href=&quot;https://govasectomy.com/&quot;&gt;GoVasectomy&lt;/a&gt; is the way. ~$800, and a 30 minute appointment. He and I chatted the whole time, and I watched the whole procedure with curiosity and interest.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;That’s it, there’s my body modifications. I’m thrilled with all of them, and if you are eligible for any of them, you might enjoy having some of these too.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>On Hitting Small(er) People</title>
   <link href="https://josh.works/hitting"/>
   <updated>2025-02-06T13:00:00+00:00</updated>
   <id>https://josh.works/on-hitting-and-the-concept-of-spanking</id>
   <content type="html">&lt;p&gt;this has been hard for me to write, has been sitting in one draft form or another for months. Finally getting it off the ‘drafts’ list, but only reluctantly. This is far too long for even me to try to read in a single sitting, especially on my phone, so it might be too long for you to try to read on a phone, or at once, too.&lt;/p&gt;

&lt;p&gt;I sometimes imagine that if I phrase something gently enough or the right qualifiers, I’ll somehow ‘farm’ goodwill from the imagined reader. It &lt;em&gt;feels&lt;/em&gt; adjacent to a willingness to manipulate, though, and I don’t like that, either. I don’t wanna be manipulative. I think some of you have done bad things to others. To the degree you wish it were not that way, we can be friends! Otherwise, eh.&lt;/p&gt;

&lt;p&gt;Some readers have perhaps never existed inside of the USA, others never outside of it. Some have had a lot of exposure to religeous influences in the USA. I speak with first-hand knowledge of being ‘raised evangelical’, and this particular blob of writing addresses themes common within that group of people. Specifically, the concept of “spanking”.&lt;/p&gt;

&lt;p&gt;I had gotten close to publishing a shorter first draft of this, then a book that I’d long ago requested via interlibrary loan &lt;em&gt;finally&lt;/em&gt; arrived. It has the provocative title &lt;a href=&quot;https://www.goodreads.com/book/show/1335495&quot;&gt;Spare the Child: The Religeous Roots of Punishment and the Psychological Impact of Physical Abuse&lt;/a&gt;. It’s very good, and caused this whole blog post to spiral into something even longer. &lt;sup id=&quot;fnref:spare&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:spare&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;First, book-keeping:&lt;/p&gt;

&lt;p&gt;If you have ever hit your children and then told them they deserved it, and are today, right now, willing to defend that, &lt;em&gt;i feel contempt for you&lt;/em&gt; and it’s hard for me to contain that, so I’m not gonna try.&lt;/p&gt;

&lt;p&gt;If you hit kids, but then said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I hit you because I wanted to, I was angry over something, and I hurt and scared you to regain a sense of control for myself. Bummer. I bet that was terrible for you. Was it? I’d like to do differently, I wish I hadn’t done that, and I’m doing {thing 1} and {thing 2} to make it less likely that I’ll every do that again. Just to reiterate and confirm, it’s not okay for me to hit you, shouldn’t have happened, shouldn’t ever happen again. It did, and it might, it is reasonable to me for you to be angry at me now and get angry at me if it happens again.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;this post isn’t to you or about you. It’s about the people that say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I hit you, child, and it’s because you deserved it, you called my violence down upon you, and my hitting you is evidence that I love you, and as long as you do not make a mistake again in the future, I won’t be forced to hit you again.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I feel contempt for the latter sentiment. I can work just fine with the former.&lt;/p&gt;

&lt;p&gt;I’ll get the hard parts out on the table up front. Free-associating through some of the interconnected issues:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Within evangelicalism, the concept of “parents spanking children” is held up as one of the core tenants of participation with evangelicalism. Indeed, if a parent does NOT beat their child, or threaten their child with physical and sexual assault, some others in the group will shame that parent.&lt;/li&gt;
  &lt;li&gt;“spanking”, as I define it, is adults, usually parents, assaulting their own children for instances of the child &lt;em&gt;displaying a will&lt;/em&gt;. If a child says “no” to a parent, that often-enough is considered grounds for assault.&lt;/li&gt;
  &lt;li&gt;The &lt;em&gt;spanking&lt;/em&gt; itself is at best simple physical assault. On top of that physical assault is further emotional violence/verbal abuse. If the spanking is done on the gluteal region/butt, it is sexual assault. Additionally, because the ‘spanking’ blames the victim for the harm, all uses of ‘spanking’ have emotional and verbal abuse embedded within it.&lt;/li&gt;
  &lt;li&gt;‘spanking’ is &lt;em&gt;the sexualized assault of a child&lt;/em&gt;. &lt;sup id=&quot;fnref:strong-language&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:strong-language&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;I do not even pretend to evaluate as safe the kinds of people that think adults spanking “their” kids is fine. I view this attitude as deeply problematic. To those people, my main hope is that your kids survive you, as a caretaker, as best they can, with as little damage to their sense of self as can be had in an environment such as that.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But wait there’s more: &lt;strong&gt;Not only is physically assaulting a child abuse, but acting like ‘punishment’ is a valid thing that an adult can appropriately do to a child is also abuse.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;this is all hard for me, as it puts me on the wrong side of a lot of people. My immediate family all is full of physically abusive people. The family I was married into, ditto. Same with the extended family I was born into. And plenty of people around me in various social relationships.&lt;/p&gt;

&lt;p&gt;All these people believe that adults hitting kids and blaming the kids for it is laudable and evidence of good-enough parenting. The emotional distance between us grows all the more. I wish it didn’t; i no longer try to pretend to feel warmly towards people who condone adults assaulting and sexually assaulting children.&lt;/p&gt;

&lt;p&gt;So, I’m going to take a few turns at &lt;strike&gt;shitting on&lt;/strike&gt; explaining themes of evangelicalism, because we all deserve it.&lt;/p&gt;

&lt;p&gt;The mountain of victims deserve it. I am also taking issue with something that isn’t strictly evagelicalism - it’s more describable as americanism, or american-ness, or “The West”, and to show participation in these systems, among other things, one most tout/affirm the concept of ‘obedience’, and that if someone doesn’t ‘obey’, they ‘should be punished’. &lt;sup id=&quot;fnref:ethnic-cleansing&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:ethnic-cleansing&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This language is all minimizing what really happens&lt;/p&gt;

&lt;h2 id=&quot;the-message-of-spanking-and-punishments&quot;&gt;the message of spanking and punishments&lt;/h2&gt;

&lt;p&gt;What’s a concise re-expression of punishment/spanking energy?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you do something I don’t like, I or someone acting on my behalf will hurt you, torture you, coerce you into doing whatever it is I wanted you to do. And I’ll say it’s an expression of love, and i’ll hurt you even more unless you act like you believe me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, fuck that energy.&lt;/p&gt;

&lt;p&gt;Critically, &lt;em&gt;there are alternatives to punishment&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;your only hope of existing non-abusively with the kid(s) in your life is if you &lt;em&gt;and they&lt;/em&gt; know that you do not see “punishment” as part of your problem solving toolkit.&lt;/p&gt;

&lt;p&gt;I have lots more on alternatives to punishment below.&lt;/p&gt;

&lt;p&gt;I continue to be unsure how to channel my own anger over this. I am &lt;em&gt;livid&lt;/em&gt; at Miriam and Donald Thompson, the people who contributed to my physical and emotional existance, for many reasons, and I have no intent of or desire to change that, especially while they are alive and &lt;em&gt;actively claiming the rightness of adults assaulting children&lt;/em&gt;. The first thing my power-obsessed father bullied out of me was the right to protest his unfair treatment, the right to say ‘no’ to him. The last time he physically yanked me around (as an adult) I almost hit him, before stopping myself, and I realized how truly helpless my little child frame felt before his 6 foot 1 inch military officer bullying self. I’m not helpless before him anymore, and critically, &lt;em&gt;I never have to speak to him&lt;/em&gt;, so physical conflict is less likely, but if he treated me today in a fraction of the way he treated me as a child, I would absolutely, without hestation or guilt, hit him, repeatedly, until he stopped aggressing against me.&lt;/p&gt;

&lt;p&gt;They both physically, sexually, emotionally abused and neglected me, and had abundent opportunities to do better, or differently, at any moment in their lives, including within the last few months. The book &lt;em&gt;Spare the Child: The Religeous Roots of Punishment and the Psychological Impact of Physical Abuse&lt;/em&gt; was published the year before I was born. I could try to extend graciousness for them not knowing better, &lt;em&gt;perhaps&lt;/em&gt;, if that claim was plausible or used non-defensively, but they both said to me “we were doing to you what other people told us to do”. Meh. My father is also &lt;em&gt;deeply&lt;/em&gt; misogynistic, patriarchal, but claims God told him to be that way thus it’s the way of the universe.&lt;/p&gt;

&lt;p&gt;Not only could they have refrained from beating me as, like, a three year old, but they displayed poor decision making and head-in-the-sand isolation, when I brought these issues up as an adult. they alternated between ignoring me, or saying &lt;em&gt;I&lt;/em&gt; was the problem, or “nothing they could say wouldn’t make me more angry” and then settled on them blocking me in whatsapp. &lt;sup id=&quot;fnref:angry&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:angry&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I’ll possibly still email them a link to this blog post. I told them both, basically, “You deserve whatever peace you think a child abuser deserves.” and “I’m honoring both of you by using the experiences you’ve both provided to me, then and now, to warn others of these exact things.”&lt;/p&gt;

&lt;p&gt;It seems worth mentioning that the level of emotional dissociation required to beat someone else into submission is profound, and correlates with an overall inability to ever form an emotional connection. In 2024, I saw Miriam for the first time in several years, and kept being stunned by 1) the level of emotional disconnect and 2) how familiar it felt, as something I’d experienced consistently my entire life.&lt;/p&gt;

&lt;p&gt;I never-not-once had a good-enough relationship with my parents.&lt;sup id=&quot;fnref:resent&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:resent&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I am resentful of them, because there were times I wanted a hug, kindness, healthy maternal or paternal energies, and they attacked me instead. Over and over and over. But part of the harm is that as a kid, I &lt;em&gt;knew&lt;/em&gt; what sort of attitudes were supposed to exist between healthy parents and kids, so I kept trying to pretend we had a real relationship. Once I became an adult, it eventually became obvious no relationship had ever existed, and I would never be friends with people like them. If I had my druthers, they’d never meet my kid.&lt;/p&gt;

&lt;p&gt;They both seemed &lt;em&gt;extremely&lt;/em&gt; offended, when, individually, I contacted them to say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Please confirm to me that you will never hit Eden, nor make jokes about, or threats of, hitting children in her presence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I ran into an astonishing level of evasion around this.&lt;/p&gt;

&lt;p&gt;To make a point about the association between discipline and punishment and rules, and how punishment is really just physical assault, I said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;if I find that you have hit eden, after having heard this unambiguous statement assessing the wrongness of that act, shall I arrange a meeting between us, where I will ‘give’ you a spanking, for your “disobedience”?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For the note, this is why violence begets more violence. I despise violence, force, coercion, and yet, when dealing with someone who interacts with the world nearly exclusively through coercion and violence, one finds coercion and violence emrging from the woodwork around them. I recognize that I could perhaps act more ‘healed’ towards them and treat them as simply the confused, wayward, supremacist, aged, violence-using colonizing european-americans that they are, rather than holding onto a specific vindictiveness towards them. Alas.&lt;/p&gt;

&lt;p&gt;I don’t think they’ll ever try to hit Eden, and if they did, the psychological damage to her would be much less than it was for me, to be hit (repeatedly, by them), so i’m not overly concerned. So much of the real harm of ‘spanking’ is that it’s one’s caretaker who is saying ‘i love you’ and hitting and humiliating you is evidence of that love.&lt;/p&gt;

&lt;p&gt;My mom hit me many times, always saying “this is because you disobeyed me, and thus God, and the wages of sin is death, so be thankful i’m only causing you a little death, instead of a big death, to teach you to be obedient.”.&lt;/p&gt;

&lt;p&gt;Eden knows:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Anyone who loves someone else wouldn’t want to coerce and overwhelm them. They wouldn’t hit them, and if an adult ever hits a child, that adult certainly does not love that child, probably never did, &lt;em&gt;and&lt;/em&gt; are likely incapable of experiencing love.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, she knows I view my father/her grandfather as dangerous, that he hits kids, and has sexually assaulted children in the past, and then lies to kids about why he does it.&lt;/p&gt;

&lt;p&gt;She knows it’s insanely hurtful to be willingly tortured by someone else, so if for whatever reason one of my parents or anyone else decided to assault her (‘spank’ her), she would hopefully experience it as “simple” assault, and not as a perverted expression of love. She also is &lt;em&gt;extremely&lt;/em&gt; quick to say and move and clock when she doesn’t like something, and this instinct will accomplish a lot of providing for her own safety.&lt;/p&gt;

&lt;p&gt;The repeated, hopeless, helplessness of adults hitting kids at home over and over for any certain expression does a lot of damage, too. Eden gets to know what it’s like to exist in an environment where ‘punishment’ is a strange concept that some emotionally immature people use to coerce the people in their life they construe themselves as deserving to coerce.&lt;/p&gt;

&lt;p&gt;All the way up until I was at least 31 or 32, I would have said I thought my parents loved me, even though I also knew hitting children was wildly inappropriate. I ‘gave them a pass’, because I wanted to believe I had a family, and it was more useful to pretend that things were good than to fully appreciate how disruptive it is to trust and intimacy to inject physical and emotional assaults, mixed with an overwhelming power dynamic. They freely withdrew warmth and affection to extinguish unwanted or unfamiliar behaviors, and would use emotional warmth/acceptance as a reward when they saw things they liked.&lt;/p&gt;

&lt;h2 id=&quot;a-quick-map-of-what-we-are-covering&quot;&gt;A quick map of what we are covering&lt;/h2&gt;

&lt;p&gt;it’s easy for me to end up on tangents, but also I want to explain things well-enough. I suspect this particular post will end up turning into several posts.&lt;/p&gt;

&lt;p&gt;Here’s what I want to make sure I touch on:&lt;/p&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;reframing ‘christ suffering for sins’ to ‘self-justifying intellectual dressings for the nobility of feudal europe, which is when it was invented’. (Anselm of Canterbury “invented” the modern motive/meme of ‘substitutionary/satisfaction atonement’, which is the pivot around which all of evangelicalism turns)&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;I no longer view the concept of ‘sin’ as having any validity. No more so than ‘spanking’.&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;demonstrate a coherent reframe of “suffering”, transforming it from “something maybe good” to “something certainly bad and simply to be avoided”&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;demonstrate that the motif of “suffering is good” is how parents dissociate from the painful experiences they are causing, directly, to their children.&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;a reframe of “Jesus significance was in His death” (what evangelicals say is the central tenant of evangelicalism) to “&lt;em&gt;if&lt;/em&gt; he mattered at all, it was because of what he did and said, OBVIOUSLY. (Yes, I am accusing Christians of having absolutely nothing to do with the teachings of Jesus Christ)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;I write in the spirit of &lt;a href=&quot;/write-it-now&quot;&gt;write things now&lt;/a&gt; (rather than, for instance, never).&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;because-evangelicals-talk-about-jesus&quot;&gt;Because evangelicals talk about jesus&lt;/h3&gt;

&lt;p&gt;Evangelicals sometimes talk about Jesus, or seem to like to do so. I too, in very certain situations, like to talk about Jesus, if and only if the other person &lt;em&gt;already finds that person interesting before even showing up to the conversation&lt;/em&gt;. If that’s you…&lt;/p&gt;

&lt;h3 id=&quot;a-way-that-a-big-bad-became-a-big-good&quot;&gt;a way that a big bad became a big good&lt;/h3&gt;

&lt;p&gt;there was perhaps a time that jesus’ teachings were tightly bound to the literal concept ‘do not murder’. This particular injunction, simple enough for a child to plainly understand, is still bandied about. However, any churchy institution you or I have interacted now declares the issue “complicated”.&lt;/p&gt;

&lt;p&gt;Churchy institutions say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Jesus still says to not murder, and he failed to specify was that sometimes killing someone is not murder, thus not bad. play close attention while I explain…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Christianity became the state religieon of rome in 300 AD. An emperor named ‘Constantine’ did it, and that’s an easy date to pick for when the state decided to improve it’s fitness by adding the ‘religeousness, christianity’ mod.&lt;/p&gt;

&lt;p&gt;600 or 700 years later, the fitness of the state was being constrained by ‘not enough army’. The state/church looked at the problem, and the available solutions. The church liked the support of the state so “church authorities” helped raise armies for their nobles.&lt;/p&gt;

&lt;p&gt;Raising armies was tricky when the peasents say they can opt out for religious reasons.&lt;/p&gt;

&lt;p&gt;The church authorities decided they would/could “pre-forgive” the peasants who were being dragged into armies and taken off to fight a war. Now there’s no barrier on killing for the ones that wanted to kill, and no barrier for not joining the army, for the ones that didn’t want to fight.&lt;/p&gt;

&lt;p&gt;The peasants once could avoid the draft by saying “jesus says to not kill, and war is obviously killing, so i don’t have to participate in the states wars because I am also obligated to the church”.&lt;/p&gt;

&lt;p&gt;That was, as I said, inconvenient to those trying to raise an army, so the church did them a solid and said “hey, cannon fodder, i just said magic words that i’ve decided makes it cool for you to kill on someone elses behalf, have fun in the army, bye!!!!” To “make it permissible”, they said they would not issue fines or punishments for murder anymore, and might even incentivize murder with first dibs on loot and plunder for the most murderous and such.&lt;/p&gt;

&lt;h3 id=&quot;if-murder-can-be-made-good-why-cannot-adults-hitting-kids-also-be-made-good&quot;&gt;If murder can be made good, why cannot adults hitting kids also be made good?&lt;/h3&gt;

&lt;p&gt;It’s &lt;em&gt;that&lt;/em&gt; easy to go from “murder is bad” to “if it is desired by the right person (an &lt;em&gt;authority&lt;/em&gt;, the pope or the king or the president), it isn’t murder, or if it &lt;em&gt;is&lt;/em&gt; murder, it isn’t bad, or even if it &lt;em&gt;is&lt;/em&gt; murder, and it &lt;em&gt;is&lt;/em&gt; bad, it’s not as bad as not committing murder”.&lt;/p&gt;

&lt;p&gt;Hitting is bad, we all agree, but to permit someone to utter or hold the term &lt;em&gt;spanking&lt;/em&gt;, one accepts (sort of) the statement: “It isn’t hitting, if the right person pre-determined that you should be hit. It magically becomes ‘discipline’, ‘punishment’, a ‘spanking’, and therefore, &lt;em&gt;obviously&lt;/em&gt; an acceptable or laudable thing.&lt;/p&gt;

&lt;p&gt;So, this isn’t a diatribe just on the concept of “spanking”, or “adults hitting children and then convincing the child it is an act of love”.&lt;/p&gt;

&lt;p&gt;I also contend that to assume the validity of the idea of spanking is already a disaster, because this perversion already drags behind it further perversions, usually floating around the idea called ‘discipline’ or ‘punishment’. To accept the validity of discipline or punishment, one is casting their lot in with child abusers and (literally) Nazis. It couldn’t be me.&lt;/p&gt;

&lt;p&gt;I hold rage in me, and feel indignant, that I am going to say some of what I’m about to say. I’ve spoken on this topic with a number of people, including those who abused me when I was a child. They said “well, nothing else was working, so we &lt;em&gt;had&lt;/em&gt; to abuse you”. I wanted to scream in their face that perhaps &lt;em&gt;their obvious needful desire to assault a child ought to have been evidence enough that something was obviously already going very wrong&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The framing becomes clear as soon as you reverse some of the players:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;well, if my aged parents do not instantly obey me, how will I extract future obedience from them if I do not physically, emotionally, and sexually assault them to break their will?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;my wife did not give me instant and unflinching obedience, so I hit her hard a few times, until she’s I can tell by the change in tone of her crying that she no longer is resisting me, then I tell her I love her. I wouldn’t have to hit her if she didn’t make me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Obviously we’d say “you are a domestic abusers and intimates should be kept far away from you. You’re not safe to have around vulnerable populations.”&lt;/p&gt;

&lt;p&gt;never not once have I felt inclined to hit a child, &lt;em&gt;especially my own child&lt;/em&gt;, and I’d like to help you find an easier way of being than your current pro-abuse stance.&lt;/p&gt;

&lt;p&gt;There is obviously a lot to be said about how one can foster a loving and trusting relationship with a small/young person that isn’t based in violence and terrorism, but when my brain is in the mode of “writing against child abuse” I do not find it easy or pleasent to drop into a mode of answering the question of “well, if I am not going to abuse a child, how else should I engage with them?”. Another blog post will perhaps talk about that. For now, go read &lt;a href=&quot;https://takingchildrenseriously.com/&quot;&gt;https://takingchildrenseriously.com/&lt;/a&gt; for a primer.&lt;/p&gt;

&lt;h2 id=&quot;the-theme-of-entitlementobligation-and-supremacy&quot;&gt;the theme of entitlement/obligation and supremacy&lt;/h2&gt;

&lt;p&gt;In the year of 2024, I’ve talked with people who have built into their sense of self the “rightness” of adults hitting children, while at the same time rejecting the possible rightness of children hitting adults.&lt;/p&gt;

&lt;p&gt;I want to tie in to this piece themes of supremacy. I use ‘supremacy’, ‘entitlement/obligation’, ‘abuse’, and ‘emotional immaturity + exploitable power dynamic’ throughout. I believe a certain form of supremacy is in operation for adults who hit children.&lt;/p&gt;

&lt;p&gt;If anyone “makes” it permissable to exploit a power dynamic to cause pain to someone else, it stinks for them and the person they are hurting. It’s also a bummer to these sorts of people sprinkled about society, because if it’s okay a little bit, to them, it needs to be okay in big ways, to them, and they’ll undoubtedly be complicit with some other harms, if the situation were to go just right.&lt;/p&gt;

&lt;p&gt;Settler colonialism is obviously built on the idea that it’s okay to do a litte murder and violence somewhere, as long as the “benefits” are “worth more” than the costs.&lt;/p&gt;

&lt;p&gt;The root attitude, one that is clearly visible over and over and over again when interacting with these people/systems, is one of &lt;em&gt;entitlement&lt;/em&gt; and &lt;em&gt;obligation&lt;/em&gt;.&lt;sup id=&quot;fnref:political_authority&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:political_authority&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The man whou contributed to the pregnancy that led to the birth of the person we now know as “Josh” (me), his name is Donald, he is &lt;em&gt;obsessed&lt;/em&gt; with the concept of authority.&lt;/p&gt;

&lt;p&gt;He perceives it to benefit him today, and its a primary organizing principle for the world around him. He is military, a doctor, has an ‘advanced degree’ from the educational institution most affiliated with the southern baptists/slaveholder christianity. He’s obsessed with authority, believes it’s real, and thinks he has TONS of it. &lt;sup id=&quot;fnref:authority&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:authority&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-origins-of-pro-slavery-christanity&quot;&gt;The Origins of Pro-slavery Christanity&lt;/h2&gt;

&lt;p&gt;Christians didn’t start purely with beating their own children. They got plenty of practice beating slaves, in fact &lt;em&gt;needing&lt;/em&gt; to beat the slaves, to prevent the slaves from walking off or walking away or resisting the beatings.&lt;/p&gt;

&lt;p&gt;Here’s a quote from &lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity#&quot;&gt;The Origins of Pro-Slavery Christianity: Black and White Evangelicals in Antebellum Virginia&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;When black men and women of their own initiative joined evangelical churches in numbers that far surpassed white evangelicals’ expectations, white evangelicals realized the irrelevance of the Old Testament model of slavery and searched for new ways to understand a master-slave relationship in which both parties belonged to the community of faithful.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I just gave the above quote without context. it comes from a book titled _. &lt;a href=&quot;https://www.goodreads.com/notes/8236315-the-origins-of-proslavery-christianity/27372191-josh-thompson?ref=abp&quot;&gt;Read other quotes from it here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It explains how slaveholders were effortful and strenuous in their re-workings of ‘theology’ to support their overt domination of the people who were slaves. As soon as the power dynamic shifted (unfavorably, to the slaveholders) they were quick with a response, to minimize the change, the loss. Evangelicals today continue that noble tradition.&lt;/p&gt;

&lt;p&gt;Some slavers claimed that an authority external to the slaver demanded this treatment of those they enslaved.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[a god] ordered the world for slavery, I’m simply doing what he wants me to.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah, the &lt;a href=&quot;https://en.wikipedia.org/wiki/Superior_orders&quot;&gt;Nuremberg defense&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When I found the title of this book, the first time, I &lt;em&gt;instantly&lt;/em&gt; purchased it for my kindle and began reading it. Generally, when talking about it with christian people, I get met with a fascinating look of passive non-engagement. Like, they’ll willingly order their entire lives around this thing (christianity), they will &lt;em&gt;claim&lt;/em&gt; it’s the most pro-freedom way of being imaginable, they’ll allocate dozens and hundreds of hours of time to the regime, and then claim &lt;em&gt;they don’t have time&lt;/em&gt; to read a book about it.&lt;/p&gt;

&lt;p&gt;I think it’s actually because they &lt;em&gt;clearly&lt;/em&gt; see the book, even from the title, in the &lt;em&gt;exact&lt;/em&gt; same way I did, and know that it is far too dangerous to read. To read it and appreciate it would end their way of life.&lt;/p&gt;

&lt;p&gt;When I read this book, I remember saying “I don’t know if I’ll ever attend another church again”. At that point in time, holding to the premis of &lt;a href=&quot;https://www.goodreads.com/book/show/149033.Exit_Voice_and_Loyalty&quot;&gt;Exit, Voice, and Loyalty: Responses to Decline in Firms, Organizations, and States&lt;/a&gt;, I was using the “voice” option, excitedly sharing what I was learning with others around me. I’d send this book to church people, I talked about it with a pastor, I told my friends, and I remember gaining such insight from their responses.&lt;/p&gt;

&lt;p&gt;Some of my friends heard it, appreciated it, and have largely left the church. this book wasn’t the only reason, but the concepts inside of it did for them what it did for me.&lt;/p&gt;

&lt;p&gt;I struggle to give my full reasoning for why this book is so powerful.&lt;/p&gt;

&lt;p&gt;I might be code switching repeatedly throughout this writing. I’ll exlain it through the lense of ‘frame control’. Frame control is a rhetorical tactic by which someone in the conversation keeps forcing the conversation to be had through a certain frame.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I refuse to talk to you unless you use the language of {x}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;is a form of frame control. I link this piece regularly: &lt;a href=&quot;https://knowingless.com/2021/11/27/frame-control/&quot;&gt;Frame Control&lt;/a&gt;. It’s an excellent piece written by an interesting person, I think it’s worth the read.&lt;/p&gt;

&lt;p&gt;As part of something of an experiment/attempt to improve the state of things even as I expected it to not work, I became “pushy” with my parents, about decisions they made raising me that previously we never discussed. (Like their decisions to hit me until I gave them what they wanted, and to use other forms of emotional coercion, terrorism)&lt;/p&gt;

&lt;p&gt;To the degree we never discussed things they &lt;em&gt;proudly&lt;/em&gt; did to me, they kept a sense of comfort about themselves (perhaps) when thinking/interacting with me. I didn’t ever discuss what I wasn’t supposed to, because I was terrified of my father during and after I lived in his house, because he would &lt;em&gt;terrorize&lt;/em&gt; me into compliance with whatever he wanted.&lt;/p&gt;

&lt;p&gt;I’d learned to get safety by making him feel good about himself, and ignored the parts of how he treated me that was dehumanizing, and mostly didn’t have a relationship with him, though he liked to claim everything was good. (We have hardly spoken since I was 16 years old, I’m now 35). A few years ago, at the beginning of this little pro-slavery christianity journey I was on, when he started realizing fractures were growing, he said “I have not changed in the last few years, I have no idea why you’re pulling away.”&lt;/p&gt;

&lt;p&gt;This ignored  that I was &lt;em&gt;telling&lt;/em&gt; him, and that the environment was littered with clues about why things had shifted. His need for plausible ignorance wasn’t a good look. But, since I wasn’t using one of “his” frames, he could claim to not understand it.&lt;/p&gt;

&lt;p&gt;Miriam does this too. If you speak to her from outside one of her perferred frames, you will not be heard. She is not distrubed by not understanding, she’ll just let everything slide off until it lines up with her patriarchal, slave-holding christianity view of the world. It’s maddening&lt;/p&gt;

&lt;p&gt;As I was appreciating that miriam and donald’s right to comfort didn’t equal my need to self-abandon, and because they are occasionally seeing/interacting with Eden, and because I wanted the relationship to be clarified. They claimed to love me, I claim they hated me, lets just bring it back up and see what shakes out. This post is part of that story, and it contains excerpts of conversations (spoken, text) I’ve had with them, that explains a way that some people today cling to ideas that cause incredible harm and suffering.&lt;/p&gt;

&lt;h2 id=&quot;the-thing-that-changed&quot;&gt;The thing that changed&lt;/h2&gt;

&lt;p&gt;A lot got clearer in my mind once I had a kid, especially once she became the age at which I know my parents had already begun hitting me.&lt;/p&gt;

&lt;p&gt;It hurts enough to witness constantly the oppression and coercion and dehumanization that is pointed towards children today. At her day care, I’ve heard adults barking orders at groups of children, being mean, being aggressive, being dissociated from the kids. I always say something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;oof, can you hear the way that adult is speaking? that tone? That’s not appropriate. I hope you never experience someone speaking to you like that. That’s mean, and demanding. If anyone does speak to you like that, they are being mean and cruel, and if you cannot avoid a person like this, I hope you can at least find a way to be safe from them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;alternatives-to-needing-violence&quot;&gt;Alternatives to Needing Violence&lt;/h2&gt;

&lt;p&gt;The alternative to using violence on your children is not trying to do all the same stuff &lt;em&gt;without violence&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It’s to stop persuing things that justify or demand being overpowering. No appropriate goal can ever call into existance violence around itself, so if you’re willing to use violence, it’s your fault.&lt;/p&gt;

&lt;p&gt;Here’s a list of things that will cause me to hit my kid (and any kid):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s what causes others to hit kids:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;an attitude of entitlement&lt;/li&gt;
  &lt;li&gt;expectations of obedience&lt;/li&gt;
  &lt;li&gt;a willingness to overpower, overwhelm, coerce&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s what I do instead of hitting kids:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;bring mutuality and co-creation to the table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mutuality and co-creation respect differences in power, and are incompatible with overwhelming energies.&lt;/p&gt;

&lt;p&gt;These particular words come from &lt;a href=&quot;https://www.goodreads.com/book/show/402366.The_Verbally_Abusive_Relationship&quot;&gt;The Verbally Abusive Relationship: How to Recognize It and How to Respond&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I witness verbal abuse from parents towards children &lt;em&gt;constantly&lt;/em&gt;. To stop being abusive to someone, one needs more than a goal of ‘not being abusive’ or ‘not being controlling’ but one needs a clue at the alternative way of being. Patricia Evans in the above book talks about abusive people living in ‘power over others’ reality, while non-abusers live in a ‘power with others’ reality.&lt;/p&gt;

&lt;p&gt;Kids, and people overall attune to the difference in energies between mutuality, co-creation, and the energies of a willingness to overwhelm, to coerce, and to extract compliance in the least painful way for the authority figure.&lt;/p&gt;

&lt;p&gt;An extra quick shortcut to parenting without violence would be to read &lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition&quot;&gt;The Most Dangerous Superstition&lt;/a&gt;, and extract from it a reframe, perhaps, of your relationship with authority. I.E. read the book, update a mental model to view a belief in authority as a dangerous superstition, and proceed in your life without ever again relying on the concept of authority.&lt;/p&gt;

&lt;p&gt;It’s not technically a parenting book, but one of the domains I see most soaked in language of entitlements and expected obligations is parenting.&lt;/p&gt;

&lt;p&gt;Children are a deeply, oppressed class.&lt;/p&gt;

&lt;p&gt;In part because this ironclad belief in the authority of parents’ permission/expectation to treat their children as farmable property, not so different than cattle. Cattle never had rights.&lt;/p&gt;

&lt;p&gt;a meaningful line from &lt;a href=&quot;https://www.goodreads.com/book/show/193388249-killers-of-the-flower-moon&quot;&gt;Killers of the Flower Moon&lt;/a&gt;, during a “legal trial” about some very murderous people, was: “No one is questioning if this american killed these indians. It’s simply that the americans don’t think any murder happened. No &lt;em&gt;people&lt;/em&gt; were killed. Animals were killed.”&lt;/p&gt;

&lt;p&gt;The level of dissociation from the humanity in another that can be directed towards any non-self ethnic group can also be directed towards ‘outgroup’ members of the same ethnic group as that person. The part of the soul that needs to be alive to stop one of those would stop both, if it existed, and because it doesn’t, all parts of the self that would rely upon it doen’t have structure.&lt;/p&gt;

&lt;p&gt;That root issue of ‘violence feeling right’ is &lt;em&gt;entitlement&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The few times I’ve spoken to the people who gave birth to me about the violence they meted out to me, and listened to them justify their own violence against me, I can hear their words &lt;em&gt;dripping&lt;/em&gt; with entitlement. I was labelled ‘rebellious’ since well before high school, and my parents cannot imagine that I perhaps disliked being controlled and disrespected, continuously.&lt;/p&gt;

&lt;h2 id=&quot;evangelicalism-is-similar-in-enough-ways-to-colonialism&quot;&gt;Evangelicalism Is Similar In Enough Ways To Colonialism&lt;/h2&gt;

&lt;p&gt;Evangelicals point the techniques of settler colonialism at the personalities of their own children.&lt;/p&gt;

&lt;p&gt;When someone is entitled, they think others are &lt;em&gt;obligated&lt;/em&gt; to give them whatever they’re entitled to.&lt;/p&gt;

&lt;p&gt;American society is drenched with entitlement and obligation, someone acting like there is a right to coerce, and a duty to obey.&lt;/p&gt;

&lt;p&gt;I am, broadly, addressing evangelicals.&lt;/p&gt;

&lt;p&gt;Obviously there are people who beat their children who are &lt;em&gt;not&lt;/em&gt; evangelicals, but there’s something particularly insideous about the beatings that evangelical parents dispense, because along with the beatings is also heavy psychological mistreatment and coercion. it’s also what I experienced, thus what I am speaking to.&lt;/p&gt;

&lt;p&gt;Most concisely, the modern sense of entitlement and obligation, emobied by the treatment of parents towards “their” children, is &lt;em&gt;firmly&lt;/em&gt; rooted in the sense of entitlement and obligation that european americans exhibited towards people kidnapped from Africa and enslaved in America, and who’s ancestors were kidnapped from Africa.&lt;/p&gt;

&lt;h2 id=&quot;the-origins-of-pro-slavery-christianity-part-2&quot;&gt;The Origins of Pro-slavery Christianity part 2&lt;/h2&gt;

&lt;p&gt;This book ended my ability to exist within evangelical circles: &lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity&quot;&gt;The Origins of Pro-Slavery Christianity: Black And White Evangelicals in Antebellum Virginia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I now view existing within or parallel to evangelicalism in silence as being complicit with the kinds of supremacists that created the pro-slavery christianity described in the above book.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/notes/8236315-the-origins-of-proslavery-christianity/27372191-josh-thompson?ref=abp&quot;&gt;Here are a few highlighted sections from the above book&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the command to love one’s neighbor made Lumpkin realize in 1915 that segregation was wrong, why did so few white southerners realize that race-based slavery was wrong? By all accounts, white southerners in the nineteenth century were among the most devoted Christians in the Western world, but their faith seems only to have strengthened their determination to hold another people in bondage. This book represents my attempt to understand this staggering moral failure-to understand why the parable of the Good Samaritan fell on deaf ears for so many generations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;As long as the vast majority of slaves had “lived and died strangers to Christianity” in colonial days, keeping the occasional convert enslaved had not caused white evangelicals many scruples. When tens of thousands of people of African descent were clamoring for admission to evangelical churches following the Revolution, however, and were starting their own churches when whites were too slow or unwilling to facilitate the admission of blacks to white congregations, it became impossible for whites to maintain the illusion that religious commitment provided a meaningful distinction between them and their slaves.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;He justified slavery as one of many hierarchical relationships approved by God in a 1757 sermon, &lt;em&gt;The Duty of Masters to Their Servants&lt;/em&gt;. In what would become the most important plank of the proslavery argument, he taught that &lt;em&gt;“the appointments of Providence, and the order of the world, not only admit, but require, that there should be civil distinctions among mankind; that some should rule, and some be subject; that some should be Masters, and some Servants.&lt;/em&gt; &lt;sup id=&quot;fnref:rulers-and-subjects&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:rulers-and-subjects&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was brought into &lt;em&gt;hilarious&lt;/em&gt; and tragic relief for me recently. I was in my early 30s before ever considering that I’d been raised by emotionally abusive people. I believed the spoken narrative, that it was ‘love’, and I’d accepted that there was no relationship between me and my parents. When my dad left the house when I was 16 to conduct colonialism in the middle east on behalf of American empire, we hardly ever spoke again.&lt;/p&gt;

&lt;p&gt;It never struck me as odd that I had no relationship with my mother. Never once in my life did it cross my mind that I could obtain nurturance or emotional comfort from her, or a sense of attunement. It wasn’t until I started watching other adults having nice relationships with &lt;em&gt;their&lt;/em&gt; parents that I realized something had been wrong in my own childhood.&lt;/p&gt;

&lt;p&gt;I still couldn’t place it. I noticed having a confidence that my parents hated me, but they enjoyed having me around IF I was playing the role of ‘successful, subservient son’. If I stop playing that role, or raised any sort of issue, I’d get treated with either withdrawal and shunning, or open opposition coupled with intimidation and manipulation.&lt;/p&gt;

&lt;p&gt;For some context setting, my parents read and embodied the ideologies of a man (of course) named James Dobson, who was a eugenicist, and taught that parents, if they suitably controlled the behaviors and thoughts of their children, could ‘raise’ them to be good members of a civil society, defined as “participating in european american settler colonialism with a certain ideological bent.”&lt;/p&gt;

&lt;p&gt;Settler colonialists use ethnic cleansing as a primary tool for accomplishing their goals, because it works well ,&lt;em&gt;obviously&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So, the kinds of people that would support population confinement and displacement and genocide, on the concept of ‘race’, make for interesting parents. I resonated with what the athor of &lt;a href=&quot;https://www.amazon.com/Klansmans-Son-Journey-Nationalism-Antiracism/dp/1419764780&quot;&gt;The Klansman’s Son: My Journey from White Nationalism to Antiracism: A Memoir&lt;/a&gt; shared about his childhood experiences.&lt;/p&gt;

&lt;p&gt;Settler colonialists use violence and coercion to get what they want. Violence is expensive and risky, so sometimes other, ‘gentler’ forms of coercion can be made effective, if the person is willing, interested in using violence. Economic coercion, for instance, might seem gentler than knocking someone’s house over with a bulldozer, but it’s all on the same spectrum.&lt;/p&gt;

&lt;p&gt;The bulldozer shows up only if the other methods are deemed to have failed. Abusers say they &lt;em&gt;usually&lt;/em&gt; don’t have to assault their children, but it is still all full of violence because they and their kids know that if certain compliance isn’t had, the violence emerges. I think this is a good way to ‘give’ someone ADHD, by the way. Let them stew in an environment where violence lies behind many doors, and they have influence over if the person sometimes uses that violence agains them, or not.&lt;/p&gt;

&lt;p&gt;This is the core, fundamental dangerous attitude of all people who concede the correctness of the concept of ‘spanking’. It’s an extension of the concepts of ‘punishment’ and ‘discipline’.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;how-spanking-works-in-evangelicalism&quot;&gt;How Spanking Works In Evangelicalism&lt;/h2&gt;

&lt;p&gt;I have many notes (typed, written) floating around on why spanking is abuse. I could quote James Dobson’s books if I wanted to, but I don’t need to. Here’s how spanking works in evangelical circles, in my own words:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If your kid does something that you decide justifies you beating them, you’re not supposed to just reach out and hit them in the moment. You are supposed to ritualize it a bit. Take them somewhere else. Show them you’re calm, and doing the hitting from a place of reason and love. Shame them for a bit, then make them disrobe, or walk over to you and bend over. (Do they do this willingly, or do you force it on them? Oh, the nuances of child abuse!)&lt;/p&gt;

  &lt;p&gt;Then as you hit them, you’re not supposed to use your hand, that might cause them to flinch away from your hand in public, which would be awkward. Maybe use a spoon or a thin stick. It might not leave as many marks as something that would lacerate or bruise. Anyway, hit them until you feel better, or until you feel anything at all, and then (here’s the kicker) tell them &lt;em&gt;you love them&lt;/em&gt;, and that &lt;em&gt;god loves them&lt;/em&gt; and that next time if they obey you/god better, you might not beat them. Tell them that you’re hitting them because &lt;em&gt;they made you hit them&lt;/em&gt; and that you’re hitting them &lt;em&gt;for their own benefit&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I recently read a few stories the woman who considers herself my mother wrote (about me) that revolved around ‘spanking’ three year old me for the ‘sin’ of not doing &lt;em&gt;exactly what she commanded me to do&lt;/em&gt; in a timely manner.&lt;/p&gt;

&lt;p&gt;As her written notes go, on my third birthday, I didn’t put a train set away to her liking. So she beat me, and blamed god/me for the beating. The next time I put the train set away, I did it, through tears, in the exact way she wanted, and said “the lord gave josh obedience”, through tears. I wonder if this has anything to do with why I dislike to celebrate my own birthday, even 30+ years later.&lt;/p&gt;

&lt;p&gt;The issue for her wasn’t that I didn’t put the train set away. the issue was I didn’t &lt;em&gt;comply with her demand&lt;/em&gt;. She viewed her ‘authority’ over me as an extension of her fantasy of how God controls her, or how God controls a husband who controls her. Regardless, that whole chain of control is diminished if she doesn’t get the same level of control over the kids in her charge.&lt;/p&gt;

&lt;p&gt;So, because the bible says ‘the wages of sin is death’, christians think ‘as long as I don’t kill someone, I can hurt them all I ~want~ deem necessary to ensure compliance’, and if I beat them more they’ll be more Christlike, and Sky Daddy will give them more nice things like he gives me, so I’ll threaten them all the more.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;the-concepts-of-punishment--discipline-is-abusive&quot;&gt;The concepts of punishment &amp;amp; discipline is abusive&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;deep breath&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This section deserves its own article, I’ll get it there.&lt;/p&gt;

&lt;p&gt;When I talk with evangelicals today, they can tell quickly how I feel about adults assaulting children. sometimes one might backpedal and say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;yeah, that form of violence is bad, I would not endorse adults assaulting children either. Of course, adults need to &lt;em&gt;discipline&lt;/em&gt; children sometimes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And I note a need to quickly register my &lt;em&gt;strong&lt;/em&gt; disagreement. Now I can send anyone a link to this page, to the above anchor heading, if I want to say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I think a willingness to concede “punishment” as a valid thing is definitionally an endorsement for supremacy or some other abusive ideology and I dont think you wanna be a supremacist or abuse others. Can we talk about it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;the-softest-way-i-can-say-it&quot;&gt;The softest way I can say it&lt;/h3&gt;

&lt;p&gt;Maybe a softer way is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I clock something in your wording that correlates with the kinds of things people with power have said to justify the violence or neglect they point towards people with less relative power. I have found myself becoming a better advocate for the people I love when I’ve reframed and reworded some concepts. Could I tell you the story?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe.&lt;/p&gt;

&lt;h3 id=&quot;discipline-is-punishment-is-retribution-is-revenge&quot;&gt;Discipline is punishment is retribution is revenge&lt;/h3&gt;

&lt;p&gt;So lets talk about “discipline” and “punishment”. These are propagandist terms for something better called “retributive vengeance” or “retributive violence”, ‘retributive justice’, etc. Wikipedia has an entry for ‘retribution’ it’s simply ‘punishment’. It’s very little different from &lt;em&gt;revenge&lt;/em&gt;. Again, a simple reframe of ‘spanking’ is ‘adults revenge-hitting kids’, and it is much clearer.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Retributive justice is a legal concept whereby the criminal offender receives punishment proportional or similar to the crime. As opposed to revenge, retribution—and thus retributive justice—is not personal, is directed only at wrongdoing, has inherent limits, involves no pleasure at the suffering of others, and employs procedural standards.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Retributive_justice&quot;&gt;Retributive justice, wikipedia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, retribution is slightly different from revenge, and we know revenge is kinda crappy. If parents were “hitting their children regularly out of a sense of revenge”, that seems suss.&lt;/p&gt;

&lt;p&gt;Here’s the wikipedia definition of &lt;a href=&quot;https://en.wikipedia.org/wiki/Punishment&quot;&gt;Punishment&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Punishment, commonly, is the imposition of an undesirable or unpleasant outcome upon an individual or group, meted out by an authority—in contexts ranging from child discipline to criminal law—as a deterrent to a particular action or behavior that is deemed undesirable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ick ick ick. Remember, to this person who doesn’t believe authority exists, all these words just round to open defenses of abusive ideologies.&lt;/p&gt;

&lt;p&gt;It’s all obviously devestating to have this sort of contemptuous, exploitative energy unfold in the context of a family relationship. I was &lt;em&gt;constantly&lt;/em&gt; being punished and disciplined by my dad who picked at my every move. (Remember, doctor/military officer/pastor type person). He was nothing if not coercive and evaluative, and he felt entitled to punish me, so he did.&lt;/p&gt;

&lt;p&gt;I survived by running an emotional insurgency against him, &lt;em&gt;and parts of myself&lt;/em&gt;, and it makes me angry to have had all these experiences.&lt;/p&gt;

&lt;h3 id=&quot;how-the-emotional-concept-of-discipline-escalates-to-physical-violence&quot;&gt;How the emotional concept of discipline escalates to physical violence&lt;/h3&gt;

&lt;p&gt;It goes like this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If I tell my child to do something, or to not do something, and they do not do it, or do it, unless I cause them pain and suffering, they will think it is acceptable to continue to disregard the injunction.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This “I have permission to cause them pain and suffering” hinges on the &lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition&quot;&gt;superstition of authority-as-a-thing&lt;/a&gt;, we might as well disabuse the system of both misapprehensions.&lt;/p&gt;

&lt;p&gt;It takes a belief in authority + a belief in the concept of ‘punishment’, or ‘hurting others because you want to’, to justify making threatening statements:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you don’t [put somthing away, do the dishes, take a shower], I will psychologically hurt you and I am willing to hit you if the psychological pressure isn’t enough.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, even if all the other person does is &lt;em&gt;nothing&lt;/em&gt;, they are now in a position where you would be blaming them for the physical act of hitting them. This obviously hurts, sows great mistrust, rightfully.&lt;/p&gt;

&lt;p&gt;So ‘discipline’ and ‘punishment’ means an adult arbitrarily increases the suffering and pain in a childs life, to try to ensure compliance later on.&lt;/p&gt;

&lt;h3 id=&quot;discipline-and-supremacy&quot;&gt;Discipline and Supremacy&lt;/h3&gt;

&lt;p&gt;Discipline and punishment are inherently supremacist. Usually when someone says “discipline”, they mean “punishment”, and “punishment” is shorthand for ‘retributive violence’. The theory (as it works in patriarchal/authoritative/supremacist families) is simple:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;if a “bad” thing happens, someone or something is offended, completely independent of the simple effects of that thing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If I ask you to take out the trash, and you say no, the ‘bad thing’ is that the trash is still in the trash can.&lt;/p&gt;

&lt;p&gt;If I tell you to “stop walking ahead” and you keep walking ahead, an evil act is done, the honor of the noble (me) is offended, and retributive violence must be meted out. To evangelicals, it’s never actually about the wrong act, it’s that a presumed authority figure (a parent, sky daddy) is displeased because the subservient person has treated the authority as an equal, and like any good noble from the middle ages, it is time to hurt someone.&lt;/p&gt;

&lt;p&gt;The real concern is that the honor of the patriarch has been offended, because the property/possession of the patriarch has presumed a state of equality with the patriarch. To fix the offended honor of the patriarch, a further harm needs to be obtained - pain must be extracted from the willful individual, to enforce the concept of supremacy: “There is a hierarchy here, and you damned well better understand where you sit.”’&lt;sup id=&quot;fnref:jokes&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:jokes&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;‘retributive justice’ (revengeful violence) is propaganda justifying all sorts of the worst parts of human behavior. It underpins war, colonialism, ethnic cleansing, child abuse.&lt;/p&gt;

&lt;p&gt;Yes, I am condemning the violent regime of social control some call ‘the criminal justice system of the greater united states’.&lt;/p&gt;

&lt;p&gt;For all the money &lt;strike&gt;wasted&lt;/strike&gt; spent by supremacists on that system, everyone could be housed and fed and given safety and security &lt;em&gt;without coercion&lt;/em&gt;. Even the people who find themselves working the system as the oppressor. Yes, I propose housing, food, dignity, even to the people currently complicit in perpetuating the evils of that system. even deputized slave patrollers/police deserve shelter and food, because they are sentient.&lt;/p&gt;

&lt;h2 id=&quot;common-objections&quot;&gt;Common objections&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;But Josh, if I don’t keep my children afraid of me with threats of violence, how will I force them to…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🤫&lt;/p&gt;

&lt;p&gt;I won’t dedignify myself by considering you to be an advocate for your own children if you presume your chief role in their life is to bully and abuse them. I hope your children, for their own good, realize that they might not be under your control their entire life and they might someday be able to save themselves from you.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;But Josh, it would be dangerous for my child to run into the road and get killed by a car, how will I prevent them from doing so without assaulting them?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Great question. Do you feel a sense of curiosity about how this thing could be accomplished without violence, and without threatening anyone with anything? I’ll take it seriously, because roads occupy some special place in my heart, and evangelicals use the threat of vehicular homicide to justify all sorts of control of their kids.&lt;/p&gt;

&lt;p&gt;First, kids deserve far more access to safe roads than they’ve ever had in the USA.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/crossing_street.jpeg&quot; alt=&quot;crossing the street&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In America, traffic violence is accepted by many levels of society, and children experience it from their first moments of life. Everything about the existance of a child is wrapped up in layers and layers of american car-centric supremacy.&lt;/p&gt;

&lt;p&gt;Car seats, being stuck in car seats, at least in america. Lots of constraints around roads are experienced by children in the 96% of the world beyond the boarders of the USA, but the USA has a particularly special level of vehicular oppression. Constantly hearing cars. Seeing the cars with horrible sightlines and visibility, knowing the drivers of the vehicle cannot see the kid. Seeing light glinting and reflecting off cars, the movement of them attracting the eye. The smell of them. So much of the world being ‘parking aprons’ and parking spaces and parking lots and roads or walking between a parking space and the door of a building. walking in front of or behind a parking space. Being able to see almost nothing from inside a car seat. Motion sickness, even if the driver is good, but especially if the driver is jerky with the steering wheel or rushed/panicked on the gas and brake.&lt;/p&gt;

&lt;p&gt;Being threatened with death every time a car is simply pointed at you, because very little space in America is &lt;a href=&quot;/bollards&quot;&gt;properly protected by bollards (josh.works)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve &lt;a href=&quot;/jaywalking&quot;&gt;formally registered my objections with the concept of jaywalking&lt;/a&gt;, I extend this to kids, obviously. Kids, and the duty of play/playing, ought to have been preserved within American culture. Unfortunately the needs of kids and the needs of houseless people overlap too much, so spaces conducive to kids being kids have been eliminiated.&lt;/p&gt;

&lt;p&gt;Shade in the summer, sun in the winter, comfort, quiet, water, a bathroom, a spot to lie down for a few minutes or a few hours, grass, trees, a place to sit, running water, a structure to climb on. A pile of rocks, a slide, a piece of art, a tree, a swing, some mulch and dirt.&lt;/p&gt;

&lt;p&gt;By telling kids &lt;em&gt;what they deserve&lt;/em&gt;, and sharing in the disappointment of the world they’re in with them, completely, makes a solid foundation for working with them to maximize their options in the dangerous world they live in.&lt;/p&gt;

&lt;p&gt;I keep my kid safe in the road without ever blaming her for the potential violence she might experience. I tell her&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;in this country, most people drive very dangerously and would murder you without hesitation, though they would probably feel bad about it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The greatest source of fear I feel for her is that in this abomination of a country, 40,000 people die every year on roads, and globablly, it’s like 1.2 million people that die, per year. This is wild! The USA went to a 20-year war over the death of 3000 people &lt;em&gt;once&lt;/em&gt;. Since that date, around &lt;em&gt;one million people in america&lt;/em&gt; have died on american roads from entirely preventable accidents.&lt;/p&gt;

&lt;p&gt;It’s not that ‘individual drivers are bad’ it’s that:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;building a road network entirely around supremacist ideals hurts the people they intended to hurt &lt;em&gt;and&lt;/em&gt; people they did not intend to hurt, and literally all hope of progress is constrained by those people who accidentally or intentionally support those supremacists.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, most of you that want to talk about roads and punishment with kids are, to me, not ready to have a real discussion about it, but I think the kid’s intuition is correct, and you could/should use your adult skills to help the roads be safer to them.&lt;/p&gt;

&lt;p&gt;So, she is intimidated by roads, as I am also intimidated by roads. When riding her bike around, she always stops well short of intersections, waits for me to catch up, lets me pass into the intersection slightly ahead of her, once it’s deemed safe (we often work together on the timing piece) and then she crosses it quickly, finishing the intersection before I do. At least on most american roads - when the streets are quiet and safe, she’ll enjoy using them the same as anyone else does.&lt;/p&gt;

&lt;p&gt;Another thought-stopping cliché you might hear offered about punishment or hitting kids relates to the kid reaching for something that will hurt them. All outlets could/should have covers, so there’s no issue with them exploring their favorite past-time, ‘putting things in other things’, right?&lt;/p&gt;

&lt;p&gt;My dad, when I pressed him on assaulting me as a child, used the classic evasion “if the stove is hot and can hurt a child, who reaches for the stove, to keep them safe, I would have to punish them for reaching for a stove”.&lt;/p&gt;

&lt;p&gt;This is the cry of a person who has no imagination. When there’s things Eden might learn regarding heat, I give her things to put in the frying pan to see how heat works. She’s watched me cook many times, seems to perfectly understand heat. I might help her hold her hand near a pan to test for how hot it is.&lt;/p&gt;

&lt;p&gt;I might see if I can touch it for a split second to feel if it’s hot, and let her do the same. I scaffold her skills so she can learn to accomplish whatever it is she wants, with the skills and awarenesses to do so safely.&lt;/p&gt;

&lt;p&gt;It’s ludicrously easy to navigate the world with a child without violence. It boggles my mind how invested parents are in reigning down violence and terror on their kids. I also happen to remember clearly how it felt to be terrorized by my parents, and the many ways I rejected every aspect of their need for control over me, and continue to reject every authority that meets me with an energy of “I believe I am entitled to coerce you, and you’re obligated to obey me”.&lt;/p&gt;

&lt;p&gt;I’ve always helped kids defend themselves against this kind of energy, because it’s so familiar to me, and I’ve found in virtually all situations the kids respond reasonably, kindly, and treat &lt;em&gt;me&lt;/em&gt; with dignity.&lt;/p&gt;

&lt;p&gt;If you want to get along with your kids, read and internalize some messages about the fantasy of authority, then share these with your kids:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition&quot;&gt;The Most Dangerous Superstition&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority?from_search=true&amp;amp;from_srp=true&amp;amp;qid=DrpkRVYchM&amp;amp;rank=1&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Obligation To Obey&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/402366.The_Verbally_Abusive_Relationship?ref=nav_sb_ss_1_20&quot;&gt;The Verbally Abusive Relationship: How to Recognize it and How to Respond&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/aw/d/1793386722?ie=UTF8&amp;amp;qid=1631421225&amp;amp;sr=8-1&quot;&gt;Legal Systems Very Different from Ours&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;gee, josh, I’m not interested or willing to read books that might help me not abuse my child, or help me stand as an advocate for other children who are being abused by adults.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah. I see that you do not want to read these books.&lt;/p&gt;

&lt;p&gt;I’m not a fan of this kind of thinking. I propose that you embrace the resistance, and then read the book(s) anyway, or at least recognize that your resistance might be rooted in &lt;em&gt;something&lt;/em&gt;. It is possible that as you free your children from the shackles of your condemnation and control, you will do a little of the same for yourself. It &lt;em&gt;might&lt;/em&gt; be worth it.&lt;/p&gt;

&lt;p&gt;If you are your own child’s first abuser, and habituate them to think it is love, you are crippling them, destroying their ability to navigate the world and themselves safely, because abusive people and institutions abound, hungry for more bodies to consume.&lt;/p&gt;

&lt;p&gt;Which kid do you think will be safer around other kids and adults?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The child who is occasionally humiliated and assaulted by a parent hitting them, who then tells them it is an act of love&lt;/li&gt;
  &lt;li&gt;The child who is told, with complete seriousness: “It is never acceptable for an adult to hit you, ever, and if anyone tries to do this to you, I hope you can evade, escape, or resist, and if you are able to communicate it to me, I’ll expend substantial resources to protect you from that person.”&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And an adult who no longer hits the kid, but still controls and coerces them with emotional and verbal assaults, is only slightly better, maybe, than one who hits children. An adult who coerces and threatens a child is fundamentally unsafe. An adult who coerces and threatens another adult is fundamentally unsafe.&lt;/p&gt;

&lt;p&gt;To the kids of parents who assaulted them:&lt;/p&gt;

&lt;p&gt;How distressing it is to be terrorized by someone who then also convinces you that they loved you. It really causes the brain to break, and the psyche to attack itself (in some ways) and to dissociate from reality (in some ways) and to project/displace shame and anger towards oneself or others.&lt;/p&gt;

&lt;p&gt;It’s virtually guaranteed you have something like “Complex Post Traumatic Stress Disorder”. Please do not waste your time reading &lt;em&gt;The Body Keeps the Score&lt;/em&gt;, instead read Pete Walker’s books &lt;a href=&quot;https://www.goodreads.com/book/show/20556323-complex-ptsd&quot;&gt;Complex PTSD: From Surviving to Thriving&lt;/a&gt; and &lt;a href=&quot;https://www.goodreads.com/en/book/show/1136530.The_Tao_of_Fully_Feeling&quot;&gt;The Tao of Fully Feeling&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;what-gets-unlocked-if-punishment-and-coercion-are-dropped&quot;&gt;What gets unlocked if punishment and coercion are dropped&lt;/h2&gt;

&lt;p&gt;Parents who believe children exist to serve their ego and obey them issue admonitions to children nearly continuously. The entire tone of the relationship is dominated by the parental willingness to inflict violence. The parent is unable to “see” the child.&lt;/p&gt;

&lt;p&gt;So, one thing that gets unlocked:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;silence&lt;/em&gt;. Sometimes there is profound and extensive silence. If something is needed or noteworthy, parent or child will mention it. Otherwise, harmony, everyone is involved in their own thing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;interesting conversation&lt;/em&gt;. We have interesting conversations, regularly enough. Very reciprocal, back-and-forth.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;curiosity&lt;/em&gt;. I express curiosity towards her, as a default, and especially when there is upset or pain. there’s never rejection of an emotion or sentiment. For instance, coercion cannot abide “no” or “don’t do that”. So, coercion cannot abide the anger that arises after that initial boundary violation. Since we have no coercion, there’s no need to suppress any emotions, it’s easy to greet all feelings warmly, and because there is no coercion, there’s a high baseline of peace and easy, confident expectation of problem-solving anything that arises.&lt;/p&gt;

&lt;p&gt;one of the reasons I will never beat eden is I don’t view our relationship as one where I am entitled to control her behavior.&lt;/p&gt;

&lt;p&gt;I seek her wellness, and thriving, easily, and view myself as someone who can help her accomplish and do whatever she wants to accomplish and do, because I have different skills and capacities than she does, but at no point am I entitled to simply control her simply because.&lt;/p&gt;

&lt;p&gt;There’s genocide happening in the world, there are dangerous streets and loud engines and a coercive school system’s demands to comply, and there are limitations on schedules and people’s availability and it certainly seems like money is not infinite. All of these things are worth railing against.&lt;/p&gt;

&lt;p&gt;When she says “I want {x}” I usually respond, truthfully, with something like “I think you have great taste. That sounds like it could be excellent.” and if it’s something we can do, we do it. Otherwise, it goes into a ‘that sounds nice and maybe we can do that/you can have that some day’ bucket.&lt;/p&gt;

&lt;p&gt;Why punish kids for having good taste and liking to configure the world to their liking?&lt;/p&gt;

&lt;p&gt;I will never see intentionally terrorizing her as a ‘useful tool’ to coercively extract compliance from her.&lt;/p&gt;

&lt;p&gt;Would you believe that we have an extremely peaceful way of being, and interact with mutuality, consideration?&lt;/p&gt;

&lt;p&gt;I am considerate towards her, and she is considerate to me. There’s obvious regard for each other in ways that people like my parents would never be able to appreciate, and I don’t think they would be able to even see it, really, even if they witnessed it, because they so willingly polute the intimate space of a relationship with coercion and violence.&lt;/p&gt;

&lt;p&gt;no problem solving is achievable if one of the parties knows the other one will hurt them if they become suitably displeased.&lt;/p&gt;

&lt;h2 id=&quot;oops-ive-spanked-abused-a-child-of-mine-in-the-past&quot;&gt;Oops, I’ve “spanked” (abused) a child of mine in the past&lt;/h2&gt;

&lt;p&gt;If you’re reading these words, and you’ve “spanked” or “punished” your kid(s), a little or a lot, what to do?&lt;/p&gt;

&lt;p&gt;OK, so, starting point is… my goal isn’t necessarily to be gentle with &lt;em&gt;your&lt;/em&gt; ego. A fair approach is to first attend to the experience of the victims. Lets first concede the power of language. it’s not ‘spanking’ it’s ‘hitting and then creating intellectual or moral justification’.&lt;/p&gt;

&lt;p&gt;The impulse to hit is tightly linked to attitudes of entitlement and obligation. We’ll talk about that more, I mention it now because I believe the most efficient avenue of repair with yourself and your kid(s) would be tot find and appreciate the fullness of attitudes of entitlement.&lt;/p&gt;

&lt;p&gt;One hits someone else when one feels &lt;em&gt;deeply&lt;/em&gt; entitled to that person submitting to them. Talk about that with your kid(s), perhaps. Solicit their experience of your overwhelming coerciveness.&lt;/p&gt;

&lt;p&gt;It’s worth appreciating that settler colonialism has lots of entitlements to it, as does european american supremacy culture, and it’s all sorta connected.&lt;/p&gt;

&lt;p&gt;the repair from the myth of the “correctness of spanking” is closely linked to walking out of a supremacy culture.&lt;/p&gt;

&lt;p&gt;The alternative to entitlement/obligation is cocreation and mutuality.&lt;/p&gt;

&lt;p&gt;Here’s some ideas on things that might contribute to a different and non-dominatior model of interactions with ones kids:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;you will now not utter ‘spanking’ seriously again. Use ‘adults hitting children and then self-justifying’.&lt;/li&gt;
  &lt;li&gt;if you are willing to read some books, read &lt;a href=&quot;https://www.goodreads.com/book/show/402366.The_Verbally_Abusive_Relationship?ref=nav_sb_ss_1_33&quot;&gt;The Verbally Abusive Relationship&lt;/a&gt; but from the lense of a child experiencing verbal abuse from their parent. (virtually all physical abuse is preceeded by verbal abuse &amp;amp; neglect)&lt;/li&gt;
  &lt;li&gt;read the &lt;a href=&quot;https://takingchildrenseriously.com/&quot;&gt;taking children seriously&lt;/a&gt; website and tell any kid(s) around you that you’re reading it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am interested in not being complicit with people who abuse children or anyone else.&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hi, [child], there were times in the past that I thought it was okay to use my size and role in your life to hurt you and scare you and control you, either with my hands or extensions of my hands, &lt;em&gt;and&lt;/em&gt; my words and tone and emotions. I’d decided that it was appropriate for me to overpower you in in these ways, to force you to experience me as overwhelming, terrifying, hurtful.&lt;/p&gt;

  &lt;p&gt;That alone is pretty bad, but then I also further assaulted your &lt;em&gt;sense of self&lt;/em&gt;, by trying to convince me/you that all the rage and hurt you felt about all this was wrong, because I told myself that that this mistreatment of you was &lt;em&gt;loving&lt;/em&gt;, and that you’d brought it on yourself, rather than me creating every bit of this harmful and painful dynamic.&lt;/p&gt;

  &lt;p&gt;It is, in fact, terrible to intentionally hurt someone, for any reason, even in response to a ‘perceived wrong’. especially so when there is a power dynamic being exploited.&lt;/p&gt;

  &lt;p&gt;As a starting point, I am practicing the concept of &lt;a href=&quot;https://takingchildrenseriously.com/&quot;&gt;taking children seriously&lt;/a&gt;, and am trying to bring mutuality and co-creation into my way of being. I cannot fully insulate us all from  demands outside of us, which means we sometimes have to do things we don’t want to do, or I am sometimes unavailable to spend time with you, or we cannot have and do the things we want to have and do. however, I will no longer be making valid threats to extract compliance from you.&lt;/p&gt;

  &lt;p&gt;It might take me time to learn the new habits. Feel free to clock me when it seems like I’m heading in the direction of making a threat. I hope it doesn’t happen, and obviously these are all simply words. I recognize I destroyed precious things by inflicting pain on you.&lt;/p&gt;

  &lt;p&gt;Things might be strange around here as we adjust to this new state of affairs, I’m pleased for newness. There will undoubtedly be less/no more spanking, hitting, punishing, attacking. Clock me on it all.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;on-sin&quot;&gt;On “Sin”&lt;/h2&gt;

&lt;p&gt;Usually evangelical parents won’t say “i beat my child whenever I feel like it” they’ll say “when {child} &lt;em&gt;sins&lt;/em&gt;, I must discipline them”.&lt;/p&gt;

&lt;p&gt;So strange, to believe in sin, now.&lt;/p&gt;

&lt;p&gt;There’s bad things that people do, to themselves, each other, or to non-people (concentrated agricultureal feeding operations jump to mind), and those things need to be addressed, but the concept of sin isn’t needed to fix those harms.&lt;/p&gt;

&lt;p&gt;my kid sometimes goes to a daycare at a church/school facility. She hears the normal set of evangelical thought-stopping phrases. I was raised on these, it’s really interesting to encounter them through her brain.&lt;/p&gt;

&lt;p&gt;She’s quite reasonable in many ways.&lt;/p&gt;

&lt;p&gt;She picked up the phrase “God keeps us safe”. We digested that a bit, eventually ended up with&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;in so many ways &lt;em&gt;you&lt;/em&gt; keep yourself safe. And people around you can help keep you safe. But in many situations, you are making big contributions to your own safety. Walking safely, catching yourself skillfully when you fall or trip, riding your bike or running skillfully. Being aware, planning ahead, especially with roads. all &lt;em&gt;skillfulness&lt;/em&gt; and &lt;em&gt;awareness&lt;/em&gt; is a form of safety.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s not “thank god for keeping Eden safe” it’s “thank Eden for keeping Eden safe”. She’s attentive with her movements, her bike, roads. She is, literally, very responsible for her own safety. I obviously stay nearby when she’s with me, I work with effort to maintain her safety too, and appreciate her own skillful management of her own domains.&lt;/p&gt;

&lt;p&gt;another time she said “jesus fixed my sins” or something like that.&lt;/p&gt;

&lt;p&gt;I didn’t respond much. How interesting. I think she said it before she was 3 years old.&lt;/p&gt;

&lt;p&gt;I remember my response, clearly. I said “how interesting it is, that there some people who think sin is a real thing.”&lt;/p&gt;

&lt;p&gt;And that keeps being my general response. “How interesting it is, that some people think sin is a real thing. I wonder what else they think is real.”&lt;/p&gt;

&lt;p&gt;The very first concept she brought with her, related to the concept of God:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;God is so big&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I could hear the kids songs in her language that her church camp makes her sing. There’s a kids song all about “god is so big, so this and so that”.&lt;/p&gt;

&lt;p&gt;I said “hm, indeed. There’s so many big things out there. [looks around] That tree, and that mountain. That cloud. so much is so big.” We talked more about it, both a big god and bigness in general.&lt;/p&gt;

&lt;p&gt;A few days later, at her school parking lot, when a HUGE suburban pulled in next to us, Eden said, in the same way she said ‘god is so big’, ‘that car is so big’. I laughed.&lt;/p&gt;

&lt;p&gt;I just talk about ‘the evangelical’s god’ or ‘some peoples god’ or ‘the god of certain americans’ when I’m with her. It’s pretty graceful and ele&lt;/p&gt;

&lt;p&gt;If you’re coming at me about someone elses sin, I’m just clocking you as a perpetrator or victim (or both) of settler colonialism and the intellectual self-justifications they spun around themselves. The concept of “sin” goes hand in hand with what Pete Walker might call “Toxic Shame”.&lt;/p&gt;

&lt;p&gt;When someone says ‘sin’, I now hear ‘i am probably trying to get you to shame yourself into a regime of social control I’m about to tell you about…’ and I get so bored, so I leave.&lt;/p&gt;

&lt;h2 id=&quot;additional-readingresources&quot;&gt;Additional Reading/Resources&lt;/h2&gt;

&lt;p&gt;All of these count as parenting books, loosely. I find most parenting-specific books to be meh, and I find lots of parenting help stuff in non-parenting books.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://takingchildrenseriously.com/&quot;&gt;taking children seriously&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/aw/d/1793386722?ie=UTF8&amp;amp;qid=1631421225&amp;amp;sr=8-1&quot;&gt;legal systems very different than ours&lt;/a&gt;, that link is the book, &lt;a href=&quot;http://www.daviddfriedman.com/Legal%20Systems/LegalSystemsContents.htm&quot;&gt;this link&lt;/a&gt; is the book online, shared on the author’s website. &lt;sup id=&quot;fnref:pirate-law&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:pirate-law&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;10&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/the-politics-of-jesus-notes-quotes&quot;&gt;The Politics of Jesus (josh.works)&lt;/a&gt; If you want to keep the person of Jesus central in your life, &lt;em&gt;and&lt;/em&gt; you want to move away from european american supremacy, the ideas in this book are a good place to start. If, along the way, you end up also dropping the person of Jesus from your life as a central organizing principle, this book is &lt;em&gt;still&lt;/em&gt; a good place to start. Here’s something else I wrote about this book: &lt;a href=&quot;/was-jesus-ethics-normative&quot;&gt;Was Jesus’ ethic normative? (josh.works)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity#&quot;&gt;The Origins of Pro-Slavery Christianity (goodreads.com)&lt;/a&gt; This book points to the origins of ‘paternalism’, which is the underlying intellectual support for the sense of ‘duty’ some adults feel around hitting children, and the obligation they think their kids have to receive their physical abuse without protest. It started as the ‘duty’ masters had towards their slaves to be ‘good masters’, and the obligation they felt their slaves had towards them to be ‘good slaves’. &lt;a href=&quot;https://www.goodreads.com/notes/8236315-the-origins-of-proslavery-christianity/27372191-josh-thompson?ref=abp&quot;&gt;here’s some of my highlights from the book (goodreads.com)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/43803602-they-were-her-property&quot;&gt;They Were Her Property: White Women as Slave Owners in the American South (goodreads)&lt;/a&gt; This book is relevant to the concept of ‘discipline’, because it’s &lt;em&gt;full&lt;/em&gt; of accounts of white female slaveowners ‘disciplining’ the slaves around them, or showing shocking degrees of entitlement to the very personhood of someone else. That these people &lt;em&gt;wouldn’t&lt;/em&gt; beat and abuse their own children defies reason. &lt;a href=&quot;https://www.goodreads.com/book/show/43803602-they-were-her-property&quot;&gt;here’s some highlights of mine (goodreads)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25761655-the-secret-of-our-success&quot;&gt;The Secret Of Our Success, Joseph Henrich (still goodreads)&lt;/a&gt;. An amazing book. Here’s &lt;a href=&quot;https://slatestarcodex.com/2019/06/04/book-review-the-secret-of-our-success/&quot;&gt;a really nice book review (slatestarcodex.com)&lt;/a&gt;. Not technically a ‘parenting book’, but tons of useful mental models for the transmission of skills, ‘skills/knowledge toolkits’ and more.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/on-leaving-evangelicalism&quot;&gt;On Leaving Evangelicalism and Opposing it (josh.works)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/quotes-from-spare-the-child&quot;&gt;Quotes from ‘Spare the Child: The Religeous Roots of Punishment and the Psychological Impact of Physical Abuse’ (josh.works)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:spare&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I wanted at least one or two quotes from the book findable here, I might just paste a bunch of text to it’s own page soon. I could only get a paper copy of the book, so I cannot use my usual “highlight text on kindle and share entire quote automatically to goodreads” thing. Here’s some of page 60, a section titled &lt;em&gt;BREAKING WILLS&lt;/em&gt;: &lt;a href=&quot;/quotes-from-spare-the-child&quot;&gt;more quotes here&lt;/a&gt;.&lt;br /&gt;
[Quoting someone else:]&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;The child can decide on his own when he wants the chastisement to cease. Whenever he is willing to submit to the parent’s will, he can profess his willingness to obey. He should be given the opportunity for an honorable, but &lt;em&gt;unconditional, surrender&lt;/em&gt; [emphasis added].&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;In his book &lt;em&gt;God, the Rod, and Your Child’s Bod: The Art of Loving Correction for Christian Parents (1982)&lt;/em&gt;, Larry Tomczak (a charismatic from a Polish Catholic background) describes a battle of wills with his eighteen-month-old son which took place in a parking lot. When his small son refused to hold his father’s hand, as he had previously been trained to do, Tomczak says that “He was defiantly challenging my authority.” He adds, “What followed in the parking lot was a series of repeated spankings (with explanation and abundant display of affection between each one), until he finally realized that Daddy always wins and wins decisively!” Apparently, only repeated acts of force could compel this small boy to submit to his father’s authority and comply with his will. But the issue of winning clearly was paramount.&lt;/p&gt;

      &lt;p&gt;Win or lose: These are seemingly the only alternatives available to such parents. No choice is offered children except to surrender their wills to the wills and superior force of their parents. In the warfare between parents and children, the parents expect to win. If not, the war continues until such time as the children submit and obey. Only by giving in to the adults can children escape the pain and suffering brought about by the application of the rod or other implements in the name of Christian discipline.&lt;/p&gt;

      &lt;p&gt;Whether thought of in terms of breaking wills or shaping them, the obsession with authority, control, and obedience remains paramount.&lt;/p&gt;

      &lt;p&gt;Evangelical writers have been preoccupied for centuries with authority and obedience, and the image of authoritarian family government often shapes their arguments in favor of harsh discipline for children. Early in the nineteenth century, one anonymous evangelical advocate of the rod offered this advice: “To insure, as far as may be, the proper behavior of his children, let every parent make it his inflexible determination, that he will be obeyed-invariably obeyed.” He added, “The sum and substance of good government is to be obeyed; not now and then, when the humor suits; but always, and invariably.” “The connexion between your command, and his obedience,” this writer noted, “should be the unfailing consequent of the other.”&lt;/p&gt;

      &lt;p&gt;&lt;a href=&quot;/quotes-from-spare-the-child&quot;&gt;more quotes here&lt;/a&gt; &lt;a href=&quot;#fnref:spare&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:strong-language&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;i note discomfort writing these words. Me saying “Spanking is child sexual assault.” is correctly heard as me saying “I asses [some of you] as sexually assaulting your own child(ren) every time you spank(ed) them”. Some have weasled: “oh, it was just a few swats on the butt”, or “we only spanked you sometimes” or “we stopped spanking you once you grew up to a certain age”.&lt;/p&gt;

      &lt;p&gt;Obviusly one might cease physically assaulting someone else as they age, and become more capable of resistance. a parent might ‘get got’ somehow. Evangelicals are brave about assaulting children, but are less comfortable with when the power dynamic is less imbalanced. I keep saying ‘the morality of this situation seems revealing by switching out some of the players, and seeing how it sounds.”. If i overheard someone saying about their partner “I dont hit them as long as they do not misbehave”, or “I only hit them when they do something that makes them really deserve it, I’d clock that as deeply concerning. &lt;a href=&quot;#fnref:strong-language&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:ethnic-cleansing&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;most society-wide regimes of punishment are simple social tools to accomplish social control and ethnic cleansing, supporting the oppressor, reducing the power of the oppressed. Imagine having a bunch of people who speak a different language hop off a boat, kill a bunch of people, say they are instituting ‘rule of law’ and then you and your friends magically keep getting got by the police. European American supremacists showed up on Turtle Island in the 1600s and used the printing press + delusions of ‘political authority’ to justify their regimes of physical and economic violence, against literally every other people group existing in Turtle Island. Those particular european american supremacists of course also enslaved populations of people from Africa, and needed a bunch more ‘laws’ to justify and maintain the enslavement regimes. The first police departments in the greater united states were created in the slaveholding south by giving badges to (‘deputizing’) the existing slave patrols. read more at &lt;a href=&quot;/jaywalking&quot;&gt;https://josh.works/jaywalking&lt;/a&gt;. &lt;a href=&quot;#fnref:ethnic-cleansing&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:angry&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Indeed, nothing my dad could say was eliciting from me the response he wanted. He was being defensive, all the way, on the rightness of beating children, and I was prolonging the discomfort he was experiencing as a result, and he feels entitled to psychological comfort. I think he experienced me as threatening, because I was forcing into his mind a very uncomfortable thing. Him as an abuser of children. So, rather than confronting himself as an abuser, he simply transformed the discomfort to ‘josh is making me uncomfortable and I &lt;em&gt;deserve&lt;/em&gt; for him to make me comfortable, so I’ll simply ban him from my conciousness.’ &lt;a href=&quot;#fnref:angry&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:resent&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;my dad was barely ever in the house when I was growing up, and then from ~16 onwards, he and I never really voluntarily spoke again. Something similar with my mother. The contempt energy was strong from 16 and 17 years old, onward. She and I never had a close conversation. As I play back the last 35 years of our experience, I can tell clearly that they resented me, had contempt for me, from before literally my third birthday, until now. Nothing I said or did ever impacted them, they viewed me as ‘a strong willed child’ (more on that later) and thus viewed my will as something to be broken, and when I maintained my sense of self, despite their abuse, every evidence of my distinctiveness, my willfulness, confirmed in their mind that I was “rebellious”. 🙄 &lt;a href=&quot;#fnref:resent&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:political_authority&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;A delicious read that might fix all parenting woes for all readers: &lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt; &lt;a href=&quot;#fnref:political_authority&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:authority&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Consider a read of the short book &lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition&quot;&gt;The Most Dangerous Superstition&lt;/a&gt;. It goes:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;The primary threat to freedom and justice is not greed, or hatred, or any of the other emotions or human flaws usually blamed for such things. Instead, it is one ubiquitous superstition which infects the minds of people of all races, religions and nationalities, which deceives decent, well-intentioned people into supporting and advocating violence and oppression. Even without making human beings one bit more wise or virtuous, removing that one superstition would remove the vast majority of injustice and suffering from the world.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;The book is about &lt;em&gt;authority&lt;/em&gt;. Certainly do not pair it with &lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt; &lt;a href=&quot;#fnref:authority&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:rulers-and-subjects&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Supremacists use this justification for their supremacy all the time. Not “I want to be dominant over you” but “someone else, long ago, wanted people like me to be dominant over people like you”.&lt;/p&gt;

      &lt;p&gt;My father sometimes is in the company of my child, regrettably, so I once got on the phone with him to confirm that he knew he had no authority or basis to ever threaten my child with hitting, or to make jokes about hitting children in her presence. He reacted with indignance, not that he wouldn’t hit a child, but that only &lt;em&gt;parents&lt;/em&gt; are supposed to hit kids, not grandparents, and he had the “luxury” of not being required by his god to beat my child. &lt;a href=&quot;#fnref:rulers-and-subjects&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:jokes&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;It was said in the family in which I grew up: “I could kill you and make another one just like you.” Mmm, thanks for affirming the inherent dignity of a person. I was so desirous of a modicum of affection from the man considering himself my father that I’d pretend it was funny. &lt;a href=&quot;#fnref:jokes&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:pirate-law&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;the “Pirate Law” chapter in particular is exceptional. Go to &lt;a href=&quot;http://www.daviddfriedman.com/Legal%20Systems/LegalSystemsContents.htm&quot;&gt;the author’s website&lt;/a&gt; to download each chapter at a time as a docx, or the whole book. Often when rule-enforces justify their coercion, they might say “I have no other option but…”. In reading this book, one’s imagination for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;problem:remediation&lt;/code&gt; ideas might be increased, after reading about legal systems beyond what is normalized within the the greater united states. my stance on violence is that not only is it inherently abusive, it’s also unbelievably lacking in imagination, compared to co-creation and mutuality. Unfortunately, if one cannot regard their own/other’s humanity appropriately, one might not be able to get this bit right. &lt;a href=&quot;#fnref:pirate-law&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Quotes from &apos;Spare the Child: The Religious Roots of Punishment and the Psychological Impact of Physical Abuse&apos;</title>
   <link href="https://josh.works/quotes-from-spare-the-child"/>
   <updated>2025-02-01T13:00:00+00:00</updated>
   <id>https://josh.works/quotes-from-spare-the-child</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Here’s quotes from &lt;a href=&quot;https://www.goodreads.com/book/show/1335495&quot;&gt;Spare the Child: The Religeous Roots of Punishment and the Psychological Impact of Physical Abuse&lt;/a&gt;, by Philip Greven. It was written in 1989, same year I was born, 35 years ago as of 2025.&lt;/p&gt;

&lt;p&gt;It’s sometimes nice to be able to share quotes with people. Photos of pages from books work only so well. Some books, many books, I’m able to read via my kindle paperwhite + the library. So it’s free to get on my kindle, and I can simply highlight text with my finger, save it as a highlight, and when I next sync books to it from the library, those quotes end up in my goodreads account, attached to the book. Sharabale, if I so choose. It’s how I get &lt;a href=&quot;https://www.goodreads.com/notes/8236315-the-origins-of-proslavery-christianity/27372191-josh-thompson?ref=abp&quot;&gt;quotes like this&lt;/a&gt;. So paper books take a bit more work, but sometimes only a little extra effort. Until recently I didn’t know the above Goodreads/Amazon/Library book workflow and thought I had no way to get quotes off the kindle en-mass.&lt;/p&gt;

&lt;p&gt;I invite you to skim, see what lands with interestingness.&lt;/p&gt;

&lt;h2 id=&quot;from-a-section-titled-rationales&quot;&gt;From a section titled “Rationales”:&lt;/h2&gt;

&lt;p&gt;page 68&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;… child is crying, not tears of anger but tears of a broken will. As long as he is stiff, grits his teeth, holds on to his own will, the spanking should continue, 43&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But how long is long enough? When will the child’s will be truly broken? What sounds indicate to a parent “not tears of anger but tears of a broken will”? Hyles [the author of the above quote] does not say. What is remarkable, though, is the imagery of breaking wills, for that language links him with previous generations of twice-born Protestants who also sought to ensure that their children had no wills of their own.&lt;/p&gt;

&lt;p&gt;Often a distinction is made between a child’s will and his or her spirit. Roy Lessin, for example, declares: “A correctly administered spanking will break the rebellion and stubbornness in a child’s will but will not break his spirit.” James Dobson  &lt;sup id=&quot;fnref:dobson&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:dobson&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; a psychologist and the director of the multimillion-dollar organization in California called Focus on the Family, whose books on child-rearing (especially &lt;em&gt;Dare to Discipline&lt;/em&gt;, which has sold over a million copies) have been enormously popular among evan-gelical Christians, explores the issue of children’s willfulness in &lt;em&gt;The Strong-Willed Child: Birth Through Adolescence&lt;/em&gt;, thus joining a long line of corporal-punishment advocates obsessed with the wills of children. As a man who believes that “pain is a marvelous purifier,” Dobson has no hesitation in recommending that parents use “spankings” to control and to suppress their children’s willfulness and rebelliousness.&lt;/p&gt;

&lt;p&gt;The language of warfare is invoked at times in these treatises on will-breaking and punishment. Dobson, for example, uses the imagery of battles in his books such as &lt;em&gt;Dare to Discipline&lt;/em&gt;, in which he notes:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The child may be more strong-willed than the parent, and they both know it. If he can outlast a temporary onslaught, he has won a major battle, eliminating punishment as a tool in the parent[‘]s repertoire. Even though Mom spanks him, he wins the battle by defying her again. The solution to this situation is obvious: outlast him; win, even if it takes a repeated measure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Similarly, Fugate invokes the imagery of rebelliousness that arises from the willfulness of children:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the child’s rebellion has been the defiant resistance of his parents’ authority, he should be chastised until he chooses to give in.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;from-a-section-titled-breaking-wills&quot;&gt;From a section titled “BREAKING WILLS”&lt;/h2&gt;

&lt;p&gt;The focal point of evangelical and fundamentalist Protestant child-rearing always has been the emerging wills of children.* Breaking the child’s will has been the central task given parents by successive gen-erations of preachers, whose biblically based rationales for discipline have reflected the belief that self-will is evil and sinful. From the seventeenth century to the present, evangelical and fundamentalist Protestants have persistently advocated the crushing of the will even before a child can remember the painful encounters with punishment that are always nec-essary to accomplish such goals.&lt;/p&gt;

&lt;p&gt;The theme of breaking children’s wills was voiced even before the Pilgrims had taken firm root in America. John Robinson, who had been their minister in Holland but did not accompany them on their voyage to the New World, acknowledged in his essay of 1628 on the education of children that “It is much controverted, whether it be better, in the general, to bring up children under the severity of discipline, and the rod, or no. And the wisdom of the flesh out of love to its own,” he rec-ognized, “alleges many reasons to the contrary. But say men what they will, or can, the wisdom of God is best.” Citing Proverbs to confirm his point, Robinson noted that&lt;/p&gt;

&lt;p&gt;surely there is in all children, though not alike, a stubbornness, and stoutness of mind arising from natural pride, which must, in the first place, be broken and beaten down; that so the foundation of their education being laid in humility and tractableness, other virtues may, in their time, be built thereon. This fruit of natural corruption and root of actual rebellion both against God and man must be destroyed, and no manner of way nourished, except we will plant a nursery of contempt of all good persons and things, and of obstinacy therein. 37&lt;/p&gt;

&lt;p&gt;Robinson’s language of breaking, beating, and destroying is no accident, as his advice concerning children’s willfulness makes clear:&lt;/p&gt;

&lt;p&gt;* ⁠In &lt;em&gt;For Your Own Good&lt;/em&gt;, Alice Miller extensively quotes German and other European sources from the eighteenth century to the present concerning the breaking and controlling of children’s wills. The texts’ interchangeability with those from English and American sources is indicative of the omnipresence of such views throughout both Europe and America for many centuries. They are so much alike that any reader who compares the quotations in this book with those in Miller’s surely will be conscious, as never before, of the pervasiveness of what Miller labels “poisonous pedagogy.”&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;For the beating, and keeping down of this stubbornness parents must provide carefully for two things: first that children’s wills and wilfulness be restrained and repressed, and that, in time; lest sooner than they imagine, the tender sprigs grow to that stiffness, that they will rather break than bow. Children should not know, if it could be kept from them, that they have a will of their own, but in their parents’ keeping: neither should these words be heard from them, save by way of consent, “I will” or “I will not.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A century later, Susanna Wesley used the same harsh language while recommending a similar course of action to Christian parents in her famous letter to her son John: “To inform the understanding is a work of time, and must with children proceed by slow degrees, as they are able to bear it; but the subjecting the will is a thing that must be done at once, and the sooner the better,” she insisted. Her advice still resonates:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;When a child is corrected it must be conquered, and this will be no hard matter to do, if it be not grown headstrong by too much indulgence. And when the will of a child is totally subdued, and it is brought to revere and stand in awe of the parents, then a great many childish follies and inadvertencies may be passed by. I insist on the conquering of the will of children betimes, because this is the only strong and rational foundation of a religious education, without which both precept and example will be ineffectual. But when this is thoroughly done, then a child is capable of being governed by the reason and piety of its parents till its own understanding comes to maturity, and the principles of religion have taken root in the mind.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Subduing and conquering wills in the Wesley family required repeated infliction of painful beatings, beginning in the cradle and continuing throughout childhood, a process Susanna Wesley also recounts in considerable detail in this letter. Physical punishment clearly seemed to her indispensable to her aim of conquest.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;[Philip Greven is quoting someone else:]&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The child can decide on his own when he wants the chastisement to cease. Whenever he is willing to submit to the parent’s will, he can profess his willingness to obey. He should be given the opportunity for an honorable, but &lt;em&gt;unconditional, surrender&lt;/em&gt;. [emphasis added].&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In his book &lt;em&gt;God, the Rod, and Your Child’s Bod: The Art of Loving Correction for Christian Parents (1982)&lt;/em&gt;, Larry Tomczak (a charismatic from a Polish Catholic background) describes a battle of wills with his eighteen-month-old son which took place in a parking lot. When his small son refused to hold his father’s hand, as he had previously been trained to do, Tomczak says that “He was defiantly challenging my authority.” He adds, “What followed in the parking lot was a series of repeated spankings (with explanation and abundant display of affection between each one), until he finally realized that Daddy always wins and wins decisively!” Apparently, only repeated acts of force could compel this small boy to submit to his father’s authority and comply with his will. But the issue of winning clearly was paramount.&lt;/p&gt;

&lt;p&gt;Win or lose: These are seemingly the only alternatives available to such parents. No choice is offered children except to surrender their wills to the wills and superior force of their parents. In the warfare between parents and children, the parents expect to win. If not, the war continues until such time as the children submit and obey. Only by giving in to the adults can children escape the pain and suffering brought about by the application of the rod or other implements in the name of Christian discipline.&lt;/p&gt;

&lt;p&gt;Whether thought of in terms of breaking wills or shaping them, the obsession with authority, control, and obedience remains paramount.&lt;/p&gt;

&lt;p&gt;Evangelical writers have been preoccupied for centuries with authority and obedience, and the image of authoritarian family government often shapes their arguments in favor of harsh discipline for children. Early in the nineteenth century, one anonymous evangelical advocate of the rod offered this advice: “To insure, as far as may be, the proper behavior of his children, let every parent make it his inflexible determination, that he will be obeyed-invariably obeyed.” He added, “The sum and sub-stance of good government is to be obeyed; not now and then, when the humor suits; but always, and invariably.” “The connexion between your command, and his obedience,” this writer noted, “should be the unfailing consequent of the other. “&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:dobson&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I cannot believe it. This person, James Dobson, decades after &lt;em&gt;Spare the Child&lt;/em&gt; was written (1989, same year I was born) came back into the life of my family (and possibly &lt;em&gt;your&lt;/em&gt; family) via my parent’s participation in his cult during my own childhood. I overheard TONS of ‘focus on the family’ programming as a kid. &lt;a href=&quot;#fnref:dobson&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>On Scooters as a class of vehicle/tool</title>
   <link href="https://josh.works/scooters"/>
   <updated>2024-12-18T13:00:00+00:00</updated>
   <id>https://josh.works/on-scooters</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Often when I say “scooter”, especially in the united states, the person thinks of something different than what I mean. Here’s a recent post from the &lt;a href=&quot;https://www.instagram.com/sportiquescooters&quot;&gt;Sportique Scooters&lt;/a&gt; instagram:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/sportique_insta.jpg&quot; alt=&quot;sportique&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://www.instagram.com/p/DB44uZbsGhK/&quot;&gt;source&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This&lt;/em&gt; is the kind of vehicle I’m talking about when I say “scooter”.&lt;/p&gt;

&lt;p&gt;I once had a vehicle just like this photo. The helmet I used (and still use) is not as charming as this helmet, unforunately, but it is a bit safer, and I want the best head protection I can get. &lt;sup id=&quot;fnref:helmet&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:helmet&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;There’s more to say about this kind of vehicle, and I’ve tried to, a few different ways. This page currently serves as “just” a jumping off point to other scooter-related resources.&lt;/p&gt;

&lt;h2 id=&quot;collections-of-writings-about-scooters&quot;&gt;Collections of writings about scooters&lt;/h2&gt;

&lt;p&gt;See, it’s not really about scooters, per se. It’s the verb of the thing. Scooters are different than cars, but the only reason it matters at all is because scooter-ing is vastly different than using a car, or a bike, or a motorcycle.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;/scootering&quot;&gt;https://josh.works/scootering&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists&quot;&gt;My tiktok&lt;/a&gt; has lots of footage from/about scooting, mostly of me experimenting with different aspects of showing trips from place to place, or how I might view a certain feature of american road design.&lt;/p&gt;

&lt;p&gt;I’ve happily and comfortably ridden scooters around countries where nearly every motor on a roadway is attached to a scooter, and the driving norms are sometimes generous. It can be so peaceful. traffic flows very smoothly and at an incredible number of vehicles-per-minute through relatively low-square-meter intersections, in terms of land allocated to the intersection.&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:helmet&quot; role=&quot;doc-endnote&quot;&gt;

      &lt;p&gt;I always wear a full-face helmet of the “modern” style. An integrated sun visor is ideal, along with a clear visor that can be completely closed.&lt;/p&gt;

      &lt;p&gt;If you see some of my scooting videos you’ll have a sense of it.&lt;/p&gt;

      &lt;p&gt;These kinds of helmets are the most protective, provide the most protection from wind and sunlight and noise.&lt;/p&gt;

      &lt;p&gt;I also wear a disposable painters mask. It’s a heavy-duty N95 “Odor respirator”. Scooting makes one quite aware of air quality issues. Obviously there is plenty of vehicle tailpipe emissions, but also tire rubber microplastics AND metal dust from brakes, so there’s a lot in the air I want to keep out of my lungs.&lt;/p&gt;

      &lt;p&gt;Here’s what the internet has to say about these kinds of masks.&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;An R95 Odor Respirator 8246 is essentially the same as an N95 respirator in terms of filtering 95% of airborne particles, but the key difference is that the R95 is designed to be somewhat resistant to oil-based particles, while a standard N95 is not, making the R95 a better choice for situations where oil mists or fumes might be present; both are NIOSH-approved respirators.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;fumes? brake dust? airborn bits of rubber? I’ll wear the best mask I can, please, and I’ll wrap my whole head in a bubble (inside my full-face helmet with a closed visor) of mostly un-moving air, with all the vents closed up, unless the air is super clean.&lt;/p&gt;

      &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/3M-Safety-8247HA1-A-Workshop-Respirator/dp/B002Y4E196/ref=sr_1_2?crid=3CGDB9NZ7XHK0&amp;amp;dib=eyJ2IjoiMSJ9.D4bJbO7VhC_gdahADUUzn5vdyXLTJW_nCNmaGSrK6Svqdms6F2j50XJFBTXmR90pTE3Dz8IeT9fVn7RJ7mX-jScBPQp3WJkv-KV9Prrq2xTwRNo-5zOsWc-9nkQ73ih4FP1b_VDydDIz6zY0mIVMUOJbD3nwp2ayLFUP3gn3PD9ztGAotvrXEhzRSP06JoFZZmhuEP6OezSAT16-uBtEVtC5P8xmXGg7V1jepSKdjc8.0PWurAG0HwrB5liZS3UpwL7OeSoMYAeY4hyu14HA1hc&amp;amp;dib_tag=se&amp;amp;keywords=odor+blocking+r95&amp;amp;qid=1734560422&amp;amp;sprefix=oder+blocking+r95%2Caps%2C144&amp;amp;sr=8-2&quot;&gt;Here’s the exact 10-pack I last got off of Amazon&lt;/a&gt;. Once you try a nice mask like this, it might be hard to go back. Once I started getting choosy about masks, I started wearing them &lt;em&gt;a lot&lt;/em&gt;. I appreciate that to smell a vehicle or be downwind of it while it’s changing its speed via brakes and thus increased rolling friction on the ground, or its changing its speed via the engine, and thus increasing the particulate shedding rate and tailpipe emissions, is to be sorta ‘bathed’ in a plume of emisssions. &lt;a href=&quot;#fnref:helmet&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Practicing with Polylines Part 2 - Get Your Data (as a polyline) From Strava</title>
   <link href="https://josh.works/polyline-practice-again-strava-auth"/>
   <updated>2024-09-16T13:00:00+00:00</updated>
   <id>https://josh.works/polyline-practice-02-re-up-strava-auth</id>
   <content type="html">&lt;p&gt;Last time, I did a &lt;a href=&quot;/polyline-practice-again&quot;&gt;minimum first pass&lt;/a&gt; on rendering a polyline on a map.&lt;/p&gt;

&lt;p&gt;It wasn’t just any polyline, though, it was a path of a walk I went on. (Technically, just a fragment of a path).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;this is a heavy draft, I’ve had issues getting this all working well in the past, still have to suss it today.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;the dictionary definition of a polyline is ‘some string that decodes into lat/long pairs that can be traced on a map’. I’m interested in the lines I’ve always looked at, which were made by Strava, from a device on my person, while I was walking, or biking, or riding my scooter.&lt;/p&gt;

&lt;p&gt;So it’s data, but it’s also extremely-specific-to-me location data, and it obviously has the capacity to be fascinating.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My&lt;/em&gt; data is likely to be boring to you, though.&lt;/p&gt;

&lt;p&gt;What might not be boring would be &lt;em&gt;your&lt;/em&gt; data.&lt;/p&gt;

&lt;p&gt;You could go on a walk right now, with the &lt;a href=&quot;https://www.strava.com/&quot;&gt;Strava app&lt;/a&gt; running on your phone, save the activity, and a moment later be looking at a map with that new activity data rendered upon it.&lt;/p&gt;

&lt;p&gt;Lets do just that. Like any good thing on the internet, there’s others who have done this thing in a concise and better-than-i-could way.&lt;/p&gt;

&lt;p&gt;These were my first sources and inspiration for this project:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.markhneedham.com/blog/2017/04/29/leaflet-strava-polylines-osm/&quot;&gt;https://www.markhneedham.com/blog/2017/04/29/leaflet-strava-polylines-osm/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://gist.github.com/mneedham/34b923beb7fd72f8fe6ee433c2b27d73&quot;&gt;https://gist.github.com/mneedham/34b923beb7fd72f8fe6ee433c2b27d73&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today, I’m going to &lt;em&gt;try&lt;/em&gt; to ‘quickly’ get a working auth ‘thing’ set up, close-enough to a copy/paste ruby script, so you can run a script or run some ruby commands in an IRB terminal, and get your data back from Strava, including any activity data polyline strava has.&lt;/p&gt;

&lt;p&gt;The goal being a polyline you can copy and paste, yourself, into a html document and get a cool map, showing off a walk or journey you went on yourself. It’s &lt;em&gt;strongly&lt;/em&gt; based on Mark Needham’s stuff.&lt;/p&gt;

&lt;p&gt;First, download the &lt;a href=&quot;https://www.strava.com&quot;&gt;Strava&lt;/a&gt; app (android/iphone whatever: https://www.strava.com/)&lt;/p&gt;

&lt;p&gt;Create an account, and then go on a ten minute walk while tracking that as an activity in the strava app. Finish the walk, end the activity. It’ll upload to Strava, and now we can use the Strava API to get that activity data back out and look at.&lt;/p&gt;

&lt;p&gt;You can keep working through this guide without activity on your Strava account, so maybe plan on taking a ten minute walk in the next hour or so.&lt;/p&gt;

&lt;h2 id=&quot;set-up-a-strava-application&quot;&gt;Set up a ‘strava application’&lt;/h2&gt;

&lt;p&gt;Strava has apps, and you can give those apps permissions at a per-app basis. You’ll set up an app that you’ll then give permission to know certain things about your data.&lt;/p&gt;

&lt;p&gt;So, to make the app account, and get your account id/ key, head to the developer settings. go to &lt;a href=&quot;https://www.strava.com/settings/api&quot;&gt;https://www.strava.com/settings/api&lt;/a&gt; and follow the prompts to get an API application set up.&lt;/p&gt;

&lt;p&gt;When you have your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;client_id&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;client_secret&lt;/code&gt; available, you’re ready to continue.&lt;/p&gt;

&lt;p&gt;We might use &lt;a href=&quot;https://github.com/dblock/strava-ruby-client&quot;&gt;https://github.com/dblock/strava-ruby-client&lt;/a&gt; at some point.&lt;/p&gt;

&lt;h2 id=&quot;authorize-the-app-to-access-your-strava-data&quot;&gt;Authorize the app to access your strava data&lt;/h2&gt;

&lt;p&gt;You’re going to need to generate a token (a refresh token and )&lt;/p&gt;

&lt;p&gt;We’re going to do some creative things. Paste this into a pry session.&lt;/p&gt;

&lt;p&gt;do &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem install &apos;strava-ruby-client&apos;&lt;/code&gt; first.&lt;/p&gt;

&lt;p&gt;Then, fire up a pry session or irb session in your terminal. I recommend a text file where you can keep text for copy/paste accessibility. Copy the below text into your own blank file, update the client_id and client_secret variables (don’t commit any of this to github, you can make it an environment variable later. Or now.)&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;strava-ruby-client&apos;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Strava&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;OAuth&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;client_id: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;client_secret: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;secret&quot;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;redirect_url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;authorize_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;redirect_uri: &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;https://localhost:4000/oauth&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;approval_prompt: &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;force&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;response_type: &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;code&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;scope: &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;activity:read_all&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;state: &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;magic&apos;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;this did not work:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://www.strava.com/oauth/authorize?approval_prompt=force&amp;amp;client_id=63764&amp;amp;redirect_uri=developers.strava.com&amp;amp;response_type=code&amp;amp;scope=activity%3Aread_all&amp;amp;state=magic&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;this worked:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://www.strava.com/oauth/authorize?client_id=my_client_id&amp;amp;response_type=code&amp;amp;redirect_uri=http://localhost/exchange_token&amp;amp;approval_prompt=force&amp;amp;scope=activity:read_all&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Look in the URL for “code” variable, and carry it on to the next step, where we give Strava this code, it’s treated as a ‘refresh token’, and if we give strava a refresh token it’ll give us back a valid access token that can then be included in the request authorization of every subsequent API call, and we’ll get back data for the strava account identified by that access token. This is all ‘just’ ‘basic’ auth stuff, but it can get tricky sometimes.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;uri&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;net/http&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;URI&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;https://www.strava.com/oauth/token?client_id=YOURCLIENTID&amp;amp;client_secret=CLIENT_SECRET&amp;amp;refresh_token=REFRESH_TOKEN&amp;amp;grant_type=refresh_token&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;https&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Net&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;use_ssl&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Net&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;read_body&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# look at the response before continuing, save the `access_token`&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In following that link, and approving the app, you’ve given your own app access to your Strava account data. Finish the oauth “flow” to view your data.&lt;/p&gt;

&lt;p&gt;With that code, in Postman you can now make a request.&lt;/p&gt;

&lt;p&gt;To see if it works, you can also paste this into an IRB session:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;uri&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;net/http&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;URI&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;https://www.strava.com/api/v3/activities/&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;https&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Net&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;use_ssl&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Net&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Authorization&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Bearer ACCESS_TOKEN_FROM_PRIOR_STEP&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;read_body&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;boom. Look at your activities! The polyline(s) might be visible now. If so, phenominal! Save them to a text file, or a CSV, manually or automatically.&lt;/p&gt;

&lt;p&gt;To get the detailed polyline, and not just the summary polyline, you need one more request:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;uri&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;net/http&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;URI&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;https://www.strava.com/api/v3/activities/YOUR_ACTIVITY_ID?include_all_efforts=true&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;https&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Net&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;use_ssl&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Net&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Authorization&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;••••••&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;read_body&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Does that work? I hope it does for you. It worked for me.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Practicing with Polylines</title>
   <link href="https://josh.works/polyline-practice-again"/>
   <updated>2024-09-10T13:00:00+00:00</updated>
   <id>https://josh.works/polyline-practice-01</id>
   <content type="html">&lt;p&gt;This is a first pass at trying to do something interesting (repeatedly) with the same base primative, in this case, a “polyline”. Read the rest of this post, understand what we’re going for, then go to &lt;a href=&quot;/polyline-practice-again-strava-auth&quot;&gt;part 2: get your own polyline from strava&lt;/a&gt;. It’s not trivial to get, but its interesting data, and you’ll have an abundance of polylines, if you want them.&lt;/p&gt;

&lt;p&gt;The polyline in question I got from Strava, after recording a scooter ride:&lt;/p&gt;

&lt;p&gt;This post should be interesting to programmers and non-programmers alike. A polyline is a way of encoding a bunch of latitude/longitude pairs, so it can be drawn in detail on a map.&lt;/p&gt;

&lt;p&gt;Here’s what the polyline looks like, raw:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;oops, in a browser this string simply disappears off the side of the page. Here’s what it looks like in an editor:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/polyline_preview.jpg&quot; alt=&quot;polyline&quot; /&gt;&lt;/p&gt;

&lt;pre&gt;
u}pqFttt_S@NFNB?JA@@DIH@@CEEBAPAFBHK@@FEf@??FLEPA\?LD@CECDI?BBEH?DHLCT@BLBtB?@FADDDMADC@BJEIBAEMA@AC?HKACDDAHQEMA{@?e@BCR@FBJ?DBJAHB`@AF@LAHE~@?FEJLVC\?DNBA@BFBBAPMJAP@NCBE?CIO@Cn@Fl@Cj@BDEDBFALDN?^?HILCRHNAVD~@?XKz@k@HSBWHKVOD?b@VJBHA?KCQBi@n@Sp@e@`AMHIJDZB^?\KPKVYLq@f@i@Nm@L}@Cg@Q_AMWDH?CUa@g@YCEBGJQ`@]Eu@AA?HAG?f@CFSZITDHXXJPN`@BBAU}@s@_A][EEBAA?OEA}@JQL@F?EMAKLKBEFPd@Ma@QBA?D@EHKBKJKDILEGHe@@WAAEA@BBCADD@ABCK@UCW@IRO\GDGLABBF?TGD@TI^GX?@EDBJCNBFCLDHJLMBBBCL@NFDC@MH?JN@X@BD?NIJBh@SZ@HK@BVA@CDALDHHRAHBZBFEBYFO?MBSAECHDPANOIOC?CJIFDFB@DDEEA?DC?B@ALLKADACADC@AC@@GBAA?ECBARDPBKEHDA?IEA@@?C@F@AB?@FCKAF@D?C@@EC@A?BCC?E@P?CCB?GFAGB@CAA?BC?D??D@K?AAB@@AAC@@EDACD?CBBABCA@CADACB@CAC_@@UCKAABGAUAEICAEBa@FU@_@@ED?^BDA@IEQ?k@FCF?DBBGEOCWCAMAG]EAKBADGECECa@Bk@Dc@EaBDQE?CGD_@PIH@LHD?@BIFEEOAf@CDAAI@DBEF@IC?B?CFFDBBFF@LC@ICEQE?B?M@LCAD?EDAC@A@DA@FKACGCFBABCAEIHDB??DCABB@AEGDFEABFAC?CABECJHGBDXXPD`@L@HBDZ@NAJC@O?DOD@CM@BBABNAHEBI?GEKAM?QDDCL?RBJ?HIBKISR@CHBACBECDDG@BB?C@FCGKrC@\?BCABB@\?d@@@?C@H@AC?CF?\GFK?G@EA?CG?gABQFCFCn@Ft@JDT?BFBKNBEGGE?EGAMD@EJQBBFIJGB?@FAFC@B@ABHQ@BMN?H?KCA@@@A@@ABAAHEA?@B@GDCI@?BAEABCA?CB?CBBHGCB?CCBFC?@E?@BC?BCD@CC?BAA@?E@?@AC@AF@??C@G@LEEWFD??FHALD@DGF]CMR@SCAABDADDC@AEED@ADABDCBEA?@?CDAEB?NCCBEABBBDPXJFFDGJ?RGBEB@\R^LHJJ@d@Kb@E^MD?@@C@@IABDEDBj@?~@GNBJANDr@?TDXNNPPd@Fz@Gz@?f@BZAVBb@Cf@@HELG@?EDB@ADHBrBDz@KpA?~@Kv@a@|@_@Va@`@G?KES[KGKWGEa@CQEBDk@CYBKDc@XSAODUA]DSC[Bk@Ck@BUAUDIAAAUFQIYCIMK]MAODEDAGDBC?CIBUECE@DEACCFD@ACADE@AEFFGMFA?@IAI@AGBMCE@HBBKBG?DCDKLCG@@IBA@MZWA@?CGGCAAGKUAK@MCKIGM_@IA@KDEC?CHAAAD@BB?CA?B@CHJADBBCCC@CNGFBHJJMCC@DT?F?AF@FH?HGXBTFNKPFAAAG@CD?E@DH@@EAIDD?ACCFDDLGB?FELAAC?CMA?BJBMEKA?@A?DJHE?CCCFCAJED@ACA@@EHXFC?EEACKFQ?EEAM@AFC@L?LUHXD?ABCCCFAC@B@GKG?KOUAKKIq@RCD@DHB?@CBVUPo@D?A?BDNQCS@GDQHMCHDIJq@HMBMDI@KC??DBCH?EO?CBACKL_@HI?KCXICJMFS?GGCID@PPQA@GEE?HDHKHC^DBABGLENA@CFe@CMCk@CACD@BCAEIBMB@BGHCB@EM?KBI\CNBPYEGGB?MCCCLG?@CCHG@EE@CFA?DSFAJBEEDBXCF?V??@E@MFCOi@?KDCB@?FIB?BB`@CN?ADDHY@a@AAADEBAD@HFEC?@CEA@EB@AG@BPEJ@CGOGQ\AIDCA@EYBMFKH?E^BXAHAAGQFB@ACC?HHIDKC?@BDGB?@FGDE?CKCDAG?FHUYEIDBRHBDF?C?DAGBO?KD[KUEBIABDE@WAIBF?M?ADDv@D@FE?FHGJBBH?RDD@MGOGG?IB@C@@ABF@LHLJBFABKCIBJE@@BG@IJO@?BB?CDB\DVCDCME?@L@FAB?IFL@J?NEL@X?CCPCAADKAEBWOIBO?a@OG?OQQGG@ML@LEJCZ@@AD@AGJI`@EFCABA@BCH?CMJOBENIp@CDAHEDAAIDMH@@I@?B@AJF@PEFQDC?@@D?WHYRo@R?DQDKRQJG?UFIAm@HOEACDBABE??FIE@AJABKOJGNKACFFdBADG@@BEAZAp@KdCCRG@?AB@CDHLA^Dv@Gd@BNEDUJUBQDID?Ae@C?IBECCC@FGPDTKBIKVy@?UFQF]GMKK[QMAOFYVE?OHO@ULSRGBSb@^r@RXJDXD^ALBhAEDWCI?SC?EBCJ?JDEE@B@BCACC??BDEB@C@FC@CM@GFAABBNKFK@@G?KBIL@@XMDIGH@@BA?OMGMFGFYh@CNAAAEADIDIGSA[HUCGEQ_@_@Y_@q@c@NEDUD]LI?MC}@@e@GUAGDEXUXg@Xa@NGFc@AOBY?k@Ig@Fq@A]DCDc@AY@GGQD_@@GLC@eA@OCqCG}@HO?ICc@DYGMBEEM?MLSE_@?SDm@EO?IDGEG?KFFl@?n@K@QC]@OAKFAFFh@I\?HDBTCBCEAE@@F@B?Da@PJEKAACDAVWd@[??ALBFNIWHDA@FFA?GGABICC?@s@FSAj@@J@BFCEQCs@DLGH?GBF?C@F?EAB?C?BACAC@?CCBBDHBFAOABA?ACASDH?BBFA@CBBH?KGM@HAMABDF@ICB?EEDDC@?AFAGAB?AAC?D?AB@AO@JDcCP|BWF?DFCGAB@EDLEKFD?@IGF?ED?CAAFHAEA@ACCFECC@?CIDBEGGABBBJAH@@CSDREBMGJB@CAB@AAABBBCGABB??BCBUJFKB@C?CCTIYDEFFEZAICWJAKD@HEF@AB?EDDAHHKCGOJ?BHCENNM@EA?AAD?C@?C?D?E?B@AA??A?DH??BKC@C@DCE@D?EBBCCM@F?AAFBAA@?C@@BA?BCA?@??CA@@AA?@@?A?@@AA?@?CA@BGEI@ABR?KHB?ACF?CIFWIFADB?JEKHDDECDE@HIDFA?MABD?GNEDNQCC@@GDE?BAFA?BD?MBCBBAAAFKA@@FAA@C@BCBI@DEBAABB?@AAE?BC?@EB@GADD?@AA@BGSFRAA@A?H@AAECJEFFE@M?H@AAI@BDAG?@@AC?@CABB?A@?A@@EC??CC?F?CJB?CACB@?E?AGFECBEEHB@FABACJ@BCC@KKC@BGF@A@ACDFAF@DAI?@E@DGDA?@CBCAADBG?BAAAFEAF@AAEBB@?EC@P@BBI@EKBKC?AHBFCK?DBBHAGAADO@H??BD?C?@ADBCGD@YJXAIKBA?EGFBG?B@CA@AC?BC@CCDC?ADAEJB@ACC@B@CBN?EC?BGD?FBEI@B?@IM@G?NIH?DDIIHD?EAD?ICBIAHACDBBA?H@EBLAO?BAG?BCC@B@GED?ABFB?D@CEADEM?AABCDDKAL?CBBA@FEC?CI?B?A??EB@EALBABBC?BE@DAA?@@A@BAD?E@D?WDF?FE?BEAFBCABAA@ECDBCEEDB?ACD?ABDAIBD@AABAC?BAI@F?AGC??@DAC@DDA@BCCBE?AIH@@J@AADB@?KE?DFC?EEKCD?ADD@AA@AD?E@BAGCL?G?A@@ABBE?@EIAL@AB@BAG@@CAF@O?@@C?@@DA?CC@B?C?@A@?CB?EB?CAD?SAh@FK?MCMBF@?@B??EBCD?OABCNBKB?BH??CL@Q?@E@FC@HBI?AAE?HAAAGBFB?DB@GCBCEAH@G?B@CBDCA?BAAA??G@FA?CC@BAGAIBT@QBl@GKAO@B?A?F@UBD@BAI?FMCNBOEHDEKDJIMDFBWDTBDC@GAAB?ECF@EF@GCJBMCF@EAHACF@HCG?F@K?@DE?BMFDCAACUBRACBN@QDDACGBAI?H?C@B@?I[JH?A@NCKCS?P@VE@@@J[MJ?HFEDYAN?@E@@FCL?FCK?QBJ@O@b@@MIM@LDICJE@KA@@@AFG@DFE@@@E?AE@?CCBAI?FJF?E??ICEF?C??HCABC@F@CC??CE@FAAE?D@AC?@@F?G@@DC?AE@@?@@AGAH@A??C@?A?CBFEIB@?CED@AECHB?C?FCCAB?AB?CA?@@ADCARAG?BBIAD@A?DEIFFCG@BEB?E@?AEHDE?ECB?DBAG?DAA@B@@AEA?C@BEDD?@E?BBAAC?BC?AED@GDDE?BBC?BGCLGM@A?FACHEEBAE?D@A@D?A@?CD?M@F?A@HBCA@GCB?CC@D@C?@@A?@B?ADCICCDD@@CBHOAJAAAB?@EG@FNAA?EEAA@BCC?FACEB@E@BAAE?FCBJEC@B@SBLD?CEADDDCI?BA?CCA@??B@CB??BCB@AAAB@CAB?C@@CB@C@B?I?@?@BGAJIE?DEEAHFE@A?BCE@J?CAD?A?@AG?@@ECHDOB?BHDCA?G@?A@FAG@?@D@KJDEACBABC@@C?@BEAD@?@CABB@CK?HCKDB?A@BEB??@CABAAAEDHAGADA?CC@@@C?EB@?AABB@C@@C?BAAAJ@C?EADAEAA?F@EAD?IDDAEAD@A?@?@AE@BA?@C@B@ABEABCCADACBG?J?B?CA@?C?ACD@BAC@@ACA@BC?ECB@C@D@C@DAEAF?@@A@EA@CB@E?FAIDECE?ABCA@ANDBAEAD@CC@CC?D?E?EDNBC@@B?EEA?@B?G?DAADAA@CHA@@E?ABCABAA?DB?@CC@CBBE@D@CADAEA@EA?@@A@@HI@DIA??ED??BC@@CCABEACGDC?@A@BH@?DC@JBECDCGCBCG@IA@?C@@@BAACD?BCEABABBAHLB?GC@?FQCFA?ARFEBD?OAFACDCA@CG@F@C?CE@A?BD?C@AAH?@CK@D@FAACBA?CEBB@@AQADACDG?L?ACA?DBCFDBABJ?KEEEI@HADB@AACG@B?@@A?BAAANCB@E?AFE@B@E?JCCB@@CA@C@?A?BAAC@?I@?DI@BB@CCA@EEE@@?F@A?B@A?BDA?CA?@AK@B?DIE@BFB?EBBAC?D?BA?ACAB?C@D?@D?ICACBHDGDEAEGG?T@GI@?C@CAABF@DCE?D?A?@@C?D@BA@?A@C?@BE?BBA??@B@ACB@EA@AD@KAPBKE@??@C?DACCB@C??@DBEADDEA@BA@B?G?CCD?C@@CBAGCBAI@?BF@AC@@A@@AEAAEC?DBA??AA@D?BKOAPBM@LBC?D?K@L@C?@B@?CCJ?ICE@FAGAJ@O?@AC?BA@BF@M?AGCCD?OCA@DBNDEAAJ@A@BAEDBIGDA@@E?BDCEAD?AD?CA@ADFAGA?B@QMLFBBA@?AEBACHAG@@??B@C@@C@BB@CEB@EC?DABFEC?@@ACE?BACIAB??BAADCAC?BC@B@?@E@F?@@CEDAA@?CIAJ@A@E@J?K?D?C?PFMAFDJ@ECFA?AQMOH@?AE@BDAA?B@FCADB@C@A@?CBC@@GA@AABBCDDC@B?ACQ?H@?BC@E?PEAABAC?ABCCBECDHFMBBEK@C@@BPGD@Q@AF@@BCLSDAA?@@KBB?CD@AGBJAQ@DCRAI@CE@@GBD??EDAJDCFYCGCCBLCCC@BHAC@B?A@DECBB@CA@AAB@CA@B?AAABBA?@AA?@W@NCC?@?EFa@DFIAA`@??GPCEBBDCACBBAA?@?ACABB@?GCDB@C?@AF?M@BA@D?CC@HCCB@?AC@C?@BAI@DCMCE@BLB??FC@BCCQPGJ?EFMD@HFGCAF@MD?ABCH?S?@DDDBAG@@G@??EC@CAB??BFI@?EDE@@FFS@BCDG?CDCCJD?DCA@CCGBCDBCA?B@ELDCEHBGA?@D?EAEDBCAAC@?BEBMEREB@KDBCF?C@DCC?AE@DDGG?KFGALCB@AB?AB?G?F@ZGKAYHVGB?ODEAAJD@?FB@BCACEC@CABE?@CC?IMFVL??IE??@AA?@?EC?B??D?E?@@A?BCC@FBDAE?DB?GK@??@?AAA?B?C@?@NDCCFBEFEEGM??BD@A@E?FCMCE?J?@BBCI@HCD@I?ABD@?C?BCAF@M?ABBBFAAA@BBAC@?EBBCAIBBKDACA?@E?BBAEEDICNBO??CD?BBGBB@F@CCBCG?B?ADFFBCC@BI@@CCDDI@@ACAAGQFJADBDGB@ECC@PFGDIATCE@ICBCD@AAE?C@@@C?AAHAIILAJDQ@A?FBABQ@?DC?LA@KC@B?@?ACBAE?ABB@KBB?CAPAE?@AGAH@C@?DB?ACFAAEK?J@M?GBD?ADBAABHACEBAFDK@D@O@EC@AECHCJ@C?D?ACDAGFDB?ACCGB@@M?b@?I@DFD@?ED@CCH@Q@EA?A@@C@QESH?IJ?VEDIDCYBTGUJLADDCGBFA??DAEBECGCBHDJ@I?Gn@?YH?CEEBEA?ADAEFE@AAFEB?BFCFGHECEO@GNGCEGBC?FKJD@HDBV@HIKAOFIC?BHBBAI?DCACKGE@?@FBEFAKKMHAK?R?SCNB?BHNADB?BFFBD?c@GHEBEA@QAMBF?\JAEG@@CH?BEMAHIEBCK?BD@GTBDGGJGGBBC@??EFHYAHAA@BBPD?EKE?@ACB@CBBCA?@??CAB@@@AEA@?AB?CBBAC@DEABBC@BAA??GDDAB@GC??@?CCDBEBB?DCI@B?CABAC@@A?@??AAB@C?D?E?B@CA@B@C??A?@BAA??DC@@CC?BE
&lt;/pre&gt;

&lt;p&gt;That string is suuuuper long. The only way to get it on your clipboard is to &lt;em&gt;triple&lt;/em&gt; click it, highlight the whole thing, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ctrl-c&lt;/code&gt;. You could then paste it into a polyline decoder. I googled my way to this one: 
&lt;a href=&quot;https://www.daftlogic.com/projects-convert-encoded-polyline-to-latitude-longitude-list.htm&quot;&gt;https://www.daftlogic.com/projects-convert-encoded-polyline-to-latitude-longitude-list.htm&lt;/a&gt;, and see all 3321 lat long points. Here’s a snippet of what some of it might look like:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;update, using a different polyline than what I started this whole thing off with - it was maybe giving me issues.&lt;/em&gt;&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;39.72873,-105.00070
39.72877,-105.00071
39.72882,-105.00062
39.72894,-105.00062
39.72898,-105.00060
39.72904,-105.00051
39.72904,-105.00040
39.72908,-105.00035
39.72925,-105.00034
39.72929,-105.00030
39.72930,-105.00024
39.72932,-105.00038
39.72933,-105.00039
39.72951,-105.00032
39.72967,-105.00032
39.72971,-105.00027
39.72979,-105.00020
39.72992,-105.00015
39.72999,-105.00005
39.73016,-105.00005
39.73020,-105.00004
39.73031,-105.00007
39.73039,-105.00006
39.73043,-105.00002
39.73043,-104.99993
39.73040,-104.99989
39.73032,-104.99991
39.73033,-104.99996
39.73024,-105.00000
39.73018,-105.00000
39.73016,-104.99998
39.73023,-104.99993
39.73037,-104.99995
39.73037,-104.99992
39.73036,-104.99997
39.73033,-104.99999
39.73032,-105.00005
39.73030,-104.99999
39.73027,-105.00000
39.73029,-105.00001
39.73028,-105.00000
39.73029,-104.99998
39.73032,-104.99993

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Those lat/long pairs are not super useful to look at, so to make a polyline ‘useful’/viewable, you need a map. (and html and javascript, including one &lt;a href=&quot;https://github.com/jieter/Leaflet.encoded&quot;&gt;very specific JS package&lt;/a&gt;, I suppose, and global supply chains of computing technology and &lt;em&gt;the internet&lt;/em&gt;!)&lt;/p&gt;

&lt;p&gt;One can pop the polyline into &lt;a href=&quot;https://developers.google.com/maps/documentation/routes/polylinedecoder&quot;&gt;Google’s polyline decoding utility&lt;/a&gt; to see it rendered. Here’s what the original polyline I was working with looks like:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/polyline-decoder.jpg&quot; alt=&quot;polyline&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If you plot the polyline above (triple-click, ctrl-c, paste) you might see activity data from Denver, I went on a multi-hour walk with my kid through the local park and botanic gardens. More about those later.&lt;/p&gt;

&lt;p&gt;If you &lt;em&gt;don’t&lt;/em&gt; see that data, maybe there’s some issues with the copying and pasting.&lt;/p&gt;

&lt;p&gt;Now, lets do something interactive, close to what google is doing there under the hood.&lt;/p&gt;

&lt;p&gt;I’ve used Leaflet before, and mapbox, a little, so I’m going to start with those.&lt;/p&gt;

&lt;p&gt;Lets render a bare map, but open it up to about where the polyline will go. I’m sorta writing this blog post top down. Lets add a map, and initialize it.&lt;/p&gt;

&lt;p&gt;Following the &lt;a href=&quot;https://leafletjs.com/examples/quick-start/&quot;&gt;Leaflet quick start&lt;/a&gt; docs, and soon making use of a &lt;a href=&quot;https://github.com/jieter/Leaflet.encoded&quot;&gt;js/leaflet plugin&lt;/a&gt; that lets us decode polylines directly via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;L.Polyline.fromEncoded(polyline)&lt;/code&gt;. I was stressing about how to add JS without something like NPM, but then realized I can source the file directly in the head of the document&lt;/p&gt;

&lt;p&gt;Open up a new file on some directory - maybe &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;leaflet_practice.html&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We sourced there css, then JS, then added a div for a map, did a tiny bit of styling, and minimum JS. Telling the map to open on Denver’s approx lat/long.&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;link&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;rel=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;https://unpkg.com/leaflet@1.9.4/dist/leaflet.css&quot;&lt;/span&gt;
     &lt;span class=&quot;na&quot;&gt;integrity=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=&quot;&lt;/span&gt;
     &lt;span class=&quot;na&quot;&gt;crossorigin=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;&amp;lt;!-- Make sure you put this AFTER Leaflet&apos;s CSS --&amp;gt;&lt;/span&gt;
 &lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;https://unpkg.com/leaflet@1.9.4/dist/leaflet.js&quot;&lt;/span&gt;
     &lt;span class=&quot;na&quot;&gt;integrity=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=&quot;&lt;/span&gt;
     &lt;span class=&quot;na&quot;&gt;crossorigin=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;map&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class=&quot;nt&quot;&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;#map&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;180px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;

&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;L&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;setView&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;39.742043&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;104.991531&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;L&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tileLayer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;https://tile.openstreetmap.org/{z}/{x}/{y}.png&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;maxZoom&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;attribution&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;amp;copy; &amp;lt;a href=&quot;http://www.openstreetmap.org/copyright&quot;&amp;gt;OpenStreetMap&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And here’s what that renders:&lt;/p&gt;

&lt;link rel=&quot;stylesheet&quot; href=&quot;https://unpkg.com/leaflet@1.9.4/dist/leaflet.css&quot; integrity=&quot;sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=&quot; crossorigin=&quot;&quot; /&gt;

&lt;script src=&quot;https://unpkg.com/leaflet@1.9.4/dist/leaflet.js&quot; integrity=&quot;sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=&quot; crossorigin=&quot;&quot;&gt;&lt;/script&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;https://rawgit.com/jieter/Leaflet.encoded/master/Polyline.encoded.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
^------- this line is a critical addition
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;link rel=&quot;stylesheet&quot; href=&quot;https://unpkg.com/leaflet@1.9.4/dist/leaflet.css&quot; /&gt;

&lt;script type=&quot;text/javascript&quot; src=&quot;https://rawgit.com/jieter/Leaflet.encoded/master/Polyline.encoded.js&quot;&gt;&lt;/script&gt;

&lt;div id=&quot;map1&quot;&gt;&lt;/div&gt;

&lt;style&gt;
    #map1 { height: 250px; }

    #map2 { height: 400px; } 
&lt;/style&gt;

&lt;p&gt;There we go! It worked! A basic map. Pinch and zoom and pan. Cool, huh? Lets add the polyline next. We’ll assign to to a variable, and ask Leaflet to decode it and add it to the map.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;edit, that was really hard, what you’re about to see is a much smaller version of what I’d planned to do. It’s just a tiny fraction of the whole polyline, arbitrarily cut off at one end. I’ll explain what I did below.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;bleh, I didn’t even get the polyline directly encoded/decoded, I had to do an interstitial bit where I was working directly with lat/long pairs, as retreived from the decoder. Dang.&lt;/em&gt;&lt;/p&gt;

&lt;div id=&quot;map2&quot;&gt;&lt;/div&gt;

&lt;script&gt;

     var map1 = L.map(&apos;map1&apos;).setView([39.742043, -104.991531], 13);

    L.tileLayer(&apos;https://tile.openstreetmap.org/{z}/{x}/{y}.png&apos;, {
    maxZoom: 19,
    attribution: &apos;&amp;copy; &lt;a href=&quot;http://www.openstreetmap.org/copyright&quot;&gt;OpenStreetMap&lt;/a&gt;&apos;
    }).addTo(map1);

    var map2 = L.map(&apos;map2&apos;).setView([39.736532, -104.977459], 18);

    L.tileLayer(&apos;https://tile.openstreetmap.org/{z}/{x}/{y}.png&apos;, {
    maxZoom: 23,
    attribution: &apos;&amp;copy; &lt;a href=&quot;http://www.openstreetmap.org/copyright&quot;&gt;OpenStreetMap&lt;/a&gt;&apos;
    }).addTo(map2);

var encodedPolyline = &quot;u}pqFttt_S@NFNB?JA@@DIH@@CEEBAPAFBHK@@FEf@??FLEPA\\?LD@CECDI?BBEH?DHLCT@BLBtB?@FADDDMADC@BJEIBAEMA@AC?HKACDDAHQEMA{@?e@BCR@FBJ?DBJAHB`@AF@LAHE~@?FEJLVC\\?DNBA@BFBBAPMJAP@NCBE?CIO@Cn@Fl@Cj@BDEDBFALDN?^?HILCRHNAVD~@?XKz@k@HSBWHKVOD?b@VJBHA?KCQBi@n@Sp@e@`AMHIJDZB^?\\KPKVYLq@f@i@Nm@L}@Cg@Q_AMWDH?CUa@g@YCEBGJQ`@]Eu@AA?HAG?f@CFSZITDHXXJPN`@BBAU}@s@_A][EEBAA?OEA}@JQL@F?EMAKLKBEFPd@Ma@QBA?D@EHKBKJKDILEGHe@@WAAEA@BBCADD@ABCK@UCW@IRO\\GDGLABBF?TGD@TI^GX?@EDBJCNBFCLDHJLMBBBCL@NFDC@MH?JN@X@BD?NIJBh@SZ@HK@BVA@CDALDHHRAHBZBFEBYFO?MBSAECHDPANOIOC?CJIFDFB@DDEEA?DC?B@ALLKADACADC@AC@@GBAA?ECBARDPBKEHDA?IEA@@?C@F@AB?@FCKAF@D?C@@EC@A?BCC?E@P?CCB?GFAGB@CAA?BC?D??D@K?AAB@@AAC@@EDACD?CBBABCA@CADACB@CAC_@@UCKAABGAUAEICAEBa@FU@_@@ED?^BDA@IEQ?k@FCF?DBBGEOCWCAMAG]EAKBADGECECa@Bk@Dc@EaBDQE?CGD_@PIH@LHD?@BIFEEOAf@CDAAI@DBEF@IC?B?CFFDBBFF@LC@ICEQE?B?M@LCAD?EDAC@A@DA@FKACGCFBABCAEIHDB??DCABB@AEGDFEABFAC?CABECJHGBDXXPD`@L@HBDZ@NAJC@O?DOD@CM@BBABNAHEBI?GEKAM?QDDCL?RBJ?HIBKISR@CHBACBECDDG@BB?C@FCGKrC@\\?BCABB@\\?d@@@?C@H@AC?CF?\\GFK?G@EA?CG?gABQFCFCn@Ft@JDT?BFBKNBEGGE?EGAMD@EJQBBFIJGB?@FAFC@B@ABHQ@BMN?H?KCA@@@A@@ABAAHEA?@B@GDCI@?BAEABCA?CB?CBBHGCB?CCBFC?@E?@BC?BCD@CC?BAA@?E@?@AC@AF@??C@G@LEEWFD??FHALD@DGF]CMR@SCAABDADDC@AEED@ADABDCBEA?@?CDAEB?NCCBEABBBDPXJFFDGJ?RGBEB@\\R^LHJJ@d@Kb@E^MD?@@C@@IABDEDBj@?~@GNBJANDr@?TDXNNPPd@Fz@Gz@?f@BZAVBb@Cf@@HELG@?EDB@ADHBrBDz@KpA?~@Kv@a@|@_@Va@`@G?KES[KGKWGEa@CQEBDk@CYBKDc@XSAODUA]DSC[Bk@Ck@BUAUDIAAAUFQIYCIMK]MAODEDAGDBC?CIBUECE@DEACCFD@ACADE@AEFFGMFA?@IAI@AGBMCE@HBBKBG?DCDKLCG@@IBA@MZWA@?CGGCAAGKUAK@MCKIGM_@IA@KDEC?CHAAAD@BB?CA?B@CHJADBBCCC@CNGFBHJJMCC@DT?F?AF@FH?HGXBTFNKPFAAAG@CD?E@DH@@EAIDD?ACCFDDLGB?FELAAC?CMA?BJBMEKA?@A?DJHE?CCCFCAJED@ACA@@EHXFC?EEACKFQ?EEAM@AFC@L?LUHXD?ABCCCFAC@B@GKG?KOUAKKIq@RCD@DHB?@CBVUPo@D?A?BDNQCS@GDQHMCHDIJq@HMBMDI@KC??DBCH?EO?CBACKL_@HI?KCXICJMFS?GGCID@PPQA@GEE?HDHKHC^DBABGLENA@CFe@CMCk@CACD@BCAEIBMB@BGHCB@EM?KBI\\CNBPYEGGB?MCCCLG?@CCHG@EE@CFA?DSFAJBEEDBXCF?V??@E@MFCOi@?KDCB@?FIB?BB`@CN?ADDHY@a@AAADEBAD@HFEC?@CEA@EB@AG@BPEJ@CGOGQ\\AIDCA@EYBMFKH?E^BXAHAAGQFB@ACC?HHIDKC?@BDGB?@FGDE?CKCDAG?FHUYEIDBRHBDF?C?DAGBO?KD[KUEBIABDE@WAIBF?M?ADDv@D@FE?FHGJBBH?RDD@MGOGG?IB@C@@ABF@LHLJBFABKCIBJE@@BG@IJO@?BB?CDB\\DVCDCME?@L@FAB?IFL@J?NEL@X?CCPCAADKAEBWOIBO?a@OG?OQQGG@ML@LEJCZ@@AD@AGJI`@EFCABA@BCH?CMJOBENIp@CDAHEDAAIDMH@@I@?B@AJF@PEFQDC?@@D?WHYRo@R?DQDKRQJG?UFIAm@HOEACDBABE??FIE@AJABKOJGNKACFFdBADG@@BEAZAp@KdCCRG@?AB@CDHLA^Dv@Gd@BNEDUJUBQDID?Ae@C?IBECCC@FGPDTKBIKVy@?UFQF]GMKK[QMAOFYVE?OHO@ULSRGBSb@^r@RXJDXD^ALBhAEDWCI?SC?EBCJ?JDEE@B@BCACC??BDEB@C@FC@CM@GFAABBNKFK@@G?KBIL@@XMDIGH@@BA?OMGMFGFYh@CNAAAEADIDIGSA[HUCGEQ_@_@Y_@q@c@NEDUD]LI?MC}@@e@GUAGDEXUXg@Xa@NGFc@AOBY?k@Ig@Fq@A]DCDc@AY@GGQD_@@GLC@eA@OCqCG}@HO?ICc@DYGMBEEM?MLSE_@?SDm@EO?IDGEG?KFFl@?n@K@QC]@OAKFAFFh@I\\?HDBTCBCEAE@@F@B?Da@PJEKAACDAVWd@[??ALBFNIWHDA@FFA?GGABICC?@s@FSAj@@J@BFCEQCs@DLGH?GBF?C@F?EAB?C?BACAC@?CCBBDHBFAOABA?ACASDH?BBFA@CBBH?KGM@HAMABDF@ICB?EEDDC@?AFAGAB?AAC?D?AB@AO@JDcCP|BWF?DFCGAB@EDLEKFD?@IGF?ED?CAAFHAEA@ACCFECC@?CIDBEGGABBBJAH@@CSDREBMGJB@CAB@AAABBBCGABB??BCBUJFKB@C?CCTIYDEFFEZAICWJAKD@HEF@AB?EDDAHHKCGOJ?BHCENNM@EA?AAD?C@?C?D?E?B@AA??A?DH??BKC@C@DCE@D?EBBCCM@F?AAFBAA@?C@@BA?BCA?@??CA@@AA?@@?A?@@AA?@?CA@BGEI@ABR?KHB?ACF?CIFWIFADB?JEKHDDECDE@HIDFA?MABD?GNEDNQCC@@GDE?BAFA?BD?MBCBBAAAFKA@@FAA@C@BCBI@DEBAABB?@AAE?BC?@EB@GADD?@AA@BGSFRAA@A?H@AAECJEFFE@M?H@AAI@BDAG?@@AC?@CABB?A@?A@@EC??CC?F?CJB?CACB@?E?AGFECBEEHB@FABACJ@BCC@KKC@BGF@A@ACDFAF@DAI?@E@DGDA?@CBCAADBG?BAAAFEAF@AAEBB@?EC@P@BBI@EKBKC?AHBFCK?DBBHAGAADO@H??BD?C?@ADBCGD@YJXAIKBA?EGFBG?B@CA@AC?BC@CCDC?ADAEJB@ACC@B@CBN?EC?BGD?FBEI@B?@IM@G?NIH?DDIIHD?EAD?ICBIAHACDBBA?H@EBLAO?BAG?BCC@B@GED?ABFB?D@CEADEM?AABCDDKAL?CBBA@FEC?CI?B?A??EB@EALBABBC?BE@DAA?@@A@BAD?E@D?WDF?FE?BEAFBCABAA@ECDBCEEDB?ACD?ABDAIBD@AABAC?BAI@F?AGC??@DAC@DDA@BCCBE?AIH@@J@AADB@?KE?DFC?EEKCD?ADD@AA@AD?E@BAGCL?G?A@@ABBE?@EIAL@AB@BAG@@CAF@O?@@C?@@DA?CC@B?C?@A@?CB?EB?CAD?SAh@FK?MCMBF@?@B??EBCD?OABCNBKB?BH??CL@Q?@E@FC@HBI?AAE?HAAAGBFB?DB@GCBCEAH@G?B@CBDCA?BAAA??G@FA?CC@BAGAIBT@QBl@GKAO@B?A?F@UBD@BAI?FMCNBOEHDEKDJIMDFBWDTBDC@GAAB?ECF@EF@GCJBMCF@EAHACF@HCG?F@K?@DE?BMFDCAACUBRACBN@QDDACGBAI?H?C@B@?I[JH?A@NCKCS?P@VE@@@J[MJ?HFEDYAN?@E@@FCL?FCK?QBJ@O@b@@MIM@LDICJE@KA@@@AFG@DFE@@@E?AE@?CCBAI?FJF?E??ICEF?C??HCABC@F@CC??CE@FAAE?D@AC?@@F?G@@DC?AE@@?@@AGAH@A??C@?A?CBFEIB@?CED@AECHB?C?FCCAB?AB?CA?@@ADCARAG?BBIAD@A?DEIFFCG@BEB?E@?AEHDE?ECB?DBAG?DAA@B@@AEA?C@BEDD?@E?BBAAC?BC?AED@GDDE?BBC?BGCLGM@A?FACHEEBAE?D@A@D?A@?CD?M@F?A@HBCA@GCB?CC@D@C?@@A?@B?ADCICCDD@@CBHOAJAAAB?@EG@FNAA?EEAA@BCC?FACEB@E@BAAE?FCBJEC@B@SBLD?CEADDDCI?BA?CCA@??B@CB??BCB@AAAB@CAB?C@@CB@C@B?I?@?@BGAJIE?DEEAHFE@A?BCE@J?CAD?A?@AG?@@ECHDOB?BHDCA?G@?A@FAG@?@D@KJDEACBABC@@C?@BEAD@?@CABB@CK?HCKDB?A@BEB??@CABAAAEDHAGADA?CC@@@C?EB@?AABB@C@@C?BAAAJ@C?EADAEAA?F@EAD?IDDAEAD@A?@?@AE@BA?@C@B@ABEABCCADACBG?J?B?CA@?C?ACD@BAC@@ACA@BC?ECB@C@D@C@DAEAF?@@A@EA@CB@E?FAIDECE?ABCA@ANDBAEAD@CC@CC?D?E?EDNBC@@B?EEA?@B?G?DAADAA@CHA@@E?ABCABAA?DB?@CC@CBBE@D@CADAEA@EA?@@A@@HI@DIA??ED??BC@@CCABEACGDC?@A@BH@?DC@JBECDCGCBCG@IA@?C@@@BAACD?BCEABABBAHLB?GC@?FQCFA?ARFEBD?OAFACDCA@CG@F@C?CE@A?BD?C@AAH?@CK@D@FAACBA?CEBB@@AQADACDG?L?ACA?DBCFDBABJ?KEEEI@HADB@AACG@B?@@A?BAAANCB@E?AFE@B@E?JCCB@@CA@C@?A?BAAC@?I@?DI@BB@CCA@EEE@@?F@A?B@A?BDA?CA?@AK@B?DIE@BFB?EBBAC?D?BA?ACAB?C@D?@D?ICACBHDGDEAEGG?T@GI@?C@CAABF@DCE?D?A?@@C?D@BA@?A@C?@BE?BBA??@B@ACB@EA@AD@KAPBKE@??@C?DACCB@C??@DBEADDEA@BA@B?G?CCD?C@@CBAGCBAI@?BF@AC@@A@@AEAAEC?DBA??AA@D?BKOAPBM@LBC?D?K@L@C?@B@?CCJ?ICE@FAGAJ@O?@AC?BA@BF@M?AGCCD?OCA@DBNDEAAJ@A@BAEDBIGDA@@E?BDCEAD?AD?CA@ADFAGA?B@QMLFBBA@?AEBACHAG@@??B@C@@C@BB@CEB@EC?DABFEC?@@ACE?BACIAB??BAADCAC?BC@B@?@E@F?@@CEDAA@?CIAJ@A@E@J?K?D?C?PFMAFDJ@ECFA?AQMOH@?AE@BDAA?B@FCADB@C@A@?CBC@@GA@AABBCDDC@B?ACQ?H@?BC@E?PEAABAC?ABCCBECDHFMBBEK@C@@BPGD@Q@AF@@BCLSDAA?@@KBB?CD@AGBJAQ@DCRAI@CE@@GBD??EDAJDCFYCGCCBLCCC@BHAC@B?A@DECBB@CA@AAB@CA@B?AAABBA?@AA?@W@NCC?@?EFa@DFIAA`@??GPCEBBDCACBBAA?@?ACABB@?GCDB@C?@AF?M@BA@D?CC@HCCB@?AC@C?@BAI@DCMCE@BLB??FC@BCCQPGJ?EFMD@HFGCAF@MD?ABCH?S?@DDDBAG@@G@??EC@CAB??BFI@?EDE@@FFS@BCDG?CDCCJD?DCA@CCGBCDBCA?B@ELDCEHBGA?@D?EAEDBCAAC@?BEBMEREB@KDBCF?C@DCC?AE@DDGG?KFGALCB@AB?AB?G?F@ZGKAYHVGB?ODEAAJD@?FB@BCACEC@CABE?@CC?IMFVL??IE??@AA?@?EC?B??D?E?@@A?BCC@FBDAE?DB?GK@??@?AAA?B?C@?@NDCCFBEFEEGM??BD@A@E?FCMCE?J?@BBCI@HCD@I?ABD@?C?BCAF@M?ABBBFAAA@BBAC@?EBBCAIBBKDACA?@E?BBAEEDICNBO??CD?BBGBB@F@CCBCG?B?ADFFBCC@BI@@CCDDI@@ACAAGQFJADBDGB@ECC@PFGDIATCE@ICBCD@AAE?C@@@C?AAHAIILAJDQ@A?FBABQ@?DC?LA@KC@B?@?ACBAE?ABB@KBB?CAPAE?@AGAH@C@?DB?ACFAAEK?J@M?GBD?ADBAABHACEBAFDK@D@O@EC@AECHCJ@C?D?ACDAGFDB?ACCGB@@M?b@?I@DFD@?ED@CCH@Q@EA?A@@C@QESH?IJ?VEDIDCYBTGUJLADDCGBFA??DAEBECGCBHDJ@I?Gn@?YH?CEEBEA?ADAEFE@AAFEB?BFCFGHECEO@GNGCEGBC?FKJD@HDBV@HIKAOFIC?BHBBAI?DCACKGE@?@FBEFAKKMHAK?R?SCNB?BHNADB?BFFBD?c@GHEBEA@QAMBF?\\JAEG@@CH?BEMAHIEBCK?BD@GTBDGGJGGBBC@??EFHYAHAA@BBPD?EKE?@ACB@CBBCA?@??CAB@@@AEA@?AB?CBBAC@DEABBC@BAA??GDDAB@GC??@?CCDBEBB?DCI@B?CABAC@@A?@??AAB@C?D?E?B@CA@B@C??A?@BAA??DC@@CC?BE&quot;;

console.log(&quot;🙄&quot;)
var decodedPolyline = L.Polyline.fromEncoded(encodedPolyline)

line = L.polyline(decodedPolyline._latlngs , {color: &apos;red&apos;, weight: 2, opacity: .7, linejoin: &apos;round&apos;})
line.addTo(map2)

console.log(&apos;omg&apos;)

map2.setView(decodedPolyline._latlngs[0]);

 
&lt;/script&gt;

&lt;p&gt;Here’s what I did:&lt;/p&gt;

&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;L&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;map2&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;setView&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;39.736532&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;104.977459&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;L&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;tileLayer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;https://tile.openstreetmap.org/{z}/{x}/{y}.png&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;maxZoom&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;attribution&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;amp;copy; &amp;lt;a href=&quot;http://www.openstreetmap.org/copyright&quot;&amp;gt;OpenStreetMap&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;map2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;encodedPolyline&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;stringify&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;u}pqFttt_S@NFNB?JA@@DIH@@CEEBAPAFBHK@@FEf@??FLEPA&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;?LD@CECDI?BBEH?DHLCT@BLBtB?@FADDDMADC@BJEIBAEMA@AC?HKACDDAHQEMA{@?e@BCR@FBJ?DBJAHB`@AF@LAHE~@?FEJLVC&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;?DNBA@BFBBAPMJAP@NCBE?CIO@Cn@Fl@Cj@BDEDBFALDN?^?HILCRHNAVD~@?XKz@k@HSBWHKVOD?b@VJBHA?KCQBi@n@Sp@e@`AMHIJDZB^?&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;KPKVYLq@f@i@Nm@L}@Cg@Q_AMWDH?CUa@g@YCEBGJQ`@]Eu@AA?HAG?f@CFSZITDHXXJPN`@BBAU}@s@_A][EEBAA?OEA}@JQL@F?EMAKLKBEFPd@Ma@QBA?D@EHKBKJKDILEGHe@@WAAEA@BBCADD@ABCK@UCW@IRO&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;GDGLABBF?TGD@TI^GX?@EDBJCNBFCLDHJLMBBBCL@NFDC@MH?JN@X@BD?NIJBh@SZ@HK@BVA@CDALDHHRAHBZBFEBYFO?MBSAECHDPANOIOC?CJIFDFB@DDEEA?DC?B@ALLKADACADC@AC@@GBAA?ECBARDPBKEHDA?IEA@@?C@F@AB?@FCKAF@D?C@@EC@A?BCC?E@P?CCB?GFAGB@CAA?BC?D??D@K?AAB@@AAC@@EDACD?CBBABCA@CADACB@CAC_@@UCKAABGAUAEICAEBa@FU@_@@ED?^BDA@IEQ?k@FCF?DBBGEOCWCAMAG]EAKBADGECECa@Bk@Dc@EaBDQE?CGD_@PIH@LHD?@BIFEEOAf@CDAAI@DBEF@IC?B?CFFDBBFF@LC@ICEQE?B?M@LCAD?EDAC@A@DA@FKACGCFBABCAEIHDB??DCABB@AEGDFEABFAC?CABECJHGBDXXPD`@L@HBDZ@NAJC@O?DOD@CM@BBABNAHEBI?GEKAM?QDDCL?RBJ?HIBKISR@CHBACBECDDG@BB?C@FCGKrC@&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;?BCABB@&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;?d@@@?C@H@AC?CF?&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;GFK?G@EA?CG?gABQFCFCn@Ft@JDT?BFBKNBEGGE?EGAMD@EJQBBFIJGB?@FAFC@B@ABHQ@BMN?H?KCA@@@A@@ABAAHEA?@B@GDCI@?BAEABCA?CB?CBBHGCB?CCBFC?@E?@BC?BCD@CC?BAA@?E@?@AC@AF@??C@G@LEEWFD??FHALD@DGF]CMR@SCAABDADDC@AEED@ADABDCBEA?@?CDAEB?NCCBEABBBDPXJFFDGJ?RGBEB@&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;R^LHJJ@d@Kb@E^MD?@@C@@IABDEDBj@?~@GNBJANDr@?TDXNNPPd@Fz@Gz@?f@BZAVBb@Cf@@HELG@?EDB@ADHBrBDz@KpA?~@Kv@a@|@_@Va@`@G?KES[KGKWGEa@CQEBDk@CYBKDc@XSAODUA]DSC[Bk@Ck@BUAUDIAAAUFQIYCIMK]MAODEDAGDBC?CIBUECE@DEACCFD@ACADE@AEFFGMFA?@IAI@AGBMCE@HBBKBG?DCDKLCG@@IBA@MZWA@?CGGCAAGKUAK@MCKIGM_@IA@KDEC?CHAAAD@BB?CA?B@CHJADBBCCC@CNGFBHJJMCC@DT?F?AF@FH?HGXBTFNKPFAAAG@CD?E@DH@@EAIDD?ACCFDDLGB?FELAAC?CMA?BJBMEKA?@A?DJHE?CCCFCAJED@ACA@@EHXFC?EEACKFQ?EEAM@AFC@L?LUHXD?ABCCCFAC@B@GKG?KOUAKKIq@RCD@DHB?@CBVUPo@D?A?BDNQCS@GDQHMCHDIJq@HMBMDI@KC??DBCH?EO?CBACKL_@HI?KCXICJMFS?GGCID@PPQA@GEE?HDHKHC^DBABGLENA@CFe@CMCk@CACD@BCAEIBMB@BGHCB@EM?KBI&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;CNBPYEGGB?MCCCLG?@CCHG@EE@CFA?DSFAJBEEDBXCF?V??@E@MFCOi@?KDCB@?FIB?BB`@CN?ADDHY@a@AAADEBAD@HFEC?@CEA@EB@AG@BPEJ@CGOGQ&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;AIDCA@EYBMFKH?E^BXAHAAGQFB@ACC?HHIDKC?@BDGB?@FGDE?CKCDAG?FHUYEIDBRHBDF?C?DAGBO?KD[KUEBIABDE@WAIBF?M?ADDv@D@FE?FHGJBBH?RDD@MGOGG?IB@C@@ABF@LHLJBFABKCIBJE@@BG@IJO@?BB?CDB&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;DVCDCME?@L@FAB?IFL@J?NEL@X?CCPCAADKAEBWOIBO?a@OG?OQQGG@ML@LEJCZ@@AD@AGJI`@EFCABA@BCH?CMJOBENIp@CDAHEDAAIDMH@@I@?B@AJF@PEFQDC?@@D?WHYRo@R?DQDKRQJG?UFIAm@HOEACDBABE??FIE@AJABKOJGNKACFFdBADG@@BEAZAp@KdCCRG@?AB@CDHLA^Dv@Gd@BNEDUJUBQDID?Ae@C?IBECCC@FGPDTKBIKVy@?UFQF]GMKK[QMAOFYVE?OHO@ULSRGBSb@^r@RXJDXD^ALBhAEDWCI?SC?EBCJ?JDEE@B@BCACC??BDEB@C@FC@CM@GFAABBNKFK@@G?KBIL@@XMDIGH@@BA?OMGMFGFYh@CNAAAEADIDIGSA[HUCGEQ_@_@Y_@q@c@NEDUD]LI?MC}@@e@GUAGDEXUXg@Xa@NGFc@AOBY?k@Ig@Fq@A]DCDc@AY@GGQD_@@GLC@eA@OCqCG}@HO?ICc@DYGMBEEM?MLSE_@?SDm@EO?IDGEG?KFFl@?n@K@QC]@OAKFAFFh@I&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;?HDBTCBCEAE@@F@B?Da@PJEKAACDAVWd@[??ALBFNIWHDA@FFA?GGABICC?@s@FSAj@@J@BFCEQCs@DLGH?GBF?C@F?EAB?C?BACAC@?CCBBDHBFAOABA?ACASDH?BBFA@CBBH?KGM@HAMABDF@ICB?EEDDC@?AFAGAB?AAC?D?AB@AO@JDcCP|BWF?DFCGAB@EDLEKFD?@IGF?ED?CAAFHAEA@ACCFECC@?CIDBEGGABBBJAH@@CSDREBMGJB@CAB@AAABBBCGABB??BCBUJFKB@C?CCTIYDEFFEZAICWJAKD@HEF@AB?EDDAHHKCGOJ?BHCENNM@EA?AAD?C@?C?D?E?B@AA??A?DH??BKC@C@DCE@D?EBBCCM@F?AAFBAA@?C@@BA?BCA?@??CA@@AA?@@?A?@@AA?@?CA@BGEI@ABR?KHB?ACF?CIFWIFADB?JEKHDDECDE@HIDFA?MABD?GNEDNQCC@@GDE?BAFA?BD?MBCBBAAAFKA@@FAA@C@BCBI@DEBAABB?@AAE?BC?@EB@GADD?@AA@BGSFRAA@A?H@AAECJEFFE@M?H@AAI@BDAG?@@AC?@CABB?A@?A@@EC??CC?F?CJB?CACB@?E?AGFECBEEHB@FABACJ@BCC@KKC@BGF@A@ACDFAF@DAI?@E@DGDA?@CBCAADBG?BAAAFEAF@AAEBB@?EC@P@BBI@EKBKC?AHBFCK?DBBHAGAADO@H??BD?C?@ADBCGD@YJXAIKBA?EGFBG?B@CA@AC?BC@CCDC?ADAEJB@ACC@B@CBN?EC?BGD?FBEI@B?@IM@G?NIH?DDIIHD?EAD?ICBIAHACDBBA?H@EBLAO?BAG?BCC@B@GED?ABFB?D@CEADEM?AABCDDKAL?CBBA@FEC?CI?B?A??EB@EALBABBC?BE@DAA?@@A@BAD?E@D?WDF?FE?BEAFBCABAA@ECDBCEEDB?ACD?ABDAIBD@AABAC?BAI@F?AGC??@DAC@DDA@BCCBE?AIH@@J@AADB@?KE?DFC?EEKCD?ADD@AA@AD?E@BAGCL?G?A@@ABBE?@EIAL@AB@BAG@@CAF@O?@@C?@@DA?CC@B?C?@A@?CB?EB?CAD?SAh@FK?MCMBF@?@B??EBCD?OABCNBKB?BH??CL@Q?@E@FC@HBI?AAE?HAAAGBFB?DB@GCBCEAH@G?B@CBDCA?BAAA??G@FA?CC@BAGAIBT@QBl@GKAO@B?A?F@UBD@BAI?FMCNBOEHDEKDJIMDFBWDTBDC@GAAB?ECF@EF@GCJBMCF@EAHACF@HCG?F@K?@DE?BMFDCAACUBRACBN@QDDACGBAI?H?C@B@?I[JH?A@NCKCS?P@VE@@@J[MJ?HFEDYAN?@E@@FCL?FCK?QBJ@O@b@@MIM@LDICJE@KA@@@AFG@DFE@@@E?AE@?CCBAI?FJF?E??ICEF?C??HCABC@F@CC??CE@FAAE?D@AC?@@F?G@@DC?AE@@?@@AGAH@A??C@?A?CBFEIB@?CED@AECHB?C?FCCAB?AB?CA?@@ADCARAG?BBIAD@A?DEIFFCG@BEB?E@?AEHDE?ECB?DBAG?DAA@B@@AEA?C@BEDD?@E?BBAAC?BC?AED@GDDE?BBC?BGCLGM@A?FACHEEBAE?D@A@D?A@?CD?M@F?A@HBCA@GCB?CC@D@C?@@A?@B?ADCICCDD@@CBHOAJAAAB?@EG@FNAA?EEAA@BCC?FACEB@E@BAAE?FCBJEC@B@SBLD?CEADDDCI?BA?CCA@??B@CB??BCB@AAAB@CAB?C@@CB@C@B?I?@?@BGAJIE?DEEAHFE@A?BCE@J?CAD?A?@AG?@@ECHDOB?BHDCA?G@?A@FAG@?@D@KJDEACBABC@@C?@BEAD@?@CABB@CK?HCKDB?A@BEB??@CABAAAEDHAGADA?CC@@@C?EB@?AABB@C@@C?BAAAJ@C?EADAEAA?F@EAD?IDDAEAD@A?@?@AE@BA?@C@B@ABEABCCADACBG?J?B?CA@?C?ACD@BAC@@ACA@BC?ECB@C@D@C@DAEAF?@@A@EA@CB@E?FAIDECE?ABCA@ANDBAEAD@CC@CC?D?E?EDNBC@@B?EEA?@B?G?DAADAA@CHA@@E?ABCABAA?DB?@CC@CBBE@D@CADAEA@EA?@@A@@HI@DIA??ED??BC@@CCABEACGDC?@A@BH@?DC@JBECDCGCBCG@IA@?C@@@BAACD?BCEABABBAHLB?GC@?FQCFA?ARFEBD?OAFACDCA@CG@F@C?CE@A?BD?C@AAH?@CK@D@FAACBA?CEBB@@AQADACDG?L?ACA?DBCFDBABJ?KEEEI@HADB@AACG@B?@@A?BAAANCB@E?AFE@B@E?JCCB@@CA@C@?A?BAAC@?I@?DI@BB@CCA@EEE@@?F@A?B@A?BDA?CA?@AK@B?DIE@BFB?EBBAC?D?BA?ACAB?C@D?@D?ICACBHDGDEAEGG?T@GI@?C@CAABF@DCE?D?A?@@C?D@BA@?A@C?@BE?BBA??@B@ACB@EA@AD@KAPBKE@??@C?DACCB@C??@DBEADDEA@BA@B?G?CCD?C@@CBAGCBAI@?BF@AC@@A@@AEAAEC?DBA??AA@D?BKOAPBM@LBC?D?K@L@C?@B@?CCJ?ICE@FAGAJ@O?@AC?BA@BF@M?AGCCD?OCA@DBNDEAAJ@A@BAEDBIGDA@@E?BDCEAD?AD?CA@ADFAGA?B@QMLFBBA@?AEBACHAG@@??B@C@@C@BB@CEB@EC?DABFEC?@@ACE?BACIAB??BAADCAC?BC@B@?@E@F?@@CEDAA@?CIAJ@A@E@J?K?D?C?PFMAFDJ@ECFA?AQMOH@?AE@BDAA?B@FCADB@C@A@?CBC@@GA@AABBCDDC@B?ACQ?H@?BC@E?PEAABAC?ABCCBECDHFMBBEK@C@@BPGD@Q@AF@@BCLSDAA?@@KBB?CD@AGBJAQ@DCRAI@CE@@GBD??EDAJDCFYCGCCBLCCC@BHAC@B?A@DECBB@CA@AAB@CA@B?AAABBA?@AA?@W@NCC?@?EFa@DFIAA`@??GPCEBBDCACBBAA?@?ACABB@?GCDB@C?@AF?M@BA@D?CC@HCCB@?AC@C?@BAI@DCMCE@BLB??FC@BCCQPGJ?EFMD@HFGCAF@MD?ABCH?S?@DDDBAG@@G@??EC@CAB??BFI@?EDE@@FFS@BCDG?CDCCJD?DCA@CCGBCDBCA?B@ELDCEHBGA?@D?EAEDBCAAC@?BEBMEREB@KDBCF?C@DCC?AE@DDGG?KFGALCB@AB?AB?G?F@ZGKAYHVGB?ODEAAJD@?FB@BCACEC@CABE?@CC?IMFVL??IE??@AA?@?EC?B??D?E?@@A?BCC@FBDAE?DB?GK@??@?AAA?B?C@?@NDCCFBEFEEGM??BD@A@E?FCMCE?J?@BBCI@HCD@I?ABD@?C?BCAF@M?ABBBFAAA@BBAC@?EBBCAIBBKDACA?@E?BBAEEDICNBO??CD?BBGBB@F@CCBCG?B?ADFFBCC@BI@@CCDDI@@ACAAGQFJADBDGB@ECC@PFGDIATCE@ICBCD@AAE?C@@@C?AAHAIILAJDQ@A?FBABQ@?DC?LA@KC@B?@?ACBAE?ABB@KBB?CAPAE?@AGAH@C@?DB?ACFAAEK?J@M?GBD?ADBAABHACEBAFDK@D@O@EC@AECHCJ@C?D?ACDAGFDB?ACCGB@@M?b@?I@DFD@?ED@CCH@Q@EA?A@@C@QESH?IJ?VEDIDCYBTGUJLADDCGBFA??DAEBECGCBHDJ@I?Gn@?YH?CEEBEA?ADAEFE@AAFEB?BFCFGHECEO@GNGCEGBC?FKJD@HDBV@HIKAOFIC?BHBBAI?DCACKGE@?@FBEFAKKMHAK?R?SCNB?BHNADB?BFFBD?c@GHEBEA@QAMBF?&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;JAEG@@CH?BEMAHIEBCK?BD@GTBDGGJGGBBC@??EFHYAHAA@BBPD?EKE?@ACB@CBBCA?@??CAB@@@AEA@?AB?CBBAC@DEABBC@BAA??GDDAB@GC??@?CCDBEBB?DCI@B?CABAC@@A?@??AAB@C?D?E?B@CA@B@C??A?@BAA??DC@@CC?BE&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;


&lt;span class=&quot;nx&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;🙄&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;decodedPolyline&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;L&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Polyline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fromEncoded&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;encodedPolyline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;L&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;polyline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;decodedPolyline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;_latlngs&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;red&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;weight&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;linejoin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;map2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;omg&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;map2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;setView&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;decodedPolyline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;_latlngs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;~I’m still doing something funky to escape the escape characters in the polyline.~ Able to get around that with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;JSON.stringify()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you’d like to see the raw html that is being used to generate this exact page, it’s available in an &lt;em&gt;extremely&lt;/em&gt; hacky way &lt;a href=&quot;https://github.com/josh-works/josh-works.github.io/blob/main/_posts/2024-09-10-polyline-practice-01.md?plain=1#L179&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next time, might animate a marker moving along the line, something like &lt;a href=&quot;https://github.com/openplans/Leaflet.AnimatedMarker?tab=readme-ov-file&quot;&gt;https://github.com/openplans/Leaflet.AnimatedMarker?tab=readme-ov-file&lt;/a&gt;, or maybe make the line blink, or see if we can give a sense of which direction the movement was happening in.&lt;/p&gt;

&lt;h3 id=&quot;useful-additional-resources&quot;&gt;Useful additional resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Get the ‘decode raw polyline’ function in your page &lt;a href=&quot;https://github.com/jieter/Leaflet.encoded&quot;&gt;with this package&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://markhneedham.com/blog/2017/04/29/leaflet-strava-polylines-osm/&quot;&gt;Leaflet: Mapping Strava runs/polylines on Open Street Map ()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Paths In Which I Am Interested</title>
   <link href="https://josh.works/interested-paths"/>
   <updated>2024-06-25T13:00:00+00:00</updated>
   <id>https://josh.works/interested-paths</id>
   <content type="html">&lt;p&gt;&lt;em&gt;this is still in draft status&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;this page serves as a placeholder for various paths I’m interested in.&lt;/p&gt;

&lt;p&gt;I hope to bring attention to “linear parks”, or a park that functions more in size and shape to a street, crossing blocks of distance, but maintaining park vibes throughout.&lt;/p&gt;

&lt;h2 id=&quot;path-segment-one-voodoo--cheesman-down-franklin&quot;&gt;Path Segment One: Voodoo &amp;lt;&amp;gt; Cheesman, down Franklin&lt;/h2&gt;

&lt;p&gt;Pardon my language. “segments”? “paths”? I’m referring explicitly to places that connect places, so it’s sorta hard to think about the ‘place’ directly, especially as a path. &lt;sup id=&quot;fnref:paths-are-places&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:paths-are-places&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This is a simple extension of the existing closed street exiting Cheesman.&lt;/p&gt;

&lt;p&gt;Here’s what it looks like, looking into Cheesman, at the current barricades.&lt;/p&gt;

&lt;p&gt;I basically want to move the barriers “towards” the camera, there’s a few (not trivial, but very solvable) obvious issues that might need addressing, but I think this as a first move makes sense.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/franklin_entrance.jpg&quot; alt=&quot;franklin entrance&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If it could be moved a few meters, and backfilled with something everyone agrees is nice, I say keep moving it, 10 or 20 meters at a time, down franklin:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/continue_the_park.jpg&quot; alt=&quot;longer goal&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;components&quot;&gt;Components&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Moving barricades down an existing closed road&lt;/li&gt;
  &lt;li&gt;making a little traffic path&lt;/li&gt;
  &lt;li&gt;displaceable and non-displacable barriers, like art, play structures, benches&lt;/li&gt;
  &lt;li&gt;much more&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;to-make-the-spreadsheet-people-happy&quot;&gt;To make the spreadsheet people happy&lt;/h3&gt;

&lt;p&gt;Heavy foot traffic corresponds with great business, all the time. More and more of Voodoo’s business would come from people who walk to it, from the park, or walk to it, on their way to the park.&lt;/p&gt;

&lt;p&gt;I can do some magic number work + video footage of foot traffic, to show the value of someone walking/biking vs how much space someone takes when they drive, and fill a whole parking space for 30 minutes or an hour.&lt;/p&gt;

&lt;h2 id=&quot;segment-2-ideal-market--cheesman-park-down-11th&quot;&gt;Segment 2: Ideal Market &amp;lt;&amp;gt; Cheesman Park, down 11th&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;footage inbound, I’ve flown my drone around the area a bunch and am going to put a little video together, do a voice overlay, and add it to this page.&lt;/em&gt;&lt;/p&gt;

&lt;h1 id=&quot;thoughts-about-these-two-segments&quot;&gt;Thoughts about these two segments&lt;/h1&gt;

&lt;p&gt;These paths, Voodoo to Cheesman, and Cheesman to Ideal, are paths that I use, personally, all the time, some days more than once a day. Take a look at my activity/mobility data, noting where these two paths overlay that data:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/just_two_segments.jpg&quot; alt=&quot;two_paths&quot; /&gt;&lt;/p&gt;

&lt;p&gt;My actual map with the data overlay is devoid of labels, but if you can find Cheesman Park, you can find the segments I’m talking about. You can see in the data where I’ve walked all around the Ideal Market building, and the Voodoo Donuts building.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=16&amp;amp;latlng=39.735985,%20-104.971018&quot;&gt;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=16&amp;amp;latlng=39.735985, -104.971018&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is, admittedly, an unusual project, and some might call it audacious, but I say it’s audacious only in a very narrow sense.&lt;/p&gt;

&lt;p&gt;Also, a huge thing I want to practice is getting buy-in and tacit or formal support from the exact right people, in the exact right way, to nudge through real improvements. If you’re even reading these words, that means so much has already gone right. :)&lt;/p&gt;

&lt;p&gt;If we somehow get these two segments ‘fixed’, we’ve done distinctive, uncommon things, I say it’s comparable to even those who build buildings, and we’ll have done it accidentally, as a by-product of doing other, more interesting things.&lt;/p&gt;

&lt;h2 id=&quot;interested-entities&quot;&gt;Interested entities&lt;/h2&gt;

&lt;p&gt;my guesstimates of people associated with entities that could ostensibly have aligned interests on this. This is who I am thinking about, none of this reflects anything others have said.&lt;/p&gt;

&lt;p&gt;I come most recently from the software/computing/networking industry, some of my default ways of sharing information and building consensus might strike others as distinctive. :)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Pando x2&lt;/li&gt;
  &lt;li&gt;Voodoo x1&lt;/li&gt;
  &lt;li&gt;Avanti x4&lt;/li&gt;
  &lt;li&gt;Ideal/Wholefoods x2&lt;/li&gt;
  &lt;li&gt;Cornerstone x &amp;gt;15&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;Bleh, more to talk about. I might direct potential traffic to this page if I expand here on certain best practices, and  why there’s certain barriers to certain kinds of fixes.&lt;/p&gt;

&lt;p&gt;I’ve &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/&quot;&gt;spoken elsewhere&lt;/a&gt; about some of the root causes of all this, don’t really want to pollute this page with more of that energy.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:paths-are-places&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;paths are places, and places are often used as a path. For example, Cheesman Park is not just a place to go, but for many, many people, passing through/along Cheesman Park is a beautiful portion of their trip, as they take a path from one place to another. I want to draw attention to the way that I think about these two ‘segments’. I think about the roads as connections, and how well they serve that function, and could they be more beautiful and peaceful for all people, kids, adults, old people. And if a one block could be done, why not two? etc. &lt;a href=&quot;#fnref:paths-are-places&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Recommended Reading</title>
   <link href="https://josh.works/recommended-reading"/>
   <updated>2024-06-04T13:00:00+00:00</updated>
   <id>https://josh.works/recommended-reading</id>
   <content type="html">&lt;p&gt;I’ve read many books over the years. Thousands. Here’s a few that I find myself referencing/recommending.&lt;/p&gt;

&lt;p&gt;Periodically, I refresh this list. It’s changed over the years. I am always reading interesting-to-me books (I count listening to the audiobook as a reading the book, and will mark it as read in &lt;a href=&quot;https://www.goodreads.com/user/show/27372191-josh-thompson&quot;&gt;my goodreads account&lt;/a&gt;) &lt;sup id=&quot;fnref:library&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:library&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Some standout favorites, in lists of various orderings:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6477876-the-art-of-not-being-governed?ref=nav_sb_ss_4_13&quot;&gt;The Art of Not Being Governed (james c scott)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/3101191-hooded-empire&quot;&gt;Hooded Empire: The Klu Klux Klan in Colorado&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/815790.City_of_Darkness&quot;&gt;City of Darkness: Life in Kowloon Walled City&lt;/a&gt; a print edition goes for $300 on Amazon! I was pleased to get it via the interlibrary loan. It’s a huge book with fascinating images. It was a tiny bit of land that was specifically excluded from both the local, original ruling authority (china) and the british empire, because if they claimed it they’d have to also claim/unclaim some other territory. It was originally a walled fort. Until the non-conformity was ‘cleansed’ by ‘urban renewal’, it was the most densely inhabited-by-humans bit of land on the planet, more than twice as dense as second place. That it worked so well is necessarily lost by anyone today who needs to take urban renewal seriously.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;the list you are about to read is heavily reworked, based off this older list: &lt;a href=&quot;/recommended-reading-original-list&quot;&gt;josh.works/recommended-reading-original-list&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These are the books I cannot un-read, which shape me today. I don’t think any of my ideas are strange, but I sometimes find myself feeling out of step with others. A big source of that out-of-step-ness is that I cannot find any emotional engagement with the concept of “authority” being a real thing. It’s a collective hallucination, a harmful (rather than a helpful) superstition.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt; The author almost apologetically picks apart a few pieces of the concept of ‘authority’, and some implications therein.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/8236315-the-origins-of-proslavery-christianity&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt; If one loses felt confidence in things like political authority, one might also notice a felt loss of confidence in things like religious structures.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d not appreciated how much established religions hide from their own followers how deeply enmeshed the political structures are with things like ‘political authority’, or ‘structural reliance upon state violence, and an expectation of others obedience to that violence’, but &lt;a href=&quot;/whats-up-with-anabaptists&quot;&gt;once I saw it&lt;/a&gt; I reconfigured some things, mentally. So, this book, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;the origins of pro-slavery christianity&lt;/code&gt; was impossible to unread, even if I’d wanted to. (i didn’t, that’s not my vibe), I read it first in 2017 as well. &lt;a href=&quot;https://www.goodreads.com/notes/8236315-the-origins-of-proslavery-christianity/27372191-josh-thompson?ref=abp&quot;&gt;Here’s some quotes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;I’m trying to end up with a single page that maybe has &lt;em&gt;all&lt;/em&gt; of my currently recommended books on it, with a short blurb about each. We’ll see if I get there.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition&quot;&gt;The Most Dangerous Superstition&lt;/a&gt; it’s about authority. The author says, basically, the collective belief that authority is a real thing causes vastly more harm than nearly anything else, &lt;em&gt;and&lt;/em&gt; most of the harm that authority purports to solve &lt;em&gt;goes away&lt;/em&gt; if one can shed the (fantasy/kink/concept) of authority.&lt;/p&gt;

&lt;p&gt;Ivan Illych is top notch. All of his books are great. &lt;a href=&quot;https://www.goodreads.com/book/show/223403.Deschooling_Society&quot;&gt;Deschooling Society&lt;/a&gt;, &lt;em&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/253076.Tools_for_Conviviality?ac=1&amp;amp;from_search=true&amp;amp;qid=MG80hmQMUf&amp;amp;rank=1#&quot;&gt;Tools for Conviviality&lt;/a&gt;&lt;/em&gt;. Here’s a book review of Deschooling Society: &lt;a href=&quot;https://takingchildrenseriously.com/deschooling-society-by-ivan-illich-a-book-review/&quot;&gt;Deschooling Society, by Ivan Illich: a book review&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;I’ll read any book, for any reason, and if I “like” it is almost a complete afterthought. The real question is - can I glean something of value from it? Or, “is it interesting?” Can I sift and find something, &lt;em&gt;anything&lt;/em&gt; that is helpful to me? That increases my understanding or imagination, or is an engaging-enough story?&lt;/p&gt;

&lt;p&gt;If I can, I’m pleased with the experience. I read English texts quickly, and easily, by the way. &lt;sup id=&quot;fnref:fast-reading&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:fast-reading&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Anyway, plunge into a book only if reading seems pleasant-enough to make the effort worthwhile. No sweat either way, you’ll get a sense of some things just by surfing book titles, I’m ‘just’ surfacing a list, one or two of which might catch your eye, and if it does and you click through to amazon or good reads or the library and find a review that seems 🤓🧐 and you have a nice few hours of reading, congrats to us both. 🎉&lt;/p&gt;

&lt;p&gt;I also used a &lt;a href=&quot;https://www.amazon.com/Kindle-Paperwhite-16-GB-adjustable/dp/B09TMZKQR7&quot;&gt;Kindle Paperwhite&lt;/a&gt; with a nice magnetic cover (easy to transport, read while waiting around, I carry it in my purse/hip bag/fanny pack), and am pretty good with my library card/Libby, and enjoy reading for sometimes purely dissociative purposes.&lt;/p&gt;

&lt;p&gt;This list is categorized in no particular order.&lt;/p&gt;

&lt;h2 id=&quot;denverregional-things&quot;&gt;Denver/Regional things&lt;/h2&gt;

&lt;p&gt;I lived in Golden 2015-2022. Even ran for city council in 2017, then did another round of prodding at the machine, informed mostly by Robert Moses, in 2021, after buying a house there late in 2020. Stories are fascinating, here’s some specific to Denver, Colorado, and Golden:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Citizen-Coors-Family-Business-Politics/dp/0060959460&quot;&gt;Citizen Coors: A Grand Family Saga of Business, Politics, and Beer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/3101191-hooded-empire&quot;&gt;Hooded Empire: The Ku Klux Klan in Colorado&lt;/a&gt; was hard to finally obtain a copy of, library didn’t have a copy, used prospector + interlibrary loan to get it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Denver (as did every other municipality ) fully implemented the zoning document outlined in &lt;a href=&quot;/full-copy-of-1922-atlanta-zone-plan&quot;&gt;The Atlanta Zone Plan: Report Outlining a Tentative Zone Plan for Atlanta&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above blog post, I reference this twitter thread:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;1/20 Thoughts on Denver&amp;#39;s zoning and systemic racism. &lt;br /&gt;&lt;br /&gt;Here&amp;#39;s a screenshot from &lt;a href=&quot;https://twitter.com/CityofDenver?ref_src=twsrc%5Etfw&quot;&gt;@CityofDenver&lt;/a&gt;&amp;#39;s zoning map on &lt;a href=&quot;https://t.co/Tzx271JS8u&quot;&gt;https://t.co/Tzx271JS8u&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is textbook Euclidean Zoning, AKA &amp;quot;Single-Use Zoning&amp;quot;.&lt;br /&gt;&lt;br /&gt;The problems of this form of zoning are well-known:&lt;a href=&quot;https://t.co/WqiklxjB4h&quot;&gt;https://t.co/WqiklxjB4h&lt;/a&gt; &lt;a href=&quot;https://t.co/7RDaFJlttS&quot;&gt;pic.twitter.com/7RDaFJlttS&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/1294726871574179840?ref_src=twsrc%5Etfw&quot;&gt;August 15, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;The existence of r-1 and r-2 housing, which ‘in industry’ is widely known to mean ‘single family housing’ and ‘possible multi-family, like adus, condos, etc’ &lt;em&gt;will cause your blood to boil&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The guy that invented r-1 housing originally called it ‘r-1: white’. R-2, he designated “colored”.&lt;/p&gt;

&lt;p&gt;The system has shifted a little since then, but it’s clear as can be that the plan from the 1922 ‘atlanta zone plan’ is what got ‘ratified’ by the supreme court in &lt;a href=&quot;https://supreme.justia.com/cases/federal/us/272/365/&quot;&gt;1926, ambler v. euclid&lt;/a&gt;, and it’s what hums along in America today.&lt;/p&gt;

&lt;p&gt;this whole regime is called ‘euclidean zoning’. It isn’t a reference to &lt;a href=&quot;https://en.wikipedia.org/wiki/Euclidean_geometry&quot;&gt;Euclidean geometry&lt;/a&gt;, it’s a reference to euclid, ohio. They’re saying the quiet part out loud, and drafting on fake science terms for propagandistic value.&lt;/p&gt;

&lt;p&gt;Euclidean zoning sounds so scientific. 🤢 It’s implementing a plan with a simple goal:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The above race zoning is essential in the in interest of the public peace, order and security and will promote the welfare and prosperity of both the white and colored race. Care has been taken to prevent discrimination and to provide adequate space for the expansion of the housing areas of each race without encroaching on the areas now occupied by the other.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;r1 zoning, single family zoning goes hand-in-hand with a certain road design, and ‘commercial’, ‘industrial’, ‘residential’ segregation, in order to create race segregation.&lt;/p&gt;

&lt;p&gt;It’s such a fragile system of belief and reasoning. Even most of the people inside, propping it all up, must be so tired of it.&lt;/p&gt;

&lt;h2 id=&quot;general-food-things&quot;&gt;General food things&lt;/h2&gt;

&lt;p&gt;Did you know mitochondria are like &lt;em&gt;half&lt;/em&gt; the dry weight of the cells? The little high-school biochem mental models I had based on highschool drawings are also wrong - for some cells, mitochondria make up 2/3rds non-nucleic volume! I only saw my first time lapse video of mitochondia moving around cells fairly recently. Was super interesting.&lt;/p&gt;

&lt;p&gt;Here’s some books that tie together food things, and are coherent in other ways to.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/en/book/show/23496164&quot;&gt;Tripping Over The Truth: the metabolic theory of cancer&lt;/a&gt; We’re all familiar with the somatic theory of cancer. Did you know that all cancer cells share a common feature of ‘broken’ mitrochondria that generate energy via fermenting available-in-the-bloodstream glucose? I didn’t. It’s more interesting to me than the somatic take on cancer.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/29874881-the-case-against-sugar&quot;&gt;The Case Against Sugar&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6604712-eating-animals&quot;&gt;Eating Animals&lt;/a&gt; When I read this, I stopped eating meat and most animal products. Except eggs.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/21782260-it-starts-with-the-egg&quot;&gt;It Starts With The Egg&lt;/a&gt; This is a book about pregancy and getting pregnant, from a specific, updated, coherent point of view, especially&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For me, the grand conclusion of most of these books:&lt;/p&gt;

&lt;p&gt;most days I mostly eat some sauted mushrooms, brocoli, zucchini, eggs, salt &amp;amp; pepper, extra virgin olive oil, kimchi. I almost never eat breakfast, this is my lunch meal, then I might do ‘whatever’ for dinner. coffee in the mornings, heavy cream if needed for taste. Tea, or &lt;a href=&quot;https://www.amazon.com/Not-Beef-Not-Chickn-Edward-Sons-Bouillon/dp/B01BNUYTTS?source=ps-sl-shoppingads-lpcontext&amp;amp;ref_=fplfs&amp;amp;psc=1&amp;amp;smid=A1O9I0PFIHK5TL&quot;&gt;veggie Bouillon cubes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I sometimes eat canned sardines or frozen salmon. I eat almost zero other meat.&lt;/p&gt;

&lt;p&gt;I cook on a lodge 10” cast iron pan with &lt;a href=&quot;https://www.amazon.com/gp/product/B0015R7P6O/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;amp;psc=1&quot;&gt;this very specific dexter-russell 4”x2.5” pancake turner&lt;/a&gt;, and because I use adequate/tons of olive oil, the pan is always oiled and cleanable with the metal turner.&lt;/p&gt;

&lt;p&gt;I can scrape it clean/flat and never even run it under water. It lives on the stove-top, I cook once or twice a day in it, and never clean it or have to put it away. It is &lt;em&gt;extremely&lt;/em&gt; low-effort, low-demand, and delicious. I’ve cooked for dozens of people over the years, most/all report to enjoy my cooking.&lt;/p&gt;

&lt;h2 id=&quot;housing-and-finance-and-securitizations-and-bank-fraud&quot;&gt;Housing and finance and securitizations and bank fraud&lt;/h2&gt;

&lt;p&gt;These are not all books but desperately worth the read. There’s a lot more I could say/have said about this space. Is anyone surprised that a club of settler colonialists used their club privileges to maintain a position of power over non-club members?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://byrnehobart.medium.com/the-30-year-mortgage-is-an-intrinsically-toxic-product-200c901746a&quot;&gt;“The 30-Year Mortgage is an Intrinsically Toxic Product” by Byrne Hobart&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://escholarship.org/uc/item/7sq3f6xk&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Government Policy, Housing, and the Origins of Securitization, 1780 - 1968&lt;/code&gt; by Sarah Lehman Quinn&lt;/a&gt; tells the story of ‘regimes and attempted regimes of social control via housing&amp;lt;&amp;gt;financial policy`, which puts many of this century’s financial tooling developments in an interesting context.&lt;/li&gt;
  &lt;li&gt;All the “money” comes from/goes to &lt;a href=&quot;https://mises.org/library/book/money-bank-credit-and-economic-cycles&quot;&gt;the banking fraud of treating customer’s deposits as loans&lt;/a&gt;. It’s not really money, it’s mis-allocated real resources, the misallocation of which has real world consequences that self-correct the original error. (‘the economic cycle’)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/32191706-the-color-of-law&quot;&gt;The Color of Law: A Forgotten History of How Our Government Segregated America&lt;/a&gt; I have beef with the book title. (“Our” government?) and some of the prescriptive bit, but as far as being able to build an emotional understanding of the ‘land back’ argument, this is a good one.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/full-copy-of-1922-atlanta-zone-plan&quot;&gt;American Municipal Zoning Codes are full of memetic copies of some social tooling that came out of Atlanta in 1922&lt;/a&gt;. The thing outlined by the Atlanta Zone Plan was ‘ratified’ in the supreme court in &lt;em&gt;Euclid v. Ambler, 1926&lt;/em&gt;, and carries on in plain and obvious sight, &lt;em&gt;slightly&lt;/em&gt; hidden from &lt;em&gt;some&lt;/em&gt; people, today, in 2024.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;fraudulent banking practices -&amp;gt; pumping money into the giant, expensive project of ‘building more suburbs’ because that system reliably replicates the system that birthed it.&lt;/p&gt;

&lt;p&gt;Marriage and the family and the socialization around the single family home all sorta stew in the same pot, especially in America. one could consider mentally &lt;a href=&quot;https://www.goodreads.com/book/show/59893962-abolish-the-family&quot;&gt;abolishing the family&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This paper, &lt;a href=&quot;https://www.deanspade.net/wp-content/uploads/2021/10/Marriage_Will_Never_Set_Us_Free.pdf&quot;&gt;marriage will never set us free&lt;/a&gt; puts some nice framing on it.&lt;/p&gt;

&lt;h2 id=&quot;self-concept-and-existing-in-the-western-world&quot;&gt;Self-concept and existing in the western world&lt;/h2&gt;

&lt;p&gt;I read the canon of any given topic that climbs high enough on my list of priorities to learn about. Here’s the ones that keep coming up in conversation, or my own mind, on the topic of ‘emotionally immature people’, ‘trauma’, ‘emotional neglect’, blah blah blah.&lt;/p&gt;

&lt;p&gt;I got a bit of the standard ‘raised in a religious death cult’ cultural package, installed from birth. You or someone you know might be better off for reading some of these books. They were a boon to me.&lt;/p&gt;

&lt;p&gt;You can get all/most of these books on &lt;a href=&quot;https://www.overdrive.com/apps/libby&quot;&gt;Libby&lt;/a&gt; (a library app) and can send them for free to your &lt;a href=&quot;https://www.amazon.com/Kindle-Paperwhite-adjustable-Ad-Supported/dp/B08KTZ8249&quot;&gt;kindle paperwhite&lt;/a&gt;, anywhere in the world. Or torrent the book &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;epub&lt;/code&gt;s via the current piratebay mirror, and use &lt;a href=&quot;https://calibre-ebook.com/&quot;&gt;calibre&lt;/a&gt; to convert/transfer them to your kindle paperwhite.&lt;/p&gt;

&lt;p&gt;If your library doesn’t have the book, google &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[library system] request book form&lt;/code&gt;. I’ve asked the local-to-me library systems to add many books over the years, and many were easily added. One didn’t have an ebook option, and I didn’t re-request for a physical version, and sometimes if they think it won’t get read often enough they might say no.&lt;/p&gt;

&lt;p&gt;So, you could drop a few hundred dollars on books at the high end, or possibly spend not a single dollar on any of these. I like physical copies of books, sometimes, and will mark them up, sometimes quite heavily. But lots to be gained from ebook versions or audio book versions and library versions and more.&lt;/p&gt;

&lt;p&gt;What counts as a good-enough relationship with others, at various developmental stages? What counts as inadequate? What to do? These books sorta get at that topic. I might start by reading the Goodreads pages, or reviews, and seeing if anything grabs your eye.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Complex-PTSD-Surviving-RECOVERING-CHILDHOOD/dp/1492871842&quot;&gt;Complex PTSD: From Surviving to Thriving&lt;/a&gt;, Pete Walker&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Tao-Fully-Feeling-Harvesting-Forgiveness-ebook/dp/B017I3NRRO?ref_=ast_author_dp&quot;&gt;The Tao of Fully Feeling: Harvesting Forgiveness from Blame&lt;/a&gt; (don’t be put off by the use of the word forgiveness, you don’t have to forgive anyone), Pete Walker&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Healing-Shame-that-Binds-You-ebook/dp/B016P6GC9A/ref=sr_1_1?crid=3DT44LSD5SVSD&amp;amp;keywords=healing+the+shame+that+binds+you&amp;amp;qid=1698413851&amp;amp;s=digital-text&amp;amp;sprefix=healing+the+shame%2Cdigital-text%2C373&amp;amp;sr=1-1&quot;&gt;Healing the Shame that Binds You&lt;/a&gt;, John Bradshaw&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Parenting-Inside-Out-Self-Understanding-Anniversary-ebook/dp/B00HZ1E5BM/ref=sr_1_1?crid=1W733XLM0RA2Z&amp;amp;keywords=parenting+from+the+inside+out&amp;amp;qid=1698413876&amp;amp;s=digital-text&amp;amp;sprefix=parenting+from+the+%2Cdigital-text%2C344&amp;amp;sr=1-1&quot;&gt;Parenting from the Inside Out: How a Deeper Self-Understanding Can Help You Raise Children Who Thrive&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Adult-Children-Emotionally-Immature-Parents-ebook/dp/B00TZE87S4?ref_=ast_author_dp&quot;&gt;The Adult Children of Emotionally Immature Parents&lt;/a&gt; (and the other 4 books by Lindsay C. Gibson, as it feels right.) This book is so short it could be read in a single sitting, almost, but it’s &lt;em&gt;dense&lt;/em&gt;, so I wouldn’t recommend it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;parsing-religious-abuseshame-and-the-vast-overlap-with-the-conditions-upstreamdownstream-of-supremacy-and-colonialism&quot;&gt;parsing religious abuse/shame, and the vast overlap with the conditions upstream/downstream of supremacy and colonialism&lt;/h3&gt;

&lt;p&gt;I was raised in a a high-control religious cult, a religious authoritarian home. For example, this author’s description is  descriptive of my experience: &lt;a href=&quot;https://strongwilled.substack.com/p/chapter-2-under-pressure&quot;&gt;Under Pressure: What is it like to be child in a Religious Authoritarian home?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s a form of emotional or mental colonialism, tied to a form of social control to defend certain perceived gains, and to gain other perceived desired outcomes. The will/social attitude that &lt;em&gt;was&lt;/em&gt; there in the society, in the children, (or would otherwise be there) is coercively replaced or suppressed in favor of something preferred by the authorities, which usually relates to a certain form of them achieving their own emotional comfort, but in a way that removes emotional safety for others.&lt;/p&gt;

&lt;p&gt;They punished their kids for who they were, continuously, in a way that projects hate, or shame, or dedignification. &lt;em&gt;similar to how the people propping up, continuing the institution of chattel slavery punished their slaves&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The reason I’m so persistent in making that point (that evangelicalism is equivalent to chattel slavery OR colonialism) isn’t to necessary attack the other person - i know it often feels that way, but it’s to try to point a giant blinking arrow at a remarkably &lt;a href=&quot;/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;comprehensive cognitive compression&lt;/a&gt;. It’s to give them what it gave me - something like a nice pair of sunglasses that brings so much of the landscape into clearer, better, easier view.&lt;/p&gt;

&lt;p&gt;It’s such a useful frame.&lt;/p&gt;

&lt;p&gt;Certain people tried intensely to replicate their way of thinking/being in others. These books give a nice, dispassionate snapshot of the size of the USA’s colonial footprint. At the time of authorship of one of the Chalmers Johnson books, the US had over 700 full-on military bases around the world.&lt;/p&gt;

&lt;p&gt;It hurts so much to even think about, the size of the horrors done, in pursuit of empire around the world.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/53054943-the-jakarta-method&quot;&gt;The Jakarta Method: Washington’s Anticommunist Crusade and the Mass Murder Program that Shaped Our World&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40709.Blowback&quot;&gt;Blowback: The Costs and Consequences of American Empire&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40718.The_Sorrows_of_Empire&quot;&gt;The Sorrows of Empire: Militarism, Secrecy, and the End of the Republic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the above three books are about american empire, very worth reading, and helps clarify and make legible the layers of propaganda common around these american institutions.&lt;/p&gt;

&lt;p&gt;So much for colonialism and supremacy abroad, lets talk about it done at home.&lt;/p&gt;

&lt;p&gt;The tooling for parents to install social control ‘packages’ was physical assault, abandonment (actual or threatened), or later shame and punishment (actual or threatened), along with subtle presence and absence of warmth-approximating attitudes.&lt;/p&gt;

&lt;p&gt;Figuring out how to repair the damage isn’t trivial. To that end, here’s some books, about Evangelicalism, whiteness, colonialism, and &lt;em&gt;the willingness to coerce&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It’s worth remembering that early american police forces were nothing but deputized &lt;a href=&quot;https://en.wikipedia.org/wiki/Slave_patrol&quot;&gt;slave patrols&lt;/a&gt;. Evangelicals usually perceive the police as friendly to them, which means (😬) that evangelicals support slave patrols, and ‘patrol energy’. It’s very perceivable in home environments in ways that land as shocking to those who had alternative experiences. Myself and many others often find a ‘self-policing inner narrative’ or ‘the masters gaze’ following us around. It’s worth tying it straight back to the colonial ‘tool’ of social control, the &lt;a href=&quot;/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;conceptual compression&lt;/a&gt; is best in that framing.&lt;/p&gt;

&lt;p&gt;When the white, slave-holding population is so vastly outnumbered by their slaves, it takes some creativity and sustained effort to prevent uprisings and rebellions.&lt;/p&gt;

&lt;p&gt;The role of a slave patrol in a slaving society was to harass the majority population, find the most ‘willful’ slaves, and humiliate and degrade them (without killing them, of course. their labor had value) so that they would serve as a reminder to the other slaves, with their broken bodies and souls, of the cost of resistance.&lt;/p&gt;

&lt;p&gt;A dog maiming the legs of an ‘uppity’ slave, or a load of birdshot fired across the arms of a slave that wasn’t sufficiently deferential, would leave scars, and a limp, and a maimed countenance, and any &lt;em&gt;other&lt;/em&gt; slave that saw the scars would know what had happened, and what might happen again.&lt;/p&gt;

&lt;p&gt;In some counties in the slave-holding american south, 15% was white, 85% was black. The white people were &lt;em&gt;terrified&lt;/em&gt; of the threat of the slaves accruing power to themselves and taking action to improve their situation. &lt;a href=&quot;https://www.goodreads.com/book/show/775985.The_Black_Jacobins&quot;&gt;Toussaint L’Ouverture and the San Domingo Revolution&lt;/a&gt; is a sobering read to help calibrate on the sort of tension that was in the air.&lt;/p&gt;

&lt;p&gt;The attitudes these white people had towards their slaves morphed and changed over time, but still persist today, and are partially forced into the minds of all children, especially with religious dogma and shame.&lt;/p&gt;

&lt;p&gt;For example, a common statement/belief/after-the-fact intellectual-justification for slavery by some european settler colonialists was:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;God placed the white man over the black man &lt;em&gt;for the benefit of the black man&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;this embodied belief, plus the belief in the concept of authority, led to white people pretending to “get mad” at black people when the black people &lt;em&gt;didn’t act thankful&lt;/em&gt; for the white man’s domination.&lt;/p&gt;

&lt;p&gt;Please see, again, Samuel Cartwright’s stunning contribution to the psychological sciences with &lt;a href=&quot;https://en.wikipedia.org/wiki/Drapetomania&quot;&gt;Drapetomania&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, supremacy thinking wasn’t just “white over black”, it was also “men over women”, “parents over children”, “fathers over the entire family”, and more. It’s chivalry and nobility culture mixed with Anselm’s ‘satisfaction atonement’ justification of violence, mixed into a dominance hierarchy… soup.&lt;/p&gt;

&lt;p&gt;Lots of the modern world of hierarchical, authoritative structures are nothing but insane people doing incredible leaps of logic to convince themselves and their victims that the oppression in a given society was good, inevitable, ordained by God and logic.&lt;/p&gt;

&lt;p&gt;These kinds of people are dangerous to the children that they raise, the people that they ‘help’.&lt;/p&gt;

&lt;p&gt;That means, though, that when you want to undo some of the damage they did to your soul, it’s best to ‘go to the source’ and see what kinds of things white people said about their own domination when they were not embarrassed or ashamed by it, but actively colluded with other white people to further their domination over their victims.&lt;/p&gt;

&lt;h3 id=&quot;the-books-that-might-aid-in-appreciating-the-many-manifestations-of-religiouscultural-shame&quot;&gt;the books that might aid in appreciating the many manifestations of religious/cultural shame&lt;/h3&gt;

&lt;p&gt;To that end, consider reading any the following, if they look interesting to you:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity?from_search=true&amp;amp;from_srp=true&amp;amp;qid=RxApdAuNZo&amp;amp;rank=1&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/61676927-i-saw-death-coming&quot;&gt;I Saw Death Coming: A History of Terror and Survival in the War against Reconstruction&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40887375-they-were-her-property?ac=1&amp;amp;from_search=true&amp;amp;qid=hpCcgRkOGN&amp;amp;rank=1&quot;&gt;They Were Her Property: White Women as Slave Owners in the American South&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There’s also lots of propaganda around the ‘privilege’ of being part of a state (as long as you’ve achieved sufficient status within that state). If you sometimes find status games de-dignifying, read:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Against-Grain-History-Earliest-States/dp/0300182910&quot;&gt;Against the Grain: A Deep History of the Earliest States&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Seeing-Like-State-James-C-Scott-audiobook/dp/B07D2HZXB4/ref=sr_1_1?crid=2FHVDG0449OQY&amp;amp;keywords=seeing+like+a+state&amp;amp;qid=1698414800&amp;amp;s=books&amp;amp;sprefix=seeing+like+a+sta%2Cstripbooks%2C369&amp;amp;sr=1-1&quot;&gt;Seeing Like a State: How Certain Schemes to Improve the Human Condition Have Failed&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Aver reading some of, or all of, these books, you’ll be able to more naturally engage in de-shaming thought patterns, and might be able to find a bit more peace inside your own mind, a sense of solace from the ‘toxic inner critic’, or ‘colonizer’s voice’ that our parents often force into our heads at a tender age.&lt;/p&gt;

&lt;h2 id=&quot;recognizing-coercion&quot;&gt;Recognizing coercion&lt;/h2&gt;

&lt;p&gt;Coercion is often rooted in entitlement. If there’s a power dynamic involved, it devolves into abuse or neglect. Can be salient. Mixed in with coercion are often beliefs about authority, obedience, ‘the right way to do it’.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/en/book/show/29363252-conflict-is-not-abuse&quot;&gt;Conflict Is Not Abuse: Overstating Harm, Community Responsibility, and the Duty of Repair&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/402366.The_Verbally_Abusive_Relationship&quot;&gt;The Verbally Abusive Relationship: How to Recognize It and How to Respond&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.whitesupremacyculture.info/uploads/4/3/5/7/43579015/okun_-_white_sup_culture.pdf&quot;&gt;list of characteristics of white supremacy culture (pdf)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;emotionality-and-gender-issues-and-patriarchy--supremacy-thinking&quot;&gt;“Emotionality and gender issues and patriarchy &amp;amp; supremacy thinking”&lt;/h2&gt;

&lt;p&gt;I’m not sure how to introduce these books. In my opinion, it’s easy to say they’re essential reading if you find yourself to be a women (or female-passing, or feminine, or not sporting a penis) in the modern world.&lt;/p&gt;

&lt;p&gt;Really, though, the books amount to:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;ways that hierarchical power structure + violence common in the world hurts everyone, here’s how to recognize it and ways to perhaps respond.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Read the list, you might see why I say this:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Invisible-Women-Data-World-Designed-ebook/dp/B07N1N6VKT/ref=sr_1_1?crid=1INU1SSL2WTSO&amp;amp;keywords=invisible+women&amp;amp;qid=1698414937&amp;amp;s=digital-text&amp;amp;sprefix=invisible+w%2Cdigital-text%2C607&amp;amp;sr=1-1&quot;&gt;Invisible Women: Data Bias in a World Designed for Men&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Women-Dont-Ask-Negotiation-Gender-ebook/dp/B08CR5GGZL/ref=sr_1_1?crid=3NDIVA561FH2R&amp;amp;keywords=women+don%27t+ask&amp;amp;qid=1698414974&amp;amp;s=digital-text&amp;amp;sprefix=women+don%27t+a%2Cdigital-text%2C369&amp;amp;sr=1-1&quot;&gt;Women Don’t Ask: Negotiation and the Gender Divide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it sounds &lt;em&gt;insane&lt;/em&gt; to say “women might want to read these books, but men, you know, just… keep on scrolling”.&lt;/p&gt;

&lt;p&gt;Presumably, if you’re a man/have a penis, and reading this page, you are sensitive enough to appreciate that society is worse off to the degree that it conforms to hierarchical norms organized around a willingness to use violence.&lt;/p&gt;

&lt;p&gt;Some of the ideas within these books might benefit your relationship with others, though like all of the books on this list, you’ll find your blood boiling a bit as you read.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;uggg even using english dictates a certain frame on gender issues. I dislike anything that feels like &lt;a href=&quot;https://knowingless.com/2021/11/27/frame-control/&quot;&gt;frame control&lt;/a&gt;, and things that sound like fabricated conflict.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;a lot of ‘modern stuff’ feels distinctly american, and is “just” what happens when settler colonialism + nobility/purity culture gets ‘buried’ or ‘stuck’ somewhere.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Something that is undoubtedly true is ‘supremacy/oppressor cultures are entirely devoid, necessarily, of the capacity to recognize and hold space for grief visible in the world around them, else they would necessarily self-correct&lt;/em&gt;’&lt;sup id=&quot;fnref:her_property&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:her_property&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;or, ‘supremacy culture is institutionalized emotional trauma, cptsd + an embodied belief in the legitimacy of authority/political authority’&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Not sure how to introduce this post, other than… it’s long, but might be worth a skim: &lt;a href=&quot;https://elodes.substack.com/p/three-hundred-ways-it-can-hurt-to&quot;&gt;Three Hundred Ways It Can Hurt to Be a Man — Introduction&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The way power dynamic exploitation gets encoded in certain american/western/male-ish ‘norms’ in culture is brutal. I only recently found a book written in 2006 titled: &lt;a href=&quot;https://www.amazon.com/Self-Made-Man-Womans-Year-Disguised/dp/0143038702&quot;&gt;Self-Made Man: One Woman’s Year Disguised as a Man&lt;/a&gt;. It was an instant download-and-read. It shows how bad the emotional landscape is for a vast swath of people living in the USA. ‘&lt;sup id=&quot;fnref:not-normal&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:not-normal&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;children&quot;&gt;Children&lt;/h2&gt;

&lt;p&gt;Children are an oppressed class.&lt;/p&gt;

&lt;p&gt;I used to think this was self-evident.&lt;/p&gt;

&lt;p&gt;enough/too many adults internalize the bad things they experienced, normalize it, and push it down on the children around them. I overhear it in adult/child interactions all the time, especially now that I have a young child.&lt;/p&gt;

&lt;p&gt;I find the &lt;a href=&quot;https://twitter.com/TCSparents&quot;&gt;taking children seriously&lt;/a&gt; twitter account (and &lt;a href=&quot;https://takingchildrenseriously.com/&quot;&gt;website&lt;/a&gt;) to be a good resource for appreciating the plight of children as a class, seeing/witnessing them better. Witnessing &lt;em&gt;us&lt;/em&gt; better. Ivan Illych’s &lt;a href=&quot;https://www.goodreads.com/book/show/223403.Deschooling_Society&quot;&gt;Deschooling Society&lt;/a&gt; and &lt;a href=&quot;https://www.goodreads.com/book/show/253076.Tools_for_Conviviality&quot;&gt;Tools for Conviviality&lt;/a&gt; are coherent, as well.&lt;/p&gt;

&lt;p&gt;I was a child, not so long ago, and can still easily access enjoyable, child-like ways of being. I prize and guard and protect this part of myself, as the world is devastatingly cruel to children. (can’t play in streets. compulsory school. war, capitalism, supremacy, it takes parents and friends from them, temporarily or permanently.)&lt;/p&gt;

&lt;h2 id=&quot;movies-and-tv-shows&quot;&gt;Movies and TV Shows&lt;/h2&gt;

&lt;p&gt;This is the catch-all for “not-books/not-reading”, but my gosh obviously ‘reading’ is just a certain form of relating, I give non-reading works as much priority, weight, dignity, appreciation as I do books. Usually more.&lt;/p&gt;

&lt;p&gt;I was forced to watch war movies growing up, and as an adult. It is extremely rare that I am in a mood for any sort of depiction of violence in a movie. Most movies made in the USA openly support statist, militaristic, imperialistic narratives. I did a lot of long flights in the last year, watched/observed many different movies being watched around me. Even kids movies feature, regularly, jaw-dropping amounts of violence. Gotta start the propaganda young!&lt;/p&gt;

&lt;p&gt;Here’s some things I’ve watched, enjoyed, would re-watch. This list ~will probably grow with time~ has now been updated several times as additional beta is gleaned.&lt;/p&gt;

&lt;h3 id=&quot;studio-ghibli&quot;&gt;Studio Ghibli&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;/my-favorite-production-studio&quot;&gt;i moved entries on several Studio Ghibli movies here&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-way-of-the-househusband&quot;&gt;The way of the househusband&lt;/h3&gt;

&lt;p&gt;Oh my gosh I’m ruined by this show.  &lt;a href=&quot;https://movieweb.com/non-violent-anime-series-that-are-highly-addictive/#the-way-of-the-househusband-2021&quot;&gt;The Way of the HouseHusband&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;i watched it via netflix&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;extremely dignifying and clever. I’m over the moon with it, giggle to myself all the time. Former Yakuza, leaves gangs and becomes a house husband, takes himself seriously, is taken seriously.&lt;/p&gt;

&lt;p&gt;the end of chapter 3, episode 1. 🤣 It’s available via english dubs or subs, I’ve enjoyed it in both in different ways.&lt;/p&gt;

&lt;p&gt;My gosh I laughed at this regularly, thought it was great and very dignifying to all, and deliciously non-normative.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;You mean to tell me the ways of the yakuza and the way of the househusband are connected??? TEACH MEE!!!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;chapter 9, episode 2&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You’ll absolutely love it, or despise it, but you’ll get a good few minutes either way. You cannot not.&lt;/p&gt;

&lt;h3 id=&quot;the-us-and-the-holocaust-ken-burns&quot;&gt;The U.S. and the Holocaust (ken burns)&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://kenburns.com/films/the-u-s-and-the-holocaust/&quot;&gt;The U.S. and the Holocaust&lt;/a&gt; Documentary by Ken Burns, I watched via Amazon Prime Video. Vast swaths of the US population, and the world, openly supported hitler in his supremacist ethnic cleansing of ‘his’ lands. _he openly approved of how the native, black, and homosexual populations in the USA were ‘being handled’ by the american people. (ethnic cleansing, ethnic cleansing, and trait cleansing, respectively, via all possible means of social control).&lt;/p&gt;

&lt;p&gt;He said things like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Our Danube is like their Mississippi!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;referring to the american expulsion of native people across the mississippi, to Oklahoma. (well, &lt;a href=&quot;https://en.wikipedia.org/wiki/Killers_of_the_Flower_Moon_(book)&quot;&gt;until oil was discovered there, then ‘america’ wanted the land back&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Henry Ford was a HUGE fan of Hitler, and Hitler had a poster of Ford in his office!&lt;/p&gt;

&lt;p&gt;Henry Ford bought a newspaper with the second-highest distribution in the USA, a weekly periodical in America and ran a 90 part weekly series about “The International Jew: The World’s Foremost Problem”!!!!!!&lt;/p&gt;

&lt;p&gt;The white people running the government of the USA, + the wealthy white people not in the government, via the department of state, and other means, tried it’s hardest to keep those pesky undesirables from eastern europe out of it’s shores and away from it’s women. If there were not so many jews stuck in germany when hitler started &lt;em&gt;really&lt;/em&gt; killing them (as he was collabing with Ford to get help in doing), less &lt;em&gt;everyone&lt;/em&gt; would have died.&lt;/p&gt;

&lt;p&gt;“anti immigration laws” were the anvil, pinning those people in place for hitler’s hammer.&lt;/p&gt;

&lt;p&gt;43 states in the USA had laws ON THE BOOKS “requiring” (justifying) the forced sterilization of people deemed ‘unfit’ [by wealthy white eugenicists]. the last vestige of these laws were removed from the books in 2014.&lt;/p&gt;

&lt;p&gt;People that say “protect our neighborhood character” are drafting on the exact same eugenicists in the 1910s, advocating for a program of eugenics, saying “protect our race and our women from &lt;em&gt;them&lt;/em&gt;!”&lt;/p&gt;

&lt;p&gt;They wrote books like “The Passing of the Great Race”, saying “if we don’t act now, and quickly, our great race will be destroyed, especially by these uncouth asiatic non-white jews!”&lt;/p&gt;

&lt;p&gt;Everyone was down with ‘regimes of social control’, and the current manifestation I’ve been noodling is road networks and zoning. I have stuff going at &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/&quot;&gt;substack&lt;/a&gt;, or &lt;a href=&quot;tags#ethnic_cleansing&quot;&gt;write about it here sometimes&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:library&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I source most of the books I read through a local library system! I’ve lived in both Jefferson County, CO and Denver County, CO and so have obtained library cards for both systems. I have a &lt;a href=&quot;https://www.amazon.com/s?k=kindle+paperwhite&quot;&gt;kindle paperwhite&lt;/a&gt; which lets me get something  called a ‘digital library book’, or, a book that’s delivered via a &lt;a href=&quot;https://libbyapp.com/&quot;&gt;phone app called Libby&lt;/a&gt;. Which ultimately delivers books via Amazon, as if I bought the kindle edition on the amazon website. It’s a bit wonky and round-about to set up, but it means &lt;em&gt;most&lt;/em&gt; of the books I read I get via the library, and without ever going to a physical library. If I cannot find a book at the library, I’ll see if I can get it via &lt;a href=&quot;https://thepiratebay.org/&quot;&gt;the pirate bay&lt;/a&gt;, or Jeffco or Denver’s Interlibrary Loan system. Sometimes I’ll buy the book. Some books I get from bookstores, by happenstance. I also have made many successful requests to have a book added to a library system. Some notably-hard-to-find reads, but I eventually got them, and for free. &lt;a href=&quot;#fnref:library&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:fast-reading&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;not everyone has interest/skills/english reading skills to make any of this list a good fit. I’m less into reading &lt;em&gt;now&lt;/em&gt; than I was once, fwiw. I don’t sound out individual words, nor do I sound &lt;em&gt;any&lt;/em&gt; words out, in my head, as I read. I also experience my own inner world similar to the author of &lt;a href=&quot;https://www.facebook.com/notes/2862324277332876/&quot;&gt;this post about aphantasia&lt;/a&gt;. I read for content and information without a single image passing through my imagination. I only recently learned that this is not the same experience everyone has. I can capture large fractions of lines of text ‘at once’ and process a page quite fast. Not everyone reads at this particular speed, and some people have a vastly different experience with the books they &lt;em&gt;do&lt;/em&gt; read. &lt;a href=&quot;#fnref:fast-reading&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:her_property&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I maintain &lt;a href=&quot;https://www.goodreads.com/book/show/40887375-they-were-her-property&quot;&gt;They Were Her Property: White Women as Slave Owners in the American South&lt;/a&gt; is indispensible for understanding broad swaths of American culture, and western culture. (slavery was rooted in the enlightenment, and of course systems of slavery shaped the world around themselves, then to now) &lt;a href=&quot;#fnref:her_property&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:not-normal&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;it’s not normal, how many things are done in the USA. That a settler-colonialist mindset baked into social structures would have many harmful, visible effects on a society is a given. men/women dynamics. parent/child. authority/obedient, nobility/peasant, english-speaking/non-english-speaking, white-passing/non-white-passing. Bleh. &lt;a href=&quot;#fnref:not-normal&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Denver Botanic Gardens - What, How, Why</title>
   <link href="https://josh.works/botanic-gardens"/>
   <updated>2024-06-02T13:00:00+00:00</updated>
   <id>https://josh.works/denver-botanic-gardens</id>
   <content type="html">&lt;p&gt;&lt;em&gt;note: since writing the following piece, I wrote something of a &lt;a href=&quot;/mushroom-foraging-in-the-park&quot;&gt;part 2, discussing in detail the portabella/brown/white mushrooms that grow in the park&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I recently got access to a delightful amenity, based on where I live. I’ve been sharing it with others as quickly as possible, because they too have access to it.&lt;/p&gt;

&lt;p&gt;From here on out, when I reference “botanic gardens” or “the gardens”, I’m referencing the Denver Botanic Gardens, next to Cheesman park.&lt;/p&gt;

&lt;p&gt;The purchases are for a year, so it works out to $100/year. Botanic gardens as a thing have colonialist origins, so there’s some total downsides to these particular gardens and what they represent. Also, they were built on a mass grave, and have generally been reserved as a privilege for economic elites. If you end up getting a key fob let me know and we’ll go on a walk and I’ll rant more about it &lt;em&gt;then&lt;/em&gt;.  ¯\_(ツ)_/¯&lt;/p&gt;

&lt;p&gt;I’m happy to get this great tool/amenity into the hands of the everyperson in Denver. I’ve shared this info with others I live near, but manually cutting/pasting links via SMS isn’t super efficient. Now this page serves as a reference for all.&lt;/p&gt;

&lt;p&gt;Here’s where the gate is, some spots to sit when the weather is nice/not as nice:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/dbg.jpg&quot; alt=&quot;dbg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The lines are where I’ve ridden my scooter/walked while running Strava. Long story, here’s a starting point: &lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=18&amp;amp;latlng=39.740677,%20-104.968804&quot;&gt;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=18&amp;amp;latlng=39.740677,%20-104.968804&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;how-i-use-them&quot;&gt;How I use them&lt;/h2&gt;

&lt;p&gt;I can take about 3 minutes on my scooter to ride from where I live to where I park my scooter right next to the gate into the gardens from Cheesman. I can easily walk and often do, or bring Eden - it’s far enough that a stroller or jogger is best for everyone, too far for her to walk unaided, and lots of the walking is crossing dangerous streets, unfortunately.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;but once you’re close enough to the gardens, it’s lovely&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the winter, there’s a ‘conservatory’ that stays warm and humid. In the summer, there’s cool spaces.&lt;/p&gt;

&lt;p&gt;Lots of people walk to them, or ride their bike. It’s not super accessible via car, so I reserve my strongest endorsement for this plan only if you don’t plan on ever driving.&lt;/p&gt;

&lt;p&gt;I go here by my self, with friends, with my daughter, all the time. Sometimes I bring a frisbee and toss for a few minutes outside the gardens, if I’m there with friends. I might bring a kindle and laptop and pack a lunch and buy a $1.80 espresso at a cafe and work for a bit.&lt;/p&gt;

&lt;p&gt;I’m writing and publishing this post from the gardens, before my laptop battery dies.&lt;/p&gt;

&lt;h2 id=&quot;steps-to-get-key-fob-access-via-the-gate-to-cheesman-park&quot;&gt;Steps to get “Key Fob” Access via the gate to Cheesman Park&lt;/h2&gt;

&lt;p&gt;It’s a two-step process to get the full experience. An online purchase, then an in-person purchase.&lt;/p&gt;

&lt;h3 id=&quot;step-1-become-digital-member-of-the-gardens&quot;&gt;Step 1: Become ‘digital member’ of the gardens&lt;/h3&gt;

&lt;p&gt;If you ‘become a member’ of the Denver Botanic Gardens:&lt;/p&gt;

&lt;p&gt;Go to &lt;a href=&quot;https://www.botanicgardens.org/join-give/membership&quot;&gt;https://www.botanicgardens.org/join-give/membership&lt;/a&gt;, and select/pay for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$75 Individual Plus&lt;/code&gt; membership.&lt;/p&gt;

&lt;p&gt;Buy online and it’s $10 less, so really $65. Renewals are less.&lt;/p&gt;

&lt;h3 id=&quot;step-2-in-person-purchase-the-key-fob-membership-upgrade&quot;&gt;Step 2: In person, purchase the key fob membership upgrade&lt;/h3&gt;

&lt;p&gt;There’s a service counter near the front of the gardens, tucked sort of ‘behind’ the Copper Door coffee shop. Go there, ask for the key fob, pay $35 for the fob, it’s supposedly $15 to renew subsequent years.&lt;/p&gt;

&lt;p&gt;Information about this on the website wasn’t hard to find, once I knew what I was looking for:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.botanicgardens.org/membership-faq#fob-faq&quot;&gt;https://www.botanicgardens.org/membership-faq#fob-faq&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll get a little plastic key fob. For me and my friends, it’s active and working as soon as they hand it to you, even though they say it might take a day to activate.&lt;/p&gt;

&lt;p&gt;Congratulations, have a wonderful time. Most days the gardens are open 8a to 8p, and that key fob seems to open the door from Cheesman even as late as 7:45p, which was later than I expected.&lt;/p&gt;

&lt;p&gt;Questions? Let me know. I’ll update this post as makes sense.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;other details&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;forage-mushrooms-feed-to-the-koi&quot;&gt;Forage mushrooms, feed to the koi&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;One can usually find &lt;a href=&quot;https://en.wikipedia.org/wiki/Agaricus_bisporus&quot;&gt;button mushrooms&lt;/a&gt; growing in Cheeseman park, so pick a few on your way into the gardens, if you’d like. Tear them into pieces, feed to the fish! Mushroom is sorta ‘chicken of the forest’, and is edible to fish. I take eden to the gardens all the time, sort of stumbled across the idea. Now she always makes sure we have a mushroom with us to feed to the fish. ‘here, buddies’ she says, as the tosses mushrooms into the water.  It’s easy to find a handful of mushrooms on the way into the gardens, every time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;use-the-library&quot;&gt;Use the library&lt;/h2&gt;

&lt;p&gt;There’s a library inside, with a kids section, and then regular books, all appropriately themed for a library in a botanic garden. It’s quite nice.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Parenting: A Place for Sources And Stories</title>
   <link href="https://josh.works/parenting"/>
   <updated>2024-05-25T13:00:00+00:00</updated>
   <id>https://josh.works/parenting</id>
   <content type="html">&lt;p&gt;As some of us are or might be, I “am a parent”, or I “have a child”, or something like that.&lt;/p&gt;

&lt;p&gt;This is complex for me to write and engage with, because something that is &lt;em&gt;certainly true for all of us&lt;/em&gt; is that we “have a parent” or we “have been a child”. To talk about any of it is to talk about all of it.&lt;/p&gt;

&lt;p&gt;Also the status of ‘child’ is quite temporary &lt;em&gt;in society&lt;/em&gt;, and then perhaps less so in different structures. Also, to be a child in America is to be a member of an oppressed class. I entirely oppose the energy&lt;/p&gt;

&lt;p&gt;I think a helpful frame might be&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I am responsible for someone who will some day be in many ways a &lt;em&gt;peer&lt;/em&gt;, who is not yet fully equipped with the same or equivalent sets of tools/skills as I, and I happen to enjoy the company and personality of this peer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The ‘peer’ part is not to adultify or parentify a child, of course. It’s to elevate or express the commonality of some shared humanity, some shared participation in the human experience.&lt;/p&gt;

&lt;p&gt;I am pleased to regularly embody a way-of-being that is quite accommodating and peaceful to a toddler, and because of the other people who’s interactions I now witness, and my own lived experience as a child and adult, &lt;em&gt;lots of the natural way of being of adults/western&amp;amp;modern&amp;amp;american adults is quite inhospitable to children&lt;/em&gt;. 💔❤️‍🩹&lt;/p&gt;

&lt;p&gt;I’m not quite sure how I’m proceeding through this post, by the way. There will certainly be some book lists and links to articles, as usual. &lt;a href=&quot;/write-it-now&quot;&gt;Write it now&lt;/a&gt; and such.&lt;/p&gt;

&lt;p&gt;I’m inspired by people like &lt;a href=&quot;https://robertheaton.com/#parenthood&quot;&gt;Robert Heaton&lt;/a&gt;. One of his many posts about his child: &lt;a href=&quot;https://robertheaton.com/height-2-10-occupation-baby/&quot;&gt;Height: 2ft 10 inches. Occupation: baby&lt;/a&gt;. Patrick McKenzie’s &lt;a href=&quot;https://twitter.com/patio11/status/1788021768084443430&quot;&gt;vibe with his children&lt;/a&gt;, &lt;a href=&quot;https://x.com/simonsarris/status/1773482070133682496/&quot;&gt;Simon Sarris&lt;/a&gt;. &lt;a href=&quot;https://blog.penelopetrunk.com/&quot;&gt;Penelope Trunk&lt;/a&gt;. Certainly many others.&lt;/p&gt;

&lt;h2 id=&quot;some-of-the-books-that-have-informed-me&quot;&gt;Some of the books That Have Informed Me&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/9861067-the-art-of-roughhousing&quot;&gt;The Art of Roughhousing: Good Old-Fashioned Horseplay and Why Every Kid Needs It&lt;/a&gt;\&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Parenting-Inside-Out-Self-Understanding-Anniversary/dp/039916510X&quot;&gt;Parenting from the Inside Out: How a Deeper Self-Understanding Can Help You Raise Children Who Thrive&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/en/book/show/10266902-selfish-reasons-to-have-more-kids&quot;&gt;Selfish Reasons to Have More Kids: Why Being a Great Parent Is Less Work and More Fun Than You Think&lt;/a&gt; (less enthusiastically recommended today than say 2017)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25761655-the-secret-of-our-success?ref=nav_sb_ss_1_18&quot;&gt;The Secret of Our Success&lt;/a&gt;, one of the best books I’ve ever read. Hard to summarize myself, so here’s &lt;a href=&quot;https://slatestarcodex.com/2019/06/04/book-review-the-secret-of-our-success/&quot;&gt;scott alexander’s book review&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many western parenting tropes rely quite a bit on coercion and a punishment-informed mindset. When pointed out, a reactionary defense of ‘what other options do I have’ is sometimes offered up.&lt;/p&gt;

&lt;p&gt;Besides indicating that the speaker has an operating belief in the entitlement to dominate&lt;sup id=&quot;fnref:entitlement&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:entitlement&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, I earnestly, humbly suggest a self-paced ethno-biographical study of 14 different cultures and legal regimes that operated in specific times and places. One can imagine at least partially enlarging one’s array of non-coercive tools for mutuality with others after embarking (willingly) on such a journey.&lt;/p&gt;

&lt;h3 id=&quot;elimination-communication&quot;&gt;Elimination Communication&lt;/h3&gt;

&lt;p&gt;This concept, this &lt;em&gt;possibility&lt;/em&gt; was groundbreaking to me when I crossed paths with it.&lt;/p&gt;

&lt;p&gt;This was perhaps responsible for &lt;em&gt;most&lt;/em&gt; of the early-stage ‘this child seems extremely chill’ vibes. I’m perhaps trying to cover too much in a single post, sorry.&lt;/p&gt;

&lt;p&gt;Western diaper culture, esp disposable diapers, is not how it’s always been done. Eastern cultures were aware of the rhythms of children/infants, built routines of baby-wearing + ‘easy’ aided waste elimination, so from a young age the person is simply eliminating into the ground or a suitable container &lt;em&gt;by default&lt;/em&gt; instead of defaulting into soiled diapers.&lt;/p&gt;

&lt;p&gt;This is also the first move of learning to be non-coercive towards children. Observe, study, learn to communicate, use your adult brain/skills to bridge towards their brain and skills. Their skills grow so quickly in healthy environments.&lt;/p&gt;

&lt;p&gt;Baby sign language, and recognizing/helping-into regulated nervous system states. &lt;a href=&quot;https://www.amazon.com/Go-Diaper-Free-Elimination-Communication/dp/0692445056&quot;&gt;Go Diaper Free: A Simple Handbook for Elimination Communication&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;on-people-meeting&quot;&gt;On people meeting&lt;/h2&gt;

&lt;p&gt;Eden loves to meet my friends, in her words, and my friends love to meet her (theirs). She meets strangers, and interacts with adults, in my company, regularly. I’ve seen many different patterns of interactions, and I’d like to speak about some of them.&lt;/p&gt;

&lt;p&gt;I barely concede the use of this language, but it might be legible enough.&lt;/p&gt;

&lt;p&gt;Often, when a large adult meets her and directs too much emotional energy straight at her, &lt;em&gt;especially if she has not interacted with that person or recently or just doesn’t feel like it&lt;/em&gt; she will turn her face away and give the body language of disengagement.&lt;/p&gt;

&lt;p&gt;It’s plainly visible to me, it’s easily namable by both of us, before and/or after, and of course I always help. I’ve got skills and capacities and status that she doesn’t, so it’s easy-enough for me to manage, even if I resent that I have to ‘manage’ something like this at all.&lt;/p&gt;

&lt;p&gt;I’ll put myself physically between them, more than she’s already done, and if I’m holding her I’ll turn her away, and I might even also turn away from the speaker, and direct our attention to something else.&lt;/p&gt;

&lt;p&gt;Not her, not me, but that plant, that person over there, the thing. A step to the side/away also might happen. At least once or twice, an adult still changes their location, elevation, tone of voice, and content of discussion from what seems conventional, and sort of swoop in again to try to, quite literally, ‘get in her face’, but with a certain expectant energy.&lt;/p&gt;

&lt;p&gt;To pick from one of several available frames, it’s a little bit of a projection of a role onto someone, while that same person steps into their own projection of their own role.&lt;/p&gt;

&lt;p&gt;Eden feels the projection of the role, and doesn’t like it. It’s usually a pretty namable energy, every/anyone can see it, Eden will name it to me, sometimes before or after. “I didn’t like that person”, she might say, or other things like it.&lt;/p&gt;

&lt;p&gt;A nice alternative energy is something more akin to:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;allowing non-demanding emotional engagement to extend in her direction, in an ‘opt in’ kind of way.&lt;/li&gt;
  &lt;li&gt;keep most of the energy and focus on whatever is normal, which is usually some mix of whatever you were up to 30 seconds ago, or engaging with me, or participating in the flow of whatever is going on.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;on-scripts&quot;&gt;on scripts&lt;/h2&gt;

&lt;p&gt;The kinds of people who script social interactions and believe they’re entitled to verbal engagement from someone tend to say things like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“say please/thank you”&lt;/li&gt;
  &lt;li&gt;“say […]”&lt;/li&gt;
  &lt;li&gt;“say i love you”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve often-enough/too-often informed others of a norm for interacting with eden:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;we do not put words in edens mouth, or demand her to place your words in her mouth.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To the credit of some, i perceive this norm to have been well received. Adults “tell” kids to do or perform something all the time.&lt;/p&gt;

&lt;p&gt;My parents attacked me as a child when I didn’t look happy enough for them. “Have a good attitude, Josh”. “Put on your happy face”. “We do all things for the Lord, and He wants you to be happy.” I spent enough of my life around people who heavily suppress the emotions of people around them, and I no longer permit it from other adults, when I am present.&lt;/p&gt;

&lt;p&gt;When Eden would cry, I’ve seen adults turn to her and say “you’re not upset” or “don’t be upset” or “here’s a distraction”, instead of allowing her whatever is going on, attending to the environment (“oh, you have to go to the bathroom? thanks for letting me know!”), and supporting her with their own regulated nervous system.&lt;/p&gt;

&lt;p&gt;Unhealthy adults need to suppress the emotions of other people if they are unable to access their own sense of that emotion. Grief and sadness and anger is heavily suppressed in evangelical/white cultures, so those are the ones children raised by them tend to not have easy access to.&lt;/p&gt;

&lt;p&gt;I make sure Eden knows her grief and sadness and anger do not cause me trouble, and I’m happy to support her through it all.&lt;/p&gt;

&lt;p&gt;Possible word swaps:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“good job/nice work” becomes “that looked interesting/tricky” or “was that interesting to you? what was something interesting about that?”&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;shy-isnt-a-helpful-question-or-label&quot;&gt;“Shy” isn’t a helpful question or label&lt;/h2&gt;

&lt;p&gt;Sometimes an adult acts entitled to obtaining a certain reaction from Eden.&lt;/p&gt;

&lt;p&gt;Sometimes people ask me “oh, is she shy?”, while Eden is with me, pointedly not making eye contact with the question-asker, who perhaps &lt;em&gt;just&lt;/em&gt; walked up and has never shared a moment of real interaction with her in the past…&lt;/p&gt;

&lt;p&gt;They perhaps think she doesn’t understand what they’re saying, or isn’t able to comprehend our conversation.&lt;/p&gt;

&lt;p&gt;I say some version of:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;That framing makes useful conversation less accessible, rather than more. Eden knows that she doesn’t ‘need’ to ‘give’ anyone any sort of concession, just because that person thinks they’re entitled to it, nor does she need to perform for people. It’s inappropriate for an adult to demand a certain kind of interaction from a child.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I usually figure out how to be diplomatic about it, and fortunately ‘shy’ as a concept is sort of fading out of society, I think.&lt;/p&gt;

&lt;p&gt;I’ll always add something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;And &lt;em&gt;obviously&lt;/em&gt; if we don’t feel comfortable with someone, we wouldn’t try to act like they’re a trusted person because they believe in politeness, or their feelings might get hurt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, sometimes Eden pointedly refuses to even turn her face towards someone. Sometimes the person correctly infers that it’s her de-escalating the intensity of the interaction, and they take their own steps to reduce the intensity, instantly and perhaps even subconsciously.&lt;/p&gt;

&lt;p&gt;Others cannot see it, or refuse to act on it, and instead keep stepping closer and trying to get in her face, to get her to look at them and say hello or something. Or to say “thank you” as they make an evaluation of some aspect of her physical appearance.&lt;/p&gt;

&lt;p&gt;Broadly, it’s possibly appropriate to comment on thinking someone made distinctive choices in picking out an item of clothing or displayed prowess in judgment or skill. “sick rainbow shoes.”, “that thing you did looked tricky, and skillful.”&lt;/p&gt;

&lt;h3 id=&quot;what-not-to-say&quot;&gt;What not to say&lt;/h3&gt;

&lt;p&gt;I don’t like to make it sound like a child’s entire existence is already the same as an adult slaving away.&lt;/p&gt;

&lt;p&gt;References to jobs, and work, are not interesting to me, so “good job” and “nice work” are not phrases in my lexicon. “That looked interesting” and “what did you like about that?” or “did that feel tricky?”&lt;/p&gt;

&lt;p&gt;Eden is also &lt;em&gt;quite&lt;/em&gt; happy to stare at a something with intense focus. Sometimes it’s a dog, or a bug, or a person. If the person is close enough, and notices, and feels self-conscious, they might call it a &lt;em&gt;withering intensity&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It’s distinctive enough that complete strangers often commented on it, even at a really young age. I proffer it’s maybe the look of someone who’s totally focused on what they are looking at, they’re not performing ‘social softening’ of the gaze. As a toddler, she’ll turn her head to look at something as it or she passes by, in a way that is identical to when she was an infant, and I presume is motivated out of a similar-enough inner state.&lt;/p&gt;

&lt;p&gt;She’s permitted to look at something as hard as she wants, or not at all, and I perceive that some adults are unaccustomed to be looked at in such an evaluator-like, non-apologetic way, by such a young child.&lt;/p&gt;

&lt;h2 id=&quot;on-beauty&quot;&gt;On “Beauty”&lt;/h2&gt;

&lt;p&gt;I dislike the energy that some people have, when they insert themselves into me and Eden’s day to pronounce that they find her physical form appealing. It’s &lt;em&gt;very&lt;/em&gt; strange to have grown adults continuously talking about the “pleasing physical form” of a child. (settler colonialism! Seeing children as possessions/nationalism).&lt;/p&gt;

&lt;p&gt;Sometimes it’s very visible that an interlocutor has an internal values system that is coherent with white/american/western/racialized beauty norms, and that they see in Eden an attribute that seems coherent with their norms, it feels like they’re playing a role in supporting those beauty norms. Taking anyone seriously necessitates at least being able to refrain from stating objectifying statements, or trying to.&lt;/p&gt;

&lt;p&gt;Eden doesn’t like having her appearence commented upon. If you happen to notice, for instance, that her shoes are distinctive and colorful, and there’s something appreciable about the pattern of an item of clothing, and told her about it, she’ll probably brighten up and say “yeah! I think it’s cool too!” and will talk to you about it.&lt;/p&gt;

&lt;p&gt;But…. on the ‘unwanted communication’ side of things, recently someone said, in this falsetto sing-songy voice, sort of to eden, sort of to me, “Ohhh, you’re such a beautiful girl”. This was just as we arrived at their stand where they were selling some wares. When it’s white people acting entitled, I’ll usually stamp it out quickly. If one conveys the message of “doesn’t it seem strange to have strangers comment so openly, their thoughts about someone’s body?”, it usually jostles the person a little and they refrain from more comments. I do this to _privileged, entitled, european-americans, especially if their age clocks as ‘close to boomer’.&lt;/p&gt;

&lt;p&gt;This feels sensitive to write even a few paragraphs about. I want to throw a bunch of books out that talk about ‘whiteness’ or ‘supremacy thinking’. There’s a few energies still bandying about today rooted in the beliefs that supported chattel slavery, genocide, that sort of thing.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/42129163-fearing-the-black-body&quot;&gt;Fearing the Black Body&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6919721-the-history-of-white-people&quot;&gt;The History of White People&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Origins-Proslavery-Christianity-Evangelicals-Antebellum/dp/0807858773&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40887375-they-were-her-property&quot;&gt;They Were Her Property: White Women As Slaveowners in the American South&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It feels vastly under-appreciated in ‘normal’ society how total of a regime of social control chattel slavery represented, and how fundamentally and totally the dehumanization that occurred affected the mind of the oppressor, the consciousness of the classes and races, that “it” created. Often enough, this commenting on one person’s beauty is an implicit statement about the not-beauty of a different person. It’s inherently supremacist, demeaning to &lt;em&gt;everyone&lt;/em&gt; (yourself, the target of the assessment, anyone who hears the utterance) and would best be not said.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;But what would I say if I cannot comment on the body of a child???&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I know, right? What else possibly could you say? &amp;lt;/sarcasm&amp;gt;&lt;/p&gt;

&lt;p&gt;How about “hi”, or “would you like me to explain what these things are?” or “The flower patterns on your shirt indicate that whoever chose it has good taste.” or, &lt;em&gt;say nothing&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Race isn’t real. Ethnicity is. White people get angry when you call their conflict ‘inter-ethnic-group conflict’ but that’s all it is. Settler colonialism in the USA was supremacist european americans showing up and using violence to displace some, enslave others, and they used english, books, and authoritarian language to justify it, instead of simply saying&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Yep, we [european americans] like people like us, we &lt;em&gt;don’t&lt;/em&gt; like people who are not like us, and we’re willing to kill them if they don’t give us exactly what we want. or even if they do, but especially if they don’t.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s manifestly obvious when at least some streams of it reach out to touch Eden, and I don’t like it. We last walked through a weird little art fair in cheesman park, and she very quickly wanted to leave. I couldn’t figure out why at first. She just didn’t want to go in there, wanted to walk around the outskirts of where the stands were. I couldn’t figure it out, then:&lt;/p&gt;

&lt;p&gt;me: “Do you notice a lot of people looking right at you, when I’m pushing you around in the stroller”&lt;/p&gt;

&lt;p&gt;kid: “Yep”&lt;/p&gt;

&lt;p&gt;me: “Do you find it to be uncomfortable?”&lt;/p&gt;

&lt;p&gt;kid: “Yep”&lt;/p&gt;

&lt;p&gt;me: “I believe it. I find that sort of eye contact to be uncomfortable &lt;em&gt;myself&lt;/em&gt; sometimes, and I’m way bigger than you, and people treat me very differently than they treat you. I’ll think about how to reduce their staring at you.”&lt;/p&gt;

&lt;p&gt;I usually wear a big floppy hat and sunglasses, or turn my head down and away from people as I walk by. I make vastly less eye contact with people than I less did, generally I’m happy to pass in a sorta invisible way. BUT when I’m mixing this with walking Eden around by stroller, if people can tell that by the brim of my hat &lt;em&gt;I cannot see if they’re staring straight at eden&lt;/em&gt; they get &lt;em&gt;much&lt;/em&gt; more open with staring at her, compared to if they look at her, look at me, and see me staring back at them. There’s less staring at eden after that.&lt;/p&gt;

&lt;p&gt;It’s all very odious to me.&lt;/p&gt;

&lt;h2 id=&quot;words-i-do-not-use&quot;&gt;Words I do not use&lt;/h2&gt;

&lt;p&gt;Here’s a few words I have no use for:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;obey, obedience, respect, authority, comply, compliant&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I was raised by modern day settler colonialists, fully intent on replicating their view of the world on the consciousness of “their” children. My parents, &lt;em&gt;to this day&lt;/em&gt; are &lt;em&gt;obsessed&lt;/em&gt; with the notion of children being compliant with them. My dad gets violent if he smells something that feels like non-compliance, from a child &lt;em&gt;or&lt;/em&gt; an adult. His entitlement is perceivable from a mile away. (a long career in the military doesn’t leave anyone &lt;em&gt;more&lt;/em&gt; in touch with their humanity or the humanity of others.)&lt;/p&gt;

&lt;p&gt;That’s the language of an authoritative, domineering, person, in european american settler colonialism, this is the ‘masculine’ role. My mother leans into the ‘feminine’ side of religious authoritarianism/settler colonialism. being a good ‘domestic servant’, cheerful and chipper about playing the role she sees for herself, but she feels entitled to control the thought lives of ‘her’ children.&lt;/p&gt;

&lt;p&gt;As children, we all got attacked in various ways by our parents, who would pour messages like “you are fundamentally bad” and “every aspect of your conciousness is being picked apart by sky daddy, who hates you”.&lt;/p&gt;

&lt;p&gt;To interact with her is to be silently judged, and to be rendered unknown and unknownable, while she points a fake cheerfulness and a &lt;em&gt;utterly real&lt;/em&gt; withdrawal and avoidance from that which she doesn’t approve of. Her words are full of “should” and “should not” and “if you don’t do what ~I~ sky daddy says, you’ll be tortured forever, alone, far from your loved ones”.&lt;/p&gt;

&lt;p&gt;A few other words I don’t use:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“good job/nice work” &amp;gt; jobs/work reference capitalism, she’ll have enough of that later in her life. I want her to do things that are &lt;em&gt;interesting&lt;/em&gt; to her, for no other reason than &lt;em&gt;it’s interesting to her&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;“Go higher” or “try to get to the top”. I am &lt;em&gt;thrilled&lt;/em&gt; that Eden knows her own physical capacities very well, and never pushes into territory while climbing or running that feels unsafe to her.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where someone else might say “good job”, upon seeing Eden do something she’s proud of (which happens &lt;em&gt;all the time&lt;/em&gt;), I say “oooh, that looked tricky. Did it feel tricky? Was it interesting?”&lt;/p&gt;

&lt;h2 id=&quot;words-i-do-use&quot;&gt;Words I Do Use&lt;/h2&gt;

&lt;p&gt;Evangelical settler colonialists have in their toolset the ‘weaponization of shame and guilt”, and want you/themselves to strive strive strive, for a modicum of affection. Soooo the antitode to that is some words I &lt;em&gt;do&lt;/em&gt; use that are explicitly guilt/shame dispelling, in addition to being generally affirmative of someone’s humanity:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“I am pleased to know you”.&lt;/li&gt;
  &lt;li&gt;“it’s interesting to watch/observe the things you do/how you exist.”&lt;/li&gt;
  &lt;li&gt;“it’s fun to see how interested you are in things”&lt;/li&gt;
  &lt;li&gt;“i’m pleased to share with you the times that you are upset”&lt;/li&gt;
  &lt;li&gt;“I enjoy your company”.&lt;/li&gt;
  &lt;li&gt;
    &lt;when Eden=&quot;&quot; is=&quot;&quot; feeling=&quot;&quot; anger=&quot;&quot; or=&quot;&quot; sadness=&quot;&quot;&gt; &quot;I am pleased to spend time with you _right now_! I am pleased and unpurturbed to witness and experience your tears, your anger&quot;
&lt;/when&gt;
  &lt;/li&gt;
  &lt;li&gt;“It is fun to watch your skills and competencies grow”. They i’ll name something specific about her biking, walking, smooth/precise movement, jumping, flips, pulling, recognizing landmarks/objects/people/places, running, playing, drawing, movie-watching, sleeping, expelling metabolic byproduct.&lt;/li&gt;
  &lt;li&gt;“was that interesting to you?”&lt;/li&gt;
  &lt;li&gt;“I appreciate how quickly and forcefully you oppose things you do not want.”&lt;/li&gt;
  &lt;li&gt;“how did you come up with that idea?”&lt;/li&gt;
  &lt;li&gt;“was that tricky?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s so much more. I’ll make it it’s own blog post at some point.&lt;/p&gt;

&lt;h2 id=&quot;misc-resources&quot;&gt;Misc Resources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://twitter.com/TCSparents/status/1779173033955238012&quot;&gt;Taking Children Seriously (twitter account)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/author/show/1792210.John_C_Holt&quot;&gt;John Holt&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/author/list/36507.Ivan_Illich&quot;&gt;Ivan Illych&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:entitlement&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;It’s worth noting when there’s an energy of entitlement operating, because to not name it is to slip into a weaker frame. “What other way do I have of making my child go to school than heaping punishments on them?” belies an &lt;em&gt;entitlement&lt;/em&gt;. Entitlement sounds like: “it seems appropriate to me to dominate someone in this situation, so I’m simply looking for the easiest-way-for-both-of-us to accomplish that domination. I’m willing to do a light touch if they make it easy enough.”&lt;/p&gt;

      &lt;p&gt;This book is &lt;a href=&quot;https://www.goodreads.com/en/book/show/30066446&quot;&gt;Legal Systems Very Different from Ours&lt;/a&gt;. &lt;a href=&quot;http://www.daviddfriedman.com/Legal%20Systems/LegalSystemsContents.htm&quot;&gt;Also available for free, chapter by chapter, on the author’s website&lt;/a&gt;&lt;sup id=&quot;fnref:publish&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:publish&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. &lt;a href=&quot;#fnref:entitlement&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:publish&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Would you believe the author uses different ‘intellectual property’ norms than the american publishing system? &lt;a href=&quot;#fnref:publish&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Robert Moses - The Most Important Person You&apos;ve Never Heard Of</title>
   <link href="https://josh.works/robert-moses"/>
   <updated>2024-05-24T13:00:00+00:00</updated>
   <id>https://josh.works/robert-moses</id>
   <content type="html">&lt;p&gt;&lt;em&gt;this was originally posted a few years ago, republishing as a blog post as I organize an increasingly large number of links and resources here.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s a big dumping ground for some resources on robert moses I’ve got floating around.&lt;/p&gt;

&lt;p&gt;Obviously, this has grown to an unwieldy sizy and less would be asked of you if I organized it a bit better.&lt;/p&gt;

&lt;p&gt;Here’s some starting points, to start conceptualizing his reach and influence, and to start appreciating how he obviously set systems up around himself, and people, which faithfully reproduced &lt;em&gt;his very specific way of being&lt;/em&gt; into the world around him.&lt;/p&gt;

&lt;p&gt;What is currently underappreciated, in the narrative of Robert Moses, is a point that I feel like I can maybe express semi-concisely now, but has been coalescing in my mind for a while. There’s a few potential kinds of poeple that might find themselves reading this, so I’ll state the same concept at least twice, or have to define some terms, before feeling like I’ve landed it. Relates to appreciating phenomina that are operating &lt;em&gt;today&lt;/em&gt;, tightly linked to recent history.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;“Urban Renewal” is a real, namable, visible process that is plainly visible within every single american city. Not only are the evidences of it clear, but the evidence is not hidden. Nearly every american municipality has a body named “{LOCAL JURISDICTION} Renewal Authority”. Various similar titles are “Urban Renewal Authority”. There is both a Golden Urban Renewal Authority (still running today) and a Denver Urban Renewal Authority. Prior to Colorado, I lived in Maryland. Here’s &lt;a href=&quot;https://www.montgomerycountymd.gov/DGS/OPD/DevelopmentProjects.html&quot;&gt;Montgomery County ‘office of planning and development’ ‘redevelopment and revitalization efforts’&lt;/a&gt;. [^urban_renewal] More of the same for Prince George’s County, MD:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;images/pgco_urban_renewal.jpg&quot; alt=&quot;urban-renewal-pgco&quot; /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;“Urban Renewal” is a propagandistic phrase, those who were getting it done to them understood it to be a &lt;em&gt;cleansing&lt;/em&gt;, a displacement, a relocation. All/enough parties understood it to be what it was. The people experiencing the ‘renewal’ understood it to be what it really was - &lt;em&gt;cleansing&lt;/em&gt;. It involves efforts of one group to define, confine, and relocate, persons that can be ‘pushed’ into another group.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Urban Renewal is virtually synonymous with ethnic cleansing, and &lt;em&gt;needs to be treated as such&lt;/em&gt;. &lt;a href=&quot;https://www.goodreads.com/book/show/2023854.The_Slaughter_of_Cities&quot;&gt;The Slaughter of Cities: Urban Renewal As Ethnic Cleansing&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Robert Moses &lt;em&gt;invented&lt;/em&gt; the social tool “urban renewal” as his “title 1” powers. He created systems around himself to duplicate his own thinking into the world around him. His was the godfather of the Federal Highway Administration, and pioneered ‘innovative’ ways municipal governments could work with federal governments, and how various parties could ‘drive stakes’ and ‘whipsaw’ political interests into whatever one wanted.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To appreciate Robert Moses and to appreciate the scale of the urban renewal programs (always aimed at maintaining the supremacy of some) is to both want to die at the scale of devestation, to weep over the ongoing harm this causes everyone &lt;em&gt;today&lt;/em&gt;, and will cause &lt;em&gt;tomorrow&lt;/em&gt;, and it’s to appreciate a way out, perhaps. A post-robert-moses world.&lt;/p&gt;

&lt;p&gt;God, I want to get there, out of his world. Highways? Parkways? Signal-controlled intersections? controlled-access highways? setbacks? residential zoning and commercial zoning and strip mall zoning? Parking minimums? General Motors and Ford? Robert. Bobby Moses. RM. Its your boy.&lt;/p&gt;

&lt;p&gt;(When you read the book, you’ll learn that when we was doing all these things for NYC, the country was so small that whatever NYC did eventually everyone else wanted to do the same. sorta still the same. RM was synonymous with “NYC infrastructure” and, in fact, New York infrastructure and beyond. HIS dam, the Robert Moses Power Dam, is the dam of niagra falls. 😳)&lt;/p&gt;

&lt;p&gt;&amp;lt;photo from powerbroker index, ‘urban renewal’, ‘title 1’&amp;gt;&lt;/p&gt;

&lt;h1 id=&quot;a-review-for-the-power-broker&quot;&gt;A review for &lt;em&gt;The Power Broker&lt;/em&gt;.&lt;/h1&gt;

&lt;p&gt;In a moment, I’m going to quote extensively from a book review left on the Goodreads listing for &lt;em&gt;The Power Broker&lt;/em&gt;. &lt;a href=&quot;https://www.goodreads.com/review/show/6989911?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;Here’s a link&lt;/a&gt; to the review itself, directly, if you’d like.&lt;/p&gt;

&lt;p&gt;I will never be able to write as well as this reviewer, and I believe so much of what they say so accurately conveys some of the experiences I had, so I’m quoting it in full below. I’ll add linebreaks, and emphasize some sections:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[&lt;em&gt;The Power Broker: Robert Moses and the Fall of New York&lt;/em&gt; by Robert Caro] is definitely the greatest book that I have ever read.&lt;/p&gt;

  &lt;p&gt;Midway through adolescence, I began wondering a bit which life event would finally make me feel like an adult. Of course I had the usual teenaged hypotheses, and acted accordingly to test some of them out. Getting drunk? Having sex? Driving a car? Going to college? None of these things did make me feel grownup; in many instances, their effect was the opposite.&lt;/p&gt;

  &lt;p&gt;I had a brief thrilling moment of maturity when I voted for the first time at age eighteen, but election returns in the years since (in particular the 2004 presidential race) dulled the sophisticated glamour of the ballot box, forcing me to admit that an ability to vote does not indicate the presence of intellectual maturity…&lt;/p&gt;

  &lt;p&gt;The first time I got a job with benefits and sat through a presentation explaining the HMO plan, life insurance, and “401K,” I did feel old in a certain kind of way, but there was a sense of the absurd to it, as if I were in drag as an adult, staggering around in my mother’s too-big high heels and smudgy lipstick in a silly effort to look like a grown woman.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;For the past few years I’ve had the sense of wearing an oversized grownup life that wasn’t actually mine, while that magical rite of passage into adulthood continued to elude me&lt;/strong&gt;. Maybe when I have children things will click into place, I’ve mused, listening to Talking Heads with one ear and sort of doubting it…. Part of this might be generational; if thirty is the new twenty, it’s no wonder that I get that Lost Boys feeling, and shrug confusedly when overnight company makes fun of my teddy bear.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;I’m pleased to announce that thanks to the glory of Robert Caro, this stage is basically behind me. Having finally finished &lt;em&gt;The Power Broker&lt;/em&gt;, I feel much more like a grownup, and believe it or not, I’m pretty into that.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;When I was a little kid, I felt that the adults around me had a thick, rich, complicated understanding of the way the world worked. They knew things – facts, history – and they understood processes and people and the way something like a bond measure or a public authority worked. It was this understanding – which they had, and I didn’t – that made me a child, and them adults. Grownups had an infrastructure of information, truth, and insight that I lacked.&lt;/p&gt;

  &lt;p&gt;As I grew older, I was dismayed to discover that grownups really didn’t know a fraction of what I gave them credit for, and that most of the people ostensibly running the world had no clue how it operated, and my intense disillusionment caused me to lose sight of that adulthood theory for awhile.&lt;/p&gt;

  &lt;p&gt;But reading this book made me feel like a grownup because it helped me to understand the way the world works as I never had before.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;This book is about power.&lt;/strong&gt; It is about politics. It is a history of New York City and New York State. It is an explanation of how public works projects are built. It is about money: public money, private money, and the vast and nasty grey areas where they overlap. This book is about democracy, and the lack thereof. It is about social policy, and economics, and our government, and the press. This book is about urban planning, housing, transportation, and about how a few individuals’ decisions can affect the lives of the masses. It helped explain traffic in the park, and the projects in Brownsville, and a billion other mysteries of New York City life that I’d wondered about.&lt;/p&gt;

  &lt;p&gt;&lt;em&gt;The Power Broker&lt;/em&gt; is about ideals, talent, and institutional racism. It is about inequality. &lt;strong&gt;It is about genius. It is about hubris. It is the best goddamn book I have ever read in my entire life, hands down, seriously.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;Please do not think that it took me five months to read this book because it was dense or slow! This was a savoring, rather than a trudging, situation. Robert Caro is an incredibly engaging writer. &lt;strong&gt;One thing that happened to me early on from reading this was that I lost my taste for trashy celebrity gossip. Who CARES about Britney’s breakdown or, for that matter, Spitzer’s prostitute peccadilloes when I could be reading about the shocking intricacies of Robert Moses’ 1925 legislative consolidation and reorganization of New York State’s administrative structure?&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;This book gave me chills – CHILLS! – on nearly every page with descriptions of arcane political maneuvering and fiscal policy so riveting that I lost my previous interest in reading about sex and drugs. Let’s face it: sex and drugs are pretty boring. Political graft, mechanics of influence, the workings of government: now that’s the hot stuff, when it’s presented in an accessible and digestible form.&lt;/strong&gt; Nothing in the world is more fascinating than power, and Robert Caro writes about power better than anyone I’ve come across. &lt;strong&gt;There are no dry chapters in this book; there’s barely a dull page. It is infinitely more readable than &lt;em&gt;Us Magazine&lt;/em&gt;, and not much more difficult.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;Of course &lt;em&gt;The Power Broker&lt;/em&gt; is many things, among them a biography. While any one portrait of New York power icons from Al Smith to Nelson Rockefeller is more than worth the price of admission, this book is primarily about Robert Moses. Caro understands and explains the relationship between individual personalities and systems. &lt;strong&gt;One of his main theses is that Moses achieved the unchecked and unparalleled levels of power he did because he figured out how to reshape or create systems around himself.&lt;/strong&gt; The Triborough Bridge and Tunnel Authority would not have existed without Robert Moses, and Robert Moses would not have been what he was, or accomplished what he did, without the brilliance he had for shaping the very structure of government into conduits for his own purposes. To explain this, Caro needs to convey a profound understanding not only of how these systems worked, but of who this man was. He does so, and the result goes beyond Shakespearean: it is Epic. &lt;em&gt;The Power Broker&lt;/em&gt; is the story George Lucas was trying to tell about Anakin Skywalker’s transformation to Darth Vader, only George Lucas is no Robert Caro, and &lt;em&gt;The Power Broker&lt;/em&gt; succeeds wildly in the places where Star Wars was just a hack job (of course, Caro wasn’t handicapped by Hadyn Christensen, which does indirectly raise the burning question: WHO’S OPTIONED THIS???).&lt;/p&gt;

  &lt;p&gt;Robert Moses was an incredible genius. He was also an incredible asshole. &lt;strong&gt;Robert Moses was probably one of the biggest assholes who ever lived, or at least, who ever got free reign to redesign a major modern American city to his fancy.&lt;/strong&gt; One of the innumerable triumphs of this book is that while it certainly does demonize Moses to a great extent, it doesn’t seem to do so unjustifiably, and it never strips him of his humanity. &lt;strong&gt;Caro conveys a deep respect and empathy for his brilliant subject, even as he also expresses horror, disgust, and rage as he describes Moses’ forty-four-year unelected reign of power.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;I know it’s a mistake to do this review right after finishing, and I’m a bit grossed out that I could write something so gushingly uncritical; that’s unlike me, and it’s possible that later I’ll think of some complaints… I might not, though. I really do think that this is the best book I’ve ever read, and I wish there were some way that I could adopt Robert and Ina Caro as my grandparents, and that I could go over to their house for Sunday dinner and then take walks together in Central Park. Right at this moment I believe that Robert Caro is the smartest person in the world, and I’m not in the least bit resentful that I’m going to have to devote the rest of my life to reading his LBJ doorstoppers; in fact, I welcome it (though I’m not in a huge hurry to start).&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Oh, I’m sure this book has flaws like any other. My main problem with it was that it was too short.&lt;/strong&gt; Caro did not go into nearly enough detail about a large number of issues that I’d expected to learn about. For instance, there was little more than offhand mentions of Moses’ upstate projects; I was surprised that there was virtually nothing in here about Niagara Falls. There was also almost nothing on Shea Stadium, and while they did keep coming up, I never felt adequately informed about Moses’ plans for the three crosstown expressways, and the successful opposition to them. How real a prospect were these, and what did the public fight look like? I wasn’t so clear on that. While it’s possible that Caro had nothing interesting to say about these projects, it’s more likely that he had to draw the line somewhere, and 1162 pages was that place. I mean, otherwise he probably could’ve gone on forever…. There’s a lot to say.&lt;/p&gt;

  &lt;p&gt;I definitely recommend that anyone who reads this book do as I did, and divide it with an exacto knife into four duct-tape bound commuter volumes. It’s fun to draw your own Power Broker covers on your personalized editions, and a good excuse to pull out those crayons which, as a bona fide adult, you so rarely use!&lt;/p&gt;

  &lt;p&gt;It occurs to me that I’ve babbled on forever but still haven’t explained at all what this book is about. If you think you might want to read it but you’re not sure, check out this article by Robert Caro:
&lt;a href=&quot;https://web.archive.org/web/20080804034219/http://www.robertmosesnyc.com/NYer.html&quot;&gt;Robert Moses: The Man Who Built New York&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;It has those stupid New Yorker dots, which the book thankfully does not, but otherwise is kind of like a miniaturized version of &lt;em&gt;The Power Broker&lt;/em&gt; and gives a much better sense than I just did of what it’s all about.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;an-interview-with-robert-caro&quot;&gt;An Interview with Robert Caro&lt;/h1&gt;

&lt;p&gt;Here’s a 1h45m Audible “short” with Robert Caro, the man who wrote &lt;em&gt;The Power Broker&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.audible.com/pd/On-Power-Audiobook/B06XNKVH16&quot;&gt;On Power, by Robert Caro (Audible)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s the audible summary:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;From two-time Pulitzer Prize winner and two-time National Book Award winner Robert A. Caro: a short, penetrating reflection on the evolution and workings of political power - for good and for ill.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;In &lt;em&gt;On Power&lt;/em&gt;, an Audible exclusive, the legendary historian Robert A. Caro reflects on what drew him as a young journalist to study political power and what his half century of reporting on New York City urban planner Robert Moses and President Lyndon Johnson has taught him about the inner workings of government and democracy.&lt;/p&gt;

  &lt;p&gt;Adapted by the author from two recent speeches and filled with thoughtful lessons and personal moments, &lt;em&gt;On Power&lt;/em&gt; goes behind the scenes in the author’s decades-long quest to understand how power works, often in ways he could have never imagined.&lt;/p&gt;

  &lt;p&gt;Listening to &lt;em&gt;On Power&lt;/em&gt;, narrated with emotion and humor by Caro in his unmistakable New York accent, is like having a private audience with the author often hailed as our greatest living historian. Longtime fans of Caro’s books, as well as those seeking a more personal introduction to his life and work, will be treated to his trademark wit and revelatory insight.&lt;/p&gt;

  &lt;p&gt;But more than anything, &lt;em&gt;On Power&lt;/em&gt; is a timely reminder for those who want to better understand how power and government work.&lt;/p&gt;

  &lt;p&gt;In Caro’s words:&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;Why political power? Because it shapes all of our lives. It shapes your life in ways that you might never think about. Every time a young man goes to college on a federal education bill passed by Lyndon Johnson, that’s political power. And so is a young man dying in Vietnam. Every time an elderly person is able to afford an MRI, that’s Medicare. That’s political power. It affects your life in all sorts of ways. My books are an attempt to explain this power…. Because the more America understands about political power, the better informed our votes will be, and then, hopefully, the better our democracy should be.&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;a-sense-of-scale---the-cross-bronx-expressway&quot;&gt;A Sense of Scale - The Cross-Bronx Expressway&lt;/h1&gt;

&lt;p&gt;What do you think of when someone says “The Bronx”?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Everything you think about The Bronx, and indeed New York City, and the weight NYC has had on global culture&lt;/em&gt; is shaped by Robert Moses.&lt;/p&gt;

&lt;p&gt;From &lt;a href=&quot;https://blogs.baruch.cuny.edu/his3460fall2013/?p=217&quot;&gt;Robert Moses and the Cross-Bronx Expressway&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s the Cross-Bronx Expressway:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2021/cross-bronx-expw.jpg&quot; alt=&quot;what-he-did&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Another view of it: It crosses that elevated bridge on the right, and continues to the bottom left of the picture:
&lt;img src=&quot;/images_2021/Aerial_view_of_the_Bronx_Harlem_River_Harlem_Hudson_River_George_Washington_Bridge_2008-05-101.jpg&quot; alt=&quot;what-he-did&quot; /&gt;&lt;/p&gt;

&lt;p&gt;What do you think it looked like to cleave such a deep cut through a heavily built-up area?
&lt;img src=&quot;/images_2021/home_southbronx.jpg&quot; alt=&quot;what-he-did&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Robert Moses was considered the most “powerful modern builder of all time”. He was know especially for the building of the Cross-Bronx Expressway.&lt;/p&gt;

  &lt;p&gt;This highway connected New Jersey, North Manhattan, South Bronx and ended up in in Long Island through wither either the Throgs-Neck Bridge or the Whitestone Bridge. &lt;strong&gt;The building of this new highway system meant that over 60,000 residents would have to be uprooted and relocated to new areas&lt;/strong&gt;. Most of these people lived in South Bronx. &lt;strong&gt;Moses led the white exodus out of the Bronx. Most of the white residents moved to either Westchester or Northern Bronx areas&lt;/strong&gt; and others moved to small suburban houses being built around the Cross Bronx Expressway in New Jersey.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;The poorer residents who where given a meager $200 per room compensation were forced to move out and settle in new high-rise apartment buildings that were being built. These new behemoths had could include up to 1700 apartments per building.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;As a result of this mass relocation the economy of the Bronx suffered immensely. The South Bronx area (mostly Black and Puerto Rican) lost over 600,000 manufacturing jobs. Youth unemployment rose to 40 percent and in some areas as high as 80 percent.&lt;/p&gt;

  &lt;p&gt;The most devastating affect of the Cross Bronx Expressway took place when the newly built apartment buildings passed into the hands of slumlords. &lt;strong&gt;These people used many different tactics such as demanding more money when they shut off heat and water supply to the tenants.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;Another tactic that the slumlords used proved to be the most effective and profitable for them. &lt;strong&gt;They would find junkies and rent-a-thugs to set fire to abandoned apartments and then they would collect the insurance polices from the city. The slumlords profited greatly from this enterprise as they collected as much as 150,000 dollars per fire.&lt;/strong&gt; The insurance companies didn’t really mind in the begging as they were leasing out many new insurance policies, but after a time even they realized that their costs were beginning to get to high.&lt;/p&gt;

  &lt;p&gt;In the end as insurance companies refused to provide insurance policies to cover certain buildings in South Bronx and the fires continued to spread, whole city blocks became completely abandoned and opened up a place for crime and gangs to fill the void.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;/images_2021/snippet-of-xpw.jpg&quot; alt=&quot;he ruined lives&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;chapter-36-the-meat-ax&quot;&gt;Chapter 36: The Meat Ax&lt;/h1&gt;

&lt;p&gt;I’m copy/pasting the summary of Chapter 36: The Meat Ax from &lt;a href=&quot;https://somuchtoread.wordpress.com/the-power-broker/&quot;&gt;somuchtoread&lt;/a&gt;. That website doesn’t have deep-linking to the page, so it’s easier to stash notes here:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Chapter 36: The Meat Ax&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Caro is firing on all cylinders now, and it turns out that “The Meat Ax” is how he describes Moses’ approach to building roads.  In a way, this chapter is an introduction to the following two brilliant chapters, “One Mile” and “One Mile: Afterward.” The title of the chapter is referring to how  Moses once described the challenge of building in “an overbuilt metropolis,” noting the only way to achieve success is to “hack your way with a meat ax.” This is horrifying language to Caro and he intends to show how Moses’ meat ax destroyed homes and families and neighborhoods.&lt;/p&gt;

  &lt;p&gt;Caro writes that “it is no accident that most of the world’s great roads–ancient and modern alike–had been associated with totalitarian regimes.” The reference is obvious to anyone who has read 846 pages of this book. Moses, “had a dictator’s powers”, and was able to cut and carve up communities to work his will on the people because of his power. He, like others in command of a totalitarian regime, was able to make a decision because his mind, and his mind alone, had been persuaded.&lt;/p&gt;

  &lt;p&gt;The title of this section of the book is “The Lust for Power,” and this chapter fits nicely into that theme. Caro points out that Moses enjoyed working his will on a neighborhood–“he loved to swing [the meat ax].” It’s a damning charge: Moses isn’t someone who wants to build a project because the project itself is good, &lt;strong&gt;he wants to build the project because it strengthens his own power and feeds his own ego.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;At times, I’m still in awe of Moses. Believe me, Caro makes it tough to like the guy. But he is pressing forward and paying attention to infrastructure. Neighborhood groups be damned. In the Cincinnati bridge example we’ve already considered, a true Moses-like figure would run roughshod over the buildings and houses in Covington that are adding money and time and opposition to the project. Our inability to be like Moses is delaying by years a bridge that is imperative. Moses always claimed that “succeeding generations would be grateful.” What are we going to say generations from now if we never build that bridge because we’re worried about a few houses? Wouldn’t we be grateful if we had our Moses once in a while?&lt;/p&gt;

  &lt;p&gt;I guess it depends on whether you live in those houses or not. So much to think about with this book.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;gowanus&quot;&gt;Gowanus&lt;/h1&gt;

&lt;p&gt;Gowanus is a neighborhood that is featured in &lt;em&gt;The Power Broker&lt;/em&gt;, as an example of how Robert Moses would use highways to destroy neighborhoods.&lt;/p&gt;

&lt;p&gt;I’ve listened to the &lt;a href=&quot;https://www.nytimes.com/2020/07/23/podcasts/nice-white-parents-serial.html&quot;&gt;Nice White Parents&lt;/a&gt; podcast series, which I remember ending, then “the next episode” the host was like “wow y’all after I finished up reporting this crazy cycle started up again and I watched in rapt awe as it played out again lets follow along”.&lt;/p&gt;

&lt;p&gt;I wasn’t surprised, because I’d read &lt;em&gt;The Power Broker&lt;/em&gt; and followed along in rapt fascination. She basically expressed shock watching the effects of &lt;em&gt;de facto&lt;/em&gt; segregation playing out, again.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;de facto&lt;/em&gt; segregation, not &lt;em&gt;de jure&lt;/em&gt;&lt;sup id=&quot;fnref:defacto&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:defacto&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Anyway, it was the ‘school of international studies’ for a time. The school in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Nice White Parents&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;From &lt;a href=&quot;https://medium.com/re-form/in-the-footsteps-of-robert-moses-2780ee00a648&quot;&gt;a great story about Robert Moses&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The construction of the Gowanus Parkway, laying a concrete slab on top of lively, bustling Third Avenue, buried the avenue in shadow, and when the parkway was completed, the avenue was cast forever into darkness, and gloom, and its bustle and life were forever gone.&lt;/p&gt;

  &lt;p&gt;And through that shadow, down on the ten-lane surface road beneath the parkway, rumbled (from before dawn until after dark after the opening of Brooklyn–Battery Tunnel flooded the area with freight traffic) regiments, brigades, divisions of huge tractor-trailer trucks, engines gunning and backfiring, horns blasting, brakes screeching, so that a tape recording of Third Avenue at midday could have been used as the soundtrack for a movie of a George Patton tank column.&lt;/p&gt;

  &lt;p&gt;And from above, from the parkway itself, came the continual surging, dull, surf-like roar, punctuated, of course, by more backfires and blasts and screeches, of the cars passing overhead.&lt;/p&gt;

  &lt;p&gt;Once Third Avenue had been friendly. Now it was frightening. (…) Once the avenue had been a place for people; Robert Moses had made it a place for cars.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Denver, Colorado, has it’s own version of Gowanus and the International School like the Nice White Parents pod, the Denver Center for International Studies. It’s right next to a HUGE 5-line one-way insanely bad road.&lt;/p&gt;

&lt;p&gt;Everything around me is ruled by the systems Robert Moses set up. It hurts to behold.&lt;/p&gt;

&lt;h1 id=&quot;misc-related-resources&quot;&gt;Misc Related Resources&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://mobile.twitter.com/josh_works/status/1344145495501893638&quot;&gt;Twitter convo between me and Matt Swanson about this book&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://lancemartin.substack.com/p/the-power-broker&quot;&gt;Robert Moses and re-making the political machine (substack)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.bookrags.com/studyguide-the-power-broker/#gsc.tab=0&quot;&gt;Chapter-by-chapter summary of &lt;em&gt;The Power Broker&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20141123060915/https://somuchtoread.wordpress.com/the-power-broker/&quot;&gt;somuchtoread.com section-by-section read-through (original site broke, now links to wayback machine copy)&lt;/a&gt;. Follow the link, scroll down the website to the author’s summations of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Chapters 37 and 38: One Mile and One Mile Afterward&lt;/code&gt;. Or the section on the chapter “The Meat Ax”, ch 36.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20080510203822/http://www.robertmosesnyc.com/beware.html&quot;&gt;Beware of the Robert Moses Revisionists&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20130116164002/http://www.robertmosesnyc.com/NYer.html&quot;&gt;The City-Shaper (by Robert Caro!)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://blogs.baruch.cuny.edu/his3460fall2013/?p=217&quot;&gt;Robert Moses and the Cross-Bronx Expressway&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://willemharmsen.com/notes/the-power-broker/&quot;&gt;The Power Broker by Robert Caro: Summary &amp;amp; Notes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nateliason.com/notes/the-power-broker&quot;&gt;The Power Broker notes (nateliason.com)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://medium.com/re-form/in-the-footsteps-of-robert-moses-2780ee00a648&quot;&gt;In the Footsteps of Robert Moses: Roadtripping across the bridges, highways, and parks of America’s most controversial urban planner&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://denverurbanism.com/2017/08/the-history-of-denvers-streetcars-and-their-routes.html#&quot;&gt;The History of Denver’s Streetcars and Their Routes&lt;/a&gt; Robert Moses hated the kinds of people who used street cars and trains for travel, so he hated their trains, easily managed to run the train companies out of business. Look at what Denver could have had, but for Robert Moses and supremacy thinking. The reason Denver is currently a car-dominated hell-hole is… Robert Moses.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;various-shorter-than-the-book-resources&quot;&gt;Various shorter-than-the-book resources&lt;/h1&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://youtu.be/NenDzgLTxEU?si=GXz3aaFjanHjppVN&quot;&gt;22 minute modern documentary about Robert Moses on Youtube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://youtu.be/OKp-8I6q1xM?si=dAUlrFED3YopYIfQ&quot;&gt;a 25 minute ‘comedy show’, episode titled “I Won’t Go”, youtube&lt;/a&gt; about an entire municipality and police force evicting an old lady from her house, and her various ways of trying to remain in her own house. Episode ends with her pointing out to everyone where her house &lt;em&gt;used&lt;/em&gt; to be, under what was then turned into an approach road for one of Robert Moses’ bridges.&lt;/p&gt;

&lt;p&gt;👉 Motherless Brooklyn, 2019 movie/crime-drama, features the devastation experienced in a certain neighborhood experiencing Robert Moses-inspired ethnic cleansing. It was originally a book, Edward Norton turned it into a movie, and he also played a leading role. I didn’t realize he was obsessed with &lt;em&gt;The Power Broker&lt;/em&gt; - I sorta stumbled into the movie, and was shocked when I realized the opening scene of the movie is the exact same as the opening scene of &lt;em&gt;The Power Broker&lt;/em&gt;. (&lt;a href=&quot;https://en.wikipedia.org/wiki/Motherless_Brooklyn&quot;&gt;wikipedia&lt;/a&gt;). The rest of the movie is excellent, even if only to appreciate yet another lense through which Robert Moses’ influence was being experienced.&lt;/p&gt;

&lt;h2 id=&quot;-1-hour-vimeo-documentary-about-robert-moses&quot;&gt;👉 1-hour Vimeo documentary about Robert Moses&lt;/h2&gt;

&lt;p&gt;I &lt;em&gt;just&lt;/em&gt; found this link. It’s the first time I’ve seen so much footage of Moses himself talking, and his acolytes talking about him.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://vimeo.com/340060890&quot;&gt;THE WORLD THAT MOSES BUILT (vimeo)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The reflexive love so many people had of his high modernism/authoritarianism/supremacy is on full display.&lt;/p&gt;

&lt;h1 id=&quot;appreciate-the-kind-of-person-that-could-be-responsible-for-the-henry-hudson-parkway&quot;&gt;Appreciate the kind of person that could be responsible for the Henry Hudson Parkway&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;/images/hh_parkway.jpg&quot; alt=&quot;henry hudson parkway&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The person single handily responsible for building that highway is powerful indeed. This person built many other highways, and displaced about 250,000 people, almost completely comprised of ethnic groups Moses considered undesirable.&lt;/p&gt;

&lt;p&gt;Read what is said about the author of Robert Moses’ incredible biography:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;As a reporter for Newsday in the early 1960s, Caro wrote a long series about why a proposed bridge across Long Island Sound from Rye to Oyster Bay, championed by Robert Moses, would have been inadvisable. It would have required piers so large as to disrupt tidal flows in the sound, among other problems. Caro believed that his work had influenced even the state’s powerful governor Nelson Rockefeller to reconsider the idea, until he saw the state’s Assembly vote overwhelmingly to pass a preliminary measure for the bridge.&lt;/p&gt;

  &lt;p&gt;“That was one of the transformational moments of my life,” Caro said years later. It led him to think about Moses for the first time. “I got in the car and drove home to Long Island, and I kept thinking to myself: ‘Everything you’ve been doing is baloney. You’ve been writing under the belief that power in a democracy comes from the ballot box. But here’s a guy who has never been elected to anything, who has enough power to turn the entire state around, and you don’t have the slightest idea how he got it.’”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This biography is long. If you’re like me and you’re thrilled to find a long book that you’ll love, you’ll be happy to know his biography is almost as long as all of the harry potter book series.&lt;/p&gt;

&lt;h1 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h1&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:defacto&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;old legal texts like to use magical words with special meaning. “de facto” means “the express written goal of the act” while “de jure” means “it just sorta happened as a byproduct”, and some of the ‘american narrative’ relies on structural support from the projection that ‘segregation’ was a ‘byproduct’ of something else going on at the time. ‘de facto’ means ‘nope, the thing you’re calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;byproduct segregation&lt;/code&gt; was actually the point and everyone at the time knew it’.&lt;/p&gt;

      &lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/32191706-the-color-of-law&quot;&gt;The Color of Law: A Forgotten History of How Our Government Segregated America&lt;/a&gt; gets into it more. &lt;a href=&quot;#fnref:defacto&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Jaywalking: What, So What, What To Do</title>
   <link href="https://josh.works/jaywalking"/>
   <updated>2024-05-24T13:00:00+00:00</updated>
   <id>https://josh.works/jaywalking</id>
   <content type="html">&lt;h2 id=&quot;what-is-jaywalking&quot;&gt;What Is “Jaywalking”&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;authors note: This feels very draft-y. There’s two distinct perspectives I note in my mind, as I write this. Some people might “believe in jaywalking” and view non-car-users as an underclass, &lt;strong&gt;and act in such a way that makes this belief manifestly obvious&lt;/strong&gt;. Other people maybe know something feels off about it ‘being illegal’ to walk across a street, and might ‘simply’ be wondering why American streets ‘feel so dangerous’. I feel friction in my mind as I hold both of those.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There’s two definitions of jaywalking.&lt;/p&gt;

&lt;p&gt;a “legal” definition might be:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;To ‘jaywalk’ is be to cross into or across a street, outside of a ‘signalized intersection’&lt;sup id=&quot;fnref:scarequote&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:scarequote&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, outside of an ‘appropriate time’, especially in a way that might ‘impede’ a passing vehicle.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The truthful definition of jaywalking:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“Jaywalking” is a legal fiction invented by supremacists in america, who wanted to prevent cars from getting banned in cities in the 1920s as cars/car drivers were causing chaos and death. “the pedestrian should not have been jaywalking” has been used reliably to as a figleaf for road engineers (and others) allowing dangerously-designed roads and dangerous vehicle operators to keep killing people.&lt;/p&gt;

  &lt;p&gt;As a bonus, ‘jaywalking’ is super convenient for deputized slave patrols (‘american police’) &lt;sup id=&quot;fnref:deputized-slave-patrols&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:deputized-slave-patrols&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; to hassle non-white people, who often-enough would cross roads, thus ‘police encounters’ could be coerced.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you ‘jaywalk’ in the presence of a police officer, you might get got.&lt;sup id=&quot;fnref:unlikely&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:unlikely&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;If you ‘jaywalk’ in the presence of a car, you might be killed by the driver of that car. Who would be given a full pardon for killing you, because you were ‘jaywalking’.&lt;/p&gt;

&lt;p&gt;Of course, in the vast majority of time and space, including today, ‘jaywalking’ is also called ‘using the street on foot’. If you can get out of your mind the idea of jaywalking and can instead see streets in their historic function, the below diagram will ring intuitively true:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/crossing_street.jpeg&quot; alt=&quot;crossing the street&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;source: &lt;a href=&quot;http://eprints.uwe.ac.uk/15513/1/WTPP_Hart_ParkhurstJan2011prepub.pdf&quot;&gt;Driven To Excess: Impacts of Motor Vehicles on the Quality of Life of Residents of Three Streets in Bristol UK&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;An ethical read of streets says “they’re available to everyone”, and just because someone is not currently in a car or moving in a way directly parallel or perpendicular to the street doesn’t mean that person needs to give enormous social deference to the presence of a different person in a vehicle.&lt;/p&gt;

&lt;p&gt;It could be noted that lots of the individualized supremacist driving is a result of terrible systems that normalize/indicate-the-correctness-of that kind of driving. I do take issue with the people, but &lt;em&gt;mostly&lt;/em&gt; with the engineers and people who claim special authority and expertise. Please see &lt;a href=&quot;/bollards&quot;&gt;my piece on bollards&lt;/a&gt; for more of the same.&lt;/p&gt;

&lt;h2 id=&quot;tupac-shakur-beaten-unconcious-by-deputized-slave-patrolspolice-over-jaywalking&quot;&gt;Tupac Shakur beaten unconcious by deputized slave patrols/police over ‘jaywalking’&lt;/h2&gt;

&lt;p&gt;If you’re a person of the global majority, or perceivably poor, you’re vastly more likely to have an encounter with violence-dealing, coercive people.&lt;/p&gt;

&lt;p&gt;“Jaywalking” is a propagandist slur that supports the norms of the oppressor class. It is a slur, castigating both an economic and social norm, created by the auto industry in conjunction with white politically powerful government officials to solve a problem the car industry was facing - their products kept causing people to die, and were at risk of getting banned in cities!&lt;/p&gt;

&lt;p&gt;The ‘social innovation’ of this jaywalking was a huge step forward for american policing.&lt;/p&gt;

&lt;p&gt;Here’s how to view “laws” and “claims of authority”:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Laws are threats made by the dominant socioeconomic-ethnic group in a given nation. It’s just the promise of violence that’s enacted and the police are basically an occupying army.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because American Police got their start as “deputizing the slave patrols”&lt;sup id=&quot;fnref:behind_the_police&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:behind_the_police&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;, jaywalking gave another HUGE realm for social control. Now police could justify assaulting someone as ‘enforcing jaywalking laws’.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In 1991, two police officers stopped Tupac Shakur for jaywalking. He said he was knocked unconscious during his arrest, and sued the city of Oakland for 10 million dollars [he ultimately got a few thousand dollars, a total slap in the face]. His lawyer says many of the police brutality cases he’s worked on started with jaywalking stops.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;from the This is Criminal podcast &lt;a href=&quot;https://thisiscriminal.com/episode-267-right-of-way-5-3-2024/&quot;&gt;Episode 267: Right of way&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-wikipedia-says-jaywalking-is&quot;&gt;What Wikipedia Says ‘Jaywalking’ Is&lt;/h2&gt;

&lt;p&gt;Another spin through the legal/actual definitions of jaywalking:&lt;/p&gt;

&lt;p&gt;Here’s how Wikipedia explains the concept:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Jaywalking&quot;&gt;Jaywalking&lt;/a&gt; is the act of pedestrians walking in or crossing a roadway if that act contravenes traffic regulations. The term originated in the United States as a derivation of the phrase “jay-drivers”. the word &lt;em&gt;jay&lt;/em&gt; meaning ‘a greenhorn, or rube’[, a ‘country bumpkin’],  ‘jay drivers’ being people who drove horse-drawn carriages and automobiles on the wrong side of the road.&lt;/p&gt;

  &lt;p&gt;“Jaywalking” was coined as the automobile arrived in the street in the context of the conflict between pedestrian and automobiles (also then known as horseless carriages), more specifically the nascent automobile industry.&lt;/p&gt;

  &lt;p&gt;Jaywalking laws vary widely by jurisdiction. &lt;strong&gt;In many countries such as the United Kingdom, the word is not generally used and, with the exception of certain high-speed roads, there are no laws limiting how pedestrians can use public highways. This has caused confusion among British people visiting countries with less freedom, with the BBC reporting on a case where a man from the UK was arrested in the U.S. city of Atlanta for crossing the road.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;Automobile interests in the US took up the cause of labeling and scorning jaywalkers in the 1910s and early 1920s. In 1912, for instance, &lt;em&gt;Popular Mechanics&lt;/em&gt; magazine reported that the term was current in Kansas City:&lt;/p&gt;
  &lt;blockquote&gt;
    &lt;p&gt;The city pedestrian who cares not for traffic regulations at street corners, but strays all over the street, crossing in the middle of the block, or attempting to save time by choosing a diagonal route across a street intersection instead of adhering to the regular crossing, is designated as a “jay walker,” in Kansas City.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;The earliest citation in the Oxford English Dictionary dates to 1917. The word was promoted by pro-automobile interests in the 1920s, according to historian and alternative transportation advocate Peter D. Norton. Today, in the US, the word is often used synonymously with its current legal definition, crossing the street illegally.&lt;/p&gt;

  &lt;p&gt;Originally in the US, the legal rule was that “all persons have an equal right in the highway, and that in exercising the right each shall take due care not to injure other users of the way”. In time, however, streets became the province of vehicular traffic, both practically and legally.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;American traffic planners, if they had an ethical bone in their body, would see ‘jaywalking’ as an environmental sign that better infrastructure is needed to meet the needs of a group of people moving about a geography, safely and smoothly. Jaywalking is more akin to &lt;a href=&quot;https://en.wikipedia.org/wiki/Desire_path&quot;&gt;desire paths&lt;/a&gt; than a crime, unless you want to maintain social control over certain people with violence.&lt;/p&gt;

&lt;p&gt;Roads in America are built as often to accomplish the goal of &lt;em&gt;walls&lt;/em&gt; as anything else. So a Jaywalking law says something like the following, to people of the global majority:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;please respect our intent of placing a wall across this community/neighborhood/junction, and if you don’t we’ll ruin your life.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe I’ll do a follow-up post on how to recognize in the environment that a wall was built for a road, and upgraded repeatedly to better accomplish the goals of severing a community. It’s screamingly obvious, once you know what to look for. City engineers cannot be held responsible for the deaths they oversee and bring about, and this is unforgivable. An abuse that deserves open condemnation and ridicule and contempt for as long as it’s in place.&lt;/p&gt;

&lt;h2 id=&quot;anarchist-calisthenics-as-the-antidote-to-jaywalking-propaganda&quot;&gt;Anarchist Calisthenics as the Antidote to Jaywalking Propaganda&lt;/h2&gt;

&lt;p&gt;This is a hot take, perhaps.&lt;/p&gt;

&lt;p&gt;‘law and order’ is the rallying cry of the oppressor class. There’s a quote that went big, created during live recording while some folks were playing a game:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Laws are threats made by the dominant socioeconomic-ethnic group in a given nation. It’s just the promise of violence that’s enacted and the police are basically an occupying army. (source: dnd/dimension20, &lt;a href=&quot;https://www.reddit.com/r/Dimension20/comments/gnehku/laws_are_threats_made_by_the_dominant/&quot;&gt;reddit meme&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, how to not participate in the domination?&lt;/p&gt;

&lt;p&gt;Exercise &lt;a href=&quot;https://harpers.org/archive/2012/12/anarchist-calisthenics/&quot;&gt;anarchist calisthenics&lt;/a&gt; and jaywalk, yourself, and enlist friends and others in your scheme as often as possible.&lt;sup id=&quot;fnref:calesthenics&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:calesthenics&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The whole piece is great, 2050 words.&lt;/p&gt;

&lt;p&gt;The place you’re most likely to be struck (and killed!) by a vehicle, while crossing roads outside of a four-wheeled vehicle, is &lt;em&gt;while using pedestrian infrastructure&lt;/em&gt;, &lt;em&gt;while crossing at an ‘approved’ time&lt;/em&gt;. Car drivers are sometimes not paying close attention, or they drive like supremacists, or the sight lines are atrocious, and it’s extremely common for right-turning cars to run over pedestrians who are crossing the road.&lt;/p&gt;

&lt;p&gt;The ‘pillar’ of the windshield is often obstructing the driver’s view of where pedestrians might be standing, and when drivers are trying to slide into gaps in traffic, they often do not scan conflict areas with their eyes.&lt;/p&gt;

&lt;p&gt;It’s vastly safer (in america) to cross a road outside of the established times/places, because you can see/thread gaps in traffic, as needed. If American ‘traffic planners’ or ‘city engineers’ or ‘municipal planners’ were not hell-bent on maintaining oppressive systems set up by actual white supremacists, American roads could be rendered safe in about two weeks.&lt;sup id=&quot;fnref:bollards&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:bollards&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;my-jaywalking-exploits&quot;&gt;My Jaywalking Exploits&lt;/h2&gt;

&lt;p&gt;If you and I go on a walk together, we’re jaywalking as we’re walking around, and I’ll explain all of this (again) to you.&lt;/p&gt;

&lt;p&gt;The legal regime of America is ‘just’ the wet-dream of settler colonialists trying to implement regimes of social control on the colonized populations. Lets not extend dignity or respect to a regime such as this.&lt;/p&gt;

&lt;p&gt;Colefax, near Park Ave, in Denver, is atrocious. Cars regularly go 50-60 mph, and vast swaths of it have zero lights or crosswalks or even center signs or cones to separate the lanes going in opposite directions.&lt;/p&gt;

&lt;p&gt;There’s a donut shop right across from my house, with no pedestrian crossing, so I ‘jaywalk’ across the street all the time, and when I go to Cheesman Park or the Botanic Gardens. Here’s what some of my activity data looks like. This isn’t all just walking, most of the activity is technically me on my scooter. Maybe I’ll make the difference distinguishable by color some day.&lt;/p&gt;

&lt;p&gt;The green boxes show where there is zero road-crossing infrastructure, the red lines are where I’ve ridden my scooter or walked across Colefax. It’s very dangerous and un-fun to cross or ride along on my scooter, too.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/park.png&quot; alt=&quot;park&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I have open contempt for the kinds of people that exert effort to maintain a bad regime, especially when it’s obvious they’re simply trying to maintain emotional comfort. I vomit these people out of my mouth, they are not welcome in my home or around those I love. Unfortunately, I have lots of these kinds of people in my direct, immediate family. (I was raised by white supremacists, grew up around a lot of them, I know them intimately)&lt;/p&gt;

&lt;p&gt;Yet we live…&lt;/p&gt;

&lt;h2 id=&quot;additional-sources&quot;&gt;Additional Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;This is Criminal podcast &lt;a href=&quot;https://thisiscriminal.com/episode-267-right-of-way-5-3-2024/&quot;&gt;Episode 267: Right of way&lt;/a&gt;, about Tupac &lt;em&gt;as a child&lt;/em&gt; being abused by police officers, and everyone involved acts like it’s &lt;em&gt;obviously common and banal&lt;/em&gt;. That’s just what the police do to black people, this is America, are you &lt;em&gt;really&lt;/em&gt; surprised? If you’re pretending surprise I’m assessing you as a witting or unwitting member of the oppressor class. 🤷‍♂️&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://open.spotify.com/show/2ejvdShhn5D9tlVbb5vj9B&quot;&gt;Behind the Police&lt;/a&gt; a 7-part podcast on Spotify about “policing” in America. remember, southern white people were correctly concerned about ‘slave rebellions’, some southern counties were 15% white, 85% &lt;em&gt;kidnapped, enslaved people of the global majority&lt;/em&gt;. Maintaining an adequate regime of social control was a TOP LEVEL CONCERN for white people of the day, which is why they founded “Slave Patrols”. A group of armed men who would harrass and emotionally dominate non-whites. Those white people literally &lt;em&gt;could not feel safe&lt;/em&gt; without ensuring a strong regime of physical and emotional control over those non-white people, and that ‘cannot feel safe without control’ thing continues for some white people today. Oh, and plenty of white people today continue to harbor the mental disorder of supremacy.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Police-Union-Politics-Confrontation-Century/dp/0398078211&quot;&gt;Police Union Power, Politics, and Confrontation in the 21st Century: New Challenges, New Issues 2nd Edition&lt;/a&gt; This is a book written by police union leaders, talking about how to best accomplish the goals of being a police labor union leader: the police need to keep getting increases in pay, increasing in retirement benefits, and insulation from abusing their victims, the book is full of principles of organizing and agitating to extract whatever concessions are needed from the political folk.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://harpers.org/archive/2012/12/anarchist-calisthenics/&quot;&gt;Anarchist Calisthenics&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://popula.com/2019/02/24/about-face/&quot;&gt;Death and surrender to power in the clothing of men.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/41104077-invisible-women&quot;&gt;Invisible Women: Data Bias in a World Designed for Men&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition&quot;&gt;The Most Dangerous Superstition&lt;/a&gt; an interesting book about how the concept of ‘authority’ is best viewed as ‘the most dangerous superstition’. People all the times do to others things they never would do unless some ‘authority’ instructed them to do it.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design&quot;&gt;Order without Design: How Markets Shape Cities&lt;/a&gt; If cities were built by reasonable people, instead of people hell-bent on ethnic cleansing, Alain Bertaud’s lense of Urban Economics is the correct approach.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.fidelitypress.org/book-products/the-slaughter-of-cities&quot;&gt;The Slaughter of Cities: Urban Renewal as Ethnic Cleansing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7340738928888040750&quot;&gt;I made a one-minute video about ‘jaywalking’ in Denver&lt;/a&gt;, and then I made a &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7340755888300428590&quot;&gt;4 minute video about the same topic&lt;/a&gt;. basically, ‘if you [a driver] are having an unpleasant interaction with a non-driver, the non-driver likely also wishes they were not there and this represents systemic failure not individual failure of you or the carless driver you are beefing with’.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Warren_v._District_of_Columbia&quot;&gt;the police do not owe a specific duty to provide police services to specific citizens based on the public duty doctrine, Warren v DC, 1981&lt;/a&gt; In case you didn’t know, the idea ‘to protect and to serve’ is pure marketing. The police go to &lt;em&gt;great effort&lt;/em&gt; to make it really clear that &lt;em&gt;they own no specific duty, to any particular person, to actually protect or to serve that person.&lt;/em&gt; you can see why the marketing is useful, though. If they all said “to abuse and enslave” on the side of their vehicles, that would hit a bit too close to home, even though if you look at how police spend their time, the latter is vastly more common than the former.&lt;/li&gt;
  &lt;li&gt;Jaywalking should really be viewed with the same lense as a &lt;a href=&quot;https://en.wikipedia.org/wiki/Desire_path&quot;&gt;desire path&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://safety.fhwa.dot.gov/ped_bike/tools_solve/medians_brochure/medians_brochure.pdf&quot;&gt;A federal highway administration brochure blaming pedestrians, over and over again, for their own deaths (among other things)&lt;/a&gt; Would you believe the federal highway administration exerts hilariously little influence or ‘control over’ municipal streets departments, relative to what all parties might sometimes allow you to mis-apprehend?&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.denvergov.org/files/assets/public/v/2/doti/documents/standards/doties-015.2-uncontrolled_pedestrian_crossing_guidelines.pdf&quot;&gt;City of Denver’s utterly banal guidelines to itself about it’s uncarred drivers&lt;/a&gt; how to ‘legalize vehicular manslaughter’ for as little as $2000: “Section 42-4-803. Crossing at other than crosswalks: (1)….Every pedestrian crossing a roadway at any point other than within a marked crosswalk or within an unmarked crosswalk at an intersection shall yield the right-of-way to all vehicles upon the roadway.”&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=3zkk3IfWFis&amp;amp;t=468s&quot;&gt;Why I Break the Law Every Day (the story of ‘jaywalking’), by Mr. Beat&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/201978334-killed-by-a-traffic-engineer&quot;&gt;Killed by a Traffic Engineer: Shattering the Delusion that Science Underlies our Transportation System&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;It’s de-dignifying if I keep adding sources as if to “prove” my case. I’m simply noting that the regime of propaganda around ‘jaywalking’ is strong.&lt;/p&gt;

&lt;p&gt;Did you know that the most likely place to die on a road, as a carless driver, is &lt;em&gt;crossing the road in an intersection&lt;/em&gt;, &lt;em&gt;while the signal is instructing you to go&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Here’s a good-enough explanation of the concept:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The data shows that the majority of the time pedestrians are hit, they’re in the crosswalk crossing with the signal, which blows the “irresponsible pedestrian” narrative which is sometimes present in discussion of this topic right out of the water.&lt;/p&gt;

  &lt;p&gt;source: &lt;a href=&quot;https://www.reddit.com/r/chicago/comments/wwk5ji/pedestrians_and_cyclists_struck_by_cars_maps/&quot;&gt;r/chicago, map of cars striking pedestrians and cyclists&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:scarequote&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Apologies for the scare-quotes. It’s my small noting the unwilling use of these words. This is how you might hear a traffic engineer talk about jaywalking, or a police officer, or how you yourself might think about it, because &lt;em&gt;the concept of jaywalking is a convenient-for-some social fiction that has perhaps been coerced upon many from a young age&lt;/em&gt;, same as &lt;a href=&quot;https://en.wikipedia.org/wiki/Geocentric_model&quot;&gt;geocentrism&lt;/a&gt;. &lt;a href=&quot;#fnref:scarequote&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:deputized-slave-patrols&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Some people think I’m making a hostile statement when explaining that for many police departments in the greater united states, the ‘origin story’ was when the local municipalities fabricated metal stars, and ‘deputized’ the &lt;em&gt;existing&lt;/em&gt; slave patrols, and little-enough has changed since then. In the words of the National Law Enforcement Officer’s Fund themselves: &lt;a href=&quot;https://nleomf.org/slave-patrols-an-early-form-of-american-policing/&quot;&gt;Slave Patrols: An Early Form of American Policing&lt;/a&gt;.&lt;/p&gt;

      &lt;p&gt;Compare the slave patroller’s oath with NYC’s stop-and-frisk policy:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;I [patroller’s name], do swear, that I will as searcher for guns, swords, and other weapons among the slaves in my district, faithfully, and as privately as I can, discharge the trust reposed in me as the law directs, to the best of my power&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:deputized-slave-patrols&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:unlikely&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;If you’re white-passing, or perceivably not of the lowest economic class, you’re less likely to ever hear from a ‘law enforcement officer’ a breath about ‘jaywalking enforcement’, and even less so to end up assaulted, kidnapped, or murdered. Still possible though! &lt;a href=&quot;#fnref:unlikely&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:behind_the_police&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The podcast &lt;a href=&quot;https://open.spotify.com/show/2ejvdShhn5D9tlVbb5vj9B&quot;&gt;behind the police&lt;/a&gt; discusses more than just this, but perhaps you’ve seen an american ‘western’ movie. A common trope is where the town “deputizes” a local vigilante, to better enlist his support in defending them from some external threat. He pins a metal star to his leather jacket, and does his thing. During the chattel slavery time, the wealthy white people used the poor white people to staff ‘slave patrols’ to ‘manage’ the 85% of the people that lived in the region, who happened to also be slaves. When ‘policing’ made it’s way to America from the UK, southern white people ‘just’ fabricated police badges for the existing slave patrols. The innovation of social tooling is the darnedst thing. &lt;a href=&quot;#fnref:behind_the_police&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:calesthenics&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;from &lt;a href=&quot;https://harpers.org/archive/2012/12/anarchist-calisthenics/&quot;&gt;the piece&lt;/a&gt;&lt;/p&gt;

      &lt;p&gt;Outside the station was a major intersection. During the day there was a fairly brisk traffic of pedestrians, cars, and trucks, and a set of traffic lights to regulate it. Later in the evening, however, the vehicle traffic virtually ceased, while the pedestrian traffic, if anything, swelled to take advantage of the cooler evening breeze. Regularly between nine and ten o’clock there would be fifty or sixty pedestrians, not a few of them tipsy, who would cross the intersection. The lights were timed, I suppose, for vehicle traffic at midday and were not adjusted for the heavy evening foot traffic. Again and again, fifty or sixty people would wait patiently at the corner for the light to change: four minutes, five minutes, perhaps longer. It seemed an eternity across the flat landscape of Neubrandenburg, on the Mecklenburg plain. Peering in each direction from the intersection, one could see a mile or so of roadway with, typically, no traffic at all. Very occasionally a single small Trabant made its slow, smoky way to the intersection.&lt;/p&gt;

      &lt;p&gt;Twice, perhaps, in the course of roughly five hours of my observing this scene, did a pedestrian cross against the light, and then always to a chorus of scolding tongues and fingers wagging in disapproval. I, too, became part of the scene. If I had mangled my last exchange in German, sapping my confidence, I stood there with the rest for as long as it took for the light to change, afraid to brave the glares that awaited me if I crossed. If, more rarely, my last exchange in German had gone well and my confidence was high, I would cross against the light, thinking, to buck up my courage, that it was stupid to obey a minor law that, in this case, was so contrary to reason.&lt;/p&gt;

      &lt;p&gt;It surprised me how much I had to screw up my courage merely to cross a street against general disapproval. How little my rational convictions seemed to weigh beside their scolding. Striding out boldly into the intersection made a more striking impression, perhaps, but it required more courage than I could normally muster.&lt;/p&gt;

      &lt;p&gt;As a way of justifying my conduct to myself, I began to rehearse a little discourse that I imagined delivering in perfect German. It went something like this: “You know, you and especially your grandparents could have used more of a spirit of lawbreaking. One day you will be called on to break a big law in the name of justice and rationality. Everything will depend on it. You have to be ready. How are you going to prepare for that day when it really matters? You have to stay ‘in shape’ so that when the big day comes you will be ready. What you need is anarchist calisthenics. Every day or so break some trivial law that makes no sense, even if it’s only jaywalking. Use your own head to judge whether a law is just or reasonable. That way, you’ll keep trim — and when the big day comes, you’ll be ready.” &lt;a href=&quot;#fnref:calesthenics&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:bollards&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;A skid steer + well-shaped rocks, serving as &lt;a href=&quot;/bollards&quot;&gt;bollards&lt;/a&gt;, large enough for an adult to sit on, obtained for functionally free, could &lt;a href=&quot;https://en.wikipedia.org/wiki/Sneckdown&quot;&gt;sneckdown&lt;/a&gt; every road that has more than one lane in a given direction into a one-lane-each-way road. For all junctions, one would convert from lights/stop signs to small-footprint roundabouts, shaped by rocks and bollards, with a target max speed of like 15mph and a target min speed of 4 mph. everything would be fixed. “but car drivers would be surprised” says every traffic engineer and police officer I’ve spoken to about it. me: “behold, my field of f*cks, you can see that it is barren!” &lt;a href=&quot;#fnref:bollards&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Tongue Ties: What, So What, What To Do</title>
   <link href="https://josh.works/tongue-tie"/>
   <updated>2024-05-12T13:00:00+00:00</updated>
   <id>https://josh.works/tongue-tie</id>
   <content type="html">&lt;h1 id=&quot;tongue-tied-my-first-time-hearing-the-word-my-newborns-experience&quot;&gt;“tongue tied” (my first time hearing the word, my newborn’s experience)&lt;/h1&gt;

&lt;p&gt;A ‘tongue tie’ was something I’d heard discussed (the little bit of fiber under a tongue) as the kid we now know as Eden was en route and not yet born. I didn’t think much of it then.&lt;/p&gt;

&lt;p&gt;Cut forward to 5 days post-birth, Eden and her mom get the first at-home lactation consultant visit, from a lactation consultant affiliated with &lt;a href=&quot;https://www.themamahood.com/&quot;&gt;The Mama’ hood&lt;/a&gt;. That entire organization is super cool, they introduced us to our doula, too.&lt;/p&gt;

&lt;p&gt;Something that’s common knowledge about babies, and was new to me then was that whatever weight a baby is born at, its normal for its weight to go down by up to 10%, as it’s metabolism changes over from ‘being fed via umbilical cord from mom’ to ‘being fed via milk and digesting and eliminating waste’. It’s fascinating. thus, weight would be lost and that it’s not good to lose too much.&lt;/p&gt;

&lt;p&gt;Eden had lost 10%, the max weight that ought to be lost before going back up again.&lt;/p&gt;

&lt;p&gt;The hospital lactation consultant had checked in on Kristi and Eden and pronounced all as fine.&lt;/p&gt;

&lt;p&gt;The at-home lactation consultant said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’m technically not allowed to make a formal diagnoses. and, by my estimate, Eden has a severe tongue tie, and probably a lip tie, and it’s interfering with her ability to generate suction, which is why it seems that Kristi’s milk hasn’t come in, because her body doesn’t know anyone’s requesting milk.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s something of an emergency state, as you could imagine. So, they began “triple feedings”, which means:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Eden and Kristi, nursing as usual (feeding 1)&lt;/li&gt;
  &lt;li&gt;After eden would finish a defined few minutes of nursing, I’d bottle feed milk from other mothers, obtained via friend networks and online mothers-supporting-mothers groups&lt;/li&gt;
  &lt;li&gt;Kristi’s milk needed nursing to come in, so using a electric pump, she’d pump. We’d freeze it to later give to Eden.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And all of this happens every two hours, start-to-start. We’d spend an hour feeding, rest a bit, and then another hour would pass and we’d start it all over again. Slowly but surely, she drank lots of donated milk from other nursing moms, she began more then eventually suffient nutrition from her mom (because post tongue-tie-release, her entire mouth could suck correctly, so her mom’s body was getting all the helpful signals to generate milk, which it did.)&lt;/p&gt;

&lt;p&gt;We tracked everything to the nearest 5 or 10 ml, at the very beginning. After a weekend of this, and a weigh-in at the pediatrician’s office, we could see that Eden was gaining weight, and we all collectively breathed a sigh of relief.&lt;/p&gt;

&lt;p&gt;At the pediatrician’s office, I said something about the proposed tongue tie. (“someone else was looking at her feeding and said she thinks eden might have a tongue tie, what do you think?”)&lt;/p&gt;

&lt;p&gt;he said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Yeah, maybe, no biggie either way. As long as her weight is going up, all good. If not, she’ll need to go on formula. We’ll re-weigh her in a week.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;author’s note, I just for the first time ever lost a bunch of the text I’d written! I had this whole story typed out, saved it, gone. I’m sorta not willing to re-do the whole thing now, pardon the brevity, I’m typing out a summarized version of the story&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We of course wanted Eden to be able to work her own mouth and contribute to the system generating nutrition, and it would be much easier on everyone if she could. The next morning, we visited our dentist who referred us to their favorite pediatric dentist.&lt;/p&gt;

&lt;p&gt;We spent a morning driving around and talking to doctors, dentists, surgeons, but by the end, had what we wanted and what eden needed - the tongue tie and lip tie release.&lt;/p&gt;

&lt;p&gt;Her mouth and lips opened up so much more, she was able to finally generate an obvious and proper seal when nursing.&lt;/p&gt;

&lt;p&gt;Her mouth opened so much more than it was able to before the procedure. Her cry was different, stronger. Everyone commented on it, the nurses holding her, her grandma later that day. Her tongue could move up and around, in a normal way, making it obvious but only in hindsight how restricted it was before.&lt;/p&gt;

&lt;p&gt;The procedure looked relatively straight forward, the pediatric dentist removed upper lip tie, lower lip tie, and tongue tie. The last ‘tie’ wasnt wasn’t just the thin mid-line fiber visible inside her mouth, but it was actually removing quite a lot of material from the mid-line to the outer edges of her tongue, deeper into the throat than I’d originally expected.&lt;/p&gt;

&lt;p&gt;She was in great hands throughout the procedure! The staff at the clinic had their own kids, and of course it’s so rare to see so small of a kid. She was held gently and cried during the procedure yet was quickly at peace again after. The surgeon was very efficient, quick, and gentle.&lt;/p&gt;

&lt;p&gt;I watched the whole procedure from over his shoulder, looking at her mouth or the camera he sometimes used that sent video to a monitor. As soon as he was done, I remember thinking to myself “why was this not instantly diagnosed in the hospital as soon as she was born?”&lt;/p&gt;

&lt;p&gt;It was sooooo obvious. For a simple example, it’s reasonable for ones upper lip to be able to ‘unfold’ away from the teeth and flip up over the nose, sorta covering the tip of the nose. her lip tie was so tight that her upper (and lower) lip could hardly move away from where they were, most of the time, near her teeth. That was just the lip ties! The tongue was similarly restricted.&lt;/p&gt;

&lt;p&gt;Life carried onward, I didn’t really think about tongue ties again.&lt;/p&gt;

&lt;h1 id=&quot;tongue-tied-the-book-and-my-adult-experience&quot;&gt;Tongue Tied (the book, and my adult experience)&lt;/h1&gt;

&lt;p&gt;Skip forward a few years. Other than the story of how inadequate the American medical system is, I didn’t think about the tongue tie thing for a year or so. then I remembered, in the conversations with various people about it, several times someone saying “it’s heritable”.&lt;/p&gt;

&lt;p&gt;I looked up a some functional tests, for myself, and on all of them, failed the ‘test’ hard. Most notably:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;look straight up and swallow - can you swallow without pain in your neck, or bending your neck to accommodate the movement of the throat/hyoid bone? I felt pulling all the way into my sternum, and had to sorta dip my chin/jaw with some of the movement.&lt;/li&gt;
  &lt;li&gt;holding your lips close, open your jaw as wide as you can. keeping the lips closed, can the tongue reach the roof of the mouth? pre-release, my tongue couldn’t reach the roof of my mouth. Now, there’s plenty of room to spare.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here’s an example self-assessment youtube video. Also google &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tongue tie self-assessment&lt;/code&gt; and hunt around. There’s different ways the tongue and lips can have extra tissue hanging out, and as you explore you’ll find those ways.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=AKywlBeblXk&quot;&gt;Tongue Tie Test: Quick Self-Test to see if you are secretly Tongue Tied! (FOR SINGERS)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I obviously had one, so I next got from the library the book &lt;a href=&quot;https://www.amazon.com/Tongue-Tied-String-Impacts-Nursing-Feeding/dp/1732508208&quot;&gt;Tongue-Tied: How a Tiny String Under the Tongue Impacts Nursing, Speech, Feeding, and More&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After reading that, I was fully committed to the procedure, just needed to line up the details. It’s not trivial, but not difficult or complicated.&lt;/p&gt;

&lt;p&gt;I called around American dentists, to see if they did it, and wasn’t inspired to confidence.&lt;/p&gt;

&lt;p&gt;Eventually I found the &lt;a href=&quot;https://www.coloradotonguetie.com/&quot;&gt;Colorado Tongue Tie center&lt;/a&gt; and was &lt;em&gt;instantly&lt;/em&gt; onboard. They’re trustworthy, you can read the reviews. They said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;we don’t do the procedure until it’s recommended by the myofunctional therapist you’re working with. here’s some we recommend…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I ended up calling and working with &lt;a href=&quot;https://www.advancedmyofunctionaltherapy.com/&quot;&gt;Megan Dewalt&lt;/a&gt;, who is exceptional. Megan is based in Denver, thus the recommendation by the Colorado Tongue Tie Center, but all communication is zoom/email/text, it was great to not have to leave my house and travel somewhere to do the therapy.&lt;/p&gt;

&lt;p&gt;If all you do is read this blog post, read the book, and then set up a intake/evaluation call with her, and do what she tells you, &lt;em&gt;and you have a tongue tie&lt;/em&gt;, your life is about to be transformed. :)&lt;/p&gt;

&lt;p&gt;at some point, out of curiosity, I’d contacted my dentist to see what notes/records they had on this tongue tie thing.&lt;/p&gt;

&lt;p&gt;They have spent plenty of time looking in my mouth, and I’ve had a LOT of dental work done, tons of cavities, despite being rather attentive with oral hygiene. as a kid I had braces twice bc my pallet wasn’t shaped right because my tongue wasn’t working right. I also ground my teeth in my sleep, and wore a night guard. I was a little disappointed no one had uttered the words, or mentioned the possibility, in all like 35 years of my life.&lt;/p&gt;

&lt;p&gt;I didn’t expect them to say anything, but they gave me a Formal Letter on Formal Letterhead:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Based on our notes, we agree that the patient &lt;em&gt;might&lt;/em&gt; have a tongue tie that &lt;em&gt;might&lt;/em&gt; benefit from release, obviously up to the wisdom of the involved medical professional, we refuse/are unable to make an assessment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Each time I saw someone in person about this, they said “oh, yeah, that’s an intense tongue tie, no doubt.”&lt;/p&gt;

&lt;p&gt;My personal life is full of stories of things like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;some stuff that sounds like sleep apnea (minor snoring, sometimes nighttime airway obstructions)&lt;/li&gt;
  &lt;li&gt;night time teeth grinding&lt;/li&gt;
  &lt;li&gt;braces (and pallet expanders) as a kid&lt;/li&gt;
  &lt;li&gt;adhd? sleep issues, for sure, in various ways.&lt;/li&gt;
  &lt;li&gt;sometimes sounding like I’m choking in my sleep (reported to me, and I wouldn’t note the episodes well enough or at all, so I wouldn’t remember or note it when I woke up.)&lt;/li&gt;
  &lt;li&gt;obviously limited tongue mobility&lt;/li&gt;
  &lt;li&gt;lower back pain issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BuuUUuut… I also “seemed fine”. I can eat, I can talk, I sleep, blah blah blah…&lt;/p&gt;

&lt;p&gt;I spent time recently in Asia and thought about getting the procedure done there when I was passing through Thailand, without doing any myofunctional therapy. Thankfully my sister convinced me to consider a wiser path instead of only getting the release done.&lt;/p&gt;

&lt;p&gt;The reasoning makes tons of sense, as soon as she says it:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Your oral anatomy has been constrained, massively, so you’ve learned compensatory movement patterns. If your tongue gets unstuck from the bottom of the mouth, and you don’t know what &lt;em&gt;new&lt;/em&gt; movements to do with it, you’ll only partially benefit from the new options.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;(My paraphrase of her words)&lt;/p&gt;

&lt;p&gt;Right she was. By then, I made it back to colorado, and found &lt;a href=&quot;https://www.coloradotonguetie.com/&quot;&gt;Colorado Tongue Tie Center&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I live in google maps, here’s &lt;a href=&quot;https://www.google.com/maps/place/Colorado+Tongue+Tie+Center/@39.7824903,-105.0641157,17z/data=!3m1!4b1!4m6!3m5!1s0x876b873cd8a814bf:0x3b84c143c2f3ebac!8m2!3d39.7824903!4d-105.0615408!16s%2Fg%2F11gv034nh5?entry=ttu&quot;&gt;their listing/the reviews&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I called them up to see what it was like doing the procedure with them. They said they book the procedure once the person has been given a go-ahead by a myofunctional therapist. I worked with one of the ones they recommended, &lt;a href=&quot;https://www.advancedmyofunctionaltherapy.com/&quot;&gt;Megan Dewalt&lt;/a&gt;, did a few weeks of tongue strengthening exercises and drills, given by her, and then got the procedure done, then did a few more weeks of tongue strengthening exercises and drills.&lt;/p&gt;

&lt;h1 id=&quot;-my-post-surgery-experience-&quot;&gt;✨ My Post-surgery experience ✨&lt;/h1&gt;

&lt;p&gt;As the procedure was happening, I giggled to myself the first time I noticed my tongue touch the top of my mouth while my mouth was wide open. I’d never felt that before, I had been looking forward to that moment for a while, and I finally got it, though my mouth was full of local anesthesia, so I was feeling it only in some ways.&lt;/p&gt;

&lt;p&gt;even sitting in the chair afterwards, I noticed that my head turned better, more easily, to the left and the right. It makes sense, turns out my tongue was basically… stuck to my hyoid bone. (If you can look straight up and swallow without pain or tight pulling from your throat to your sternum, congrats! No tongue tie for you!) Here’s the &lt;a href=&quot;https://en.wikipedia.org/wiki/Hyoid_bone&quot;&gt;wikipedia for the hyoid bone&lt;/a&gt;, look at all the muscles that attach to it.&lt;/p&gt;

&lt;p&gt;My throat (‘hyoid bone’) had been turning when my head would turn to full extension - because it was uncomfortable, my head either wouldn’t turn farther, or it would hurt.&lt;/p&gt;

&lt;p&gt;Post-op, no pain. It was amazing.&lt;/p&gt;

&lt;p&gt;Next I noticed indeed that my head sat a bit higher/differently on my neck. The tongue tie (in my mind) caused a bit of tugging on the top of my spine, so to keep things comfortable I was compensating in posture. This was plainly visible to the therapist/doctor, but I’d never noticed and couldn’t really see it, until after the procedure.&lt;/p&gt;

&lt;p&gt;i felt differences in my sternum, diaphragm. shoulders. neck. throat. voice. swallowing became less burdensome.&lt;/p&gt;

&lt;p&gt;And this was all still while my tongue and mouth was in quite a bit of pain, because it had just gotten rather er… opened up.&lt;/p&gt;

&lt;p&gt;So, I did what any normal person would do and drove to Rifle for three days, where I proceeded to have a LOVELY trip, climbed a bunch of moderates, and did (and sent!) harder-for-me things.&lt;/p&gt;

&lt;h2 id=&quot;my-climbing&quot;&gt;My climbing&lt;/h2&gt;

&lt;p&gt;My climbing is different.&lt;/p&gt;

&lt;p&gt;Turns out my head wasn’t rotating freely on the end of my neck, so, because one spends a lot of time &lt;em&gt;looking up the wall&lt;/em&gt; while rock climbing, I was changing the posture of my contact with the rock, often enough, to accommodate the needs of looking up/around. With better mobility/de-linked neck/head rotation, my movement is different. I can pause in “restier” stances, still breath deeply, and simultaneously look around/up/behind me.&lt;/p&gt;

&lt;p&gt;I’ve always been able to climb smoothly, and I don’t know if this difference is visible from an observer’s perspective, but I can easily feel a difference in comfort, just looking around and finding various positions relative to holds.&lt;/p&gt;

&lt;h2 id=&quot;my-posture&quot;&gt;My posture&lt;/h2&gt;

&lt;p&gt;I stand differently, and I’ve had a HORRIBLE lingering back issue for a while, that was exacerbated by my head being incorrectly tilted forward. I’d compensate in my shoulders somehow, and then compensate again in my lower back. Now, everything ‘stacks’ nicely, and I can stand vertically without effort. I would have said I could stand without effort before, but I was wrong. Now I know, it was very effortful.&lt;/p&gt;

&lt;h2 id=&quot;my-tongue&quot;&gt;My tongue&lt;/h2&gt;

&lt;p&gt;After six weeks of tongue strengthening and stretching, I’m very aware of my own mouth. I spend SO MUCH time now exploring the inside of my own mouth with my tongue, or exploring the movement of my throat, soft pallet, throat/hyoid bone, and tongue, all in relation to each other. I notice that I can open my throat in a different way, that is much more comfortable.&lt;/p&gt;

&lt;h2 id=&quot;driving-and-scooting&quot;&gt;Driving and scooting&lt;/h2&gt;

&lt;p&gt;My head sits differently on top of my spine, and I can turn my head easily, farther, as I mentioned. This manifests in more ease while driving and scooting. I can easily feel the difference. A helmet is heavy, so a slight correction to head posture lets the weight of the helmet be more easily carried on top of my spine. It’s comfy. I can quickly turn my head far too the side to check blind spots, as needed.&lt;/p&gt;

&lt;h2 id=&quot;some-of-my-frisbee-throwing-changed&quot;&gt;Some of my frisbee throwing changed&lt;/h2&gt;

&lt;p&gt;I sorta got a new throw unlocked. I can point my head at wherever I’m throwing a backhand to, and with some hip hinging, using that extra extension of my neck, I can do a pretty powerful backhand throw while keeping my destination fully in sight, through the entire arm motion.&lt;/p&gt;

&lt;p&gt;The disk doesn’t come out flat, the only reason it works is because it doesn’t travel flat -  the arc of the arm+disk uses a bit of the natural slicing ‘fall’ of the parabolic arc of the disc as it gets thrown across the space.&lt;/p&gt;

&lt;p&gt;This wasn’t a combination of options that was available to me, pre-tongue-tie-release, or at least not one I’d noticed. Getting a few extra degrees of rotation available to me, between where my shoulders are pointed and where my head can be pointed, absolutely opened up some new options for my throwing. I felt immediately improved across all of my backhands, which had always been my weaker frisbee throw, relative to my forehand.&lt;/p&gt;

&lt;p&gt;Now that I’m skilled with the throw, though, I note that it’s possible that maybe I could have thrown like this pre-release. I’ve showed it to a few folks, who have indeed noticed that it’s an interesting variation of the backhand. A skillful version of the movement does not demand a huge range of motion, and can be used in subtle ways. who knows.&lt;/p&gt;

&lt;h2 id=&quot;my-emotional-state&quot;&gt;My emotional state&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/author/show/27800.Pete_Walker?from_search=true&amp;amp;from_srp=true&quot;&gt;Pete Walker&lt;/a&gt; says, basically,&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;emotional flashbacks tend to happen when we assign emotional meaning to physical sensations. Stopping the flashback is to first engage in thought-stopping behaviors, then try to localize where/what the physical sensation is in the body, and hold space/honor/work through &lt;em&gt;that&lt;/em&gt; physical thing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I now know in a way that is clearest once the ‘strings have been cut’ that I carried substantial tension (think… muscle tension, fascia tension, whatever) in my throat, connecting my tongue, the top of my spine, my hyoid bone, and more. That physical knotted-up-ness would contribute to a turbulent emotional state, AND would limit my rest-and-digest systems from fully getting online.&lt;/p&gt;

&lt;p&gt;If my sleep is compromised, I’m getting less restored, and if I’m less restored, things seem incrementally harder and more dim, rinse and repeat.&lt;/p&gt;

&lt;p&gt;I could say more but this was written in a single session, &lt;em&gt;and&lt;/em&gt; i lost a bunch of what I’d had due to minor computer errors. I’m a &lt;a href=&quot;/write-it-now&quot;&gt;write-it-now&lt;/a&gt; kind of person.&lt;/p&gt;

&lt;p&gt;I’ve gone all the way around with &lt;a href=&quot;/depression&quot;&gt;depression&lt;/a&gt;, need to do an update to that post, but would posit that an emotional state and inner physical tension can have a relationship. I prefer the version of my body post-tongue-tie-release than pre.&lt;/p&gt;

&lt;p&gt;My climbing partner was subjected to near endless exclamations to myself about my own mouth. “I love my new mouth!” “I love taking my new mouth rock climbing!” “wow, that thing I said earlier about breathing and my diaphragm applies to breathing while climbing, too! Amazing!”&lt;/p&gt;

&lt;p&gt;I could say more.&lt;/p&gt;

&lt;h1 id=&quot;how-i-proceeded-to-the-tongue-tie-release-5-days-ago&quot;&gt;How I proceeded to the tongue tie release, 5 days ago&lt;/h1&gt;

&lt;p&gt;I’m writing this whole damn post because I want to write down the profound and many differences I feel, inside my own body, often in shocking and beautiful ways. If you have a tongue tie, and can get the work done (myofunctional therapy, tongue tie release, more myofunctional therapy, and body work) you &lt;em&gt;might&lt;/em&gt; find your body a drastically friendlier space to inhabit. I’ve had tears come to my eyes, more than once, as I’ve noticed new forms of relief or relaxation settle in.&lt;/p&gt;

&lt;p&gt;There’s been cascading things unfolding across days, weeks.&lt;/p&gt;

&lt;h2 id=&quot;colorado-tongue-tie-center&quot;&gt;Colorado Tongue Tie Center&lt;/h2&gt;

&lt;p&gt;The procedure was done by Dr. Chad, he was exceptional, it was chill, easy, pain was non-existent (during the procedure) and minimal during the post-procedure repair time.&lt;/p&gt;

&lt;p&gt;It was like an hour in the office, and 30 minutes in the chair. It felt akin to some minor dental work. I rode my scooter back home after, and other than being ginger with my mouth, there wasn’t any issues.&lt;/p&gt;

&lt;p&gt;I ended up with six sutures after the procedure, so went heavy on ibuprofen and tylenol for a few days, and took a light dose of narcotics the first night to sleep, drank TONS of salty broth.&lt;/p&gt;

&lt;p&gt;It’s ~$1500 on a credit card, some health insurance agencies will reimburse you, and if the health insurance company won’t, the dental insurance company might. Or no one might.&lt;/p&gt;

&lt;h2 id=&quot;megan-dewalt-omt&quot;&gt;Megan Dewalt, OMT&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.advancedmyofunctionaltherapy.com/&quot;&gt;Megan&lt;/a&gt; was (is) my guide through the whole process. We did a few pre-procedure meetings, a few weeks apart, where I’d get exercises to build tongue strength and proprioception so I can know where my tongue is/isn’t. To make sure I mouth breath, etc. Then I did the procedure, she’d given me notes ahead of time with the stretches to do throughout the rehab. (super light immediately after, light/medium until sutures dissolve, then go hard after)&lt;/p&gt;

&lt;p&gt;Dr. Chad at the Tongue Tie Center said it was easy to do my procedure, as it’s always easy to do the procedures for Megan’s clients, because I had plenty of musculature in my tongue, which made it easy for him to find the tissue to remove, vs. the tissue to not remove.&lt;/p&gt;

&lt;p&gt;I spent ~$1k on the pre-op prep, and about $1k on the post-op rehab, spread across six weeks each, with 2-4x/daily strength building exercises, paid/scheduled right after the &lt;a href=&quot;https://live.vcita.com/site/advancedmyotherapy.com&quot;&gt;intake call&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-obvious-book-tongue-tied&quot;&gt;The obvious book, &lt;em&gt;Tongue Tied&lt;/em&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Tongue-Tied-String-Impacts-Nursing-Feeding/dp/1732508208&quot;&gt;Tongue-Tied: How a Tiny String Under the Tongue Impacts Nursing, Speech, Feeding, and More&lt;/a&gt;. Get it, read it.&lt;/p&gt;

&lt;h2 id=&quot;bodywork-from-daniel-lopez&quot;&gt;Bodywork from Daniel Lopez&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://inspireosteopathydenver.com&quot;&gt;Daniel Lopez, DO&lt;/a&gt;. My first time ever getting ‘body work’ done, but I was so thrilled for the nudge. Turns out the tongue connects to the soft pallet which moves up and down in coordination with the hyoid bone. That thing feels connected to the top of the spine, and all this can be incorrectly bound together, and when the tongue is released, there’s so much new movement potential. Dr. Lopez did grand work on me, from the cranium through the sternum (and even worked on a back injury that is now dramatically better, bc my head sits on my spine differently, so i don’t have to compensate/over-compensate elsewhere in the spinal column)&lt;/p&gt;

&lt;p&gt;I did my first appointment ($300) the day after my release. I kept having nearly tears in my eyes as I could feel the ‘unclenching’ of various portions of my body and musculature, in the days following the release. I sorta wish I had done one session before the release, and one after. Alas, it was all exceptional, none the less.&lt;/p&gt;

&lt;h2 id=&quot;nasal-breathing&quot;&gt;Nasal Breathing&lt;/h2&gt;

&lt;p&gt;A big part of a tongue tie is it’s contribution to things like sleep apnea. A big part of sleep apnea is snoring.&lt;/p&gt;

&lt;p&gt;It’s ‘super unhealthy’ to breath through the mouth exclusively, or majority, or much at all. Oops, RIP my entire childhood. Tongue ties also relate to cavaties, because an open-at-night mouth is more prone to cavities. teeth grinding, which I did, so I wore a mouth guard, which pushed my mouth open even more, so I was 100% mouth breathing when I slept, even though when awake I’m aware of how dry the air in denver is and would close my mouth.&lt;/p&gt;

&lt;p&gt;As soon as I read the book below, &lt;em&gt;Breath&lt;/em&gt;, I began taping my lips at night. A thin little strip, vertically, right under the center of the nostrils. I could still mouth breath if I wanted, too, the tape simply prevented the lips from popping open on their own. My sleep changed, perceivably. For the better.&lt;/p&gt;

&lt;p&gt;So much sleep issues can be fixed, just with that bit of tape. the first tape I was using was too sticky, left a residue, but I found better stuff and enjoyed being able to look forward to waking up with the inside of my mouth feeling rested instead of dried out.&lt;/p&gt;

&lt;p&gt;Consider reading &lt;a href=&quot;https://www.amazon.com/Breath-New-Science-Lost-Art/dp/0735213615&quot;&gt;Breath: The New Science of a Lost Art&lt;/a&gt; by James Nestor. It’s sorta pop-sciencey, yet it nudged me into mouth taping most nights (certainly not 100%), and I certainly upped my percent-of-the-day nasal breathing when awake, too. It was already pretty high, now its quite close to 100%.&lt;/p&gt;

&lt;h1 id=&quot;misc-sources&quot;&gt;Misc Sources&lt;/h1&gt;

&lt;p&gt;Here’s some internet rabbit trails to follow:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/TMJ/comments/pwnjjy/just_had_my_tongue_tie_functional_frenectomy/&quot;&gt;Just had my tongue tie (functional frenectomy) release 10 days ago, here’s what changed with my TMJ / body (reddit)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Tongue-Tied-String-Impacts-Nursing-Feeding/dp/1732508208&quot;&gt;Tongue-Tied: How a Tiny String Under the Tongue Impacts Nursing, Speech, Feeding, and More&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Breath-New-Science-Lost-Art/dp/0735213615&quot;&gt;Breath: The New Science of a Lost Art&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.advancedmyofunctionaltherapy.com/&quot;&gt;Megan Dewalt (works via zoom, available anywhere in USA/world)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.coloradotonguetie.com/&quot;&gt;Colorado Tongue Tie Center (based in Denver)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;inspireosteopathydenver.com&quot;&gt;Daniel Lopez, DO (based in Denver)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://evidencebasedbirth.com/self-advocacy-in-birth-and-tongue-and-lip-tie-with-michelle-odoerfer/&quot;&gt;Self-Advocacy in Birth, and Tongue and Lip Tie with Michelle Odoerfer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://tonguetieal.com/are-tongue-ties-and-lip-ties-linked-to-postpartum-depression/&quot;&gt;Are Tongue-Ties and Lip-Ties Linked to Postpartum Depression?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Anarchy (or, less provocatively, Mutuality and Co-Creation)</title>
   <link href="https://josh.works/anarchy"/>
   <updated>2024-05-03T13:00:00+00:00</updated>
   <id>https://josh.works/anarchy</id>
   <content type="html">&lt;p&gt;s&lt;/p&gt;

&lt;p&gt;In 2017, I read &lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt;; everything and nothing changed.&lt;/p&gt;

&lt;p&gt;Lots changed because all of I sudden, I could clearly label a dynamic that had always irked me. I could see that some people would avoid coercing others, &lt;em&gt;only because both parties believed firmly enough that there was a duty for the others to obey&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;That duty to obey was backed by a belief that a failure to obey would eventually bring pain or absence or lack.&lt;/p&gt;

&lt;p&gt;I expect most people who have been coerced by others will report it as unpleasant. Or dangerous and violating.&lt;/p&gt;

&lt;p&gt;I have so many problems with coercion, and can speak against it all day, but an under-appreciated problem with coercion is what it supplants and replaces, in the inner/outer worlds of both the coercers, and the victims.&lt;/p&gt;

&lt;p&gt;Because coercion is fundamentally unethical and dehumanizing, any institution or structure that relies upon it, or is rooted in it, is unable to function in any way but a perverted, violating way.&lt;/p&gt;

&lt;p&gt;The human spirit is destroyed in the face of coercion, and everything about the human experience is enlivened and made healthy when those involved have ‘access’ to adequate safety and resources.&lt;/p&gt;

&lt;p&gt;Most coercion, in America today, especially White America, is of an emotional kind. But when it fails, it becomes verbal, and when &lt;em&gt;that&lt;/em&gt; fails, the ‘muscular’ bits of coercion come out. Denial of access to resources, credible threats of violence, etc.&lt;/p&gt;

&lt;p&gt;It’s like watching a disregulated adult experiencing a temper tantrum in which they performatively yell and throw things, in order to get their way, and when they do, they slip back into a dissociated fugue state and retreat from the world.&lt;/p&gt;

&lt;p&gt;It’s a statement of:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you don’t give me what I want in the right way and schedule, I’ll dominate the experience with unpleasantness, until you relent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s impossible to problem solve with coercive people, because the fact that they are not coercing you &lt;em&gt;in this moment&lt;/em&gt; is not affected by the slightest that they will coerce you as soon as they next decide they want to. They don’t find the coerciveness to be the problem, simply that you have a problem with it, is the problem.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;what-coercion-destroyed-and-propagandized&quot;&gt;What coercion destroyed and propagandized&lt;/h2&gt;

&lt;p&gt;I dislike, fundamentally, the space given to coercion as “just” or “ethical”.&lt;/p&gt;

&lt;p&gt;Coercion goes hand in hand with entitlement, or a belief that it is right to dominate someone else.&lt;/p&gt;

&lt;p&gt;a patriarchal system of belief is the idea that men are entitled to dominate women, at least one other ethnic group, children, &lt;em&gt;and&lt;/em&gt; other men less willing to participate in domination. That adults dominate children.&lt;/p&gt;

&lt;p&gt;The propaganda that will be pushed out into the world is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;{patriarchal ethnic group} is fundamentally superior to {all other ethnic groups, or at least &lt;em&gt;that&lt;/em&gt; other ethnic group}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The alternative to coercion is what existed before anyone showed up with credible threats of violence.&lt;/p&gt;

&lt;h2 id=&quot;mutuality-and-co-creation&quot;&gt;Mutuality and co-creation&lt;/h2&gt;

&lt;p&gt;I don’t believe that I have the right or entitlement to coerce anyone, nor do I extend welcome to people who act entitled to coerce me.&lt;/p&gt;

&lt;p&gt;My updated view of the world could be something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Violence of all stripes (physical, obviously, but in some corners of society emotional and verbal violence is vastly more common) is the tool of emotionally immature people enacting their childish view on the world, and serious people are completely nonplussed by the idea of ‘using violence’.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A believe in political authority is now, to me, now different than the belief in church authority that dominated the middle ages.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The pope says no sex on wednesdays, so no one is having sex on wednesdays, right?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is &lt;em&gt;dedignifying&lt;/em&gt; to take seriously the kinds of people that think violence is a reasonable problem solving mechanism.&lt;/p&gt;

&lt;h2 id=&quot;what-else-happens-in-the-world-without-coercion&quot;&gt;What else happens in the world without coercion?&lt;/h2&gt;

&lt;p&gt;A broad class of acts, attitudes, and beliefs that can be summarized as: &lt;em&gt;Mutuality and Co-Creation&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mutuality&lt;/strong&gt; might be opposed to ‘individualistic’. It assumes a checking-in and temperature-taking with others. It’s the opposite of competitive. It sees the other as a fully-dignified participant in the experience. It doesn’t require false humility or making everything equal - parents can be mutual to their pre-verbal children, and people of a dominant ethnic group can be mutual towards people of an oppressed people group.&lt;/p&gt;

&lt;p&gt;Mutuality simply spends time evaluating “us”, and observing the perspective of “us”. There’s an eye towards the health of the ecosystem, accomplishing the reduction of harm and want and lack is as important as (or more important than) pursuing some reward or accomplishment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Co-creation&lt;/strong&gt; contains elements of making something new &lt;em&gt;with&lt;/em&gt; the other person/people. It’s assumed that the end result &lt;em&gt;and&lt;/em&gt; the process will be improved for the full creative, emotional part of all parties fully engaged.&lt;/p&gt;

&lt;p&gt;Coercion is like pouring bleach on a garden. It destroys everything it touches.&lt;/p&gt;

&lt;h2 id=&quot;authority-as-propaganda&quot;&gt;Authority as Propaganda&lt;/h2&gt;

&lt;p&gt;Jacques Euller noted that propaganda plays two functions, the second of which I’d not considered:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;For anyone who happen to agree, intellectually, with the propaganda, or some preceding idea, propaganda does indeed shape some societal attitudes directly, via the message, to be in conformity with the message.&lt;/li&gt;
  &lt;li&gt;But for those who disagree with the propaganda, even if they roll their eyes at it and feel contempt for the kinds of people involved in its creation… propaganda still plays a role as a reminder of &lt;em&gt;power&lt;/em&gt; and &lt;em&gt;authority&lt;/em&gt;. It takes MUSCLE and MIGHT for an institution/person to so boldly proclaim something so preposterous. “War brings peace” and “Eat more chicken”, “I punish you because I love you” and so on, so forth. It serves a role as a reminder of privilege, and the distribution of power. It’s an assertion of power.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The concept of &lt;em&gt;authority&lt;/em&gt; serves as propaganda. Authority is a societal fiction, a dangerous superstition.&lt;/p&gt;

&lt;p&gt;The words behind someone who “believes” in authority (similar to how someone might believe in a god) is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I did {such and such} because someone else said so &lt;em&gt;and I am willing to throw away my own dignity and yours, simply because they gave me credible legal fiction to do so&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When large groups of people are killed by other people, usually most of the killers report something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Well, &lt;em&gt;i&lt;/em&gt; didn’t want to do it, gosh, that person never did anything to hurt me, but {external_authority} made me do it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s tragic.&lt;/p&gt;

&lt;h2 id=&quot;a-retrospective-addendum&quot;&gt;A retrospective addendum&lt;/h2&gt;

&lt;p&gt;2017 was my official entry into the anarchist camp. Cannot, will not, ever do anything but resist the coercion and violence in the world around me.&lt;/p&gt;

&lt;p&gt;I lived a bunch of life between 2017 and 2022, I use words like ‘nervous system regulation’ and ‘intellectual colonialism’, and already was walking away hard from the normal protestant white evangelical mono-normative nuclear-family type stuff, stumbled into the phrase ‘relationship anarchy’ and instantly was ruined.&lt;/p&gt;

&lt;p&gt;I then began the canon around how marriage and the state are inextricably linked. A little while ago, I read &lt;a href=&quot;https://www.deanspade.net/wp-content/uploads/2021/10/Marriage_Will_Never_Set_Us_Free.pdf&quot;&gt;Marriage Will Never Set Us Free&lt;/a&gt;, and found it concisely expressing things I’ve been thinking on.&lt;/p&gt;

&lt;p&gt;I’ll never get married again. There’s no limit to the depth of the relationship(s) I can have without marriage, and to even participate in marriage, now, rubs me the wrong way, in terms of what it normalizes.&lt;/p&gt;

&lt;h2 id=&quot;relationship-anarchy&quot;&gt;Relationship Anarchy&lt;/h2&gt;

&lt;h2 id=&quot;the-books-extra-resources&quot;&gt;The Books, extra resources&lt;/h2&gt;

&lt;p&gt;I’ve got a bunch of books that relate to Anarchy, Authority and more. Because Anarchy and interpersonal relating are born out of the same core views, I’ll mix ‘relationship’ stuff in with ‘political’ stuff. Decolonization stuff, etc.&lt;/p&gt;

&lt;p&gt;Part of my movement away from marriage and monogamy is because I view those as shaping the ecosystem for conditions favorable to colonialism and supremacy. Turns out lots of people who say they mean well for you would gladly watch you self-abandon to try to conform to an unmanageable situation.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/7640261-sex-at-dawn&quot;&gt;Sex at Dawn: The Prehistoric Origins of Modern Sexuality&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/52569124-polysecure?ref=rae_0&quot;&gt;Polysecure: Attachment, Trauma and Consensual Nonmonogamy&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.therelationshipanarchist.com/what-is-relationship-anarchy&quot;&gt;What Is Relationship Anarchy? (therelationshipanarchist.com)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://images.squarespace-cdn.com/content/v1/637a4f092ba7e462a2116e6c/1f727022-8d19-4b2e-ac8f-533f2d2c1080/RA-smorgasbord.jpg&quot;&gt;The Relationship Smorgasboard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;images/RA-smorgasbord.jpg&quot; alt=&quot;relationship smorgasboard&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Continuous Glucose Monitors: Why &amp; What</title>
   <link href="https://josh.works/cgm"/>
   <updated>2024-05-03T13:00:00+00:00</updated>
   <id>https://josh.works/continuous-blood-glucose-monitor</id>
   <content type="html">&lt;p&gt;&lt;em&gt;This is a story and explanation about why I sometimes wear a glucose monitor. It’s visible on the rear of my upper arm, usually sparks a question or two, I’ve usually stumbled through a response, now I can simply pass this page along to anyone who asks.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/cgm-part-2&quot;&gt;Part two, written about a year later, lives here. The technology has improved &amp;amp; the cost gone down, and other related thoughts based in part on observations of the data&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since maybe 2018, every now and again I’ll purchase a month-long ‘subscription’ to the &lt;a href=&quot;https://www.levelshealth.com/&quot;&gt;Levels&lt;/a&gt; service, which is their app paired with a Continuous Blood Glucose Monitor.&lt;/p&gt;

&lt;p&gt;It’s a tiny wearable device that uses adhesion to stick to your arm for two weeks. It has a 1cm thin bendable plastic needle that allows it to sample your blood glucose, continuously, store the data onboard, and then when you tap your phone’s NFC reader to it, your phone pulls the data off and… renders it.&lt;/p&gt;

&lt;h2 id=&quot;a-history&quot;&gt;A history&lt;/h2&gt;

&lt;p&gt;A continuous blood glucose monitor is an improved tool on the finger-prick blood-draw glucose monitor technology that will be intimately familiar to anyone with type 1 or type 2 diabetes. I have neither kind of diabetes, but have used the finger prick monitors before.&lt;/p&gt;

&lt;p&gt;Unsurprisingly, there’s some books I’d like to interject here, that amount to something like ‘an internally consistent perspective of human metabolism’. Books are just books, anyone can write anything in a book, so I’m not saying these books ought to count as anything like ‘evidence’ to you, simply that they were compelling for me.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nerdfitness.com/blog/a-beginners-guide-to-intermittent-fasting/&quot;&gt;Beginner’s Guide to Intermittent Fasting (nerdfitness.com)&lt;/a&gt; I read this in 2015&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Tripping-over-Truth-Overturning-Entrenched/dp/160358935X&quot;&gt;Tripping over the Truth: How the Metabolic Theory of Cancer Is Overturning One of Medicine’s Most Entrenched Paradigms&lt;/a&gt; I read this in ~2017&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Case-Against-Sugar-GARY-TAUBES/dp/184627639X/&quot;&gt;The Case against Sugar&lt;/a&gt; hilarious and sad, I read it in ~2017&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Starts-Egg-Pregnant-Naturally-Miscarriage/dp/0999676180&quot;&gt;It Starts with the Egg: How the Science of Egg Quality Can Help You Get Pregnant Naturally, Prevent Miscarriage, and Improve Your Odds in IVF&lt;/a&gt; Read this in 2020. Turns out ‘egg quality’ at least partially boils down to ‘healthy and available mitochondrial energy generation pathways’, which is completely coherent with the above 3 links.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Tripping Over The Truth&lt;/em&gt; is the most impactful book here, to me. It outlines a common feature among all cancers - that the cellular energy generation pathway in normal cells breaks and the mitochondria start to generate energy via fermenting environmentally available sugar (blood glucose). Virtually all cancer cells obtain energy via this alternative energy generation pathway.&lt;/p&gt;

&lt;p&gt;There’s &lt;em&gt;ahem&lt;/em&gt; several upstream/downstream implications.&lt;/p&gt;

&lt;p&gt;These books all are coherent with each other around things like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Sugar interacts with the body’s endocrine system, thus it has the same effects on the human body as hormones. You know how when children hit puberty, they change in ways unrelated to how much food they are or are not eating? Sugar has a close-enough effect at any chronic level.&lt;/li&gt;
  &lt;li&gt;half of the dry weight of your body is mitochondria&lt;/li&gt;
  &lt;li&gt;Mitochondria &lt;em&gt;and&lt;/em&gt; one’s gut bacteria all sorta… matter. And can be healthy or unhealthy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This layers on top of a change I made to my life in 2015 - I read the NerdFitness guide to Intermittent Fasting, and jived with it. I stopped eating breakfast, started doing the 16/8 ‘intermittent fasting’ plan; I stopped eating breakfast, and moved my breakfast omelette + veggies to my lunchtime meal. Everything else stayed the same.&lt;/p&gt;

&lt;p&gt;I dropped so much hassle, food prep, cleaning time from my life, and got nothing but upsides. At the time my partner and I were traveling a lot, and there was substantial mental overhead to prepping meals in constantly novel houses, often while trying to do so quietly to avoid waking anyone up. I then could simply wake up, make my coffee, and be fully ready for the day.&lt;/p&gt;

&lt;p&gt;I’ve been doing this for ten years, so it’s habit now. When I eat breakfast (very rarely, only when with others who want to eat breakfast) I always think “wow, I couldn’t imagine doing this every day.” and then usually skip lunch and eat again at dinner time.&lt;/p&gt;

&lt;p&gt;I still binge eat sometimes. I’ve definitely got a partially disordered relationship with food, always did since childhood. I think many people use food to deal with emotional loneliness, and sometimes that is still a thing for me, but that falls outside this exact article.&lt;/p&gt;

&lt;p&gt;I like the idea of semi-regularly doing a 24-36 hour fast, but only occasionally do &lt;em&gt;maybe&lt;/em&gt; 22 hour fasts. Dinner one day, don’t eat again until about dinner the next day, these are never planned just sometimes happen. When I’m not eating carbs regularly, &lt;em&gt;i very rarely experience the sensation of hunger&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;what-the-data-looks-like&quot;&gt;What the data looks like&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;images/libreapp.jpeg&quot; alt=&quot;libre_app&quot; /&gt;&lt;/p&gt;

&lt;p&gt;That ‘mountain’ happened as I ate a carb-y dinner (and animal crackers) and then did late-night snacking of more pasta and ice cream at ~11pm.&lt;/p&gt;

&lt;p&gt;my blood glucose goes from 80 to 175, across perhaps, and returns to baseline the next morning by 10 or 11a. You can almost see my body releasing insulin (to bring the glucose back down) then it climbing again as the food is absorbed. then released again, climbing, and eventually the entire metabolic load of the food finishes and it drops back down.&lt;/p&gt;

&lt;p&gt;(remember, ideally I’d eat lower carbs, and not so late at night. My body would get to enjoy many more hours at the lowered blood glucose level)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/good-reading.jpeg&quot; alt=&quot;better_reading&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The above level is what lowish-carb eating might look like on the first day, and here’s partial data on what it might look like after low carb for a few days. (Don’t be put off by the red, this is an app that is trying to keep diabetics from dying)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/perfectglucose.jpeg&quot; alt=&quot;best_reading&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is a normal blood sugar reading for a sustained low-carb day. You can see my blood sugar going up throughout the day. This is very normal, obviously the body can manage its glucose levels, can raise them or lower them as needed. It’s not as obvious what and when I am eating - I use the Levels app that ingests this raw data, to record what I eat, if I want.&lt;/p&gt;

&lt;p&gt;I simply find it fascinating to see how my body does and does not respond to what I eat. I find it much easier to manage and stay ahead of my desire to binge, because I know I’ll be looking at the effect of it on my glucose for a while.&lt;/p&gt;

&lt;p&gt;I really like the feeling of clean eating, and I use the continuous glucose monitor to refine some of my habits around my nutrition. Lots of the most interesting parts of this data, though, is the unfolding, self-observing nature of the data. I encourage you to try it, I imagine you’d find it interesting, with one or two novel, experiential insights that you wouldn’t otherwise encounter.&lt;/p&gt;

&lt;h2 id=&quot;why-neither-of-us-need-the-glucose-monitor&quot;&gt;Why neither of us need the glucose monitor&lt;/h2&gt;

&lt;p&gt;The devices are quite expensive. This is the ‘gold standard’ of medical care for type 1 diabetes medication, so most people pay for these via insurance. It’s $100 &lt;em&gt;per&lt;/em&gt; two week sensor, or $50/week to get minute-by-minute monitoring of your glucose levels.&lt;/p&gt;

&lt;p&gt;Certainly doable, but not cheap. Thus why I get these only so often. Mostly I manage my own nutrition via my own head, and will and will not binge regardless of the sensor.&lt;/p&gt;

&lt;p&gt;The sensor helps me see how quickly and how much my body responds to the presence and absence of certain foods, and in an extremely real-time way, and I love it.&lt;/p&gt;

&lt;h2 id=&quot;strong-defaults-will-win&quot;&gt;Strong Defaults Will Win&lt;/h2&gt;

&lt;p&gt;Three key food defaults:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;My first meal of the day is not until after noon, and I usually stop eating by 8p, so I get daily ‘16 hour fasts’. I don’t count the time immediately after eating and while sleeping ‘fasting’, so really I just push my first meal of the day several hours to lunch time or the afternoon, at the ‘cost’ of occasionally being able to detect the physiological sensation of hunger, which passes &lt;em&gt;always&lt;/em&gt; in just a few minutes.&lt;/li&gt;
  &lt;li&gt;That meal, which is one of two I’ll eat that day, is usually: brocoli, mushroom, spinach, eggs, sardines, lots of olive oil, salt, pepper, maybe tumeric. It’s pure healthy fat, enough but not too much protein. No carbs.&lt;/li&gt;
  &lt;li&gt;I usually eat whatever I want for dinner. Home cooked, or eating out. I love Indian food, all forms of Spanish &amp;amp; Latin American food, Thai, Vietnamese, the various forms of Chinese food, pizza, and more. Ice cream and cookies, bread, pasta. I generally avoid cookies and dessert type things, but sometimes, especially if it’s abundant in the environment, I partake. Sometimes I go no-carb dinners (shrimp, salmon, zucchini, squash, mushrooms, kimchi, brocoli, sauerkraut, hardboiled asian-style eggs, greek yogurt, spinach, olives, pickles, EVOO and coconut oil, almonds. So many options, this would be way too much food to eat all at once, but it shows I can cycle things through while eating abundantly)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don’t drink anything that has sugar added. Most days the liquids I have are: Water, black coffee/espresso (if I/it needs cream, Almond milk or heavy cream), tea.&lt;/p&gt;

&lt;p&gt;I’ve regularly done low-protein mostly vegetarian keto-compliant nutrition profiles before, and very happily. (basically, no carbs, 1/3rd consumed food is protein, 2/3rds fat. Protein comes from many places besides meat, but I’ll usually have a few shrimp, a piece of salmon, or anchovies, at least every other day)&lt;/p&gt;

&lt;p&gt;Since my ‘default meal’ has been almost identical for a decade, and I’ve shaped it into a delicious and fully keto compliant meal, the difference between me being ‘fully keto’ and ‘not at all keto’ is just what I do with my dinner, and if I’m choosing to abstain from sugary, carb-y, food.&lt;/p&gt;

&lt;p&gt;I used to be fully vegetarian, and for a time when my then-partner was trying to become pregnant, we both added small amounts of high-quality protein to our diets, while going out of our way to avoid endocrine disrupters and any sort of metallic bio-accumulation. I’ve retained the occasional consumption of salmon and shrimp, along with the regular consumption of sardines. I never eat chicken, beef, pork, deer, for reasons of ethics and health. I don’t drink milk (lactOSE, it’s sugar, and contains Animal Growth Hormone (an endocrine disruptor)) and don’t eat much cheese, ideally. If I do, it’ll be (at its best) a hard goat cheese, occasionally.&lt;/p&gt;

&lt;p&gt;Who knows if this is working. I’m 35, and have as good of a body composition as I could have, and always have. I’ve been eating &lt;em&gt;mostly&lt;/em&gt; this way since 2015.&lt;/p&gt;

&lt;p&gt;Maybe I’ll stick a video up here of me making my ‘default meal’. It’s very easy to scale serving sizes up to feed as many as 6 people at once, or making four or five servings for myself (to store as future meals).&lt;/p&gt;

&lt;p&gt;Many, many others have eaten this meal with me, and pretty much everyone says “surprisingly delicious, despite it’s unconventional composition &amp;amp; appearance”.&lt;/p&gt;

&lt;p&gt;It’s a one-dish meal, of course, and there’s zero cleanup. &lt;a href=&quot;https://josh.works/what-ive-learned-from-cooking-in-36-kitchens-in-the-last-year&quot;&gt;I have a very refined set of preferences for how I like to use my kitchen&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Effortless ease and excellence is all I want. I encourage you to read the books I mentioned above.&lt;/p&gt;

&lt;h2 id=&quot;how-i-nudge-myself-into-full-on-zero-carbs-when-i-want&quot;&gt;How I nudge myself into full-on ‘zero carbs’ when I want&lt;/h2&gt;

&lt;p&gt;It looks pretty bonkers, the way I eat, when I’m doing something strange, if you were to be there looking over my shoulder the whole time.&lt;/p&gt;

&lt;p&gt;But, I’ve nudged my eating profile in this direction for a long time, and I love it. If you were curious for easy places to start experimenting with the best of this way of being. This is how I sorta nudged myself in this direction, and how I outline this to others:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Start maxing out olive oil and coconut oil consumption. It’s possible that coconut oil, swished around your mouth for a few minutes, is good for reducing the nutrients available to the bacteria that contribute to bad breath and cavities. So, once or twice a day, spoon a few grams of coconut oil straight into your mouth, swish it around for a bit, then eat it. Two nice things for the price of 1. Use regular olive oil for cooking, and atop every meal you eat, pour as much olive oil as you can until the amount gets ‘excessive’. Free, delicious, satiating fats. A few heavy drizzles is like 25 g of the good stuff.&lt;/li&gt;
  &lt;li&gt;Add almonds, olives, and hard cheeses to your kitchen, and start &lt;em&gt;starting&lt;/em&gt; snacking with those items. All are very portable, perfectly delicious, satiating. filling. Don’t even stop snacking on other stuff, just when you go for a snack, have at least some of the above. Maybe stop other kinds of snacks eventually.&lt;/li&gt;
  &lt;li&gt;Add and practice and refine a meal of sauteed mushrooms, broccoli, 3 eggs, LOTS of extra virgin olive oil, and almonds. Get canned sardines and sometimes add them to that meal. Feed a friend or two with the meal, store some in a tupperware for later. This meal will do a lot of heavy lifting for you. Rotate in zucchini, cucumber, riced cauliflower, artichoke hearts. Anything cruciferous, go all in on. And olive oil.&lt;/li&gt;
  &lt;li&gt;Don’t try to eliminate any food stuffs from your routine! Don’t think about stopping eating anything that you’re regularly eating. At best perhaps be less quick to replenish finished supplies of things like ice cream, crackers, frozen meals, processed stuff. If you’re drinking sugar, though, I think it’s worth cutting that immediately.&lt;/li&gt;
  &lt;li&gt;See what it’s like to stop eating at 8p, rather than eating late into the night.&lt;/li&gt;
  &lt;li&gt;Try a single ‘don’t eat anything besides coffee/tea or coconut oil until noon’ day.&lt;/li&gt;
  &lt;li&gt;Combine the last 2 points. Stop eating at 8, don’t start until the next day at noon, x1. Evaluate. If you managed OK, do it for 2 days.&lt;/li&gt;
  &lt;li&gt;at this point, you are good at that vegetarian-ish keto meal, and you’re intermittent fasting. If you slip that meal in as the first meal of the day, even if you don’t change anything else about your eating, you’ll now be managing to spend most of your life with very low blood glucose, and will experience small ‘fasting’ moments often-enough. huzzah.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you wanna do the full keto thing, here’s how I do it, cobbled together from all the various internet sources, reddit, my own experience, proclivities, idiosyncrasies.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;vegetarian bullion cubes (have a cup of broth once or twice a day, or more. As much as you want, have the broth, it’s extremely nice.)&lt;/li&gt;
  &lt;li&gt;Morons lite salt (supposedly electrolyte demands go up when not eating any carbs), add some to water with a Mio b-vitamine electrolyte supplement, mix this with your water&lt;/li&gt;
  &lt;li&gt;almonds and olives and olive oil and coconut oil will be a perceivable fraction of your nutrition. I have like 100g, combined, of the above w/most meals&lt;/li&gt;
  &lt;li&gt;Push your lunch meal to a bit later like 1 or 2p, sometimes. Or let it happen. Since I’m very pro-fasting, and low-hunger-queue, often enough I’ll find myself not eating for the day until &lt;em&gt;quite&lt;/em&gt; late in the afternoon. I always feel an odd sense of accomplishment when this happens. Sorta patting my nutritional and digestive and metabolic systems on the head. &lt;em&gt;pat pat&lt;/em&gt; nice work there, I see what you did. &lt;em&gt;pat pat&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don’t have tips or strategies for eating meals out with others and not completely violating the above norms. So, usually I just eat whatever looks good to me, don’t sweat what happens temporarily to my blood glucose, and then resume my normal nutritional pattern at the next regularly occurring meal. If I eat out for lunch, I eat my big veggie omelette for dinner.&lt;/p&gt;

&lt;p&gt;There have been times that I’ll eat TONS of sugary things and snack throughout the day, morning to night, btw. Usually it’s when working in offices that have a strong free snack game, but that happens in the context still of &lt;em&gt;mostly&lt;/em&gt; intermittent fasting, that veggie omelette thing, and lots of fats. (Hard cheeses, almonds, olives, etc).&lt;/p&gt;

&lt;p&gt;Soooooo experiment! see how things go.&lt;/p&gt;

&lt;h2 id=&quot;faq&quot;&gt;FAQ&lt;/h2&gt;

&lt;h3 id=&quot;does-the-little-thing-in-your-arm-hurt&quot;&gt;Does the little thing in your arm hurt?&lt;/h3&gt;

&lt;p&gt;No. Not when ‘installing it’, or after. I can sometimes detect a slight tug, if I turn or push in a certain way. I rock climb, even with all that movement I usually don’t feel a thing. Not while sleeping, or showering. I forget I’m wearing it, quickly enough.&lt;/p&gt;

&lt;h3 id=&quot;youre-so-strange-this-seems-odd&quot;&gt;You’re so strange. This seems odd.&lt;/h3&gt;

&lt;p&gt;You don’t know the half of it.&lt;/p&gt;

&lt;h3 id=&quot;but-my-body-needs&quot;&gt;But ✨my✨ body needs…&lt;/h3&gt;

&lt;p&gt;Great, this is for me, not for you. I still think I’m right, and I can be obnoxious about it, but at least now I can just give you a web page instead of sputtering at you about books and “just because it’s dominant doesn’t mean it’s right” theories of human health. And colonialism, and white supremacy.&lt;/p&gt;

&lt;h2 id=&quot;misc-resources&quot;&gt;Misc Resources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nerdfitness.com/blog/a-beginners-guide-to-intermittent-fasting/&quot;&gt;Nerd Fitness, Intermittent Fasting&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Tripping-over-Truth-Overturning-Entrenched/dp/160358935X/ref=sr_1_1?crid=XFCU7BYD52XK&amp;amp;dib=eyJ2IjoiMSJ9.A-s5TQUZEbN3VJaSVS-eqss9E5KclKBZ-NpdMvbdpjrRb-HycANiiIKKR4a8r-nveL56ofwXHTNssSPxCjFKykY6BerkcP0F_073qRnT-4NWPoqcGnzXQ8XYt3xHKDktOSkBgM6k4f-SPY9CajkLU4mTnKPeJ-6BH8WKcVNqW8ZgboBVOIItqFDLyXea07nJx9kOeBOJvtUNhlTfCfULn8VehhWacdKBCw_yvyfOgz4.goqF1l3JV9-Uw0_sFrOfPPPoferpSXl3VPlmpUYiqSk&amp;amp;dib_tag=se&amp;amp;keywords=tripping+over+the+truth+the+metabolic+theory+of+cancer&amp;amp;qid=1714758250&amp;amp;s=books&amp;amp;sprefix=tripping+over+the+t%2Cstripbooks%2C141&amp;amp;sr=1-1&quot;&gt;Tripping Over the Truth&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Case-Against-Sugar-Gary-Taubes-ebook/dp/B01DRXCPJ0/ref=sr_1_1?crid=LJ4JYLCVSWPZ&amp;amp;dib=eyJ2IjoiMSJ9.IyEbylqZV8mEt6W8-poL-xEb9hFFi_32qKwDrXsSmZ2Ns57vvLThYp9JR8pONaB6lNnN2k7KQes3awJMBnP8SBlOWHGvlyNYSdIICKIA8qsa27AXuMB4bQscRh19Okhtf4yHKtMWLDrhHD1HKqJrE1JhuKZx8MW1yLqm_3N8cxab90prV8W4Gl_kzCqpM1PS8qaoosbzIPgYtgpEUqh3p87c_nvjhSoYszAhbhdlXZs.C5J8XL6yYhi9uiQ5SnEaYlYfPgp-2riE_Oza9tq42LQ&amp;amp;dib_tag=se&amp;amp;keywords=the+case+against+sugar&amp;amp;qid=1715797631&amp;amp;s=books&amp;amp;sprefix=the+case+against+sug%2Cstripbooks%2C185&amp;amp;sr=1-1&quot;&gt;The Case Against Sugar&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Starts-Egg-Science-Fertility-Miscarriage/dp/B0CG2C6BR5/ref=sr_1_1?crid=2IV2T0DI6FS9S&amp;amp;dib=eyJ2IjoiMSJ9.nYI0zjV72KyguWybgKIpojlVIIJ83-r3w54DX9R3415YfVrbG7BuR2n7bmc5rSN_BmfTLsIBKOeiOJwRSwffTdZ1_WXjig38kIa7_UeXBFpdiGAjMh6fph41f6k43U8VHjarIDpGZea5O4sPgWF7fkXYWkwR9UxzOSVybVSPYNyE_keKeLLkKCm1u0bNqDoiesPfSqYDrQMDU2uWVkzCPbkxBoLFPPZUAfQB66Fko34.jB0e2Y2aC1P4Ov1q-R96Lqd7su5N8gKFRFOVWfQOKMw&amp;amp;dib_tag=se&amp;amp;keywords=it+starts+with+the+egg&amp;amp;qid=1715797648&amp;amp;s=books&amp;amp;sprefix=it+starts+with+the+eg%2Cstripbooks%2C155&amp;amp;sr=1-1&quot;&gt;It Starts With The Egg&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.levelshealth.com/&quot;&gt;Levels Health (the app)&lt;/a&gt; the subscription service I used to get the glucose monitors&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Bollards: Why &amp; What</title>
   <link href="https://josh.works/bollards"/>
   <updated>2024-04-30T13:00:00+00:00</updated>
   <id>https://josh.works/bollards</id>
   <content type="html">&lt;p&gt;&lt;em&gt;author’s note: it’s always &lt;a href=&quot;https://news.ycombinator.com/item?id=40267675&quot;&gt;fun to see your own stuff on the Hacker News front page!&lt;/a&gt; This very post sparked &amp;gt;450 comments worth of conversation! I didn’t even know this got posted until days later!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;another note: it’s difficult and annoying to view videos embedded from different platforms like tiktok, youtube, so mostly I’ve tried to re-host things on Wistia, so it’s less annoying to try to exit this page and go view that video, then return, etc. It’s still sometimes nice to view the video in the context of the other platform, though, as well.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-are-bollards&quot;&gt;What are bollards&lt;/h2&gt;

&lt;p&gt;The what and the why in a single image:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/bollard.jpg&quot; alt=&quot;bollard&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The what and why in a single video:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Over to Monaco🇲🇨 where we have exclusive footage of bollards saving lives.&lt;a href=&quot;https://twitter.com/hashtag/WorldBollardAssociation?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#WorldBollardAssociation&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://t.co/ESfwsI3EId&quot;&gt;pic.twitter.com/ESfwsI3EId&lt;/a&gt;&lt;/p&gt;&amp;mdash; World Bollard Association™ (@WorldBollard) &lt;a href=&quot;https://twitter.com/WorldBollard/status/1634871668077371392?ref_src=twsrc%5Etfw&quot;&gt;March 12, 2023&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;The above video is a tweet from &lt;a href=&quot;https://twitter.com/WorldBollard&quot;&gt;@worldbollard&lt;/a&gt;, here’s a still from the video. Click to view the original video:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/HB8710/status/1634629736499486721&quot;&gt;&lt;img src=&quot;images/bollard_monaco.png&quot; alt=&quot;bollard saving people&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s very possible that the person just barely visible at the end of the video would have been struck had the bollard not been there, and it’s obvious how those bollards create a ‘shadow’ or ‘eddy’ of safety, from the passing vehicles. Here’s another look:&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/wwoBibTYQ7M?si=fboF-KYBcgnazDx6&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;A bollard is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;any sort of physical barricade strong enough, shaped in such a way, that if a vehicle tries to overlap with the bollard in location, intentional or not, the vehicle cannot cross. Sometimes they’re built into the physical environment, sometimes not. They can be movable or not. Large and intrusive, or not.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;images/smol_bollard.jpg&quot; alt=&quot;smol_bollard&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;source: &lt;a href=&quot;https://twitter.com/WorldBollard/status/1785595490358247717&quot;&gt;@worldbollard twitter account&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the words of a local city engineer’&lt;sup id=&quot;fnref:will-not-be-named&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:will-not-be-named&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, &lt;em&gt;as he was explaining why a bollard placed near where pedestrians congregate to cross a large roadway would be inappropriate&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Barriers (bollards, guardrail, etc.) are considered for installation if the result of a vehicle striking the barrier will be less severe than hitting the unshielded object.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Less severe for who? Like, it totally makes sense to evaluate severity of a vehicle striking a barrier vs there not being a barrier. That’s the whole point of the bollard existing, to protect people/things &lt;em&gt;from&lt;/em&gt; vehicles.&lt;/p&gt;

&lt;p&gt;A placement like this makes intuitive sense, when run through the lense of protecting a space from cars. Here’s outside of a school, solving the problem of people sometimes parking their cars where they shouldn’t be:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/pencil_bollard.jpg&quot; alt=&quot;pencil_bollard&quot; /&gt;&lt;/p&gt;

&lt;p&gt;These bollards are also cute. If one could install ten times as many bollards as they otherwise have around them, and make one or two of them cute like a pencil bollard, I think everyone might be pleased.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;source: &lt;a href=&quot;https://twitter.com/WorldBollard/status/1656022438507946014&quot;&gt;@worldbollard twitter account&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You’ll never unsee this:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://www.urbanismspeakeasy.com/p/take-another-look-at-where-they-put&quot;&gt;Take another look at where american municipalities put the guardrail&lt;/a&gt;. Quoting the author:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;You see guardrail everywhere. It protects drivers from hitting hard objects by bouncing cars back into their proper place. But public works and transportation departments routinely install guardrails &lt;em&gt;on the “wrong” side of a sidewalk&lt;/em&gt;.&lt;/p&gt;

  &lt;p&gt;Guardrails bring good fortune to motorists, but not for the unlucky people using the sidewalks.&lt;/p&gt;

  &lt;p&gt;Imagine pushing a stroller or walking the dog when an out-of-control vehicle, careening towards an object is saved by the guardrails, but you’re the innocent casualty. This engineering malfeasance is directly related to “clear zones”. The Federal Highway Administration says:&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;By creating Clear Zones, roadway agencies can increase the likelihood that a roadway departure results in a safe recovery rather than a crash, and mitigate the severity of crashes that do occur. - &lt;a href=&quot;https://highways.dot.gov/safety/rwd/provide-safe-recovery/clear-zones/clear-zones&quot;&gt;Federal Highway Administration guidance on ‘clear zones’&lt;/a&gt;&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Once you’re aware of how engineers misuse the clear zone and put pedestrians at risk, you’ll see it everywhere. Intelligent, credentialed professionals do this all the time all across the country. Not only are they getting away with wildly dangerous behavior, &lt;strong&gt;it doesn’t even phase them.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;(emphasis added) 🤯&lt;/p&gt;

&lt;p&gt;I generally dislike every mile I have to drive on American roads in a car. I don’t perceive the roads to be nearly as safe as some others, but some of those who tell me driving is fine are 1) unsafe drivers themselves, and 2) they seem nearly professionally dissociated from the experience.&lt;sup id=&quot;fnref:driving-is-fine&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:driving-is-fine&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Please, please stop evaluating local transportation administrations as competent. I’ve hung out with these people, gone on walks with them, driven around with them, listened to them get excited about a new pedestrian affordence they’ve installed, and the lack of awareness and close-mindedness (which is obviously necessary to sustain a shitty system creaking into it’s 100th year of existence) is stunning. Someone wrote a book titled &lt;a href=&quot;https://www.goodreads.com/book/show/201978334-killed-by-a-traffic-engineer&quot;&gt;Killed By A Traffic Engineer: Shattering the Delusion that Science Underlies our Transportation System&lt;/a&gt; about this. It’s not defecting from any group to evaluate this as the case.&lt;sup id=&quot;fnref:exit-voice-loyalty&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:exit-voice-loyalty&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I’ve waltzed into city planners offices, the offices of traffic engineers (because I am curious, pushy, opinionated, and can ‘just looking around’/bumble my way into all sorts of interesting places) and my jaw has &lt;em&gt;dropped&lt;/em&gt; to hear the things they say, seriously, to someone else. Now I first search for signs of aliveness when interacting with traffic people, and if I cannot find a sign of aliveness, I avoid allowing hope to grow in my heart. &lt;sup id=&quot;fnref:traffic-bean&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:traffic-bean&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I get myself in hot water by suggesting they cherry pick different parts of it. If you’re a traffic engineer, know that your own MUTCD allows you to use your own ‘engineering judgement’, &lt;em&gt;and you don’t even have to document it&lt;/em&gt;. I wrote a section about why this traffic bean junction concept is MUTCD compliant: &lt;a href=&quot;https://josh.works/traffic-bean#on-mutcd-compliance&quot;&gt;the traffic bean -&amp;gt; on mutcd compliance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The main feature of a bollard is stated, &lt;em&gt;by city engineers&lt;/em&gt; as a reason they cannot be placed anywhere near roads. “Bollards are not crashworthy” is a strange way to say “bollards reliably stop vehicles”. American road engineers declare that things near roads need to be soft and spongy (like people!) to avoid ‘injuring’ cars. It really hurts oneself to take them seriously, the logic is so convoluted.&lt;/p&gt;

&lt;p&gt;Here’s a bollard, bollarding:&lt;/p&gt;

&lt;iframe style=&quot;width: 100%;aspect-ratio: 16/9;&quot; src=&quot;https://www.youtube.com/embed/OmgjsYQHE0w?si=H7NO820wh0zLaaR3&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Would you say the bollard is ‘crashworthy’? I’d say by definition, yes! Look at how well it stood up to a crash!&lt;/p&gt;

&lt;p&gt;American traffic engineering standards, as implemented by supremacists who built urban highway through neighborhoods, with the express goal of displacing the people in that neighborhood, says that ‘crashworthy’ means it wouldn’t hurt the occupant of the car. The original cars were much less cushioned with airbags and crumple zones than they are now, and they were driven by people who were wealthy, nobility-adjacent.&lt;/p&gt;

&lt;p&gt;Cars are now driven by people who are not wealthy, but the original patterning still lives onward in the law.&lt;/p&gt;

&lt;h2 id=&quot;what-are-not-bollards&quot;&gt;What are &lt;em&gt;not&lt;/em&gt; bollards?&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;It’s tricky to hit the right emotional tone of why bollards matter. Sometimes it seems academic and dry, sometimes its very visceral and raw.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Where there are &lt;em&gt;not&lt;/em&gt; bollards, there are careening, speeding vehicles, and often enough death and destruction.&lt;/p&gt;

&lt;p&gt;To park a vehicle, one needs to press the correct pedal. When people are driving unfamiliar vehicles, or rushed, or whatever, sometimes the wrong pedal gets pushed. Would you suggest that this small error should result in death of people and the elimination of businesses and buildings?&lt;/p&gt;

&lt;p&gt;Here’s a vehicle coming to almost a complete stop, then accelerating into and through &lt;em&gt;an entire building&lt;/em&gt; into the parking lot beyond.&lt;/p&gt;

&lt;p&gt;Every time I ‘feel’ a vehicle pointed at me, even when I’m inside of a building, I’m aware that if the driver has a heart attack or makes a small mistake, I might be staring at them from the end of their hood, above a crushed pelvis. “Oh well, one espresso please.”&lt;/p&gt;

&lt;p&gt;Please watch the following video. &lt;a href=&quot;https://www.reddit.com/r/fuckcars/comments/1cfs0np/why_cars_should_be_restricted&quot;&gt;click here if the image isn’t loading right - it goes to reddit&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.reddit.com/r/fuckcars/comments/1cfs0np/why_cars_should_be_restricted&quot;&gt;&lt;img src=&quot;images/car_in_store.png&quot; alt=&quot;car_in_store&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I take issue with the video caption, I’d rather it be:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;vehicle operator makes error when parking&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The point is clear, though. Vehicles are strong, and can accelerate from a stop into, through, and out of, at least some buildings, if the driver presses firmly on the wrong pedal.&lt;/p&gt;

&lt;p&gt;Lets look at another example.&lt;/p&gt;

&lt;p&gt;When there are not bollards, in areas where people are promised safety, even if everyone behaves correctly, there are still failures. For example…&lt;/p&gt;

&lt;p&gt;A friend/her fiance were walking down a sidewalk, a passing speeding/racing car &lt;em&gt;hit another car&lt;/em&gt;, bounced onto the sidewalk, killed her and almost killed her fiance. The city traffic engineer said &lt;em&gt;nothing could be done&lt;/em&gt; while the industry openly states that &lt;em&gt;because bollards work, they cannot be used to protect non-car spaces from the mistakes of car drivers&lt;/em&gt;. &lt;sup id=&quot;fnref:i-wish-i-were-kidding&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:i-wish-i-were-kidding&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Once, a widely respected member of a local software development community and their partner (also a widely respected member of the same community) were walking on a sidewalk in California one night a few years ago. Far from them, a speeding car struck another car of course careened through the sidewalk. Both friends were hit by the car. She was killed instantly, he was knocked unconscious, woke up days later to find out the news. &lt;a href=&quot;https://www.sfchronicle.com/crime/article/29-year-old-woman-identified-as-victim-in-S-F-16189585.php&quot;&gt;The language in the article is full of ‘this was an unavoidable tragedy’&lt;/a&gt;, though i think it’s obvious a local city engineer ought to be held criminally liable for their neglect.&lt;/p&gt;

&lt;p&gt;This video below shows a very similar style of ‘car accident’ that killed and injured these friends, but in this video the spaces along the road are rendered safer by the bollards.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Is there anything more wonderful than watching a BMW bounce off bollards and cartwheel down the road?&lt;a href=&quot;https://twitter.com/hashtag/WorldBollardAssociation?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#WorldBollardAssociation&lt;/a&gt; &lt;br /&gt;🎥&lt;a href=&quot;https://twitter.com/CrimeLdn?ref_src=twsrc%5Etfw&quot;&gt;@CrimeLdn&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://t.co/XOD1zQb1Bf&quot;&gt;pic.twitter.com/XOD1zQb1Bf&lt;/a&gt;&lt;/p&gt;&amp;mdash; World Bollard Association™ (@WorldBollard) &lt;a href=&quot;https://twitter.com/WorldBollard/status/1789934739345818058?ref_src=twsrc%5Etfw&quot;&gt;May 13, 2024&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;This blaming the victim narrative is why &lt;a href=&quot;/jaywalking&quot;&gt;‘jaywalking’ is a propagandist legal fiction&lt;/a&gt;, by the way.&lt;/p&gt;

&lt;p&gt;The concept of jaywalking blames victims of vehicular homicide for their own deaths. Very convenient for a settler-colonialist oppressor class. It’s a lynchpin to the following process. Without the concept of ‘jaywalking’, and the police using violence to enforce it, the following process wouldn’t be able to complete, it would get stuck at step 3.&lt;/p&gt;

&lt;h3 id=&quot;how-to-use-unsafe-roads-to-cleancleanse-a-neighborhood&quot;&gt;How to use unsafe roads to clean/cleanse a neighborhood&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;declare that the road (even an empty road) is more important than anything else.&lt;/li&gt;
  &lt;li&gt;Demolish neighborhoods to add roads.&lt;/li&gt;
  &lt;li&gt;Once the road is there, further degrade the people of the neighborhood by declaring/enforcing ‘not only must this road be here, but your physical body cannot be anywhere near this road if someone in a car is within earshot. Even though they started their journey far from here, and are going to continue far from here, they get more priority over your front yard than you do’&lt;/li&gt;
  &lt;li&gt;Once the neighborhood has stewed in this toxic mess for a while, help shuffle the lots to private developers for cheap, they’ll knock down that housing and replace it with something conforming, with conforming people.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the same tactic israeli settlements use to displace palestinians from their lands!&lt;/p&gt;

&lt;p&gt;American suburban development and israeli settlement development follow very similar patterns, are rooted in the same energy.&lt;/p&gt;

&lt;p&gt;Israeli bulldozers knocking down palestinian homes is very similar to american bulldozers knocking down immigrant neighborhoods for urban highways and parking lots. supremacists called it ‘slum clearance’. I wrote &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/parking-minimums-as-ethnic-cleansing&quot;&gt;parking minimums as ethnic cleansing&lt;/a&gt; and want to write sometime about the way american municipalities pioneered/refined the tactics of bulldozer-led ethnic cleansing, and that gets only slightly modified before being reused in palestine.&lt;/p&gt;

&lt;p&gt;Because not only was it entirely preventable, it was also statistically inevitable. Not putting bollards where they need to be is like not only &lt;em&gt;not wearing a seatbelt&lt;/em&gt; when driving, but arguing that &lt;em&gt;seatbelts should not be available in cars because usually they’re not needed&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A bollard is something like a seatbelt for someone outside of the vehicle.&lt;/p&gt;

&lt;p&gt;When and where there are &lt;em&gt;not&lt;/em&gt; bollards, often enough, there are cars.&lt;/p&gt;

&lt;h2 id=&quot;injury-on-7-eleven-property-costs-91-million&quot;&gt;Injury on 7-Eleven property costs $91 million&lt;/h2&gt;

&lt;p&gt;So… this is the sort of devastation done to a community that everyone would obviously want to prevent. And this exact pattern plays out many times a day.&lt;/p&gt;

&lt;p&gt;Even the american legal system &lt;em&gt;sometimes&lt;/em&gt; understand bollards and appreciate that sometimes a need to assign honest blame to &lt;em&gt;someone&lt;/em&gt;, the ‘responsible corporate entity with a pocketbook’ has a responsibility to people who are using their spaces, and a perceived failure to provide a measure of structural something.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://chicago.suntimes.com/2023/2/8/23591381/7-eleven-storefront-crash-settles-lawsuit-bensenville&quot;&gt;7-Eleven to pay $91 million to suburban man who lost both legs because they didn’t install bollards at &lt;em&gt;that&lt;/em&gt; location.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That title is sensationalized, sort of. Really tragic for the involved person. It could be re-written “in which a vehicle operator pressed the gas instead of the brake, the vehicle pinned-and-maimed man passing between at that exact moment”.&lt;/p&gt;

&lt;p&gt;It’s a normal occurrence.&lt;/p&gt;

&lt;p&gt;If you watch some of the videos elsewhere on this page, you can understand the ‘accident mechanics’, and can appreciate how if there were bollards in a certain spot, the harmed/maimed passer-by would not have been maimed.&lt;/p&gt;

&lt;p&gt;Notice down below how often this kind of thing happens. I hope there’s bollards at every 7/11 now. &lt;sup id=&quot;fnref:current-coverage&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:current-coverage&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A 57-year-old suburban man who became a double amputee after a car pinned his legs against the front of a Bensenville 7-Eleven will receive a $91 million payout from the convenience store chain&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In a moment, you’ll see the kinds of vehicle-strikes-building results this refers to.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The case was the first in which attorneys had access to some 15 years of reports from 7- Eleven, which identified some 6,253 storefront crashes at 7-Eleven stores across the country, Power said. Data from a previous lawsuit against the company identified another 1,525 crashes between 1991 and 1996.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Who in the story do you think uttered the following?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It is important to note that this unfortunate accident was caused by a reckless driver who pled guilty, and this store followed all local building codes and ordinances.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was the legal representation of 7/11, but you can also hear the local city manager or city engineer saying ‘it was not my fault either!’. (“followed all local building codes and ordinances”)&lt;/p&gt;

&lt;p&gt;Lots of people like to suggest flexposts as a ‘useful’ or ‘improved’ effort over nothing. I emphatically disagree, as a flexposts promises something it cannot deliver:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;“Bollards are too expensive. Flex posts will be just as good…”&lt;a href=&quot;https://twitter.com/hashtag/WorldBollardAssociation?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#WorldBollardAssociation&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://t.co/P8gnL25aNq&quot;&gt;pic.twitter.com/P8gnL25aNq&lt;/a&gt;&lt;/p&gt;&amp;mdash; World Bollard Association™ (@WorldBollard) &lt;a href=&quot;https://twitter.com/WorldBollard/status/1710575124909346917?ref_src=twsrc%5Etfw&quot;&gt;October 7, 2023&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;I would accept flexposts only if ~they were frequent, and~ one out of every ten was a visually-indistinguishable, placed-at-random, &lt;em&gt;real&lt;/em&gt; steel bollard, or at least something that would cause some real issue if impacted. a bell bollard made out of concrete, a tree, a fence post.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;If we’ve said it once, we’ve said it a thousand times…flex posts are SHIT.&lt;a href=&quot;https://twitter.com/hashtag/WorldBollardAssociation?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#WorldBollardAssociation&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://t.co/l0800LpAdv&quot;&gt;pic.twitter.com/l0800LpAdv&lt;/a&gt;&lt;/p&gt;&amp;mdash; World Bollard Association™ (@WorldBollard) &lt;a href=&quot;https://twitter.com/WorldBollard/status/1705488610730852508?ref_src=twsrc%5Etfw&quot;&gt;September 23, 2023&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;blockquote&gt;
  &lt;p&gt;Carl was a frequent customer of the Bensenville store, and most days would walk a few blocks from an apartment he shared with his three sons to buy his morning coffee…&lt;/p&gt;

  &lt;p&gt;[the morning of this tragic-yet-statistically-inevitable systemic failure] Carl’s ride was running late, and a man pulling into a parking space in front of the store stepped on his car’s accelerator instead of the brake. The car lurched over the curb, across a sidewalk and pinned Carl against the storefront, causing injuries that would require the amputation of both his legs above the knees. Another driver had crashed into the front of the same store 16 months earlier, Power said.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;what-does-not-bollards-look-like&quot;&gt;What does not bollards look like&lt;/h2&gt;

&lt;p&gt;In the context of ‘bollards as protecting store-fronts from cars’, sort of akin to a physical insurance policy, here’s what moving vehicles, through stores, can look like.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Holy shit. A car smashed through a cafe while they were recording a podcast. 😳 &lt;a href=&quot;https://t.co/NBJ6h4cYjl&quot;&gt;pic.twitter.com/NBJ6h4cYjl&lt;/a&gt;&lt;/p&gt;&amp;mdash; Fifty Shades of Whey (@davenewworld_2) &lt;a href=&quot;https://twitter.com/davenewworld_2/status/1632710048378941440?ref_src=twsrc%5Etfw&quot;&gt;March 6, 2023&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;I wonder what losses the involved parties were able to recoup. Presumably insurance would make partial financial repairs, but it would all be at great opportunity cost, hassle, sadness, anger.&lt;/p&gt;

&lt;p&gt;Even a &lt;em&gt;rock&lt;/em&gt;, obtained functionally for free, could have fully prevented this. Again, no one’s fault, but it hurts to see damage accrue.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://www.reddit.com/r/fuckcars/comments/1cfs0np/why_cars_should_be_restricted/&quot;&gt;driver presses wrong peddle when parking outside store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I dislike the caption. ‘[^forgets]
[^forgets]: possibly playing into subtle supremacy saying “woman forgets…” Why not person? Or very physically ill driver? or “driver in unfamiliar rental car”? or “driver thinking they were pressing the break unintentionally pressed the gas and…” or “while thinking they were in reverse, the driver pressed the gas and…”&lt;/p&gt;

&lt;p&gt;I’m not into punishment energy. For real for real. I need to finish writing &lt;a href=&quot;https://josh.works/punishment&quot;&gt;https://josh.works/punishment&lt;/a&gt;, to explain. for now, “the concept of retributive violence is a gussied up version of &lt;a href=&quot;https://en.wikipedia.org/wiki/Nobility&quot;&gt;nobility&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Chivalry&quot;&gt;chivalry&lt;/a&gt; ethics. Which was a strange group of people’s attempts to justify their own domination of others.&lt;/p&gt;

&lt;p&gt;There’s more to be said about punishment regimes. There’s entire modes of thoughts/ways of being/concepts of the world that operate entirely without punishment, in a way that would feel sorta unrecognizable to someone who’s grown up around the american criminal justice system, and believed some of what is said about it.&lt;/p&gt;

&lt;p&gt;currently not written but I’m close on a draft of something.&lt;/p&gt;

&lt;p&gt;It should say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;vehicle operator makes error when parking&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://www.reddit.com/r/fuckcars/comments/1cfs0np/why_cars_should_be_restricted&quot;&gt;&lt;img src=&quot;images/car_in_store.png&quot; alt=&quot;car_in_store&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This sort of incident would be perfectly prevented by bollards like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/tiny_bollards.jpg&quot; alt=&quot;tiny_bollards&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://twitter.com/WorldBollard/status/1729592943927767072&quot;&gt;source: @worldbollard&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As a reminder, flex posts are not bollards, they’re… lies, drafting on the idea of bollards:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Flex posts kill.&lt;br /&gt;Bollards save lives.&lt;a href=&quot;https://twitter.com/hashtag/WorldBollardAssociation?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#WorldBollardAssociation&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://t.co/dHpzlLHbxx&quot;&gt;pic.twitter.com/dHpzlLHbxx&lt;/a&gt;&lt;/p&gt;&amp;mdash; World Bollard Association™ (@WorldBollard) &lt;a href=&quot;https://twitter.com/WorldBollard/status/1700449158719525128?ref_src=twsrc%5Etfw&quot;&gt;September 9, 2023&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;If we’ve said it once, we’ve said it a thousand times…flex posts are SHIT.&lt;a href=&quot;https://twitter.com/hashtag/WorldBollardAssociation?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#WorldBollardAssociation&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://t.co/l0800LpAdv&quot;&gt;pic.twitter.com/l0800LpAdv&lt;/a&gt;&lt;/p&gt;&amp;mdash; World Bollard Association™ (@WorldBollard) &lt;a href=&quot;https://twitter.com/WorldBollard/status/1705488610730852508?ref_src=twsrc%5Etfw&quot;&gt;September 23, 2023&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;but-what-i-think-of-as-bollards-are-not-pretty&quot;&gt;“But what I think of as bollards are not pretty”&lt;/h2&gt;

&lt;p&gt;Great, lets grow our imaginations:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/WorldBollard/status/1792955144855859358&quot;&gt;&lt;img src=&quot;images/beachball_bollards.jpg&quot; alt=&quot;beach ball bollards&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/WorldBollard/status/1788538817722417613&quot;&gt;&lt;img src=&quot;images/pencil_bollards.jpg&quot; alt=&quot;pencil bollards&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/WorldBollard/status/1751345915376377934&quot;&gt;&lt;img src=&quot;images/walnut_bollard.jpg&quot; alt=&quot;walnut bollards&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/WorldBollard/status/1677758903419908096&quot;&gt;&lt;img src=&quot;images/sheep_bollards.jpg&quot; alt=&quot;sheep bollards&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/WorldBollard/status/1669443451471970304&quot;&gt;&lt;img src=&quot;images/tree_bollards.jpg&quot; alt=&quot;tree bollards&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I live in the Cheesman park area in Denver, there’s already plenty of bollards and bollard-passing objects (trees, light poles, boulders) and I’d love for there to be many more, following similar-enough patterns of what is already placed, with some reasonable, obvious iteration.&lt;/p&gt;

&lt;h2 id=&quot;17th-ave-intersection-fix-with-bollards-and-a-traffic-bean&quot;&gt;17th ave intersection fix with bollards and a traffic bean&lt;/h2&gt;

&lt;p&gt;Bollards are sorta fierce. Or, they can be. In the case of what we’ve been discussing recently, speeds could also be brought down reliably from an occasional max of 70 mph to a lot, lot less.&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/5W8BM-LBG-Q?si=-pVxMz3R2o_UtxyK&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;The traffic bean concept lives here: &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/interlude-a-pattern-of-repair-episode&quot;&gt;my substack about poynton, uk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application of that sorta shape to an intersection I know well, and prototypical of an average, complex intersection:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/a-pattern-of-repair-the-traffic-bean&quot;&gt;traffic bean for colefax/park/franklin junction&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;sound good with you?&lt;/p&gt;

&lt;h2 id=&quot;links&quot;&gt;Links&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://twitter.com/WorldBollard&quot;&gt;World Bollard Association twitter account&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://twitter.com/WorldBollard/status/1659861152254369792/photo/1&quot;&gt;Bollards to do cars what cars do to people…&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://people.com/1-dead-14-injured-after-suv-driver-crashes-into-savers-store-8641685&quot;&gt;1 Dead, 14 Injured After [vehicle operator presses wrong button]&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.tiktok.com/@zzelevv/video/7364123121873374506?_r=1&amp;amp;_t=8m2nIerAfQl&quot;&gt;reversed through his own garage, crashed through a condo that was going on the market friday&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.urbanismspeakeasy.com/p/take-another-look-at-where-they-put&quot;&gt;Take another look at where they put the guardrail&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://toronto.citynews.ca/2024/02/26/police-cruiser-crash-downtown-toronto-sidewalk/&quot;&gt;police officer takes a slow right turn… then continues and drives onto the sidewalk, lives saved by light post&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.securityinfowatch.com/perimeter-security/physical-hardening/personnel-vehicle-barriers/article/21151512/protecting-staff-patients-and-visitors-from-vehicle-assault&quot;&gt;Protecting staff, patients and visitors from vehicle assault&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bollards are like icebergs. Some bollards are not placed deep into the ground or very strong, and might deform under a vehicle impact. Some bollards are quite firmly placed.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/under_the_bollard.jpg&quot; alt=&quot;under_the_bollard&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://twitter.com/WorldBollard/status/1722713086274990229&quot;&gt;source: @worldbollard&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:will-not-be-named&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This was the city engineer of a local municipality, and I’ve had direct, 1:1 conversations with the city engineer in {another municipality in which I lived/owned property} after parents in a local neighborhood demanded a meeting about the dangerous road that their kids were walking to school alongside. The engineer said ‘due to traffic count data, the road does not qualify for any state-funded improvements’, which is obviously a 🖕🏻 to the kids he was failing. There are many cheap was to slow traffic without speed bumps, police, cameras, signs, and half million dollar increments of spending, but people committed to bad plans will use their poor imagination as a reason for why something must not be done. He gave me permission to run my own road experiments, though, which I did, and it worked great. I’ve since put together a page dedicated to some of my &lt;a href=&quot;/on-coning&quot;&gt;‘coning adventures’&lt;/a&gt; Alternatively, here’s some direct links to some videos of: &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7240680684472274218&quot;&gt;defining a pedestrian crossing better, causing vehicles to pick a path&lt;/a&gt;, &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7241802704287223083&quot;&gt;cones outside of a coffee shop, reduced noise from passing cars by at least 10 db, maybe more. Safey way up, too - drone footage&lt;/a&gt;, &lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7262554154684435755&quot;&gt;first pass on a really, really dangerous, wide, fast junction in northern colorado&lt;/a&gt;. &lt;a href=&quot;#fnref:will-not-be-named&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:driving-is-fine&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;“Driving isn’t that bad, Josh…” Click &lt;a href=&quot;https://www.youtube.com/results?search_query=car+crash+compilation&quot;&gt;here&lt;/a&gt; to open youtube with the search query &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;car crash compilation&lt;/code&gt;. Spend a few minutes looking around. These are relatively tame, permissible on youtube. Still horrifying. Add in some first hand and near-first-hand experiences with other sorts of related car experiences, or first-hand experience with &lt;em&gt;other&lt;/em&gt; people’s car-crash related deaths, and one can appreciate trying to minimize exposure to this particular hazard. Especially highways (because of the high speeds) and especially anything where incoming traffic can be just… pointing at you, with everyone hoping it works out, continuously. It’s the oposite of an appreciation that &lt;a href=&quot;https://how.complexsystems.fail&quot;&gt;complex systems exist&lt;/a&gt;. &lt;a href=&quot;#fnref:driving-is-fine&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:exit-voice-loyalty&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;To interact with local transportation administrations &lt;em&gt;requires&lt;/em&gt; that you 1) self-abandon by allowing oneself to be treated in a de-dignifying manner, and 2) maintain performative allegiance to a pseudo-scientific view of the world. &lt;a href=&quot;#fnref:exit-voice-loyalty&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:traffic-bean&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Engineering type people act like their work is inscrutable, but it’s not. They mostly implement cherry picked sections of this arcane book of religious utterances known as the ‘Manual of Uniform Traffic Control Devices’. (orange road signs. those are called ‘traffic control devices’. It takes itself so seriously) &lt;a href=&quot;#fnref:traffic-bean&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:i-wish-i-were-kidding&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Again, I say this, because when talking to more than one ‘city traffic engineer’, they all regurgitate the sentiment that gives us the plastic flex post - they say ‘nothing can be placed near to the path of a vehicle unless it is &lt;em&gt;crashworthy&lt;/em&gt; - this means it gets out of the way, or deforms gracefully to a vehicle, in case it’s struck. The entire point of a bollard is that it makes the vehicle deform, while the bollard doesn’t move at all. It’s proximity to the roadway is immaterial. It casts a shadow of safety and comfort behind it, for the people being actively protected by it from the danger of passing traffic. &lt;a href=&quot;#fnref:i-wish-i-were-kidding&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:current-coverage&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Since I first wrote this, I’ve seen a few 7/11s, both in my neighborhood near Cheesman park in Denver, and elsewhere when I pass them by, I notice if there’s bollards, what they look like, etc. If they’re pretty, how they’re constructed, what color they’re painted, what particular ‘positive outdoor space’ they create. It’s a mix, but I’ve never seen a bell bollard. &lt;a href=&quot;#fnref:current-coverage&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>2023 Annual Review</title>
   <link href="https://josh.works/2023-review"/>
   <updated>2024-01-27T13:00:00+00:00</updated>
   <id>https://josh.works/2023-annual-review</id>
   <content type="html">&lt;p&gt;It’s that time of the year. I often enjoy reading other people’s annual reviews, and I’ve always found value in writing my own, even as there is a few years I’ve missed, since I started the habit way back in 2015.&lt;/p&gt;

&lt;p&gt;for a long time, I did annual reviews. 2020 was late, and then for 2021, and 2022, no annual review, though not for lack of thinking about it.&lt;/p&gt;

&lt;p&gt;A three year gap is no better than a two year gap. I’ll possibly back-fill at some point, I have drafts floating around for both years, but for now I’ll just try to get 2023 out the door. If I type/write fast enough, I bet it’ll happen.&lt;/p&gt;

&lt;p&gt;My previous reviews: &lt;a href=&quot;/2020-review&quot;&gt;2020&lt;/a&gt;, &lt;a href=&quot;/2019-review&quot;&gt;2019&lt;/a&gt;, &lt;a href=&quot;/2018-review&quot;&gt;2018&lt;/a&gt;, &lt;a href=&quot;/2017-review&quot;&gt;2017&lt;/a&gt; , &lt;a href=&quot;/2016-most-dangerous-books&quot;&gt;2016&lt;/a&gt;, &lt;a href=&quot;/2015_the_year_i_didnt_think_much&quot;&gt;2015&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s been interesting having this website floating around. I can get snapshots of who I was in 2012, and see ways I’ve changed, and stayed the same, from then to now. The ways I’ve used this website have also shifted, dramatically, over the years. It doesn’t feel like it suits me as well as it once did, and I’d like to resolve that tension.&lt;/p&gt;

&lt;p&gt;I &lt;a href=&quot;/write-it-now&quot;&gt;believe in my bones that publishing early/often&lt;/a&gt;, and ‘working in public’, are often the best ways to go. So, onward.&lt;/p&gt;

&lt;p&gt;I’ve been both wanting to write this, and putting off writing this, for a long time. There’s also many other things I want to write, so any form of uncorking the bottle and getting things moving feels good-enough.&lt;/p&gt;

&lt;p&gt;I’ll be talking about the year from a few different lenses.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I theme through every review I’ve done will be continued here - travel, books, projects, people.&lt;/p&gt;

&lt;p&gt;I think in all of my writing, for all of the years I’ve written, I’ve found it easier to talk about the first three than the last.&lt;/p&gt;

&lt;p&gt;I’m experimentally publishing some stuff to substack. I won’t rehash it all here, but it’s an example of me trying to get the right handle for expressing something.&lt;/p&gt;

&lt;p&gt;I feel an intense need to write some things down, even if only for me, and I’ve felt stymied in this way for a while. To the degree that I write these words, I’m getting what I want. I’m basically promising myself to always write the first draft in as linear, stream-of-consciousness way, though I do permit myself to jump around. I do a lot of lists and headings and links, whatever feels flowy and effortless, I’ll do. I’ll be copy/pasting in from various other documents and notes I’ve got floating around.&lt;/p&gt;

&lt;h2 id=&quot;travel--places&quot;&gt;Travel &amp;amp; Places&lt;/h2&gt;

&lt;p&gt;Two months ago, as I was struggling to figure out how to vomit up everything I’d want in an annual review, or in this annual review, a friend suggested starting by bucketing it into the travel I did. I thought that was a great idea, so I started with a travel bucket, then also carved out a ‘books I read’ bucket.&lt;/p&gt;

&lt;p&gt;Then I wanted to carve out a ‘people’ bucket.&lt;/p&gt;

&lt;p&gt;All these wove together in perfectly normal ways, so lets begin.&lt;/p&gt;

&lt;p&gt;In 2023, I feel like I finally caught up (mostly) on some trips I’d been wanting to make for several years. 2023 &lt;em&gt;ended&lt;/em&gt; with a climbing trip to Viñales, Cuba with dear friends Mark and Dave. We’d first planned the trip for late March, 2020, after having &lt;a href=&quot;/climbing-in-cuba-2019&quot;&gt;gone a year earlier in 2019&lt;/a&gt;, but it was obviously cancelled by something called Covid, and then the last day of the year was returning from a crack climbing trip to Utah, and it was great, rung in the new year with friends, celebrating one of their weddings. Huzzah.&lt;/p&gt;

&lt;p&gt;Before Cuba, I was in denver for only two weeks between arriving from a prior trip, and departing for Viñales. I arrived in Denver from Bangkok, Thailand, after spending every day of my 30-day tourist Visa in Thailand. I’ll write much more about that month later, or below. Thailand was the last of three countries I spent time in for that trip:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Bali: I count it as distinct from Indonesia, in the same way that Okinawa is distinct from Japan. I spent nearly the entire time in &lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=16&amp;amp;latlng=13.76202,%20100.496793#&quot;&gt;Ubud&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Nepal: &lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=15&amp;amp;latlng=18.785264,%2098.992305#&quot;&gt;I spent a few days in Kathmandu&lt;/a&gt;, overlapped with a group of ten friends (!!!) passing through Kathmandu to go trekking. How lovely.&lt;/li&gt;
  &lt;li&gt;Thailand: Started in &lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=16&amp;amp;latlng=13.76202,%20100.496793&quot;&gt;Bangkok&lt;/a&gt;, then &lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=14&amp;amp;latlng=18.788586,%2098.991537&quot;&gt;Chiang Mai&lt;/a&gt;, then &lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=14&amp;amp;latlng=18.788586,%2098.991537#&quot;&gt;Pai&lt;/a&gt; and beyond.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This year I’ve also visited &lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=16&amp;amp;latlng=13.76202,%20100.496793#&quot;&gt;Taiwan&lt;/a&gt; (en route to Bali), spent a few days in Iceland, and spent a few weeks on the &lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=16&amp;amp;latlng=13.76202,%20100.496793#&quot;&gt;east coast of the USA, visiting friends/family&lt;/a&gt;, and spent some time traveling around the Colorado/western USA for climbing.&lt;/p&gt;

&lt;p&gt;All of those links open up a strange little web application, &lt;em&gt;the likes of which you’ve never seen before&lt;/em&gt;. It grew out of an intersection of software development and mobility networks. When I ride my scooter now, on basically every trip, I track the activity in Strava. I have ideas for fancier visualizations than what the web app currently renders, but even as is it’s interesting to me. I could speak at length about certain dynamics observed/experienced in road networks, using this data to clearly illustrate what I mean.&lt;/p&gt;

&lt;h2 id=&quot;eden&quot;&gt;Eden&lt;/h2&gt;

&lt;p&gt;She’s a delightful and lovely toddler. Quite enjoyable to observe and share space with. She’s got tons of independence, tons of love for snuggles, and curiosity and skillfulness and attentiveness. I feel privileged to know her, and look forward to many years of friendship and shared experiences.&lt;/p&gt;

&lt;p&gt;I’ve never resented her, and I find her very attentive, and easy to attune to. Her eye contact, sign language, attention/focus/use of tone, talking, etc. She’s just fun, and I find so much about her enjoyable.&lt;/p&gt;

&lt;p&gt;I could list a bunch of books I’ve read that I think relate well to parenting, I think they’ve helped me, but I’ve listed them elsewhere. I re-read at least two (great) parenting book this year (&lt;em&gt;Parenting from the Inside Out&lt;/em&gt;, &lt;em&gt;The Art of Roughhousing&lt;/em&gt;) and a few that I probably will not re-read.&lt;/p&gt;

&lt;p&gt;I’ve spent dramatically less time with her, at this point, than I would have expected for myself if you asked me about my hopes and dreams for Eden a year and two years ago. A long time ago I read a book title &lt;a href=&quot;https://www.amazon.com/Selfish-Reasons-Have-More-Kids/dp/0465028616&quot;&gt;Selfish reasons to have more kids&lt;/a&gt;, and it affected me. The author argues, among other things, that the point of ‘having kids’ isn’t to ‘possess children’, but to have a mutual friendship with your adult child. You can have 40 years of friendship with your child, as an adult, relative to the ~15 years you might know them as a child.&lt;/p&gt;

&lt;p&gt;To that end, avoid treating them in grievously dehumanizing ways when they’re children, and if you happen to treat them well-enough and with dignity, you might get to have a relationship with your child when they’re grown, and this is a relationship worth celebrating.&lt;/p&gt;

&lt;h2 id=&quot;books--reading&quot;&gt;Books &amp;amp; Reading&lt;/h2&gt;

&lt;p&gt;No good annual review would be complete without listing some standout reads. Here’s &lt;a href=&quot;https://www.goodreads.com/user/year_in_books/2023/27372191&quot;&gt;my year in books&lt;/a&gt; from GoodReads.&lt;/p&gt;

&lt;p&gt;Noteworthy items:&lt;/p&gt;

&lt;h4 id=&quot;the-jakarta-method-washingtons-anticommunist-crusade-and-the-mass-murder-program-that-shaped-our-world&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40887375-they-were-her-property&quot;&gt;The Jakarta Method: Washington’s Anticommunist Crusade and the Mass Murder Program that Shaped Our World&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;Bleh. Really good, but painful. I spent a lot of time in Indonesia this year, so when I encountered the book, it was an insteand read. Pairs well with &lt;a href=&quot;https://www.goodreads.com/author/show/22876.Chalmers_Johnson?from_search=true&amp;amp;from_srp=true&quot;&gt;Chalmers Johnson’s stuff&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Basically, the US Government has worked hard to support some Bad people who did a lot of bad things, leading to genocides, incalculable harm, hardship, pain, suffering, and an vacuous absence of goodness that otherwise could have existed, for hundreds of thousands of people across south/central America, and Asia. The tragedy is astounding, and but for a book like this, it would be easy to think something like this never happened. Not &lt;em&gt;only&lt;/em&gt; for westerners/americans/english speakers, but for the affected survivors.&lt;/p&gt;

&lt;p&gt;The author is incredible, the story is told well, skillfully, tragically.&lt;/p&gt;

&lt;h4 id=&quot;charles-chaplin-my-autobiography&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/118425.Charles_Chaplin&quot;&gt;Charles Chaplin: My Autobiography&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;Speaking of anti-communism, Charlie Chaplin resented that he got caught up in that American jingoistic ferver a few times. I absolutely loved his autobiography. Feels like a nice balance against &lt;a href=&quot;/robert-moses&quot;&gt;Robert Moses&lt;/a&gt;. He was an interesting person. Always lived between worlds (he was an immigrant in the USA), but also surfed/shaped the state-shift in media from ‘talkies’ to what we’d consider to be modern movies.&lt;/p&gt;

&lt;p&gt;I highlighted/marked many sections of the book, and since reading his autobiography have gladly watched a bunch of his movies, as I could find them on Youtube, or torrents.&lt;/p&gt;

&lt;p&gt;He’s delightful, feels as earnest, authentic, opinionated, as the &lt;a href=&quot;https://en.wikipedia.org/wiki/Studio_Ghibli#Feature_films&quot;&gt;Studio Ghibli production studio&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;they-were-her-property-white-women-as-slave-owners-in-the-american-south&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40887375-they-were-her-property&quot;&gt;They Were Her Property: White Women as Slave Owners in the American South&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;I’ve spent some time in/around the american South and with Southern Baptists, and, critically, in some places/cultures very different in disposition. Lots of comparing/contrasting data points.&lt;/p&gt;

&lt;p&gt;There’s a certain coldness and detachedness that is clearly outlined in this book, that once it’s so clearly enumerated, I think you can see it still persisting into white/southern/feminine/american ways of being today.&lt;/p&gt;

&lt;p&gt;Obviously the people who claimed ownership of other people imported their culture/entitlements from somewhere else, so I’m not claiming that anything in the American south is original. Just that there were distinctive bits of slaveholding culture that was visible then, and those bits continue to be visible now. I wish that were not the case.&lt;/p&gt;

&lt;p&gt;I have regularly recommended this book as possible promotive of one’s journey to improving their relationship with themselves and others. Clearly labeling unhealthy dynamics within oneself and around oneself is a good step towards harm reduction. White slaveholders loved to pour guilt and game onto those around them, and internalized the harms of&lt;/p&gt;

&lt;h4 id=&quot;all-who-go-do-not-return&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/22244929-all-who-go-do-not-return&quot;&gt;All Who Go Do Not Return&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;Fascinating autobiographic tale of a guy born into a rather religious Jewish community, located in NYC ends up leaving that community. Enjoyably for me, and maybe for you, software, and learning it and getting a first ‘secular’ job as a programmer, played a key portion of the story. Absolutely shed tears at least once.&lt;/p&gt;

&lt;h4 id=&quot;emotional-labor-the-invisible-work-shaping-our-lives-and-how-to-claim-our-power&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/60784361-emotional-labor&quot;&gt;Emotional Labor: The Invisible Work Shaping Our Lives and How to Claim Our Power&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;I want ‘emotional labor’ as a thing to be talked about more in society.&lt;/p&gt;

&lt;p&gt;There’s a certain forced, non-consensual codependency, societally, when the ‘work’ of things that gets called ‘emotional labor’ gets female-coded, and then tucked away, into the margin and periphery.&lt;/p&gt;

&lt;p&gt;There’s ‘gender stuff’, obviously, in this book, but it also all relates to class, ethnicity, supremacy culture, and more. It pairs well with &lt;a href=&quot;https://www.goodreads.com/book/show/41104077-invisible-women&quot;&gt;this other book about ‘data bias’ as relates to women&lt;/a&gt; and &lt;a href=&quot;https://www.goodreads.com/book/show/192313.Women_Don_t_Ask&quot;&gt;this book about negotiation&lt;/a&gt; and &lt;a href=&quot;https://www.kalzumeus.com/2012/01/23/salary-negotiation/&quot;&gt;this article about salary negotiation&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;people&quot;&gt;People&lt;/h2&gt;

&lt;p&gt;It often-enough feels like the biggest ups and downs can be fully wrapped up around people.&lt;/p&gt;

&lt;p&gt;I’ve noticed in myself arising over the last few years a very perceivable, felt sense of a loss of ability to feel secure, in a few ways, in the presence of others. (physical presence, sure, but also something that could be called ‘an emotional presence’.) Like most things like this, a small experience of something salient or evocative in the present can feel tightly, immediately connected to big experiences of the past.&lt;/p&gt;

&lt;p&gt;Because I know with familiarity what it feels like, and thus looks like, to be comfortable in the various people-y situations I find myself in today, I think I wander through them sometimes with a high level of anxiety, relative to how I think I experienced them in the past, but I just keep playing the role that I expect/imagine would be authentic if I was being the non-stressed version of me that I sometimes am. Sometimes this feels fine, sometimes it feels tiring.&lt;/p&gt;

&lt;p&gt;Obviously, some of this roots in experiences we’ve had as children, or as adults, or both. Anyway, I notice it, and notice myself trying to avoid various forms of pain/discomfort via something that boils down to ‘embodying the behaviors/thought-patterns of avoidance’.&lt;/p&gt;

&lt;p&gt;The last few years have involved a pretty heavy re-organization of my sense of self/place in community, vis-a-vis… everything.&lt;/p&gt;

&lt;p&gt;I also have noticed my default ‘safest’ stored-in-the-nervous-system response to perceived threat is to try to get small/imperceivable/unobservable, either to minimize the offense I might cause (and thus perhaps avoid inviting harm) or to minimize the exposed surface area if something bad does in fact happen.&lt;/p&gt;

&lt;p&gt;When I shrink and contract, to avoid discomfort, I might be satisfying a short-term goal, but it’s not a great pattern to plan on for the rest of my life. It’s not something that I would want for a loved one, or anyone.&lt;/p&gt;

&lt;p&gt;Not responding to something unpleasant feels like a much better initial response than a quick response, or a response that forces an issue or invites further discomfort, and sometimes there’s discomfort in simply being perceived. So, to interact with others is to be forced to feel perceived, and if that’s often-enough unenjoyable, meh. (obviously, articulated thusly, this is ‘self-sabotaging’, if you use that kind of language)&lt;/p&gt;

&lt;p&gt;This above statement of ‘sometimes interacting with people is unpleasant’ runs head-long into the opposite sentiment of ‘the best portions of the human experience seems inextricably relational’.&lt;/p&gt;

&lt;p&gt;I’ve long wanted to meet Alain Bertaud, and Marie-Agnes Bertaud. Sadly, she passed away of cancer before I got to meet her, but we had all been something of internet friends, united by mutuals, and an interest in, broadly, ‘urban economics’. I got to visit him in NYC, and we had a lovely dinner together, spoke much of Marie-Agnes, and in every way that whole brief trip through NYC was full of delight.&lt;/p&gt;

&lt;p&gt;I’ve drunk deeply from the upsides of the human experience in the last year, and I’m thankful for it, and the people who’ve shared in that with me, regardless of if they knew how much it meant/means to me.&lt;/p&gt;

&lt;p&gt;[TODO add photo with alain bertaud]&lt;/p&gt;

&lt;h3 id=&quot;anarchy-and-co-creation-and-mutuality&quot;&gt;Anarchy and co-creation and mutuality&lt;/h3&gt;

&lt;p&gt;Lots of this year was informed by books, but mostly by books I read in years prior.&lt;/p&gt;

&lt;p&gt;In 2017, I first read &lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority&lt;/a&gt;, and was insta-wrecked on the institution of ‘political authority’ as a needful given. Political ‘rule’ no more given then the religious ‘rulings’ of the catholic church in France in, say 1590. the best ‘desired outcomes’ of political authority are more available to those that refrain from relying upon the use of of violence and domination, which is intrinsic to political authority. So… reasonable people can simply throw it all out.&lt;/p&gt;

&lt;p&gt;Thus, I generally have called myself an anarchist, though semi-reluctantly, and never in a way associated with violence. Spraypainting capital “A”s on stuff is not my vibe.&lt;/p&gt;

&lt;p&gt;My favorite tool/weapon is a broom, used as intended.&lt;/p&gt;

&lt;p&gt;It’s easy for me to capture a sense of emotional safety while thinking about a low-coercion environment. At least easier then when I envision an environment where coercion is welcomed and used regularly. So, i like spaces that are full of co-creation and mutuality. I usually can be attuned to those dynamics well enough that I can ‘hold’ my end of whatever it is that we’re co-creating.&lt;/p&gt;

&lt;p&gt;So, when I encountered the words “relationship anarchy”, I was thrilled. Instantly did the standard google/library book rental/read-the-canon thing, and it feels quite right.&lt;/p&gt;

&lt;p&gt;It’s a big tent, and technically fully inclusive of the most male-dominated, authoritarian, controlling monogamous relationship style possible (as long as it’s fully consensual, it would simply be titled a ‘patriarchy kink’), and on the other side, something like the standard polyamorous/decolonizing-interpersonal-relationships crowd. There’s a lot of room for health and peacefulness under that umbrella. I’ve noted that I find the topic painful or difficult to write about, sometimes.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;painful or difficult to write about? wym?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example, I wrote, in 2023, &lt;a href=&quot;/on-leaving-evangelicalism&quot;&gt;a large piece about my formally updated stance towards evangelicalism&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I keep drafting “part 2” or “updates”, but find it to be difficult, so I avoid it some more.&lt;/p&gt;

&lt;p&gt;The topic is inclusive of things that have been both important to me, and occasionally filled with difficulty, so I either don’t like to tread there, or tread there unskillfully, or it sometimes hurts when I tread there. But also like a good stretch when pleasantly sore, it feels better immediately after.&lt;/p&gt;

&lt;h2 id=&quot;depression--sadness&quot;&gt;Depression &amp;amp; Sadness&lt;/h2&gt;

&lt;p&gt;In 2021, &lt;a href=&quot;/depression&quot;&gt;I wrote this piece about depression&lt;/a&gt;. I’m glad I wrote that! It’s nice to be able to capture snapshots of how things were for me at various times in my life.&lt;/p&gt;

&lt;p&gt;In that piece, I say “I’ve possibly been ‘giving depression’ since 2019”, and, well, we can keep on keeping on. I don’t even appreciate so much the phrasing around things like ‘depression’ and ‘mental health’, because of how individualistic and pejorative it is. So much of the depression and ‘mental health’ stuff that is floating around is ‘simply’ the deep, deep malaise that comes from living in something that at least is partially a war zone &lt;sup id=&quot;fnref:war-zone&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:war-zone&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, and an area full of devastation and sadness &lt;sup id=&quot;fnref:devastation&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:devastation&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;There’s plenty of global opportunities to feel a sense of insecurity, hopelessness, powerlessness. (Huzzah, yet &lt;em&gt;another&lt;/em&gt; American-sponsored genocide in the middle east.) This also isn’t the first time bad things like genocide have been easily viewable online. When I was young, as a chronically online internet-person, I spent time on reddit and liveleak, have seen &lt;em&gt;plenty&lt;/em&gt; of footage of people experiencing horrible things. From industrial accidents to vehicle accidents, all sorts of intentional and accidental, it was all available to the curious internet denizen of the 2010s. It’s not easy to feel disillusioned.&lt;/p&gt;

&lt;p&gt;I don’t really view depression as an illness, or something that needs to be medicated away.&lt;/p&gt;

&lt;p&gt;It’s actively destructive to everyone’s soul to be trapped in a car. There’s so much literature about how walkable neighborhoods are good, how communal Barcelona’s superblock structure is, how harmful and egregious it is to hear the noise and breath the tail pipe emissions, tire rubber microplastics, and break dust powder for vehicles.&lt;/p&gt;

&lt;p&gt;Because it’s ‘convenient’ and ‘connected to GDP’, and ‘an outgrowth of high modernism’, some people think cars in cities are reasonable, or that harm can be ameliorated by electric vehicles.&lt;sup id=&quot;fnref:convenient&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:convenient&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/americas-biggest-export-supremacy&quot;&gt;supremacy and domination of cars in cities&lt;/a&gt;, like legal bits around this supremacy&lt;sup id=&quot;fnref:supremacy&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:supremacy&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; is similar to how lead was used in food storage containers for a long time because it was convenient and there was momentum behind it, despite the fact that millions of people were  being harmed by that lead. &lt;sup id=&quot;fnref:lead&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:lead&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Lets talk about where and how many people in America live. I live in a city (Denver) but as of January, not in a particularly walkable neighborhood.&lt;sup id=&quot;fnref:walkable&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:walkable&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; I’ve sometimes lived in walkable places, sometimes not. Sometimes in the USA, sometimes not.&lt;/p&gt;

&lt;p&gt;Thus, when I read something like this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Living in a walkable neighborhood is linked to happiness. Such environments enhance the likelihood that residents feel more healthy and more trusting of others. Note, walkability is a measure of how easily residents can attain their daily needs by walking to key destinations from their home. &lt;a href=&quot;https://www.tandfonline.com/doi/full/10.1080/01944363.2022.2123382&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;However, the overwhelming impulse and energy for roads in America is &lt;em&gt;endless&lt;/em&gt; hostility towards every road user, including road users in full-sized cars. You can feel the entitlement some vehicle drivers feel, just radiating from their body. There’s also obviously many emotionally repressed people driving vehicles, and there’s plenty of violent and abusive people driving cars, all of whom look at everyone outside of their vehicle as an impediment to them experiencing the life they want to live.&lt;/p&gt;

&lt;p&gt;Lastly, roads (and the asphalt and steel contained therein) were used, between the 1920s and 1960s, by a variety of actors to accomplish their goals of social control.&lt;/p&gt;

&lt;p&gt;They talked openly among themselves about things like “How do we get rid of this neighborhood of mexicans?”, and then the local state DOT would say something like “Lets demolish the neighborhood and build giant huge roads through the whole thing.”&lt;/p&gt;

&lt;p&gt;And this happened time and time again, in every municipality in America.&lt;/p&gt;

&lt;p&gt;It’s painful and frustrating to witness this, and to feel powerless in doing anything about it. It doesn’t engender a sense of fondness towards evangelicals, &lt;a href=&quot;https://www.amazon.com/White-Too-Long-Supremacy-Christianity/dp/1982122862&quot;&gt;knowing that white evangelical churches/congregations/pastors were the biggest 20th century advocates for racial segregation in America&lt;/a&gt;, and strenuously (and successfully) worked to bring about various regimes of segregation. The ‘stuff’ of the American political structure is just settler colonialism mixed with head-in-the-sand propaganda fed to those settler populations, so they can act as if the populations that got colonized were somehow improved by it.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Gee, Josh, so you’re saying that part of the reason you’re depressed in 2023 is because of bad political decisions made 50-100 years ago?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yes, obviously this is/can be true. It’s overwhelmingly sad to see the eternal chewing maw of the American military gulping and consuming the world. It’s sad to see the bullying that America does, financially, to countries around the world. It’s sad to see how children are taught to hate themselves for how they look, because their skin color isn’t as light as it possibly good be. It’s sad to see giant billboards in Asia, telling everyone who looks at them that they’re only beautiful to the degree they look white, smooth, trim. Consume consume consume.&lt;/p&gt;

&lt;p&gt;Soooo I guess it feels like the most available mechanisms of relieving tumultuous emotional states in America is consumption. Food, TV (so much TV). sports. shopping. going to a brewery. alcohol. weed. lots of people consume exercise, and then we get gym culture. Or we can get perscribed pills, and take the edge off the angst for a time.&lt;/p&gt;

&lt;p&gt;It’s all papering over real holes in the fabric around us. I could say much, much more about all this, but for now I’ll just leave my standard recommendation for a book: &lt;a href=&quot;https://www.goodreads.com/book/show/20556323-complex-ptsd&quot;&gt;Complex PTSD: From Surviving to Thriving&lt;/a&gt;, and an &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/&quot;&gt;explanation for why the built america of the USA actively accomplishes ethnic cleansing&lt;/a&gt;, to the detriment of literally everyone, including those comprised of the oppressor class.&lt;/p&gt;

&lt;p&gt;Regularly enough, I’ve experienced the crushing sense of darkness, aloneness, inadequacy, inability to feel connected to community, and failure. I still overall like who I am and don’t begrudge myself &lt;em&gt;too&lt;/em&gt; much, but my gosh I certainly have felt like I’m going through the motions, trying to avoid over-burdening anyone else/myself too much, yet being acutely aware of all the various impacts I have on others. I know the standard therapist response to this, how to regain a sense of internal security, evaluating others for safe-enough relating, etc.&lt;/p&gt;

&lt;h2 id=&quot;things-im-thinking-about-for-2024&quot;&gt;Things I’m thinking about for 2024&lt;/h2&gt;

&lt;h3 id=&quot;scooters&quot;&gt;Scooters&lt;/h3&gt;

&lt;p&gt;scooters, parking lots and land use. It’s been living in my mind way too much since at least 2020, so i don’t expect to get free of it this year.&lt;/p&gt;

&lt;p&gt;Here’s a little app I built to visualize my own mobility data. Think of how it does and does not correspond to a google maps view of a city:&lt;/p&gt;

&lt;p&gt;[TODO: Add screenshot from mobility data app]&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=15&amp;amp;latlng=18.785264,%2098.992305&quot;&gt;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=15&amp;amp;latlng=18.785264,%2098.992305&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;1920s-1960s-era-ethnic-cleansing-in-america&quot;&gt;1920s-1960s-era Ethnic Cleansing in America&lt;/h3&gt;

&lt;p&gt;See also ‘land use policy’, ‘mobility networks’, ‘auto-dependency/car-culture’, ‘parking minimums’.&lt;/p&gt;

&lt;p&gt;This is the real top-level item. If I could charge rent to some entity for the amount of time this topic lives in my head and awareness…&lt;/p&gt;

&lt;p&gt;A theme throughout all the time I’ve spent traveling, either around Denver or around Asia, is to observe and perceive the influence of &lt;a href=&quot;https://en.wikipedia.org/wiki/Supremacism&quot;&gt;racial supremacists&lt;/a&gt; like &lt;a href=&quot;/robert-moses&quot;&gt;Robert Moses&lt;/a&gt;. People that are eugenicists, supremacists, wielding torrential streams of power.&lt;/p&gt;

&lt;p&gt;I started a substack: &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/introduction-land-use-regimes-very&quot;&gt;https://zoningverydifferentthanours.substack.com/p/introduction-land-use-regimes-very&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I made a drone video tiktok about an intersection in Thailand bearing his obvious fingerprints:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7311956274155982123&quot; data-video-id=&quot;7311956274155982123&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; &lt;p&gt;such an experiment. the audio was surprisingly annoying to deal with. should I have tried to do the captiona? tbd.&lt;/p&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - josh&quot; href=&quot;https://www.tiktok.com/music/original-sound-7311956512807668522?refer=embed&quot;&gt;♬ original sound - josh&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;This feels as pressing of an issue to me as I imagine actual slavery felt to ‘abolitionists’ (why do we label the default mode of existance? I say instead of calling people abolitionists, label the perversion: ‘non-slavers’.)&lt;/p&gt;

&lt;p&gt;So, for the regular people who saw and felt nothing but contempt for the hatefulness of slavery, some of what they felt then is what I feel now, watching adults work together, with actual effort, to perpetuate the institutions and norms of the inter-ethnic-group conflict in America of the 1850s-1960s, when ‘white’ people fought tooth and nail to maintain social control over all other ethnic groups, or ‘people of the global majority’.&lt;/p&gt;

&lt;p&gt;I see America as nothing more interesting than a mature state whole-heartedly given over to maturing from it’s early days of settler colonialism into a more durable and self-replicating version of the mindset of those colonialists, onto everyone. Their own children, and the colonized. Or, at least, to define the attitudes of those who don’t want to be colonized as ‘deviant’, ‘unintelligible’, ‘anti-progress’, and more.&lt;/p&gt;

&lt;p&gt;Related, I’ve read a book titled &lt;em&gt;Legal Systems Very Different Than Ours&lt;/em&gt;, and I do not attest that ‘political authority is real’. Even as I feel unbelievably constrained by this highly constraining system we live within, the ‘solution-space’ is enormous, and full of fun.&lt;/p&gt;

&lt;p&gt;I hold open contempt for certain policies, norms, practices, powers. This is fine. Quoting myself:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It’s totally appropriate and healthy to feel hate for that which is hateful.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I hate that because immature people continue to run road networks (and much more) in America, it’s considered reasonable that 40,000 people a year die on them, and untold millions more are negatively effected across every dimension of the human experience, because these road networks are basically held hostage by emotionally immature, violent people.&lt;/p&gt;

&lt;h3 id=&quot;pay-as-you-go-pricing-models-for-parking&quot;&gt;Pay-as-you-go pricing models for parking&lt;/h3&gt;

&lt;p&gt;Most parking in America is currently either free, fixed-cost per term ($100/mo) or fixed-cost per hour ($10/hr).&lt;/p&gt;

&lt;p&gt;Parking pricing is currently impervious to dynamics around usage and congestion, which means a ton of potential value is being completely missed.&lt;/p&gt;

&lt;h2 id=&quot;other-peoples-annual-reviews&quot;&gt;Other people’s annual reviews&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://danwang.co/2023-letter/&quot;&gt;Dan Wang, 2023&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;such is my annual review. This touches on a fraction of a life lived, and I know you, the reader, including future versions of me, are experiencing life at the normal, regular speed.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:war-zone&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;America/ethnic conflict between white people and people of the global majority &lt;a href=&quot;#fnref:war-zone&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:devastation&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Denver, city centers in the USA that have been touched by ‘urban renewal’/state-sponsored inter-ethnic-group violence. &lt;a href=&quot;#fnref:devastation&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:convenient&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;this is no different than proclaiming “the sun orbits the earth” because it’s politically expedient. &lt;a href=&quot;#fnref:convenient&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:supremacy&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;For example, that carless drivers &lt;em&gt;always&lt;/em&gt; must yield/submit to car-ed drivers, and must bear the indignities that come with that submission, is downstream of this supremacy thinking. In some cases, persons on both sides of the equation willingly and expectantly play the role of dominator and submitter. (hah. Sounds kinky.) &lt;a href=&quot;#fnref:supremacy&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:lead&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;NIH says:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;We estimate that over 170 million Americans alive today were exposed to high-lead levels in early childhood, several million of whom were exposed to five-plus times the current reference level.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;If your next google is ‘symptoms of lead poisoning’:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;Symptoms of lead poisoning include headaches, stomach cramps, constipation, muscle/joint pain, trouble sleeping, fatigue, irritability, and loss of sex drive. Most adults with lead poisoning don’t look or feel sick.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;That looks a &lt;em&gt;lot&lt;/em&gt; like what might get mis-diagnosed as ‘depression’. I don’t think I have lead poisoning, based on the age of the paint and the sources of drinking water I had growing up, but… meh, I think there’s explanatory power for ‘lead poisoning driving some of the irritability visible in the world today’.&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;Millions of tons of lead were added to gasoline worldwide beginning in 1922, and leaded gasoline has been a major source of population lead exposure. In 1960s, lead began to be removed from automotive gasoline. Removal was completed in 2021, with most of that removal being completed in the 1970s.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:lead&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:walkable&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;it’s residents tout their neighborhood as walkable, and as far as walkability in America goes, it is above-average, but on an absolute scale, it’s trash. I WAS living a few blocks east of Cheeseman Park, &lt;a href=&quot;https://joshs-mobility-data-54dab943ebba.herokuapp.com/?zoom=18&amp;amp;latlng=39.733297,%20-104.948788&quot;&gt;right here&lt;/a&gt;. There was nothing that wasn’t single-family-houses within a short walk. A &lt;em&gt;long&lt;/em&gt; and &lt;em&gt;unpleasant&lt;/em&gt; and &lt;em&gt;dangerous&lt;/em&gt; walk separated me from a grocery store, but I almost never actually did the walk, usually rode my scooter, and driving would have been hellish. &lt;a href=&quot;#fnref:walkable&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Trader Joe&apos;s Parking Lot</title>
   <link href="https://josh.works/trader-joes-parking"/>
   <updated>2023-12-13T13:00:00+00:00</updated>
   <id>https://josh.works/trader-joes-parking-lot</id>
   <content type="html">&lt;p&gt;Hey Trader Joe’s,&lt;/p&gt;

&lt;p&gt;This is a bit of an open letter, inspired by a recent visit to the local Trader Joe’s. I just moved to this part of Denver, and now for the first time am living within like a 3 minute scoot of a Trader Joe’s.&lt;/p&gt;

&lt;p&gt;I know that some people like to complain about parking at TJs. (Can I call it that? Trader Joe’s -&amp;gt; TJ’s?)&lt;/p&gt;

&lt;p&gt;Here’s a sampling from Reddit: &lt;a href=&quot;https://www.reddit.com/r/traderjoes/search/?q=parking&quot;&gt;https://www.reddit.com/r/traderjoes/search/?q=parking&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lots of people mis-understand parking lots, and so no matter what happens, someone’s going to complain about something. I sort of love that Trader Joe’s has smallish parking lots, and would love to scheme to make them &lt;em&gt;even smaller&lt;/em&gt;, while making the users of the parking lot and visitor’s to TJ &lt;em&gt;way happier&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This is something that can be done. It is already done in certain ways around the world. Different countries have common, accepted solutions to different portions of this “parking lot problem”. I’d like to work with TJ’s to cobble together an off-the-shelf solution to all/most of the issues.&lt;/p&gt;

&lt;p&gt;Obviously, there’s a lot of money to save, hassle to reduce, delight to be had, money to be made, by better managing business-critical capital, and parking lots are critical to the functioning of businesses.&lt;/p&gt;

&lt;p&gt;Lets talk about it.&lt;/p&gt;

&lt;p&gt;Email me, we can email/phone/IRL discuss it. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;joshthompson@hey.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;❤️,&lt;/p&gt;

&lt;p&gt;- Josh&lt;/p&gt;

&lt;h2 id=&quot;tiktok-footage-of-a-local-tjs-parking-lot&quot;&gt;Tiktok footage of a local TJ’s parking lot&lt;/h2&gt;

&lt;p&gt;Here’s footage to whet the appetite.&lt;/p&gt;

&lt;p&gt;Sometimes embeds show up strangely, so here’s direct links. I recommend clicking both:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7312191848838286638&quot;&gt;timelaps overhead shot (one)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.tiktok.com/@josh_exists/video/7312160766151593262&quot;&gt;timelapse overhead shot(two)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7312191848838286638&quot; data-video-id=&quot;7312191848838286638&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; lots to appreciate here. the audio is great I have thoughts on parking lots. I see them as hidden sources of abundance, currently not allowed to function as well as they might. a little love goes a long way. &lt;a title=&quot;fyp&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/fyp?refer=embed&quot;&gt;#fyp&lt;/a&gt; &lt;a title=&quot;dji&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/dji?refer=embed&quot;&gt;#dji&lt;/a&gt; &lt;a title=&quot;traderjoes&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/traderjoes?refer=embed&quot;&gt;#traderjoes&lt;/a&gt; &lt;a title=&quot;toyota&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/toyota?refer=embed&quot;&gt;#toyota&lt;/a&gt; &lt;a title=&quot;ford&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/ford?refer=embed&quot;&gt;#ford&lt;/a&gt; &lt;a title=&quot;denver&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/denver?refer=embed&quot;&gt;#denver&lt;/a&gt; &lt;a title=&quot;colorado&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/colorado?refer=embed&quot;&gt;#colorado&lt;/a&gt; &lt;a title=&quot;timelapse&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/timelapse?refer=embed&quot;&gt;#timelapse&lt;/a&gt; &lt;a title=&quot;carlessdriver&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/carlessdriver?refer=embed&quot;&gt;#carlessdriver&lt;/a&gt; &lt;a title=&quot;driverlesscar&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/driverlesscar?refer=embed&quot;&gt;#driverlesscar&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ Final Speech - From &amp;#34;The Great Dictator&amp;#34; - Charlie Chaplin&quot; href=&quot;https://www.tiktok.com/music/Final-Speech-From-The-Great-Dictator-6749243321119410177?refer=embed&quot;&gt;♬ Final Speech - From &amp;#34;The Great Dictator&amp;#34; - Charlie Chaplin&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7312160766151593262&quot; data-video-id=&quot;7312160766151593262&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; I&amp;#39;m gonna send this to someone at trader Joe&amp;#39;s. I&amp;#39;ll explain the book &amp;#39;the high cost of free parking&amp;#39;. &lt;a title=&quot;traderjoes&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/traderjoes?refer=embed&quot;&gt;#traderjoes&lt;/a&gt; &lt;a title=&quot;parking&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/parking?refer=embed&quot;&gt;#parking&lt;/a&gt; &lt;a title=&quot;drone&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/drone?refer=embed&quot;&gt;#drone&lt;/a&gt; &lt;a title=&quot;dji&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/dji?refer=embed&quot;&gt;#dji&lt;/a&gt; &lt;a title=&quot;timelapse&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/timelapse?refer=embed&quot;&gt;#timelapse&lt;/a&gt; &lt;a title=&quot;denver&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/denver?refer=embed&quot;&gt;#denver&lt;/a&gt; &lt;a title=&quot;colorado&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/colorado?refer=embed&quot;&gt;#colorado&lt;/a&gt; &lt;a title=&quot;freeparkingisnt&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/freeparkingisnt?refer=embed&quot;&gt;#freeparkingisnt&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - josh&quot; href=&quot;https://www.tiktok.com/music/original-sound-7312160889942084394?refer=embed&quot;&gt;♬ original sound - josh&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;

&lt;h2 id=&quot;online-comments-about-trader-joes-parking-lots&quot;&gt;Online comments about Trader Joe’s parking lots&lt;/h2&gt;

&lt;p&gt;Here’s what some online commentors have said about the parking lot:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I stopped going to Trader Joe’s weekly because of the parking lot situation. I knew it was only a matter of time that I would forced to murder someone in a Prius over a parking spot.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I drive past mine somewhat often and only go about once a month when I see it’s emptyish. Tend to buy more and go less frequently&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I live equal distance from two Trader Joe’s. The parking lots are decent compared to the one in Sherman Oaks. One of the local Trader Joe’s has a security guard who will assist the elderly getting out of the parking spots. That makes me return to that specific location.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I drive to a TJ further away because that one has more parking. The closer one is in an extremely dense neighborhood, and there is no guarantee you will ever park anywhere close to it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://www.reddit.com/r/traderjoes/comments/1426yd3/trader_joes_explains_why_their_parking_lots_are/&quot;&gt;source, reddit&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-managing-a-parking-lot-skillfully-looks-like&quot;&gt;what managing a parking lot skillfully looks like&lt;/h2&gt;

&lt;p&gt;Properly managed, a parking lot will always have about 10% capacity available. This means someone wanting to quickly enter, dash inside, and leave, will be able to do so.&lt;/p&gt;

&lt;p&gt;Ensuring availability means using price/cost to mediate demand.&lt;/p&gt;

&lt;p&gt;Donald Shoup wrote a book &lt;a href=&quot;https://www.amazon.com/High-Cost-Parking-Updated-Edition/dp/193236496X/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1332084228&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=markeurban-20&amp;amp;linkId=65aeac5942c99b794876bb2d2dc32bb0&quot;&gt;The High Cost of Free Parking&lt;/a&gt;, and has a standard recommendation for fixing parking. It would be preferable of american municipal planners properly managed on-street parking, but they don’t, so you, TJ’s, with a bit of my help, have to make up the difference.&lt;/p&gt;

&lt;p&gt;Donald Shoup says:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;charge appropriately for on-street and off-street parking&lt;/li&gt;
  &lt;li&gt;Spend the collected money exactly where it’s being collected&lt;/li&gt;
  &lt;li&gt;Remove parking minimums&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;TJ’s is obviously operating with different constraints than municipal planners, and I appreciate and can accommodate that. There’s plenty of improvement to be had, and TJ’s is in a better position to make this change than nearly anyone, because:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;car-heavy user base&lt;/li&gt;
  &lt;li&gt;very busy stores&lt;/li&gt;
  &lt;li&gt;limited parking&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;other-reading&quot;&gt;Other Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.mcsweeneys.net/articles/i-am-a-trader-joes-parking-lot-and-i-am-here-to-destroy-you&quot;&gt;I Am a Trader Joe’s Parking Lot and I Am Here to Destroy You (A Short Imagined Monologue)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;On Parking in Golden&quot;&gt;https://josh.works/parking-in-golden&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/traderjoes/comments/1426yd3/trader_joes_explains_why_their_parking_lots_are/&quot;&gt;Trader Joe’s explains why their parking lots are so small (r/traderjoes)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>The Power Broker, Chapter 30: Robert Moses and Mayor Vincent R. Impellitteri</title>
   <link href="https://josh.works/power-broker-ch-30-impy"/>
   <updated>2023-08-05T13:00:00+00:00</updated>
   <id>https://josh.works/power-broker-ch-30-impy</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Note from Josh: The following is an excerpt of chapter 34 of the Power Broker, called “Moses and the Mayors”. The chapter is about Moses’ relationship with all of the mayors of NYC that overlapped with Moses’ “rule” over NYC.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This excerpt covers just one of the mayors’ overlap with Moses’ rule, but the way Moses wields his power over the mayor is absolute, and defies summarization.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The mayor did nothing for several years but give Moses everything Moses asked for.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The following is an 11-page execerpt from &lt;strong&gt;The Power Broker&lt;/strong&gt;, pages 787-798.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I’m cleaning the text up and adding some footnotes where it feels appropriate&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I first drafted this in 2020!&lt;/em&gt;&lt;/p&gt;

&lt;h1 id=&quot;impy&quot;&gt;IMPY&lt;/h1&gt;

&lt;p&gt;All during August, Moses had been in South America, drawing up a Rockefeller-financed plan of improvements for São Paulo, utterly unaware of the events crushing in on O’Dwyer. But O’Dwyer’s resignation was to place the city in his power more completely than ever before.&lt;/p&gt;

&lt;p&gt;By law, the successor to a retiring mayor is the President of the City Council. By fate, the Council presidency was held in 1950 by an individual who, during the entire forty-five utterly undistinguished years of his life prior to his nomination to that $25,000-per-year post, had never been deemed worthy of holding any job more responsible than that of secretary, at $6,500 per year, to a judge named Schmuck.&lt;/p&gt;

&lt;p&gt;The nomination of this totally unknown minor Tammany ward heeler to the city’s second-highest elective office, the position of succession to the mayoralty, had “staggered,” in Warren Moscow’s words, “even the most imaginative among political reporters.” And so had the explanation of how he had obtained the nomination. At a last-minute reshuffling of the 1945 Democratic ticket, the leaders finally agreed on Lazarus Joseph for Comptroller, and then realized that since O’Dwyer was Irish and from Brooklyn, while Joseph was Jewish and from the Bronx, the slate could have ethnic and geographic balance only if its third member was an Italian from Manhattan-and were unable to think of a single Manhattan Italian official they could trust. After hours of impasse, one leader reasoned that since legal secretaryships to State Supreme Court justices carried a respectable salary for which little or no work was required, they would have been given oply “safest” of Democratic workers.&lt;/p&gt;

&lt;p&gt;Pulling out a little “Green Book,” the official directory of city employees, he turned to the list of legal secretaries, ran his finger down it looking for a name that even the dumbest voter be able to tell was Italian-and came to Vincent R. Impellitteri, “No one knew who the hell he was,” Reuben Lazarus was to recall, but, looking up Impellitteri’s address, the leaders determined that he lived in Manhattan, telephoned his district leader and were assured: “You don’t have to worry about him. He’s a good boy.”&lt;/p&gt;

&lt;p&gt;Although attested to privately by members of Tammany’s hierarchy (and by Moses, whose presence at the crucial ticket-making session - he was the only “outsider” there - reveals his standing with that hierarchy), this explanation seemed almost unbelievable - until one met Impellitteri.&lt;/p&gt;

&lt;p&gt;If he had a single qualification for the job other than the length of his name and the fact that it ended in a vowel, he kept it carefully hidden during his five-year tenure (he was re-elected with O’Dwyer in 1949) as Council President. “The perfect Throttlebottom,” Moscow called him. “He voted as the mayor told him to, on matters he did not necessarily understand, and spent most of his waking hours shaking hands at public dinners, political clambakes, and cornerstone layings too unimportant to merit the mayor’s presence.”&lt;/p&gt;

&lt;p&gt;Amiable but slow-witted, he was a joke among political insiders. But now he was mayor - and the joke was on the city.&lt;/p&gt;

&lt;p&gt;Impellitteri’s wits may have been slow, but he had two fast wits - ex-O’Dwyer aide Bill Donoghue and a young sharpie named Sydney S. Baron - as PR men.&lt;/p&gt;

&lt;p&gt;Impellitteri had to run in a special election in November if he wanted to hold the office he had fallen into, which meant that he had less than ten weeks in which to create an image and a record, and his PR men quickly hit on two ways to do it:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;first, take advantage of the fact that no one knew him, that he was therefore not identified with any political bosses, that his opponent, Ferdinand Pecora, was backed by Tammany boss DeSapio and that unable to get Impellitteri the Democratic nomination, the clique in Tammany that pulled his strings had him running as an independent, and portray him as the “anti-boss,” “anti-politician,” “anti-corrupttion” candidate (one of Baron’s better lines: “If Pecora is elected, Frank Costello will be your mayor. But the voice will be that of Pecora”);&lt;/li&gt;
  &lt;li&gt;second, identify him with Robert Moses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The price of that identification came high, both in specifics - Moses made Impellitteri pledge publicly that if he was elected, he would not re-appoint Finkelstein - and in generalities: Impellitteri privately promised Moses even more of a free hand than he had enjoyed under O’Dwyer in setting all city construction policies. But Impellitteri paid it. He got full value in return. Refusing an offer of the Republican nomination (time had dimmed at least some GOP leaders’ memories of 1934), Moses gave him his endorsement. “Even I, who thought that by this time I knew Bob and the lengths to which he would go, never thought he would go that far,” says Lazarus. Remonstrating, he said, “But, Bob, he hasn’t any capacity for the job at all!”&lt;/p&gt;

&lt;p&gt;Moses’ response? “He laughed at that.”&lt;/p&gt;

&lt;p&gt;Publicly, the Coordinator declared that Impellitteri “has shown extraordinary courage and independence.” And, as always, a Moses endorsement made almost every front page in town. (The Herald Tribune article stated: “It was not a political endorsement, Mr. Moses basing his support on his opinion that the Impellitteri administration was carrying out the city construction program as planned.”)&lt;/p&gt;

&lt;p&gt;Moses led Impellitteri around to officiate at openings of – and share in the credit and front-page pictures for – highways and housing projects with which he had had nothing to do except to affix his signature as Council President to documents his aides say he often had not even bothered to read.&lt;/p&gt;

&lt;p&gt;Most observers, noting that the campaign consisted mainly of charges and counter-charges of bossism and corruption, felt that the endorsement from an official characterized as “independent” and believed above corruption was an important factor almost as important as the decision by newspaper headline writers to call him “Impy” and thus give him a lovable public image-in Impellitteri’s victory, the first in the city’s history by a candidate running on an independent line without the support of either major party. And after his election, Impellitteri continued to pay the price eagerly.&lt;/p&gt;

&lt;p&gt;Thanks to his PR men and his physical appearance - his addiction to the blue suit and the boutonniere, combined with his iron-gray hair, deeply earnest mien and stolidity that during the campaign was mistaken for dignity, made him the very model of a modern mayor; at the approach of a camera his brow would furrow, his lips would purse, his jaw would jut and his eyes would focus on whatever piece of paper happened to be handy just as intently as if he understood the words written on it - Impy had run a great race, but once in possession of the prize he had won, he proved to have not the slightest idea of what to do with it.&lt;/p&gt;

&lt;p&gt;He disclaimed any influence over the Board of Estimate, telling reporters, “All I have is three votes on it, you know.” Mayors were always telling reporters that but City Hall insiders soon realized, to their astonish- ment, that this mayor believed it. Says one of his aides, Victor F. Condello: “Impy never understood that he had any power at all.” Once Condello suggested that the Mayor call the five borough presidents to an executive session to discuss a thorny issue. “Yeah,” the Mayor said, “that’s a good idea.” Pause. “You think they’ll come?”&lt;/p&gt;

&lt;p&gt;He was too timid to confront even his own subordinates. Once, a newspaper leveled detailed charges against one. The next time they met, the Mayor asked him if the charges were true. Of course not, the appointee said&lt;/p&gt;

&lt;p&gt;&lt;em&gt;more to come&lt;/em&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Let Me Fix [some of] Your Parking Problems</title>
   <link href="https://josh.works/get-more-from-your-parking-lots"/>
   <updated>2023-07-14T00:00:00+00:00</updated>
   <id>https://josh.works/parking_lot_consulting</id>
   <content type="html">&lt;p&gt;Hi there! I’m Josh, and I’m your local neighborhood advocate for overlooked spaces.&lt;/p&gt;

&lt;p&gt;Today, we’ll be focusing on parking lots.&lt;/p&gt;

&lt;p&gt;Your parking lot has a job to do, and every day, every night, rain or shine, hot or cold, clear, rainy, or snowy, your parking lot does the best it can at it’s job.&lt;/p&gt;

&lt;p&gt;But how well does it do it’s job? What &lt;em&gt;is&lt;/em&gt; the job of a parking lot, exactly, anyway?&lt;/p&gt;

&lt;h1 id=&quot;the-jobs-of-a-parking-lot&quot;&gt;The jobs of a parking lot&lt;/h1&gt;

&lt;p&gt;Like any potential representative of your business, at minimum, you want your parking lot to serve a certain function, around:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;storing vehicles&lt;/li&gt;
  &lt;li&gt;finding empty spaces&lt;/li&gt;
  &lt;li&gt;leaving the parking lot after finishing up at the facility&lt;/li&gt;
  &lt;li&gt;moving people from where they parked their vehicle to an entrance to your facility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And, again, like a representative of your business, you don’t want it to look dirty, unclean, slovenly, or dangerous.&lt;/p&gt;

&lt;h1 id=&quot;signs-your-parking-lot-might-be-broken&quot;&gt;Signs your parking lot might be broken&lt;/h1&gt;

&lt;p&gt;There’s a few ways you could determine if your parking lot is doing it’s job well or poorly. For example, are any of the following true for you?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;customers sometimes have difficulty finding open parking spaces, and instead “cruise” past many occupied spaces before finding an available space&lt;/li&gt;
  &lt;li&gt;heavy use of ‘desire paths’&lt;sup id=&quot;fnref:desire-path&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:desire-path&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;it feels ‘creepy’ under certain conditions/times of day, especially at night&lt;/li&gt;
  &lt;li&gt;first-time guests sometimes have a hard time finding where to park, and then quickly/confidently making their way to the entrance of your facility&lt;/li&gt;
  &lt;li&gt;at peak times of day, members/guests/customers know that if they wanted to visit your facility, they’d have a hard time finding a parking spot&lt;/li&gt;
  &lt;li&gt;you sometimes have conflict with other businesses that make use of nearby parking areas. Their customers park in your parking, or your customers sometimes park in their parking, and this causes friction&lt;/li&gt;
  &lt;li&gt;your parking lot doesn’t generate any 💰💰💰 , which pays for it’s own improvements.[^pay-for-itself]&lt;/li&gt;
  &lt;li&gt;if your parking lot &lt;em&gt;does&lt;/em&gt; generate revenue, it leaves a bad taste in the mouths of the users who have to pay. &lt;em&gt;most&lt;/em&gt; paid parking in America is not managed at a competent level.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember - people are creatures of habit and convenience. When we find parking lots difficult to deal with, we’re vastly less likely to frequent the business attached to that parking lot. &lt;em&gt;people will subconsiously avoid parking lots completely.&lt;/em&gt; &lt;sup id=&quot;fnref:dread-of-parking-lots&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:dread-of-parking-lots&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h1 id=&quot;the-cost-of-your-parking-lot-being-broken&quot;&gt;The cost of your parking lot being broken&lt;/h1&gt;

&lt;p&gt;There are real costs to your parking lot not doing it’s job well enough. The most obvious cost is the waste of customer good-will. While most people know that any issues with a parking lot isn’t necessarily the fault of the business they’re frequenting, not everyone knows this. Lots of people take their frustration on parking out directly on the business they’re trying to visit, and a ‘challenging’ parking lot costs you customers.&lt;/p&gt;

&lt;p&gt;To repeat a quote:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[That parking lot] is literally the worst, and is 10,000,000% why I’ll never go there again.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, in some cases, your parking lot costs you customers directly.&lt;/p&gt;

&lt;p&gt;Even if customers still push through the discomfort, though, clunking parking now costs your customers time, and frustration. It’s extremely annoying to ‘cruise’ around for parking.&lt;/p&gt;

&lt;h1 id=&quot;the-roi-of-fixing-your-parking-lot&quot;&gt;The ROI of fixing your parking lot&lt;/h1&gt;

&lt;h2 id=&quot;more-customers&quot;&gt;More Customers&lt;/h2&gt;

&lt;p&gt;A well-managed parking lot is an efficient parking lot. Would you like it more if every time someone came to your facility, they drove alone, or if they came as a group or two or three?&lt;/p&gt;

&lt;p&gt;If your parking is anywhere close to being full, you would want to see your visitors share cars. That takes the vehicle space consumption per person go from 300sqft of your parking lot to 150 sqft, or 100sq ft.&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7312191848838286638&quot; data-video-id=&quot;7312191848838286638&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; lots to appreciate here. the audio is great I have thoughts on parking lots. I see them as hidden sources of abundance, currently not allowed to function as well as they might. a little love goes a long way. &lt;a title=&quot;fyp&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/fyp?refer=embed&quot;&gt;#fyp&lt;/a&gt; &lt;a title=&quot;dji&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/dji?refer=embed&quot;&gt;#dji&lt;/a&gt; &lt;a title=&quot;traderjoes&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/traderjoes?refer=embed&quot;&gt;#traderjoes&lt;/a&gt; &lt;a title=&quot;toyota&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/toyota?refer=embed&quot;&gt;#toyota&lt;/a&gt; &lt;a title=&quot;ford&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/ford?refer=embed&quot;&gt;#ford&lt;/a&gt; &lt;a title=&quot;denver&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/denver?refer=embed&quot;&gt;#denver&lt;/a&gt; &lt;a title=&quot;colorado&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/colorado?refer=embed&quot;&gt;#colorado&lt;/a&gt; &lt;a title=&quot;timelapse&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/timelapse?refer=embed&quot;&gt;#timelapse&lt;/a&gt; &lt;a title=&quot;carlessdriver&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/carlessdriver?refer=embed&quot;&gt;#carlessdriver&lt;/a&gt; &lt;a title=&quot;driverlesscar&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/driverlesscar?refer=embed&quot;&gt;#driverlesscar&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ Final Speech - From &amp;#34;The Great Dictator&amp;#34; - Charlie Chaplin&quot; href=&quot;https://www.tiktok.com/music/Final-Speech-From-The-Great-Dictator-6749243321119410177?refer=embed&quot;&gt;♬ Final Speech - From &amp;#34;The Great Dictator&amp;#34; - Charlie Chaplin&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;nudge-towards-walkability&quot;&gt;Nudge towards walkability&lt;/h2&gt;

&lt;p&gt;Parking lots are never the destination - it’s the place that drivers go once they’ve parked their vehicle.&lt;/p&gt;

&lt;p&gt;If we work together, we’ll make sure to make certain appropriate places of your parking lot start to feel like the destination instead of the forgettable part. Converting a small portion of your lot from a revenue drain to a revenue generator could be, as you can imagine, meaningful.&lt;/p&gt;

&lt;h1 id=&quot;lets-look-at-some-parking-lots-together&quot;&gt;Let’s look at some parking lots together&lt;/h1&gt;

&lt;p&gt;Your parking lots do much more than hold parked cars.&lt;/p&gt;

&lt;p&gt;Here’s some of the parking lots I’ve looked at lately. Let’s talk about some of what we see.&lt;/p&gt;

&lt;p&gt;First, here’s the things I tend to notice, on first blush:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;How &lt;em&gt;big&lt;/em&gt; is the parking lot. how many spaces?&lt;/li&gt;
  &lt;li&gt;how cozy is it? Is there shade anywhere during the day? How is it illuminated at night?&lt;/li&gt;
  &lt;li&gt;What part of the parking lot is closest to the main entrance? This portion of your parking lot will be the busiest and most important part.&lt;/li&gt;
  &lt;li&gt;How wide are the driving lanes? How easy is it to find available spots?&lt;/li&gt;
  &lt;li&gt;Do people ‘cruise’ a lot when looking for parking?&lt;/li&gt;
  &lt;li&gt;What kind of situations and dynamics exist around the junction between your parking lot and adjoining roads? Do customers have an easy and safe and protect way to get &lt;em&gt;into&lt;/em&gt; your parking lot, without having to wait a long time for a gap in traffic?&lt;/li&gt;
  &lt;li&gt;When leaving your parking lot, is it easy-enough to get going the desired direction on the local roads?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here’s some other data-based questions that can be answered with observation or conversations:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;How long is the longest time it took someone to find a parking spot in the last week?&lt;/li&gt;
  &lt;li&gt;how common are break-ins? is there an issue of safety in the parking lot, either from people in cars, or people not in cars?&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7193477270680522026&quot; data-video-id=&quot;7193477270680522026&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; &lt;a title=&quot;mobility_networks&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/mobility_networks?refer=embed&quot;&gt;#mobility_networks&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ Tropical, summer-like reggaeton beats(1127821) - Mushuz&quot; href=&quot;https://www.tiktok.com/music/Tropical-summer-like-reggaeton-beats-1127821-7031703968455591937?refer=embed&quot;&gt;♬ Tropical, summer-like reggaeton beats(1127821) - Mushuz&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;I’ve been getting better at getting good footage from my drone:&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7202264574463151403&quot; data-video-id=&quot;7202264574463151403&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; &lt;a title=&quot;capcut&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/capcut?refer=embed&quot;&gt;#CapCut&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - josh&quot; href=&quot;https://www.tiktok.com/music/original-sound-7202264630851472174?refer=embed&quot;&gt;♬ original sound - josh&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7246795537779838251&quot; data-video-id=&quot;7246795537779838251&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; Denver traffic drone timelapse, again.&lt;a title=&quot;drone&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/drone?refer=embed&quot;&gt;#drone&lt;/a&gt; &lt;a title=&quot;timelapse&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/timelapse?refer=embed&quot;&gt;#timelapse&lt;/a&gt; &lt;a title=&quot;fyp&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/fyp?refer=embed&quot;&gt;#fyp&lt;/a&gt; &lt;a title=&quot;denver&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/denver?refer=embed&quot;&gt;#denver&lt;/a&gt; &lt;a title=&quot;mobility_network&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/mobility_network?refer=embed&quot;&gt;#mobility_network&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ Stuck In The Middle - Tai Verdes&quot; href=&quot;https://www.tiktok.com/music/Stuck-In-The-Middle-6832618984580335617?refer=embed&quot;&gt;♬ Stuck In The Middle - Tai Verdes&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Now, lets’s stop thinking about your parking lot for a minute, and think of what a parking lot can represent at it’s best.&lt;/p&gt;

&lt;p&gt;Sometimes some of the space in or around a parking lot might serve as a &lt;a href=&quot;https://en.wikipedia.org/wiki/Third_place&quot;&gt;third space&lt;/a&gt;, or a pathway for your customers from one place (where they parked) to another (your business) and back, or for non-customers or future customers to pass by your business. Third spaces are best when they are &lt;em&gt;beautiful&lt;/em&gt;, so a defining question you can ask of your parking lot is - is it beautiful?&lt;/p&gt;

&lt;p&gt;If it isn’t beautiful, or at least there are not spots of beauty, then there ISN’T ‘third space’ vibes in your parking lot, this is one of the things I can eventually fix, but only in parallel with making it feel clean and safe.&lt;/p&gt;

&lt;h1 id=&quot;how-id-start-improving-your-parking-lot&quot;&gt;How I’d start improving your parking lot&lt;/h1&gt;

&lt;p&gt;You might be intrigued, now, and inclined to investigate more.&lt;/p&gt;

&lt;p&gt;The easiest next step would be to pop your email address into this form below, and you’ll automatically get a few emails over the next two weeks that will make you an even more sophisticated observer and evaluator of your parking lot.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;TODO for Josh: add email collection form here&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;in the meantime &lt;a href=&quot;mailto:joshthompson@hey.com&quot;&gt;send me an email&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s what we’ll do, when we start working on your parking lot together:&lt;/p&gt;

&lt;h2 id=&quot;step-1-evaluation-of-what-its-job-to-be-done-is-and-how-well-its-doing-it&quot;&gt;Step 1: Evaluation of what it’s “job to be done” is, and how well it’s doing it&lt;/h2&gt;

&lt;p&gt;As you can imagine, there’s lots of similarities between parking lots across America, but every parking lot is a little distinctive. Step one will be opening up the parking lot on Google maps/google earth, and seeing how it looks.&lt;/p&gt;

&lt;h2 id=&quot;step-2-modify-the-flow-of-vehicles-to-make-the-most-dangerous-parts-of-the-parking-lot-safe&quot;&gt;Step 2: Modify the ‘flow’ of vehicles to make the most dangerous parts of the parking lot safe&lt;/h2&gt;

&lt;p&gt;First, we’d aim to make safer spots where cars and people have dangerous interactions. In the USA, incidents involving cars striking pedestrians continue to climb, and whichever part of your parking lot feels dangerous is what we’ll fix first.&lt;/p&gt;

&lt;p&gt;Here’s some videos about how I’ve improved the safety and convenience of certain spots, with far more time spent recording the video than I spent modifying the space.&lt;/p&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7240611295966268718&quot; data-video-id=&quot;7240611295966268718&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; part 2? or 15? gosh it&amp;#39;s a long and boring story I could tell &lt;a title=&quot;traffic&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/traffic?refer=embed&quot;&gt;#traffic&lt;/a&gt; &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - josh&quot; href=&quot;https://www.tiktok.com/music/original-sound-7240611323795622698?refer=embed&quot;&gt;♬ original sound - josh&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;blockquote class=&quot;tiktok-embed&quot; cite=&quot;https://www.tiktok.com/@josh_exists/video/7241670267485932843&quot; data-video-id=&quot;7241670267485932843&quot; style=&quot;max-width: 605px;min-width: 325px;&quot;&gt; &lt;section&gt; &lt;a target=&quot;_blank&quot; title=&quot;@josh_exists&quot; href=&quot;https://www.tiktok.com/@josh_exists?refer=embed&quot;&gt;@josh_exists&lt;/a&gt; turns out I&amp;#39;m really into traffic cones on the (real or imaginary) center lines of roads. reduces all three sources of vehicle pollution (tailpipe emissions, brake dust, tire microplastics). &lt;a title=&quot;mobilitynetwork&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/mobilitynetwork?refer=embed&quot;&gt;#mobilitynetwork&lt;/a&gt; &lt;a title=&quot;networkanalysis&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/networkanalysis?refer=embed&quot;&gt;#networkanalysis&lt;/a&gt; &lt;a title=&quot;showdonttell&quot; target=&quot;_blank&quot; href=&quot;https://www.tiktok.com/tag/showdonttell?refer=embed&quot;&gt;#showdonttell&lt;/a&gt; I have at least some explicit permission from the city engineer, the mayor, and the police! This is all for demonstration. is love to make it permanent and beautiful eventually.@josh_exists &lt;a target=&quot;_blank&quot; title=&quot;♬ original sound - josh&quot; href=&quot;https://www.tiktok.com/music/original-sound-7241670290613422894?refer=embed&quot;&gt;♬ original sound - josh&lt;/a&gt; &lt;/section&gt; &lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://www.tiktok.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;step-3-make-some-affordances-for-the-people-walking-back-and-forth-through-your-parking-lot&quot;&gt;Step 3: Make some affordances for the people walking back and forth through your parking lot&lt;/h2&gt;

&lt;p&gt;Next, we’ll decide what part of your parking lot is already the most heavily used by people, closest to gathering points, and naturally comfortable.&lt;/p&gt;

&lt;p&gt;We’ll make it &lt;em&gt;more&lt;/em&gt; comfortable, and add small/cheap bits of ‘street furnature’ to create some outdoor spaces, by creating the feeling of semi-enclosed spaces.&lt;/p&gt;

&lt;p&gt;For example, we could add some outdoor string lights on a timer to cozy up the space on those dark winter evenings.&lt;/p&gt;

&lt;p&gt;This can be accomplished by an easy arrangement of something no more fancy than a few medium-sized metal planters and some thin wood posts, but can instantly change the vibe and shape of the space.&lt;/p&gt;

&lt;p&gt;Rinse, and repeat.&lt;/p&gt;

&lt;p&gt;Ready to get in touch? &lt;a href=&quot;mailto:joshthompson@hey.com&quot;&gt;send me an email&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/h1&gt;

&lt;h2 id=&quot;why-do-you-work-directly-with-businesses-to-provide-this-service-instead-of-talking-to-local-municipality&quot;&gt;Why do you work directly with businesses to provide this service instead of talking to {local municipality}?&lt;/h2&gt;

&lt;p&gt;I actually have spoken to many local municipalities, and that’s what led me to this current service!&lt;/p&gt;

&lt;p&gt;I’ve found many ‘local municipal traffic &amp;amp; right-of-way people’ to be quite amenable to what I’m working on, and anytime I’ve brought a sensible plan to them and the resources to implement it, they’ve supported it, no matter how resource-constrained they are in terms of calendar, budget, etc.&lt;/p&gt;

&lt;p&gt;I’ve worked with city engineers, planning staff, public works officials, political leaders (mayors, city council people) and more, and in every case have walked away with a solution everyone’s happy with.&lt;/p&gt;

&lt;p&gt;That all said, I’ve found that there’s quite a lot of ‘work that can be done’ before any of that work escalates to something that would make sense to loop the city in on. So, I’ll do the work for you that doesn’t involve the local municipality, and then when it becomes needful to include them, i can handle much of that work as well.&lt;/p&gt;

&lt;h2 id=&quot;why-do-you-talk-so-much-about-the-flow-of-traffic-whats-the-difference-between-hiring-you-and-just-adding-some-seating-outside-myself&quot;&gt;Why do you talk so much about the ‘flow’ of traffic? What’s the difference between hiring you and ‘just’ adding some seating outside myself?&lt;/h2&gt;

&lt;p&gt;It is easy to imagine making changes to your parking lot, but it would be harmful to your business to make any changes that didn’t make the experience b&lt;/p&gt;

&lt;p&gt;Because traffic cones are the first tool I use for changing how traffic flows through an area. Cars, bikes, and people ‘flow’ a bit like water, a bit like a gas.&lt;/p&gt;

&lt;p&gt;Traffic cones are like placing a rock in a stream - it changes the flow of the water, even as it doesn’t change how much water flows through the space.&lt;/p&gt;

&lt;p&gt;This concept is the core of how I start making fixes in a given area. I look at it, watch it for a while, see how people use it, and then start making experimental changes. As few as one or two cones can make a big difference in very specific ways.&lt;/p&gt;

&lt;h2 id=&quot;how-do-you-price-this&quot;&gt;How do you price this?&lt;/h2&gt;

&lt;p&gt;First, we schedule a roadmapping session - in person, if possible, via zoom if not. This is a fixed fee, and is no more onerous to you than us participating in a zoom call where I present my initial findings, gathered from google earth, street view, and any photos or videos you and I can get.&lt;/p&gt;

&lt;p&gt;This is a fixed, one-time fee. From it you’ll get a report outlining what I think should be done, in a way that minimizes effort on everyone’s behalf.&lt;/p&gt;

&lt;p&gt;Next, if you’d like to oversee the implementation yourself, I can be available on a retainer to help navigate the project.&lt;/p&gt;

&lt;p&gt;If you want me to oversee it directly, that is also available on something of a consulting model. In some circumstances, I might do at least some of the work directly, and where it makes sense, I’ll be on-sight to directly guide the project.&lt;/p&gt;

&lt;p&gt;I price by a flat fee for the initial consult. A small parking area is $500, a large one (200 spaces +) will cost $3000.&lt;/p&gt;

&lt;p&gt;the optional retainer, consulting, and implementation options will all be shared in the roadmapping document.&lt;/p&gt;

&lt;h2 id=&quot;what-kind-of-improvements-will-you-bring-about&quot;&gt;What kind of improvements will you bring about?&lt;/h2&gt;

&lt;p&gt;I’ll help your parking lot fit more vehicles, i’ll help your visitors spend less time looking for parking, and overall, they will all appreciate how intentional &lt;em&gt;you&lt;/em&gt; are about tending well to your whole lot.&lt;/p&gt;

&lt;p&gt;There’s behavior change baked into all of this, but primarily by creating attractive paths and patterns that we most want your customers to use. I’m rather opposed to coercion, and even see the existence of some written signs and notifications as a possible failure of good design.&lt;/p&gt;

&lt;h2 id=&quot;what-sort-of-ideaspeopleideas-are-you-implementing&quot;&gt;What sort of ideas/people/ideas are you implementing?&lt;/h2&gt;

&lt;p&gt;I endeavor to appropriately channel four people: Christopher Alexander, Donald Shoup, and Alain Bertaud, and Caroline Criado Perez.&lt;/p&gt;

&lt;p&gt;Christopher Alexander wrote &lt;a href=&quot;https://www.amazon.com/Pattern-Language-Buildings-Construction-Environmental/dp/0195019199&quot;&gt;A Pattern Language&lt;/a&gt; and &lt;a href=&quot;https://www.amazon.com/Timeless-Way-Building-Christopher-Alexander/dp/0195024028/ref=d_m_crc_dp_lf_d_t1_sccl_3_1/145-4080801-7828331?pd_rd_w=LL7qd&amp;amp;content-id=amzn1.sym.5d471845-5073-424b-b27b-c0676f48a016&amp;amp;pf_rd_p=5d471845-5073-424b-b27b-c0676f48a016&amp;amp;pf_rd_r=G3ME55JJPFQECNN134C4&amp;amp;pd_rd_wg=6JBDV&amp;amp;pd_rd_r=efa20171-626b-408d-aeef-866fb49a7079&amp;amp;pd_rd_i=0195024028&amp;amp;psc=1&quot;&gt;The Timeless Way of Building&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Donald Shoup wrote &lt;a href=&quot;https://www.amazon.com/High-Cost-Parking-Updated-Edition/dp/193236496X/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1332084228&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=markeurban-20&amp;amp;linkId=65aeac5942c99b794876bb2d2dc32bb0&quot;&gt;The High Cost of Free Parking&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Alain Bertaud, urban economist, wrote &lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design&quot;&gt;Order Without Design&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Caroline Criado Perez  wrote &lt;a href=&quot;https://www.amazon.com/Invisible-Women-audiobook/dp/B07RCZ69GP/ref=sr_1_1?crid=1J6OEJ36JREQC&amp;amp;keywords=invisible+women+book&amp;amp;qid=1693600659&amp;amp;s=books&amp;amp;sprefix=invisible+wome%2Cstripbooks%2C138&amp;amp;sr=1-1&quot;&gt;Invisible Women: Data Bias in a World Designed for Men&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are many additional layers of constraints, unique to, say, Denver. There’s DOTI, the right-of-way office, planning, snow removal, event coordination, enforcement.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:desire-path&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;A ‘desire path’ is an ‘unofficial’ path, usually made by people choosing to walk where there isn’t an official path. Generally, if you want to help people get to where they want to go, a good rule of thumb is to identify all desire paths as they appear, and add some ‘dressing’ to the path to make it official, and safe. Desire paths often start as dirt paths, and these get muddy in the rain, dangerous in the snow, and are rarely ploughed. &lt;a href=&quot;#fnref:desire-path&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:dread-of-parking-lots&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;For example, here’s a passionate complaint about a Trader Joe’s parking lot. Trader Joe’s is losing business because the parking lot is so bad at it’s job:&lt;/p&gt;

      &lt;p&gt;&lt;a href=&quot;&quot;&gt;I Am a Trader Joe’s Parking Lot and I am Here to Destroy You&lt;/a&gt; (finish this copy/paste from WA, add fb comment screenshots)&lt;/p&gt;

      &lt;p&gt;Here’s the kinds of things people say:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;Can we all agree that [this parking lot] is the most terrible one in Boise (I mean it’s like a pit of hell)?&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;blockquote&gt;
        &lt;p&gt;When I want to go to Trader Joe’s I always think… ‘do I really want to park in there?’&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;blockquote&gt;
        &lt;p&gt;[That parking lot] is literally the worst, and is 10,000,000% why I’ll never go there again.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;blockquote&gt;
        &lt;p&gt;It’s horrible. I avoid Trader Joe’s just because of the parking lot.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;&lt;em&gt;add screenshots/google maps/google earth/street view data&lt;/em&gt; &lt;a href=&quot;#fnref:dread-of-parking-lots&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>On Leaving Evangelicalism And Opposing It</title>
   <link href="https://josh.works/on-leaving-evangelicalism"/>
   <updated>2023-05-18T13:00:00+00:00</updated>
   <id>https://josh.works/on-leaving-evangelicalism-and-opposing-it</id>
   <content type="html">&lt;h1 id=&quot;content-warning--summary&quot;&gt;Content warning &amp;amp; summary&lt;/h1&gt;

&lt;p&gt;This paper talks about ethics, ethical behavior, violence, abuse, complicacy, complicity, being complicit/unwilling complicity, domination and oppression. Nobility ethics, colonialism, chattel slavery, supremacy.&lt;/p&gt;

&lt;p&gt;I’m sorta writing this towards a younger me - maybe if I’d found some of these books floating around when I was in high school, I’d have dodged some of the harm. I found myself raised by evangelicals, and I sometimes felt that something was not quite right about it. Sometimes I was gung-ho about it all. I never vibed with many of the political tenets of evangelicalism, and early in my life I remember shedding other tenets (like the evangelical love of war), but it wasn’t until more recently that &lt;em&gt;this particular&lt;/em&gt; lense of evangelicalism clicked into view.&lt;/p&gt;

&lt;p&gt;Here’s a brief summary of some of the information i’ll present below about the intellectual origin of modern evangelicalism:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The theological underpinnings of modern evangelicalism are two-fold:&lt;/p&gt;

  &lt;p&gt;First, a guy named Anselm, around 1100 AD, invented/theorized the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;satisfaction theory of atonement&lt;/code&gt;. It was a theological justification for and support of &lt;a href=&quot;https://en.wikipedia.org/wiki/Nobility&quot;&gt;nobility ethics/norms&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Chivalry&quot;&gt;chivalry ethics/norms&lt;/a&gt;.&lt;/p&gt;

  &lt;p&gt;Second, the puritans (john calvin, martin luther, others of that 1500s ilk) openly advocated &lt;em&gt;actual genocide&lt;/em&gt; against certain other groups of sorta-christians (‘the anabaptists’) who didn’t consider themselves to be part of a particular church, &lt;em&gt;because&lt;/em&gt; they didn’t consider themselves to be part of a particular church.&lt;/p&gt;

  &lt;p&gt;Since Calvin and people like him are big in Evangelicalism, this “poisoned the well”, in my mind, of all the resources associated with them, or downstream of them. It also has sensitised me a bit to the smell of people who think/talk like Calvin. &lt;sup id=&quot;fnref:on-punishment&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:on-punishment&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;

  &lt;p&gt;if you want it to get worse, it can. The southern baptist denomination split off from the baptist denomination because _despite the baptists being pro-slavery, they were not pro-slavery enough for the southerners, so they split off into the southern baptists.&lt;/p&gt;

  &lt;p&gt;Therefore, everything associated with the puritans AND/OR the satisfaction view of atonement is completely polluted with murder, violence, and domination.&lt;sup id=&quot;fnref:burden-of-proof&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:burden-of-proof&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; The evangelical church in america, and the southern baptists in particular, &lt;em&gt;openly modified their theology to best accommodate the ethics of chattel slavery.&lt;/em&gt;, and those modifications persist today.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;“Modern christians” don’t resort to physical violence quite as quickly as their intellectual forbearers (slavers), but they instantly reach for tools of psychological and verbal coercion as soon as they see something that looks “out of line”.&lt;/p&gt;

&lt;p&gt;Those willing to use verbal and psychological coercion, in justifying that coercion, find themselves as bedfellows with those who use physical violence, and the spawn of that union is demonic. America’s global military empire (and its &lt;em&gt;domestic&lt;/em&gt; military empire) is firmly rooted in the logical extension of this verbal and psychological coercion. Police yelling at a black man to “stop resisting!” and the US military’s message to brown people of “accept our democracy” lives close to the message parents coerce on their children, which is “you will do whatever I tell you, and i will psychologically torture you until you comply.”&lt;/p&gt;

&lt;h1 id=&quot;who-this-post-is-forwho-might-find-this-interesting&quot;&gt;Who this post is for/who might find this interesting&lt;/h1&gt;

&lt;p&gt;I’ve always enjoyed a good house party, and any good party is more fun when there’s more people. So, in honor of me ‘leaving evangelicalism’, I’m sorta throwing myself a party, and trying to get a few more people to show up. &lt;sup id=&quot;fnref:whofor&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:whofor&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;If it seems I’ve arrived at a ‘theologically novel spot’, my honor requires me to push back and say “this is neither novel, nor difficult to arrive at”.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;This is love letter to an earlier and younger version of myself.&lt;/p&gt;

&lt;p&gt;I experienced difficulty of many shades, because I was trying hard to fit into, and live according to, a system and regime that I thought was capable of absorbing my energy and giving me back something worthwhile, something that would justify what I was giving it.&lt;/p&gt;

&lt;p&gt;I eagerly pursued safety for myself, relative to caretakers around me, and with the naïvety only children can embody, tried (unsuccessfully) to obtain safety from them while maintaining an individuated sense of self. I clung to this regime of thought through much of my early adulthood.&lt;/p&gt;

&lt;p&gt;I relied on this regime of religiosity to intermediate all sorts of relationships. Relationships with my family, friends, and myself. This religiosity wasn’t capable of intermediating these relationships healthfully, and I experienced pain and harm as a result, without ever understanding why the pain was so poignant, the hurt so profound, the loneliness and abandonment so bottomless.&lt;sup id=&quot;fnref:empty&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:empty&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The world needs soulful, lively people. Some of you have been raised in toxic and abusive environments and don’t yet know it. Your soul may have been crushed, repeatedly, until you relented and consented to whatever regime you were under, and you don’t even remember that this ever happened.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I’m basically writing this document as a mix of an “impassioned open letter”, and “a list of resources and concepts that I wish I’d encountered years earlier in my life.”&lt;/p&gt;

&lt;p&gt;From birth, my parents had me firmly ensconced in the evangelical church traditions.&lt;/p&gt;

&lt;p&gt;I was raised in an abusive and neglectful household. I call it a cult, in several ways. Because I was surrounded by others from the same group/cult, it took a long time to get far enough from it that I could see it clearly.&lt;/p&gt;

&lt;p&gt;This post is an explanation of how, without ever intending to, I found myself to have walked out of that camp of evangelicalism, and from their point of view I’m now firmly planted in “heretical theological hinterlands”, and vastly better off for it.&lt;sup id=&quot;fnref:heresy&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:heresy&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;From my own point of view of myself on my own change, there is a coherent line of thought, way of being, intellectual purity, a clear adherence to a firm ethical standard, and a reasonable causal chain from “there” (thinking evangelicalism was true, and a source of good in the world) to “here” (viewing evangelicalism and adjacent structures as simple propaganda to support harmful power structures, and viewing it as a primary source of historical and ongoing violence and abuse in the world).&lt;/p&gt;

&lt;p&gt;I’ve recovered a much more actionable, robust, and firm understanding of the person of Jesus Christ (and the things he said and did, and why) than I ever had in the decades leading up to now. &lt;sup id=&quot;fnref:narrative-christus-victor&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:narrative-christus-victor&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I don’t use the labels ‘deconstruction’ or ‘exvangelical’. I simply matured and refined my understanding of a certain religious tradition (cult) that I was once a part of, and have ‘grown’ into a much more comfortable, peaceful, enjoyable  version of a different religious tradition, which shares some interesting similarities and differences.&lt;/p&gt;

&lt;p&gt;Despite my justified anger about my experiences of abuse and neglect as a child, adolescent, and adult, related to evangelicalism (and abuse and neglect sanctioned by ‘evangelical intellectual traditions’), I warmly extend an invite to this greener side of the fence, to anyone who currently finds themselves still a member of any religious tradition that looks like evangelicalism. It’s way, way more peaceful and enjoyable ‘out here’.&lt;/p&gt;

&lt;p&gt;While my current “place” would horrify some from the religious communities in which I was raised, I’ve actually internalized (some of) the words they spoke over me, like “love others, act justly, walk humbly.” (they said, as they poured violence, anger, shame, condemnation, and credible threats of abandonment into me and others, to control us.) This is why I’ve cut them out of my life, and why I have been freely encouraging other children of emotionally immature parents to consider doing the same, if it would be protective\healing.&lt;/p&gt;

&lt;p&gt;I sometimes manage to find words that are extremely offensive, which in some ways I’m proud of, and in other ways I am disappointed and saddened by. I also am inclined to hide explosive intellectual ideas behind a veil of words, to screen out those who hide behind the veil of functional illiteracy.&lt;/p&gt;

&lt;p&gt;So, I’m writing this as a first pass towards an open display of what I feel, which is at times certainly tinged with emotions like anger and rage and grief, but at other times, I wish I could soften my disposition and be a bit more warm, winsome, and “reasonable”.&lt;/p&gt;

&lt;p&gt;Hate is closer to love than apathy, so if you hate what I say, I don’t mind you communicating that to me. In some ways, it’s an honor. I am apathetic about none of this. Any expression of anger here is motivated by love for that which has been polluted and degraded by inhumane thoughts and actions.&lt;/p&gt;

&lt;p&gt;I’ve been shunned&lt;sup id=&quot;fnref:shun-again&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:shun-again&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt; by some, and I have withdrawn from others. Here’s no more or less than an explanation, mixed with a defense. Say what you will about me, but “Josh has not given thought or intellectual brain-sweat to his life” will not be accepted.&lt;/p&gt;

&lt;h1 id=&quot;where-i-started&quot;&gt;Where I started&lt;/h1&gt;

&lt;p&gt;I was raised in ‘the church’, in a variety of ‘baptist’, ‘evangelical’, ‘southern baptist’, ‘presbyterian’, ‘episcopal’, non-denominational churches, from age zero, through perhaps age 31. I went to a nominally christian four-year university.&lt;/p&gt;

&lt;p&gt;At the beginning, I went to church because my parents would have committed acts of soul murder upon me if I strenuously resisted going to church, so eager church attendance was simple safety-seeking behavior, and then at a later time, I was fully onboard with churchishness, ostensibly of my own volition. For example, my family did sunday morning church, sunday evening church, wednesday evening church, i think often church on Thursdays, and lots of ‘church stuff’ at home.&lt;/p&gt;

&lt;p&gt;Kristi and I were married in “the church” over a decade ago, and at that point I considered my involvement to be fully voluntary.&lt;/p&gt;

&lt;p&gt;When this &lt;em&gt;gestures broadly&lt;/em&gt; first started happening, I didn’t really think it would lead to where it actually led me. Some of these things ‘i did’, others ‘were done to me’. There’s horror and sadness and grief throughout.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I am no longer married, and as far as how well divorces and co/parallel parenting can go, it feels like it’s been pretty bad.&lt;/li&gt;
  &lt;li&gt;I am no longer on speaking terms with a rather large percentage of my birth family, and with the family I married into.&lt;sup id=&quot;fnref:engage-with&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:engage-with&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt; :(&lt;/li&gt;
  &lt;li&gt;Some friendships/relationships I’d hoped to rely upon have ended. Others have deepened dramatically, which has provided energy and support in a way that one might find a life preserver to provide energy and support when floating down a turbulent river.&lt;sup id=&quot;fnref:shun&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:shun&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, 2019 happened. these words are that story. The troubles that would affect my life in 2020, 2021, 2022, and 2023 were completely absent from my consciousness. Lets roll back the clock to 2019.&lt;/p&gt;

&lt;p&gt;You and I had not even heard the words ‘covid 19’.&lt;/p&gt;

&lt;p&gt;I was climbing well, finally getting some breakthroughs in my bouldering and sport climbing.&lt;/p&gt;

&lt;p&gt;Friends, family, climbing, I was doing well in my career, doing cool things, giving cool talks at meetups, had a great podcast appearance, and was helping others in ways that were good and emotionally satisfying.&lt;/p&gt;

&lt;p&gt;I was getting unsolicited job offers, got recognized by a stranger in an airport because of a talk I had given (!!!), had external and internal trappings of success. My birth family and Kristi’s birth family gave me a resounding ‘thumbs up’, based on the life I was living.&lt;/p&gt;

&lt;p&gt;Money was abundant, free time was abundant, emotional energy and engagement and agency was, overall, abundant.&lt;/p&gt;

&lt;p&gt;Things seemed good.&lt;/p&gt;

&lt;p&gt;When i try to think of the beginning of the story of my exit from evangelicalism, the best focal point I can pick is a book I got gifted on my Kindle, for my birthday.&lt;/p&gt;

&lt;p&gt;I read an unassuming, short little book titled &lt;a href=&quot;https://www.goodreads.com/book/show/1659306.Becoming_Anabaptist&quot;&gt;Becoming Anabaptist: The Origin and Significance of Sixteenth-Century Anabaptism&lt;/a&gt;. It ruined me. Changed the trajectory of my life.&lt;/p&gt;

&lt;h1 id=&quot;the-dangerous-books-i-read&quot;&gt;The Dangerous Books I Read&lt;/h1&gt;

&lt;p&gt;So, lets just discuss the books directly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Warning: Don’t read any of the books I reference in this article, even if ‘just’ out of spite, to prove that the book won’t impact you. Any single book might wreck you. They’re dangerous.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’ve always been intuitively attracted to “banned books”. On principle, when hearing of a book that’s been banned, I’ll seek it out, read it, and luxuriate in whatever subversive or anti-establishment views it espouses.&lt;/p&gt;

&lt;p&gt;These books that I recommend could easily be banned. Banning a book directly is a small-brained solution to a problem, from the establishment point of view, because of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Streisand_effect&quot;&gt;Streisand Effect&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If the evangelical church (and it’s consorts from the state) got together and said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;We’re banning &lt;a href=&quot;https://www.goodreads.com/book/show/19133.The_Politics_of_Jesus&quot;&gt;The Politics of Jesus&lt;/a&gt;, &lt;a href=&quot;https://www.goodreads.com/book/show/9945.The_Nonviolent_Atonement&quot;&gt;The Non-Violent Atonement&lt;/a&gt;, &lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt; and &lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;everyone who had access to a library, a credit card, or the internet would go out and see what spicy words were contained in the text. Even children. In the era of the internet, the best defense against 🌶️ ideas is projecting an attitude of apathy.&lt;/p&gt;

&lt;p&gt;Feel free to skim the rest of this article. It’s long, meandering, and weaves together my own thoughts with those of the books I read. I’ve written a few articles already around this topic, and I’ll link them in, but if you’re at all inclined to read the books I suggest, I think your time would be well-spent, though you’ll pay far more for reading these books than just time and money.&lt;/p&gt;

&lt;p&gt;A warning - I’m nearly autistic and will gleefully wade through text of any difficulty and length if I feel like there’s something useful at the other end. These books are not “easy”.&lt;/p&gt;

&lt;p&gt;People change when the cost of not-changing is greater than the cost of changing.&lt;/p&gt;

&lt;p&gt;Here’s the books (and a paper), in the order in which I read them:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/1659306.Becoming_Anabaptist&quot;&gt;Becoming Anabaptist: The Origin and Significance of Sixteenth-Century Anabaptism&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/7943685-the-naked-anabaptist&quot;&gt;The Naked Anabaptist&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/19133.The_Politics_of_Jesus&quot;&gt;The Politics of Jesus&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/9945.The_Nonviolent_Atonement&quot;&gt;The Non-Violent Atonement&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sci-hub.se/10.1017/s0017816000024779&quot;&gt;The Apostle Paul and the Introspective Conscience of the West (Harvard Theological Review, 1963)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Boom. That was it. At the end of these books, and the paper, I was firmly outside of the evangelical tradition, and never able to be brought back.&lt;/p&gt;

&lt;p&gt;I’m absolutely not identified at all with anabaptism, either. I simply noticed that in appreciating &lt;em&gt;why&lt;/em&gt; the anabaptists became a target for that-day’s evangelicals is to see something one can not un-see. it’s all icky, and mixes so freely with ‘banal’ strains of supremacy. Lots in common with the supremacy visible in japanese supremacy towards china &lt;sup id=&quot;fnref:nanking-slaughter&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:nanking-slaughter&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;10&lt;/a&gt;&lt;/sup&gt;. In the Hutu/Tutsi conflict. The Tutsi ethnic group was created/defined/empowered by the europeans from Belgium, supremacy begets bad things, there was a horrible event in 1991. The chain of islands sometimes called ‘indonesia’ was horrifically treated by mostly the government of the usa. &lt;sup id=&quot;fnref:jakarta-method&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:jakarta-method&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;11&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h1 id=&quot;where-i-finished&quot;&gt;where i finished&lt;/h1&gt;

&lt;p&gt;I was “an evangelical”, despite how much I disliked the political conservatism that tends to come with it.&lt;sup id=&quot;fnref:anarchist&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:anarchist&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;12&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;While there are absolutely black evangelicals (the divide between black and white evangelicals is the topic of a wonderful book titled &lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt;, in general, white evangelicalism is/was an embodiment of “historic whiteness”. In my early years, I was “christian”, “white”, “republican”, and more. I’m not proud of the views I once espoused, but as they were coerced onto me with an overwhelming pressure, I don’t see myself as having had too much of a choice. (seeking safety from caretakers as a child and such)&lt;/p&gt;

&lt;p&gt;If I chose to, I could blend in with a crowd of any political flavor, but my upbringing was &lt;em&gt;extremely&lt;/em&gt; politically conservative. I was raised on messages like “gay people are what is wrong with America” and “the military of the government of the USA makes the world safe” and “american democracy is the best/last form of organization needed in the world” and “black people are overall inferior to white people” and “china and russia represent existential threats to ‘world peace’.”&lt;/p&gt;

&lt;p&gt;I was also raised functionally divorced from any of the ethnic heritage I had, despite how close I could have been to certain latin american cultural origins.&lt;/p&gt;

&lt;p&gt;In other words, I was raised White, though the closest I’ll identify now with whiteness is “white-passing”. &lt;sup id=&quot;fnref:white-passing&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:white-passing&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;13&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h1 id=&quot;where-i-am-now&quot;&gt;Where I am now&lt;/h1&gt;

&lt;p&gt;After reading those books, some of them more than once, and much conversation (and painful lack of conversation) with others, I strongly and clearly de-identified with Christianity, christians, america/americanism, and all forms of evangelicalism and christendom.&lt;/p&gt;

&lt;p&gt;When traveling, when asked “where I’m from”, I’ll say “Denver, Colorado”, rather than “the United States of America”, and I’ll sometimes add “my family is from Paraguay”.&lt;/p&gt;

&lt;p&gt;I identify with attribute tags like anarchism and anabaptistm (loosely), but mostly I’ve dropped all the labels I used to voluntarily use. I’ll talk about my daughter, rock climbing, my love of friends and friendship, ‘intellectual pursuits’, my distaste for american forms of ethnic cleansing, and more. These are the ways I choose to define myself.&lt;/p&gt;

&lt;p&gt;This article isn’t &lt;em&gt;only&lt;/em&gt; about why I de-identified with evangelicalism, though.&lt;/p&gt;

&lt;p&gt;I did that quietly, without really telling anyone, and I kept going to church on Sundays, and since I wasn’t saying/writing much about what I’d encountered, except for in trusted 1:1 conversations, no one in my family or the church had any reason to think things had changed for me.&lt;/p&gt;

&lt;p&gt;Anyone who knew me and this came up in conversation, I’d quickly explain where I’d been, theologically, and they could track with me, but again, in the terms of &lt;a href=&quot;https://www.goodreads.com/book/show/149033.Exit_Voice_and_Loyalty&quot;&gt;Exit, Voice, and Loyalty: Responses to Decline in Firms, Organizations, and States&lt;/a&gt;, I exited, quietly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This article is about why I now strongly associate evangelicalism with an active creation of spaces safe for, and full of, abusive behaviors, oppression, and violence. As someone who’s ethically opposed to abuse, oppression, and violence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These books are quite dangerous, in some of the same way that Jesus was dangerous. (And representative of the same sort of threats to the powers of his time, which is why he was killed. Remember, he was killed as a fairly mundane ‘religious and political criminal’.)&lt;/p&gt;

&lt;p&gt;To recap, between 2019 and 2020, I read:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/1659306.Becoming_Anabaptist&quot;&gt;Becoming Anabaptist: The Origin and Significance of Sixteenth-Century Anabaptism&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/7943685-the-naked-anabaptist&quot;&gt;The Naked Anabaptist&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/19133.The_Politics_of_Jesus&quot;&gt;The Politics of Jesus&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After these books, especially the last one, I saw core components of what I’d been given in a wholly different light.&lt;/p&gt;

&lt;p&gt;For example, here’s a “take” that I’d literally never considered, but is intellectually coherent:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Jesus was not “murdered by God to atone for the sins of mankind” (the &lt;a href=&quot;https://en.wikipedia.org/wiki/Satisfaction_theory_of_atonement&quot;&gt;satisfaction atonement motif&lt;/a&gt;) - he was murdered by angry and immature people at the behest of the religious and political leaders, because he represented a credible threat to the established political and religious regimes of the day, and that threat was legible to the people who ran the regimes, so they killed him. No more and no less.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To me, it’s now vastly more interesting to understand and apprectiate why his words and actions were so egregiously offensive to the establishment.&lt;/p&gt;

&lt;p&gt;Given that he also encouraged his followers to embody his way of being, if one can see why his words and actions were so dangerous to the status quo, one becomes different, and…&lt;/p&gt;

&lt;p&gt;oops. There goes the status quo.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Next, after reading the three books above about anabaptism, I kept reading ‘the canon’, and a rather interesting-and-provocative paper.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/9945.The_Nonviolent_Atonement&quot;&gt;The Non-Violent Atonement&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Work-Jesus-Christ-Anabaptist-Perspective/dp/193103849X&quot;&gt;The Work of Jesus Christ in Anabaptist Perspective: Essays in Honor of J. Denny Weaver&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sci-hub.se/10.1017/s0017816000024779&quot;&gt;The Apostle Paul and the Introspective Conscience of the West (Harvard Theological Review, 1963 )&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;book-1-becoming-anabaptist-the-origin-and-significance-of-sixteenth-century-anabaptism&quot;&gt;Book 1: Becoming Anabaptist: The Origin and Significance of Sixteenth-Century Anabaptism&lt;/h1&gt;

&lt;p&gt;So, this all started with my brother-in-law’s Christmas gift to me. I read a lot&lt;sup id=&quot;fnref:read-a-lot&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:read-a-lot&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;14&lt;/a&gt;&lt;/sup&gt;, and every Christmas and birthday, tend to be given at least a few books. (Thank you, everyone who’s ever gotten me a book!)&lt;/p&gt;

&lt;p&gt;Someone will gift me a kindle book, and I’ll read it at some point. I really love this tradition.&lt;/p&gt;

&lt;p&gt;This book is admittedly rather boring, but I often read ‘boring’ books. It’s an academic text about the history of an obscure religious group in the 16th century. My brother-in-law bought me the book, because the group had come up in conversation, and he thought it might be interesting to me.&lt;/p&gt;

&lt;p&gt;He was right. It wrecked me.&lt;/p&gt;

&lt;p&gt;I opened it up on my kindle, and started the preface, and was rocked. So much so that I copied the text down, and made this little blog post about it: &lt;a href=&quot;https://josh.works/whats-up-with-anabaptists&quot;&gt;What’s up with the Anabaptists (josh.works)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That was the beginning of the end.&lt;/p&gt;

&lt;p&gt;I invite you to read it:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://josh.works/whats-up-with-anabaptists&quot;&gt;What’s up with the Anabaptists&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The preface of the book was excellent, and then the last chapter and appendix was also exceptional. I touch on all of those things in the blog post.&lt;/p&gt;

&lt;p&gt;At the time, I knew nothing about the anabaptists.&lt;/p&gt;

&lt;p&gt;I didn’t realize that they were &lt;em&gt;targeted for extermination/ethnic cleansing by the religious and secular authorities of the day, like John Calvin, not unlike the polemics that HITLER HIMESELF went on against the Jews.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Critically, I felt a sense of indignation and betrayal that no one had told me that the same John Calvin that shaped much of modern protestantism was also an advocate for genocide.&lt;/p&gt;

&lt;p&gt;The modern take on Anabaptists often says it’s a disagreement about minor theological points, like ‘how many times is the right number of times to be baptized’ and ‘who, really, is allowed to interpret scripture.’&lt;/p&gt;

&lt;p&gt;The book said, basically:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;when one group is killing [literally, burning at the stake] another group, perhaps we in the modern world should assume that both sides of the party knew what was at stake (pun intended), instead of saying they were committing acts of ethnic cleansing over a misunderstanding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;any earnest effort to get to the bottom of the disagreement should focus on the core differences between the groups, rather than over-focusing on commonalities.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This last sentence ruined me, especially as my marriage was slowly disintegrating, and I was trying to hold it together.&lt;/p&gt;

&lt;p&gt;I kept finding this conversational tactic around me everywhere, for the next two years of my life. I would want to focus conversations on core, critical differences, and those around me would respond with:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;sure, but look at the things you agree about each other, surely that difference you say is critical is immaterial.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, that book kicked off my normal ‘reading of the canon’.&lt;sup id=&quot;fnref:read-the-canon&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:read-the-canon&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;15&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I ordered another five or six books on the topic from Amazon, and read through them all.&lt;/p&gt;

&lt;h1 id=&quot;book-2-the-politics-of-jesus&quot;&gt;Book 2: The Politics of Jesus&lt;/h1&gt;

&lt;p&gt;I ended up reading &lt;em&gt;The Politics of Jesus&lt;/em&gt;, and… that was it.&lt;/p&gt;

&lt;p&gt;That was the end. That was when I officially renounced vestiges of evangelicalism, and decided I might never attend a church again. I didn’t stop going to church when I read it, but I instantly felt like an outsider, and was content in this new status. A sense of self had coalesced, and I could put my finger on what felt so wrong about many experiences I’d had throughout my life.&lt;/p&gt;

&lt;p&gt;I began feeling uncomfortable with the songs that were sung, the constant repeating of certain ‘creeds’, and more.&lt;/p&gt;

&lt;p&gt;After reading &lt;em&gt;The Politics of Jesus&lt;/em&gt;, I shared some personal context, a summary of the introduction, and reproduced a few pages from the first chapter here: &lt;a href=&quot;https://josh.works/was-jesus-ethics-normative&quot;&gt;Was Jesus’ Social Ethic Normative? (josh.works)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Yoder, in the first chapter, eviscerated “the church” (really, any vestige of Christendom) by showing the ways that modern biblical ethicists (of which pastors and clergy are a sub-group) explicitly (and erroneously) teach that &lt;em&gt;the things Jesus said and did are irrelevant in modern times, and must be discarded&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;At this point in the story, I’d encourage you to click through the above link, and read it. It’ll take a while. I’ll wait.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://josh.works/was-jesus-ethics-normative&quot;&gt;Was Jesus’ Social Ethic Normative? (josh.works)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if you’re not ‘in the church’, you might not recognize that the page slug, ‘was Jesus’ ethic normative’, is an absolute broadside against ‘the church’. It’s saying “does jesus words and actions matter?” and that’s a bit of a dog-whistle, because evangelicals will say &lt;em&gt;of course&lt;/em&gt; jesus words and actions matter. As they live out a belief of the opposite.&lt;/p&gt;

&lt;p&gt;I kept trying to get friends to read this book.&lt;/p&gt;

&lt;p&gt;Some did, and found it as compelling as I did.&lt;/p&gt;

&lt;p&gt;Some of you looked at it, saw that it was loosely academic and had a lot of footnotes, and chose to embrace functional illiteracy.&lt;/p&gt;

&lt;p&gt;The author of the book makes a compelling case that&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;the Jesus that is preached about in churches across America is explicitly made irrelevant to today, and replaced with basically an ethic of &lt;a href=&quot;https://en.wikipedia.org/wiki/Natural_theology&quot;&gt;theological naturalism&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is fine - if you wanna believe in theological naturalism, IDGAF, but don’t also then try to tell me it’s’s rooted in the story of Jesus Christ.&lt;/p&gt;

&lt;p&gt;The  book makes a great point - to all the people showing up to the execution of the person known as Jesus, most of them recognized him as nothing more interesting then a legitimate threat to the established order of the church and the state, because of the things that he said and did. He was a politically dangerous person, and the powers that be do what they’ve always done - maneuvered the world to eliminate a threat. Plain and simple.&lt;/p&gt;

&lt;h2 id=&quot;justification--the-atonement&quot;&gt;Justification &amp;amp; the Atonement&lt;/h2&gt;

&lt;p&gt;Here’s a copy of most of chapter 11 from &lt;em&gt;The Politics of Jesus&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://josh.works/the-politics-of-jesus-notes-quotes#chapter-11-justification-by-grace-through-faith&quot;&gt;Quotes from The Politics of Jesus: CHAPTER 11: Justification by Grace through Faith&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you go to a church, they’ll talk about ‘the atonement’, which is broadly addressed anytime you hear about “the work Jesus did on the cross” or “being saved by the blood of christ”, or “forgiveness of your sins”, and more. It’s kinda the core tenant of christianity.&lt;/p&gt;

&lt;p&gt;You’ll hear the text “justified by faith”. Briefly, Yoder argues that this could be better understood. First, “justified” doesn’t mean “forgiven”, it is to be understood in the word-document text-formatting way. To “justify” a block of text is to align the ends of the lines. Ruby (the programming language) has methods like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rjust&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ljust&lt;/code&gt;, short for “right justify” and “left justify”. It adds padding to strings to make them line up.&lt;/p&gt;

&lt;p&gt;The “justification” of which this text speaks is to be “rightly aligned” relative to others. Do you have conflict between you and someone else? Then you’re not “rightly aligned” to each other. To be “rightly aligned” would be akin to resolving and repairing the block.&lt;/p&gt;

&lt;p&gt;so lets let the first word of “justified by faith” to “rightly aligned to others”. By what? How do we get rightly aligned?&lt;/p&gt;

&lt;p&gt;“by faith…fulness”&lt;/p&gt;

&lt;p&gt;Faithfulness? What does that mean?&lt;/p&gt;

&lt;p&gt;You can be “faithful” to a creed, an ethic, a set of norms. The faithfulness being referenced is faithfulness to Jesus’ specific social ethic, in which he talked a lot about interpersonal relations, within groups, across groups, and across power differentials.&lt;/p&gt;

&lt;p&gt;So “justified by faith” becomes “rightly aligned to others by faithfulness to Jesus’’ specific social ethic.”&lt;/p&gt;

&lt;p&gt;Some of you might not realize that making this assertion takes me into the realm of heresy. Live on the edge, huh?&lt;/p&gt;

&lt;p&gt;Also, if you’re not faithful to Jesus’ ethic, you’re not ‘justified’. A willingness to violence is sufficient to make one ineligible for justification. All forms of interpersonal violence (physical, verbal, emotional) destroy the availability of ‘justification’.&lt;/p&gt;

&lt;h2 id=&quot;romans-13---the-state&quot;&gt;Romans 13 - “the state”&lt;/h2&gt;

&lt;p&gt;My journey was still unfolding. I didn’t realize I was moving into the ‘outer darkness’ relative to my religious community. I was just following interesting threads. Printing out papers, reading reading reading. Satisfying my special interests. I was feeling such progress and conceptual compressions coalescing out of the woodwork.&lt;/p&gt;

&lt;p&gt;Romans 13 is this big text that’s referenced today to explain why ‘good people’ are supposed to do what the secular authorities tell them to do. the interpretation goes something like this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;the state, and it’s self-claimed legal monopoly on violence, is ordained by God to be over us, because the world runs on authority and domination, and the state is something like our intellectual father, just as the heavenly father is over us, so we should obey it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I want to scare quote nearly every word in that statement, but here’s how Yoder re-works that statement:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The state, to the degree that it cares well for the least-privileged person under it’s ‘dominion’ , has legitimacy to care well for those persons.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Oops. Heresy part two. Did you feel it? Least privileged? Like immigrants, ethnic minorities, women, non-capitalists, children, people of various religious flavors, the poor, etc.&lt;/p&gt;

&lt;p&gt;There are plenty more bombs carefully contained in that text. I’d encourage you to read it. These two examples serve as sufficient explanation.&lt;/p&gt;

&lt;p&gt;Modern evangelicalsm is… well, basically politically powerful white people coopting language of moral authority to justify a regime of domination. This is all in the context of Americanism, or westernism. The intellectual thought that emerged in Europe after the advent of the printing press, related to Calvin, Luther, catholicism, and more, is basically all the same.&lt;/p&gt;

&lt;h1 id=&quot;book-3-the-non-violent-atonement&quot;&gt;Book 3: The Non-Violent Atonement&lt;/h1&gt;

&lt;p&gt;As soon as I read the title of this book, I smashed the &lt;a href=&quot;https://www.amazon.com/Nonviolent-Atonement-J-Denny-Weaver/dp/0802849083&quot;&gt;‘buy now’ button on Amazon&lt;/a&gt;, as quickly as I could navigate to the page on my phone.&lt;/p&gt;

&lt;p&gt;I’ve been raised in ‘the church’, and heard ALL THE TIME about the atonement. Say it with me - those of you in the church, you’ve heard these phrases, sprinkled liberally throughout spiritual words and texts, like salt and pepper on a dish:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Christ’s work on the cross&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The blood of Christ&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Christ bearing the sins of mankind&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;He was punished for our sin&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Because we couldn’t be perfect, he was perfect, and incurred the wrath of god because of it&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ll share a few long quotes from the introduction of the book. I’d encourage you to pick up your own copy, if you want, but these quotes are sufficient at explaining what is obviously implied in the title - that there exists this thing called ‘the violent atonement’, and it is, in fact, what all of evangelicalism (and the west) is founded upon. If you recognize violence as the crappy problem-solving ‘tool’ used by emotionally immature people that it is, you’ll quickly traverse from “the atonement theology you’ve been taught is dripping in violence and blood” to “the satisfaction atonement motif is heareby discarded”&lt;/p&gt;

&lt;p&gt;Everything below is a quote from the first few pages of &lt;a href=&quot;https://www.amazon.com/Nonviolent-Atonement-J-Denny-Weaver/dp/0802849083&quot;&gt;The Nonviolent Atonement&lt;/a&gt;, by J. Denny Weaver. It’s a theological ‘child’ of &lt;em&gt;The Politics of Jesus&lt;/em&gt;, which I strongly recommend. I’ve added a few linebreaks here and there, because this is the internet.&lt;/p&gt;

&lt;p&gt;First, he paints some words about the ‘satisfaction’ motif of atonement, also known as ‘the violent atonement’ or ‘anselmian atonement’, named after the noble who invented the whole thing in 1100AD.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;a-brief-sketch-of-the-violent-atonement&quot;&gt;A brief sketch of the violent atonement&lt;/h2&gt;

&lt;p&gt;Quoting the author, J. Denny Weaver, below:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Atonement theology starts with violence, namely, the killing of Jesus. The commonplace assumption is that something good happened, namely, the salvation of sinners, when or because Jesus was killed. It follows that the doctrine of atonement then explains how and why Christians believe that the death of Jesus the killing of Jesus - resulted in the salvation of sinful humankind.&lt;/p&gt;

  &lt;p&gt;In much of the world generally and in the United States in particular, the prevailing assumption behind the criminal justice system is that to “do justice” means to punish criminal perpetrators appropriately. “Appropriately” means that the more serious the offense, the greater the penalty (punishment) to be imposed, with death as the ultimate penalty for the most serious crimes.&lt;/p&gt;

  &lt;p&gt;There is a pervasive use of violence in the criminal justice system when it operates on this belief that justice is accomplished by inflicting punishment. Called “retributive justice”, this system assumes that doing justice consists of administering &lt;em&gt;quid pro quo&lt;/em&gt; violence an evil deed involving some level of violence on one side, balanced by an equivalent violence of punishment on the other.&lt;/p&gt;

  &lt;p&gt;The level of violence in the punishment corresponds to the level of violence in the criminal act.&lt;/p&gt;

  &lt;p&gt;Satisfaction atonement assumes that the sin of humankind against God has earned the penalty of death but that Jesus satisfied the offended honor of God on their behalf or took the place of sinful humankind and bore their punishment or satisfied the required penalty on their behalf.&lt;/p&gt;

  &lt;p&gt;Sin was atoned for because it was punished - punished vicariously through the death of Jesus, which saved sinful humankind from the punishment of death that they deserved - or because the voluntary death of Jesus paid or satisfied a debt to God’s honor that sinful humans had no way of paying themselves. That is, sinful humankind can enjoy salvation because Jesus was killed in their place, satisfying the requirement of divine justice on their behalf.&lt;/p&gt;

  &lt;p&gt;While the discussion of satisfaction atonement involves much more than this exceedingly brief account, this description is sufficient to portray how satisfaction atonement, which assumes that God’s justice requires compensatory violence or punishment for evil deeds committed, can seem self-evident in the context of contemporary understandings of retributive justice in North American as well as worldwide system of criminal justice.&lt;/p&gt;

  &lt;p&gt;The link between satisfaction atonement and systems of retributive justice cannot be denied. Timothy Gorringe’s &lt;em&gt;God’s Just Vengeance&lt;/em&gt; provides a thorough analysis of satisfaction atonement’s foundation assumptions of retributive violence as well as an extended discussion of the mutual interrelations between theories of satisfaction atonement and understandings of punishment and criminal justice in the western world since the time of Anselm.&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A different kind of challenge to satisfaction atonement comes from a Catholic writer who works out of the theory of mimetic violence and the scapegoat mechanism developed by René Girard. As an alternative to the assumption that God orchestrates evil that punishes Jesus for the sins of humankind, Raymund Schwager developed a dramatistic understanding of the New Testament’s depiction of Jesus, &lt;strong&gt;which shows that punishment is what sinful humanity does to itself through rejection of the reign of God.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I had concluded that Anselmian atonement was an abstract legal transaction that enabled the Christian believers of Christendom to claim salvation via the death of Christ while actively accommodating the violence of the sword. With that insight already in mind, encountering the critique of Anselm in Cone’s &lt;em&gt;God of the Oppressed was startling&lt;/em&gt;. &lt;strong&gt;Where I had been arguing that the abstract legal formula allowed accommodation of the sword, Cone was arguing that it had accommodated chattel slavery and racism.&lt;/strong&gt; Rapidly I saw that critique of Anselm was an agenda item that extended well beyond the pacifist perspective from which I had been working.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;h2 id=&quot;definition-of-narrative-christus-victor&quot;&gt;Definition of Narrative Christus Victor&lt;/h2&gt;

&lt;p&gt;as an answer to the question ‘if not the atonement/satisfection motif, what?’&lt;/p&gt;

&lt;p&gt;It’s the/an alternative to the Anselmian/violent atonement/satisfaction motif, from the next page of the introduction, still quoting j denny weaver:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have called the resulting model of the life and work of Christ narrative Christus Victor.&lt;/p&gt;

  &lt;p&gt;While narrative Christus Victor displays continuity with classic Christus Victor, it differs from the classic view in many important ways, and it deals with a number of issues not usually included in the discussion of atonement.&lt;/p&gt;

  &lt;p&gt;The working assumption in development of this model is that the rejection of violence, whether the direct violence of the sword or the systemic violence of racism or sexism, should be visible in expressions of Christology and atonement.&lt;/p&gt;

  &lt;p&gt;Developing an understanding shaped by nonviolence then lays bare the extent to which satisfaction atonement is founded on violent assumptions. Thus proposing narrative Christus Victor as a nonviolent atonement motif also poses a fundamental challenge to and ultimately a rejection of satisfaction atonement.&lt;/p&gt;

  &lt;p&gt;Since violence covers a multitude of sins and issues, examining biblical and historical material from a “nonviolent perspective” requires definitions for both violence and nonviolence.&lt;/p&gt;

  &lt;p&gt;I am using “violence” to mean harm or damage, a definition given more specificity by Glen Stassen and Michael Westmoreland-White.&lt;/p&gt;

  &lt;p&gt;They describe two dimensions of violence:&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;“(1) destruction to a victim and (2) by overpowering means. Violence is destruction to a victim by means that overpower the victim’s consent.”&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;This definition obviously includes killing in war, in murder, and in capital punishment.&lt;/p&gt;

  &lt;p&gt;Violence as harm or damage includes physical harm or injury to bodily integrity. It incorporates a range of acts and conditions that include damage to a person’s dignity or self-esteem.&lt;/p&gt;

  &lt;p&gt;Abuse comes in psychological and sociological as well as physical forms: parents who belittle a child and thus nurture a person without self-worth, teachers who brand a child a failure and destroy confidence to learn, a husband who continually puts down his wife, and more.&lt;/p&gt;

  &lt;p&gt;Killing is not the sole instance of violence but one of its more extreme forms.&lt;/p&gt;

  &lt;p&gt;The system of chattel slavery that existed in colonial America and in the United States for two and a half centuries was most certainly violence. But the continuation of racist practices today under other names is also violence.&lt;/p&gt;

  &lt;p&gt;Social practices which proscribe set roles for women and limit their opportunities are examples of violence.&lt;/p&gt;

  &lt;p&gt;Social structures that impose poverty are violent.&lt;/p&gt;

  &lt;p&gt;Such forms as racism, sexism, and poverty are frequently referred to as systemic violence. It is necessary to keep all these forms of violence in mind, from direct violence of bodily injury and killing through psychological abuse and the multiple forms of systemic violence.&lt;/p&gt;

  &lt;p&gt;Each of these forms of violence appears at some point in the discussion of atonement images to follow.&lt;/p&gt;

  &lt;p&gt;One important dimension of violence is the way it is assumed and used in the criminal justice system. As was already noted, the prevailing assumption behind the criminal justice system is that to do justice means to inflict punishment, with the intensity of punishment dependent on the seriousness of the misdeed.&lt;/p&gt;

  &lt;p&gt;In theory then, the death penalty differs quantitatively but not qualitatively from lesser punishments. But recognizing the assumption that justice means punishment shows that a very pervasive use of violence surrounds us in the criminal justice system, a use of violence whose commonness renders it virtually invisible.&lt;/p&gt;

  &lt;p&gt;The assumed violence of justice as punishment will appear at several stages in the discussion of atonement, particularly in the context of feminist and womanist arguments and in the arguments of the defenders of Anselm in Chapter 7&lt;/p&gt;

  &lt;p&gt;If “violence” covers a variety of issues, “nonviolence” also covers a spectrum of stances and actions ranging from passive nonresistance at one end to active nonviolent resistance at the other.&lt;/p&gt;

  &lt;p&gt;In this regard, it is very important to distinguish violence defined as harm or damage from nonviolence as force or social coercion that respects bodily integrity.&lt;/p&gt;

  &lt;p&gt;Since we have no term that carries the specific meaning of coercion used positively, I will describe it here as identifying a spectrum or continuum of acts stretching from persuasion to physical coercion. Persuasion attempts to affect and guide the action of others without denying their freedom or harming their person. At a low level of intensity, it includes the gentle coercion of parents who restrain children from disruptive behavior and teachers who require pupils to raise their hands and wait for permission to speak in class.&lt;/p&gt;

  &lt;p&gt;At a high level of intensity at the other end of the spectrum, positive coercion that constrains or compels the acts of others through pressure would include such actions as social ostracism, public marches and protests, and eventually strikes and economic boycotts.&lt;/p&gt;

  &lt;p&gt;Examples of physical force used positively or in a way to prevent an act that an individual wants to perform might include some forms of punishment for children, physically restraining children from running into the street, knocking a person out of the path of a vehicle, and physically restraining a person attempting suicide.’&lt;/p&gt;

  &lt;p&gt;One specific point to make clear about nonviolence is that it does resist violence in any of its forms.   &lt;sup id=&quot;fnref:nonviolence&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:nonviolence&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;16&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The question is not &lt;em&gt;whether&lt;/em&gt; nonviolent Christians should resist.&lt;/p&gt;

  &lt;p&gt;It is rather &lt;em&gt;how&lt;/em&gt; Christians should resist. And the answer is to resist nonviolently. As the treatment of the story of Jesus in the following chapter demonstrates, Jesus engaged in nonviolent resistance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It also engages in conversation with other critics of violent atonement theology. The final conclusion is that, even at its best, Anselm’s satisfaction theory of atonement cannot escape its foundation in the idea of retributive violence. It can be kept and defended, I conclude, only if one is willing to defend the compatibility of violence and retribution with the gospel of Jesus Christ.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;

&lt;p&gt;Please, please engage with this, if you have any inclination.&lt;/p&gt;

&lt;p&gt;My email inbox is open, and I’d be thrilled to hop on a WhatsApp call to discuss more! (Whatsapp is preferred to phone call, for a few reasons, but I could be swayed to do a phone call.)&lt;/p&gt;

&lt;p&gt;Just a warning, though - there’s this thread of coercion and domination that exists in the church, and when someone tries to invoke a claim of “authority” over me, I have to laugh inside a little. Here’s why:&lt;/p&gt;

&lt;p&gt;I’ve been so brutalized by authority my whole life, and I’ve seen what happens to others when they have been brutalized by ‘authority’, i’ve had an instinct to rebel, on principle, when someone tries to force me to do something. Please consider engaging from a place of mutuality and curiosity, rather than trying to push me to a specific, pre-determined outcome.&lt;/p&gt;

&lt;p&gt;Invoked claims of authority now lands as an intellectual crutch, the tools of those who don’t have the awareness or maturity to use adult tools. Authority is for children. Don’t threaten me like I am an easy-to-intimidate child.&lt;/p&gt;

&lt;p&gt;I’ve got good books that I could refer one to, if you wanted to know why I so reject your claims of authority, and why I would advise your children to stop giving it any heed, as soon as they’re out of the range of your threats of physical and emotional violence.&lt;/p&gt;

&lt;p&gt;I’m not here really for the people that want to argue. I’m here for the people like me, that when they smelled the possibility of an alternative they jumped on it. I heard rumblings on the distance of ideas contained in these books, and ordered them and read them immediately. Between library books, and books I purchased or found for free online, I probably read about 1000 pages in pursuit of this, and I consider it to be time well spent.&lt;/p&gt;

&lt;p&gt;I found it. I’m out. The books are there for anyone else to read. The path has been laid.&lt;/p&gt;

&lt;p&gt;The entire intellectual and moral self-justification of Christendom just… collapses. The screaming rage of evangelicalism dies with a whimper, collapses in a heap.&lt;/p&gt;

&lt;p&gt;I kept going to friends in the church with my findings, and they kept matching my eager interest with derision, disinterest, and dismissiveness. I can’t control others, but I was and am now willing to &lt;em&gt;ahem&lt;/em&gt; burn any bridge required to protect myself, and those that I love, from abusive institutions.&lt;/p&gt;

&lt;p&gt;I have a vast capacity to love. I am deeply compassionate. I dislike conflict to my core, and in the same way as some will go off to war to commit acts of violence against a specific ethnic group, I will strenuously exert myself to reduce conflict for myself, those I love, and anyone I can reduce conflict for.&lt;/p&gt;

&lt;p&gt;One of the ways one can resist actual violence is with words.&lt;/p&gt;

&lt;p&gt;Violence is a terrible problem-solving solution. It invariably creates far more problems than it’s advocates claims it solves, as it’s contingent upon fear, intimidation. Those who use violence don’t want to solve problems, they want to assert dominance in such an overwhelming way that the victim stops strenuously resisting, and this is certainly an available option to those willing to use violence.&lt;/p&gt;

&lt;p&gt;The antidote to violence is an attitude of mutuality and co-creation, mixed with an acceptance of healthy, non-abusive anger.&lt;/p&gt;

&lt;p&gt;The way I resist violence now is to attend more to the victims. It’s to grow the awareness, skills, capacity, and strength of those who are being victimized by those willing to use violence, or who those who use complacency, privilege, and unawareness allow bad things to keep happening.&lt;/p&gt;

&lt;p&gt;So, if you read the books mentioned above, you’ll possibly join me on the outside of evangelicalism.&lt;/p&gt;

&lt;p&gt;Despite what your parents may have told you, there’s a lot of fun to be had out here, and freedom. Dramatically less shame. Sometimes laughter. Space held for grief and sadness and mourning. Things don’t need to be so serious all the time. We have potlucks, home-cooked meals, mutuality, and co-creation, and a lot less shame and repressed sadness.&lt;/p&gt;

&lt;p&gt;When someone is sad, we hold space for them. When they’re stuck, we help un-stick them. When someone has a sense of malaise, we malaise with them. We don’t arbitrarily denigrate whole groups of people.&lt;sup id=&quot;fnref:anger&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:anger&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;17&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;OK, so we’re gonna go another layer deeper. Here’s why:&lt;/p&gt;

&lt;p&gt;It would be one thing to throw your hands up, say “yep, ‘the church’ is effed, not gonna touch it with a ten-foot pole”, and walk away and never come back.&lt;/p&gt;

&lt;p&gt;Nothing wrong with that.&lt;/p&gt;

&lt;p&gt;It’s like walking away from white supremacy. You don’t need to prove to the white supremacists, as they cling to their white supremacy, that they’re wrong. It’s sorta de-dignifying to debate them from their own ‘frame’, because the frame makes so many assumptions that it cannot really be wrestled with fairly. They’ll “no true scottsman” you to death. &lt;sup id=&quot;fnref:frame-control&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:frame-control&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;18&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Undoubtedly you’re better off, leaving this whole pile of crock behind, and nothing meaningful is lost. It’s walking away from a cult, or no longer speaking the language of geocentrism. All you ‘lose’ is a mental model that causes the world to make less sense, or getting mysteriously lost when navigating by the stars.&lt;/p&gt;

&lt;p&gt;You can change your thinking and leave an intellectually bankrupt idea behind, and having nothing but improvement, and there’s no need to engage intellectually with those you leave.&lt;/p&gt;

&lt;p&gt;unless, of course, you think you might be able to get more of them to leave with you.&lt;/p&gt;

&lt;h2 id=&quot;full-list-of-recommended-readings&quot;&gt;Full list of recommended readings&lt;/h2&gt;

&lt;p&gt;Here’s some books, and some academic essays, if you read them, you &lt;em&gt;might&lt;/em&gt; feel like you’ve gotten your life and your soul back.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/1659306.Becoming_Anabaptist&quot;&gt;Becoming Anabaptist: The Origin and Significance of Sixteenth-Century Anabaptism&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/7943685-the-naked-anabaptist&quot;&gt;The Naked Anabaptist: The Bare Essentials of a Radical Faith&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/19133.The_Politics_of_Jesus&quot;&gt;The Politics of Jesus&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/9945.The_Nonviolent_Atonement&quot;&gt;The Non-Violent Atonement&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sci-hub.se/10.1017/s0017816000024779&quot;&gt;The Apostle Paul and the Introspective Conscience of the West (Harvard Theological Review, 1963)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/10836816-the-most-dangerous-superstition&quot;&gt;The Most Dangerous Superstition&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/402366.The_Verbally_Abusive_Relationship&quot;&gt;The Verbally Abusive Relationship: How to Recognize It and How to Respond&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/en/book/show/29363252&quot;&gt;Conflict is Not Abuse: Overstating Harm, Community Responsibility, and the Duty to Repair&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/the-violence-of-god-and-the-hermeneutics-of-paul&quot;&gt;The Violence of God and the Hermeneutics of Paul (a chapter from &lt;em&gt;The Work of Jesus Christ in Anabaptist Perspective: Essays in Honor of J. Denny Weaver&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;misc-reading&quot;&gt;Misc reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/quotes-from-complex-ptsd#chapter-5-what-if-i-was-never-hit&quot;&gt;https://josh.works/quotes-from-complex-ptsd#chapter-5-what-if-i-was-never-hit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:on-punishment&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;for instance, I now identify all talk of ‘punishment’ as a dogwhistle of abuse. Mutuals do not arbitrarily assault each other. After writing this piece about evangelicalism, I did a separate piece about ‘spanking’, or as I call it, &lt;a href=&quot;/on-hitting&quot;&gt;‘adults assaulting kids &lt;em&gt;and&lt;/em&gt; blaming the kids for it’&lt;/a&gt;. &lt;a href=&quot;#fnref:on-punishment&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:burden-of-proof&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Some readers will understandably protest this ‘discard’ I’m advocating for. Throwing away “the puritans” and the satisfaction view of atonement? Yes, that’s what I’m advocating for, and the burden of proof is on &lt;em&gt;you&lt;/em&gt; for why something so odious as a theological justification for nobility, or a theological justification for domination and violence, shouldn’t be discarded. &lt;a href=&quot;#fnref:burden-of-proof&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:whofor&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’m willing to do to evangelicals what they so willingly (and annoyingly) do to others. I’m sorta… evangelizing them.&lt;/p&gt;

      &lt;p&gt;But the best/worst thing about me is I’m &lt;em&gt;so screamingly stupid&lt;/em&gt; I can only take baby steps from one spot to another, and I like to leave a trail of breadcrumbs behind me.&lt;/p&gt;

      &lt;p&gt;I can start at one spot and end up at a starkly different spot that is very surprising to someone else. something that I like about myself is that nothing I’ve ever done is difficult or undoable by someone else. Everything/anything I’ve done is easy and simple, given certain contexts and environments. &lt;a href=&quot;#fnref:whofor&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:empty&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Some of you might find yourself with something like a hole in the bottom of your heart, a pervasive sense of emptiness, alienation from others and yourself, purposelessness, and a sense of feeling deeply, desperately alone, or desperately unfit for relationships with others, especially in situations where you feel like you shouldn’t &lt;em&gt;feel&lt;/em&gt; alone, like when you’re with family.&lt;/p&gt;

      &lt;p&gt;Listen to yourself, attend to your inner state. It is full of rich and valuable signal. The message of toxic family dynamics is one of numbness and self-abandonment and dissociation from the inner world. It is soul-murderous to exist in such a noxious environment. &lt;a href=&quot;#fnref:empty&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:heresy&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;To borrow from James C. Scott’s &lt;a href=&quot;https://www.goodreads.com/book/show/34324534-against-the-grain&quot;&gt;Against the Grain&lt;/a&gt;, I sorta chose heresy, which is the religious version of calling someone a barbarian, or uncivilized, from at least one point of view. I vastly prefer this version of myself than who I was several years ago. &lt;a href=&quot;#fnref:heresy&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:narrative-christus-victor&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Since we’re throwing out the ‘satisfaction atonement’ and ‘christendom’, it’s reasonable to ask “what else &lt;em&gt;is&lt;/em&gt; there?”. The answer is ‘narrative christus victor’ and ‘being rightly aligned to others by faithfully embodying Jesus’ specific social ethic.’ Read the books I recommend below for a fuller understanding, specifically &lt;em&gt;The Politics of Jesus&lt;/em&gt; and &lt;em&gt;The Non-Violent Atonement&lt;/em&gt; &lt;a href=&quot;#fnref:narrative-christus-victor&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:shun-again&quot; role=&quot;doc-endnote&quot;&gt;

      &lt;p&gt;shun (definition): &lt;em&gt;persistently avoid, ignore, or reject (someone or something) through antipathy or caution.&lt;/em&gt; Where shunning exists, it’s a form of punishment that a group can apply to individuals. I was naïve and well-intentioned, earlier on in my “journey” out of evangelicalism, and kept expecting other evangelicals to engage seriously with me, and got met with shunning. “Don’t say that!” “Don’t think that!” “You can’t be serious!” “You might be right, but I don’t think others will want to hear about it.” “Does that really matter?”&lt;/p&gt;

      &lt;p&gt;My views on shunning had been shifting for a while, particularly after reading &lt;a href=&quot;https://www.amazon.com/dp/1793386722/ref=redir_mobile_desktop?_encoding=UTF8&amp;amp;qid=1631421225&amp;amp;ref_=tmm_pap_swatch_0&amp;amp;sr=8-1&quot;&gt;Legal Systems Very Different than Ours&lt;/a&gt;, and especially after reading &lt;a href=&quot;https://www.goodreads.com/en/book/show/29363252&quot;&gt;Conflict is Not Abuse: Overstating Harm, Community Responsibility, and the Duty of Repair&lt;/a&gt;.&lt;/p&gt;

      &lt;p&gt;Shunning is a response that is no longer acceptable to me.&lt;/p&gt;

      &lt;p&gt;I now view shunning as the violence and assertion of dominance that it is. My family, my ex-wife’s family, and many from evangelical traditions have shunned me, and that I was collectively shunned from “my” religious tradition (and, critically, from no one else) was ultimately what inspired this polemic. I would have loved to discuss this all privately, rather than dragging it into the public realm. Alas. &lt;a href=&quot;#fnref:shun-again&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:engage-with&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Possibly, depending on who you talk to, I either cut them off, or they shunned me. A bit of both. I endorse &lt;a href=&quot;https://www.goodreads.com/en/book/show/29363252&quot;&gt;Conflict is Not Abuse: Overstating Harm, Community Responsibility, and the Duty to Repair&lt;/a&gt; as a useful ethical framework for how a community might normally intervene in misdeeds among its members. I’ve been brought aggressive and demanding and probing questions. Some, I’ve asked to consider reading one or two books to better understand the dynamics at root, and they’ve declined. &lt;a href=&quot;#fnref:engage-with&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:shun&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;We’ll talk about the dynamics of “shunning behavior” as a way of asserting dominance of a group over individuals later, and I’ve also been in recent times screamingly depressed, physically injured, emotionally wounded, and have withdrawn, at times, from most of the world, so I have hidden.&lt;/p&gt;

      &lt;p&gt;So, between me not being proactive in relationships, and being in hiding from the overtures of others, the narrative around ‘where I’m at’ has been entertaining to watch it evolve. Remember - conflict is not abuse, and the overstatement of harm is a threat.&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;Josh, why are you hiding from the overtures of others?&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;Some have reached out with a message like ‘pull your head out of your ass and man up’, which, besides not really meaning anything, earned a quick ‘block this contact’ response. (If I’ve not spoken at all or openly to you in several years, I’m not going to dignify a condemning overture with a response.)&lt;/p&gt;

      &lt;p&gt;Enough of ‘my people’ verbally assaulted me when I was already in a pretty low place, so cutting off contact with most people of a certain ilk (broadly, evangelical, or emotionally immature) was safety-seeking behavior on my behalf. &lt;a href=&quot;#fnref:shun&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:nanking-slaughter&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;there is a book approximately titled ‘the slaughter of nanking’ that is too painful to even think of, I don’t even want to get the goodreads url or write the title. &lt;a href=&quot;#fnref:nanking-slaughter&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:jakarta-method&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;the book &lt;a href=&quot;https://www.goodreads.com/book/show/53054943-the-jakarta-method?from_search=true&amp;amp;from_srp=true&amp;amp;qid=qDEUgdPSuu&amp;amp;rank=1&quot;&gt;The Jakarta Method&lt;/a&gt; ought to be understood. The stories in that book is a story of the supremacy of that distinctly &lt;a href=&quot;https://www.goodreads.com/book/show/41725763-how-to-hide-an-empire&quot;&gt;greater-united-states&lt;/a&gt;-flavored supremacy.  &lt;a href=&quot;https://www.imdb.com/name/nm1484791/&quot;&gt;This director and producer from Texas&lt;/a&gt;, Joshua Oppenheimer, has made several documentaries about the slaughters of one group by a few others. [I wrote the entire following two sentences in all caps with exclamation marks then toned it down]&lt;/p&gt;

      &lt;p&gt;&lt;em&gt;He interviews the people who did it, who talk openly and joyfully about it.&lt;/em&gt; I have never seen anything like this before. Specifically &lt;a href=&quot;https://www.imdb.com/title/tt2375605/?ref_=nm_knf_t_2&quot;&gt;The Act of Killing&lt;/a&gt; and &lt;a href=&quot;https://www.imdb.com/title/tt3521134/?ref_=nm_knf_t_4&quot;&gt;The Look of Silence&lt;/a&gt;. I watched them in the order they were created. &lt;a href=&quot;#fnref:jakarta-method&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:anarchist&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’m anarchist, have been for a while, but that’s neither here nor there. Just don’t read &lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt;, even if it’s just to appreciate the author’s simple writing style, and how he’s nearly apologetic as he gently destroys argument after argument for state-sponsored violence. I’m not the ‘moltov cocktail’ anarchist, I’m simply opposed to trying to put the lipstick of legitimacy upon the pig of state-sponsored violence. I’m a consentualist, not more, not less. Hilariously, it’s guaranteed that almost anyone reading these words is, practically, an anarchist in most of their ‘normal’ relationships. (I could also be considered a ‘consentualist’, or ‘a anti-state-sponsored-violence-ist’) &lt;a href=&quot;#fnref:anarchist&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:white-passing&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I now view ‘whiteness’ as a stand-in for ‘culturally alienated from any meaningful roots’. Whiteness tends to look like a mix of consumption, colonialism, imperialism, emotional numbness, and cultural vacuousness. Or at least, even if some white people don’t explicitly embody those values, they are comfortable in ecosystems hospitable to those values. I don’t find ‘race’ to be a useful construct, and am suspicious of those who do. That said, I am a privileged white-passing male from America, and would have to be stupid to pretend that this doesn’t drag behind it a lot of potential power. It’s been fun to see what this power gains me access to. If you call me ‘white’, I’ll correct you and say something like “I reject the label, but I forgive you for thinking it. I’m ‘White-passing’.” &lt;em&gt;edit from the future: I’ve never liked the concept of ‘whiteness’ in a bunch of ways. After reading [the origins of pro-slavery christianity] I see it as how supremacists create a group to then act entitled to dominating. Or ‘the concept of race as one of the key pieces of supremacy thinking, and calling something ‘white’ is tacitly supportive of that piece of supremacy thinking’. To avoid using ‘white’, I now mentally/verbally substitute ‘european-american immigrant nobility/chivalry ethics &amp;amp; norms’ or ‘physical/intellectual/emotional descendants of european american immigrants’ instead of ‘white’.&lt;/em&gt; &lt;a href=&quot;#fnref:white-passing&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:read-a-lot&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I sometimes over-intellectualize things. It’s a trauma response. I seek safety in books, intellectual frameworks, improved conceptual compressions of the world. I often do gain incremental improvements in safety and peace, but there’s a point of diminishing returns. There’s a right amount of book reading, and an excessive amount of book reading. I don’t know where I am within this, but I’ve read dramatically fewer books-per-year lately than I used to. &lt;a href=&quot;#fnref:read-a-lot&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:read-the-canon&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The best/worst thing about being ‘hyper literate’, and having used reading as a dissociative activity much of my life is a stack of books one or two feet tall doesn’t intimidate me in the slightest, as long as they’re all in english. If I find a topic I want to learn about, I will read, a lot, many different sources. I struggle to respect people who choose to not read books on topics they claim are important to them. &lt;a href=&quot;#fnref:read-the-canon&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:nonviolence&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I de-identified with a belief in political authority, along the way. I think using force to prevent more presently-happening violence from continuing to happen in the future seems fine. But reaching for violence as a problem solving solution is disappointing to me. an acceptable alternative to violence: ‘has everyone involved had a good meal recently? what about last week? next week? is it reliable? okay, lets fix &lt;em&gt;that&lt;/em&gt; first, and then move on from there. If that ‘feed someone(s) reliably’ thing is/seems to be/needs to be unsolvable, perhaps nothing more complex should be undertaken until it no longer needs to be/seems to be/is unsolvable. I wish there was some sort of tradition that before physical violence could occur, both parties (or the initiator of the violence) had to personally fill up a crock pot or instant pot worth of soup, to be evaluated by other parties, including the party with which the conflict is happening with. Only then can the violence occur. &lt;a href=&quot;#fnref:nonviolence&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:anger&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;sigh. My weakness in this regard is to denigrate evangelicals, white supremacists, and imperialists/colonialists, and yes, I know that hurt people hurt people. It’s been a year or so since I’ve exited the world I was raised in for three decades. Working on it. &lt;a href=&quot;#fnref:anger&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:frame-control&quot; role=&quot;doc-endnote&quot;&gt;

      &lt;p&gt;a refusal to leave a certain frame and try on a different one is a tactic of abuse, or at least emotional immaturity. It’s a blatant refusal to try on a theory of mind of someone else. Of course white supremacists are right, if you play by their rules, because their starting assumption of the world is that ‘the white race’ is superior, and non-white races are inferior. If they say “prove to me that non-white people are not inferior”, it’s embarrassing and self-abandoning to even treat that statement with seriousness.&lt;/p&gt;

      &lt;p&gt;More on frame control: &lt;a href=&quot;https://knowingless.com/2021/11/27/frame-control/&quot;&gt;https://knowingless.com/2021/11/27/frame-control/&lt;/a&gt; &lt;a href=&quot;#fnref:frame-control&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Quotes from &apos;Complex PTSD: From Surviving to Thriving&apos;, by Pete Walker</title>
   <link href="https://josh.works/quotes-from-complex-ptsd"/>
   <updated>2022-08-11T13:00:00+00:00</updated>
   <id>https://josh.works/quotes-from-complex-ptsd</id>
   <content type="html">&lt;p&gt;I’ve found Pete Walker’s &lt;a href=&quot;https://www.goodreads.com/book/show/20556323-complex-ptsd?from_search=true&amp;amp;from_srp=true&amp;amp;qid=1kqVPVmbeB&amp;amp;rank=1&quot;&gt;Complex PTSD: From Surviving to Thriving&lt;/a&gt; to be &lt;em&gt;deeply&lt;/em&gt; helpful.&lt;/p&gt;

&lt;p&gt;Some of you, many of you, have blessed me and cared for me in kind ways, sometimes with very little knowledge of what was going on, or why I was the way that I was. Thank you. I’ve been invited into homes and hearts, and write these words from a place in Seattle that has come to represent respite, friendship, and brotherhood. No one is an island, and any time I have been able to lean into good-enough friendships&lt;sup id=&quot;fnref:good-enough&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:good-enough&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, I feel viscerally restored and repaired, as Christopher Alexander in &lt;em&gt;A Pattern Language&lt;/em&gt; understands repair to exist.&lt;/p&gt;

&lt;p&gt;I chanced across this book in a very serendipitous way. A dear friend happened to have just gotten it from Amazon, hadn’t even read it yet, but had it on hand, so I did what I often do, especially with books with such an interesting title. (I’d never heard the combination of phrases ‘complex’ and ‘ptsd’)&lt;/p&gt;

&lt;p&gt;I flipped open the index, skimmed it, and started paging around the whole book&lt;sup id=&quot;fnref:how-to-read-book&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:how-to-read-book&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Anyway, the section that first jumped out at me was chapter 5. I read it ravenously, threads connecting in my head at a quite rapid clip.&lt;sup id=&quot;fnref:compression-progress&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:compression-progress&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I will re-print chapter 5 below. I eventually quickly skimmed around other portions of the book, under the hearty endorsement of the author, hop-scotching around a well-organized and well-internally-linked book. I use my phone to take photos of pages, and fairly easily turn those pictures into text that I can quote below. These words have brought me tremendous relief and peace and help.&lt;/p&gt;

&lt;p&gt;The purpose of printing these words below is to possibly prick your own curiosity, in the same way mine was. I had ordered a copy of this book for myself within an hour, and have now read the book, and listened to the audiobook.&lt;/p&gt;

&lt;p&gt;Enjoy these long quotes, from Pete Walker himself:&lt;/p&gt;

&lt;h1 id=&quot;chapter-5-what-if-i-was-never-hit&quot;&gt;Chapter 5: What if I was Never Hit?&lt;/h1&gt;

&lt;p&gt;Physical and sexual abuse are the most obvious traumas that a child can experience, especially when they are ongoing. However, much that is also traumatic goes unnoticed in Cptsd-engendering families. This often occurs because parental acts of physical abuse are more blatant than acts of verbal and emotional abuse and neglect. It appears to me that just as many children acquire Cptsd from emotionally traumatizing families as from physically traumatizing ones.&lt;/p&gt;

&lt;p&gt;Denial about the traumatic effects of childhood abandonment can seriously hamper your ability to recover. In childhood, ongoing emotional neglect typically creates overwhelming feelings of fear, shame and emptiness. As an adult survivor, you may continuously flashback into this abandonment mélange. Recovering depends on realizing that fear, shame and depression are the lingering effects of a loveless childhood. Without such understanding, your crucial, unmet needs for comforting human connection can strand you in a great deal of unnecessary suffering.&lt;/p&gt;

&lt;h2 id=&quot;denial-and-minimization&quot;&gt;Denial and Minimization&lt;/h2&gt;

&lt;p&gt;Confronting denial is no small task. Children so need to believe that their parents love and care for them, that they will deny and minimize away evidence of the most egregious neglect and abuse.&lt;/p&gt;

&lt;p&gt;De-minimization is a crucial aspect of confronting denial. It is the process by which a person deconstructs the defense of “making light” of his childhood trauma. The lifelong process of de-minimizing the impact of childhood trauma is like peeling a very slippery and caustic onion. The outer layer for some is the stark physical evidence of abuse, e.g., sexual abuse or excessive corporal punishment. Subsequent layers involve verbal, spiritual and emotional abuse. Core layers have to do with verbal, spiritual and emotional neglect.&lt;/p&gt;

&lt;p&gt;In a perversely ironic way, my parents’ physical abuse of me was a blessing, for it was so blatant that my attempts to suppress, rationalize, make light of and laugh it off lost their power in adolescence, and I was able to see my father for the bully that he was. [Seeing my idealized mother’s abusiveness came much later].&lt;/p&gt;

&lt;p&gt;Identifying my father’s behavior as abusive eventually helped me become aware of less blatant aspects of my parents’ oppression, and I subsequently discovered the verbal and emotional abuse layer of the onion of my childhood abandonment.&lt;/p&gt;

&lt;h2 id=&quot;verbal-and-emotional-abuse&quot;&gt;Verbal and Emotional Abuse&lt;/h2&gt;

&lt;p&gt;The fact that verbal and emotional abuse can be traumatic is lost on many childhood trauma victims, though it is rarely lost on recovering victims of cult brainwashing.&lt;/p&gt;

&lt;p&gt;Many survivors of verbal and emotional abuse never learn to validate its soul-damaging effects. They never accurately assign current time suffering to it. Attempts to acknowledge it are typically blindsided with thoughts that it was nothing compared to kids
who were repeatedly beaten - who “had it so much worse.” As a child, I minimized my father’s frequent face-slapping by comparing who were it to my friend’s father who used to punch him.&lt;/p&gt;

&lt;p&gt;Much later, however, I finally realized that for me, and many of my clients, verbal and emotional abuse damaged us much more than our physical abuse.&lt;sup id=&quot;fnref:spankings&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:spankings&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Ongoing assault with critical words systematically destroys our self-esteem and replaces it with a toxic inner critic that incessantly judges us as defective. Even worse, words that are emotionally poisoned with contempt infuse the child with fear and toxic shame. Fear and shame condition him to refrain from asking for attention, from expressing himself in ways that draw attention. Before long, he learns to refrain from seeking any kind of help or connection at all.&lt;/p&gt;

&lt;h2 id=&quot;theoretical-neurobiology-of-the-critic&quot;&gt;Theoretical Neurobiology of the Critic&lt;/h2&gt;

&lt;p&gt;Unrelenting criticism, especially when it is ground in with parental rage and scorn, is so injurious that it changes the structure of the child’s brain.&lt;/p&gt;

&lt;p&gt;Repeated messages of disdain are internalized and adopted by the child, who eventually repeats them over and over to himself. Incessant repetitions result in the construction of thick neural pathways of self hate and self-disgust. Over time a self-hate response attaches to more and more of the child’s thoughts, feelings and behaviors.&lt;/p&gt;

&lt;p&gt;Eventually, any inclination toward authentic or vulnerable self expression activates internal neural networks of self-loathing. The child is forced to exist in a crippling state of self-attack, which eventually becomes the equivalent of full-fledged self-abandonment. The ability to support himself or take his own side in any way is decimated.&lt;/p&gt;

&lt;p&gt;With ongoing parental reinforcement, these neural pathways expand into a large complex network that becomes an Inner Critic that dominates mental activity. The inner critic’s negative perspective creates many programs of self-rejecting perfectionism. At the same time, it obsesses about danger and catastrophizes incessantly. Chapters 9 and 10 expand on shrinking and deconstructing these life-ruining programs. Until this is accomplished, the survivor typically lives in varying degrees of emotional flashback much of the time.&lt;/p&gt;

&lt;p&gt;The verbal and emotional layer of the abuse onion has sub-layers of minimization. I have heard clients jokingly repeat numerous versions of this over and over: “I know I’m hard on myself, but if I don’t constantly kick my own ass, I’ll be more of a loser than I already am. In fact, I really need you to come down on me if I try to get away with anything!” A childhood rife with verbal and emotional abuse forces the child to so thoroughly identify with the critic, that it is as if the critic is his whole identity.&lt;/p&gt;

&lt;p&gt;Disidentification from the critic is the fight of a lifetime. To liberate your identity from the toxic critic, you will have to repetitively confront it for a long time. You will have greater success if you are prepared to forgive yourself for repeatedly collapsing back into the old habit of self-blame. Progress is always a gradual back and forth process. Ironically, a pernicious type of self-hate can constellate around the self-judgment that one is especially defective because she cannot simply banish the critic. This is the typical toxic, all-or none thinking of the critic.&lt;/p&gt;

&lt;p&gt;Sadly, many survivors give up on fighting the critic before recognizing the myriad subtle ways it tortures them. Yet, there is no more noble recovery battle than that which gradually frees the psyche from critic dominance. Until this happens to a significant degree, there is minimal development of the healthy, user-friendly ego. Let us look now at how emotional neglect alone can create a psyche-dominating critic.&lt;/p&gt;

&lt;h2 id=&quot;emotional-neglect-the-core-wound-in-complex-ptsd&quot;&gt;Emotional Neglect: The Core Wound in Complex PTSD&lt;/h2&gt;

&lt;p&gt;Minimization about the damage caused by extensive emotional neglect is at the core of the Cptsd denial onion. Our journey of recovery takes a quantum leap when we really feel and understand how devastating it was to be emotionally abandoned. An absence of parental loving interest and engagement, especially in the first few years, creates an overwhelming emptiness. Life feels harrowingly frightening to the infant or toddler who is left for long periods without comfort and care. Children are helpless and powerless for a long time, and when they sense that no one has their back, they feel scared, miserable and disheartened. Much of the constant anxiety that adult survivors live in is this still aching fear that comes from having been so frighteningly abandoned.&lt;/p&gt;

&lt;p&gt;Many survivors never discover and work through the wounds that correlate with this level. This happens because they over assign their suffering to overt abuse and never get to the core issue of their emotional abandonment. As stated above, this is especially likely to occur with survivors who dismissively compare their trauma to those who were abused more noticeably and more dramatically. I find this painfully ironic because some people suffer significant active abuse without developing Cptsd. Typically, they are “spared” because there is one caretaker who does not emotionally neglect them.&lt;sup id=&quot;fnref:witness&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:witness&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Traumatic emotional neglect occurs when a child does not have a single caretaker to whom she can turn in times of need or danger. Cptsd then sets in to the degree that there is no alternative adult [relative, older sibling, neighbor, or teacher] to turn to for comfort and protection. This is especially true when the abandonment occurs 24/7, 365 days a year for the first few years.&lt;/p&gt;

&lt;p&gt;Growing up emotionally neglected is like nearly dying of thirst outside the fenced off fountain of a parent’s warmth and interest. Emotional neglect makes children feel worthless, unlovable and excruciatingly empty. It leaves them with a hunger that deeply at the center of their being. They starve for human and comfort.&lt;/p&gt;

&lt;h2 id=&quot;the-failure-to-thrive-syndrome&quot;&gt;The Failure to Thrive Syndrome&lt;/h2&gt;

&lt;p&gt;When a child is continuously deprived of a nurturing caretaker, love-starvation steadily increases and sometimes devolves into the Failure to Thrive Syndrome.&lt;/p&gt;

&lt;p&gt;Failure to thrive is a term coined in the mid twentieth century to describe the epidemic of baby deaths that occurred when new germ phobic practices were introduced into hospitals. The new standard was that nurses were prohibited from holding babies for fear of contaminating them. Infant mortality immediately began to climb.&lt;/p&gt;

&lt;p&gt;Modern medical practice has abandoned this heartless approach because of the Failure to thrive research. This research has since been corroborated by data from Eastern European orphanages where there are insufficient staff to meet the contact-comfort needs of babies. Modern medicine now accepts as scientific fact the principle that babies need a great deal of physical touch and nurturing in order to thrive.&lt;/p&gt;

&lt;p&gt;In my experience, failure to thrive is not an all-or-none phenomenon, but rather a continuum that stretches from the abandonment depression to death. Many Cptsd survivors never thrived as babies. I believe that many suffered painful bouts of lingering the end of the continuum that feels death-like. Several of my clients commonly have quipped that they “feel like death warmed over” when they are in a flashback.&lt;/p&gt;

&lt;p&gt;Moreover, I suspect that some traumatized children do die from their abandonment. Perhaps, their immune systems weaken and make them more susceptible to diseases. Perhaps, as David Kalshed hints, they unconsciously gravitate toward lethal “accidents” to terminate their misery.&lt;/p&gt;

&lt;p&gt;One of my clients reported this painful memory when we were processing a flashback that she was trapped in. She was ten, in a daze, and walked out between two parked cars into traffic. She was hit by a truck and it took months of hospitalization to save her leg. Her most tearful re-experiencing of this event was remembering how she woke up in the hospital and felt tremendous disappointment that she was still alive.&lt;/p&gt;

&lt;h2 id=&quot;emotional-hunger-and-addiction&quot;&gt;Emotional Hunger and Addiction&lt;/h2&gt;

&lt;p&gt;The emotional hunger that comes from parental abandonment often morphs over time into an insatiable appetite for substances and/ or addictive processes. Minimization of early abandonment often transforms later in life into the minimizing that some survivors use to rationalize their substance and process addictions. Fortunately, many survivors eventually come to see their substance or process addictions as problematic. But many also minimize the deleterious effects of their addiction and jokingly dismiss their need to end or reduce their reliance on them.&lt;/p&gt;

&lt;p&gt;When the survivor has no understanding of the effects of trauma or no memory of being traumatized, addictions are often understandable, misplaced attempts to regulate painful emotional flashbacks. However many survivors are now in a position to see how self-destructive their addictions are. They are now old enough to learn healthier ways of self-soothing&lt;/p&gt;

&lt;p&gt;Accordingly, substance and process addictions can be seen as misguided attempts to distract from inner pain. The desire to reduce such habits can therefore be used as motivation to learn the more sophisticated forms of self-soothing that Cptsd recovery work has to offer.&lt;/p&gt;

&lt;p&gt;As we will see in chapter 11, grieving work offers us irreplaceable tools for working through inner pain. This then helps obviate the need to harmfully distract ourselves from our pain.&lt;/p&gt;

&lt;h2 id=&quot;the-evolutionary-basis-of-attachment-needs&quot;&gt;The Evolutionary Basis of Attachment Needs&lt;/h2&gt;

&lt;p&gt;The human brain evolved during the Hunter-Gatherer era that represents 99.8% of our time on this planet. For a child, safety from predators during these times depended on being in very close proximity to an adult. Even the briefest loss of contact with a parental figure could trigger panicky feelings as beasts of prey only needed seconds to snatch away an unprotected child.&lt;/p&gt;

&lt;p&gt;Fear hard-wired in the child as a healthy response to separation from a protective adult. Fear also linked automatically with the fight response so that the infant and toddler would automatically cry angrily for attention, help, and cessation of abandonment.&lt;/p&gt;

&lt;p&gt;Cptsd-inducing families however loathe angry crying, and many can find professionals to back them up for routinely leaving babies and very young children to “cry it out” on their own.&lt;/p&gt;

&lt;p&gt;In most dysfunctional families, parents disdain children for needing any kind of help or attention at all. Moreover, even the most well-intentioned parent can seriously neglect their children by subscribing to the egregious 20th century “wisdom” that “Kids need quality time - quantity does not matter.”&lt;/p&gt;

&lt;p&gt;When children experience long periods of being powerless to obtain needed connection with a parent, they become increasingly anxious, upset and depressed. In Cptsd-engendering families, the absence of care and concern is extreme. A caretaker is rarely or never available for support, comfort or protection.&lt;/p&gt;

&lt;p&gt;If this is what you suffered, you then grew up feeling that no one likes you. No one ever listened to you or seemed to want you. No one had empathy for you, showed you warmth, or invited closeness. No one cared about what you thought, felt, did, wanted of dreamed of. You learned early that, no matter how hurt, alienated, or terrified you were, turning to a parent would do nothing than exacerbate your experience of rejection.&lt;/p&gt;

&lt;p&gt;When caretakers turn their backs on a child’s need for help and support, her inner world becomes an increasingly nightmarish amalgam of fear, shame and depression. The child who is abandoned in this way experiences the world as a terrifying place.&lt;/p&gt;

&lt;p&gt;Over time the child’s dominant experience of herself is so replete with emotional pain and so unmanageable that that she has to dissociate, self-medicate, act out [aggression against others] or act in [aggression against the self] to distract from it.&lt;/p&gt;

&lt;p&gt;The situation of the abandoned child further deteriorates as an extended absence of warmth and protection gives rise to the cancerous growth of the inner critic as described above. The child projects his hope for being accepted onto self-perfection. By the time the child is becoming self-reflective, cognitions start to arise that sound like this: “I’m so despicable, worthless, unlovable, and ugly; maybe my parents would love me if I could make myself like those perfect kids I see on TV.”&lt;/p&gt;

&lt;p&gt;In this way, the child becomes hyperaware of imperfections and strives to become flawless. Eventually she roots out the ultimate flaw - the mortal sin of wanting or asking for her parents’ time or energy. Intrinsic to this process is noticing - more and more hyper vigilantly - how her parents turn their back or become angry or disgusted whenever she needs anything, whether it be attention, listening, interest, or affection.&lt;/p&gt;

&lt;p&gt;Emotional neglect, alone, causes children to abandon them selves, and to give up on the formation of a self. They do so to preserve an illusion of connection with the parent and to protect themselves from the danger of losing that tenuous connection. This typically requires a great deal of self-abdication, e.g., the forfeiture of self-esteem, self-confidence, self-care, self-interest, and self-protection.&lt;/p&gt;

&lt;p&gt;Moreover, endangerment programs proliferate in the critic as the child learns that he cannot ask his parent to protect him from dangers and injustices in the outside world, never mind in the home.&lt;/p&gt;

&lt;p&gt;His only recourse is to become hypervigilant about things that can go wrong. His critic compiles lists of possible calamities, especially those that are graphically portrayed in the media.&lt;/p&gt;

&lt;p&gt;The media gives the critic of the abandoned child much fodder to play with. She may be exposed daily to hours of that glorify sarcasm, backbiting and bullying. Moreover news programs, with a ninety percent content of bad news, fill her head with impressions that the world is predominantly hostile and dangerous, Even worse, emotionally neglectful parents commonly abandon their children to their favorite babysitter - the TV. &lt;sup id=&quot;fnref:tv-use&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:tv-use&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Through such neglect the child’s consciousness eventually becomes overwhelmed with the processes of drasticizing and catastrophizing. Drasticizing and catastrophizing are critic processes that lead the child to constantly rehearse fearful scenarios in a vain attempt to prepare himself for the worst. This is the process by which Cptsd with its overdeveloped stress and toxic shame programs sets in and becomes triggerable by a plethora of normally innocuous stimuli.&lt;/p&gt;

&lt;p&gt;Most notable of these stimuli are other people, especially unknown people or people even vaguely reminiscent of the parents. Over time, the critic comes to assume that all other people are dangerous and automatically triggers the fight, flight, freeze or fawn response whenever a stranger or unproven other comes into view.&lt;sup id=&quot;fnref:others&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:others&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately, there’s a difference of opinion. The onus has been on me to prove that anyone can be safe, repeatedly, daily, and I cannot. Firstly, it’s not true, but secondly, acting like everyone is dangerous &lt;em&gt;makes your world more dangerous&lt;/em&gt;, so the ‘perception’ is, in fact, a reality that cannot be unwillingly experientially altered. in good ways and bad, we can ‘get what we give’, for many very basic and reasonable reasons. (example: smiling is a public statement of peace. Sneering is a public statement of contempt. If you habitually chose one over the other, your lived experience will differ than if you choose the other.)&lt;/p&gt;

&lt;p&gt;This people-are-dangerous process typically devolves into the social anxiety that is frequently a symptom of Cptsd. In worst case scenarios it manifests as social phobia and agoraphobia. In my opinion, agoraphobia is rarely the fear of open spaces. It is instead a disguised form of social phobia. It is the fear of going out lest you run into someone or anyone.&lt;/p&gt;

&lt;h2 id=&quot;abandonment-stultifies-emotional-and-relational-intelligence&quot;&gt;Abandonment Stultifies Emotional and Relational Intelligence&lt;/h2&gt;

&lt;p&gt;As stated above, emotionally abandoned children often devolve into experiencing all people as dangerous, no matter how benign or generous they may in fact be. Even love, coming their way, reverberates threateningly on a subliminal level. Unconsciously, they fear that if they momentarily “trick” someone into liking them, the forbidden prize will vanish once their social perfectionism inevitably fails and exposes their unworthiness. Moreover, when this occurs, they will be triggered even more deeply into the abandonment mélange.&lt;/p&gt;

&lt;p&gt;Emotional intelligence and its cohort, relational intelligence, are forced into developmental arrest by abandoning parents. Children never learn that a relationship with a healthy person can be com forting and enriching. The ability to open to and benefit from love and caring from others often lays dormant and undeveloped.&lt;/p&gt;

&lt;p&gt;Moreover, the appropriate management of the normal emotions that recurrently arise in significant relationships is never modeled for them. Emotional intelligence about the healthy and functional aspects of anger, sadness, and fear lies fallow.&lt;/p&gt;

&lt;h2 id=&quot;de-minimizing-emotional-abandonment&quot;&gt;De-Minimizing Emotional Abandonment&lt;/h2&gt;

&lt;p&gt;As with physical abuse, effective work on the wounds of verbal and emotional abuse can sometimes open the door to de-minimizing the awful impact of emotional neglect. I sometimes feel the most for my clients who were “only” neglected, because it is so difficult to see neglect as hard core evidence. Most people remember little before they were four years old. And by that time, much of this kind of damage is done. It typically takes some very deep introspective work, to realize that current time flashback pain is a re-creation of how bad it felt to be emotionally abandoned.&lt;/p&gt;

&lt;p&gt;The remembering and de-minimizing of the impact of emotional neglect can take a long time. It is typically an intuitive piecing together of a lot of clues. The puzzle is often solved when a critical mass of childhood reconstruction is reached. Sometimes this fosters an epiphany that neglect is indeed at the core of present time suffering. Sometimes this epiphany brings a great relieving certainty that fragile self-esteem, frequent flashbacks, and recurring reenactments of unsupportive relationships were caused by the closed hearts of your parents.&lt;/p&gt;

&lt;p&gt;I sometimes regret that I did not know what I now know about this kind of neglect when I wrote my first book. I wish I had not over-focused on the role of abuse in my childhood trauma. It is so hard to convey this to a client whose critic minimizes and shames them for their plight by comparing them unfavorably to me: “I didn’t have it anywhere near as bad as you. My mother never hit me!”&lt;/p&gt;

&lt;p&gt;How ironic that this typically invokes a feeling-sense in me that the worst thing that happened to me, by far, was growing up so emotionally abandoned. In fact, it was not until I learned to assign the pain of numerous current time emotional flashbacks to the abject loneliness of my childhood, that I was able to work effectively on the repetition compulsion that lead me into so many neglectful relationships. And once again this is not to deny or minimize the C-ptsd inducing traumatization that does come from each and every type of abuse; physical, sexual, verbal and emotional.&lt;/p&gt;

&lt;h2 id=&quot;practicing-vulnerability&quot;&gt;Practicing Vulnerability&lt;/h2&gt;

&lt;p&gt;Emotional abandonment is healed by the type of real intimacy that we have been discussing. And once again real intimacy depends on us showing up in times of vulnerability. Deep-level recovering occurs when we successfully connect with a safe-enough other during the flashbacked-times of feeling trapped in the fear, shame and depression of the abandonment mélange.&lt;/p&gt;

&lt;p&gt;In this vein, I had to painstakingly practice showing up in my pain for years. At first I could only do this infrequently. I was too habituated to my childhood default positions of hiding or camouflaging with substances whenever I was in the grip of the abandonment mélange. Yet I drew strength to increase my practice from a growing distaste for the social perfectionism of my people-pleasing codependence. I somehow knew my loneliness would never decrease unless I took the risk to see if certain well chosen others would accept me in all aspects of my experience, not just the shiny ones.&lt;/p&gt;

&lt;p&gt;And of course, like most survivors, I was ignorant at first that I was even experiencing the emotional pain of the abandonment mélange. How could I help but conceal it?&lt;/p&gt;

&lt;p&gt;Moreover, even after considerable de-minimization of my child hood abuse/neglect picture, I was still convinced that everyone but my therapist would find me abhorrent if I shared about my flashback feelings. Furthermore, my trust of my therapist also wavered quite a bit at first, especially during my deepest flashbacks.&lt;/p&gt;

&lt;p&gt;Gratefully, sufficient positive experiences with my therapist eventually emboldened me to bring my authentic vulnerability to other select and gradually proven relationships, where I found the acceptance, safety and support that, previously, I would not have known to wish for.&lt;/p&gt;

&lt;p&gt;There are limitations of the analogy of the onion. Later recovery does typically involve working at various levels at the same time. De-minimization is a lifetime process. Revisiting a central issue of our abandonment picture sometimes impacts us even more deeply than it did at first.&lt;/p&gt;

&lt;p&gt;One such occasion left me reeling with the certain knowledge that getting hit felt preferable to being abandoned for long hours outside my depressed mother’s locked bedroom door. I would pound on the door even though I knew she would explode because I just could not bear the isolation. I have known about the latter for quite some time now and yet writing about it brings up some new bitter-sweet tears.&lt;/p&gt;

&lt;p&gt;Bitter-sweet tears are not uncommon in the ongoing work of peeling the layers of the denial onion. The tears are bitter because we realize the abandonment was even more devastating than we previously realized. And then the tears are sweet because they validate the truth of the recollection and put the blame where it truly belongs. And then they may be bitter again because the horrible abandonments happened over and over again when we were so young and legitimately needed so much help. And then they can turn sweet again, as in tears of gratitude, because a person often comes through this kind of depth work with an enhanced compassion for what she suffered and a healthy pride about having survived.&lt;/p&gt;

&lt;p&gt;In my latest experience of this type of grieving my sweet tears came from realizing that I do regularly experience good enough love and safety in relationship. And then my tears were bitter again because I can still emotionally flashback to that bereft state of feeling stranded from the comfort of others, even occasionally from my wife and son. And then my tears were sweet again because my flashbacks are so much easier to handle these days, especially as I increasingly master the use of the tools I describe in chapter 8.&lt;/p&gt;

&lt;h2 id=&quot;the-power-of-narrative&quot;&gt;The Power of Narrative&lt;/h2&gt;

&lt;p&gt;There is also growing evidence that recovery from Complex PTSD is reflected in the narrative a person tells about her life.&lt;sup id=&quot;fnref:failures&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:failures&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The degree of recovery matches the degree to which a survivor’s story is complete, coherent, and emotionally congruent and told from a self sympathetic perspective.&lt;/p&gt;

&lt;p&gt;In my experience, deep level recovery is often reflected in a narrative that highlights the role of emotional neglect in describing what one has suffered and what one continues to deal with.&lt;/p&gt;

&lt;p&gt;My client, Matt, peeled a large layer off his onion of denial and minimization two days before Mother’s Day. He came into his session in a terrible flashback. “Life sucks and I suck even more. I couldn’t even do something as simple as pick out a Mother’s Day card.”&lt;/p&gt;

&lt;p&gt;Fortunately, Matt had achieved a great deal of de-minimization since the previous Mother’s Day when he thought his mother was a good mother because she had never hit him. Now however, he was heavily triggered by spending an hour in a card shop unable to find a card that he could send to his mother. As we explored this further, we discovered that the sentiments written in every card made him feel like he would be betraying his inner child if he sent it.&lt;/p&gt;

&lt;p&gt;“I tell you, Pete, not one of those cards describes something that I could be grateful for. I don’t have one memory of anything nice she ever said or did for me!” Before long, he was deep into grieving about how little mothering he had received from his mother.&lt;/p&gt;

&lt;p&gt;He cried and angered about the scornful look and the sarcastic tone of voice that so characterized his interactions with her. “Why did I have to get such a bad deal from the mothering deck?!”&lt;/p&gt;

&lt;p&gt;Towards the end of the session, as often happens with healthy grieving, he felt his flashback resolve and was restored to feeling like he was once again on his own side. The relief of being out of the flashback also allowed his healthy sense of humor to return.&lt;/p&gt;

&lt;p&gt;He started riffing: “I’m going to start a greeting card business for people like me. I’m going to make a line of cards for people with dysfunctional mothers. How about this? Thanks Mom for never knowing what grade I was in’; or “Thanks Mom for all the memories of you walking away whenever I was hurting’; or “Thanks Mom for teaching me how to only notice what was wrong me’; or “Thanks Mom for teaching me how to frown at myself in self-disgust.””&lt;/p&gt;

&lt;p&gt;Understanding how profoundly derelict your parents were in their duty to nurture and protect you is a master key to your recovery. You will benefit greatly from seeing emotional flashbacks as direct messages from your child-self about how much your parents rejected you. When denial is significantly deconstructed, you will typically feel genuine compassion for the child that you were. This self-compassion assuages emotional neglect by providing you with the missed childhood experience of receiving empathy in painful emotional states instead of contempt or abandonment. This, then, helps you to reverse the childhood-survival habit of automatic self abandonment. In turn, this can further motivate you to identify and address the many ways you were abused and/or neglected. Chapter 8 of my book, The Tao of Fully Feeling, provides detailed guidelines for assessing and remediating your abuse/neglect picture.&lt;/p&gt;

&lt;p&gt;Finally, it is an empowering accomplishment to really get the profound significance of childhood emotional neglect. It is often flashback-resolving to realize in the moment that a flashback into bewilderment and hopelessness is an emotional reliving of your childhood trauma. Like nothing else, this can generate a self-protective impulse toward your child-self and your present-time self, kick-starting the process of resolving any given flashback.&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;interlude-from-josh&quot;&gt;Interlude from Josh&lt;/h1&gt;

&lt;p&gt;So, I skimmed the above chapter. That’s all of chapter 5. I found lots of interesting ideas. It was more than enough to justify skipping around to a few other sections, which I did. I don’t remember the exact order I moved, but here’s a bit of a skatter-shot smattering of portions of the book that have been interesting to me. Again, I’d encourage you to simply pick up your own copy: &lt;a href=&quot;https://www.amazon.com/Complex-PTSD-Surviving-RECOVERING-CHILDHOOD/dp/1492871842/ref=tmm_pap_swatch_0?_encoding=UTF8&amp;amp;qid=1657814003&amp;amp;sr=8-1&quot;&gt;Amazon&lt;/a&gt;, &lt;a href=&quot;https://www.amazon.com/Complex-PTSD-Pete-Walker-audiobook/dp/B07MK5F3KQ/ref=tmm_aud_swatch_0?_encoding=UTF8&amp;amp;qid=1657814003&amp;amp;sr=8-1&quot;&gt;Audible&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;chapter-1-the-journey-of-recovering-from-cptsd&quot;&gt;Chapter 1 The Journey of Recovering from CPTSD&lt;/h1&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;h2 id=&quot;what-you-may-have-been-misdiagnosed-with&quot;&gt;What You may have been Misdiagnosed with&lt;/h2&gt;

&lt;p&gt;I once heard renowned traumatologist, John Briere, quip that if Cptsd were ever given its due, the DSM [The Diagnostic and Statistical Manual of Mental Disorders] used by all mental health professionals would shrink from its dictionary like size to the size of a thin pamphlet. In other words, the role of traumatized child hoods in most adult psychological disorders is enormous.&lt;/p&gt;

&lt;p&gt;I have witnessed many clients with Cptsd misdiagnosed with various anxiety and depressive disorders. Moreover, many are also unfairly and inaccurately labeled with bipolar, narcissistic, codependent, autistic spectrum and borderline disorders. [This is not to say that Cptsd does not sometimes co-occur with these disorders.]&lt;/p&gt;

&lt;p&gt;Further confusion also arises in the case of ADHD [Attention Deficit Hyperactive Disorder], as well as obsessive/compulsive disorder, both of which are sometimes more accurately described as fixated flight responses to trauma [see the 4F’s below]. This is also true of ADD [Attention Deficit Disorder] and some depressive and dissociative disorders which similarly can more accurately be described as fixated freeze responses to trauma.&lt;/p&gt;

&lt;p&gt;Furthermore, this is not to say that those so misdiagnosed do not have issues that are similar and correlative with the disorders above. The key point is that these labels are incomplete and unnecessarily shaming descriptions of what the survivor is actually afflicted with.&lt;/p&gt;

&lt;p&gt;Reducing Cptsd to “panic disorder” is like calling food allergies chronically itchy eyes. Over-focusing treatment on the symptoms of panic in the former case and eye health in the latter does little to get at root causes. Feelings of panic or itchiness in the eyes can be masked with medication, but all the associated problems that cause these symptoms will remain untreated.&lt;/p&gt;

&lt;p&gt;Moreover, most of the diagnoses mentioned above are typically treated as innate characterological defects rather than as learned maladaptations to stress - adaptations that survivors were forced to learn as traumatized children. And, most importantly, because these adaptations were learned, they can often be extinguished or significantly diminished, and replaced with more functional adaptations to stress.&lt;/p&gt;

&lt;p&gt;In this vein, I believe that many substance and process addictions also begin as misguided, maladaptations to parental abuse and abandonment. They are early adaptations that are attempts to soothe and distract from the mental, emotional and physical pain of Cptsd.&lt;/p&gt;

&lt;h2 id=&quot;origins-of-cptsd&quot;&gt;Origins of Cptsd&lt;/h2&gt;

&lt;p&gt;How do traumatically abused and/or abandoned children develop Cptsd? While the origin of Cptsd is most often associated with extended periods of physical and/or sexual abuse in childhood, my observations convince me that ongoing verbal and emotional abuse also causes it.&lt;/p&gt;

&lt;p&gt;[Many dysfunctional parents react contemptuously to a baby or toddler’s plaintive call for connection and attachment. Contempt is extremely traumatizing to a child, and at best, extremely noxious to an adult.]&lt;/p&gt;

&lt;p&gt;Contempt is a toxic cocktail of verbal and emotional abuse, deadly amalgam of denigration, rage and disgust. Rage creates fear, and disgust creates shame in the child in a way that soon teaches her to refrain from crying out, from ever asking for attention. Before long, the child gives up on seeking any kind of help or connection at all. The child’s bid for bonding and acceptance is thwarted, and she is left to suffer in the frightened despair of abandonment.&lt;/p&gt;

&lt;p&gt;Particularly abusive parents deepen the abandonment trauma by linking corporal punishment with contempt. Slaveholders typically use contempt and scorn to destroy their victims’ self esteem. Slaves and children who are made to feel worthless and powerless devolve into learned helplessness and can be controlled with far less energy and attention. Cult leaders also use contempt to shrink their followers into absolute submission after luring them in with brief phases of fake unconditional love.&lt;/p&gt;

&lt;p&gt;Furthermore, Cptsd can also be caused by emotional neglect alone. This key theme is explored at length in chapter 5. If you notice that you are berating yourself because your trauma seems insignificant compared to others, please skip ahead to this chapter and resume reading here upon completion.&lt;/p&gt;

&lt;p&gt;Emotional neglect also typically underlies most traumatizations that are more glaringly evident. Parents who routinely ignore or turn their backs on a child’s calls for attention, connection or help, abandon their child to unmanageable amounts of fear, and the child eventually gives up and succumbs to depressed, death-like feelings of helplessness and hopelessness.&lt;/p&gt;

&lt;p&gt;These types of rejection simultaneously magnify the child’s fear, and eventually add a coating of shame to it. Over time this fear and shame begets a toxic inner critic that holds the child, and later the adult, totally responsible for his parents’ abandonment, until he becomes his own worst enemy and descends into the bowels of Cptsd.&lt;/p&gt;

&lt;h2 id=&quot;more-about-trauma&quot;&gt;More about Trauma&lt;/h2&gt;

&lt;p&gt;Trauma occurs when attack or abandonment triggers a fight/ flight response so intensely that the person cannot turn it off once the threat is over. He becomes stuck in an adrenalized state. His sympathetic nervous system is locked “on” and he cannot toggle into the relaxation function of the parasympathetic ner vous system.&lt;/p&gt;

&lt;p&gt;One common instance of this occurs when a child is attacked and hurt by a bully after school. He may remain in a hypervigilant, fearful state until someone takes action to insure him that he will not be revictimized, and until someone helps him release the hyperactivation in his nervous system.&lt;/p&gt;

&lt;p&gt;If the child has learned through experience that he can come to at least one of his parents when he is hurting, frightened or need ing help, he will tell mom or dad about it. With them, he will grieve the temporary death of his sense of safety in the world by verbally ventilating, crying and angering about it [chapter 11 expands these processes of grieving]. Moreover, his parent will report the bully and take steps to assure that it will not happen again, and the child will typically be released from the trauma. He will naturally relax back into the safety of parasympathetic nervous system functioning.&lt;/p&gt;

&lt;p&gt;“Simple”, one incident traumas can often be resolved relatively easily if Cptsd is not already present.&lt;/p&gt;

&lt;p&gt;If however the bullying happens on numerous occasions and the child does not seek help, or if the child lives in an environment so dangerous that the parent is powerless to ensure a modicum of safety, it may take more than parental comforting to release the trauma. If the trauma is not too continuous over too long a time, a short course of therapy may be all that is needed to resolve the trauma, provided of course the danger in the environment can effectively be remediated.&lt;/p&gt;

&lt;p&gt;When the trauma however is repetitive and ongoing and no help is available, the child may become so frozen in trauma that the symptoms of “simple” ptsd begin to set in. This can also occur during the prolonged trauma of combat or entrapment in a cult or domestic violence situation.&lt;/p&gt;

&lt;p&gt;If however, a person is also afflicted by ongoing family abuse or profound emotional abandonment, the trauma will manifest as a particularly severe emotional flashback because he already has Cptsd. This is particularly true when his parent is also a bully.&lt;/p&gt;

&lt;h2 id=&quot;the-four-fs-fight-flight-freeze-and-fawn&quot;&gt;The Four F’s: Fight, Flight, Freeze and Fawn&lt;/h2&gt;

&lt;p&gt;Earlier, I mentioned the fight/flight response that is an innate automatic response to danger in all human beings. A more complete and accurate description of this instinct is the fight/flight/freeze/fawn response. The complex nervous system wiring of this response allows a person in danger to react in four different ways.&lt;/p&gt;

&lt;p&gt;A fight response is triggered when a person suddenly responds aggressively to something threatening. A flight response is triggered when a person responds to a perceived threat by fleeing, or symbolically, by launching into hyperactivity. A freeze response is triggered when a person, realizing resistance is futile, gives up, numbs out into dissociation and/or collapses as if accepting the inevitability of being hurt. A fawn response is triggered when a person responds to threat by try ing to be pleasing or helpful in order to appease and forestall an attacker. This fourfold response potential will heretofore be referred to as the 4Fs.&lt;/p&gt;

&lt;p&gt;Traumatized children often over-gravitate to one of these response patterns to survive, and as time passes these four modes become elaborated into entrenched defensive structures that are similar to narcissistic [fight], obsessive/compulsive [flight], dissociative [freeze] or codependent [fawn] defenses.&lt;/p&gt;

&lt;p&gt;These structures help children survive their horrific childhoods, but leave them very limited and narrow in how they respond to life. Even worse, they remain locked in these patterns in adult hood when they no longer need to rely so heavily on one primary response pattern.&lt;/p&gt;

&lt;p&gt;It is important to understand that variances in the childhood abuse/neglect patterns, birth order, and genetic predispositions result in people polarizing to their particular 4F type.&lt;/p&gt;

&lt;p&gt;In the next section we will explore examples of how children are driven into these defenses by traumatizing parents. The four children in the vignette below match the four basic types of trauma survivors:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Bob = Fight - Narcissistic&lt;/li&gt;
  &lt;li&gt;Carol = Flight - Obsessive/Compulsive&lt;/li&gt;
  &lt;li&gt;Maude = Freeze - Dissociative&lt;/li&gt;
  &lt;li&gt;Sean = Fawn - Codependent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;h4 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h4&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:good-enough&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This is a bar of exceptional quality, despite how it might first read, and is explained in detail on chapter 13 of this book I’m talking about. The chapter is titled &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;A Relational Approach to Healing Abandonment&lt;/code&gt; &lt;a href=&quot;#fnref:good-enough&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:how-to-read-book&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’ve read &lt;a href=&quot;https://www.goodreads.com/book/show/567610.How_to_Read_a_Book&quot;&gt;How to Read a Book: The Classic Guide to Intelligent Reading&lt;/a&gt;, after all, and when I perceive a book to possibly have value to me, I interrogate the book for it’s secrets and value. I have a fairly specific process. (Index, skim beginning/end of first/last chapter, skip around a bit, dig into a single chapter, skim the chapter, then read beginning/end of chapter, then read the whole chapter in depth, skip around some more, etc.) &lt;a href=&quot;#fnref:how-to-read-book&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:compression-progress&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I freely give in to &lt;a href=&quot;https://josh.works/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;curiosity and interestingness&lt;/a&gt;. Many others that I’ve spoken to about this book have intuitively grokked some of the learnings I’ve shared, and I wanted an easy-to-share-and-reference spot for more references for this book. &lt;a href=&quot;#fnref:compression-progress&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:spankings&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;As is common in certain slices of the American population, hitting one’s children for retributive vengeance of a perceived slight (“spanking”) was common in my house. I don’t remember ever being supportive of the institution, but only recently have I begun to label it as ‘simple’ physical abuse. &lt;a href=&quot;#fnref:spankings&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:witness&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;in the book “The Verbally Abusive Relationship”, perhaps in an appendix, the author proposes an explanation for why similar mistreatment of two people might lead to one of them later engaging compulsively in emotionally abusive behaviors, and the other engaging in the world from a position of kindness, compassion, and care. The answer boils down to&lt;/p&gt;
      &lt;blockquote&gt;
        &lt;p&gt;The presence of a person who plays the role of witness; who reflects back to the mistreated person the message ‘this is mistreatment, what is being done to you is wrong, and you are &lt;em&gt;right&lt;/em&gt; to feel deeply disturbed and upset, because it &lt;em&gt;is&lt;/em&gt; deeply disturbing and upsetting.’ That “witness” is a kind-hearted third-party observer. Another parent, a sibling, adult friend, etc.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;This phenomena and assessment tracks well to some key conversations I’ve had over the years. &lt;a href=&quot;#fnref:witness&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:tv-use&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This combination of ‘celebration/modeling of toxic behavior’ and ‘overwhelming despair of the news on TV’ has been a threat to me and my family for a long time, I long ago (like, before I got married in 2012) intuited the danger, but couldn’t actually successfully defend against it and prevent great damage from being done. &lt;a href=&quot;#fnref:tv-use&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:others&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Kristi and I have repeatedly had conflict over her demonstrated perceived fear of strangers. I believe(d) that a generalized attitude of fear and/or contempt was so obviously contrary to the gospel and Jesus’s words and actions and wisdom that the onus to ‘fix ones approach’ was obviously on the person experiencing said contempt, though my gosh I was/am down to gameplan how to kindly, compassionately, and gently find experiences that allow the psyche to accept an alternative way of being. &lt;a href=&quot;#fnref:others&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:failures&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I believe so strongly in the theme of this section. A therapist who’s services I once retained, as I was reflecting before our first session on how to talk about “what brought me in”, and what I needed, dropped the ball in this way. I mentioned repeatedly that I was seeking “coherence in narrative” and needed help understanding “the story” of the last few years of my life, so I could tell &lt;em&gt;myself&lt;/em&gt; a coherent narrative of what I’d experienced, what I was responsible for, proper responses to challenging situations, lessons learned, etc. (let alone be able to explain my life coherently to others). This never happened, I eventually lost trust too many times in the relationship, especially when I felt that I was being pushed into SSRIs in premature, inappropriate, de-dignifiying ways. &lt;a href=&quot;#fnref:failures&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Notes on, and quotes from: The Politics of Jesus (Yoder, 1972, 1994)</title>
   <link href="https://josh.works/the-politics-of-jesus-notes-quotes"/>
   <updated>2022-07-24T13:00:00+00:00</updated>
   <id>https://josh.works/2022-politics-of-jesus</id>
   <content type="html">&lt;p&gt;As I’ve done many times before, compiling some notes about some long quotes from some books.&lt;/p&gt;

&lt;p&gt;In the modern world, we’re loath to read long, complicated passeges of text. I hope to get &lt;em&gt;some&lt;/em&gt; of you to eventually order your own copy of &lt;a href=&quot;https://www.goodreads.com/book/show/19133.The_Politics_of_Jesus&quot;&gt;The Politics of Jesus&lt;/a&gt;. On my website you can find the full text of three of the 12 chapters, so it feels needless to say &lt;em&gt;this book has affected me&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I had to do this transcription laboriusly, via optical character recognition apps on my phone, hand-fixing the errors. I undoubtedly missed some.&lt;/p&gt;

&lt;p&gt;I’m not bringing over the footnotes from the book, at least not most of them. I find there to be lots of &lt;em&gt;fascinating&lt;/em&gt; portions of this chapter - I want to share it around, to see if others feel &lt;a href=&quot;https://xkcd.com/356/&quot;&gt;nerd sniped&lt;/a&gt;. Chapter 11 sets up lots of context for chapter 12, the final chapter of the book.&lt;/p&gt;

&lt;p&gt;I’ve copied down all of chapter 1 in &lt;a href=&quot;https://josh.works/was-jesus-ethics-normative&quot;&gt;Was Jesus’ behavior normative?&lt;/a&gt;, and shared context around it.&lt;/p&gt;

&lt;h1 id=&quot;chapter-11-justification-by-grace-through-faith&quot;&gt;CHAPTER 11: Justification by Grace through Faith&lt;/h1&gt;

&lt;p&gt;I have followed up my reading of the story of Jesus with several sample soundings in the thought of the apostolic church. I have observed the prevalence of the language of discipleship, imitation, and participation, and seen how this characterized not only the motivation but also the shape of early Christian behavior. I have observed a parallel expression in the cosmology of the apostle where the “principalities and powers” language, which might be called “mythological,” nonetheless has a very precise and fruitful burden of meaning with regard to understanding the church’s faithfulness within the structured power relationships of society. I have observed that the willingness of the apostles (sometimes embarrassing for moderns) to live within the limits of a society marked by slavery and radical social stratification also has a meaningful foundation in their understanding of the work of Christ and the place of the church in the continuation of that work.&lt;/p&gt;

&lt;p&gt;If the reader has followed thus far, it may not be too much to claim that what we have been observing are several significant strands of corroborative evidence for the survival of the social stance of Jesus into the church of the Apostolic Age. But, the critic may well say, this still leaves aside one fundamental observation. The apostle may well have retained within his thought the vestiges of the Jesus kind of ethos, after all, he did not claim to be uniquely pioneering on every subject. But was not his major original contribution to the life of the early church the position he took with regard to justification and the law? Is not the center of Pauline theology the argument, called forth by “Judaizers” and stated in different ways, especially in Romans and Galatians, that a person may be made righteous before God only on the grounds of faith, with no correlation to his keeping of the law?&lt;/p&gt;

&lt;p&gt;Just as a guilty thief or murderer is still a thief or a murderer after a declaration of amnesty has freed him from his punishment, the argument runs, so a guilty sinner is still a sinner when God declares, on the ground of the work of Christ which no person could have accomplished for himself or herself, that he or she shall henceforth be considered a new person, forgiven and restored to fellowship. But this “being considered” is, spiritually speaking, a legal fiction. It is valid only on the grounds of the sovereign authority of the judge who declared it to be so. The act of justification or the status of being just or righteous before God is therefore radically disconnected from any objective or empirical achievement of goodness by the believer.&lt;/p&gt;

&lt;p&gt;This “disconnection” is only a part of the wider phenomenon of separation between body and soul, objective and subjective realities, outward and inward history, which are the key, are they not, to all the specific emphases of the apostle Paul?&lt;/p&gt;

&lt;p&gt;Was not the central message of the apostle Paul his rejection of any objective dimension to the work of God which could be focused in piety, religious practices, or ethical behavior in such a way as to turn the believer’s attention toward the human works instead of toward the gift of God? Does not the insistence that justification is by faith alone and through grace alone, apart from any correlation with works of any kind, undercut any radical ethical and social concern by implication, even if Paul himself might not have been rigorous enough to push that implication all the way? If we truly join with classic Protestantism in considering the proclamation of justification by grace through faith to be the point at which the gospel stands or falls, must we not then interpret the ethical tradition which Paul took over from Jewish Christianity and shared with his Gentile churches as a vestige of another system, destined to fade away? Was it not, after all, at the cost of forgetting Paul’s emphasis upon grace that a later generation again made good works and a certain social stance very important in the preaching of the church?&lt;/p&gt;

&lt;h2 id=&quot;paul-and-the-question-of-the-modern-reader&quot;&gt;Paul and the Question of the Modern Reader&lt;/h2&gt;

&lt;p&gt;This sweeping set of assumptions about what the apostle Paul must certainly have meant when he spoke about the righteousness of God becoming effective in making people righteous was so self-evident for centuries of Protestant thought, and seemed so necessary as a corrective over against certain tendencies attributed to Catholic piety, that it scarcely could occur to anyone to think that it might be otherwise. It rhymed so well with the heritage of Augustine, and fit so neatly into Protestant preaching patterns, that there was no chink in the armor of self-evidence through which a doubt could insinuate itself.&lt;/p&gt;

&lt;p&gt;Or so it seemed, at least, until the advent of the biblical scholarship of this century, which found more freedom to distinguish between the initial cultural context of a biblical passage on one hand and the contribution it makes to contemporary thought on the other.’ If we may be freed by self-critical scholarly objectivity no longer to have to assume that the authority of the Bible resides in its saying things that we agree with, we may be free as well to hear more clearly what it really says instead of giving it credit for saying what we already think.&lt;/p&gt;

&lt;p&gt;Once the entering wedge of this capacity for critical self-awareness had made possible a freer and less apologetic reading of the ancient documents, it became possible to call into question the far-reaching assumption that the apostle Paul was preoccupied with personal self acceptance. It is understandable that Martin Luther could have found this preoccupation in the apostolic message since it was his own question. Luther had been taught by his monastic training to be personally in need of knowing that he had found a God who would be gracious personally to him. Thus it was perfectly natural for Luther to assume that this was also the preoccupation of the apostle. It was also perfectly natural for a John Wesley, a Kierkegaard, or today for an existentialist or a conservative evangelical reader to make the same assumption and find the same message for all of these are in their variegated ways children of Luther, still asking the same question of personal guilt and righteousness.&lt;/p&gt;

&lt;p&gt;But let us set aside for purposes of discussion the assumption that the righteousness of God and the righteousness of humanity are most fundamentally located on the individual level. Let us make this, instead of an axiom, a hypothesis to be tested. Let us posit as at least thinkable the alternate hypothesis that for Paul righteousness, either in God or in human beings, might more appropriately be conceived of as having cosmic or social dimensions Such larger dimensions would not negate the personal character of the righteousness God imputes to those who believe; but by englobing the personal salvation in a fuller reality they would negate the individualism with which we understand such reconciliation.&lt;/p&gt;

&lt;p&gt;Krister Stendahl set about to call this axiom into question in his article “&lt;a href=&quot;https://static1.squarespace.com/static/569543b4bfe87360795306d6/t/5a4d41fa085229a032376713/1515012617149/01Stendahl.pdf&quot;&gt;The Apostle Paul and the Introspective Conscience of the West&lt;/a&gt;.” ‘&lt;sup id=&quot;fnref:excellent-paper&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:excellent-paper&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Stendahl demonstrates one by one that all the constitutive elements of the classic “Luther-type experience” are missing in both the experience and the thought of the apostle. Paul was not preoccupied with his guilt and seeking the assurance of a gracious God; he was rather robust of conscience and untroubled about whether God was gracious or not. He never pleads either with Jews or Gentiles to feel an anguished conscience and then receive release from that anguish in a message of forgiveness.&lt;/p&gt;

&lt;p&gt;Second, Paul’s understanding of the meaning of Hebrew law as taught is not that its function was to make people know their guilt, to prepare listeners for the message of forgiveness by deepening their awareness of their sinfulness. The law was rather a gracious arrangement the arrival of the Messiah. It is true that, once present, law makes its made by God for ordering the life of his people while they were awaiting opposite, sin, more visible; but that is not its first purpose nor its primary effect for the believer.&lt;/p&gt;

&lt;p&gt;Third, faith was for Paul not a particular spiritual exercise of moving from self-trust through despair to confidence in the paradoxical goodness of the judgment of God; faith is at its core the affirmation which separated Jewish Christians from other Jews, that in Jesus of Nazareth the Messiah had come. A Jew did not become a Christian by coming to see God as a righteous judge and a gracious, forgiving protector. The Jew believed that already, being a Jew. What it took for him or her, to become a Christian was not some new idea about his or her sinfulness or God’s righteousness, but one about Jesus. The subjective meanings of faith for the self-aware person, and its doctrinal meanings for the believing intellect, build upon this prior messianist affirmation. They cannot precede or replace it.&lt;/p&gt;

&lt;p&gt;The heresy Paul was struggling against was not that the Jewish Christians continued to be committed to keeping the law; Paul was quite tolerant of those who held to such a conviction. He taught respect for their dietary scruples. He went out of his way to share their ritual faithfulness when in Jerusalem. Nor was it their thinking that by keeping the law they would be saved, for Jewish Christians did not believe that. The basic heresy he exposed was the failure of those Jewish Christians to recognize that since the Messiah had come the covenant of God had been broken open to include the Gentiles. In sum: the fundamental issue was that of the social form of the church. Was it to be a new and inexplicable kind of community of both Jews and Gentiles, or was it going to be a confederation of a Jewish Christian sect and a Gentile one? Or would all the Gentiles have first to become Jews according to the conditions of pre-messianic proselytism?&lt;/p&gt;

&lt;p&gt;Stendahl exemplifies this difference with one of the classic texts, Galatians 3:24, which states that the law was a “custodian” to order the life of the Jewish community until the Messiah should come. The point of Paul’s explanation is that now that the Messiah has come, the Gentiles do not need to pass by way of the law, but can be incorporated directly into the new community. For Luther, on the other hand, “custodian” was interpreted as “schoolmaster,” as representing a necessary step which even now the Gentiles must go through. They do not need to be educated by way of the details of the Jewish legislation, but in order to be able to receive grace one must first be broken under the yoke of some kind of law. All must pass by the &lt;em&gt;usus elenchticus&lt;/em&gt;, by the way of the judging impact of the righteousness of God.&lt;/p&gt;

&lt;p&gt;What then was Paul’s understanding of sin? When he does speak of himself as a serious sinner at all, this is not because of his existential anguish under the righteousness of God in general, but very specifically because, not having recognized that Messiah had come in Jesus, he had persecuted the church and fought the opening of God’s covenant to the Gentiles. What is now set right in his life is not that he has overcome his inner resistances and has become able to trust in God for his right status before God; it is rather that through the inexplicable intervention of God on the Damascus Road and in later experiences, Paul has become the agent of the action of God for the right cause. He has become the privileged bearer of the cause of the ingathering of the Gentiles. This was perfectly clear not only to Paul but also to his readers.&lt;/p&gt;

&lt;p&gt;What was at stake in the “proclamation of the righteousness of God to both Jew and Gentile” was precisely that it was to be proclaimed to both and that both were to become parts of the new believing community, some having come by way of the law and some not. It was only when in later generations the Jew-Gentile relationship was partly forgotten and partly distorted into a polemic one that the Pauline language of justification could be reinterpreted, especially in the heritage of Augustine, and translated into the terms of Western self-examination and concern for authenticity. Since this transformation stated the justifying purpose of God in terms translatable for and accessible to every individual, it could be considered somehow eternally or universally relevant, whereas the reconciling of Jew and Gentile can be understood and celebrated only particularly in the uniqueness of salvation history in given times and places.&lt;/p&gt;

&lt;p&gt;Stendahl is quite tolerant. He does not reject outright the possible claim that the new “Western” meaning might be, by certain criteria which we might consider useful, more “valid” or more “relevant” than the original one. The further “development of doctrine” may in some way be a good thing. But he nevertheless closes with the suggestion that perhaps the meaning enshrined in the salvation-history concern of the early church as a social reality might also be relevant for modern Christians, in addition to doing more justice to the biblical documents and the thought which they report.&lt;/p&gt;

&lt;h2 id=&quot;the-new-person&quot;&gt;The New Person&lt;/h2&gt;

&lt;p&gt;The most presumptuous and the clearest statement of the particular apostolic ministry of Paul is stated in the letter to the Ephesians. Here the apostle makes claims to a knowledge and to a ministry that is not merely on the level of the other apostles but unique among the apostles. It is a particular grace which was given just to him to steward for the churches (Eph. 3:2), a “mystery” which was made known to him (3:3). “Mystery” is to be understood not as a spooky secret forever hidden from view, but rather as the strategic purpose of God, which was not widely known until the point of its execution.5&lt;/p&gt;

&lt;p&gt;The “plan of the mystery” was hidden for ages in God, but now it is known and in fact it is being made known beyond the church by the church, proclaimed even to the “principalities and powers in the heavenly places” (3:9-10).&lt;/p&gt;

&lt;p&gt;Just what is this divine purpose, hidden for a time and made known by revelation to Paul? It is precisely that Jew and Gentile are now reconciled in one community.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;At one time you Gentiles in the flesh alienated from the commonwealth of Israel and strangers to the covenant of promise … were separated from Christ, …but now in Christ Jesus you who once were far off have been brought near in the blood of Christ. For he is our peace, who has made us both one, and has broken down the dividing wall of hostility, by abolishing in his flesh the law… that he might create in himself the one humanity instead of two, so making peace, and might reconcile us both to God in one body through the cross, thereby bringing the hostility to an end. (Eph. 2:11-26)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The hostility brought to an end in Christ is first and foremost in passage not the hostility between a righteous God and the creature who has trespassed against his rules, but the hostility between Jew and Greek. The overcoming of this hostility, the making of peace by eliminating the wall that had separated them, namely the Jewish law to which Jews were committed and which Gentiles ignored, is itself the creation of a new humanity. This is why the unique ministry of Paul as “prisoner for Jesus Christ on behalf of you Gentiles” (3:1) is insep arable from his own unique revealed insight into the “mystery” of God’s purpose. &lt;em&gt;The work of Christ is not only that he saves the soul of individuals and henceforth they can love each other better; the work of Christ, the making of peace, the breaking down of the wall, is itself the constituting of a new community made up of two kinds of people, those who had lived under the law and those who had not.&lt;/em&gt; (emphasis mine) The events the book of Acts narrates as the recent initiative of the Holy Spirit in opening up the churches, first at Jerusalem and then in Samaria, then in Damascus and Antioch, to the fellowship of believing Jews and believing Gentiles, are here interpreted by Paul, a major actor in that drama and its accredited interpreter, as being the extended meaning of the cross and resurrection of Jesus.6&lt;/p&gt;

&lt;p&gt;We have identified this message in the book of Ephesians, a relatively late document, where the word “justification” actually is not central, only in order to be able to perceive more readily its presence in the earlier writings where it is not equally developed. As elsewhere, we lean heavily upon a few contemporary scholars, testifying again to the fact that the thrust of the present book is not original except perhaps in the consistency with which it attempts to draw ethical conclusions from what more specialized scholars have already found.&lt;/p&gt;

&lt;h2 id=&quot;the-new-righteousness-that-is-valid-before-god&quot;&gt;The New Righteousness That Is Valid Before God&lt;/h2&gt;

&lt;p&gt;Markus Barth plunges right to the heart of the classic discussion in Galatians (2:14ff.).&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;We have believed in Christ Jesus in order to be justified by faith in Christ and not by works of the law, because by works of the law no one shall be justified.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What does “justified” mean here? Can it really mean, as Protestant tradition assumes (Lutheranism most sweepingly, but the Anglican and Reformed liturgies give the same testimony), that it refers only to the quasi-judicial status of the sinner’s guilt before God, which is annulled or amnestied by a declaration of the judge in response to the act of faith?&lt;/p&gt;

&lt;p&gt;Through very careful analysis of this classic passage, clarifies that the particular issue at stake, carried on unbroken from the earlier part Markus Barth of chapter 2, was whether Jewish and Gentile Christians were to live together acceptingly in one fellowship. To be “justified” is to be set right in and for that relationship. “Justification” is, in other words, in the language of Galatians the same as “making peace” or “breaking down the wall” in the language of Ephesians.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Sharing in the death and resurrection of Jesus Christ is the means of justification: only in Christ’s death and resurrection is the new man created from at least two, a Jew and a Greek, a man and a woman, a slave and a free man, etc…. The new man is present i actuality where two previously alien and hostile men come t before God. Justification in Christ is thus not an individual miracle happening to this person or that person, which each may seek or possess for himself. Rather justification by grace is a joining together of this person and that person, of the near and far; … it is a social event.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Barth has thus confirmed, beginning his analysis from another direction and dealing with another text, what we have already seen to have been demonstrated by Stendahl and in Ephesians: that the relationship between divine justification) and the reconciliation of persons and groups to one another is not a sequential relationship. It is not that “faith” occurs first as an inner existential leap of the individual past concern for his or her finitude, and then God operates a change in the person who becomes able to love others. Barth characterizes Albrecht Ritschl as having “considered forgiveness and justification as sort of psychic release which enabled the individual member of the church to participate in an ethical process,” whereas for Paul this relationship of prelude and sequence cannot thus be distinguished.”&lt;/p&gt;

&lt;h2 id=&quot;the-new-creature-this-section-is-what-i-wanted-to-share-around---its-the-reason-i-copied-down-all-of-chapter-11&quot;&gt;The “New Creature” (This section is what I wanted to share around - it’s the reason I copied down all of chapter 11)&lt;/h2&gt;

&lt;p&gt;If there is any one biblical text that focuses for lay understanding the individualism of the Pietist heritage it is the statement of 2 Corinthians 5:17:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;If anyone be in Christ &lt;em&gt;he is&lt;/em&gt; a new creature” (AV).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It has seemed self-evident that we were being promised here, overlapping with the language of a new birth (John 3:5-6), a metaphysical or ontological transformation of the individual person.&lt;/p&gt;

&lt;p&gt;The miracle of being made a new person has been promised in evangelistic proclamation and has served in turn to illuminate traditional understandings of the roots of Christian social concern.&lt;/p&gt;

&lt;p&gt;[they say that] it is because “only a transformed individual will behave differently” that some kinds of social activism are fruitless; it is because “a transformed individual will definitely behave differently” that the preaching of the gospel to individuals is the surest way to change society.&lt;/p&gt;

&lt;p&gt;It is not the concern of the present study to deny that such a thrust has had a wholesome, corrective impact in certain contexts in the history of Protestant thought and Protestant church life.&lt;/p&gt;

&lt;p&gt;Like Stendahl, we may concede a certain usefulness to nonbiblical thought patterns. Nor are we setting aside the “new birth” imagery of John 3 or parallel themes elsewhere.&lt;/p&gt;

&lt;p&gt;Our question is only whether this is what &lt;em&gt;Paul&lt;/em&gt; is saying in &lt;em&gt;this&lt;/em&gt; text. This becomes extremely doubtful when we look more carefully at the text itself.&lt;/p&gt;

&lt;p&gt;As the italics in the AV indicate, the words “he is” are not in the original text. Now it can regularly be necessary to add the English “is” in order to make clear a predication which in the Greek requires no copulative verb. But to add “he” (or “she”), thereby identifying an antecedent in the previous clause, is quite another matter.&lt;/p&gt;

&lt;p&gt;It is grammatically not impossible to reach back to the “anyone” earlier in the verse as the understood subject of this predication; but that is not the only interpretation, and others should be tried first.&lt;/p&gt;

&lt;p&gt;A second shortcoming of this traditional interpretation of “the new creature” as the transformed individual personality is that the word &lt;em&gt;ketisis&lt;/em&gt;, here translated “creature” or “creation,” is not used elsewhere in the New Testament to designate the individual person. It in fact most often is used to designate not the object of creation but rather the act of creating (e.g., Rom. 1:20), “from the creation of the world.”&lt;/p&gt;

&lt;p&gt;Secondarily it may mean the entire universe (Mark 16:15; Col. 1:15, 24; Rom. 8:19-22; Heb. 9:11).&lt;/p&gt;

&lt;p&gt;The single reference to “human creation refers to social institutions (1 Pet. 2:13).&lt;/p&gt;

&lt;p&gt;In the one other place where the phrase “new creation” is used, it is quite parallel to the “new humanity” of Ephesians 2:15, not a renewed individual but a new social reality, marked by the overcoming of the Jew/Greek barrier; “neither circumcision nor uncircumcision but a new creation” (Gal. 6:15).10&lt;/p&gt;

&lt;p&gt;Putting together these strictly linguistic observations, it becomes enormously more probable that we should lean to the kind of translation favored by the more recent translators; literally, “if anyone is in Christ, new is creation,” or more smoothly, “there is a whole new world” (NEB). ‘[^money-shot]
[^money-shot]: this particular sentence hit hard when I first read it.&lt;/p&gt;

&lt;p&gt;The accent lies not on transforming the ontology of the person (to say nothing of transforming his or her psychological or neurological equipment) but on transforming the perspective of one who has accepted Christ as life context.&lt;/p&gt;

&lt;p&gt;This is certainly the point of the rest of the passage in question. Paul is explaining why he no longer regards anyone from the human point of view; why he does not regard Jew as Jew or Greek as Greek, but rather looks at every person in the light of the new world which begins in Christ. “The old has passed away, behold the new has come,” is a social or historical statement, not an introspective or emotional one.&lt;/p&gt;

&lt;h2 id=&quot;to-the-jew-first-but-also-to-the-greek&quot;&gt;To the Jew First but Also to the Greek&lt;/h2&gt;

&lt;p&gt;A quite different segment of Paul’s writings is the framework of introduction and conclusion around his letter to the Christians at Rome. Hans Werner Bartsch points out that Paul never calls the total Roman community a “church” and that the issue of the polarity of Jew and Gentile is present at major turning points throughout the argument of the book, as well as in the introduction and conclusion. The foreground meaning of the issue of the place of the law was not systematic theological speculation about how human beings are to be made acceptable to God, but rather the very concrete Roman situation in which Jew and Greek, legalistic Christian and pagan Christian needed to accept one another. “Law” is written about neither as a means of soul salvation, nor as a hindrance thereto, but as the historically concrete identity of the Jewish separateness which made the problem that justification resolves.&lt;/p&gt;

&lt;p&gt;We could in fact most properly say that the word “justification” (like the word “creation” examined above) should be thought of in its root meaning, as a verbal noun, an action, “setting things right,” rather than as an abstract noun defining a person’s quasi-legal status as a result of a judge’s decree. To proclaim divine righteousness means to proclaim that God sets things right; it is characteristic of the God who makes a covenant with us to be a right-setting kind of God.&lt;/p&gt;

&lt;p&gt;Bartsch supports this interpretation of the concern of Romans with a wealth of detailed textual observations. That the Christians in Rome are not referred to as a “church,” in view of Paul’s is presumed to indicate that the insufficient unity of that group con susage elsewhere, stitutes a problem to them and to him. Bartsch emphasizes the recur rence of reference to Jew and Greek at all the turning points of the document, to say nothing of the special significance of chapters 9-11, whose entire concern is the place of Jewish identity in view of God’s having created the church. From the obedience of faith (1:5) through the “accepting one another” (14:1; 15:7) to Paul’s concern for collecting funds for Jerusalem (15:28), his desire is that there should come into being in Rome this kind of new community where the brokenness of humankind is set right and where persons who were not born under the law obey it from the heart.&lt;/p&gt;

&lt;p&gt;If the reader can grant that in the company of Stendahl, Barth, Bartsch, and Minear we may properly understand Paul’s concept of justification as a social phenomenon centering in the reconciliation of different kinds of people, what has that to do with the problem with which our study began, namely the ethic of revolutionary nonviolence which Jesus offers to his disciples?&lt;/p&gt;

&lt;p&gt;Perhaps most evident is a kind of double negative impact upon the state of the debate in theological ethics. This debate has been dominated by a negation, which appealed in its support to what was supposed to be unique about the message of Paul. Because Paul is different from Jesus or because justification is different from social ethics, therefore the way of Jesus, it was classically held, has lost its bindingness for our age. It is this negation which a more open reading of the apostles in turn negates. The negation of this negation is all the more significant because the scholars I have been quoting were simply going about their erudite business, with no predisposition to support my reading of Jesus’ or of Paul’s ethics.&lt;/p&gt;

&lt;p&gt;But the proclamation that God reconciles classes of people is in itself far more than a double negative. To proclaim it as Paul did in his writings years and even decades after Pentecost is to confirm that such reconciliation is a real experience and therefore a real invitation. Paul is saying, somewhere toward the end of the evolution of apostolic Christianity, what Jesus had said somewhere near the beginning. That he can still say it now is proof that, at least to some modest degree, experience had confirmed it. Paul says that it characterizes the victory of God’s creation-sustaining love that insider and outsider, friend and enemy are equally blessed, in such manner that the genuineness (Jesus said, “perfection”)&lt;sup id=&quot;fnref:perfection&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:perfection&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; of our love is also made real at the point of its application to the enemy, the Gentile, the sinner. There is a sense in which the ethics of marriage and the prohibition of adultery, or the ethics of work and the regulation of attitudes toward slavery, or the opening up of communication and the prohibition of falsehood are all part of the promise of a new humanity enabled and created by God, and already being received by men and women of faith. But it par excellence with reference to enmity between peoples, the extension of neighbor love to the enemy, and the renunciation of violence even in the most righteous cause, that this promise takes on flesh in the most original, the most authentic, the most frightening and scandalous, and therefore in the most evangelical way. It is the Good News that my enemy and I are united, through no merit or work of our own, in a new humanity that forbids henceforth my ever taking his or her life in my hands.&lt;/p&gt;

&lt;p&gt;Perhaps a retrospective word should extend to all of this section on the thought of Paul what was said with regard to “justification.” My presentation, in order to correct for the one-sided social ethic which has been dominant in the past, emphasizes what was denied before: Jesus as teacher and example, not only as sacrifice; God as the shaker of the foundations, not only as guarantor of the orders of creation; faith as discipleship, not only as subjectivity. The element of debate in the presentation may make it seem that the “other” or “traditional” element in each case -Jesus as sacrifice, God as creator, faith as subjectivity is being rejected. It should therefore be restated that - as perusal of the structure of our presentation will confirm - no such disjunction is intended. I am rather defending the New Testament against the exclusion of the “messianic” element. The disjunction must be laid to the account of the traditional view, not of mine. It is those other views that say that because Jesus is seen as sacrifice he may not be seen as sovereign, or that because he is seen as Word made flesh he cannot be seen as normative person.&lt;/p&gt;

&lt;h1 id=&quot;chapter-12-the-war-of-the-lamb&quot;&gt;Chapter 12: The War of the Lamb&lt;/h1&gt;

&lt;p&gt;Jesus and Paul have been the foci of our exposition. They must J represent the centers of any New Testament theological synthesis, due both to their originality and to the amount of the material that makes them knowable to us. But there are other figures, other minds at work. A thorough treatment would demand that we test there as well the reading we have taken already. There would be the thought of the author of Matthew or of the writer to the Hebrews; there would be the mind of Peter, of John, of Jude, or of the seer of the Apocalypse. There is reason to trust that the reading there would confirm the orientation already sketched. Here, however, I must renounce the further cross-referencing and leap ahead to a summary, rooted none the less especially in the last-named Apocalypse. I shall seek briefly to characterize the stance of that book, as it might by contrast throw some light on our contemporary agenda and at the same time draw together the argument of the entire book.&lt;/p&gt;

&lt;p&gt;One way to characterize thinking about social ethics in our time is to say that Christians in our age are obsessed with the meaning and direction of history. Social ethical concern is moved by a deep desire to make things move in the right direction. Whether a given action is right or not seems to be inseparable from the question of what effects it will cause Thus part if not all of social concern has to do with looking for the right “handle” by which one can “get a hold on” the course of history and move it in the right direction. For the movement called Moral Rearmament, ideology was this handle; “ideas have legs,” so that if we can get a contagious new thought moving, it will make its own way. For others, it is the process of education that ultimately determines the character and course of the civilization; whoever rules the teachers’ colleges rules the world.&lt;/p&gt;

&lt;p&gt;Rambunctious students believe that the office of the dean or the president is the center of the university and therefore they occupy that office. Che Guevara believed the peasant to be the backbone of the coming Latin American revolution, so he went to the hills of Bolivia. The Black Economic Development Conference directed its Manifesto to the administrators of denominations because it believed that the point of decision making for white racist American society was there. Conservative evangelicalism focuses its call for change upon the will of the individual because it believes that when the individual heart is turned in another direction the rest is sure to follow. For still others it is the proletariat or geopolitics that explains everything.&lt;/p&gt;

&lt;p&gt;Whichever the favored “handle” may be, the structure of this approach is logically the same. One seeks to lift up one focal point in the midst of the course of human relations, one thread of meaning and causality which is more important than individual persons, their lives and well-being, because it in itself determines wherein their well-being consists. Therefore it is justified to sacrifice to this one “cause” other subordinate values, including the life and welfare of one’s self, one’s neighbor, and (of course!) of the enemy. We pull this one strategic thread in order to save the whole fabric. We can see this kind of reasoning with Constantine saving the Roman Empire, with Luther saving the Reformation by making an alliance with the princes, or with Khrushchev and his successors saving Marxism by making it somewhat more capitalistic, or with the United States saving democracy by alliances with military dictatorships and by the threatened use of the bomb. If we look more analytically at this way of deriving social and political ethics from an overview of the course of history and the choice of the thread within history that is thought to be the most powerful, we find that it involves at least three distinguishable assumptions:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;It is assumed that the relationship of cause and effect is visible, understandable, and manageable, so that if we make our choices on the basis of how we hope society will be moved, it will be moved in that direction.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It is assumed that we are informed to be able to set for ourselves and for all society the goal toward which we seek to move it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Interlocked with these two assumptions and dependent upon them for its applicability is the further postulate that effectiveness in moving toward these goals which have been set is itself a moral yard stick.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If we look critically at these assumptions we discover that they are by no means as self-evident as they seem to be at first. There is for one thing the phenomenon Reinhold Niebuhr has called “irony”: that when people try to manage history, it almost always turns out to have taken another direction than that in which they thought they were guiding it. This may mean that we are not morally qualified to set the goals toward which we would move history. At least it must mean that we are not capable of discerning and managing its course when there are in the same theater of operation a host of other free agents, each of them in their own way also acting under the same assumptions as to their capacity to move history in their direction. Thus even apart from other more spiritual considerations, the strategic calculus is subject to a very serious internal question. It has yet to be demonstrated that history can be moved in the direction in which one claims the duty to cause it to go.&lt;/p&gt;

&lt;p&gt;The other question we must raise at the outset about the logic of the “strategic” attitude toward ethical decisions is its acceptance of effectiveness itself as a goal. Even if we know how effectiveness is to be measured that is, even if we could get a clear definition of the goal we are trying to reach and how to ascertain whether we had reached it is there not in Christ’s teaching on meekness, or in the attitude of Jesus toward power and servanthood, a deeper question being raised about whether it is our business at all to guide our action by the course we wish history to take?&lt;/p&gt;

&lt;p&gt;It is, however, not the concern of our present study to deal logically or systematically with this kind of question within the traditional or contemporary idioms of theological debate. In recent centuries debate around the question of the meaning of history, and the place of Christian decision within that meaningfulness, has generally been a conversation of the deaf, with some so committed to pre-Enlightenment understandings of the stability of the proper social order that any sense&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:excellent-paper&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I found this paper (&lt;a href=&quot;https://static1.squarespace.com/static/569543b4bfe87360795306d6/t/5a4d41fa085229a032376713/1515012617149/01Stendahl.pdf&quot;&gt;The Apostle Paul and the Introspective Conscience of the West (pdf)&lt;/a&gt;) to be excellent, I’ve read it four or five times over the years, &lt;em&gt;it has changed my soul&lt;/em&gt;, would strongly endorse. &lt;a href=&quot;#fnref:excellent-paper&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:perfection&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The “perfection” to which Jesus calls his hearers in the Sermon on the Mount (Matt. 5:48; cf. Luke 6:35-36) is not flawlessness not impeccability, but precisely the refusal to discriminate between friend and enemy, the in and the out, the good and the evil. It is revealed in the indiscriminateness in which God loves the good and the evil alike (cf. above, p. 116). (&lt;em&gt;this footnote is in the original text&lt;/em&gt;) &lt;a href=&quot;#fnref:perfection&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Context Setting for certain patterns &amp; classes of relationship difficulties</title>
   <link href="https://josh.works/context-setting-around-certain-classes-relationship-difficulties"/>
   <updated>2022-07-03T13:00:00+00:00</updated>
   <id>https://josh.works/2022-context-setting-resources-for-certain-classes-of-relationship-difficulties</id>
   <content type="html">&lt;p&gt;I’ve been “catching up” a &lt;em&gt;lot&lt;/em&gt; in my life lately. Some of that catching up involves bringing up to speed various people I’ve not spoken too (or spoken too &lt;em&gt;much&lt;/em&gt;, or &lt;em&gt;openly&lt;/em&gt;, or &lt;em&gt;recently&lt;/em&gt;, or &lt;em&gt;ever&lt;/em&gt;, or some combination thereof).&lt;/p&gt;

&lt;p&gt;I am strongly biased towards written/editable/consistent versions of “what’s going on”, because then:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;everyone has some confidence in at least some shared context&lt;/li&gt;
  &lt;li&gt;Thinking how this reads for the various audiences has a useful clarifying effect on the writing.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/write-it-now&quot;&gt;I believe in writing things when they’re being experienced&lt;/a&gt;, especially as a tool to capture insights, learnings, etc.&lt;/li&gt;
  &lt;li&gt;the act of writing tends to have a great ordering effect on the meaning we assign to our own stories.&lt;/li&gt;
  &lt;li&gt;I’ve historically written a lot, trying to “unblock the writing blockages”, so taking a stab at writing about “the most important things”, ordered &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DESC&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;I could imagine that some of what I might write could be helpful to someone else. There’s analogous writings that software developers perceive as very conventional for their craft. Incident reports, retrospectives, etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;tldr-depression--decline&quot;&gt;TL;DR Depression &amp;amp; Decline&lt;/h2&gt;

&lt;p&gt;For several years, from an “overall health-and-wellbeing of Josh &amp;amp; Kristi Thompson”, things have been sliding, in different ways, downhill.&lt;/p&gt;

&lt;p&gt;Sometimes the decline was fast, sometimes slow. Sometimes in terms of physical health, sometimes in terms of mental health. Sometimes both!&lt;/p&gt;

&lt;p&gt;There’s been a tough mix of totally unavoidable, and totally avoidable, tragedy.&lt;/p&gt;

&lt;p&gt;I historically would have self-assessed my marriage as in many real ways once as “quite good” and lately would self-assess as “quite bad”.&lt;sup id=&quot;fnref:third-parties&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:third-parties&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Things are trending upwards again&lt;sup id=&quot;fnref:what-that-means&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:what-that-means&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, but there have been a lot of changes or deviations from what would have once been normal for us.&lt;/p&gt;

&lt;h3 id=&quot;contributing-circumstances&quot;&gt;Contributing circumstances&lt;/h3&gt;

&lt;p&gt;I believe “systems” and “dynamics” are closely related to “complex reactive systems”, and thus any discussion of failure or errors is best informed by approaching the issue with the 18 questions/statements of &lt;a href=&quot;https://how.complexsystems.fail/&quot;&gt;How Complex Systems Fail: Being a Short Treatise on the Nature of Failure; How Failure is Evaluated; How Failure is Attributed to Proximate Cause; and the Resulting New Understanding of Patient Safety&lt;/a&gt;.&lt;sup id=&quot;fnref:complex-systems&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:complex-systems&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Every one of these has a huge story behind it, but I don’t have the time or desire to talk about them right now.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;it’s hard to get pregnant. we had two miscarriages along the way.&lt;/li&gt;
  &lt;li&gt;I got a bad back injury. It was &lt;em&gt;bad&lt;/em&gt;, and affected me for a long time in profound ways.&lt;/li&gt;
  &lt;li&gt;we bought an old house, moved into it.&lt;/li&gt;
  &lt;li&gt;Kristi’s dad unexpectedly passed away in January 2020&lt;/li&gt;
  &lt;li&gt;Covid blew holes in our normal group of relationships and friendships&lt;/li&gt;
  &lt;li&gt;I tried to do like three different hard things at the same time &lt;sup id=&quot;fnref:hard-things&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:hard-things&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;I was also trying to do a few less-hard things&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Throughout all of this, a theme of “emotional abandonment” kept surfacing. Tension and silence dominated my life, in a way that caused active, on-going pain.&lt;/p&gt;

&lt;p&gt;Nature and nurture (genetics and environment) matter, for both of us.&lt;/p&gt;

&lt;p&gt;Kristi’s family, and Kristi, have displayed depressive and avoidant tendencies, across generations. Kristi’s tended towards depressive states, especially as a reaction to increased stress and difficulty. For a long time, I was motivated to move in opposite directions as a reaction to stress and difficulty. This divide (which relates to substantial trauma we both experienced as children and more recently) eventually led to Kristi becoming systemically verbally and emotionally abusive towards me.&lt;/p&gt;

&lt;p&gt;For many reasons it took a very long time for me to recognize this, and eventually start protecting myself and adjusting expectations to better care for myself. It was deeply damaging and felt like repeated, horrific betrayals, for a long time.&lt;/p&gt;

&lt;p&gt;There’s plenty of environmental factors that contributed to this, but they’re not really that important.&lt;/p&gt;

&lt;p&gt;I observed in myself a slow-but-persistent decline on so many levels. I kept having exchanges with Kristi where I’d be met with hostility, negativity, anger, frustration. There would be “relationship ruptures” but no “relationship repairs”. John Gottman writes extensively about some of the dynamics, like &lt;a href=&quot;https://www.gottman.com/blog/the-four-horsemen-recognizing-criticism-contempt-defensiveness-and-stonewalling/&quot;&gt;the four horseman of the marriage apocalypse&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Last year, I kept asking myself questions like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;why do I feel this incredible decrease in quality of my relationship with myself and others, mostly marked by a massive increase in feelings of alienation from others and self, and feelings of deep and pervasive shame, of a kind I’d not experienced in many, many years?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There were many factors that contributed to my own personal decline in wellbeing. The primary component of the abuse I’ve experienced is best summarized as “abusive anger”, coupled with a lack of attempts/willingness to &lt;a href=&quot;https://www.gottman.com/blog/repair-secret-weapon-emotionally-connected-couples/&quot;&gt;repair&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I examined the changes I was seeing in my own personality. These were very unliked and unappreciated changes - I was conscious and resisting the change, even as I was watching the changes happen. The changes reminded me of ways I felt (but had dramatically less ability to vocalize) when I was a child and young adult.&lt;/p&gt;

&lt;p&gt;Historically I’ve sought (and engaged in) relationships and friendships full of shared experiences, mutual support, some adventure, some appreciation of beauty, going new places and having new experiences, doing things worth doing, long-term and short-term goals, positive emotional energy, and more. I care &lt;em&gt;a lot&lt;/em&gt; about my friendships. I prefer to spend energy and time in relationships where that energy is seen and appreciated.&lt;/p&gt;

&lt;p&gt;So, I got walloped by a flood of unremitting negative energy, broken only by silence or tense withdrawal, never punctuated with periods of closeness, kindness, compassion, or empathy, but was generally blamed for all of it, even as I kept acting as someone who had good reason to expect future periods of closeness, kindness, compassion, empathy, mutuality, and co-creation in this relationship.&lt;/p&gt;

&lt;p&gt;I was told (essentially) that me expecting and demanding change in these aspects was not necessarily appropriate, that I needed to be patient for weeks/months/years of incremental progress towards a future ideal state of treating me with slightly less meanness than yesterday, and even if this isn’t necessarily earned/justified by my behavior, it is at least not that wrong.&lt;/p&gt;

&lt;p&gt;Plainly, &lt;em&gt;this is abuse&lt;/em&gt;, and at minimum, &lt;em&gt;can be traumatizing&lt;/em&gt;.&lt;sup id=&quot;fnref:what-is-abuse&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:what-is-abuse&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This pattern of behavior is not a difference in personality or preference, or a cosmetic problem that can be managed, or a situation where one can ‘agree to disagree’. There are many ameliorative responses to harmful behavior, but denial and minimization is &lt;em&gt;not within the range of those appropriate responses.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It was frustrating to me, in early, uncertain conversations with others, as I was trying to figure out why things felt so wrong, it felt like key areas of what I was trying to express were particularly difficult to express, and therefore I wasn’t making progress on the salient aspects of the pain.&lt;/p&gt;

&lt;p&gt;I kept getting unexpected reactions when I brought my evidence and observations and experiences to very close friends, and I think a string of these fumbled conversations made things worse for everyone, not better.&lt;sup id=&quot;fnref:church-and-abuse&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:church-and-abuse&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Incidentally, I don’t think people who’s behavior patterns best roll up as “verbally/emotionally abusive” are ‘bad people’, I believe it’s “simply” a trauma-induced series of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;perceived-problem:safety-seeking-response&lt;/code&gt; pairs. I am sure you’ve experienced bad things, done to you or those you love, and in some ways it affects you. The world is full of the kind of trauma that hearing about could break your heart ten different ways.&lt;sup id=&quot;fnref:response&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:response&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Even assuming the sadness of tragedy and heartbreak and bad behavior and tragic circumstances, the world around us conforms to structure and power dynamics and certain patterns invite/dissuade certain classes of interactions.&lt;/p&gt;

&lt;p&gt;I no longer want to participate in patterns of conflict and verbal abuse. I’ve not quite figured out how to step off the train, but am working on it.&lt;/p&gt;

&lt;h2 id=&quot;memetics&quot;&gt;Memetics&lt;/h2&gt;

&lt;p&gt;Memetics describe how an idea spreads, not necessarily if it’s correct or incorrect, but how effective it is, relative to many different factors. The map is not the territory and all that, and neither does one framework/conceptual compression of a situation/problem cover all relevant details.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ideas matter&lt;/em&gt;. &lt;em&gt;Words matter&lt;/em&gt;. Ideas can be both good and bad, and effective or ineffective. To that end, below this section, I’ve got a a smattering of links that felt relevant. These might be the kinds of links I’d text a friend with a question like “what do you think?” or “this reminded me of that thing we were talking about”.&lt;/p&gt;

&lt;p&gt;These ideas all approach the world from different perspectives, or frames. There’s this book, &lt;a href=&quot;https://www.goodreads.com/book/show/36146179-worth-the-candle?from_search=true&amp;amp;from_srp=true&amp;amp;qid=wogfgw2d0G&amp;amp;rank=1&quot;&gt;Worth The Candle&lt;/a&gt;, that is quite good. It smashes some interesting concepts together, in a bit of a fantasy universe, that lead to really thought-provoking ideas around ways we see the world around us. Different ways of seeing things can be&lt;/p&gt;

&lt;p&gt;Frame control might be a topic for a larger conversation some day, but here’s a good overview: &lt;a href=&quot;https://www.lesswrong.com/posts/bQ6zpf6buWgP939ov/frame-control&quot;&gt;Frame Control, by @aella&lt;/a&gt;. I assert that abusive people engage in unfair aspects of ‘frame control’, and for many reasons, and in many ways, refuse to evaluate the situation from a different frame.&lt;/p&gt;

&lt;p&gt;Part of the therapy we’ve been doing (together and individually) has made use of written notes, and I’ve always been an aggregator of ‘useful ideas’. It’s like a smattering of software development notes. They might help others, they certainly help me. (This document obviously reflects this approach to life.)&lt;/p&gt;

&lt;p&gt;So, memes and frames matter. Reality is complex, we’re always &lt;a href=&quot;https://josh.works/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;compressing data-streams according to available heuristics&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I view my marriage (and all of the many relationships that of course spring up around a marriage) through a variety of perspectives and conceptual compressions. To that end, sometimes I see something that says/expresses a concept in a meaningful/illuminating way. To the degree a concept or idea is difficult to convey, approaching it from many different directions can help shed light on “the thing” we’re trying to talk about. Books. “Frameworks”. Poems. Thought provoking TikToks.&lt;/p&gt;

&lt;h3 id=&quot;books&quot;&gt;Books&lt;/h3&gt;

&lt;p&gt;What follows is a list of some books, all of which I’d read earlier in my life than I actually did. I believe they shed light/signal on what’s been going on in my marriage.&lt;/p&gt;

&lt;p&gt;My marriage has historically been a source/center for/inspiration of all the good things that tend to circulate people who enjoy each other’s company and way of being. I’ve grown more sophisticated in the last two years, in how I perceive relationships (my own and other people’s), so the version of me (and Kristi) at 24 years old is very different than me today, at 33, but I can effortlessly see threads of similarity and reasonable evolution in how we’d engaged in the world around us ten years and five years ago, and how we seem to be doing this now.&lt;/p&gt;

&lt;p&gt;First, an explanation for the books you’re about to see listed: I’ve always been book-oriented. Even as a ten year old, I read, &lt;em&gt;a lot&lt;/em&gt;. It was with a small sense of pride that I learned, when I was perhaps 13, that on at least the standardized tests I took as a homeschooler, I read at or above a college level.[^skilled-at-sportscs] Since then, I’ve often used reading to reliably solve many classes of problems in my life.&lt;/p&gt;

&lt;p&gt;The list below are some books that, as I’ve lived the last few years, have come to have particularly high explanatory power for the relationship between external events and internal experiences in my life.&lt;/p&gt;

&lt;p&gt;I read at a high enough rate that it’s relatively painless (especially related to the potential reward) to ‘read the canon’&lt;sup id=&quot;fnref:read-cannon&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:read-cannon&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt; in any given domain. I start with one book, and then branch out from there, either thematically or via citations/references. Of course I often digest related podcasts and topical digital content.&lt;/p&gt;

&lt;p&gt;Here’s some of the books I’ve read lately. There’s a theme:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/18693771-the-body-keeps-the-score?from_search=true&amp;amp;from_srp=true&amp;amp;qid=F6CydE7rkS&amp;amp;rank=1&quot;&gt;The Body Keeps the Score: Brain, Mind, and Body in the Healing of Trauma&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/20556323-complex-ptsd?from_search=true&amp;amp;from_srp=true&amp;amp;qid=1kqVPVmbeB&amp;amp;rank=1&quot;&gt;Complex PTSD: From Surviving to Thriving&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/402366.The_Verbally_Abusive_Relationship&quot;&gt;The Verbally Abusive Relationship: How to Recognize It and How to Respond&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25343.Parenting_From_the_Inside_Out?ac=1&amp;amp;from_search=true&amp;amp;qid=6ZQS5GoMkY&amp;amp;rank=1&quot;&gt;Parenting From the Inside Out&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/315788.The_Birth_Partner?from_search=true&amp;amp;from_srp=true&amp;amp;qid=hNFjM8XjBQ&amp;amp;rank=1&quot;&gt;The Birth Partner&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/19133.The_Politics_of_Jesus&quot;&gt;The Politics of Jesus&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/9945.The_Nonviolent_Atonement?ac=1&amp;amp;from_search=true&amp;amp;qid=baj3UUmpoK&amp;amp;rank=1&quot;&gt;The Nonviolent Atonement&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/18114120-thanks-for-the-feedback?ac=1&amp;amp;from_search=true&amp;amp;qid=LMwNH2Wdcm&amp;amp;rank=1&quot;&gt;Thanks for the Feedback: The Science and Art of Receiving Feedback Well&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/720298.Codependent_No_More?ac=1&amp;amp;from_search=true&amp;amp;qid=dFdUS7iAKM&amp;amp;rank=1&quot;&gt;Codependent No More: How to Stop Controlling Others and Start Caring for Yourself&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/27426322-the-tao-of-fully-feeling&quot;&gt;The Tao of Fully Feeling: Harvesting Forgiveness out of Blame &lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/53121662-jesus-and-john-wayne&quot;&gt;Jesus and John Wayne: How White Evangelicals Corrupted a Faith and Fractured a Nation &lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/33786693-no-visible-bruises&quot;&gt;No Visible Bruises: What We Don’t Know About Domestic Violence Can Kill Us&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/4495703-the-work-of-jesus-christ-in-anabaptist-perspective?ac=1&amp;amp;from_search=true&amp;amp;qid=0gOW87C7Aq&amp;amp;rank=5&quot;&gt;The Work of Jesus Christ in Anabaptist Perspective: Essays in Honor of J. Denny Weaver&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;at-its-simplest-attachment-styles&quot;&gt;“At it’s simplest”: Attachment Styles&lt;/h3&gt;

&lt;p&gt;The involved parties have had a variety of experiences, some of which roll up to verbal/emotional abuse &amp;amp; neglect, through formative years and life circumstances.&lt;/p&gt;

&lt;p&gt;We’ve accumulated trauma.&lt;/p&gt;

&lt;p&gt;We have nature/nurture proclivities towards &lt;a href=&quot;https://www.attachmentproject.com/blog/anxious-attachment/&quot;&gt;anxious attachment styles&lt;/a&gt; (me) and &lt;a href=&quot;https://www.attachmentproject.com/blog/avoidant-attachment-style/&quot;&gt;avoidant&lt;/a&gt; (her). Things are trending towards ‘disorganized’.&lt;/p&gt;

&lt;p&gt;There’s lots on the internet and in books about “Attachment Styles”, but for a good primer, scroll through &lt;a href=&quot;https://www.instagram.com/thesecurerelationship/&quot;&gt;@thesecurerelationship&lt;/a&gt;’s instagram. Great stuff there, about how to have a “secure attachment”. My definition probably butchers a ‘real’ definition, but here it is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A ‘secure attachment’ means one is capable of trusting the self and others, in healthy ways, engaging in emotionally intimate relationships, and has an embodied confidence in the value of one’s own needs and preferences.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There’s this account on instagram, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@thesecurerelationship&lt;/code&gt;, who is wonderful. Here’s some prototypical posts:&lt;/p&gt;

&lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned=&quot;&quot; data-instgrm-permalink=&quot;https://www.instagram.com/p/CfH1l1vPrYR/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; data-instgrm-version=&quot;14&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:16px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/CfH1l1vPrYR/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&quot; target=&quot;_blank&quot;&gt; &lt;div style=&quot; display: flex; flex-direction: row; align-items: center;&quot;&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 19% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display:block; height:50px; margin:0 auto 12px; width:50px;&quot;&gt;&lt;svg width=&quot;50px&quot; height=&quot;50px&quot; viewBox=&quot;0 0 60 60&quot; version=&quot;1.1&quot; xmlns=&quot;https://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;https://www.w3.org/1999/xlink&quot;&gt;&lt;g stroke=&quot;none&quot; stroke-width=&quot;1&quot; fill=&quot;none&quot; fill-rule=&quot;evenodd&quot;&gt;&lt;g transform=&quot;translate(-511.000000, -20.000000)&quot; fill=&quot;#000000&quot;&gt;&lt;g&gt;&lt;path d=&quot;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&quot;padding-top: 8px;&quot;&gt; &lt;div style=&quot; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&quot;&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 12.5% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&quot;&gt;&lt;div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 8px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: auto;&quot;&gt; &lt;div style=&quot; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;&lt;a href=&quot;https://www.instagram.com/p/CfH1l1vPrYR/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;&quot; target=&quot;_blank&quot;&gt;A post shared by The Secure Relationship (@thesecurerelationship)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//www.instagram.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned=&quot;&quot; data-instgrm-permalink=&quot;https://www.instagram.com/p/CfeDPcsL_YV/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; data-instgrm-version=&quot;14&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:16px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/CfeDPcsL_YV/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&quot; target=&quot;_blank&quot;&gt; &lt;div style=&quot; display: flex; flex-direction: row; align-items: center;&quot;&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 19% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display:block; height:50px; margin:0 auto 12px; width:50px;&quot;&gt;&lt;svg width=&quot;50px&quot; height=&quot;50px&quot; viewBox=&quot;0 0 60 60&quot; version=&quot;1.1&quot; xmlns=&quot;https://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;https://www.w3.org/1999/xlink&quot;&gt;&lt;g stroke=&quot;none&quot; stroke-width=&quot;1&quot; fill=&quot;none&quot; fill-rule=&quot;evenodd&quot;&gt;&lt;g transform=&quot;translate(-511.000000, -20.000000)&quot; fill=&quot;#000000&quot;&gt;&lt;g&gt;&lt;path d=&quot;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&quot;padding-top: 8px;&quot;&gt; &lt;div style=&quot; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&quot;&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 12.5% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&quot;&gt;&lt;div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 8px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: auto;&quot;&gt; &lt;div style=&quot; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;&lt;a href=&quot;https://www.instagram.com/p/CfeDPcsL_YV/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;&quot; target=&quot;_blank&quot;&gt;A post shared by The Secure Relationship (@thesecurerelationship)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned=&quot;&quot; data-instgrm-permalink=&quot;https://www.instagram.com/p/CfBplkqr5gC/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; data-instgrm-version=&quot;14&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:16px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/CfBplkqr5gC/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&quot; target=&quot;_blank&quot;&gt; &lt;div style=&quot; display: flex; flex-direction: row; align-items: center;&quot;&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 19% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display:block; height:50px; margin:0 auto 12px; width:50px;&quot;&gt;&lt;svg width=&quot;50px&quot; height=&quot;50px&quot; viewBox=&quot;0 0 60 60&quot; version=&quot;1.1&quot; xmlns=&quot;https://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;https://www.w3.org/1999/xlink&quot;&gt;&lt;g stroke=&quot;none&quot; stroke-width=&quot;1&quot; fill=&quot;none&quot; fill-rule=&quot;evenodd&quot;&gt;&lt;g transform=&quot;translate(-511.000000, -20.000000)&quot; fill=&quot;#000000&quot;&gt;&lt;g&gt;&lt;path d=&quot;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&quot;padding-top: 8px;&quot;&gt; &lt;div style=&quot; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&quot;&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 12.5% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&quot;&gt;&lt;div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 8px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: auto;&quot;&gt; &lt;div style=&quot; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;&lt;a href=&quot;https://www.instagram.com/p/CfBplkqr5gC/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;&quot; target=&quot;_blank&quot;&gt;A post shared by The Secure Relationship (@thesecurerelationship)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned=&quot;&quot; data-instgrm-permalink=&quot;https://www.instagram.com/p/Cf_v3T1rHlj/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; data-instgrm-version=&quot;14&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:16px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/Cf_v3T1rHlj/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&quot; target=&quot;_blank&quot;&gt; &lt;div style=&quot; display: flex; flex-direction: row; align-items: center;&quot;&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 19% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display:block; height:50px; margin:0 auto 12px; width:50px;&quot;&gt;&lt;svg width=&quot;50px&quot; height=&quot;50px&quot; viewBox=&quot;0 0 60 60&quot; version=&quot;1.1&quot; xmlns=&quot;https://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;https://www.w3.org/1999/xlink&quot;&gt;&lt;g stroke=&quot;none&quot; stroke-width=&quot;1&quot; fill=&quot;none&quot; fill-rule=&quot;evenodd&quot;&gt;&lt;g transform=&quot;translate(-511.000000, -20.000000)&quot; fill=&quot;#000000&quot;&gt;&lt;g&gt;&lt;path d=&quot;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&quot;padding-top: 8px;&quot;&gt; &lt;div style=&quot; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&quot;&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 12.5% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&quot;&gt;&lt;div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 8px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: auto;&quot;&gt; &lt;div style=&quot; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;&lt;a href=&quot;https://www.instagram.com/p/Cf_v3T1rHlj/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;&quot; target=&quot;_blank&quot;&gt;A post shared by The Secure Relationship (@thesecurerelationship)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;script async=&quot;&quot; src=&quot;//www.instagram.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;tiktok-links&quot;&gt;Tiktok links&lt;/h3&gt;

&lt;p&gt;Tiktok is complicated to me. It’s undeniable that it has an affect on the world. Don’t know how I feel about it, but it’s deff good for “feeling seen” sometimes. To that end, here’s a smattering of videos I’ve felt some kinship with. I’ll explain each, eventually. For now, just consider skimming:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/@dancingfordesire/video/7114800097510182186?_t=8TdHsx8ZDOU&amp;amp;_r=1&quot;&gt;https://www.tiktok.com/@dancingfordesire/video/7114800097510182186?_t=8TdHsx8ZDOU&amp;amp;_r=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/t/ZTReJ65qj/?k=1&quot;&gt;https://www.tiktok.com/t/ZTReJ65qj/?k=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/t/ZTReJLcnQ/?k=1&quot;&gt;https://www.tiktok.com/t/ZTReJLcnQ/?k=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/t/ZTReJDdGj/?k=1&quot;&gt;https://www.tiktok.com/t/ZTReJDdGj/?k=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/t/ZTReJWVX3/?k=1&quot;&gt;https://www.tiktok.com/t/ZTReJWVX3/?k=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This story by the book author struck me as poignant and relevant:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/t/ZTReNV2KA/?k=1&quot;&gt;https://www.tiktok.com/t/ZTReNV2KA/?k=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/t/ZTReYJkWL/?k=1&quot;&gt;https://www.tiktok.com/t/ZTReYJkWL/?k=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This next one is on manipulation. I was raised in an environment full of manipulation, toxic masculinity, and more.&lt;/p&gt;

&lt;p&gt;I did a lot of manipulation “to survive”, and learned it as a tool to solve the problems I was facing. I have few memories of my own childhood, but I clearly remember being unwillfully manipulated into things &lt;em&gt;all the time&lt;/em&gt;. By people who then said they loved me.&lt;sup id=&quot;fnref:verbal-emotional-abuse&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:verbal-emotional-abuse&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/t/ZTReq9Eao/?k=1&quot;&gt;https://www.tiktok.com/t/ZTReq9Eao/?k=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tiktok.com/t/ZTRe1xrex/?k=1&quot;&gt;https://www.tiktok.com/t/ZTRe1xrex/?k=1&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;quotes-around-power-and-abuse&quot;&gt;Quotes around power and abuse&lt;/h2&gt;

&lt;p&gt;The more someone has spent time dealing with issues of individual/organizational misbehavior (like issues leading to, and stemming from, abuse and neglect), the more they seem to have intuitive mental models that fit the frames of the above books I’ve listed.&lt;/p&gt;

&lt;p&gt;There’s two general polarities at play. Focusing on what is &lt;em&gt;most wrong&lt;/em&gt; and focusing on what could be &lt;em&gt;most right&lt;/em&gt;. It’s important to focus on what’s gone wrong, but I think in any situation of mistreatment (and systemic mistreatment that reads as abuse or neglect) the correct response invites and makes space for evaluating what could be best-case-scenario outcomes, not &lt;em&gt;just&lt;/em&gt; reflecting on the past.&lt;/p&gt;

&lt;p&gt;Power adheres and follows the &lt;em&gt;structures&lt;/em&gt; of the way we move through the world.&lt;sup id=&quot;fnref:power-structures&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:power-structures&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;10&lt;/a&gt;&lt;/sup&gt; For example, check out &lt;a href=&quot;https://www.liberatingstructures.com/&quot;&gt;https://www.liberatingstructures.com/&lt;/a&gt;. The tagline is &lt;em&gt;increase relational coordination and trust&lt;/em&gt;. This concepts relates to that of a &lt;a href=&quot;https://chelseatroy.com/2018/03/29/why-do-remote-meetings-suck-so-much/&quot;&gt;caucus score&lt;/a&gt;. &lt;em&gt;People who have certain forms of power can mistreat people who might be deficient of power in related ways&lt;/em&gt;.&lt;sup id=&quot;fnref:shock&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:shock&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;11&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Anyway, here’s some quotes:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;There are two kinds of power. One kills the spirit. The other nourishes the spirit. The first is Power Over. The other is Personal Power.&lt;/p&gt;

  &lt;p&gt;&lt;em&gt;Power Over&lt;/em&gt; shows up as control and dominance. &lt;em&gt;Personal Power&lt;/em&gt; shows up as mutuality and co-creation.&lt;/p&gt;

  &lt;p&gt;Mutuality is a way of being with another person which promotes the growth and well-being of one’s self &lt;em&gt;and&lt;/em&gt; the other person by means of clear communication and empathetic understanding.&lt;/p&gt;

  &lt;p&gt;Co-creation is a consciously shared participation in life which helps one reach one’s goals.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;C.S. Lewis said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;To love at all is to be vulnerable. Love anything and your heart will be wrung and possibly broken. If you want to make sure of keeping it intact you must give it to no one, not even an animal. Wrap it carefully round with hobbies and little luxuries; avoid all entanglements. Lock it up safe in the casket or coffin of your selfishness. But in that casket, safe, dark, motionless, airless, it will change. It will not be broken; it will become unbreakable, impenetrable, irredeemable. To love is to be vulnerable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;substacks-and-blogs&quot;&gt;Substacks and blogs&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=30802349&quot;&gt;Epistemic Legibility&lt;/a&gt; &lt;em&gt;relates to ‘being able to be proven wrong’, how important that is in high-stakes conversation/conflict&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://elodes.substack.com/p/three-hundred-ways-it-can-hurt-to-d1d&quot;&gt;Three Hundred Ways It Can Hurt to Be a Man — Index&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sashachapin.substack.com/p/my-recent-divorce-andor-dior-homme&quot;&gt;My Recent Divorce, and/or Dior Homme Intense&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sashachapin.substack.com/p/divorce-brain&quot;&gt;Divorce Brain&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/CPTSD/comments/vyb19q/emotional_neglect_is_a_monster_of_a_thing/&quot;&gt;emotional neglect is a monster of a thing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;so-what-now-what&quot;&gt;So what? Now what?&lt;/h2&gt;

&lt;p&gt;I’ve worked on this post off and on for a while. I’ve recognized an absolutely real difficulty in knowing how to ask for help. &lt;a href=&quot;https://josh.works/better-questions&quot;&gt;In some cases, I’m at least decent at asking for help&lt;/a&gt;, but on the whole, in ways that have mattered more than usual, I would not yet self-identify as one who’s skilled at making needs/requests visible in “normal/cool ways”. (These requests for help have gone poorly a high percentage of the times I’ve made them in the last few years)&lt;/p&gt;

&lt;p&gt;So, knowing that this page summarizes my best understanding of the world. you can imagine how frustrated and beat down I feel. Generally, things that line up well with “caring for depressed people” works for me. I enjoy time with others, so email me, text me, call me, visit with me. Feel free to plainly discuss anything you’ve read on this website, or discuss it with others.&lt;/p&gt;

&lt;p&gt;If you wanna help me with a random project I happen to be working on around the house, or hang out with me while I work on one, that’s always very bolstering to my spirits. Talk with me about things you’re enthusiastic about, or things I’m enthusiastic about. That’s generally the best balm and salve for my soul.&lt;/p&gt;

&lt;p&gt;The hardest thing for me, around spending time with other people, has been feeling like this (the above context-setting) is something I couldn’t talk about without placing others in an uncomfortable place (I.E. &lt;em&gt;shameful&lt;/em&gt;, which is a very difficult place to operate from).&lt;/p&gt;

&lt;p&gt;I generally delight in and yearn  for &lt;em&gt;weighty conversations of meaningful things&lt;/em&gt;, and am happy to bear witness/hold space for whatever comes up, as needed, so it has been hard for me to endure not talking about how the most important thing in my life was withering and dying, the effects it was having on me, and how it impacted me to have a partner would pretend (to me and others) that “everything is fine”.&lt;/p&gt;

&lt;p&gt;So, &lt;em&gt;things are not fine.&lt;/em&gt; Even in that, I’m finding ways to be okay. I put a lot of eggs in one basket, with a certain expectation of how things would go, and I’ve been consistently, catastophically wrong in how things would go.&lt;/p&gt;

&lt;p&gt;It’s been &lt;em&gt;deeply difficult&lt;/em&gt; to wrap my mind around this. I’ve plumbed the depths of what ‘bad mental health’ looks like, and I would like to never do that again. I’m &lt;em&gt;deeply&lt;/em&gt; aware of instances now of verbal abuse, or coercion, and on principle call it out when I see it. (For example, I now comment upon self deprecating humor. If a friend says something about him/herself that would be rude to say about someone else, I say something to the extent of: ‘I witness that criticism of yourself and do not accept it.’)&lt;/p&gt;

&lt;p&gt;I’ve gotten dramatically more comfortable with the idea of divorce than I once was, and as things continue to go unresolved, I continue to move in that direction.&lt;/p&gt;

&lt;h1 id=&quot;faq&quot;&gt;FAQ&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;OMG you’re considering divorce why???&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s complicated. Please see above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OMG you’re still married why have you not gotten a divorce yet???&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s complicated. I’m finding boundaries. I have &lt;em&gt;extensive&lt;/em&gt; confidence in people’s abilities to learn and change. It’s a blessing and a curse.&lt;/p&gt;

&lt;h1 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h1&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:third-parties&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I believe in general a third-party observer would agree with both assessments - and third parties &lt;em&gt;have&lt;/em&gt; agreed. I’m generally leery of using third parties to bolster arguments, in the off chance it’s a rhetorical device instead something genuinely helpful to contribute, but there are situations where it could be construed as relevant. &lt;a href=&quot;#fnref:third-parties&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:what-that-means&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I know, that’s nebulous. Feel free to circle around with an IRL conversation/email/WhatsApp voice message/whatever. As I’m getting a better handle on what’s going on (this write-up is a piece of that) I’m getting a better grasp on a peaceful disposition. And perhaps as I get more of a peaceful disposition, I get a better handle on what’s going on. &lt;a href=&quot;#fnref:what-that-means&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:complex-systems&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Here’s some of the bullet points from &lt;a href=&quot;https://how.complexsystems.fail/&quot;&gt;how complex systems fail&lt;/a&gt; but first, know that ‘marriages’ or ‘relationships’ share lots of commonalities with ‘complex systems’, so any of the principles for ‘more common complex systems’, like a factory or power generation facility are not &lt;em&gt;completely dissimilar&lt;/em&gt; to a marriage/family unit. Here’s some quotes. As you read ‘systems’, in your mind, hear ‘relationships’:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;Complex systems contain changing mixtures of failures latent within them.&lt;/p&gt;

        &lt;p&gt;Catastrophe is always just around the corner.&lt;/p&gt;

        &lt;p&gt;Hindsight biases post-accident assessments of human performance.&lt;/p&gt;

        &lt;p&gt;Human operators have dual roles: as producers &amp;amp; as defenders against failure.&lt;/p&gt;

        &lt;p&gt;Actions at the sharp end resolve all ambiguity.&lt;/p&gt;

        &lt;p&gt;Change introduces new forms of failure.&lt;/p&gt;

        &lt;p&gt;People continuously create safety.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:complex-systems&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:hard-things&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Here’s the hard things:&lt;/p&gt;

      &lt;ol&gt;
        &lt;li&gt;climbing (I &lt;em&gt;finally&lt;/em&gt; had been making gains in pushing climbing grades (not unimportant to me))
2: caring &lt;em&gt;a lot&lt;/em&gt; about ‘the nighborhood’/Golden
3: starting a software consulting business.&lt;/li&gt;
        &lt;li&gt;getting significantly injured: I kept saying “oh, it’s just back pain”, and then commenting “and that’s why I cannot walk without a big limp” or “I’ve not stood up straight in months!” and often was met with horror. I ran the Leadville Marathon in 2019. Even after months of rehab, I couldn’t “run” 10 steps without pain, and I wasn’t able to just… walk, indefinately, without discomfort. Everything started hurting. (Back, neck, knees). I was depressed, and couldn’t find the enthusiasm to work out. This was one of the ways I was asking Kristi for help, and felt more or less ‘emotionally abandoned’ in it.
5.&lt;/li&gt;
      &lt;/ol&gt;

      &lt;p&gt;, and it feels like we “adopted” Golden/Iowa St as ‘our’ neighborhood. I really wanted to see it thrive, and thought that with our efforts, we could build some real community. (We did! Threw a few parties, invited the neighborhood, and had many gatherings, large and small. These remain the high point of my time in this house.) &lt;a href=&quot;#fnref:hard-things&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:what-is-abuse&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;“Abuse” is the flip side of “neglect”, both of which &lt;em&gt;can&lt;/em&gt; be harmful to those who experience it, and &lt;em&gt;can&lt;/em&gt; induce aggregate emotional damage, which can be called “trauma”. Please note that I’m defining abuse expansively, and in this context, throughout this document, I define it exclusively in &lt;em&gt;emotional&lt;/em&gt; and &lt;em&gt;verbal&lt;/em&gt; domains. &lt;a href=&quot;#fnref:what-is-abuse&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:church-and-abuse&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I will absolutely write about “The church” and “institutionalized abusive behavior” soon. It’s bad. Shame is such a wide-spread tool for behavior control, isn’t it? I don’t mean this to imply “Josh was failed by the church in this specific situation” but “the people who comprise the church/it’s institutions/Christendom/ are so habituated to certain patterns that boil down to ‘verbal/emotional abuse’, that their ‘abuse radar’ that normally would be operating is weak/malfunctioning”. Shame is &lt;em&gt;sometimes&lt;/em&gt; the appropriate response to an event/action, but if one starts using it as a tool on others for behavior control, all sorts of things go wrong with whatever it is one is trying to control. If you don’t have a mental model for ‘in certain ways, humans seem to often use shame for behavior control’ it makes it harder to debug problems that might be rooted in shaming people for behavior control. 🙊 &lt;a href=&quot;#fnref:church-and-abuse&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:response&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;There’s a variety of responses to experiencing trauma/bad things, and those responses are shaped by many factors. Not worth getting into here. &lt;a href=&quot;#fnref:response&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:read-cannon&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I mean this in the sense of ‘literary/scene-setting canon’ and ‘accepted high-culture canon’, from &lt;a href=&quot;https://en.wikipedia.org/wiki/Canon&quot;&gt;https://en.wikipedia.org/wiki/Canon&lt;/a&gt;. It’s analogous to looking at an issue intentionally from several different frames. I’m competent at identifying some instances of internal (in)consistency within frames, &lt;em&gt;and&lt;/em&gt; between frames. It might be obvious, but me reading a book (and referencing it) certainly ought not to be treated as an endorsement of the book or the ideas espoused within. I’ve watched “Birth of a Nation” and read &lt;em&gt;Mein Kampf&lt;/em&gt;. I am &lt;em&gt;down&lt;/em&gt; for reading/understanding propaganda and/or the views of &lt;em&gt;very&lt;/em&gt; bad people. It’ll be up to you to infer from context if I’m recommending something, or holding it up as an example of a bad thing. &lt;a href=&quot;#fnref:read-cannon&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:verbal-emotional-abuse&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Like I’ve mentioned, this is about verbal and emotional abuse. I’m not saying nothing good ever happened, or that things were exclusively bad all the time.  Consider reading &lt;a href=&quot;https://www.goodreads.com/book/show/25343.Parenting_From_the_Inside_Out?&quot;&gt;Parenting from the Inside Out&lt;/a&gt;, and contrast it with various regimes of behavioral control. &lt;a href=&quot;#fnref:verbal-emotional-abuse&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:power-structures&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Oh I cannot wait to expand on this thought. It’ll get its own blog post, and it’s implications extend far beyond the extent of my marriage, or marriage in general. My marriage is a “downstream effect” of the reality of power, and power structures. &lt;a href=&quot;#fnref:power-structures&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:shock&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Lots of people have expressed shock when I’ve alleged that I’ve found myself in an emotionally abusive relationship. They say something like “if it’s actually abusive, you should leave, full stop, but because I don’t think you have to leave, it must not be abusive.” They don’t say it exactly like that, but it’s something close. I can feel them pattern matching on verbal abuse being something that tends to be done by men towards women, and includes a variety of other power dynamics. It’s nice being a strong fit young white guy - I can physically defend myself, so even though I know that all physical abuse is proceeded by verbal abuse, &lt;em&gt;and even though Kristi has made veiled threats of physical violence&lt;/em&gt;, I don’t fear physical violence. It’s the emotional and verbal component that’s been so devastating. It feels like this component is illegible to others. &lt;a href=&quot;#fnref:shock&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>2020 Annual Review</title>
   <link href="https://josh.works/2020-review"/>
   <updated>2022-06-27T13:00:00+00:00</updated>
   <id>https://josh.works/2020-wrapup</id>
   <content type="html">&lt;p&gt;&lt;em&gt;please note: i’m publishing this far after it was drafted, which was in January 2021. It’s being published in June 2022 - I’m trying to back-fill ‘annual reviews’, I never finished this one or published it, until now.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Is it even possible to mention a 2020 review without somehow giving a nod to the experiences lived by all of us this year?&lt;/p&gt;

&lt;p&gt;For a variety of reasons, we’ve all had a variety of experiences inducing sadness, despair, hopelessness, but also joy, laughter, and sweet time with friends.&lt;/p&gt;

&lt;p&gt;So, lets have that all out of the way.&lt;/p&gt;

&lt;p&gt;I’ve done annual reviews a few times now:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/2019-review&quot;&gt;2019&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;2017 review: &lt;a href=&quot;/2017-review&quot;&gt;2017 In Review &amp;amp; Thoughts on 2018&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;2016 review: &lt;a href=&quot;/2016-most-dangerous-books&quot;&gt;2016 - Biggest Lesson, Most Dangerous Books&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;2015 review: &lt;a href=&quot;/2015_the_year_i_didnt_think_much&quot;&gt;2015: The year I didn’t think much?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I normally publish my ‘year in review’ posts in January. I just checked my &lt;a href=&quot;https://josh.works/2019-review&quot;&gt;2019 reivew&lt;/a&gt; to see when I published it vs. when I wrote it.&lt;/p&gt;

&lt;p&gt;I published it Feb 2nd, but the last time I edited the content of the file in a meaningful way was Dec 30th, 2019.&lt;/p&gt;

&lt;p&gt;My father-in-law passed away unexpectedly of a heart attack on January 12th. My wife and I spent almost two months back in NJ, helping pick up the pieces.&lt;/p&gt;

&lt;p&gt;My last time on a plane before Covid hit was a work trip back to Pittsburgh, where I gave my notice, agreed to three more weeks of work.&lt;/p&gt;

&lt;p&gt;So, I quit my job (and cancelled a climbing trip to Cuba) while the lockdowns were starting up. I was given a number of opportunities to keep the job, due to the uncertainty ahead.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A lot has changed in the last week, Josh - are you still sure you want to leave?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Me, who was quitting with no work prospects in sight (but enormously privileged to be married to a woman who makes great money and has a secure job) quit my six-figure dev job heading into the biggest recession we’ve seen in a while.&lt;/p&gt;

&lt;p&gt;And I’d do it all over again.&lt;/p&gt;

&lt;p&gt;I picked up contract work (at Turing!) and spent a few months doing software development work, and teaching work, at the same time.&lt;/p&gt;

&lt;p&gt;I learned many useful lessons.&lt;/p&gt;

&lt;p&gt;I came away disappointed, however, even more, with the state of the software development industry to “train itself”. I consistently feel like a vastly-inferior developer, who hardly earns the right to sit at a table of Real Software Developers who do Important Things At Scale!&lt;/p&gt;

&lt;p&gt;As a counterfactual: a month or so ago, I tested the job market, to see if I could still get a job. At the time, it was looking like me working full-time might have been the best use of time to my wife and I.&lt;/p&gt;

&lt;p&gt;Having been “on sabbatical” for the better part of a year didn’t hurt my prospects. I quickly got two job offers, both offering substantial improvements on my prior job’s total comp. More on that later.&lt;/p&gt;

&lt;p&gt;This is a year defined by profound brokenness. I felt far more personally affected, and I felt that brokenness compounding over prior years was piling up, exacerbated in many ways by the rapid arrival of the future, Covid.&lt;/p&gt;

&lt;p&gt;Themes I’ve spent time on this year. I could write 5,000 words on any one of these:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Work, satisfaction, corporate pathologies&lt;/li&gt;
  &lt;li&gt;Meaning-making, helping others, large-scale&lt;/li&gt;
  &lt;li&gt;software development&lt;/li&gt;
  &lt;li&gt;teaching software development&lt;/li&gt;
  &lt;li&gt;teaching software development to others as a way of righting some wrongs around systemic issues&lt;/li&gt;
  &lt;li&gt;democratizing the tools of software development as social change???&lt;/li&gt;
  &lt;li&gt;Jesus Christ. Not an expletive, the man. Feels like this year I &lt;em&gt;finally&lt;/em&gt; learned what had felt so wrong about nearly all of my experiences with Christians.&lt;/li&gt;
  &lt;li&gt;On that note, I sorted out substantial improvements in my relationships with nearly everyone else in my life, too. (That all happened very late in 2020, I’ll get there eventually)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wrote more substantial and important things than I’ve ever written before. Almost no one has read most of what I’ve written, &lt;em&gt;by design&lt;/em&gt;. I spent 60+ hours on a document read by precisely four people besides myself.&lt;/p&gt;

&lt;p&gt;I published a lot on this website, and very little of it is easily findable, &lt;em&gt;by design&lt;/em&gt;.&lt;/p&gt;

&lt;h3 id=&quot;things-i-read-this-year&quot;&gt;things I read this year:&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/compression-progress.jpg&quot; alt=&quot;read in 2019&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;driven-by-compression-progress-a-simple-principle-explains-essential-aspects-of-subjective-beauty-novelty-surprise-interestingness-attention-curiosity-creativity-art-science-music-jokes&quot;&gt;Driven by Compression Progress: A Simple Principle Explains Essential Aspects of Subjective Beauty, Novelty, Surprise, Interestingness, Attention, Curiosity, Creativity, Art, Science, Music, Jokes&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://arxiv.org/abs/0812.4360&quot;&gt;link, arxiv.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve been thinking of this paper a lot lately. I’ve re-read it since mid-2019, too, April and Sept, 2020.&lt;/p&gt;

&lt;p&gt;Specifically as I’ve observed phenomena that appear to surprise other people (or, at least, they &lt;em&gt;act&lt;/em&gt; surprised) and in doing so, gained an understanding about &lt;em&gt;their&lt;/em&gt; view of the world, or what they desire to telegraph about their view of the world.&lt;/p&gt;

&lt;p&gt;In short, based on the premise of &lt;a href=&quot;https://www.goodreads.com/book/show/6637965-the-predictioneer-s-game?from_search=true&quot;&gt;The Predictioneer’s Game: Using the Logic of Brazen Self-Interest to See and Shape the Future&lt;/a&gt;, coupled with the gist of the above paper, I’ve got a more accurate mental model of the world than most people.&lt;sup id=&quot;fnref:eric-weinstein-pia-maloney&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:eric-weinstein-pia-maloney&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This is a bold, bold claim.&lt;/p&gt;

&lt;p&gt;Here’s the paper abstract, lightly reformatted by me for readability:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I argue that data becomes temporarily interesting by itself to some self-improving, but computationally limited, subjective observer once he learns to predict or compress the data in a better way, thus making it subjectively simpler and more beautiful.&lt;/p&gt;

  &lt;p&gt;Curiosity is the desire to create or discover more non-random, non-arbitrary, regular data that is novel and surprising not in the traditional sense of Boltzmann and Shannon but in the sense that it allows for compression progress because its regularity was not yet known.&lt;/p&gt;

  &lt;p&gt;This curiosity drive maximizes interestingness, the first derivative of subjective beauty or compressibility, that is, the steepness of the learning curve.&lt;/p&gt;

  &lt;p&gt;It motivates exploratory infants, mathematicians, composers, artists, dancers, comedians, yourself, and (since 1990) artificial intelligence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wrote more about this here: &lt;a href=&quot;https://josh.works/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;https://josh.works/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&lt;/a&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;we-bought-a-house&quot;&gt;We Bought A House&lt;/h2&gt;

&lt;p&gt;My wife and I bought a house. Oh boy.&lt;/p&gt;

&lt;p&gt;The process led to a lot of writing on the intersection of racism and modern housing policy.&lt;/p&gt;

&lt;p&gt;Some Twitter threads, like &lt;a href=&quot;https://twitter.com/josh_works/status/1294726871574179840?ref_src=twsrc%5Etfw&quot;&gt;Thoughts on Denver’s zoning and systemic racism&lt;/a&gt; and a few others.&lt;/p&gt;

&lt;p&gt;This topic has been near and dear to my heart for a long time. It’s actually far more important to me than nearly anything else I’ve written about on this website, but it’s hard to express coherently.&lt;/p&gt;

&lt;p&gt;I’m starting to figure out what I’m trying to do, and how to do it. More on that later.&lt;/p&gt;

&lt;h2 id=&quot;misc&quot;&gt;Misc&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;I wrote [https://letterstoanewdeveloper.com/2019/12/19/cultivate-the-skill-of-undivided-attention-or-deep-work/], which briefly went to the top of &lt;a href=&quot;https://news.ycombinator.com/item?id=22646839&quot;&gt;hacker news&lt;/a&gt;. &lt;a href=&quot;https://josh.works/letters-to-a-new-developer-deep-work&quot;&gt;Here’s the crosspost&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;I did a few different contract roles.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;reading&quot;&gt;Reading&lt;/h2&gt;

&lt;p&gt;I read a lot of books, and a lot of papers, in 2020. More papers than in any other year. It was a difficult year, and writing about what I read didn’t make it high enough on the priority list.&lt;/p&gt;

&lt;h3 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h3&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:eric-weinstein-pia-maloney&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;For example, &lt;a href=&quot;https://josh.works/my-thoughts-on-erics-thoughts-on-pias-thoughts&quot;&gt;My Thoughts on Eric Weinstein’s Thoughts on Pia Kalani’s Thoughts&lt;/a&gt;. As I listened to what he said, I could generally anticipate where he was going, and I appreciated the brevity and concise conceptual expression of something I’d also tried to express. &lt;a href=&quot;#fnref:eric-weinstein-pia-maloney&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>An Open Letter about Golden</title>
   <link href="https://josh.works/open-letter-about-golden"/>
   <updated>2022-05-24T13:00:00+00:00</updated>
   <id>https://josh.works/open-letter-to-golden</id>
   <content type="html">&lt;h2 id=&quot;2022-06-15-update&quot;&gt;2022-06-15 Update&lt;/h2&gt;

&lt;p&gt;I wrote this document the first time in a very small number of minutes, three weeks ago, on my way out the door on a particularly busy day. I follow “&lt;a href=&quot;https://josh.works/write-it-now&quot;&gt;write it now&lt;/a&gt;”. I’ve gotten to discuss this letter with a few different people, because I mentioned it in email. Some of you asked, essentially “what are you actually asking for, josh?”._&lt;/p&gt;

&lt;p&gt;I thought about it for a moment, and said something like “I’d like to see euclidean zoning abolished”, and now, as I’ve thought about it more, the simplest ask I’m requesting is thus:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Replace Golden’s zoning code with &lt;a href=&quot;http://urbankchoze.blogspot.com/2014/04/japanese-zoning.html&quot;&gt;Japanese-style zoning&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, from a legislative perspective, thats almost the only outcome I would consider to be ‘possibly ethical’&lt;sup id=&quot;fnref:strong-words&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:strong-words&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;you, maybe:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;what is this stuff of ethics, Josh, we’re talking about zoning!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I know.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;open-letter-to-golden-city-council&quot;&gt;Open Letter to Golden City Council&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;I wrote this on May 24th, after that day’s update from &lt;a href=&quot;http://goldentoday.com/&quot;&gt;http://goldentoday.com/&lt;/a&gt; announced two big entries on the docket. Reviewing a CoorsTek PUD (it was apporoved) and ‘voting’ on the rezoning thing that’s been underway for two years. Those two topics in mind, I wrote some thoughts about zoning in Golden&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I wrote the following in an email to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;publiccomment@cityofgolden.net&lt;/code&gt;, but I have no idea if/where it will be made public, so re-posting here.&lt;sup id=&quot;fnref:whole-city-council&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:whole-city-council&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h3 id=&quot;email-subject-im-generally-disappointed-with-the-discourse-ive-observed-to-date&quot;&gt;Email Subject: I’m generally disappointed with the discourse I’ve observed to date&lt;/h3&gt;

&lt;p&gt;Hi there, city council and staff,&lt;/p&gt;

&lt;p&gt;I’ve lived in Golden since 2014, my wife and I managed to buy a house in 2020, on Iowa St. &lt;sup id=&quot;fnref:the-color-of-law&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:the-color-of-law&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;I’ve attended many meetings, and noticed that for people who live in the city, there is an obsession with what the city staff or council are doing/not doing, for understandable reasons. The entire city is dependent upon the decisions of city staff, planning commission, and council.&lt;/p&gt;

&lt;p&gt;The city is extremely expensive to live in, and the road networks don’t function very well or safely for anyone.&lt;/p&gt;

&lt;p&gt;The way the city solicits ‘public input’ is hilariously biased, full of micromanagement, and obviously doesn’t lead to useful outcomes.&lt;sup id=&quot;fnref:data-bias&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:data-bias&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The city staff perpetuate issues that harm everyone by failing to recognize the origins of bad policies that cripple progress and real growth. I don’t expect the average resident to be an expert in municipal zoning codes, and the complicated histories therein, but I expect the staff and city council to know these things.&lt;/p&gt;

&lt;h3 id=&quot;zoning-is-far-more-complicated-and-insidious-and-harmful-than-generally-appreciated&quot;&gt;Zoning is far more complicated and insidious and harmful than generally appreciated&lt;/h3&gt;

&lt;p&gt;Zoning, for example, as exists in America, was created by politically powerful ethnic groups to maintain social control and physical separation over other ethnic groups; “urban renewal” was the excuse cities used to enact regimes of ethnic cleansing against ‘undesirable’ ethnic minorities.&lt;sup id=&quot;fnref:strong-words:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:strong-words&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Here’s a quote from an article, the whole thing is worth reading:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The zone plan drafted by Whitten and unpublished by the Atlanta City Planning Commission in 1922 explained that “race zoning is essential in the interest of the public peace, order and security and will promote the welfare and prosperity of both the white and colored race.” The zoning law divided the city into an “R-I white district” and “R-2 colored district” with additional neighborhoods undetermined (Rothstein 2017) &lt;a href=&quot;https://blackfeminisms.com/zoning/&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This zone plan the document references is &lt;em&gt;intense&lt;/em&gt;. I’ve written extensively about Whitten’s plan &lt;a href=&quot;https://josh.works/full-copy-of-1922-atlanta-zone-plan&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Golden still has R1 and R2 neighborhoods. They’re not labeled “white” and “colored”, anymore, but the original intent lives on. I live in an R2 neighborhood. There’s a bunch of distinctive features that make it obviously a ‘traditional’ R-2 neighborhood.&lt;/p&gt;

&lt;p&gt;Most people have not even &lt;em&gt;heard&lt;/em&gt; of R1 or R2 zoning, and yet it’s the dominant visible feature of most (maybe all?) cities in America today.&lt;/p&gt;

&lt;p&gt;Incidentally, &lt;em&gt;everyone&lt;/em&gt; is hurt by the R1 and R2 distinction. The entire “zone plan” laid down by Whitten dicated not only to poor ethnic groups how they were going to live, but also how the lives of the “privileged”/powerful ethnic groups would be. For t he same reasons I wouldn’t want to go to a theme park built by a genocidal dictator, I don’t want to live in a built environment governed by the worldview of someone who was scared of certain ethnic groups and thought they were not even people.&lt;/p&gt;

&lt;h3 id=&quot;r-2-neighborhoods&quot;&gt;R-2 neighborhoods&lt;/h3&gt;

&lt;p&gt;Lets talk about R-2 neighborhoods. &lt;/p&gt;

&lt;p&gt;I live in an R2 neighborhood. Some (maybe most) of you don’t live in an R2-designated spot, but some of you do, and &lt;em&gt;all&lt;/em&gt; of you are heavily negatively affected by the &lt;em&gt;existence&lt;/em&gt; of R-2 zoning.&lt;/p&gt;

&lt;p&gt;I invite you to look at page 10 of &lt;a href=&quot;https://babel.hathitrust.org/cgi/pt?id=osu.32435003851870&amp;amp;view=1up&amp;amp;seq=12&amp;amp;skin=2021&quot;&gt;this document&lt;/a&gt;, to read the race zoning language directly, as it was written in 1922.&lt;/p&gt;

&lt;p&gt;… did you look at it? It’s on page 10 of the document, page 12 of the PDF itself. Worth reading, in all its old-timey glory. The above link takes you to the correct page.&lt;/p&gt;

&lt;p&gt;I desire for the city to move into the modern world when it comes to managing “itself”.&lt;/p&gt;

&lt;p&gt;During the rezoning meetings, when the city was telling the residents of my R2 north-golden neighborhood what the new ‘form-based zoning’ rules were going to be, I couldn’t help but notice that most of the attendees of the meeting where from r1 neighborhoods, there to make sure that the new zoning plan wouldn’t apply to their homes.&lt;/p&gt;

&lt;p&gt;I asked Rick if he was aware of the race-based heritage of zoning in the USA, and he seemed uncertain.&lt;/p&gt;

&lt;h3 id=&quot;lets-talk-about-ethnic-cleansing&quot;&gt;Let’s talk about ethnic cleansing&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;is it getting hot in here? anyone sweating, or feeling uncomfortable? Not yet? Ok, lets carry on&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Furthermore, road networks (and minimum parking requirements) are the primary justification/tool for urban renewal, which was used in American in the 50s, 60s, and 70s for ethnic cleansing.&lt;/p&gt;

&lt;p&gt;Here’s how Wikipedia defines ethnic cleansing:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Ethnic cleansing is the systematic forced removal of ethnic, racial, and religious groups from a given area, with the intent of making a region ethnically &lt;a href=&quot;https://en.wikipedia.org/wiki/Homogeneity_and_heterogeneity&quot;&gt;homogeneous&lt;/a&gt;. Along with direct removal, extermination, &lt;a href=&quot;https://en.wikipedia.org/wiki/Deportation&quot;&gt;deportation&lt;/a&gt; or &lt;a href=&quot;https://en.wikipedia.org/wiki/Population_transfer&quot;&gt;population transfer&lt;/a&gt;, it also includes indirect methods aimed at &lt;a href=&quot;https://en.wikipedia.org/wiki/Forced_displacement&quot;&gt;forced migration&lt;/a&gt; by coercing the victim group to flee and preventing its return, such as murder, rape, and property destruction.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, to say that urban renewal has been used for ethnic cleansing in America, I’m making the charge that institutions in America have engaged in actions synonymous with rape, genocide, starvation, and war.&lt;/p&gt;

&lt;p&gt;I invite anyone to obtain a copy of &lt;a href=&quot;https://www.goodreads.com/book/show/2023854.The_Slaughter_of_Cities&quot;&gt;The Slaughter of Cities: Urban Renewal as Ethnic Cleansing&lt;/a&gt; by E Michael Jones, or borrow my copy.&lt;/p&gt;

&lt;p&gt;I won’t be party to ongoing perpetuation of the injustices that decimated Denver, Golden, Lakewood, and every city in America in the 20th century.&lt;/p&gt;

&lt;p&gt;I’d rather participate in a system that unwinds the evil plans worked by powerful people who embedded their views of the world in systems which hum along long after these evil people have died.&lt;/p&gt;

&lt;p&gt;It’s too late to undo the evil acts that befell millions across the country, at the hands of politically powerful, racially-motivated ethnic groups. But we can start making a new path.&lt;/p&gt;

&lt;p&gt;Incidentally, the new path will bring about a more pleasant, beautiful, well-running city. It will be a home to more people, and will hum with more life. There will be less “bad things” and more “good things”, for all involved persons, both now and years from now.&lt;/p&gt;

&lt;p&gt;The things the city seems to be spending its time on are not related to the things the city should be spending its time on. The easiest/correct set of next steps would be to legislatively remove every piece of municipal code and statute that relates to regimes of ethnic cleansing and social control.&lt;/p&gt;

&lt;p&gt;The people who perpetuated ethnic cleansing had deeply broken and warped views of the world (duh! They believed in things like &lt;a href=&quot;https://en.wikipedia.org/wiki/Phrenology&quot;&gt;phrenology&lt;/a&gt; and other forms of &lt;a href=&quot;https://en.wikipedia.org/wiki/Scientific_racism&quot;&gt;scientific racism&lt;/a&gt;. They were just as sophisticated in their understanding of how cities worked and functioned and existed as an ecosystem.&lt;/p&gt;

&lt;p&gt;It’s &lt;em&gt;really bad&lt;/em&gt; to continue allowing these people’s bad estimations of the world to be guiding decisions made across the city today.&lt;/p&gt;

&lt;p&gt;These pro-ethnic-cleansing people couldn’t quite come out and say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;we want to pass laws that allow us to use heavy equipment to tear down ethnic neighborhoods&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;they had to say things like&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;in pursuit of maintenance of property values, we will make illegal many things associated with the ways of life of ethnic minorities, preventing them from consolidating any power or stability around them&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and then later said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;if we deny city services to certain areas, we can make them look bad/scary&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and then said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;To protect our citizens and GDP, we will tear down old-looking buildings and replace them with parking lots, and use federal highway administration dollars/documents to build highways through minority neighborhoods.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;because these groups of evil people had access to more wealth and political power than the ethnic groups they targeted. Once they made tools to hurt certain groups, those tools kept hurting every person who is involved. Like &lt;a href=&quot;https://www.codot.gov/projects/i70east&quot;&gt;https://www.codot.gov/projects/i70east&lt;/a&gt;. It’s not wealthy people who get their homes taken for highway expansion, because wealthy people don’t live near highways, generally.&lt;/p&gt;

&lt;p&gt;For example, since car ownership was associated with income, and income is/was a proxy for wealth, any legislation/regulation that prioritized cars, or any federal dollars obtained to build car infrastructure, supported their goals of advancing the way of life of people who drive cars, which was people who had a little more money to begin with, or at least who looked like “safe” people to lend money to.&lt;/p&gt;

&lt;p&gt;This is why I have very little patience for urban planning experts who don’t instantly recognize the vast harm wrought by ‘minimum parking requirements’ and an unwillingness to make the streets safe/efficient/effective for all users.[^most-vulnerable-first]&lt;/p&gt;

&lt;h3 id=&quot;ok-whats-the-alternative&quot;&gt;OK, whats the alternative?&lt;/h3&gt;

&lt;p&gt;The good news is as soon as we drop the crappy old paradigm, (and the rules that are a form of metaphysical handcuffs), really good things can happen, quickly, for nearly everyone:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;More parks&lt;/li&gt;
  &lt;li&gt;more pleasant places to walk&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Ask for trees in your city 🌳 &lt;a href=&quot;https://t.co/GT2QcoAPb7&quot;&gt;pic.twitter.com/GT2QcoAPb7&lt;/a&gt;&lt;/p&gt;&amp;mdash; Diego Saez Gil (@dsaezgil) &lt;a href=&quot;https://twitter.com/dsaezgil/status/1536880682525306885?ref_src=twsrc%5Etfw&quot;&gt;June 15, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;ul&gt;
  &lt;li&gt;quieter, safer, exercise-ier,&lt;/li&gt;
  &lt;li&gt;more kids playing outside&lt;/li&gt;
  &lt;li&gt;more socializing&lt;/li&gt;
  &lt;li&gt;more shade from trees&lt;/li&gt;
  &lt;li&gt;more park benches and playgrounds and pickleball courts&lt;/li&gt;
  &lt;li&gt;more schools and daycare places&lt;/li&gt;
  &lt;li&gt;more housing (that’s close to cool things!)&lt;/li&gt;
  &lt;li&gt;more places that will pay for labor (so you’re not so tied to a job if it’s not a good fit for you anymore, or you hate it)&lt;/li&gt;
  &lt;li&gt;more bus stations and train tracks&lt;/li&gt;
  &lt;li&gt;more deer, birds, rabbits, butterflies and bees&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don’t really know how to end this.&lt;/p&gt;

&lt;p&gt;[most-vulnerable-first]: Current road networks are inadequate, &lt;em&gt;even for drivers&lt;/em&gt;. That’s the topic of another blog post, but the roads are bad. &lt;a href=&quot;https://www.instagram.com/pedestriandignity/?hl=en&quot;&gt;Jonathan Stalls&lt;/a&gt; lives in Denver, and talks about inadequate road networks regularly. &lt;a href=&quot;https://mashable.com/article/pedestrian-dignity-transportation-accessibility&quot;&gt;Here’s a profile of him in Mashable&lt;/a&gt;. “safe enough” roads can be used safely by children, or disabled people, or the elderly, in all conditions, like: at night, in the rain, in the snow. We could go on a walk around Golden, following a cargo bike full of traffic cones, and could start laying out improvements to improve traffic flow, reduce intersection complexity, and reduce the need for vehicles to do as much stopping and hard accelerating. Everyone could just cruise around at a constant 20 mph. Golden’s only a few miles across the long way, so it would take no time at all to go nearly anywhere.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:strong-words&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I know this was phrased really strongly. Please, again, read my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;write it now&lt;/code&gt; piece. &lt;a href=&quot;#fnref:strong-words&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt; &lt;a href=&quot;#fnref:strong-words:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:whole-city-council&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I &lt;em&gt;think&lt;/em&gt; the email went to the whole city council. It’s just a microsoft office alias for them, or something. I’m sure it goes to others/someone keeps an eye on it for spam. &lt;a href=&quot;#fnref:whole-city-council&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:the-color-of-law&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;My wife and I have “good” jobs, so banks were happy to lend us horrific amounts of money to afford our 70 year old house that’s literally falling to pieces. It “cost” over half a million dollars. That’s far more than we ever wanted to spend on a house, but this was all that was available, and we have “good jobs”, so even at that cost, it’s within a reasonable income/rent ratio, at least to a bank. It’s hard to talk about without assuming all parties have at least read a book review of &lt;a href=&quot;https://www.goodreads.com/book/show/32191706-the-color-of-law&quot;&gt;The Color of Law: A Forgotten History of How Our Government Segregated America&lt;/a&gt; or read some of the goodreads comments. &lt;a href=&quot;#fnref:the-color-of-law&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:data-bias&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;If you find this to be a not-credible statement, consider reading &lt;a href=&quot;https://www.amazon.com/Invisible-Women-Data-World-Designed/dp/1419729071&quot;&gt;Invisible Women: Data Bias in a World Designed for Men&lt;/a&gt;. I’m not casting aspersions at any particular group, &lt;em&gt;per se&lt;/em&gt;. Good people with good intentions are everywhere. It’s the implementation that gets messy, for a few solvable reasons. &lt;a href=&quot;#fnref:data-bias&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Back in the saddle (of writing)</title>
   <link href="https://josh.works/back-in-the-saddle"/>
   <updated>2022-04-26T13:00:00+00:00</updated>
   <id>https://josh.works/back-in-the-saddle</id>
   <content type="html">&lt;h2 id=&quot;background&quot;&gt;Background&lt;/h2&gt;

&lt;p&gt;It’s been a hell of a year. I’ve got about 10,000 things I’ve wanted to write about, and have not gotten around to any of them. Here’s my various top-level reasons for not writing:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;what I want to write about feels too complicated to express easily/coherently&lt;/li&gt;
  &lt;li&gt;I feel like I’d have too do too much context-setting to get to what I &lt;em&gt;really&lt;/em&gt; wanna write about&lt;/li&gt;
  &lt;li&gt;I’m too sad/depressed/numb to care about writing&lt;/li&gt;
  &lt;li&gt;when feeling sad/depressed/numb, it feels &lt;em&gt;deeply wrong&lt;/em&gt; to draw attention to oneself&lt;/li&gt;
  &lt;li&gt;feels like anything I’d write would need a million footnotes, asterisks, and qualifying statements to say anything interesting/true enough&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Incidentally, however, writing is &lt;em&gt;deeply cathartic&lt;/em&gt; for me. Also, &lt;em&gt;this is my website&lt;/em&gt;. I can say whatever I want.&lt;/p&gt;

&lt;p&gt;So, here’s my reasons for why I am going to &lt;em&gt;start&lt;/em&gt; writing:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I owe no one anything, so if I want to write a piece that assumes background knowledge about, say, the history of how zoning was ‘invented’ in the USA, I can write it. If it’s too spicy of a take, and someone takes issue with it, well, welcome to the internet,&lt;/li&gt;
  &lt;li&gt;I desperately need to get some projects i’m working on out of my head and on paper&lt;/li&gt;
  &lt;li&gt;I’m juggling big projects and small projects. writing &lt;em&gt;always&lt;/em&gt; clarifies my thinking and next steps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;what-is-coming-next&quot;&gt;What is coming next&lt;/h2&gt;

&lt;p&gt;Big projects, and small. A podcast (maybe), backyard outdoor movie nights, home-made pizza, friends and family, work, training hard for climbing, enabling others to get more of what they want, making things beautiful. Being odd, and reveling in it.&lt;/p&gt;

&lt;p&gt;Reading, repair, rest, capacity-building. Riding my vespa around Denver, and soon, a motorcycle around the continent.&lt;/p&gt;

&lt;p&gt;Nudging systems.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Things That Are Surprisingly Good For The Cost (AKA How I want to build my tiny house)</title>
   <link href="https://josh.works/surprisingly-good-for-the-cost"/>
   <updated>2022-03-11T13:00:00+00:00</updated>
   <id>https://josh.works/surprisingly-good-for-the-cost</id>
   <content type="html">&lt;p&gt;Working title: “My Dream Backyard House/ADU/round-one-of-building-experiment”&lt;/p&gt;

&lt;p&gt;I’m trying to build a kinda cool, quirky, sensitive-to-supply-chain-disruption, cheap, functional, emotionally healing home in my back yard. We love to host friends and family, guests, maybe AirBnB sometimes, have extra space for a growing family, etc.&lt;/p&gt;

&lt;p&gt;I hope that this document might someday get shared with various persons who are helping us execute on aspects of the plan, or just folks I’ve talked to IRL who want to know some of the books I’ve mentioned to them&lt;sup id=&quot;fnref:book-recommendations&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:book-recommendations&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;I’ll probably reference this page when working with the city for permits and approvals, because some of what I do falls outside of the International Building Code, and thus isn’t really on the radars of local municipalities.&lt;/p&gt;

&lt;p&gt;Basically, I’ve had &lt;a href=&quot;https://www.amazon.com/Pattern-Language-Buildings-Construction-Environmental/dp/0195019199&quot;&gt;A Pattern Language&lt;/a&gt; floating around my head for two years, and &lt;a href=&quot;https://www.amazon.com/gp/product/156158696X/ref=ox_sc_act_title_8?smid=APJ60QDWVW1X7&amp;amp;psc=1&quot;&gt;patterns of home&lt;/a&gt;, and finally have taken an interesting plunge into object-oriented design principles for my new job. Did you know that the author of &lt;em&gt;A Pattern Language&lt;/em&gt; is like… the Godfather of OO design?&lt;/p&gt;

&lt;p&gt;and and just a few days ago&lt;sup id=&quot;fnref:in-feb-2022&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:in-feb-2022&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; the last big piece clicked into place in my head - masonry heaters!&lt;/p&gt;

&lt;p&gt;I’ve long been interested in &lt;a href=&quot;https://en.wikipedia.org/wiki/Earthship&quot;&gt;earthships&lt;/a&gt;, but was always put off by how strange they look, and how much labor they took. You kinda had to commit to the earthship lifestyle. I don’t want that - I want to build a house that my mother-in-law will live in for a long time, and learn some useful skills along the way.&lt;/p&gt;

&lt;p&gt;This desire (and how it connects to ‘repair’) came full-circle as I was thinking through how to improving/understanding/being-effective-in the parts of the codebase my work has me interacting with.&lt;/p&gt;

&lt;p&gt;I’ve been working a bit with Szezbi, &lt;a href=&quot;https://twitter.com/Solarchitects&quot;&gt;@Solarchitects&lt;/a&gt;, on figuring out some of these patterns, and how they might be applied on a simple ‘house’ in my back yard.&lt;/p&gt;

&lt;h1 id=&quot;informing-ideas&quot;&gt;Informing Ideas&lt;/h1&gt;

&lt;p&gt;Here’s a list of the concepts I’m working into my plans, and I think could be worked into other plans. Per &lt;em&gt;A Pattern Language&lt;/em&gt; I’ve committed to no specific layout, but I’ve got some components of this house I am building.&lt;/p&gt;

&lt;h2 id=&quot;rammed-earth-walls&quot;&gt;Rammed Earth Walls&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Rammed_earth&quot;&gt;Rammed Earth&lt;/a&gt; is a very old, traditional style of building that can look surprisingly modern.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Building_envelope&quot;&gt;Building envelopes&lt;/a&gt; can be built out of dirt, about 18” thick, in a huge variety of shapes. So, by building a square, or something close to it, one can have an extremely solid, basic structure that stays warm in the winter, cool in the summer, keeps the interior quiet, and is super cheap.&lt;/p&gt;

&lt;p&gt;“built out of dirt” is a provocative way to say it, though. Clay and bricks are “mud and water and straw”, and obviously one can build &lt;em&gt;beautiful&lt;/em&gt; brick buildings.&lt;/p&gt;

&lt;h3 id=&quot;example-pictures&quot;&gt;Example pictures&lt;/h3&gt;

&lt;p&gt;Take a look at these rammed earth structures!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;rammed-earth-01.jpg&quot; alt=&quot;campground&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;re-02.jpg&quot; alt=&quot;inside&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;They can be built quickly, with surprisingly basic pieces of equipment.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;re-exterior.jpg&quot; alt=&quot;exterior&quot; /&gt;&lt;/p&gt;

&lt;p&gt;They can be beautiful on the inside.&lt;/p&gt;

&lt;p&gt;I love kitchens.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;re-kitchen.jpg&quot; alt=&quot;kitchen&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;re-inside.jpg&quot; alt=&quot;campground&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The kitchen would be the location of the masonry heater, more on that below.&lt;/p&gt;

&lt;h3 id=&quot;specific-drawbackschallenges-to-rammed-earth-walls-in-a-sometimes-quite-cold-environment-its-an-inherently-coldcool-structure&quot;&gt;Specific drawbacks/challenges to rammed earth walls in a sometimes-quite-cold environment: it’s an inherently cold/cool structure&lt;/h3&gt;

&lt;p&gt;I recently came to more clearly understand some of the challenges to rammed earth walls and moderating low temperatures.&lt;/p&gt;

&lt;p&gt;I like the ideas of passive cooling, and rammed earth is great at that kind of thing.&lt;/p&gt;

&lt;p&gt;It’s a bit trickier in cold environments, because of the intersection of thermal mass and ‘radient heat’, etc. The masonry heater book discussed below is a great starting point into the science.&lt;/p&gt;

&lt;p&gt;Anyway, rammed earth walls would need to be insulated. There’s different ways/amounts of insulation you’ll need. Working on sorting that out right now.&lt;/p&gt;

&lt;p&gt;Embedded in kitchens can be the house’s source of heat, which is powered in very smooth cycles by a once-or-twice act of putting logs in a small fire:&lt;/p&gt;

&lt;h2 id=&quot;masonry-heaters&quot;&gt;Masonry Heaters&lt;/h2&gt;

&lt;p&gt;I just finished reading &lt;a href=&quot;https://www.amazon.com/Masonry-Heaters-Designing-Building-Living/dp/1603582134/ref=asc_df_1603582134/?tag=hyprod-20&amp;amp;linkCode=df0&amp;amp;hvadid=312128022127&amp;amp;hvpos=&amp;amp;hvnetw=g&amp;amp;hvrand=10995947443356282066&amp;amp;hvpone=&amp;amp;hvptwo=&amp;amp;hvqmt=&amp;amp;hvdev=m&amp;amp;hvdvcmdl=&amp;amp;hvlocint=&amp;amp;hvlocphy=1014524&amp;amp;hvtargid=pla-624335379727&amp;amp;psc=1&quot;&gt;Masonry Heaters: Designing, Building, and Living with a Piece of the Sun&lt;/a&gt; and think they’re the best.&lt;/p&gt;

&lt;p&gt;I could go on and on, and will when I can pull the book notes (and photos) assembled soon. Here’s a few pictures:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;heater-01.jpg&quot; alt=&quot;heater&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In the meantime, I’ve checked in on local masonry heater companies, and one could get a small/basic heater installed for &amp;lt;$10k right now. (&lt;a href=&quot;http://www.greenstoneheat.com/&quot;&gt;http://www.greenstoneheat.com/&lt;/a&gt; has offices in Denver, they’ve been great in email back-and-forth)&lt;/p&gt;

&lt;p&gt;Pick something you care about, and masonry heaters make more of it in the world.&lt;/p&gt;

&lt;p&gt;They are: environmentally healthy, cheap, quiet to build and install, long-lasting, low-maintenance, community-encouraging, high-availability, high-resiliency pleasant heat for life, even if the power goes out and the sun goes in.&lt;/p&gt;

&lt;p&gt;Rammed Earth walls + good use of sun and shade and well-insulating windows + masonry heaters = an absolutely lovely place to live.&lt;/p&gt;

&lt;h2 id=&quot;plants--food&quot;&gt;Plants &amp;amp; Food&lt;/h2&gt;

&lt;p&gt;I love plants. So much. I love so much of the metaphor of gardening, and patient, long-term investment in slowly improving a specific place.&lt;/p&gt;

&lt;p&gt;My wife and I are &lt;em&gt;mostly&lt;/em&gt; vegetarian, and eat lots of greens and veggies. I&lt;/p&gt;

&lt;p&gt;Watch the documentary &lt;a href=&quot;https://www.youtube.com/watch?v=bxABOiay6oA&quot;&gt;Fantastic Fungi&lt;/a&gt;, and read &lt;a href=&quot;https://www.amazon.com/Hidden-Life-Trees-Communicate_Discoveries-Secret/dp/1771642483&quot;&gt;The Hidden Life of Trees&lt;/a&gt;. I could list another ten books, a few more documentaries. I’m not &lt;em&gt;skilled&lt;/em&gt; with plants at all, yet, but that will change.&lt;/p&gt;

&lt;p&gt;Plants and food grow really well, and are made more resistant to dryness, pests/insects, etc.&lt;/p&gt;

&lt;h2 id=&quot;improved-depth-of-high-quality-soil-in-my-yard&quot;&gt;“Improved depth of high-quality soil in my yard”&lt;/h2&gt;

&lt;p&gt;Our lot is 6,881 sq ft, or 639 sq. meters. Obviously not all meters are the same, or equally valuable, but overall I’d rather decrease the amount of my lot covered with concrete and asphalt, and increase the amount of my lot covered with mulch, grass, plants, shrubs, small trees, and large trees. When we moved in, a lot of the lot was bare dirt, and a lot of it had asphalt or concrete on it.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;This article about soil (&lt;a href=&quot;https://t.co/Rs2FW2BeMB&quot;&gt;https://t.co/Rs2FW2BeMB&lt;/a&gt;) touches on issues of *great* significance. Composting, recycling, &amp;quot;regenerative ag&amp;quot;, increasing depth and square meters of &amp;quot;healthy soil&amp;quot; ties directly to capital-w Wellbeing.&lt;/p&gt;&amp;mdash; Josh (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/1524484990280650752?ref_src=twsrc%5Etfw&quot;&gt;May 11, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;It’s easier to point all this stuff out than write thousands of words about.&lt;/p&gt;

&lt;h2 id=&quot;home-composting-all-recyclables&quot;&gt;Home Composting All Recyclables&lt;/h2&gt;

&lt;p&gt;A friend nerd-sniped me with &lt;a href=&quot;https://www.amazon.com/gp/product/0964425882/ref=ox_sc_act_title_1?smid=ATVPDKIKX0DER&amp;amp;psc=1&quot;&gt;this book&lt;/a&gt; and I cannot unread it. Solves a few interesting problems, but critically, &lt;em&gt;generates enough compost to fertilize quite a lot of soil&lt;/em&gt; which can then support quite a bit of plant life. Have you heard anything about fertilizer prices recently?&lt;/p&gt;

&lt;p&gt;Also, near-endless convenience upgrades. Least-smelly option of all food waste disposal options I’ve ever used. Our trash containers are now racoon-proof.&lt;/p&gt;

&lt;p&gt;Also, naturally supports above goals.&lt;/p&gt;

&lt;h3 id=&quot;other-goals&quot;&gt;Other goals&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;I’m trying to pilot what a personal back-yard version of &lt;a href=&quot;https://www.sightline.org/2017/03/20/how-seattle-killed-micro-housing-again/&quot;&gt;micro housing&lt;/a&gt; could be like.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:book-recommendations&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I care a lot about having well-informed thinking. I also dislike overly-analytical approaches, so… i’m trying to find a good line for explaining myself: a pattern language, poodr, owd, hpmor, wtc. &lt;a href=&quot;#fnref:book-recommendations&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:in-feb-2022&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I wrote this line (and much of this page) back in feb 2022. &lt;a href=&quot;#fnref:in-feb-2022&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Bootstrapping streetcars in Golden</title>
   <link href="https://josh.works/street-cars-in-golden"/>
   <updated>2022-03-10T13:00:00+00:00</updated>
   <id>https://josh.works/rails-in-golden</id>
   <content type="html">&lt;p&gt;I was describing this two or three stage plan to a friend the other day. They &lt;em&gt;almost&lt;/em&gt; understood it, but since they don’t live in Golden, and have not spent a lot of their life nerding out on “urban mobility infrastructure”, they didn’t quite get it.&lt;/p&gt;

&lt;p&gt;Since I’m trying to &lt;a href=&quot;/write-it-now&quot;&gt;write things quickly, or at least now&lt;/a&gt;, I’m doing a quick little visual of what I wanted to propose to the involved parties.&lt;/p&gt;

&lt;h2 id=&quot;the-involved-parties&quot;&gt;The involved parties&lt;/h2&gt;

&lt;p&gt;I think there are three institutions that, if working together in interesting ways, could build a very interesting piece of infrastructure:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;School of Mines&lt;/li&gt;
  &lt;li&gt;CoorsTek&lt;/li&gt;
  &lt;li&gt;Coors&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;School of Mines could create a streetcar/urban-mobility-infrastructure addition to their curriculum, and start getting students involved with (and, as soon as possible, in charge of) planning, designing, building, and operating a growing streetcar network.&lt;/p&gt;

&lt;p&gt;Some more context &lt;a href=&quot;/about#trains--streetcars-1920-era&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;some-of-the-second-order-effects-of-a-streetcar-network&quot;&gt;Some of the second-order effects of a streetcar network&lt;/h2&gt;

&lt;p&gt;With streetcars starting to fill the city, Golden could relax their minimum housing consumption standards while also expecting a decrease in inter-city vehicle miles travelled, AND while seeing an &lt;em&gt;increase&lt;/em&gt; in inter-city trips.&lt;/p&gt;

&lt;p&gt;I’ll make that a graph at some point.&lt;/p&gt;

&lt;p&gt;Read &lt;a href=&quot;https://www.sightline.org/2016/09/06/how-seattle-killed-micro-housing/&quot;&gt;How Seattle Killed Micro-Housing&lt;/a&gt;, and imagine how well streetcars in Golden would pair with micro housing.&lt;/p&gt;

&lt;p&gt;It’s impossible to say that housing would remain unaffordable. It would let the children of long-time Golden residents live in Golden, etc.&lt;/p&gt;

&lt;h2 id=&quot;step-0&quot;&gt;Step 0&lt;/h2&gt;

&lt;p&gt;First, emotionally, I think it helps to recognize that Denver (and Golden) used to have TONS of streetcar and rail travel. For example:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://denverurbanism.com/2017/08/the-history-of-denvers-streetcars-and-their-routes.html&quot;&gt;The History of Denver’s Streetcars and Their Routes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://dugis.maps.arcgis.com/apps/MapSeries/index.html?appid=00a2d498a2ac4c58ad140ac306110213&quot;&gt;Denver’s Streetcar Legacy and its Role in Neighborhood Walkability&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s a picture of a streetcar in Denver about 100 years ago, from &lt;a href=&quot;https://denverurbanism.com/2017/08/the-history-of-denvers-streetcars-and-their-routes.html&quot;&gt;this excellent article about The History of Denver’s Streetcars and Their Routes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;denver-streetcar.jpg&quot; alt=&quot;streetcar&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;step-1&quot;&gt;Step 1&lt;/h2&gt;

&lt;p&gt;The steps. None of these are small steps, but are within the capacities of one or two people to manage each of the primary constituent steps, and the on-the-ground-help of no more than a dozen workers at a single time.&lt;/p&gt;

&lt;p&gt;Here’s what &lt;em&gt;could&lt;/em&gt; be the first streetcar line, connecting an existing heavy rail line&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;new-streetcar-line.jpg&quot; alt=&quot;first lines&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here’s another possible vision, which would get some streetcar running &lt;em&gt;back&lt;/em&gt; through downtown:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;another-idea.jpg&quot; alt=&quot;option 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;sub-tasks:&lt;/p&gt;

&lt;h3 id=&quot;start-pricingbuying-narrow-gauge-railway&quot;&gt;start pricing/buying narrow-gauge railway.&lt;/h3&gt;

&lt;p&gt;I have a friend that was the #1 steel-seller in Colorado, he’ll get us where we need to go.&lt;/p&gt;

&lt;p&gt;Narrow-gauge, because (from &lt;a href=&quot;https://en.wikipedia.org/wiki/Narrow-gauge_railway&quot;&gt;wikipedia&lt;/a&gt;):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Since narrow-gauge railways are usually built with tighter curves, smaller structure gauges, and lighter rails, they can be less costly to build, equip, and operate than standard- or broad-gauge railways (particularly in mountainous or difficult terrain).[1] Lower-cost narrow-gauge railways are often used in mountainous terrain, where engineering savings can be substantial. Lower-cost narrow-gauge railways are often built to serve industries as well as sparsely populated communities where the traffic potential would not justify the cost of a standard- or broad-gauge line. Narrow-gauge railways have specialised use in mines and other environments where a small structure gauge necessitates a small loading gauge.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;while the steel is shipping, start building the trolleys that would be used to move materials and supplies and equipment along the line as it’s being built. They could be fairly cheap, but again, this is about rapid iteration and experimentation.&lt;/p&gt;

&lt;h3 id=&quot;obtain-that-facility-at-809-east-st-for-school-of-mines&quot;&gt;Obtain that facility at 809 East St for School of Mines&lt;/h3&gt;

&lt;p&gt;rumor has it the owner wants to get rid of it/might be declaring bankruptcy already, because Coors doesn’t need the railcar maintenance facility anymore. Here’s what exists there right now:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;staging-facility.jpg&quot; alt=&quot;staging-facility&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Start getting equipment and letting interested people self-select into the project.&lt;/p&gt;

&lt;h2 id=&quot;step-2&quot;&gt;Step 2&lt;/h2&gt;

&lt;p&gt;Now to start getting the street car network sorta “mixed into” school of mines space:&lt;/p&gt;

&lt;p&gt;Here’s some ideas of where some new lines might be added:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;possible-new-lines.jpg&quot; alt=&quot;new lines&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;step-3&quot;&gt;Step 3&lt;/h2&gt;

&lt;p&gt;If step 2 looked impossibly huge to you, and like 10x what seems reasonable, I get it. Lets actually dramatically shrink step 2, and instead get Mines to treat it’s entire campus as a bit of a laboratory for this streetcar thing, learning how to operate it, put them up for the night, get them ready for the day, run them, etc.&lt;/p&gt;

&lt;p&gt;Maybe Mines will figure out how to make autonomous streetcars, similar to the autonomous busses it drives around. I bet someone there could.&lt;/p&gt;

&lt;p&gt;Here’s a much smaller version of building some rail. Obviously these are just ideas, but hopefully you can start seeing how this could lead to a growing body of knowledge and understanding.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;step-3.jpg&quot; alt=&quot;small lines&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;how-to-fund-it&quot;&gt;How to fund it&lt;/h1&gt;

&lt;p&gt;For starters, the first test line for school of mines students could probably be had quite cheap - school of mines students will provide much of the design and experimentation and labor, as they build out their streetcar-building curriculum.&lt;/p&gt;

&lt;h2 id=&quot;what-to-buy&quot;&gt;What to buy&lt;/h2&gt;

&lt;p&gt;Off the top of the head:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;struts, electrical, concrete, trollies, repair equipment infrastructure, powerhouse buildings, PedX materials, paints, etc&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s not cheap, but I think one could arrange to purchase the raw materials, turn them over to School of Mines students, support them as much as possible from Coors’ staff (to teach all sorts of stuff), and, in letting the students plan it out and execute it, it would be possible to end up with a functioning screetcar line.&lt;/p&gt;

&lt;p&gt;For starters, steel railway. Steel isn’t &lt;em&gt;insanely&lt;/em&gt; expensive. I asked a friend who used to do commercial steel sales in Colorado - he would sell the rolls of steel that would be fabricated/worked into other forms, but he’s got lots of good information. Copy/pasting from some emails:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Looks like ASCE (American Society of Civil Engineers) recommend a specific rail for light rail applications after a quick search. The steel is a 900A/1100 steel grade.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There’s lots of different groups that purport to sell this kind of rail. Examples:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.alibaba.com/product-detail/Steel-Rail-Sae1045-Rail-Manufacturers-9KG_1600292274827.html?spm=a2700.7724857.normal_offer.d_image.4ae93eccfq9JeC&amp;amp;s=p&quot;&gt;9KG (ASCE 18LB) Hot Rolled Steel Track System Crane Steel Rail (Alibaba)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://imristeel.com/product/american-standard-asce-75-900a-110-steel-rail-for-railway-track-material&quot;&gt;American Standard ASCE 75 900A/110 steel rail for railway track material&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.railwayrail.com/products/asce75-steel-rail/&quot;&gt;ASCE75 steel rail (Shanghai Yueqi Industrial Co)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One could get the steel and start laying it, while a different group works on the trolleys or the cars that will go on top.&lt;/p&gt;

&lt;p&gt;I feel like building it as cheaply as possible, with a goal of maximizing speed-of-learning, would be the prudent option.&lt;/p&gt;

&lt;h2 id=&quot;streetcar-inspiration&quot;&gt;Streetcar Inspiration&lt;/h2&gt;

&lt;p&gt;Here’s some inspiration.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Romanian Mocănița railways on 735mm gauge running Ford Transit (?) minivans are cool but here&amp;#39;s a Myanmar 610mm gauge mining rail running a converted 1955 Hino diesel buss. &lt;a href=&quot;https://twitter.com/hashtag/TrainTwitter?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#TrainTwitter&lt;/a&gt; &lt;a href=&quot;https://t.co/AaeaFW9Z70&quot;&gt;https://t.co/AaeaFW9Z70&lt;/a&gt; &lt;a href=&quot;https://t.co/XYmkFCK91y&quot;&gt;https://t.co/XYmkFCK91y&lt;/a&gt;&lt;/p&gt;&amp;mdash; Wrath Of Gnon (@wrathofgnon) &lt;a href=&quot;https://twitter.com/wrathofgnon/status/1504422997263749123?ref_src=twsrc%5Etfw&quot;&gt;March 17, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I finally downloaded TikTok specifically so I could share this &lt;a href=&quot;https://t.co/wHZGorDwdp&quot;&gt;pic.twitter.com/wHZGorDwdp&lt;/a&gt;&lt;/p&gt;&amp;mdash; Jane Lyons (@janeplyons) &lt;a href=&quot;https://twitter.com/janeplyons/status/1502258843769876481?ref_src=twsrc%5Etfw&quot;&gt;March 11, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;Like many things, it’s best to click around and load your mind up on examples of this kind of thing done well, and how streetcars might interact with their environment (and vice versa).&lt;/p&gt;

&lt;p&gt;For example, because of how accessible streetcars make distances previously considered far away, a certain style of human relationships tend to spring up adjacent to the streetcar line.&lt;/p&gt;

&lt;p&gt;These relationships tend to result in a built environment that makes a more ‘intensive’ use of the land.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;The I Am A Mayor Who Is Serious About Reducing My Town&amp;#39;s Dependence on Fossil Fuels Starter Pack. Inquire within for more details. &lt;a href=&quot;https://t.co/MaQTSdkmTp&quot;&gt;pic.twitter.com/MaQTSdkmTp&lt;/a&gt;&lt;/p&gt;&amp;mdash; Wrath Of Gnon (@wrathofgnon) &lt;a href=&quot;https://twitter.com/wrathofgnon/status/1503016316642689026?ref_src=twsrc%5Etfw&quot;&gt;March 13, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Andy Gammon&amp;#39;s view of Lewe&amp;#39;s Priory in 1520. Even if you don&amp;#39;t build the priory itself it would make a beautiful starting point for a human scaled no-car settlement for a hundred families of craftsmen, food producers and teleworkers. With ample wifi. &lt;a href=&quot;https://t.co/pU9qvTRaKV&quot;&gt;pic.twitter.com/pU9qvTRaKV&lt;/a&gt;&lt;/p&gt;&amp;mdash; Wrath Of Gnon (@wrathofgnon) &lt;a href=&quot;https://twitter.com/wrathofgnon/status/1503588077213675522?ref_src=twsrc%5Etfw&quot;&gt;March 15, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;h1 id=&quot;questions&quot;&gt;Questions&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;what is the correct increment/size of rail line one buys? I imagine it’s a certain quantity of steel in a given &lt;a href=&quot;https://en.wikipedia.org/wiki/Narrow-gauge_railway&quot;&gt;track gauge&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;What is the equipment required to install narrow-gauge railway&lt;/li&gt;
  &lt;li&gt;to avoid having to pre-commit to where stations will be, we make sure it’s easy to get on and off the rail even from just next to it, with no station, as long as the streetcar is stopped.&lt;/li&gt;
  &lt;li&gt;What about the effect of removing lanes (or complete streets) from free, fast-speed through-traffic? &lt;a href=&quot;https://www.instagram.com/p/Ca21ejRu8XR/?utm_source=ig_web_copy_link&quot;&gt;It’s a good thing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;next-steps&quot;&gt;Next Steps&lt;/h1&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Submit this project for 
&lt;a href=&quot;https://eds.mines.edu/project-sponsorship/&quot;&gt;Capstone (Senior) Design Engineering project&lt;/a&gt; at Mines&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Fixing Ford and Washington</title>
   <link href="https://josh.works/fix-ford-and-washington-in-golden"/>
   <updated>2022-03-09T13:00:00+00:00</updated>
   <id>https://josh.works/ford-washington-fix</id>
   <content type="html">&lt;p&gt;Do all of these, in the right order/way/buy-in. &lt;em&gt;btw, i’m pretending it’s easy. it’s not trivial, but it is doable&lt;/em&gt;:&lt;/p&gt;

&lt;h2 id=&quot;step-1-install-car-friendly-roundabouts-targeting-a-20-mph-throughput-speed-throughout-the-city-and-eliminate-all-stopsigns-and-stoplights&quot;&gt;Step 1: Install car-friendly roundabouts targeting a ~20 mph throughput speed throughout the city &lt;em&gt;and eliminate all stopsigns and stoplights&lt;/em&gt;&lt;/h2&gt;

&lt;p&gt;Please see &lt;a href=&quot;/about-roundabouts&quot;&gt;about roundabouts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It might not be possible to eliminate &lt;em&gt;every&lt;/em&gt; stop sign and light, but I think a 90% reduction is very reasonable.&lt;/p&gt;

&lt;p&gt;You’ll know it’s working when vehicles, with very minimal signage, comfortably and casually move through the city at a speed of about about 20 miles per hour, no matter where they’re starting and finishing their journey.&lt;/p&gt;

&lt;p&gt;Critically, the turns/roundabouts need to function adequately in the following ways:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;automobile drivers making left and right turns&lt;/li&gt;
  &lt;li&gt;automobile drivers going straight through the intersection&lt;/li&gt;
  &lt;li&gt;bicyclists making turns&lt;/li&gt;
  &lt;li&gt;bicyclists going straight&lt;/li&gt;
  &lt;li&gt;one should never have to stop completely&lt;/li&gt;
  &lt;li&gt;at night&lt;/li&gt;
  &lt;li&gt;in rush hour&lt;/li&gt;
  &lt;li&gt;in rain/heavy rain/snow/heavy snow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the complete guide to roundabouts. It’s from the Netherlands, who have refined mobility networks:&lt;/p&gt;

&lt;h2 id=&quot;step-2-increase-friction-to-drivers-trying-to-cut-through-golden&quot;&gt;Step 2: increase friction to drivers trying to cut through Golden&lt;/h2&gt;

&lt;p&gt;Here’s how google maps “views” the primary roads through some of Golden:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;ford-and-related-roads.jpg&quot; alt=&quot;ford and related roads&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And here’s Ford, which you can see very clearly is also many other &lt;em&gt;big&lt;/em&gt; roads:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;rest-of-ford.jpg&quot; alt=&quot;rest of ford&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;step-4-fix-the-average-throughput-problem-on-rt-6&quot;&gt;Step 4: Fix the average throughput problem on rt 6&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Block off Washington over the bridge and through downtown, completely. (please see below “after” )&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it!&lt;/p&gt;

&lt;p&gt;Golden before:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;before.jpg&quot; alt=&quot;before&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Golden after:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;after.jpg&quot; alt=&quot;after&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The green line would be made easy for cars to move along.&lt;/p&gt;

&lt;p&gt;The yellow lines would indicate where “people first” road design would be used, ultimately, though it’ll take a variety of treatments to get it all safe/pleasant/usable in all conditions, but at minimum all intersections would be &lt;a href=&quot;/about-roundabouts&quot;&gt;roundabouts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It’s not that big of a change, to the cars. This won’t fix all the bad traffic, but it will help.&lt;/p&gt;

&lt;p&gt;Critically, if you can naturally keep cars (and other vehicles) moving in a close-to-free-flow way, now you can loop streetcars back into the picture, because they can keep up with traffic and such&lt;/p&gt;

&lt;h2 id=&quot;resources-worth-reading&quot;&gt;Resources worth reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=l2_yNrP0hCY&quot;&gt;The Forgotten Story of Harbor Drive: Portland’s Demolished Freeway (Peter Dibble)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/about-roundabouts&quot;&gt;About Roundabouts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>A New Old Financial Product</title>
   <link href="https://josh.works/new-old-financial-product"/>
   <updated>2022-03-06T13:00:00+00:00</updated>
   <id>https://josh.works/a-new-old-financial-product</id>
   <content type="html">&lt;p&gt;I’m going to weave together talk of land value, and financing, and some of the primitives&lt;sup id=&quot;fnref:primitive&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:primitive&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; around financial products.&lt;/p&gt;

&lt;p&gt;How much would you pay for a box that lives in your mailbox and delivers $1000 on the first of every month?&lt;/p&gt;

&lt;p&gt;Would you pay at least $5000, if you felt &lt;em&gt;really&lt;/em&gt; confident that it worked, as expected, as advertised?&lt;/p&gt;

&lt;p&gt;If so, you understand &lt;em&gt;amortized earnings&lt;/em&gt;, and something called their “present value”.&lt;/p&gt;

&lt;p&gt;Here’s the talk abstract: &lt;a href=&quot;/railsconf-cfp-draft-outline&quot;&gt;RailsConf CFP Draft Notes&lt;/a&gt;&lt;/p&gt;

&lt;!--more--&gt;
&lt;p&gt;Here’s some footnote demos. [^like-this]&lt;/p&gt;

&lt;p&gt;Multiline footnote: &lt;sup id=&quot;fnref:multi-line&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:multi-line&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;There’s many objections or questions that you could raise, right now, as you are reading these words. Possibly on your phone&lt;sup id=&quot;fnref:i-would-never&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:i-would-never&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h3 id=&quot;useful-resources&quot;&gt;Useful Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h4 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h4&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:primitive&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’ll be using in the sense of ‘constituent, base components’ rather than ‘backwards or colonial’ sense. &lt;a href=&quot;#fnref:primitive&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:multi-line&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This is a multi-line footnote. I can have a long single line of text cross the page and it still renders correctly. I need to hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[tab][tab]&lt;/code&gt; when starting another line.&lt;/p&gt;
      &lt;blockquote&gt;
        &lt;p&gt;feel free to include a quote!&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;pizza_status: :not_enough&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;      &lt;/div&gt;
      &lt;p&gt;It can include all sorts of formatting!
And images!
&lt;img src=&quot;/images_2020/1922-zoning-plan.jpg&quot; alt=&quot;an image&quot; /&gt; &lt;a href=&quot;#fnref:multi-line&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:i-would-never&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I would never, ever, admit to using the bathroom and browsing my phone, saying “yeah, I’ll come back to that” and never do. &lt;a href=&quot;#fnref:i-would-never&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>About Roundabouts</title>
   <link href="https://josh.works/about-roundabouts"/>
   <updated>2022-03-05T13:00:00+00:00</updated>
   <id>https://josh.works/about-roundabouts</id>
   <content type="html">&lt;p&gt;&lt;em&gt;I’m desperately trying to work through a giant back-log of writings. Please see &lt;a href=&quot;/write-it-now&quot;&gt;write it now&lt;/a&gt; for more. I’m spending only a few minutes on this, forgive my errors.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Of late, I’ve had a &lt;em&gt;lot&lt;/em&gt; of conversations about roundabouts. I’m basically trying to explain the ways that a mobility network could be much improved, in terms of how well it does it’s job of providing various place-connecting services.&lt;/p&gt;

&lt;p&gt;In some cases, I’m learning interesting things about them (or news about how they’re interacting with the world today, in March 2022.)&lt;/p&gt;

&lt;h2 id=&quot;what-i-think-should-be-done-from-an-ecosystem-perspective&quot;&gt;What I think should be done, from an “ecosystem” perspective&lt;/h2&gt;

&lt;p&gt;Aim to replace stop signs and traffic lights with traffic circles. This reduces the rushing and hard acceleration stuff that’s common with stop lights and the vehicle dynamics around them.&lt;/p&gt;

&lt;p&gt;Aim to deliver a “consistent experience” for drivers navigating around Golden. A more-or-less 20-mph drive, once you’re in your car, to a near-by highway&lt;sup id=&quot;fnref:travel-time&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:travel-time&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Robert Moses tried to build highways from everywhere to everywhere. He was right to pursue &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convenient travel&lt;/code&gt;, he just didn’t have a good grasp of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for whom&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We’re so, so far from this reality right now.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;But Josh the highways are not perfect either…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You’re right! I’ve got thoughts on fixing the highway, but might as well do this one step at a time. When there is congestion (and oh, there is congestion) roundabouts are not at fault. Roundabouts are great solutions to part of this complicated puzzle we’ve got here.&lt;/p&gt;

&lt;p&gt;I’ll talk about congestion at some point. Read Donald Shoup’s &lt;a href=&quot;https://www.amazon.com/High-Cost-Parking-Updated-Edition/dp/193236496X/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1332084228&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=markeurban-20&amp;amp;linkId=65aeac5942c99b794876bb2d2dc32bb0&quot;&gt;The High Cost of Free Parking&lt;/a&gt; until then.&lt;/p&gt;

&lt;h2 id=&quot;news-and-articles&quot;&gt;News and articles&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nytimes.com/2021/11/20/climate/roundabouts-climate-emissions-driving.html&quot;&gt;These Americans Are Just Going Around in Circles. It Helps the Climate. An Indiana city has the most roundabouts in the country. They’ve saved lives and reduced injuries from crashes — and lowered carbon emissions.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above NYT article. This is how I read the occasional NYT article:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;curl -L https://www.nytimes.com/2021/11/20/climate/roundabouts-climate-emissions-driving.html -o nyt.html 
open nyt.html
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;my-own-mapping-projects&quot;&gt;My own mapping projects&lt;/h2&gt;

&lt;h3 id=&quot;rails-leaflet-gis-stuff&quot;&gt;Rails, Leaflet, GIS stuff&lt;/h3&gt;

&lt;p&gt;Mostly, these are so I can get kick the tires on some software-related challenge, but here’s a link to an intersection that would be well served by a tiny traffic circle:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://leaflet-gis-rails-practice.herokuapp.com/point_of_interests/4&quot;&gt;https://leaflet-gis-rails-practice.herokuapp.com/point_of_interests/4&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;openstreetmaps-strava-api-polylines&quot;&gt;OpenStreetMaps, Strava API, polylines&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/josh-works/strava_run_polylines_osm/tree/main&quot;&gt;base repository&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh-strava-heatmap.herokuapp.com/&quot;&gt;live page on heroku&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;examples-of-good-and-bad-traffic-circles&quot;&gt;Examples of “good” and “bad” traffic circles&lt;/h2&gt;

&lt;p&gt;There are MANY kinds of traffic circles, they have tradeoffs in size, cost, speed, experience, etc.&lt;/p&gt;

&lt;p&gt;There’s also a lot about traffic circles that isn’t really “the job” of the traffic circle, like “how fast is the vehicle going when it approaches a traffic circle”. If a car is going “too fast”, the traffic circle might not be great, so the stuff that kinda… “connects” traffic circles to each other (and to other non-traffic-circle-things) matters.&lt;/p&gt;

&lt;h3 id=&quot;examples-of-some-nice-traffic-circles&quot;&gt;Examples of some nice traffic circles&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;I’ll get pictures at some point&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;examples-of-not-nice-traffic-circles&quot;&gt;examples of not-nice traffic circles&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;i’ll get pictures at some point&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;traffic-circles-can-be-very-low-key-or-intense&quot;&gt;Traffic circles can be very low-key, or intense&lt;/h2&gt;

&lt;h3 id=&quot;low&quot;&gt;low&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;as simple as a tire on the ground, or a rock, or a tree, in the middle of a small intersection&lt;/li&gt;
  &lt;li&gt;https://www.strava.com/activities/6759764602&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;medium&quot;&gt;Medium&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;a “square” of at least a few feet, or maybe a casual larger circle&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;high&quot;&gt;High&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;something intense, multiple lanes for vehicle traffic. The throughput-per-minute probably isn’t very good, the rest of the network is strained, it’s a bandaid.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anything with two+ lanes counts as intense, IMO. I don’t really like “intense” traffic circles that much, or, at least, you and I probably agree about things that are not great about them:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img_22/roundabout.jpg&quot; alt=&quot;too big&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;acoustic-benefits&quot;&gt;Acoustic benefits&lt;/h2&gt;

&lt;p&gt;Traffic circles, embedded in healthy networks, don’t require much breaking or accelerating, and they do it in a “gentle” way. Much less vehicle noise, because stop lights and stop signs invite a LOT of aggressive acceleration.&lt;/p&gt;

&lt;p&gt;Anyone that lives within a few hundred yards of that intersection is affected by it. Anyone who lives near ANY intersection like this, it invites constant noise, and when the noise isn’t constant, it’s punctuated by a distinctive sound of vehicle acceleration. Again, personally, might not be you in your vehicle, but someone with a loud car is accelerating hard out of that intersection, it’s ever-present.&lt;/p&gt;

&lt;p&gt;The volume and interruption far exceeds any noise coming from people. (Sound system, crowds) and I wish I could petition for “noise treatment” around roads that caused excessive DB readings alongside the road.&lt;/p&gt;

&lt;h2 id=&quot;safety-and-urgency-and-rushing&quot;&gt;Safety and urgency and rushing&lt;/h2&gt;

&lt;p&gt;I &lt;em&gt;think&lt;/em&gt; that when people look at these pictures, they see what’s in the screenshot. Concrete, lots of space, lots of clutter with this “traffic circle” idea.&lt;/p&gt;

&lt;p&gt;What I’d rather you think about is what it is like using this intersection in the following permutations. There are at least nine:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;At all times of day&lt;/li&gt;
  &lt;li&gt;In the normal varieties of local weather&lt;/li&gt;
  &lt;li&gt;In the normal patterns of seasonal use&lt;/li&gt;
  &lt;li&gt;with a normal distribution of ages, abilities, incomes, etc&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example, each of these red lines indicates a turning direction someone has to do that is at &lt;em&gt;least&lt;/em&gt; occasionally dangerous, given sight-lines and traffic speeds. The green boxes represent where we could consider adding traffic circles:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;rough-intersections.jpg&quot; alt=&quot;a picture of dangerous spots of this spot of road&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Some of these ‘simpler’ intersections could be &lt;em&gt;mostly&lt;/em&gt; ‘fixed’ with a small-to-medium temporary/home-made-but-beautiful traffic circle.&lt;/p&gt;

&lt;p&gt;Here’s a system-wide example of what the “feel” of a system-wide rollout of traffic circles could be. Remember, aiming for really fast, consistent, smooth travel-times, for everyone. Never coming to a full stop, never feeling like they have to rush&lt;sup id=&quot;fnref:stop-signs-traffic-lights&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:stop-signs-traffic-lights&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;just-some-ideas.jpg&quot; alt=&quot;better&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Well-designed and well-varied traffic circles (and things around traffic circles) make for pleasant and smooth driving for drivers. It’s really important to hear, clearly, that &lt;em&gt;this is an improvement for drivers!&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;tactical-urbanism-adjacent-conceptsnews&quot;&gt;Tactical Urbanism Adjacent Concepts/news&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://mobile.twitter.com/sbrix/status/1185209075170267136&quot;&gt;https://mobile.twitter.com/sbrix/status/1185209075170267136&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.saferoutespartnership.org/blog/neighbors-south-tucson-transform-their-school-crossing-tactical-urbanism-traffic-circle&quot;&gt;https://www.saferoutespartnership.org/blog/neighbors-south-tucson-transform-their-school-crossing-tactical-urbanism-traffic-circle&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://issuu.com/streetplanscollaborative/docs/tu-guide_to_materials_and_design_v1/112&quot;&gt;https://issuu.com/streetplanscollaborative/docs/tu-guide_to_materials_and_design_v1/112&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;invisible-women-inspired-data-collection&quot;&gt;invisible-women-inspired data collection&lt;/h2&gt;

&lt;p&gt;If ever there was a canon for a modern, earnest-effort desire to participate well in the conversation, I feel like &lt;a href=&quot;https://www.amazon.com/Invisible-Women-Data-World-Designed/dp/1419729071&quot;&gt;Invisible Women: Data Bias in a World Designed for Men&lt;/a&gt; is a good choice.&lt;/p&gt;

&lt;p&gt;I’m happy to hear your comments and criticisms, and if you tell me you’ve read the book or something like that, I’ll be thrilled.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://numina.co/&quot;&gt;Numina: Know your streets&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://metroview.strava.com/map/demo&quot;&gt;Strava Metro data (this map is of Denver AND GOLDEN!)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.incitu.us/&quot;&gt;in-citu: transparency and intelligent planning&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design?from_search=true&quot;&gt;Order Without Design: How Markets Shape Cities&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;faqs&quot;&gt;FAQs&lt;/h2&gt;

&lt;h3 id=&quot;what-about-commercial-businesses-serving-downtown-businesses&quot;&gt;What about commercial businesses serving downtown businesses?&lt;/h3&gt;

&lt;p&gt;Lots of good solutions. I don’t really think it’s necessary to have a semi truck driving down washington, and guess what? The semi truck drivers hate being there too!&lt;/p&gt;

&lt;p&gt;I bet we could hang out, catch the semi truck drivers as they come in, and find good ways to help them get where they need to for deliveries, in a quick and easy way. Eventually figure out how to “publish” it to other future truckers. Also, it’s hard to build a pleasant city exclusively around the needs of semitrucks, so lets wait to hear from them before making a big deal out of this.&lt;/p&gt;

&lt;h3 id=&quot;theres-this-roundabout-near-here-that-i-dont-like&quot;&gt;There’s this roundabout near here that I don’t like…&lt;/h3&gt;

&lt;p&gt;That’s not a question, but I agree. I’m not sure exactly which one you’re talking about, but there are a few around here that are not great. I think it’s tricky to have two-lane roundabouts, and in general, the VAST majority would look way more low-key, like a sign in the middle of the intersection.&lt;/p&gt;

&lt;h3 id=&quot;but-what-about-my-neighborhood&quot;&gt;But what about [my neighborhood]&lt;/h3&gt;

&lt;p&gt;Good question. I live in “north Golden”, so here’s the direction I’d like my ‘hood’ to go:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;eligible-intersections-for-roundabouts.jpg&quot; alt=&quot;safer&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’ve lived here for a year, these roads are VERY DANGEROUS for lots of the people who use them, in many very normal conditions during the year. Roundabouts are what make things safer, smoother, more interesting, more pretty, quieter, calmer.&lt;/p&gt;

&lt;h3 id=&quot;but-what-about-other-thing&quot;&gt;But what about [other thing]&lt;/h3&gt;

&lt;p&gt;Like I’ve said before, roundabouts are just one piece of the puzzle.&lt;/p&gt;

&lt;h2 id=&quot;more-related-resources&quot;&gt;more related resources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.seattlepi.com/lifestyle/homegarden/article/Ask-Marianne-Boulders-and-tire-tolerant-plants-1067567.php&quot;&gt;Ask Marianne: Boulders and tire-tolerant plants for the traffic circle&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://wrathofgnon.substack.com/p/the-city-as-an-eco-system?utm_source=url&amp;amp;s=r&quot;&gt;The City as an Eco System Or, Nature Loves Edges&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/High-Cost-Parking-Updated-Edition/dp/193236496X/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1332084228&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=markeurban-20&amp;amp;linkId=65aeac5942c99b794876bb2d2dc32bb0&quot;&gt;the high cost of free parking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;in-summary&quot;&gt;In summary&lt;/h2&gt;

&lt;p&gt;Everything is tradeoffs, and when things work well, a thoughtful, well-crafted traffic circle is a great way to solve a real problem, and generally everyone who uses it feels good about it.&lt;/p&gt;

&lt;p&gt;When embedded in a healthy mobility network, a well-designed traffic circle casually allows safe travel in all directions, from all directions, for all participants, in a way that is high-throughput and low-wait-time for all users, in all conditions, at all times of day.&lt;/p&gt;

&lt;p&gt;Safely.&lt;/p&gt;

&lt;p&gt;I believe some of the benefits of traffic circles are illegible, but enough are legible and i’ll bet money that we’ll have a failure to disagree in any way, shape, or form, on traffic circles.&lt;/p&gt;

&lt;p&gt;Email me if you’d like to put that to the test in a public or private way.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:travel-time&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’ve got thoughts on how to calculate trip-time. It’s something like: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;When you say &quot;I need eggs, broccoli, and a bottle of wine&quot;, how long until you&apos;re back with those things?&lt;/code&gt; &lt;a href=&quot;#fnref:travel-time&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:stop-signs-traffic-lights&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This ‘never fully stopping, never rushing’ rule is lovely. &lt;a href=&quot;#fnref:stop-signs-traffic-lights&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Write It Now</title>
   <link href="https://josh.works/write-it-now"/>
   <updated>2021-10-05T13:00:00+00:00</updated>
   <id>https://josh.works/write-it-now</id>
   <content type="html">&lt;h2 id=&quot;the-original-post&quot;&gt;The original post&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;note from October 5, 2021: This was typed up/published in about 20 minutes, took 2x as long as I wish it had. I could make it 10x better with another hour of work, but I only have 20 minutes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’m a fan of “conceptual frameworks”&lt;/p&gt;

&lt;p&gt;This concept has been important to me:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-07-21-write-it-now.jpg&quot; alt=&quot;write-it-now&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’ve referenced it, almost apologetically, in a few other things I’ve written recently.&lt;/p&gt;

&lt;p&gt;Usually I’ve just slapped it into an email or linked from another blog post, as a bit of an “i’m sorry” for how much work I might demand from the reader, or how unpleasant or confusing what I’m writing might be.&lt;/p&gt;

&lt;p&gt;I feel like I often self-censure in an attempt to make something “better” than it is, and in doing so, fall off the back of this curve. (or I let vague concerns about quality/execution/time delay me from writing anything, ever)&lt;/p&gt;

&lt;p&gt;I will reference this page regularly, in some ways to act as a defense against some very obvious criticisms. IMO, I’d rather throw 10 things as the wall quickly in a week, instead of 1 thing every other week.&lt;/p&gt;

&lt;p&gt;If I propose something that sparks “controversy”, however that is defined, I’ll gladly cross that bridge (or burn it, if need be) when I get there.&lt;/p&gt;

&lt;p&gt;If you’re a software developer, and use Github, you are welcome to leave a comment below (the link takes you to a comment on a dedicated Github Issue page: &lt;a href=&quot;https://github.com/josh-works/josh-works.github.io/issues/49&quot;&gt;https://github.com/josh-works/josh-works.github.io/issues/49&lt;/a&gt;), or on any page around here with this link. I added this comments thing only recently, and still have not scripted an API call to auto-generate a new github issue when I write a new post. So… I just don’t bother, at least some of the time.&lt;/p&gt;

&lt;p&gt;Here’s other things I’ve written along this vein:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/limitations-of-my-own-thinking&quot;&gt;My own thinking is severely limited&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity&quot;&gt;Driven by Compression Progress: A Simple Principle Explains Essential Aspects of Subjective Beauty, Novelty, Surprise, Interestingness, Attention, Curiosity, Creativity, Art, Science, Music, Jokes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read around the internet, viewed as permission/empathy:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://blog.torh.net/2022/06/14/writing-is-hard/&quot;&gt;Writing is Hard&lt;/a&gt; &lt;a href=&quot;https://news.ycombinator.com/item?id=31741262&quot;&gt;hacker news thread&lt;/a&gt;&lt;sup id=&quot;fnref:noteworthy&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:noteworthy&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://guzey.com/personal/why-have-a-blog/&quot;&gt;guzey.com/personal/why-have-a-blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;updates-to-this-post&quot;&gt;Updates to this post&lt;/h2&gt;

&lt;h3 id=&quot;2022-06-15&quot;&gt;2022-06-15&lt;/h3&gt;

&lt;p&gt;I periodically re-visit and update things I’ve written in the past. This post is one of them. Sometimes I modify my writing substantially - it’s simply text files in a git repository, therefore all of what you see around here could be considered in some various form of draft.&lt;/p&gt;

&lt;p&gt;I’ve considered adding links to every page on my website that say “click here to see prior versions of this file”. I perceive a feeling of some obligation to the reader to note every time there’s been an edit, or at least &lt;em&gt;some&lt;/em&gt; of the time when I might edit things. But obviously fixing typos doesn’t need to be called out in detail.&lt;/p&gt;

&lt;p&gt;Additionally, it’s sometimes fun to bury hot takes in walls of text. For example, does the following text seem sort of dry, and academic to you? It’s intentional, if it does:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In &lt;a href=&quot;https://www.goodreads.com/book/show/2023854.The_Slaughter_of_Cities&quot;&gt;The Slaughter of Cities&lt;/a&gt;, the author tells a compelling tale of how one ethnic group sucessfully perpetuated ethnic cleansing upon other ethnic groups.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s passive voice, it’s just a link to a goodreads page for a book. It doesn’t sound as provocative as it otherwise could. So if it does/does not get the intended result, one could turn it up or down a bit. For example, how does this phrasing compare?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In &lt;a href=&quot;https://www.fidelitypress.org/book-products/the-slaughter-of-cities&quot;&gt;The Slaughter of Cities: Urban Renewal as Ethnic Cleansing&lt;/a&gt; we read the many ways American urban renewal programs in the 1950s and 60’s were run to create ghettos and perpetuate acts of ethnic cleansing. Those people attacked essentially every non-white ethnic group they encountered, and the relevence of all this is very much in the room with us right now, in most ways that matter.’&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I find writing to be trivially easy, I find writing &lt;em&gt;well&lt;/em&gt;, however defined, to be hard. Does it spark joy? Does it record something in a way that allows someone to save time in the future? A friend recently sent me a whatsapp message that they were googling something and the top google result was an article I wrote, which indeed contained something useful to them &lt;a href=&quot;https://josh-works.medium.com/testing-rake-tasks-in-rails-6573f7185a0a&quot;&gt;Testing Rake Tasks in Rails&lt;/a&gt;. Lots around here is technical, I lean hard on ‘software norms’ for all that I do.&lt;/p&gt;

&lt;h2 id=&quot;jan-2024&quot;&gt;Jan 2024&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://sashachapin.substack.com/p/write-faster-130&quot;&gt;Write Faster (sashachapin.substack.com)&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Humans are naturally sense-making, story-telling creatures. We’re wired to explain ourselves and the universe, to ourselves and to each other. We’re naturally ingenious fabulists, shrewd reporters, idiosyncratic word-painters. Basically all of us have this facility.&lt;/p&gt;

  &lt;p&gt;But this ability disappears when it’s subjected to excessive scrutiny. When we start reflecting at length on what kind of story we should tell, or what kind of writer we should be, we become lost in the sea of data our senses provide us, and lose the brio of playfulness. It’s like how when you think about how you’re walking, you start walking stupid. You’ve just got to trust that you know what you’re doing: that, as a sense-making creature, you will largely make sense.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can also be our own ‘excessive scrutinizers’. Something like this undoubtedly influences those who describe themselves as perfectionistic.&lt;/p&gt;

&lt;p&gt;Something I love hanging out with kids is how easily they embody ‘uninhibited self-expression’. I find it healing and enthusiasm-engendering, because you can take delight in someone else taking delight and interest in their environment, experience, activity.&lt;/p&gt;

&lt;p&gt;I’ve noticed, at times, when I simply would imagine an act of spontaneous self-expression, I would pre-emptively shut it down by imagining either vocalizable reactionary criticism or a non-response, a shun, withdrawal. The topics would span from technical (feeling embarrassed about asking something, admitting that I don’t know/couldn’t figure out something) or casual/mundane. (a comment about something in the environment, etc)&lt;/p&gt;

&lt;p&gt;So, some of the ‘write it now’ energy I propose you/me capture is something that moves towards a healthy form of ‘uninhibited self-expression’.&lt;/p&gt;

&lt;p&gt;Ironically, I can ‘hear’ a criticsm in my mind:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;But doesn’t some of the worst parts of the internet seem to typify ‘uninhibited self-expression’?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think of a quote I’ve heard on the expression of anger. It can be paraphrased as:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Anger is fully ‘valid’, to feel, full stop. Suppressing it, or expecting others to suppress it, is foolish. It’s as natural and healthy as sadness, or joy, or any of the other many things that we feel as people. ‘anger’ becomes a problem if it’s expressed &lt;em&gt;abusively&lt;/em&gt; or harmfully towards others, and even in this case the issue isn’t the anger, it’s the abusive expression of it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Someone who hits when angry doesn’t have an anger problem, they have a hitting/violence problem.&lt;/p&gt;

&lt;p&gt;So, if one person is being cruel to someone else, via ‘uninhibited self-expression’, the problem is not the uninhibited self-expression, it’s the cruelty.&lt;/p&gt;

&lt;p&gt;Here’s the last thing - I think good uninhibited self-expression is best experienced when you know whoever you’re expressing to feels similarly about such things. Someone needs to point towards you something that feels like a steady-enough message of ‘you are fundamentally acceptable to me, as are the ways you move through the world’. This feels like a high bar, but I don’t really think it is that hard to achieve.&lt;/p&gt;

&lt;h2 id=&quot;links-and-additional-reading&quot;&gt;Links and additional reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://herman.bearblog.dev/the-two-kinds-of-writing/&quot;&gt;Two kinds of writing (herman.bearblog.dev)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/jbranchaud/til&quot;&gt;https://github.com/jbranchaud/til&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sashachapin.substack.com/p/write-faster-130&quot;&gt;Write Faster (sashachapin.substack.com)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:noteworthy&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;There were some very lovely comments in the hackernews thread. Here’s a portion of &lt;a href=&quot;https://news.ycombinator.com/item?id=31760857&quot;&gt;this comment&lt;/a&gt;:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;It’s hard because it probably won’t change the world, but it becomes much harder when shouting.&lt;/p&gt;

        &lt;p&gt;It’s entirely OK to sit and write without fanfare, we’re not wizards or witches any longer, just plain people with the same plain obligation towards the mind as towards the body: tend, feed, and regularly empty out.&lt;/p&gt;

        &lt;p&gt;If today you really gotta go write, go ahead, knock yourself out.&lt;/p&gt;

        &lt;p&gt;If tomorrow you just scribble in the margins of empty pages but nothing comes, have a bath or a nap or both, and sit again the day after.&lt;/p&gt;

        &lt;p&gt;I also find it very helpful to remember that I’m not addressing others when writing, I’m not in a possibly empty auditorium talking into the void, instead I’m reaching across time and continue a discussion I started with myself earlier, and may pick up again later.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:noteworthy&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Collateralizing Mortgages and Loans With the Present Value of Rent Flow</title>
   <link href="https://josh.works/collateralizing-financial-products-with-present-value-of-rent-flow"/>
   <updated>2021-10-02T13:00:00+00:00</updated>
   <id>https://josh.works/present-value-of-flow-of-rents-as-mortgage-collatoralization</id>
   <content type="html">&lt;p&gt;&lt;em&gt;this is a draft document, it pairs with &lt;a href=&quot;/pud&quot;&gt;this Planned Unit Development application draft document&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Inspiration comes from many places, but most strongly it draws heavily from &lt;em&gt;Order Without Design&lt;/em&gt;. I’ve quoted in depth two pages below, but there is many other sections of the book germane to the topic of this page.&lt;/p&gt;

&lt;p&gt;Other things to read:&lt;/p&gt;

&lt;h2 id=&quot;summary-of-how-a-financial-institution-could-use-rent-generating-property-to-collateralize-a-loan&quot;&gt;Summary of how a financial institution could use rent-generating property to collateralize a loan&lt;/h2&gt;

&lt;p&gt;Assess the value of a land parcel by evaluating the &lt;em&gt;present value of the flow of rents generated by what ever structure they can build on this parcel&lt;/em&gt;.&lt;sup id=&quot;fnref:collateralizable&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:collateralizable&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;A property could plausibly generate $6,000/mo in rent? (say, with six small units at $1000/mo in rent?)&lt;/p&gt;

&lt;p&gt;That $6,000/mo or $72,000/yr could easily collateralize a $600,000 loan/mortgage/financial product &lt;em&gt;especially if there is reason to think even more rent could be generated from the structures.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At this point, collateralization discussions would require a plot-by-plot evaluation of the likelihood a given structure on a given plot could generate such income streams.&lt;/p&gt;

&lt;h2 id=&quot;a-financial-product-crossing-the-distance-between-the-net-present-value-of-cash-and-guaranteed-future-income-flows&quot;&gt;A financial product “crossing the distance” between the net present value of cash, and guaranteed future income flows&lt;/h2&gt;

&lt;p&gt;The FIRE community (&lt;a href=&quot;https://www.reddit.com/r/Fire/&quot;&gt;r/fire&lt;/a&gt;) has the 4% rule, which can be expressed a few different ways, but broadly it’s the expression of a relationship between the value of a given lump of cash on hand, and future risk-adjusted income flows that said lump of cash can generate.&lt;/p&gt;

&lt;p&gt;Because of math, a guaranteed $1000/mo income is “as valuable as” a $12k/yr income, which is 4% of $300,000.&lt;/p&gt;

&lt;p&gt;So, if I wanted to borrow $100k to do something that would have a strong probability of being capable of generating $2000/mo in rent, that is a “safe” mortgage, because even if I’m way off on the amount of rent I generate, I still will have something that is worth far more than was spent creating it. It’s an &lt;em&gt;asset&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This notion all comes from the text expressed below, and other text in the same book, and other books. More on it soon.&lt;/p&gt;

&lt;h2 id=&quot;example-4-chinas-urban-villages-p-293&quot;&gt;Example 4: China’s Urban Villages (p. 293)&lt;/h2&gt;

&lt;p&gt;The following comes from page 293 of Alain Bertraud’s &lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design&quot;&gt;Order Without Design: How Markets Shape Cities&lt;/a&gt; Lightly formatted for readability.&lt;sup id=&quot;fnref:internet-age&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:internet-age&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h3 id=&quot;legal-status-of-land-in-chinese-villages&quot;&gt;Legal Status of Land in Chinese Villages&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;As in Indonesia, many cities in China are absorbing large numbers of villages as they expand. I will use the term “urban villages” to indicate the villages surrounded by an urban area administered by a municipality.&lt;/p&gt;

  &lt;p&gt;The land occupied by these villages has a special status by law. The use of village land is controlled by a village collective, not by the municipality, although according to the constitution of China, all land belongs “to the people” (i.e., the central government).&lt;/p&gt;

  &lt;p&gt;But there is a difference between full ownership, which involves the ability to sell property, and ownership of land use rights only, which is limited to the right to develop land and to rent floor space or land to a third party.&lt;/p&gt;

  &lt;p&gt;Villagers in China are free to set their own building standards and land use; they can rent land and whatever structure they build to a third party, but they cannot sell either the structure or the land.&lt;/p&gt;

  &lt;p&gt;Only the government can acquire land from farmers by expropriation with compensation.&lt;/p&gt;

  &lt;p&gt;For Chinese farmers living in urban villages, therefore, the value of their land parcel is represented by the &lt;em&gt;present value of the flow of rents generated by what ever structure they can build on this parcel&lt;/em&gt;.&lt;sup id=&quot;fnref:collateralizable:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:collateralizable&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;

  &lt;p&gt;Contrary to farmers living in traditional market economies, they do not have any incentive to sell their land to a developer, as the compensation price they would receive from the government is likely to be less than the capitalized value of the flow of rents. This explains why villagers in China resist selling land to the government whenever they can, and many protest forcible acquisition.&lt;sup id=&quot;fnref:historic-preservation&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:historic-preservation&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;

  &lt;p&gt;When the built-up area of an expanding city reaches a village, the municipal government expropriates the fields around it but usually abstains from expropriating the village itself, as the compensation paid to villagers is based on a “replacement value” of the floor space demolished, while the fields are compensated based on the value of crops.&lt;/p&gt;

  &lt;p&gt;Expropriating the village and providing alternative housing units is therefore much more expensive for government than expropriating open fields.&lt;/p&gt;

  &lt;p&gt;As a result, villages are often initially spared demolition and become an enclaved urban village with a special status over the control of land use.&lt;/p&gt;

  &lt;p&gt;As a city expands, the land value increases in the villages that were initially at the fringe of urbanization, to the point of becoming higher than the compensation to be paid to farmers for whatever structures they have built.&lt;/p&gt;

  &lt;p&gt;The municipal government then tends to evict farmers after compensation or relocation and sell the land to developers. However, the process is long and cumbersome, and many urban villages survive a long time before redevelopment occurs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/h2&gt;

&lt;h3 id=&quot;are-you-proposing-a-new-financial-product&quot;&gt;Are you proposing a new “financial product”?&lt;/h3&gt;

&lt;p&gt;More or less, yes. Eventually something like this could be construed as an alternative to a 30-year fixed-rate mortgage.&lt;/p&gt;

&lt;p&gt;The reasons could be stated by meandering through the current state of affairs, the historical contexts and structures that made the current state of affairs most likely, and a scintillating discussion of who’s visions for the future show the most merit.&lt;/p&gt;

&lt;p&gt;For example, I just read &lt;a href=&quot;https://www.netinterest.co/p/financing-the-american-home&quot;&gt;https://www.netinterest.co/p/financing-the-american-home&lt;/a&gt;. The way things are right now is &lt;em&gt;strange&lt;/em&gt;, to say the least, and pressure is building for a good alternative that isn’t “just” a 1:1 replacement.&lt;sup id=&quot;fnref:private-capital&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:private-capital&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Something much bigger needs to give, but this is a big piece of it.&lt;/p&gt;

&lt;p&gt;I could speak at length of the intersection of &lt;a href=&quot;https://www.goodreads.com/book/show/54388.Money_Bank_Credit_and_Economic_Cycles&quot;&gt;Money, Bank Credit, and Economic Cycles&lt;/a&gt; and lending institutions.&lt;/p&gt;

&lt;h3 id=&quot;how-would-you-propose-getting-the-most-out-of-the-land&quot;&gt;How would you propose ‘getting the most out of the land’?&lt;/h3&gt;

&lt;p&gt;Great question! By applying established processes to your specific bit of land.&lt;/p&gt;

&lt;p&gt;I propose:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Bertraud Model&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Notes for myself, that I bet others will find interesting.&lt;br /&gt;&lt;br /&gt;I have a paper, crafted a few years ago, by Alain and Marie-Agnes Bertaud.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ll be adding many more notes in this thread, but for starters, here&amp;#39;s the title and abstract. &lt;a href=&quot;https://t.co/FKnTvYiHtW&quot;&gt;pic.twitter.com/FKnTvYiHtW&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/1426386086125875200?ref_src=twsrc%5Etfw&quot;&gt;August 14, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;I need to write up an article about that, but until then, the twitter thread will have to do.&lt;/p&gt;

&lt;p&gt;Skip straight to this page:&lt;/p&gt;

&lt;p&gt;https://twitter.com/josh_works/status/1426952509088845830/photo/1&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:collateralizable&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;And this flow of rents represents an equivalent present cash value. At least one interpretation is the 4% rule in the FIRE community - “you can take, annually, 4% of your current nest egg for the rest of your life. If you’re able to live on that 4% for a year, you can quit your job tomorrow.” $2.6 million “generates” $100k/yr. A stable $1000/mo is “as valuable as” a $312,000 cash account. &lt;a href=&quot;#fnref:collateralizable&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt; &lt;a href=&quot;#fnref:collateralizable:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:internet-age&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;AKA I shotgunned line-breaks through the document because half of us are going to read this on our phones at least twice. &lt;a href=&quot;#fnref:internet-age&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:historic-preservation&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;‘having no incentive to sell to a developer’ is why everyone interested in historic preservation will be a &lt;em&gt;massive&lt;/em&gt; supporter of this model. This model &lt;em&gt;preserves&lt;/em&gt; the city. &lt;a href=&quot;#fnref:historic-preservation&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:private-capital&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;To quote from that article:&lt;/p&gt;

      &lt;p&gt;This reluctance of private capital to backstop the mortgage market would recur again. It stems partly from the risk involved (30 years is a long time) and partly because &lt;em&gt;having established a foothold in the market, the government’s presence makes it difficult for private capital to compete&lt;/em&gt;. The same issues give the the government such a dominant share of the market today. (emphasis mine) &lt;a href=&quot;#fnref:private-capital&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Planned Unit Design Document (work-in-progress)</title>
   <link href="https://josh.works/pud"/>
   <updated>2021-10-01T13:00:00+00:00</updated>
   <id>https://josh.works/iowa-st-pud</id>
   <content type="html">&lt;p&gt;&lt;em&gt;This is a draft document, meant for circulation, will evolve with time and eventually be something we bring to the City of Golden for ratification, or whatever needs to happen to get this done in this zone. This document relates to &lt;a href=&quot;/collateralizing-financial-products-with-present-value-of-rent-flow&quot;&gt;Collateralizing Mortgages and Loans With the Present Value of Rent Flow&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I, Josh Thompson, owner of 621 Iowa St, with my wife and the owners and rentors of the below properties, hereby request a Planned Unit Designation from the City of Golden, in accordence to the following terms.&lt;/p&gt;

&lt;h1 id=&quot;dimensionsboundaries-of-the-pud&quot;&gt;Dimensions/Boundaries of the PUD&lt;/h1&gt;

&lt;p&gt;Addresses included in the PUD, representing a contiguous territory and boundary.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;648 Iowa St.&lt;/li&gt;
  &lt;li&gt;621 Iowa St.&lt;/li&gt;
  &lt;li&gt;623 Iowa St.&lt;/li&gt;
  &lt;li&gt;619 Iowa St.&lt;/li&gt;
  &lt;li&gt;617 Iowa St.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the specific properties, all owners and tenants of which desire to be included in the PUD:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;pud-addresses.jpg&quot; alt=&quot;properties-in-pud&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;property-owners-of-the-lots-inside-of-and-around-the-pud&quot;&gt;Property Owners of the lots inside of and around the PUD&lt;/h1&gt;

&lt;p&gt;For the rest of the document, the collection of properties will be “The PUD boundary zone” or some otherwise collected group.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;pud-outline.jpg&quot; alt=&quot;pud&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The owners of these included lots desire for their land to be included in this PUD, and will sign contracts or testaments to this fact if it would be helpful for obtaining this PUD.&lt;/p&gt;

&lt;p&gt;All property owners and tenants are strongly invested in seeing this general plan be accomplished.&lt;/p&gt;

&lt;h2 id=&quot;zone-1-immediately-impacted-property-owners-adjacent&quot;&gt;Zone 1: Immediately-Impacted Property Owners (Adjacent)&lt;/h2&gt;

&lt;p&gt;Nearly everyone adjacent to the designated area, and 100% of the people I’ve spoken to about this, approve of this PUD and would not take actions to prevent it from being designated as such.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;immediately-impacted-property-owners.jpg&quot; alt=&quot;impacted-neighbors&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;zone-2-impacted-property-ownersresidents-nearby&quot;&gt;Zone 2: Impacted Property Owners/Residents (nearby)&lt;/h2&gt;

&lt;p&gt;Obviously, PUDs affect far more than just the immediately-adjacent properties. If we were to take an expansionist view of affected parties, we’d need to fill in the corners of the “space”, so it would be inclusive of everyone who lived within a certain distance of &lt;em&gt;a&lt;/em&gt; boundary of the PUD. Here is that expansionist view:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;large-area.jpg&quot; alt=&quot;expansionist&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;zone-3-affected-by-usage-patterns&quot;&gt;Zone 3: Affected by usage patterns&lt;/h2&gt;

&lt;p&gt;Finally, since roads are mobility networks, and &lt;em&gt;neighborhoods&lt;/em&gt; are a common unit of analysis, not just individual lots, here’s the &lt;em&gt;neighborhood&lt;/em&gt; inclusivity of persons who would have some vested interest in this project:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;neighborhood.jpg&quot; alt=&quot;expansionist&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;pud-code-provisions&quot;&gt;PUD Code Provisions&lt;/h1&gt;

&lt;p&gt;This PUD “application” will contain several sections, modeled roughly after the other PUD applications I could find on the City of Golden’s website:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;GoldenOverlookPUDAmendment.pdf&quot;&gt;Golden Overlook PUD Amendment (PDF)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;LookoutPUDSheet.pdf&quot;&gt;Lookout Mountain PUD Sheet (PDF)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://library.municode.com/co/golden/codes/municipal_code?nodeId=TIT18PLZO_CH18.28USDERE_18.28.300PUPLUNDEDI&quot;&gt;18.28.300 - (PUD) Planned unit development district. (Golden’s Municipal Code)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;the-role-of-the-city&quot;&gt;The role of the city&lt;/h2&gt;

&lt;p&gt;The role of the City and of its Agents is limited to providing connections to the trunk city networks for transport, water, sewer, and storm drainage.&lt;/p&gt;

&lt;h2 id=&quot;city-easements&quot;&gt;City easements&lt;/h2&gt;

&lt;p&gt;Existing city infrastructure within the boundaries of the PUD will be maintained, broadly, by a coalition between the PUD and the city. Easements currently owned by the city that extend beyond the physical boundaries of the road, sewer, and water network will be deemed unexercisable, and full possession will be remitted to the property owners.&lt;/p&gt;

&lt;h2 id=&quot;rights-of-way&quot;&gt;Rights of way&lt;/h2&gt;

&lt;p&gt;The owners representing the PUD will maintain the existing roads to ensure safe and adequate mobility network through-put.&lt;/p&gt;

&lt;p&gt;Non-vehicular rights-of-way will be decided upon and maintained by the property owners.&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;summarized-language-initial-draft&quot;&gt;Summarized language, initial draft:&lt;/h1&gt;

&lt;p&gt;All language copy-pasted from Alain Bertraud, &lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design&quot;&gt;Order Without Design&lt;/a&gt;, pasted below.&lt;/p&gt;

&lt;p&gt;In specific, I want to model this PUD on the Indonesian Kampung. I’ll copy-paste from the long quote, translating the described phenomina to a set of zoning rules legible to a local municipality.&lt;/p&gt;

&lt;p&gt;As I have discussed this with neighbors (in all zones), and explained the genesis of where this language comes from, they have all eagerly endorsed the plan. To emphasize, this general approach and language has broad community support.&lt;/p&gt;

&lt;p&gt;Below are sentences, as encountered in order, in their original form from the long quote shared below.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In these two countries, the government allowed low-income households to use the standards they could afford and to make their own trade-offs between location, road space, lot space, and floor space. The government role was limited to providing connections from these settlements to the trunk city networks for transport, water, sewer, and storm drainage.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Lots were subdivided, but always on the initiative of the original owner&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;adjustments can be made to plot size, width of access to individual lots, and drainage of waste water&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;standards were adjusted to increasing land values&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;A network of small roads, footpaths, and passages was maintained, reflecting the former village structure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;while the government concentrates its efforts not on housing construction but on gradually improving residential infrastructure and services to all residential settlements&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;long-quote-from-order-without-design-how-markets-shape-cities-p-287&quot;&gt;Long quote from &lt;em&gt;Order Without Design: How Markets Shape Cities&lt;/em&gt;, p. 287&lt;/h1&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Finally, housing supply could be greatly increased by improving the urban transport system. Areas with low demand because of poor accessibility to jobs have necessarily a low density. Improving accessibility to jobs by increasing trans port speed or introducing new transport technology should increase the de facto land supply of cities. Unless the regulatory and infrastructure housing supply constraints are removed, adding new subsidies to housing, whether supply side or demand side, would have very little effect on the welfare of the city’s lowest income households.&lt;/p&gt;

  &lt;p&gt;The above example of inclusionary zoning is not just an anecdotal illustration of a poorly designed housing policy. It represents a trend in many of the most economically successful cities in the world. The increasing regulatory frenzy that characterizes some cities like New York imposes large economic costs on the entire country. In a paper published in 2015, the economists Chang-Tai Hsieh and Enrico Moretti found that, between 1964 and 2009, the high cost of housing in some US cities relative to wages had lowered aggregate US GDP by 13.5 percent:&lt;/p&gt;

  &lt;p&gt;Most of the loss was likely caused by increased constraints to housing supply in high productivity cities like New York, San Francisco and San Jose. Lowering regulatory constraints in these cities to the level of the median city would expand their work force and increase U.S. GDP by 9.5%&lt;/p&gt;

  &lt;p&gt;Many of the regulations recently introduced in cities around the world that aim to improve the housing consumption of low-income households, not only do not deliver the number of housing units promised, but also contribute to lowering the economic opportunity of the very people they are supposed to help. It is time to audit these regulations and policies, taking into account the increasingly valuable economic literature on the subject.&lt;/p&gt;

  &lt;h2 id=&quot;cities-are-reluctant-to-accept-housing-standards-that-are-affordable-for-the-poor-the-exceptions&quot;&gt;Cities Are Reluctant to Accept Housing Standards That Are Affordable for the Poor: The Exceptions&lt;/h2&gt;

  &lt;p&gt;Cities in low-income countries, where urban migration annually adds a large number of unskilled people, cannot afford to subsidize the housing of the large number of poor. However, cities in Indonesia, using an “integration” approach to low income settlements, have been successful in absorbing new migrants into the urban labor force while maintaining an acceptable level of environmental health in the poorest neighborhoods.&lt;/p&gt;

  &lt;p&gt;In many Asian countries, large numbers of people migrating to cities have been creating dense urban villages in an urban setting but without any urban infrastructure. These small, simple structures provided the shelter these people needed at a price they could afford. It also allowed them to participate in the urban economy. However, the lack of connection to the city infrastructure soon created unacceptable sanitary conditions when these urban villages aggregated in large contiguous neighborhoods of several hundred thousand people. In addition, the lack of schools and health facilities contributed to slowing down or even prevent ing the integration of younger generations into urban society.&lt;/p&gt;

  &lt;p&gt;The predictable first reaction of governments has usually been to set minimum urbanization standards to prevent the legal construction of these unsanitary urban villages. The regulations made the situation worse, as they prevented these informal settlements from obtaining normal urban services from the municipality. They also created a risk of future demolition, which discouraged housing improvement that the households would have naturally done themselves. Eventually, many governments slowly regularized the older informal settlements in a piecemeal fashion, as is the practice in India, for instance. But the regularization of informal settlements usually had been conducted with a provision that after a set date, no more informal settlements would be regularized.&lt;/p&gt;

  &lt;p&gt;The outcome of these successive policies – first ostracism, then benign neglect followed by reluctant integration – has been disastrous. A significant share of the urban labor force, otherwise gainfully employed, live in large “informal” settlements often with unsafe water supplies, deficient sanitation, and sporadic solid waste collection. In Mumbai, one of the economic powerhouses of Asia, 60 percent of the population lives in slums.&lt;/p&gt;

  &lt;p&gt;I discuss below two case studies in Indonesia and China. **These countries, for different reasons and in different ways, took a different approach to integrating affordable low housing standards into the city infrastructure. The outcome for the poor migrant households was significantly better than in the countries where a strict regulatory approach had been followed. In these two countries, the government allowed low-income households to use the standards they could afford and to make their own trade-offs between location, road space, lot space, and floor space. The government role was limited to providing connections from these settlements to the trunk city networks for transport, water, sewer, and storm drainage.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;example-3-indonesias-urban-enclaves-with-no-minimum-standards&quot;&gt;Example 3: Indonesia’s Urban Enclaves with No Minimum Standards&lt;/h2&gt;
&lt;blockquote&gt;

  &lt;p&gt;In the densely populated island of Java, expanding cities absorb large existing villages, called “kampungs,” whose population then integrates rapidly into the urban labor force. The former agricultural fields are soon built on by formal developers, while new informal constructions are added in the kampungs that have been absorbed into the city. So far, this is not too different from what happens in the rest of Asia, where countries are urbanizing rapidly. There is one important difference. Indonesian kampungs always had a formal robust administrative structure based on traditional laws, and that administrative structure has been able to survive their absorption into a larger urban municipality.&lt;/p&gt;

  &lt;p&gt;Confronted with urbanization, the kampung traditional leadership organized themselves to absorb newcomers. Lots were subdivided, but always on the initiative of the original owner, and within the kampung traditional regulatory constraints and social norms. To use modern terminology, we could compare kampungs to a form of condominium association: They have their own internal regulations and norms, forming a sort of local authority at the lower level than a municipality or a ward.&lt;/p&gt;

  &lt;p&gt;One difference from a condominium is that the kampung local microgovernment also has jurisdiction over land use. Therefore, adjustments can be made to plot size, width of access to individual lots, and drainage of waste water by using traditional norms developed over centuries of practice of good neighbor rules while overruling the development standards imposed by the municipality that surrounds the kampung. Formal developers building on adjacent greenfield land, however, had to follow the municipal land use standards rules concerning land development and subdivisions.&lt;/p&gt;

  &lt;p&gt;Because the income and preferences of new settlers were well known to the original kampung inhabitants, land use standards evolved to adjust to the new economic reality facing kampungs; standards were adjusted to increasing land values, so that plots would remain affordable to newcomers, who were usually poor migrants. Because the local traditional norms were respected, it did not result in an anarchic aggregation of houses that would be wasteful of land, as often happens in spontaneous squatter settlements where migrants aggregate without forming an organized community. A network of small roads, footpaths, and passages was maintained, reflecting the former village structure.&lt;/p&gt;

  &lt;p&gt;As Indonesian cities developed, the kampungs located closer to city centers densified more rapidly, as expected by their favorable locations closer to employment. The low income of their inhabitants, the lack of access to finance, the frag mentation of properties into small lots, and the lack of access to infrastructure prevented the construction of multistory buildings. However, the subdivision of existing village lots and the narrowness of internal access streets reflected the opportunity cost of land and soon resulted in much higher densities than that of the original villages, often resulting in densities of more than 500 people per hectare.&lt;/p&gt;

  &lt;p&gt;However, this increased density has a downside. The traditional source of water and means of sanitation – consisting of shallow wells and seepage pits – became grossly inadequate to serve the new higher densities. The low absorption capacity of the traditional sanitary system transformed the kampungs into dense unsanitary slums. The traditional storm drainage network, built around former irrigation canals, was insufficient to prevent flooding during the monsoon because of enhanced impermeability of the area caused by urbanization.&lt;/p&gt;

  &lt;h2 id=&quot;innovative-housing-policy-concentrating-subsidies-on-infrastructure-not-on-housing-structure&quot;&gt;Innovative Housing Policy Concentrating Subsidies on Infrastructure, Not on Housing Structure&lt;/h2&gt;

  &lt;p&gt;So far the history of the Indonesian kampungs does not appear to be very different from that of informal settlements in many other developing countries. What made a difference was a decision taken in 1969 by the government of Indonesia to concentrate its resources on the improvement of the kampungs’ infrastructure without trying to remove or restructure the existing housing, however small or inadequate it was. The provision of urban infrastructure and services to kampungs was called the Kampung Improvement Program (KIP). Compared to the prevailing housing policies of developing countries in the 1960s, which consisted mostly of bulldozing informal settlements to relocate their inhabitants in public housing flats, this approach was revolutionary.&lt;/p&gt;

  &lt;p&gt;And, even more exceptional, since 1969 to this day, the Indonesian government’s support for KIP has been unwavering, in spite of political upheaval and constitutional changes. The government housing policy objective consists of allowing the poor to settle in and around existing villages at the standards of their choice, while the government concentrates its efforts not on housing construction but on gradually improving residential infrastructure and services to all residential settlements. The policy has proved largely successful. The living and sanitary standards in most kampungs of Indonesia are far above what is found in informal settlements in countries with similar GDPs.&lt;/p&gt;

  &lt;p&gt;No kampung was ever bulldozed. No large groups of households were promised free housing. No large central government institution has tried to replace the many small KIP contracts for civil work on infrastructure in kampungs with larger contracts involving the construction of a massive program of public housing.&lt;/p&gt;

  &lt;p&gt;Operationally, the KIP continues to provide financial and technical assistance to the existing kampungs’ traditional administrative structure to build connections to the municipal water supply network, to pave foot paths, to build drains using existing rights-of-way, to establish a system of solid waste collection that feeds into main collection bins that are part of the municipal solid waste collection system. The maintenance of the internal network and waste collection was and to this day is managed by the kampung community itself, with some financial assistance from the municipal government. The decentralization of decision making and the participation of the communities were embedded in the KIP from the beginning.&lt;/p&gt;

  &lt;p&gt;The KIP has been complemented with citywide investments in transport and most importantly for Southeast Asia, in storm drainage networks to prevent periodic flooding in residential areas&lt;/p&gt;

  &lt;p&gt;Indonesia, with a GDP per capita of US$10,500 in 2015, remains a lower-middle-income country, according to the World Bank. The overall standards of living reflect this income category. However, because the government concentrated its scarce resources on providing urban infrastructure to all urban residents, instead of increasing the housing consumption of a few poor households selected by lottery for public housing, every poor Indonesian received benefits. And these benefits increase over time. The government focus on infrastructure assistance allowed households to use their own resources to invest in their own housing, either as self-occupied dwellings or as investment in rental housing. The housing standards, defined as the size and quality of the structure, may therefore vary from very low to good in the same neighborhood, but access to safe water, sanitation, education, and health is ensured for all.&lt;/p&gt;

  &lt;p&gt;The demand-driven land use standards allowed by regulations in Indonesia are illustrated by the site plans of two neighborhoods in Surabaya, Indonesia, as surveyed in 2010 (figure 6.24). On the left in the figure, a kampung site plan shows the variety of plot and housing sizes that are possible in the same neighborhood. Some structures located in the back of lots facing the main passageways are very small and of poor quality, but they have access to safe water and sanitation. They have also access to the same schools and health facilities as their more affluent neighbors.&lt;/p&gt;

  &lt;p&gt;TODO: ADD PICTURES FROM BOOK&lt;/p&gt;

  &lt;p&gt;The road system allows only emergency and construction vehicles but is adequate for local motorcycle and pedestrian traffic. On the right in the figure, a site plan designed by a formal developer, which shows a different, more standard type of residential layout with much less variety in lot size and more house area, reflecting middle-class standards. homogeneity in house area, reflecting middle-class standards.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;kampung-integration-policy-has-successfully-provided-a-flow-of-low-income-housing&quot;&gt;Kampung Integration Policy Has Successfully Provided a Flow of Low-Income Housing&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Because the kampung boundaries have always been protected since Indonesia started its rapid urbanization, kampungs are found in every neighborhood of Indonesian cities. Consequently, kampungs are always located side by side with commercial areas and higher-income areas, providing a socially desirable income mix at the neighborhood level. Because kampungs and middle-class areas share the same trunk infrastructure for water and sanitation, little discrimination is possible in public investment.&lt;/p&gt;

  &lt;p&gt;I have observed kampungs’ evolution and improvement on a regular basis, since my first work trip to Indonesia in 1977. Many housing units in kampung areas look more middle class than low income. This reflects the increase in house hold incomes in Indonesia over this period. The inability to use a car as a means of transport in kampungs (because of the narrowness of the streets) prevents any large displacement of the poor from the best-located kampungs. The low road standards are the best guarantee against massive gentrification.&lt;/p&gt;

  &lt;p&gt;Some households that have reached sufficiently high incomes are likely to leave the kampung and move into formal development neighborhoods. This movement creates vacancies in the kampungs that are immediately filled with holds who rent or buy a dwelling. Low-income households do not need to be on poorer a waiting list and do not have to submit a proof of their income to buy or rent in house a kampung. Expansion zoning plans are reserving land around existing kampungs located in the periphery to ensure a flow of new low-income housing in the future.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;The Indonesia kampungs and the KIP program demonstrate that it is possible for a government to provide large benefits to its large low-income population without creating long waiting lists. It shows that allowing standards to adjust and, consequently, population densities to float, not only provides affordable housing but also improves the city structure by allowing higher densities in areas accessible to jobs.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;alain-bertrauds-specific-feedback-on-this-document&quot;&gt;Alain Bertraud’s specific feedback on this document&lt;/h1&gt;

&lt;p&gt;I (Josh) am friends with Alain and Marie-Agnes Bertraud, the authors of &lt;em&gt;Order Without Design: How Markets Shape Cities&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;When I sent him a draft of this document, Alain said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Your proposed PUD is an imaginative adaptation to a Colorado subdivision of the Kampung and Chinese urban village concept described in my book.&lt;/p&gt;

  &lt;p&gt;I hope that it gets approved under Colorado law!&lt;/p&gt;

  &lt;p&gt;I hope that other people will also imitate the idea with some variations, ensuring constant adaptation to changing socio-economic conditions.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;This new way of changing land use initiated by current occupiers would be a wonderful escape from the arbitrary rigidity of existing zoning laws, which prevent demand-driven land use adaption.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;Your &lt;a href=&quot;/collateralizing-financial-products-with-present-value-of-rent-flow&quot;&gt;preliminary financial calculation&lt;/a&gt; also demonstrates that it is possible to have an excellent financial return by unit of land while creating affordable housing units at standards that are acceptable to the end-user.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;emphasis mine&lt;/em&gt;&lt;/p&gt;

&lt;h1 id=&quot;faq&quot;&gt;FAQ&lt;/h1&gt;

&lt;p&gt;This document prompts many questions. If you have any, consider leaving a comment below, or shoot me an email about it, or text me, or whatever. I’ll update it accordingly.&lt;/p&gt;

&lt;h2 id=&quot;what-exactly-is-a-pud-again&quot;&gt;What exactly is a PUD again?&lt;/h2&gt;

&lt;p&gt;TL;DR: A “Planned Unit Development District” is a legal document, enacted via a political process&lt;sup id=&quot;fnref:political-process&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:political-process&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; by which the City approves of modifications to the existing rules and regulations, as applied to a specific piece of land.&lt;/p&gt;

&lt;p&gt;The Planning and Zoning Office of Golden &lt;a href=&quot;https://library.municode.com/co/golden/codes/municipal_code?nodeId=TIT18PLZO_CH18.28USDERE_18.28.300PUPLUNDEDI&quot;&gt;defines&lt;/a&gt; a PUD as:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;(1) The PUD district permits the community and economic development of land which is suitable in location and character for the uses proposed as unified and integrated developments in accordance with detailed development plans. The PUD district also provides for specific land uses not permitted in other zone districts. The PUD district is intended to provide a means of accomplishing the following objectives:&lt;/p&gt;

  &lt;p&gt;(a) To provide for development concepts not otherwise permitted within standard zone districts.&lt;/p&gt;

  &lt;p&gt;(b) To provide flexibility, unity and diversity in land community and economic development, resulting in convenient and harmonious groupings of uses, structures and common facilities; varied type design and layout of housing and other buildings; and appropriate relationships of open spaces to intended uses and structures.&lt;/p&gt;

  &lt;p&gt;(c) To provide for the public health, safety, integrity and general welfare, and otherwise achieve the purposes as provided for within the Planned Unit Development Act of 1972, Title 24, Article 67, Colorado Revised Statutes 1973, as amended.&lt;/p&gt;

  &lt;p&gt;(d) To provide for phased development, the more efficient use of land and the public and private services needed therefor, and reflect changes in the technology of land development.&lt;/p&gt;

  &lt;p&gt;(e) To provide for land development flexibility in dwelling type, bulk, density, intensity and open space, as a policy which Golden wishes to encourage; and, as a corollary, regulate certain proposed land development which would distort the objective of Golden’s zoning.&lt;/p&gt;

  &lt;p&gt;(f) To encourage integrated planning in order to achieve the above purposes.&lt;/p&gt;

  &lt;p&gt;(2) Uses within a PUD development may be multiple in nature and may include uses not otherwise permitted within the same zone district. The location and relationship of these uses shall be as established in and conform to the policies and standards contained within the comprehensive plan and other appropriate adopted and approved plans, including but not limited to locational criteria within that comprehensive plan.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;so-why-do-you-want-to-get-this-collection-of-lots-declared-a-pud&quot;&gt;So why do you want to get this collection of lots declared a PUD?&lt;/h2&gt;

&lt;p&gt;Look at reason 18.28.300.1.a:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The PUD district is intended to provide a means of accomplishing the following objectives:&lt;/p&gt;

  &lt;p&gt;To provide for development concepts not otherwise permitted within standard zone districts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ve got some development concepts not otherwise permitted within standard zone districts. Full stop. That’s why I want the PUD. I choose to not give up on what I want to accomplish because it’s not &lt;em&gt;currently&lt;/em&gt; permitted on my lot.&lt;/p&gt;

&lt;p&gt;For example - I’d love for there to be a vegetable stand that is sometimes operating on my street. I’d gladly build a space for someone, and let them operate it out of my lot. That structure, and that business, would be so illegal under current rules people laugh at me for even wanting to do this. &lt;a href=&quot;https://danluu.com/look-stupid/&quot;&gt;I’m not afraid to look stupid&lt;/a&gt;, so here I am.&lt;/p&gt;

&lt;h2 id=&quot;whos-involved-are-you-trying-to-get-other-peoples-property-rezoned-out-from-under-them&quot;&gt;Who’s involved? Are you trying to get other people’s property rezoned out from under them?&lt;/h2&gt;

&lt;p&gt;Nope. Everyone involved is strongly supportive. That means, at minimum:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The owners of all involved lots&lt;/li&gt;
  &lt;li&gt;If there are tenants/renters, the renters are strongly supportive&lt;/li&gt;
  &lt;li&gt;Many, many neighbors adjacent to the PUD, along Iowa St, Ford St, Washington St, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once I know what sort of formal attestations of support I need to be able to demonstrate, and who I need it from, I’ll obtain it.&lt;/p&gt;

&lt;p&gt;If it’s people signing a document, they’ll sign a document.&lt;/p&gt;

&lt;p&gt;If it’s people showing up at a hearing, they’ll show up at a hearing.&lt;/p&gt;

&lt;p&gt;If, for political reasons, from the perspective of Zonning, Planning, or City Council, it is advantageous for more or less people/lots to be included within the zone of the PUD, I’ll adjust accordingly.&lt;/p&gt;

&lt;p&gt;There are many, many good things that will come about for the residents within and adjacent to the PUD, when this goes through.&lt;/p&gt;

&lt;h2 id=&quot;why-are-you-trying-to-get-a-pud-why-not-build-to-the-existing-code&quot;&gt;Why are you trying to get a PUD? Why not build to the existing code?&lt;/h2&gt;

&lt;p&gt;I desire &lt;em&gt;flexibility&lt;/em&gt; more than almost anything else, so I (and my neighbors) can iterate and experiment with things, &lt;em&gt;and&lt;/em&gt; unlock traditional financing opportunities based off our land.&lt;/p&gt;

&lt;p&gt;We cannot finance development projects in a reasonable way, because we cannot use fractions of our land as collateral, which is a deviation from how land has traditionally been used.&lt;/p&gt;

&lt;p&gt;I spoke with a land-use lawyer at &lt;a href=&quot;https://www.foxrothschild.com/&quot;&gt;Fox Rothschild&lt;/a&gt; about this, she agreed that a PUD made the most sense for the overall direction I’m trying to go.&lt;/p&gt;

&lt;p&gt;Part of the problem with building to the current code is that the first step of &lt;em&gt;every&lt;/em&gt; building project is to get permission for the project from the city, which requires that you submit a plan for the &lt;em&gt;finished&lt;/em&gt; project.&lt;/p&gt;

&lt;p&gt;I’m a software developer. Modern zoning forces all development projects into a “waterfall” project management strategy.&lt;sup id=&quot;fnref:waterfall&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:waterfall&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; This PUD basically allows for a property owner to adapt an agile project management approach&lt;sup id=&quot;fnref:agile&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:agile&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;h2 id=&quot;what-do-you-want-to-eventually-build&quot;&gt;What do you want to eventually build?&lt;/h2&gt;

&lt;p&gt;Critically, I am not quite sure. Once the City approves of the PUD, I’ll start building out projects. Nearly everything I’ll do, I plan on doing myself or with just a small group of people. I’ll GC my own projects, I’ll QA my own projects, and I’ll manage everything I build.&lt;/p&gt;

&lt;p&gt;I want to aid the neighborhood in implementing best-practices from:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Pattern-Language-Buildings-Construction-Environmental/dp/0195019199&quot;&gt;A Pattern Language: Towns, Buildings, Construction (Center for Environmental Structure Series)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Timeless-Way-Building-Christopher-Alexander/dp/0195024028/ref=sr_1_2?dchild=1&amp;amp;keywords=christopher+alexander&amp;amp;qid=1634835871&amp;amp;s=books&amp;amp;sr=1-2&quot;&gt;The Timeless Way of Building&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;the vast “sustainable architecture” resources out there&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:political-process&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Sequential approval starting with: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;planning department&lt;/code&gt;, then going to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;planning commission&lt;/code&gt;, and finally to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;city council&lt;/code&gt; &lt;a href=&quot;#fnref:political-process&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:waterfall&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;AKA “the linear sequential lifecycle model”. The entire software development industry jokes about the insanity of having the finished product spec’d out, and then building &lt;em&gt;that&lt;/em&gt;, regardless of what you learn/uncover/discover along the way. “Agile” is what everyone tries to do today, and I refuse to apply known-bad planning processes to my own property. &lt;a href=&quot;#fnref:waterfall&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:agile&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;“Agile” software development is… complicated. There’s a famous and rather nostalgia-inducing website that outlines the &lt;a href=&quot;http://agilemanifesto.org/principles.html&quot;&gt;principles behind the agile manifesto&lt;/a&gt;. Check it out. &lt;a href=&quot;#fnref:agile&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Migrating my Jekyll site to Netlify</title>
   <link href="https://josh.works/migrating-to-netlify"/>
   <updated>2021-09-26T13:00:00+00:00</updated>
   <id>https://josh.works/migrating-to-netlify</id>
   <content type="html">&lt;p&gt;Troubleshooting Netilify deploy&lt;/p&gt;

&lt;p&gt;Ugggh I moved &lt;a href=&quot;https://intermediateruby.com&quot;&gt;intermediateruby.com&lt;/a&gt; to Netlify a few months ago in like 10 minutes, so my primary site, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;josh.works&lt;/code&gt;, should take maybe 20, right?&lt;/p&gt;

&lt;p&gt;I’m a few hours deep. Here’s what I get when Netlify tries to build:&lt;/p&gt;

&lt;p&gt;I should have done the following &lt;em&gt;first&lt;/em&gt;, instead of last:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;9:58:21 AM:   1. Build command from Netlify app                             
9:58:21 AM: ────────────────────────────────────────────────────────────────
9:58:21 AM: ​
9:58:21 AM: $ bundle exec jekyll build
9:58:22 AM: Configuration file: /opt/build/repo/_config.yml
9:58:22 AM:             Source: /opt/build/repo
9:58:22 AM:        Destination: /opt/build/repo/_site
9:58:22 AM:  Incremental build: disabled. Enable with --incremental
9:58:22 AM:       Generating...
9:58:23 AM:                     ------------------------------------------------
9:58:23 AM:       Jekyll 4.2.0   Please append `--trace` to the `build` command 
9:58:23 AM:                      for any additional information or backtrace. 
9:58:23 AM:                     ------------------------------------------------
9:58:23 AM: ​
9:58:23 AM: ────────────────────────────────────────────────────────────────
9:58:23 AM:   &quot;build.command&quot; failed                                        
9:58:23 AM: ────────────────────────────────────────────────────────────────
9:58:23 AM: ​
9:58:23 AM:   Error message
9:58:23 AM:   Command failed with exit code 1: bundle exec jekyll build
9:58:23 AM: ​
9:58:23 AM:   Error location
9:58:23 AM:   In Build command from Netlify app:
9:58:23 AM:   bundle exec jekyll build
9:58:23 AM: ​
9:58:23 AM:   Resolved config
9:58:23 AM:   build:
9:58:23 AM:     command: bundle exec jekyll build
9:58:23 AM:     commandOrigin: ui
9:58:23 AM:     publish: /opt/build/repo/_site
9:58:23 AM:     publishOrigin: ui
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So, first thing I did was go into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;build settings&lt;/code&gt; and update the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;build&lt;/code&gt; command, to append &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--trace&lt;/code&gt; to it:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/netlify-build.jpg&quot; alt=&quot;netlify build&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now I get:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;10:18:23 AM: $ bundle exec jekyll build --trace
10:18:23 AM: Configuration file: /opt/build/repo/_config.yml
10:18:23 AM:             Source: /opt/build/repo
10:18:23 AM:        Destination: /opt/build/repo/_site
10:18:23 AM:  Incremental build: disabled. Enable with --incremental
10:18:23 AM:       Generating...
10:18:24 AM: /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-crosspost-to-medium-0.1.16/lib/jekyll-crosspost-to-medium.rb:44:in `generate&apos;: MediumCrossPostGenerator: Environment variables not found (ArgumentError)
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/site.rb:193:in `block in generate&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/site.rb:191:in `each&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/site.rb:191:in `generate&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/site.rb:79:in `process&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/command.rb:28:in `process_site&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/commands/build.rb:65:in `build&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/commands/build.rb:36:in `process&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/command.rb:91:in `each&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/command.rb:91:in `process_with_graceful_fail&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/lib/jekyll/commands/build.rb:18:in `block (2 levels) in init_with_program&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/gems/jekyll-4.2.0/exe/jekyll:15:in `&amp;lt;top (required)&amp;gt;&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/bin/jekyll:23:in `load&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/bin/jekyll:23:in `&amp;lt;main&amp;gt;&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/bin/ruby_executable_hooks:22:in `eval&apos;
	from /opt/build/cache/bundle/ruby/2.5.0/bin/ruby_executable_hooks:22:in `&amp;lt;main&amp;gt;&apos;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Nailed it - a gem I hardly use is missing an environment variable. I’m just going to delete it for now, and re-try.&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;Not worth trying to clean out the gem, I did &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git rebase -i HEAD~~&lt;/code&gt; to delete the last commit (deleting the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;crosspost-to-medium&lt;/code&gt; gem), and instead added the environment variables to Netlify.&lt;/p&gt;

&lt;p&gt;I just copied/pasted from my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.evn&lt;/code&gt; (A hidden file, it’s not tracked in Git, but I copied/obfuscated the values into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;env.sample&lt;/code&gt; in &lt;a href=&quot;https://github.com/josh-works/josh-works.github.io/commit/0d7eeb369d41034ffb67a784cc25e199af236b70&quot;&gt;this commit&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;…&lt;/p&gt;

&lt;p&gt;Huzzah! The site builds. We’re good to go.&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;related-reading&quot;&gt;Related reading:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://answers.netlify.com/t/support-guide-frequently-encountered-problems-during-builds/213&quot;&gt;https://answers.netlify.com/t/support-guide-frequently-encountered-problems-during-builds/213&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://answers.netlify.com/t/site-deploy-failed-need-guidance-please/32668/7&quot;&gt;https://answers.netlify.com/t/site-deploy-failed-need-guidance-please/32668/7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Parking in Golden</title>
   <link href="https://josh.works/parking-in-golden"/>
   <updated>2021-08-22T13:00:00+00:00</updated>
   <id>https://josh.works/parking</id>
   <content type="html">&lt;p&gt;Parking in Golden is broken.&lt;/p&gt;

&lt;p&gt;This &lt;em&gt;deeply&lt;/em&gt; broken parking situation causes vehicle and pedestrian traffic in Golden to break, in the same way that if a machine on a manufacturing line breaks, adjacent components need to stop, or it will also malfunction.&lt;/p&gt;

&lt;p&gt;The topic of parking (at least in the way I’ll be talking about it) cannot be detangled from other components of physical and social characteristics of our lives. The system &lt;em&gt;of&lt;/em&gt; parking, and the system in which parking is only a component, is a complex, reactive system. &lt;sup id=&quot;fnref:complex-reactive-situation&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:complex-reactive-situation&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;As is true for many complex, reactive systems, it’s important to obtain a general understanding of the “ground truth”, and if possible a wide understanding of the topic.&lt;/p&gt;

&lt;p&gt;I’m defining parking as:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;That which relates to the storage of vehicles&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And it relates to the following “kinds” of parking:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;short-term parking like how you park your private vehicle when you travel to a grocery store or a park, or a nice restaurant in a big city&lt;/li&gt;
  &lt;li&gt;long-term parking like how you might park your vehicle in a garage, driveway, or street, at night or for a day, week, or month&lt;/li&gt;
  &lt;li&gt;commercial parking like how commercial vehicles (semi-trailers, heavy commercial vehicles, light commercial vehicles, company cars, company trucks, &lt;em&gt;delivery vehicles&lt;/em&gt;, and more) fulfill their purpose, be it transporting materials, tools, people, parcels to any specific place for any particular purpose for any particular length of time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Parking has different degrees of &lt;em&gt;urgency&lt;/em&gt; across different degrees of &lt;em&gt;time&lt;/em&gt;. More on that later.&lt;/p&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;Wait. Who are you? Why are you talking about parking?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’m Josh. I live in Golden, Colorado, and my life, and the lives of everyone who lives in Golden, Denver, the front range, a city, the country, and the world, are being ruined by mismanaged parking.&lt;sup id=&quot;fnref:more-than-just-parking&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:more-than-just-parking&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I talk about parking (and other things related to cities) a lot. If you’ve spent any time with me, you’ve probably heard me talk (or rant. Sorry.) about things related to cities. I’m also extremely invested in the city of Golden, and am figuring out how to invest &lt;em&gt;even more&lt;/em&gt; in the city.&lt;/p&gt;

&lt;p&gt;Golden’s mismanagement of parking is ruining the lives of the entire city, and everyone who travels to the city, and affects not just persons who drive, but persons who &lt;em&gt;cannot&lt;/em&gt; drive, even if they wished to, be they too young (children), too elderly, &lt;em&gt;and&lt;/em&gt; persons who would &lt;em&gt;rather not&lt;/em&gt; drive, for any particular reason.&lt;/p&gt;

&lt;p&gt;If you summed up all the people who could fit into each of the above categories, there would be tens of thousands of people who’s wellbeing has been diminished &lt;em&gt;in just the last year&lt;/em&gt; by the City of Golden failing &lt;em&gt;for another year&lt;/em&gt; to manage parking correctly.&lt;/p&gt;

&lt;p&gt;I’ve wanted a spot where I could direct people to get several things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;a broad overview of how parking should be approached (from an academic &amp;amp; operational point of view)&lt;/li&gt;
  &lt;li&gt;a broad overview of evidence that parking is indeed being quite mishandled&lt;/li&gt;
  &lt;li&gt;A few heuristics you can take forward to evaluate the parking situation in your own day-to-day (warning, you might not be able to un-read any of what you’re about to read)&lt;/li&gt;
  &lt;li&gt;an explanation of how to fix it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Eventually I’m going to be adding a TON of pictures, videos, timelapses, and more. For now, know that “parking” (that complex, reactive system) is one of the largest differences between the following pictures:&lt;/p&gt;

&lt;p&gt;Compare these two images:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/subsidized.jpeg&quot; alt=&quot;subsidized and ugly&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/illegal.jpg&quot; alt=&quot;illegal but beautiful&quot; /&gt;&lt;/p&gt;

&lt;p&gt;What’s true in Charleston, South Carolina is true in Golden, Colorado.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;the-fix-for-parking-problems&quot;&gt;The Fix For Parking Problems&lt;/h2&gt;

&lt;p&gt;These two books contain 100% of the solution to the following problems in Golden:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The parking problems&lt;/li&gt;
  &lt;li&gt;the traffic problems&lt;/li&gt;
  &lt;li&gt;the “unaffordable housing” problems&lt;/li&gt;
  &lt;li&gt;the “unaffordable commercial space” problems&lt;/li&gt;
  &lt;li&gt;the homelessness problems&lt;/li&gt;
  &lt;li&gt;and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;images/shoup-and-bertaud.jpg&quot; alt=&quot;Shoup and Bertraud&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here’s the summary of &lt;a href=&quot;https://www.amazon.com/High-Cost-Free-Parking-Updated/dp/193236496X&quot;&gt;The High Cost of Free Parking&lt;/a&gt;, by Donald Shoup.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Donald Shoup is Distinguished Research Professor in the Department of Urban Planning at the University of California, Los Angeles. His research has focused on how parking policies affect cities, the economy, and the environment.&lt;/p&gt;

  &lt;p&gt;In &lt;em&gt;The High Cost of Free Parking&lt;/em&gt;, published in 2005 and updated in 2011, Shoup recommends that cities should:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;Charge fair market prices for on-street parking&lt;/li&gt;
    &lt;li&gt;Spend the revenue to benefit the metered neighborhoods&lt;/li&gt;
    &lt;li&gt;Remove off-street parking requirements.&lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;examining-golden-specific-parking-problems&quot;&gt;Examining Golden-specific parking problems&lt;/h3&gt;

&lt;p&gt;Golden proudly proclaims that it has lots of free parking. Look at Golden in Google Earth. Look at how much parking it has!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://earth.google.com/web/@39.75666271,-105.21921333,1721.32852233a,1534.51802287d,35y,-129.74290813h,57.74636974t,0r&quot;&gt;open google earth (in your web browser) to Golden&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s what you might see:&lt;/p&gt;

&lt;div style=&quot;position: relative; padding-bottom: 73.61963190184049%; height: 0;&quot;&gt;&lt;iframe src=&quot;https://www.loom.com/embed/0151e2d577584a8fbabae477affdb81a&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot; style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Multiple parking garages&lt;/li&gt;
  &lt;li&gt;multiple surface parking lots&lt;/li&gt;
  &lt;li&gt;lots of curb space&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MOST of the time, this parking is empty.&lt;/p&gt;

&lt;p&gt;Then, on weekends, (and often during the week) Golden gets tons of visitors. I love that Golden gets visitors. Except it sucks for everyone (visitor and resident alike) when the parking is a disaster.&lt;/p&gt;

&lt;p&gt;One downtown neighborhood puts “closed to non-resident” signs up, and has employees of a security company sitting in their cars at the vehicle entrances.&lt;/p&gt;

&lt;p&gt;The remaining parking is full. stuffed to the gills.&lt;/p&gt;

&lt;p&gt;Golden’s parking minimums (and all sorts of other anti-economic, anti-poor, originally anti-ethnic-group ‘housing minimum’ standards) kill, before pen hits paper, the concept of cheap housing.&lt;/p&gt;

&lt;p&gt;It’s illegal to build a space for a human &lt;em&gt;without&lt;/em&gt; building a space for a car alongside! Like, you’ll actually go to jail if you tried to do that!&lt;/p&gt;

&lt;p&gt;If we didn’t have parking minimums, we could have small dense development, that’s cheap, &lt;em&gt;and small&lt;/em&gt;, unlike the hulking monstrosities required to house cars.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://www.sightline.org/2016/09/06/how-seattle-killed-micro-housing/&quot;&gt;How Seattle Killed Micro-Housing: One bad policy at a time, Seattle outlawed a smart, affordable housing option for thousands of its residents.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Golden’s “housing problems” and “parking problems” comes from authoritarian &lt;a href=&quot;https://en.wikipedia.org/wiki/High_modernism&quot;&gt;high modernists&lt;/a&gt; who believe that political control of parking and housing is acceptable or adequate. It’s jointly some of ‘the people’ and ‘the planners’ who, if enough of them are pro-authoritarian high modernism, ensure this particular outcome.&lt;/p&gt;

&lt;h2 id=&quot;resources-around-the-harms-of-parking-minimums&quot;&gt;Resources around the harms of parking minimums&lt;/h2&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Parking minimums, a thread.&lt;br /&gt;&lt;br /&gt;Why? Because this is something many continue to approach from the perspective of &amp;quot;well I drive and so everywhere I go needs to have parking.&amp;quot;&lt;br /&gt;&lt;br /&gt;Warning: This was the subject of my master&amp;#39;s thesis, so...&lt;br /&gt;(1/16) &lt;a href=&quot;https://t.co/scC4PqW3oD&quot;&gt;pic.twitter.com/scC4PqW3oD&lt;/a&gt;&lt;/p&gt;&amp;mdash; Luke Klipp 🏳️‍🌈 (@lukehklipp) &lt;a href=&quot;https://twitter.com/lukehklipp/status/1339385302729691136?ref_src=twsrc%5Etfw&quot;&gt;December 17, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;further-reading&quot;&gt;Further reading&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.brookings.edu/research/parking-requirements-and-foundations-are-driving-up-the-cost-of-multifamily-housing/&quot;&gt;Parking requirements and foundations are driving up the cost of multifamily housing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.sightline.org/2020/12/14/oregon-big-parking-reform/&quot;&gt;Oregon Just Ended Excessive Parking Mandates On Most Urban Lots&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cpr.org/2020/12/17/there-are-too-many-unused-parking-spots-near-transit-stations-and-its-pushing-up-rent-rtd-report-says/&quot;&gt;There Are Too Many Unused Parking Spots Near Transit Stations And It’s Pushing Up Rent, RTD Report Says (Colorado Public Radio)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.fastcompany.com/90202222/heres-how-much-space-u-s-cities-waste-on-parking&quot;&gt;Here’s how much space U.S. cities waste on parking&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://parkingmill.com/&quot;&gt;Parkingmill: X-ray vision for parking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todo:&lt;/p&gt;

&lt;p&gt;https://twitter.com/josh_works/status/1295034724658737152&lt;/p&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:complex-reactive-situation&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;For a primer on this, read &lt;a href=&quot;https://fs.blog/2014/04/mental-model-complex-adaptive-systems/&quot;&gt;An Introduction to Complex Adaptive Systems&lt;/a&gt;.&lt;/p&gt;

      &lt;p&gt;A complex, adaptive/reactive system changes in complicated ways when you chage the inputs. Also, take a look at &lt;a href=&quot;https://how.complexsystems.fail/&quot;&gt;How Complex Systems Fail&lt;/a&gt; &lt;a href=&quot;#fnref:complex-reactive-situation&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:more-than-just-parking&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Parking is just one portion of the problem. A big one. And our broken parking regime isn’t just the &lt;em&gt;cause&lt;/em&gt; of many problems, it’s also a &lt;em&gt;result&lt;/em&gt; of other broken systems. See my &lt;a href=&quot;/robert-moses&quot;&gt;explainer about Robert Moses&lt;/a&gt; for more. &lt;a href=&quot;#fnref:more-than-just-parking&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>The Violence of God and the Hermeneutics of Paul</title>
   <link href="https://josh.works/the-violence-of-god-and-the-hermeneutics-of-paul"/>
   <updated>2021-08-08T13:00:00+00:00</updated>
   <id>https://josh.works/the-violence-of-god-and-the-hermeneutics-of-paul</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Sometimes I (Josh) want to share around certain academic works. Sometimes its a PDF that I want someone to download and read, sometimes it’s text from a book I’ve read, and cannot otherwise get a sharable format of. So, I laboriously take photos of pages, use an optical character recognition tool to copy-paste the text from the image to my computer, clean it up, and repost it here.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What follows is an excerpt from &lt;a href=&quot;https://www.amazon.com/Work-Jesus-Christ-Anabaptist-Perspective/dp/193103849X&quot;&gt;The Work of Jesus Christ in Anabaptist Perspective: Essays in Honor of J. Denny Weaver&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Violence of God and the Hermeneutics of Paul&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;By Christopher D. Marshall&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The jarring dissonance between the God of vengeance and violence in certain parts of the Old Testament and the God of indiscriminate love and mercy proclaimed by Jesus in the Gospels has long perplexed Christian interpreters. Echoing the verdict of many, Paul Anderson maintains that reconciling these contrasting portraits of God constitutes “the greatest theological and hermeneutical problem in the Bible.” &lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; It is a theological problem because it challenges the notion of a unitary and self-consistent divine will. It is a hermeneutical problem because it forces the question of how apparently contradictory views of God can exercise authority as equally part of sacred Scripture. It is also a moral problem, for the way believers resolve this ten sion will have implications for how they live their lives as servants of God, even if the common assertion today that violent religious texts lead directly to violent behavior must be dismissed as simplistic.&lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;These difficulties are not unique to Christians, of course. Jewish interpreters, too, have long wrestled with how the compassionate God of, say, Ezekiel 33 is to be reconciled with the punitive God of, for example, Numbers 16.3 But these problems of interpretation confront Christian readers in a particularly acute way in light of the theological, moral, and hermeneutical privilege which Christianity accords, at least in theory, to the Jesus tradition.&lt;/p&gt;

&lt;p&gt;One early solution to the dilemma, proposed by Marcion and the Gnostics, was to unhook Jesus entirely from the God of the Jewish Scriptures, who was deemed to be a lesser deity. This option was roundly rejected by the early church. The heresy of ditheism not only leads to theological oblivion, it actually inscribes competitive violence in the nature of ultimate reality, something which biblical monotheism avoids. Christian orthodoxy has therefore always insisted that the God and Father of our Lord Jesus Christ must be none other than the one true God of Israel, the Creator of all that exists.&lt;/p&gt;

&lt;p&gt;But what does this identification tell us about God? Has God changed? Did God give up his violent ways with the advent of Christ in favor of nonviolent love? Is God’s fearsome career as a warrior over? Or does God remain fundamentally unchanged? Is God, by definition, unchangeable: the same yesterday, today, and forever? If so, what does that tell us about God’s involvement in violence? Is lethal coercion still an important part of God’s repertoire of methods for achieving saving and judging purposes in human affairs as it was in biblical times?&lt;/p&gt;

&lt;p&gt;If the testimony of Christian history and doctrine are indicative, the latter appears to be the most common conclusion Christians have reached, since God’s use of violence has continued to be as notable a feature of the Christian story of God as it was in the earlier Israelite story of God. Much atonement theology, for instance, as Denny Weaver spells out so clearly, envisages a patriarchal God who visits punitive violence on his only son to defend his personal dignity or uphold his superior justice. Similarly the post-Constantinian church’s majority endorsement of Christian participation in war has disclosed a willingness, if not an eagerness, to equate the violent shedding of human blood with the work and will of God.&lt;/p&gt;

&lt;p&gt;Then there is the projected violence of final judgment. Even those who feel squeamish about the idea of God using human agents to visit wrath on his enemies in present history still often espouse a concept of eschatological judgment where God, patience finally exhausted, violently destroys the wicked-or worse, callously consigns them to the everlasting violence of eternal torment. It is not uncommon even for Christian pacifists, who conscientiously renounce lethal violence themselves, keenly to anticipate God’s retribution on the un godly at the end of time. Some even argue that Christian renunciation of violence is materially dependent on the reality of God’s ultimate retributive justice on evildoers, for only an absolute confidence in God’s perfect judgment can free believers from the need to take matters into their own hands in the interim.5 Put crudely, from this perspective Christian nonviolence is sustainable only if there is a violent God giving ultimate backup.&lt;/p&gt;

&lt;p&gt;So Christian belief and practice have not, by and large, done away with the concept of divine violence. Even peace theology has not felt the need to posit a nonviolent God. Of course, retention of a militant deity eases the hermeneutical dilemma mentioned earlier, in that the violent God of early Israel does not cease to be violent in the Christian era but merely becomes less blatantly so. Instead of regularly deputizing human agents to slay the wicked, God now largely reserves that task for God’s self at the end of time (although exceptions may apply in the event of justifiable war).&lt;/p&gt;

&lt;p&gt;Yet arguably a theology that substitutes a conspicuously violent God with a cautiously violent God remains mired in what Walter Wink famously calls the myth of redemptive violence-the belief that violence saves, that war brings peace, that might makes right. As long as God is understood to rely on lethal force to achieve redemptive goals, whether in present history through appointed human instruments or at the end of time by God’s own clenched fist, disturbing implications follow, and especially for Anabaptist peace theology.&lt;/p&gt;

&lt;p&gt;One such implication is the absolutizing or deifying of violence. To reserve to God the right to use overwhelming violence is to pay violence the ultimate compliment. Violence is dignified by its association with God, and God is diminished by dependence on violence. In deed, the more violence is reserved as God’s prerogative alone, the more uniquely and terrifyingly violent God appears. “It is a fearful thing to fall into the hands of the living God.” But if frail humans are expected to feel angry without resorting to violence, why should not the same be expected of God? Is God unable to withstand the temptation to hit back? Is crushing the opposition God’s only solution?&lt;/p&gt;

&lt;p&gt;Again, a willingness to exempt God from the normative requirement of nonviolence sustains the kind of exceptionalism that always leaves the door open for human beings to perpetrate violence on God’s behalf or approve of it when done in God’s name. As long as killing is sanctioned by God-whether now in times of war or during some future apocalyptic maelstrom – no moral condemnation can apply to those who carry out the killing.&lt;/p&gt;

&lt;p&gt;Note, however, that whenever exceptions are permitted, there is a human propensity to expand the loophole endlessly. Each and every act of violence can be defended as a legitimate exception to the rule. Not surprisingly, it is always the perpetrators of violence, not its victims, who appeal to exceptional circumstances to legitimate their actions. Something similar happens with respect to those who cherish the expectation of God’s final destruction of sinners. They exempt themselves and their loved ones from the awaited firestorm while insisting that God’s justice requires others to be consumed by it. &lt;sup id=&quot;fnref:8&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:8&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The grounding of Christian non-retaliation on trust in God’s eschatological vengeance also has troubling corollaries. The more one waits for God’s violent intervention to rectify the world, the less incentive there is to work for peaceful change now. Indeed, it could be argued (and often has been historically) that since God is clearly not yet riled enough by sin and injustice to intervene to overturn it, the unjust status quo ought to be accepted as something God permits to exist. Christians should not then actively oppose it, for that would be to usurp God’s work. Pacifism then slides into a passivism that leaves it over to God to sort out the mess while keeping one’s own hands clean. Although John Howard Yoder rejects such quietism, this could be one way of construing (or misconstruing) his contention that Christian nonviolence bears witness to Christians relinquishing control of history. Their call is to be faithful to the slain lamb, not to be “effective” in directing historical processes, a goal which is frequently taken to justify violence and is an illusory ambition at the best of times. &lt;sup id=&quot;fnref:9&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:9&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Does this then mean that assuming responsibility for the direction of human history necessarily requires violence, even for God? Is violence an inescapable corollary of exercising supreme authority? Perhaps a better grounding for Christian pacifism would be the recognition that, in a real sense, humans are in charge of this world, and that it is only by emulating the nonviolent rule of God that we have any real chance of undoing the yokes of oppression and recover ing the true purpose of our existence. After noting the vast literature written on theodicy and on whether God can ever be forgiven for the atrocities permitted on his watch, such as the incineration of a five year old girl called Esther before the eyes of her parents, or the random assassination carried out by a Palestinian gunman called Omar, J. Harold Ellens comments:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have figured out that the question is erroneous. It is not a question of justifying God or of bringing God to justice. It is not a question of forgiving God or holding God accountable. It is a matter of recognizing the limitations of God. God is not in charge of this world. We are. We should have gotten that clue at a more profound level of awareness than we seem to have done, from Genesis 1:28, where the ancient Israelite narrative informs us that God assigned us the task of dominion in this world, to bring it to its potential fruitfulness. If we do not take care of beautiful blond and blue-eyed Esther, God cannot. If we do not find reconciliation with Omar, God cannot stop the mass murders. If we do not reach beyond the alienations and transcend the terror of the terrorists, God cannot save us. &lt;sup id=&quot;fnref:10&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:10&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But perhaps the biggest problem with continuing to imagine a God who employs violence to advance his cause in the world is that it leads to an incoherent Christian monotheism. On the one hand, Jesus Christ is held to be the perfect revelation of the one true God. On the other hand, the God whom Jesus is said to reveal bears little resemblance to Jesus.&lt;/p&gt;

&lt;h2 id=&quot;jesus-as-the-nonviolent-icon-of-god&quot;&gt;JESUS AS THE NONVIOLENT ICON OF GOD&lt;/h2&gt;

&lt;p&gt;The Christian story rests on two fundamental truth claims which set it apart from all other religious and ideological systems. First, it claims that the Creator God is made most fully known in the human person of Jesus Christ. If we want to know what God is really like, the New Testament authors submit, we must look at Jesus. He is the supreme benchmark for our understanding of Deity, “He is the image of the invisible God,” the apostle Paul writes, the one in whom “all the fullness of God was pleased to dwell.” “He is the reflection of God’s glory and the exact imprint of God’s very being.” Hebrews declares. He is also the one “through whom God created the worlds.” &lt;sup id=&quot;fnref:12&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:12&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; “ All things came into being through him,” John’s Gospel begins, “and without him not one thing came into being. What has come into being in him was life, and the life was the light of all people.” &lt;sup id=&quot;fnref:13&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:13&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt; “For in him all things in heaven and on earth were created, things visible and in visible, whether thrones or dominions or rulers or powers-all things have been created through him and for him.” Jesus, then, is both the human embodiment of God’s very being and the one through whom and for whom God created the universe.&lt;/p&gt;

&lt;p&gt;This conviction invests the words and deeds of Jesus of Nazareth with unparalleled revelatory significance. When Jesus teaches and practices nonviolence, therefore, it is not enough to see it as a tactical expedient he employs because revolutionary violence against the Roman superpower was not a viable option at that time. It must be understood more profoundly as an articulation of what God is like and of how God exercises divine rule. That is why Jesus explicitly grounds his summons to enemy love and non-retaliation in the imitation of the heavenly Father, who “makes his sun to rise on the evil and on the good, and sends rain on the righteous and the unrighteous.” Jesus instructs his followers to conduct themselves as “children of the Most High, for he is kind to the ungrateful and the wicked.” They are to be merciful “just as your Father is merciful.”&lt;sup id=&quot;fnref:17&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:17&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt; Jesus’ ethic of nonviolence, in other words, is predicated on the premise of a nonviolent God, a God who, as Raymund Schwager puts it, is “exactly the opposite of violence,” a God whose “limitless forgiveness and boundless love are distinct in every respect from the mechanism of violence and the vicious cycle of mutual destructiveness.”&lt;sup id=&quot;fnref:18&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:18&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;9&lt;/a&gt;&lt;/sup&gt; Those who claim to follow this God must therefore be nonviolent too.&lt;sup id=&quot;fnref:19&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:19&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;10&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The second truth claim Christianity makes is that God has acted uniquely in the life, death, and resurrection of Jesus to restore the world to its originally intended state of freedom. In Jesus, God has entered fully into the human condition, shackled as it is to the power of sin and subject to the scourge of suffering and death, and has acted through him to defeat the power of evil and reconcile its victims to himself. “He has rescued us from the power of darkness,” Paul rejoices, “and transferred us into the kingdom of his beloved Son, in whom we have redemption, the forgiveness of sins…. For through him God was pleased to reconcile to himself all things, whether on earth or in heaven, by making peace through the blood of his cross. “&lt;sup id=&quot;fnref:20&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:20&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;11&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Not only is “the blood of his cross,” by which Paul means his violent death on a Roman gallows, the decisive event that defeats evil and brings about peace, it is also the definitive revelation of what God is really like. Christian faith asserts that God is never more truly God than he is in the dying of Jesus. In the cross, as the gospel writers put it, the veil of the temple is torn in two and God stands revealed. God’s justice also stands revealed,&lt;sup id=&quot;fnref:21&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:21&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;12&lt;/a&gt;&lt;/sup&gt; The cross shows that God’s justice is a peacemaking justice,&lt;sup id=&quot;fnref:22&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:22&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;13&lt;/a&gt;&lt;/sup&gt; a reconciling, restoring, and healing justice. The God who is made climactically known in the cross of Christ is a God who secures justice not by violent imposition of his will on his enemies but by freely subjecting himself in suffering love to the violent impulses of humanity to liberate creation from its bondage to violence and to restore people to relationship with God and with each other.&lt;/p&gt;

&lt;p&gt;These, then, are the two mind-boggling assertions the New Testament authors make. They dare to propose that Jesus of Nazareth is the human face of God, “the flesh and blood embodiment of the perfections of God, and that the true character and the justice of this God are nowhere more evident than in his death and resurrection. But this is not all. From these two claims they arrive at a critically important deduction that what we learn of God in the story of Jesus is the key to understanding the meaning, inter-connectedness, and destiny of all created reality. As Ephesians states, “All things have been created through him and for him. He himself is before all things, and in him all things hold together. In him God has made known his “plan for the fullness of time, to gather up all things in him, things in heave and things on earth. “&lt;sup id=&quot;fnref:25&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:25&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;14&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;What an astonishing assertion this is! All things have been created for, they are sustained by, and they find their ultimate meaning in Jesus Christ. All things are eternally imprinted with the moral character and career of the crucified and risen Lord. From this it follows that the central principle of creation is not naked power, or control, or order, or balance, but vulnerable, passionate, reconciling, self giving love, a love which subverts evil, not by an overwhelming dis play of coercive force, but by acting in amazing grace to redeem of fenders and to heal sin’s victims, and at great cost to itself. In short, the Jesus story reveals that God’s nonviolent love is the ground of the universe.&lt;/p&gt;

&lt;p&gt;This is not a wholly new revelation, however. It is already evident in the creation narratives of Genesis. It is hugely significant that, notwithstanding the violence ascribed to God in the pages of the Bible, the canonical record opens and closes with surprisingly peaceful scenes – the two accounts of creation (Gen. 1-2) and the presentation of the New Jerusalem (Rev. 21-22). Peace is both ontologically anterior to violence and eschatologically posterior to it. it. Violence has no role in God’s work of creation; it only enters into the picture later as a result of human sin and will eventually come to an end. This is quite different from other ancient Near Eastern creation myths, such as the Babylonian Emuna Elish, where creation is the result of a violent act of deicide and humans are created from the blood of the murdered god. There evil precedes good, chaos is conquered by violence, and the king serves as Marduk’s representative on earth, ruling by means of holy war. By contrast, as Walter Wink observe:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Bible portrays a good God who creates a good creation. Chaos does not resist order. Good is before evil. Neither evil nor violence is a part of the creation, but enter later as a result of the first couple’s sin and the connivance of the serpent (Gen. 3). A basically good reality is thus corrupted by free decisions reached by creatures. In this far more complex and subtle explanation of the origins of things, violence emerges for the first time as a problem requiring a solution. &lt;sup id=&quot;fnref:27&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:27&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;15&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The creation narratives, in other words, presuppose a divine ontology of peace. They portray a nonviolent God who speaks the world into existence and who makes human beings in the divine image and likeness to cultivate creation as devoted gardeners, not to pillage it as rapacious warriors. Things go badly wrong, however, and violence invades this peaceable reality. This is no minor problem that can be easily fixed. It not only escalates out of all control in the human community, it even provokes God to an act of massive counterviolence, something God apparently later regrets. Thus begins the long canonical story of divinely induced violence, a story which stands in stark contrast to what we have seen of God in the story of Jesus and cries out for some theological explanation&lt;/p&gt;

&lt;p&gt;It is important that this explanation is &lt;em&gt;theological&lt;/em&gt; in character, not just traditio-historical or psycho-cultural or phenomenological, be cause the canonical text is principally intended to exercise a theological role in the community that created and preserves it. The biblical traditions, for all their diversity, once gathered together as canonical Scripture, combine to tell a single overarching story about Israel, God, and the world. The texts constitute a narrative world into which readers enter, with its own plot, its own cast of characters (including God), and its own universe of meanings, a story which serves authoritatively to interpret God to Israel and Israel to itself.”In this connection it matters little whether the biblical accounts are historically reliable in all their details; of primary importance is the theological claim they make to narrate the story of God. This means that the problem of divine violence cannot be dealt with adequately simply by deeming this or that episode to be legendary or fictitious. Whether or not God actually killed the children of Egypt, the biblical story &lt;em&gt;says&lt;/em&gt; God did. This is how the biblical writers understand the involvement of God, and it is their interpretation of God that has normatively shaped and conditioned how the subsequent community of faith (including Jesus) has apprehended God.&lt;/p&gt;

&lt;p&gt;What is needed, then, is some explanation for God’s violence that both accords with the inner logic of the plotted narrative and that ac counts for &lt;em&gt;why&lt;/em&gt; it is that God is characterized in this way, especially when there are strong indications at the outset of the story that the Creator God works by peaceable means. Given the many incidents of divine violence that follow, it is also worth pondering how Jesus could possibly have conceived of God as being unfailingly kind to the ungrateful and wicked when he knew full well that within the biblical drama God discriminates in favor of friends, bears grudges against opponents for generations, and visits retribution on sinners.&lt;/p&gt;

&lt;h2 id=&quot;the-violence-of-god-in-scripture&quot;&gt;THE VIOLENCE OF GOD IN SCRIPTURE&lt;/h2&gt;

&lt;p&gt;The Hebrew Bible has a reputation for being one of the bloodiest works in existence, Firmly fixed in the popular mind is the image of the “Old Testament God” as a God of war and destruction, a brutal, reactive, and ruthless deity who brooks no rivals and leaves no infraction unpunished. Whether this menacing reputation is fully deserved is debatable. Patricia M. McDonald argues that there is far less violence in the Hebrew Scriptures than is generally supposed and that the deepest concern of the biblical authors is to encourage ways of living that overcome violence and foster compassion. The problem with any textual portrayal of violence, she suggests, is that it tends to have a disproportionate impact on readers. Violent language and imagery take over our imagination and absorb our interest, so that we “find” more violence than is actually there.&lt;/p&gt;

&lt;p&gt;This rhetorical impact of the violence also diverts attention away from other themes in the text that are often of more fundamental importance to the author. The peripheral thus becomes central and the central peripheral. Nor, McDonald adds, does all the violent imagery used in the Bible function to endorse actual violence. The specifically military imagery for God, for example, is plainly metaphorical. God’s defeat of Egypt may be spoken of as a triumph of war,33 but in practice it was achieved by non-military terms. Although Yahweh uses “weapons” to overthrow his enemies, his weapons are the forces of the natural order. The language is analogical, not literal, although, as McDonald concedes, this choice of military analogies did encourage dangerous perceptions about God to emerge.&lt;/p&gt;

&lt;p&gt;As helpful as these considerations are, the fact remains that the biblical narrative attests to a deep and pervasive association between God and deadly violence. The connection between them is varied and complex. Sometimes God resolutely opposes the use of violence and identifies wholly with the victim. At other times God is portrayed as the perpetrator of violence, either by direct fiat or by organizing and sanctioning others to visit judgment on a disobedient people. Often it is precisely God’s capacity for superior violence that serves to establish Yahweh’s credentials as the only true God. Violence thus emerges as the most frequently mentioned activity in the Hebrew Bible. Schwager has counted some 600 passages in which violence is recorded and at least 1,000 verses in which God’s violence is de scribed. In some 100 passages God expressly commands people to kill others, and in some stories God tries to kill people for no apparent reason.4 God’s violence is particularly evident in the wilderness stories. It has been calculated that in the forty year period between Israel’s exodus from Egypt and their entry to Canaan, the Lord executes at least 30,000 of his own people. 35 Three times Yahweh threatens to annihilate them entirely, and on a number of occasions strikes them with plagues as he did the Egyptians,37 Even greater in number than such narrative acts of violence are the potential acts of violence commanded in the enforcement of the laws of the Sinai covenant.38&lt;/p&gt;

&lt;p&gt;The blood of Israel’s enemies runs even more freely. Yahweh smites innocent Egyptian children in Exodus 12, drowns the Egyptian army in the sea in Exodus 14-15, opens up the ground to swallow the Korahites in Numbers 16, orders the impaling of Baal worshippers in Numbers 25, calls for reprisal on the Midianites in Numbers 31, and orders the conquest of Canaan in Joshua 1. The most chilling of all biblical texts to do with war and violence are those that refer to the &lt;em&gt;herem&lt;/em&gt; or “ban,” under which all human beings among the defeated are “de voted to destruction,” sometimes at God’s explicit command.39 Emotions of pity are expressly forbidden in such cases.40 Susan Niditch identifies two main ideologies undergirding and justifying this practice of genocide. In one, the ban is understood as a sacrificial offering to God, which presupposes a God who appreciates human sacrifice. In the other, the ban is viewed as an act of divine justice upon idolatry, which was thought to threaten Israel’s own purity and survival. In both cases mass slaughter is a means of gaining God’s favor.&lt;/p&gt;

&lt;p&gt;It is possible to identify certain ameliorating features in the institution of &lt;em&gt;herem&lt;/em&gt;. McDonald mentions, for example, its role in discouraging the use of war purely for plunder, since all captured possessions were to be destroyed.42 Niditch detects a paradoxically high view of human dignity implicit in the ban. The “terrifying complete ness and fairness” of the ban’s indiscriminate massacre “may be viewed as admitting more respect for the value of human life than other war ideologies that allow for arbitrary killing of soldiers and God is still cast in the role as author or condoner of immense brutality, civilians. “43This sounds like special pleading. But even if it were true, the instigator of repeated episodes of ethnic cleansing, the perpetrator of what today would be termed crimes against humanity. Accord ing to one critic, the God of Exodus, Deuteronomy, and Joshua is little better than a violent, murderous, genocidal land thief. “Troubling images of God cascade from biblical texts like waterfalls after a violent storm. God’s repugnant words and pathological behavior are so widespread as to be considered normative behavior for God!”44 This judgment may be one-sided. But the fact that it can seriously be made at all is testimony to the extent to which God is deeply embroiled in gut-wrenching brutality in many parts of the biblical narrative.&lt;/p&gt;

&lt;p&gt;The most graphic accounts of divinely approved violence are set in the context of Israel’s early history, even if they were composed at a later stage. With the establishment of the monarchy, the pure ideal of holy war comes to an end and Israel learns to rely on conventional military might. War still carries a sacral element to some extent, but, as Mark McEntire explains “God is removed from the battlefield and eventually closed off in the temple along with the ark… the of God is no longer an essential element of a battle.” 45 In later presence prophetic and apocalyptic literature, emphasis shifts from the mediation of divine violence through historical agents to the expectation of God’s eschatological victory, which is portrayed in language no less violent than is found in Deuteronomy and Joshua. The Psalms also celebrate and anticipate the coming of the “God of salvation” who will “shatter the heads of his enemies” and will enable his own people to “bathe their feet in blood” and to feed their enemies to their dogs.46&lt;/p&gt;

&lt;p&gt;Not that God ever deserts the cut and thrust of present history. McEntire points out that the Hebrew canon (unlike the Greek canon and Christian Old Testament canon) closes with 2 Chronicles 36, which tells of the destruction of Jerusalem by the Babylonians. Although the term &lt;em&gt;herem&lt;/em&gt; is not used, the many parallels between 2 Chronicles 36 and Joshua 6 give the unmistakable impression that the city has fallen because God has instituted a ban on Israel. The classical prophets toyed with the possibility of Yahweh turning against Israel for breaking covenant,47 now it has happened. Yahweh disowns his people and brings devastation upon the holy city. No mercy is shown to its inhabitants; the chosen people are either killed or carried off into exile. “Yahweh begins the story as the compassionate, patient God of a disobedient people. As the story progresses, Yahweh becomes a wrathful avenger whose actions are confused with and indistinguishable from those of an earthly tyrant.” 48&lt;/p&gt;

&lt;p&gt;To be sure, bringing such episodes of divine violence into the limelight in this way is potentially misleading, for there is quite another side to God’s character in the biblical accounts as well. Hosea 11, for example, depicts Yahweh in emotional turmoil, torn apart by conflicting feelings of outrage at his people’s sin and tender compassion for their plight, contemplating terrible punishment but recoiling in horror from the prospect of executing fierce anger against them and promising never again to destroy Ephraim. Elsewhere too God is revealed as a God of mercy, forgiveness, and love, a God who displays a special concern for the most vulnerable members of the covenant community, a God who liberates the poor from oppression and who heals and restores the victims of violence. Indeed, this biblical notion of a God who sides with the weak and the downtrodden is radically different from that which prevailed in the ancient Near East, where the gods inaugurated and upheld the hierarchical structures of wealth and power.50&lt;/p&gt;

&lt;p&gt;Even so, God’s concrete actions at times belie God’s words. Yahweh appears not only as the God of victims but also as the God who devours victims. How the head-smashing God of the historical narratives, the psalms, and the prophets can be reconciled with the nonviolent God disclosed by Jesus still needs to be answered.&lt;/p&gt;

&lt;h2 id=&quot;hermeneutical-strategies&quot;&gt;HERMENEUTICAL STRATEGIES&lt;/h2&gt;

&lt;p&gt;Many different interpretive strategies have been employed to try to resolve this problem. One common tactic is to refuse to question anything God does, as a matter of principle, for God’s ways are higher than our ways and God’s thoughts higher than ours (Isa. 55:9). God is sovereign and holy; it is simply wrong for human beings as mere creatures to subject God’s actions to moral scrutiny.&lt;/p&gt;

&lt;p&gt;But this pious concern to save God from criticism ducks the problem. Even Abraham was prepared to challenge God’s projected violence against the inhabitants of Sodom on the ground that the judge of all the earth has a moral obligation to abide by the principle of justice. If God’s deeds are beyond all moral valuation, so that nothing God ever does can be called bad, then it is equally true that nothing God does can ever be called good, and no way finally exists to differentiate between God and the Devil. There is also no ground for challenging religious zealots today who cast themselves in the role of human agents of divine wrath on the basis that whatever God is said to have done in sacred Scripture must be inherently good.&lt;/p&gt;

&lt;p&gt;Another common strategy is to offer pleas of mitigation on God’s behalf, to find in each episode of bloodletting a justifiable reason for divine judgment. The dispossession and extermination of the Canaanites, for example, is seen as fitting punishment for their idol try and wickedness. It is also often observed that given Israel’s precarious predicament in a hostile world, God simply had to employ lethal violence to safeguard the chosen instrument of salvation for the benefit of us all. God’s violence is an example of “good violence rather than “bad violence” because it is a redemptive or salvific violence 52&lt;/p&gt;

&lt;p&gt;Such appeals to mitigating circumstances, however, come perilously close to an ends-justifies-the-means style of moral reasoning It is true that the conquest of Canaan is sometimes defended in the biblical text as deserved retribution for the idolatry of the inhabitants. But the justice of the penalty is by no means self-evident. As McEntire points out, “The inhabitants of Jericho, and Canaan in general, are never accused of anything other than two dubious transgressions. They happen to live in the land Yahweh promised to Abraham and they do not exclusively worship a god, Yahweh, who has never been revealed to them.” McEntire notes that “As punishment for these transgressions, they become victims of destructive violence.” The net result is “people minding their own business becoming dead so that nomads can become farmers.”54&lt;/p&gt;

&lt;p&gt;It is also true that the continued existence of Israel as a holy people is of overriding importance to the story of salvation and that God favored their interests for the ultimate good of all humanity. But it is extremely doubtful that every episode of divinely sanctioned blood shed was critical to the maintenance of Israel’s national and religious integrity. Sometimes relatively minor infractions attract massive retribution while at other times mercy is extended to serious breaches of covenantal boundaries. It also needs saying that the ease with which some interpreters defend the necessity and morality of the “redemptive violence” employed in biblical history attests to an imaginative failure on their part to recognize the hideous suffering endured by its victims. Christian readers recoil in horror at the Christmas story of Herod’s slaughter of the infant boys in Bethlehem, yet often barely flinch when reading of God ordering the massacre of the Amalekite infants, and some two centuries after the offense for which the people were allegedly being punished.” Readers may delight in the sparing of Rahab and her family when Joshua “fit de battle of Jericho” but spare no thought for all the other inhabitants of the city who were devoted to destruction by the edge of the sword, both men and women, young and old, oxen, sheep, and donkeys” (Josh. 6:21).&lt;/p&gt;

&lt;p&gt;A third interpretive strategy is to sanitize the real-life violence of the biblical text by allegorizing or spiritualizing it. There is a long and venerable approach to biblical interpretation that is so convinced of the text’s divine origins that where the literal sense of the words pro duces impossible results, one must look for a deeper allegorical meaning, a meaning, as Origen put it, that is “worthy of God.” By this method stories of war and mayhem are transposed into uplifting moral and spiritual truths. But despite its impressive pedigree, allegorization is hardly a viable method in the modern world for dealing with offensive texts. Moreover, even if the allegorical meaning may be counted as worthy of God, the literal historical meaning remains deeply problematic.57 Allegorists and Sunday school teachers may find comforting spiritual messages disclosed by violent texts, but the texts themselves were initially intended to portray and validate actual bodily suffering and death.&lt;/p&gt;

&lt;p&gt;Yet another hermeneutical strategy is to dismiss the violent portrayals of God in the biblical text as historically and theologically false. They are the product of the biblical authors projecting onto God their own violent fantasies and vengeful impulses, seeking to justify human atrocities by claiming God decreed them. God thus gets the blame for what in reality were acts of human malice. This means that rather than blithely accepting the truthfulness of everything the text says about God as guaranteed by divine revelation, it is important to separate the wheat from the chaff, to distinguish the voice of divine truth from the voice of human self-deception.58 Nelson-Pallmeyer makes this point with uncompromising clarity:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Bible tells us more about human beings than it does about God, and it does so even when it claims to be talking about God. Revelation within the biblical story, in my view, is rare, and often overwhelmed by distorted human projections. The Bible is both sacred and dangerous. It is sacred because God is revealed partly within the experiences of those responsible for its pages. That is why many of us return to it day after day and year after year in search of meaning and guidance. It is also a dangerous book because we often ascribe divine will to the many human distortions it contains. We undermine the sacredness of the Bible and fuel its dangers whenever we fail to discern the difference between distortion and revelation…. Stated simply, the Bible can inform our religious experience, but it is often wrong about God.99&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Work of Jesus Christ in Anabaptist Perspective For Nelson-Pallmeyer it is not enough just to recognize the metaphorical character of the violent images used for God. Violent metaphors must be utterly repudiated as false and abusive. They distort the truth of God and should be expunged from the language of theology and worship. Other scholars, however, warn against discarding such morally offensive material, for, as John Collins suggests, violent texts still possesses revelatory power insofar as they give “an unvarnished picture of human nature and of the dynamics of history, and also of religion and the things that people do in its name.” 60&lt;/p&gt;

&lt;p&gt;This fourth hermeneutical strategy is helpful in alerting us to the complexity of the interface between divine revelation and human reception. Comprehending God’s self-disclosure in the biblical narrative is like following a fine silver thread woven into a dense and colourful tapestry, a tapestry embroidered from a wide range of human reflections and actions that are always culturally conditioned and ideologically slanted. Accordingly, just because God’s permission is frequently evoked by biblical figures does not necessarily mean that God has spoken in every one of those instances. Yet how do we make allowance for this possibility without remaking God in our own image? How do we avoid simply favoring those parts of Scripture that suit our own prejudices and biases and discarding the rest as false projections, thus reducing the text to an echo-chamber of modern liberal values and preconceptions? And how is the canonical status of the text sustained if we accept only the nice bits?&lt;/p&gt;

&lt;p&gt;The violence of God material is not easily separable from other more peaceful conceptions of divine activity. In one form or another, divine violence is woven into warp and woof of almost the entire biblical tradition. The self-same texts that extol God’s graciousness and mercy and forgiveness and slowness to anger, also warn of God visiting the iniquity of the parents on their children for three or four generations.61 No wonder Nelson-Pallmeyer is forced to conclude that revelation is rare in the Bible.&lt;/p&gt;

&lt;p&gt;This brings us to a final, and more promising, hermeneutical strategy, one that allows for a substantial change in God’s relation ship to violence in the course of the biblical story. In this approach the violent texts are not to be rejected as a simple distortion of divine reality. They are a reliable reflection of how God was experienced at this time. Amid the violence that pervaded human life and society, people encountered God as someone directly involved in the messiness of human life and conflict. They knew that God abhorred the squander ing of human life, for it was invested it with sacred significance. Yet they also wanted a God who would employ coercive power in great measure to punish, protect, and correct. Elijah, for instance, invited God to cast fire down from heaven to consume his opponents, for this was how any self-respecting deity should prove his superiority when challenged by competitors. 62&lt;/p&gt;

&lt;p&gt;With the coming of Jesus, a fresh experience of God is afforded. When Jesus’ disciples wanted to emulate Elijah by calling down fire on a Samaritan village, Jesus “turned and rebuked them. He did so not simply because such an extreme reprisal would be unfair in this particular circumstance, but because he considered violent vengeance to be wrong in principle and because he knew that God should no longer be understood to work in this way. God has disarmed! God’s perceived involvement in the infliction of violence is over. God no longer fights fire with fire. God has changed – or, perhaps more accurately, the human experience of God’s association with violence has changed. God will no longer permit his identity to be defined by violence; God actively repudiates the violent behavior which has hitherto clouded his character so that the duplicity of violence itself may be exposed and defeated.&lt;/p&gt;

&lt;h2 id=&quot;gods-changed-relationship-to-violence&quot;&gt;GOD’S CHANGED RELATIONSHIP TO VIOLENCE&lt;/h2&gt;

&lt;p&gt;I noted earlier that the creation narratives presuppose a divine ontology of peace. Violence is neither part of God’s creative activity nor of God’s internal being. Violence appears only after the human community has fallen into sin. Interestingly the subsequent account depicts an initial reluctance on God’s part to employ violence, then a decision to do so, followed by a recoiling from its drastic consequences. This imaginative portrayal of divine ambivalence toward violence in the early scenes of the human story is, I suggest, an important key for understanding what follows. It dramatizes a profound insight into the perversity of violence, namely, that once violence is entrenched in human society, even the sacred is captured by its allure. Once “the earth is filled with violence” (Gen. 6:11,13), humanity’s apprehension of the divine is inescapably framed by its desire to have a deity whose power is greater than that of human violence and whose greatness is shown precisely in a heightened capacity for violence. The violence-of-God material that pervades the biblical narratives is thus symptomatic of this capture while also disclosive of it.&lt;/p&gt;

&lt;p&gt;God’s reply to Adam and Eve’s disobedience is not, at first, a violent one. Along with other consequences they are banished from the Garden to prevent their fallen condition from becoming everlasting (Gen. 3:22-24). When in the second generation the problem of sibling rivalry arises, God tries to warn Cain off from succumbing to his feelings of jealousy and resentment, but without success. Sin is personified as a hungry animal lying at the door ready to spring (4:6-7). It is so powerful that it overcomes the will of God and overtakes the passions of Cain, and he turns to violence. After Cain murders his brother, God still does not respond violently; instead the Lord acts to protect the life of the killer, though now threatening sevenfold vengeance against any who disregards the protective mark on Cain (4:15). God’s next response to human sinfulness is to impose a 120 year limit on the human life span (6:3) and to express regret over the decision to create human beings in the first place (6:6). But as violence spins out of control and fills the land, God plans, for the first time, an act of violent retribution in which “everything that is on the earth shall die” (6:17). In due course God carries out the plan, blotting out all but a tiny handful of creatures (7:21-24).&lt;/p&gt;

&lt;p&gt;Afterward, however, God is deeply disturbed by the indiscriminate nature of the punishment employed. Non-human creation has been made to bear the brunt of humanity’s sin. At the same time, God recognizes that wiping out sinful people still has not actually removed the problem of sin, “for the inclination of the human heart is evil from youth” (8:21, cf. 6:5). God therefore promises never again to curse the ground and destroy all living creatures because of human evil (8:21-22; 9:11, 15). As McDonald observes, “God tried violence once and now knows better.”God then makes two telling concessions to the descendants of Noah: humans may now kill animals for food (9:3-4), and those who take human life will face the death sentence (9-5-6), an attempt to use judicially circumscribed violence to break the spirit of vendetta displayed earlier by Lamech (4:23-24). In a sense, God makes a compromise with violence. Lethal violence in the human community is forbidden, but those who resort to it can expect God to respond in like manner.&lt;/p&gt;

&lt;p&gt;The patriarchal narratives that follow are remarkably peaceful. There is very little violence described at all, although God is often involved in what does occur, such as the destruction of Sodom and Gomorrah, and God’s long-term plan to dispossess the Canaanites of their land is frequently alluded to. Violence only becomes more pronounced during and after the deliverance from Egypt, and especially during the conquest of Canaan where, as we have seen, genocide is commanded. Thereafter in the waxing and waning of Israel’s fortunes, God is frequently depicted as the author and instrument of violence, ranging from incidents of individual retribution to episodes of large-scale war-making.&lt;/p&gt;

&lt;p&gt;God’s actual responsibility for authorizing this violence is, of course, doubtful, if not impossible. It is a standard feature of biblical idiom to ascribe a causative role to God for almost everything that happens, both good and bad, as well for narrators to assume a God’s eye perspective in interpreting events. It is crucial to recognize this interpretive technique. Raymund Schwager divides the texts that speak of God’s violence in the Old Testament into four categories: those where Yahweh strikes out irrationally for no apparent reason (which are extremely rare), those where God personally takes revenge on human wrongdoing, those where God uses other human beings to punish evildoers, and those where the wicked are punished by their deeds rebounding back on them under God’s supervision.”1&lt;/p&gt;

&lt;p&gt;But the distinction between these categories is more rhetorical than real, for the narrative texts show that even where God’s direct retribution is talked of, it is almost always mediated through human instruments.72 Both direct and indirect divine violence amount to the same thing; “it is always a question of human power interpreted as God’s action.”73 Direct heavenly intervention is rare, though it does happen (and presumably here natural calamities are being attributed to God).74 Much the same applies to those texts which speak of self punishment. The penalty may be conceptualized as the inherent con sequence of a wrongful deed boomeranging back on the doer, but in practice the penalty might still be inflicted by another person or be initiated by God.75 While violence, then, is explicitly ascribed to God in the biblical text, it is almost always committed by human beings. Texts on Yahweh’s violence normally refer to human deeds that are thought in some way to be related to God’s will, so that we may safely assume that “human violence is meant when there is talk of divine anger and retribution.”76&lt;/p&gt;

&lt;p&gt;But why is it that human violence is so naturally identified with the action of God? Why is God conceived as the author of so much carnage? Why are harmful human experiences viewed as the punishments of God? Part of the answer lies in the desire to affirm God’s transcendent immanence in all of historical experience, and part of it lies in the corrupting impact of violence itself. Such is the intrinsic nature of violence that once unleashed it changes everything, including humanity’s experience of God. In the Genesis story God is initially portrayed as one who resists and opposes violence, albeit without success. But as violence grows and spreads God is driven to counter-violence. Once this step is taken however, God is enmeshed in the very problem that needs addressing.77&lt;/p&gt;

&lt;p&gt;Redemptive violence takes on an irresistible logic of its own, that even the knowledge of God falls victim to it. It is almost as if it is imagined that God compromises with violence, God ends up being compromised. Consistently in the Bible the experience of violence changes people’s identity, the way individuals are perceived and known and relate to one another. The same happens to God’s identity, as the peaceable God of creation is inexorably defined in militant and aggressive ways. Counter-themes of love and mercy and forgiveness and restraint are always present, but the larger conceptual framework fundamentally remains one of redemptive violence.&lt;/p&gt;

&lt;p&gt;Once conceived as violent, God’s only option is to tarry with humanity in its misconceptions to win redemption by other means. God is forced to accommodate revelation to the limitations of human perception, not least so that the ultimate futility of redemptive violence – already intimated in Genesis 8:21 – might become apparent. 79 In the process horrendous acts of violence are attributed, or misattributed, to God. But God’s apparent capture by the categories of sacred violence becomes the precondition for exposing violence for what it is – an enslaving and self-perpetuating deception that contaminates all that it touches, including knowledge of God. With the coming of Jesus however, God finally casts off the illusions surrounding righteous violence to disclose “the plan of the mystery hidden for ages in God who created all things” (Eph. 3.9) – to reconcile all things by an act of self-giving, nonviolent, victorious love. Significantly this requires God-in-Christ personally to fall victim to divinely sanctioned lethal violence, making it plain once and for all that God-authored violence is a falsity, that “whenever sacred violence is mentioned, it is always human beings attacking one another.” 82&lt;/p&gt;

&lt;p&gt;It is God’s definitive renunciation of redemptive violence in the life, death, and resurrection of Christ that requires us to re-read the earlier biblical narratives of divine violence in such a way that God can no longer be seen as the ultimate author of the cruelty and killing they record. Certainly these bloody narratives attest to God’s providential presence amid human degradation. But insofar as they ascribe to God responsibility for acts of barbarism, they attest only to the veil of violence through which the experience of God has been filtered since the days of Cain. In Christ, however, the veil is taken away and God stands fully revealed.&lt;/p&gt;

&lt;p&gt;I am suggesting then that the biblical accounts of divine violence are both true to how God was experienced following the entry of sin, yet ultimately untrue to God’s real character. In this respect they are hermeneutically complex. It could be objected that allowing for such misrepresentation of God’s initiative in violence by the biblical authors undermines the authority and trustworthiness of the scriptural text. But this is not necessarily so. The text remains trustworthy in that it reliably discloses how God has been apprehended in history and how God perseveres with human fallibility. Those passages that ascribe violence to God should not be censored or sanitized or discarded; instead they should be read with a “critical charity” that embraces them, for all their gruesomeness, as a gift of God to aid in our instruction and formation. But neither should such passages be absolutized as an unassailable revelation of God’s true being; that role belongs to Christ alone.&lt;/p&gt;

&lt;p&gt;Objections might also be raised to the notion of God being “captured” by the mythology of violence, of God allowing the divine identity to be clouded by images of vengeance and viciousness. But this phenomenon can be seen as testimony to the seriousness of the cognitive and moral distortions created by the entry of sin and the irruption of violence (cf. Rom. 1:18-23). Also there are precedents within Scripture itself for questioning whether established understandings of God’s behavior are truly consonant with the character of God. Jeremiah, for example, despite repeated affirmations in sacred tradition that God employs the practice of collective punishment, extending down through many generations,85 looks forward to the day when this will no longer be so,86 and Ezekiel is rebuked by God for failing to see that the principle no longer applies.87&lt;/p&gt;

&lt;p&gt;An even more instructive analogy is the way in which the apostle Paul rethinks the role of the law in salvation. Paul faces a hermeneutical dilemma similar to the one explored above. He discovered that when God played his trump card in Jesus Christ, it looked disconcertingly different from what God’s hand had hitherto looked like. Until that point, God had insisted that obedience to the Torah was the in dispensable source of righteousness for the chosen people and the ground of hope for Israel’s redemption. The law was central to God’s saving purposes. But then something unexpected happened. When God finally intervened to secure salvation for Israel, it took place “apart from the law,”88 in some respects even contrary to the law.&lt;/p&gt;

&lt;p&gt;Paul was therefore forced to think his way through how and why God’s familiar ways in the past had altered so dramatically. The zealous young Pharisee, who himself had been prepared to use righteous violence to defend and uphold the law, 89 was compelled to read the Scriptures afresh, to interpret them from a new perspective, to discern in them a new understanding of God hitherto hidden from sight but now revealed through his son. In doing so Paul suggests a relation ship between God, sin, death, and the law that parallels, in broad outline, the relationship between God and violence I have sketched above.&lt;/p&gt;

&lt;h2 id=&quot;pauls-treatment-of-the-law-as-a-hermeneutical-precedent&quot;&gt;PAUL’S TREATMENT OF THE LAW AS A HERMENEUTICAL PRECEDENT&lt;/h2&gt;

&lt;p&gt;The meaning and self-consistency of Paul’s extensive reflections on the place of the Mosaic law in the Christian era is a storm center in current Pauline scholarship. Over the last twenty-five years, the so called “New Perspective on Paul” has thrown up a series of objections to the traditional or “Lutheran” understanding that has dominated the interpretation of Paul since the time of the Reformation. Yet the New Perspective is itself coming under sustained criticism, with some scholars claiming that it lacks the theological depth and exegetical precision of the traditional model. No consensus has yet emerged, although there is a growing feeling that some mediating position is required that combines the insights of both older and the newer perspectives. There is no room here to explore this further. Suffice it to say that any satisfactory explanation of Paul’s critique of the law must, in my opinion, do justice to three main realities: the diversity of views on the Torah in first-century Judaism, Paul’s radical commitment to Gentile inclusion in the messianic community, and the apostle’s darkly pessimistic view of the human condition. All three inform and shape his reconsideration of the role of the law in God’s purposes, now that the Messiah has appeared.&lt;sup id=&quot;fnref:rephrase&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:rephrase&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;16&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;It is noteworthy that Paul approaches the issue within a narrative framework. That is to say, he reads Scripture primarily as a story, with an overarching plot, a set of characters, and a forward-reaching momentum that climaxes in the life, death, and resurrection of Christ. Paul recognizes that there are different ways of interpreting this story. As a Pharisee, he read the biblical story through the lens of the Torah, with Moses being the key actor in the drama and Israel’s holiness being its central concern. Now as a Christian, Paul has learned to read the story through the lens of Jesus Christ, with Abraham being the key figure and the eschatological uniting of Jew and Gentile in a new covenant community being its true message. Of course, for Paul, these two readings of the biblical narrative are not equally valid. The former is the product of viewing Scripture through a “veil” of ignorance, of lacking true enlightenment about the real import of God’s saving righteousness. Only in Christ is this veil removed; only in him do the lights come on. Only then does the true meaning of God’s activity in preceding history come clearly into view.&lt;/p&gt;

&lt;p&gt;From this hermeneutical vantage point, Paul is able to see the Torah in a completely new light. Once he viewed the law as God’s answer to Adam’s sin, the gracious means by which Israel could recover humanity’s true role in the world and secure admission to the world to come. Now, however, Paul considers the law to be part of the problem, not part of the solution. Paul faults the law on three main counts. First, the law has proven powerless to free God’s people from the grip of sin. Far from controlling sin, as God intended, the law actually makes the situation worse, because it simultaneously highlights Israel’s accountability to God’s requirements (Rom. 2:12; 3:19) and her impotence to achieve genuine righteousness no matter how sincerely she strives for it (9:31, cf. 2:17-29). Consequently the law cannot deliver the hoped for vindication; on the contrary it brings “the knowledge of sin” (3:20; 5:13; 7:7), the weight of God’s wrath (4:15), and the inevitability of God’s curse (Gal. 3:10). More than that, it actually exacerbates human sinfulness. The law functions to stir up the very passions it condemns (Rom. 7:5), so that the coming of the law resulted in trespasses being multiplied rather than being reduced (5:20).&lt;/p&gt;

&lt;p&gt;The reason for this sorry state of affairs is that the law, for all its divine qualities, is unable to overcome the indwelling and all-pervasive power of sin (3:9-18; 7:14-25; Gal. 3:22). The law is fatally “weakened by the flesh” (Rom. 8:3; 7:14, 25); it is stymied by that fallen human condition that “does not submit to God’s law, indeed it cannot” (8:7). The law has even become a weapon in the hands of sin (7:7-13), so much so that Paul can boldly declare that “the power of sin is the law” (1 Cor. 15:56, cf. Rom. 7:22-23). What God intended for life has become a vehicle of death. The source of the problem is not the law itself, which Paul considers to be “holy, just and good” (Rom. 7:12, 14, 16). The problem is the deep-rootedness of sin, which lies beyond the reach of any external legal code, even one given by God.&lt;/p&gt;

&lt;p&gt;The second problem Paul finds with the law is that it is limited to one ethnic community. Notwithstanding the ironical tone of his comments, Paul accepts the premise that the law was given uniquely to Israel to enable her to be “a guide to the blind, a light to those who are in darkness, a corrector of the foolish, a teacher of children, having in the law the embodiment of knowledge and truth” (Rom 2:19-20). But this mission has been subverted by Israel’s failure to practice what she preaches, so much so that Paul can even charge the covenant people with causing God’s name to be blasphemed among the Gentiles (2:24). What Israel’s track record proves, Paul argues, is that sin is no respecter of ethnic boundaries. Nor, conversely, is the capacity to perceive and obey God’s will. Paul believes that it is quite possible for uncircumcised Gentiles, who do not possess the Torah, “instinctively to do what the law requires” since “what the law requires is written on their hearts, to which their own conscience bears witness” (2:14-15, 27).&lt;/p&gt;

&lt;p&gt;So law and righteousness are not co-extensive realities; there is no necessary overlap. If there were, justification could legitimately come through the law and Gentiles would need to become observant Jews to appropriate it. But Israel’s own servitude to sin proves that this is not the case. In any event, even if it were the case, an additional problem would arise, for God would then be reduced to the status of a tribal deity rather than universal lord, and God’s promise to bless all the nations of the world through Abraham would be null and void (4:9-16; Gal. 3:15-22). If the unity, sovereignty, and justice of God – to which the law itself bears witness – are to be vouchsafed, justification must come by some means other than the law. It must potentially be open to every member of the human family.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;For we hold that a person is justified by faith apart from works prescribed by the law. Or is God the God of Jews only? Is he not the God of Gentiles also? Yes, of Gentiles also, since God is one; and he will justify the circumcised on the ground of faith and the uncircumcised through that same faith. Do we then overthrow the law by this faith? By no means! On the contrary, we uphold the law. (Rom. 3:28-31, cf. 10:11-13)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The third problem Paul has with the law is that an overriding emphasis on law-keeping shifts the spotlight from God’s empowering grace to autonomous human achievement, Paul is adamant that justification cannot come from reliance on the works of the law. Now it is true that by this phrase Paul most likely has in mind ceremonial practices such as circumcision, food laws, purity regulations, and Sabbath observance which served visibly to demarcate the boundary between the law-keeping covenant community and the Gentile world. He is not thinking of legalism in a moral sense but of proud reliance on badges of ethnic distinction. He is not accusing Judaism of advocating an individualistic works-righteousness whereby people can earn their own salvation by merit. He is more likely targeting some conception of national-righteousness, whereby adoption of certain Jewish distinctives was thought essential to securing final vindication. Even so, Paul still recognizes the potential for a law-centered spirituality to over-emphasize human capability and to underestimate the insidiousness of sin and the necessity of grace.&lt;/p&gt;

&lt;p&gt;Viewed from the perspective of law-keeping, sin tends to get equated with a set of external behaviors that can be avoided with sufficient vigilance, rather than being recognized for what it really is – a deadly poison that permeates the entire life-system of humanity, a cosmic power that enslaves all humanity by habituating everyone to self-centeredness and idolatry.93 A certain kind of complacency can therefore emerge that is so assured of its own sincerity that it underrates the unmerited nature of grace (cf. Phil. 3:4-16). This is partly why Paul sets law and grace in such stark opposition.&lt;/p&gt;

&lt;p&gt;The only solution to this predicament, Paul argues, is the rupturing of sin’s lordship and the radical renewal of human nature from the inside out so that God’s law is written on the human heart by means of the indwelling of the Spirit. This is exactly what Christ achieves through his death and resurrection on behalf of all humanity, as a kind of second Adam.95 Those who participate through baptism in Christ’s victory (Rom. 6:1-14) are empowered by the eschatological Spirit to fulfil the true intention of God’s law (8:1-4). That intention is a life of freedom wholly devoted to the love of God and the love of neighbor, including even the love of enemies (12:9-21). Paul saw his own life experience as proof of this. Once supremely zealous for God’s law, he perpetrated violence on God’s behalf. Now graciously freed from the grip of sin through faith in Christ, he proclaims the peace of God, even taking up the cause of his former opponents in the interests of universal reconciliation.&lt;/p&gt;

&lt;p&gt;In light of this analysis, Paul concludes that the regime of law was only ever intended by God as a temporary holding measure, until Christ should come (Gal. 3:19-26). It served negatively to imprison all under sin (Gal. 3:22; Rom. 10:32) in preparation for the great liberation which Christ would win through his vicarious death and resurrection. Those united with Christ in this way are no longer “under law but under grace” (6:15). They have “died to the law” (7:4; Gal. 2:19), they are “discharged from the law” (7:6), they are “freed” and “redeemed” from the law (Gal. 3:13; 4:5;5:1), they are “no longer subject” to the law’s rule (Gal. 3:25) or its condemnation (Rom. 8:1). “For Christ is the end-goal [&lt;em&gt;telos&lt;/em&gt;] of the law” (10:5). Things have changed!&lt;/p&gt;

&lt;p&gt;In none of this, of course, is Paul wrestling with the problem of divine violence (he is actually struggling to make sense of the prodigiousness of God’s mercy!) But there are several features of Paul’s approach to the law that constitute a kind of hermeneutical template for the type of approach to divine violence I have advocated above. To begin with, in both cases, the presenting problem is a substantial shift in God’s &lt;em&gt;modus operandi&lt;/em&gt; from what was apparent in previous tradition. Paul openly acknowledges that God’s methods have changed. This is implicit in the ringing adversative declaration “But now, apart from law…” that commences his account of the revelation of saving justice in Christ in Romans 3:21-26. It is also evident in the way he divides Israel’s story into sequential phases (Adam to Abraham, Abraham to Moses, Moses to Christ), with the law entering 430 years after the promise to Abraham and serving as a disciplinarian “until Christ came,” after which time “we are no longer subject to a disciplinarian” (Gal. 3:15-26). Paul thus allows for real change in God’s ways.&lt;/p&gt;

&lt;p&gt;The sheer radicalism of this change ought not to be underestimated. It required for Paul a thoroughgoing revision of understanding of what had hitherto been the most fundamental ingredients of covenantal faithfulness-circumcision, Sabbath observance, food laws, and separation from all sources of impurity, including Gentiles. That the apostle can boldly declare that “I know and am persuaded in the Lord Jesus that nothing is unclean in itself” (Rom. 14:14) and that “neither circumcision nor uncircumcision is anything but a new creation is everything” (Gal. 6:15), is a measure of the extent to which he reckoned on a major revolution having occurred in God’s way of working.&lt;/p&gt;

&lt;p&gt;Second, in problematizing the law Paul seeks an explanation that both accords with the plot of the canonical story and explains why God appears to act differently than previously thought, which is exactly what I have said is needed to deal with the issue of divine violence. Paul accepts that radical changes have taken place in God’s priorities, but he is equally emphatic that there is a profound consistency between the realities of the present and the revelation of the past. The “new creation” afforded in Christ is not arbitrary or capricious; it accords with the deepest themes of the previous story. It is both “at tested by the law and the prophets” (Rom. 3:21, 31) and compatible with God’s own being (3:29). That authentic righteousness can come “apart from the law,” Paul argues, is already evident in the story of Abraham as a foreshadowing of what was to come (4:1-25), and it is only by transcending the limitations of Mosaic law that the promise of universal blessing to Abraham can possibly be realized (Gal. 3:6-17).&lt;/p&gt;

&lt;p&gt;The negative role of the law is thus balanced by its positive role in anticipating and illuminating eschatological events.” Even Moses can now be heard to speak of “the word of faith that we proclaim” (Rom 10:8): It is the fulfillment of eschatological hope in Christ and the Spirit that accounts for why God’s activity now seems so different. It is also what impels Paul to read the canonical story afresh to discern in it a meaning and dynamic once hidden from view. A similar strategy is needed, I have suggested, with respect to the narratives of divine violence.&lt;/p&gt;

&lt;p&gt;Finally, and most tellingly, Paul does not shrink from depicting God’s law as having been captured by the power of sin and becoming a source of enslavement and death. The law itself, Paul is clear, is imbued with the very attributes of God; it is “holy, just, and good,” it is even “spiritual” (Rom. 7:12, 14, 16). But regardless of its divine credentials the law has been bamboozled by sin. Seizing the opportunity created by the revelation of God’s will, sin commandeered the law to deceive and kill its adherents (7:11). Consequently, despite its intrinsic goodness, and despite its promise of life to those who observe its commandments, the law has in effect functioned to lock in, as it were, Israel’s servitude to sin and death.&lt;/p&gt;

&lt;p&gt;This is an incredibly daring claim for Paul to make! He asserts that not only has Gentile humanity’s knowledge of God been corrupted by the tyranny of sin (1:18-23, cf. 1 Cor 1:20-25), even Israel’s apprehension of God’s intentions in the law has fallen victim to sin’s death-dealing deception. It is only by taking this insight with full seriousness that we can begin to make sense of the attribution of violence to God in the biblical record. Arguably part of sin’s deception is the identification of human violence with the will of God. Jesus Christ explodes this deception, and in him a new humanity emerges that is now in the process of “being renewed in knowledge according to the image of its Creator” (Col. 3:10).&lt;/p&gt;

&lt;p&gt;In these ways, then, Paul’s grappling with the ambiguities of the law in salvation history furnishes something of a hermeneutical analogy for the approach to divine violence sketched out in this chapter. To be absolutely clear: I am not suggesting that Paul’s ruminations on the law in themselves relate to the issue of God’s recorded violence, only that he models a style of hermeneutical engagement with Scripture that can be usefully reapplied to this question. Whether the biblical stories of violence caused any discomfort for the apostle is hard to say. Certainly he never explicitly disavows a violent God. If anything, the real scandal for Paul was not the violent exclusivity of God’s past actions but the gratuitous inclusiveness of God’s saving activity in the present. When Paul takes refuge in the inscrutability of God’s ways it is not to justify divine violence but to underscore the mystery of God’s indefatigable mercy, a mercy displayed equally toward disobedient Israel and toward wider Gentile humanity (Rom. 11:28-36).&lt;/p&gt;

&lt;p&gt;Paul may never have consciously reflected on how best to reconcile this present experience of God’s mercy with past episodes of grotesque violence. But it was his apprehension of the crucified and risen Christ as the “image of the invisible God” (Col. 1:15) that trans formed Paul from a violent religious zealot into a peacemaker extraordinaire. It was this that led him to speak distinctively of God as “the God of peace, “100 the God who has reconciled the entire world to God’s self not by violent conquest but by self-giving sacrifice. This crucified God is the same God who made the world and everything in it, the same God who called Abraham and chose Israel, the same God that Jesus called Father, and the same God to whom Jesus pointed his followers as the supreme paradigm for the way of nonviolent discipleship.&lt;/p&gt;

&lt;h2 id=&quot;endnotes&quot;&gt;ENDNOTES&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; As Dale C. Allison Jr. notes,”… the problem of conflicting theologies was not born with Christianity. The problem was already internal to Judaism …. If, after Marcion, the issue for Christians became which God to a edge, this was only a later variant of the earlier question, Which texts should we sanction?” “Rejecting Violent Judgment: Luke 9:52-56 and its &lt;em&gt;Journal of Biblical Literature&lt;/em&gt; 121/3 (2002): 459-78 (at 478).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; See J. Denny Weaver, &lt;em&gt;The Nonviolent Atonement&lt;/em&gt; (Grand Rapids, Mich: Wm B. Eerdmans, 2001). I am in general sympathy with the direction of Weaver’s argument, though I depart substantially from his reading of the New Testament evidence. See my “Atonement, Violence, and the Will of God,” Mennonite Quarterly Review 76/1 (2003):67-90.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.&lt;/strong&gt; See for instance. Miroslav Volf, &lt;em&gt;Exclusion and Embrace: A Theological Ex planation of Identity, Otherness, and Reconciliation&lt;/em&gt; (Nashville: Abingdon Press, 1996), esp. 275-306. Cf. also Kenneth R. Chase, “Christian Discourse and the Humility of Peace,” in &lt;em&gt;Must Christianity Be Violent? Reflections on History, Practice, and Theology&lt;/em&gt;, ed. Kenneth R. Chase and Alan Jacobs (Grand Rapids, Mich.: Brazos Press, 2003), 119-34 (esp. 128-31); Dan McKanan, “Is God Violent? Theological Options in the Antislavery Movement,” in &lt;em&gt;Must Christianity Be Violent?&lt;/em&gt;, 50-68&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.&lt;/strong&gt; Walter Wink, &lt;em&gt;Engaging the Powers: Discernment and Resistance in a World of Domination&lt;/em&gt; (Minneapolis: Fortress Press, 1992), 1-31; idem, The Powers That Be Theology for a New Millennium (New York: Doubleday, 1998), 63-81. 7. Heb 10:31&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7.&lt;/strong&gt; Heb 10:31&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11.&lt;/strong&gt; Col. 1:15, 19, cf. 2 Cor. 4:4&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14.&lt;/strong&gt; Col. 1:16&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;15.&lt;/strong&gt; N.T. Wright offers a powerful presentation of Jesus’ nonviolent opposition to Rome in &lt;em&gt;Jesus and the Victory of God&lt;/em&gt; (London: SPCK, 1996). But he stops short of grounding it in any distinctive apprehension of God’s character by Jesus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;16.&lt;/strong&gt; Matt. 5:44-48&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;23.&lt;/strong&gt; John C. Haughey, “Jesus as the Justice of God,” in &lt;em&gt;The Faith that Does Justice: Examining the Christian Sources for Social Change&lt;/em&gt;, ed. J.C. Haughey (New York: Paulist Press, 1922), 279. See also Marshall, &lt;em&gt;Beyond Retribution&lt;/em&gt;, 259-63.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;24.&lt;/strong&gt; Col. 1:16-17&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;26.&lt;/strong&gt; Gen. 4:8; Rev. 21:3-4,24; 22:2&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;28.&lt;/strong&gt; Gen. 4:1-16&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;29.&lt;/strong&gt; Gen. 4:23-24;65-7, 11-13&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;30.&lt;/strong&gt; Gen. 7:1-24;8:21-22:9:11-17&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;31.&lt;/strong&gt; This is not to deny that the canonical tradition is full of tensions, disagreements, contradictions, and revisions. Later biblical authors and tradents felt free to disagree with the perspective of their predecessors on certain theological positions even while accepting the authority of the tradition they bequeathed. Indeed, the authority of the tradition is shown precisely in the commitment of later recipients to engage in radical rethinking of its meaning and implications. See further Ellen F. Davis, “Critical Traditioning: Seeking an Inner Biblical Hermeneutic,” &lt;em&gt;Anglican Theological Review&lt;/em&gt; 82/4 (2000): 733 51.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;32.&lt;/strong&gt; Of course, legendary elements may well exist in the tradition. As Simon De Vries notes, “Battle and war passages in the Old Testament range from the legendary to the mythical, to the realistic and immediate, from the schematic and ideological, to the bizarre and apocalyptic.” – “Human Sacrifice in the Old Testament: in Ritual and Warfare,” in &lt;em&gt;Destructive Power of Religion&lt;/em&gt;, ed. Ellens, 1:99-121 (at 120).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;33.&lt;/strong&gt; Exod. 15:1-3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;34.&lt;/strong&gt; Schwager, &lt;em&gt;Must There be Scapegoats?&lt;/em&gt;, 47-71.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;35.&lt;/strong&gt; Jack Miles, “The Disarmament of God,” in &lt;em&gt;Destructive Power of Religion&lt;/em&gt; ed Elkins, 1:123-167 (at 147).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;36.&lt;/strong&gt; Num. 11:1-6; 14:10-12; Deut. 1:34-40&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;37.&lt;/strong&gt; Num. 12:1-16; 14:10-12; 16:41-50, 25:6-9, cf. Exod. 11:4-5; 12:12,13, 23, 37&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;38.&lt;/strong&gt; Mark McEntire, &lt;em&gt;The Blood of Abel: The Violent Plot of the Hebrew Bible&lt;/em&gt; (Macon, Georgia: Mercer University Press, 1999), 61-62.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;39.&lt;/strong&gt; Relevant texts include Exod. 17:8-13; Num. 21:1-3, 23-24; Deut. 2:30-35; 7:2-6; Josh. 6: 1-16,7:1, 24-26a; Judg. 3:16-25; 4:6-7,9-10, 13-15, 17, 21-22; 15:4 8,1 Sam. 17:12-18:2; 31:1-13; 2 Sam. 18-6-9, 14-15; 1 Kings 22:31-38; 2 Kings 9:30-35; Isa. 2:4; Mic. 4:3; Ezek. 38:14-23; Joel 3:9-10; 2 Chron. 149-15&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;40.&lt;/strong&gt; For example, Deut. 7:2: Josh. 11:20.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;41.&lt;/strong&gt; Susan Niditch, &lt;em&gt;War in the Hebrew Bible: A Study in the Ethics of Violence&lt;/em&gt; (New York &amp;amp; Oxford: Oxford University Press, 1993), 28-89. See also John J. Collins, “The Zeal of Phineas, the Bible and the Legitimation of Violence,” in &lt;em&gt;Destructive Power of Religion&lt;/em&gt; 1: 12-33, ed. Ellens (at 13-17).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;42.&lt;/strong&gt; McDonald, &lt;em&gt;God and Violence&lt;/em&gt;, 123, 126, cf. 127, 128, 131.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;43.&lt;/strong&gt; Niditch, &lt;em&gt;War in the Hebrew Bible&lt;/em&gt;, 50. Collins is unconvinced. “Rather than respect for human life, the practice bespeaks a totalistic attitude, which is common to armies and warfare, where the individual is completely subordinated to the interests of the group.” – “Zeal of Phineas,”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;44.&lt;/strong&gt; Nelson-Pallmeyer, &lt;em&gt;Jesus Against Christianity&lt;/em&gt;, 37,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;45.&lt;/strong&gt; McEntire, &lt;em&gt;Blood of Abel&lt;/em&gt;, 90.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;46.&lt;/strong&gt; Ps. 68:20-23, cf. Habakkuk 3:13-16,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;47.&lt;/strong&gt; Amos 2:4-16; 5:127; Isa. 43:28. See Niditch, &lt;em&gt;War in the Hebrew Bible&lt;/em&gt;, 78.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;48.&lt;/strong&gt; McEntire, Blood of Abel, 114.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;49.&lt;/strong&gt; See my &lt;em&gt;Crowned with Glory and Honor: Human Rights in the Biblical Tradition&lt;/em&gt; (Telford/Scottdale, Pa.: Pandora Press U.S./Herald Press, 2001).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;50.&lt;/strong&gt; McEntire, &lt;em&gt;Blood of Abel&lt;/em&gt;, 44.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;51.&lt;/strong&gt; Gen. 18:16-33&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;52.&lt;/strong&gt; In &lt;em&gt;Violence, Hospitality, and the Cross: Reappropriating the Atonement Tradition&lt;/em&gt; (Grand Rapids Mich.: Baker Academic, 2004), Hans Boersma argues that in a sinful world violence is necessary to defend the boundaries which enable hospitality to function. In such a world, God employs “redemptive” violence, which is a “good violence” because it serves to uphold monotheism, to punish immorality, and to protect the poor and underprivileged. But Boersma makes little attempt to measure this sweeping defense of divine violence against the concrete suffering endured by its victims. See my critical review in &lt;em&gt;Stimulus&lt;/em&gt; 13/3 (2005), 51-52, which includes my own attempt to spell out the semantic parameters of the term &lt;em&gt;violence&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;53.&lt;/strong&gt; For example, Gen. 13:13; 15:16; Deut. 9:5; 20:17-18. The general perfidy of the Canaanites is pervasive in the biblical tradition, although the purported wickedness of the Canaanites is never actually substantiated within the conquest accounts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;54.&lt;/strong&gt; McEntire, &lt;em&gt;Blood of Abel&lt;/em&gt;, 118&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;55.&lt;/strong&gt; Matt. 2:16-18&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;56.&lt;/strong&gt; 1 Sam. 15:2-3, cf. Exod. 17:14,16; Num. 24:20; Deut. 25:17-19&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;57.&lt;/strong&gt; So Collins, “Zeal of Phineas,” 24-25.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;58.&lt;/strong&gt; So Anderson, “Genocide or Jesus,” 51.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;59.&lt;/strong&gt; Nelson-Pallmeyer, &lt;em&gt;Jesus Against Christianity&lt;/em&gt;, 16.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;60.&lt;/strong&gt; Collins, “Zeal of Phineas,” 25.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;61.&lt;/strong&gt; Exod. 34:6-7; Num. 14:18-19, Deut. 5:9-10&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;62.&lt;/strong&gt; 2 Kings 1:11-12, cf. Gen. 19:24; Lev. 10:1-2; Job 1:16; Ps. 97:3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;63.&lt;/strong&gt; Luke 9:54-55&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;64.&lt;/strong&gt; So rightly Allison, “Rejecting Violent Judgment,” 476.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;65.&lt;/strong&gt; McDonald, God and Violence, 54, cf. 57.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;66.&lt;/strong&gt; Gen. 12:3, 17; 14:20; 15:14-16; 18:20; 19:15-29; 22:1-19;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;67.&lt;/strong&gt; Gen. 12:7; 13:14-17; 15:16; 17:8; 22:17; 28:3-4, 13-15; 35:12; 48:4;50:24&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;68.&lt;/strong&gt; For example, Exod. 4:24-26; 2 Sam. 6:6-7. Ezek. 38:10&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;69.&lt;/strong&gt; See Lev. 26: 14-39; Exod. 12:29; Ezek, 21:3-4, 9-15; Jer. 25:32-33.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;70.&lt;/strong&gt; For example, Deut. 20:16-17; 1 Sam. 15:2-3; Isa. 19:2; Jer. 51:20-24; 21:31; Ps. 44:11-12; Zech. 8:10.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;71.&lt;/strong&gt; For example, Isa. 50:11; Jer. 44:8; Ps. 7:13-17; Prov. 8:36; 26:27&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;72.&lt;/strong&gt; See, 22:25-26; Isa. 19:2; 13:17 for example, Ezek. 21:31; Jer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;73.&lt;/strong&gt; Schwager, &lt;em&gt;Must There Be Scapegoats?&lt;/em&gt;, 63.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;74.&lt;/strong&gt; For example, Gen. 19:24; Num. 16:29-32.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;75.&lt;/strong&gt; See, for example, Isa. 64:6-7; Ps. 81:11-12.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;76.&lt;/strong&gt; Schwager, &lt;em&gt;Must There Be Scapegoats?&lt;/em&gt;, 63 (emphasis mine).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;77.&lt;/strong&gt; Whether some actual primeval act of violence by God is the reason for God’s subsequent identification with violence, or whether the flood story it self is the product of prior projection of violence onto heaven, is open to discussion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;78.&lt;/strong&gt; This is one of the major findings in McEntire’s study &lt;em&gt;Blood of Abel&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;79.&lt;/strong&gt; Cf. Wink, Engaging the Powers, 146-47.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;80.&lt;/strong&gt; God’s sovereign self-disclosure is the necessary presupposition for all and any knowledge of God. But divine revelation is also necessarily filtered through fallible human language and categories, which can distort as well as report God’s truth, and often both at the same time. For a helpful discussion of the relationship between revelation and Scripture, see William C. Placher &lt;em&gt;The Domestication of Transcendence&lt;/em&gt; (Louisville, Ky: Westminster John Knox, 1996), 181-200.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;81.&lt;/strong&gt; Jesus is condemned to death on the charge of blasphemy (Mark 14-55 64), a capital crime in Mosaic law (Lev. 24:15-16).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;82.&lt;/strong&gt; Schwager, &lt;em&gt;Must There Be Scapegoats?&lt;/em&gt;, 67.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;83.&lt;/strong&gt; Collins is clear that what makes violent religious texts dangerous is not their violent content but the certitude with which they are received by readers as divine revelation, “Zeal of Phineas,” 23-26. So too Nelson-Pallmeyer, &lt;em&gt;Jesus Against Christianity&lt;/em&gt;, 277,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;84.&lt;/strong&gt; 1 borrow this term from Ellen Davis, “Critical Traditioning.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;85.&lt;/strong&gt; Exod. 34:6-7; Num. 14:18-19; Deut. 5:9-10&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;86.&lt;/strong&gt; Jer. 31:29-30&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;87.&lt;/strong&gt; Ezek. 18:1-4&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;88.&lt;/strong&gt; Rom. 3:21; 8:1-4&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;89.&lt;/strong&gt; Gal. 1:13; Phil. 3:6; 1 Cor. 15:9; cf. Acts 9:1-2; 22:4; 26:9-11. On the violent implications of “zeal,” see Terence L. Donaldson, “Zealot and Convert: The Origins of Paul’s Christ-Torah Antithesis,” &lt;em&gt;Catholic Biblical Quarterly&lt;/em&gt; 51/4 (1989): 655-82; Vincent M. Smiles, “The Concept of ‘Zeal’ in Second-Temple Judaism and Paul’s Critique of It in Romans 10:2,” &lt;em&gt;Catholic Biblical Quarterly&lt;/em&gt; 64/2 (2002): 282-99; Mark R. Fairchild, “Paul’s Pre-Christian Zealot Associations: A Re-Examination of Gal 1:14 and Acts 22:3,” &lt;em&gt;New Testament Studies&lt;/em&gt; 45/4 (1999): 514-32. For a thematizing of the place of zeal in the biblical tradition and American self-understanding, see Robert Jewett and John Shelton Lawrence, &lt;em&gt;Captain America and the Crusade Against Evil: The Dilemma of Zealous Nationalism&lt;/em&gt; (Grand Rapids, Mich: Wm B. Eerdmans, 2003).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;90.&lt;/strong&gt; See 2 Cor. 3:12-18; Rom. 10:2-4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;91.&lt;/strong&gt; Rom. 7:5,9-10; 10:5; Gal. 2:19, cf. 3:12, 21; 1 Cor. 15:56; 2 Cor. 3:6-7&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;92.&lt;/strong&gt; Rom. 3:20, 27-28; Gal. 2:16; 32,5,10, 12, cf. Rom. 3:27:4:2,6;9:12, 32; 11:6; Eph. 29&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;93.&lt;/strong&gt; Rom. 1:18-32; 3:9-20; 5:12-21; 612-14, 20-21;7:7-25; etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;94.&lt;/strong&gt; Rom. 4:16; 5:20-21; 6:1,14; 11:5; 1 Cor. 15:10; Gal. 1:6; 2:21; 5:4; cf. Eph. 2.5-6.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;95.&lt;/strong&gt; Rom. 5:6-21; 1 Cor. 15:42-49; Col. 1:10; 3:10&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;96.&lt;/strong&gt; Rom. 5:5; 13:8-10; 14:15; Gal. 5:6, 13-14, 22-23; Phil. 1:9; 1 Cor. 8:1; 13:1-8; 16:14; Col. 3:14, cf. Eph. 4:32-35.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;97.&lt;/strong&gt; Gal. 1:13; Phil. 3:5-6; 1 Cor. 15:9; cf. Acts 9:1-2; 22:4; 26:5, 9-11.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;98.&lt;/strong&gt; See Rom. 11:28-36.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;99.&lt;/strong&gt; Cf. Rom. 4:23-24; 15:4; 1 Cor. 10:11; 9:10.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;100.&lt;/strong&gt; The phrase &lt;em&gt;God of peace&lt;/em&gt; is a favorite of Paul’s (Rom. 15:33; 16:20; 2 Cor. 13:11; Phil. 4:9; 1 Thess. 5:23; 2 Thess. 3:16, cf. Eph. 2:14), though he did not in vent it (Heb. 13:20). In early Jewish literature the phrase occurs only once (&lt;em&gt;Test. Daniel 5:2&lt;/em&gt;).&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Paul N. Anderson, “Genocide or Jesus: A God of Conquest or Pacifism,” in &lt;em&gt;The Destructive Power of Religion: Violence in Judaism, Christianity, and Islam&lt;/em&gt;, ed. J. H. Ellens (Westport, Connecticut &amp;amp; London, Praeger 2004), 4:31-52 (at 31). &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;See D. Andrew Kille, “The Bible Made Me Do It’: Text, Interpretation, and Violence,” in &lt;em&gt;Destructive Power of Religion&lt;/em&gt;, ed. Ellens, 1:55-73. See also Charles Mabee, “Reflections on Monotheism and Violence,” in &lt;em&gt;Destructive Power of Religion&lt;/em&gt;, ed. Ellens, 4:111-18. Cf. also Karen Armstrong, “Unholy Strictures,” &lt;em&gt;Guardian Weekly&lt;/em&gt; (Aug. 19-25, 2005): 13. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:8&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I attempt to construct a non-retributive view of final judgment in my &lt;em&gt;Beyond Retribution: A New Testament Vision for Justice, Crime and Punishment&lt;/em&gt; (Grand Rapids, Mich: Wm B. Eerdmans, 2001). &lt;a href=&quot;#fnref:8&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:9&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;John H. Yoder, &lt;em&gt;The Politics of Jesus: Vicit Agnus Noster&lt;/em&gt; (Grand Rapids, Mich: Wm B. Eerdmans, 1994), 228-47. &lt;a href=&quot;#fnref:9&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:10&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;J. Harold Ellens, “Revenge, Justice and Hope: Laura Blumenfeld’s Journey,” in idem, &lt;em&gt;Destructive Power of Religion&lt;/em&gt; 4:227-235 (at 235). &lt;a href=&quot;#fnref:10&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:12&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Heb. 1:2-3 &lt;a href=&quot;#fnref:12&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:13&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;John 1:3-4 &lt;a href=&quot;#fnref:13&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:17&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Luke 6:35-36 &lt;a href=&quot;#fnref:17&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:18&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Raymund Schwager, &lt;em&gt;Must There Be Scapegoats? Violence and Redemption in the Bible&lt;/em&gt; (New York: Harper &amp;amp; Row, Gracewing &amp;amp; Crossroad Publishing Company, 1987), 207. So too Wink, &lt;em&gt;Powers that Be&lt;/em&gt;, 89. Jack Nelson-Pallmeyer observes that “Jesus was not the first Jew to promote or use nonviolence when resisting injustice…. Jesus may have been the first, however, to specifically reject the violence of God as the foundation for nonviolent resistance. Rather than rooting nonviolence in the assurance of God’s ultimate and re deeming violence, Jesus saw nonviolent action as a faithful embodiment of a nonviolent God, that is, as reflective of the very Spirit that is God.” – &lt;em&gt;Jesus against Christianity: Reclaiming the Missing Jesus&lt;/em&gt; (Harrisburg, Penn.: Trinity Press International, 2001), 320. &lt;a href=&quot;#fnref:18&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:19&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Cf. Ulrich Mauser, &lt;em&gt;The Gospel of Peace: A Scriptural Message for Today’s World&lt;/em&gt; (Louisville: Westminster John Knox, 1992), 183-84. &lt;a href=&quot;#fnref:19&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:20&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Col. 1:15, 20 &lt;a href=&quot;#fnref:20&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:21&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Rom. 1:16-17;3:20 &lt;a href=&quot;#fnref:21&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:22&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Rom. 5:1 &lt;a href=&quot;#fnref:22&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:25&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Eph. 1:10 &lt;a href=&quot;#fnref:25&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:27&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Wink, &lt;em&gt;The Powers That Be&lt;/em&gt;, 44-48, at 46. Also Patricia M. McDonald, &lt;em&gt;God and Violence: Biblical Resources for Living in a Small World&lt;/em&gt; (Scottdale, Pa. and Waterloo, Ont.: Herald Press, 2004), 35-49. &lt;a href=&quot;#fnref:27&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:rephrase&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Or, to slightly reformat the prior sentences:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;Suffice it to say that any satisfactory explanation of Paul’s critique of the law must, in my opinion, do justice to three main realities:&lt;/p&gt;
        &lt;ol&gt;
          &lt;li&gt;the diversity of views on the Torah in first-century Judaism&lt;/li&gt;
          &lt;li&gt;Paul’s radical commitment to Gentile inclusion in the messianic community&lt;/li&gt;
          &lt;li&gt;the apostle’s darkly pessimistic view of the human condition.&lt;/li&gt;
        &lt;/ol&gt;

        &lt;p&gt;All three inform and shape his reconsideration of the role of the law in God’s purposes, now that the Messiah has appeared.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:rephrase&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Depression</title>
   <link href="https://josh.works/depression"/>
   <updated>2021-07-28T13:00:00+00:00</updated>
   <id>https://josh.works/depression</id>
   <content type="html">&lt;p&gt;I’m starting to write more regularly these days. For a long time, I’ve hardly written anything, or only written when external circumstances required me to write something. For example, when I give a talk, I always create a page to “support” the talk, that I can link to in slides, like &lt;a href=&quot;https://josh.works/railsconf&quot;&gt;https://josh.works/railsconf&lt;/a&gt; and &lt;a href=&quot;https://josh.works/gasb&quot;&gt;https://josh.works/gasb&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I don’t apologize (usually) when replying to email “slowly”, and when others apologize to &lt;em&gt;me&lt;/em&gt; for their own “slow response”, I send them this article: &lt;a href=&quot;https://www.thecut.com/2017/04/stop-apologizing-for-the-delayed-response-in-our-emails.html&quot;&gt;Let’s All Stop Apologizing for the Delayed Response in Our Emails&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve always written primarily for myself (current and future versions of me) and this post is no exception. It’s about depression, and my experience with it.&lt;/p&gt;

&lt;p&gt;A year ago, I began noticing unavoidable signs of depression in myself, and noticed that those things had been going on for about a year.&lt;/p&gt;

&lt;p&gt;There were a range of trying circumstances I found myself dealing with. The standard kit of “downsides of the human experience”: Death, injury, sickness, strife, despair. Obviously these unwanted influences were affecting the entire world in very public and well-discussed ways, but in specific ways (and in ways unrelated to Covid), these ill winds made intrusions into my own life.&lt;/p&gt;

&lt;p&gt;I also found that it felt like my depression was &lt;em&gt;choosing for me&lt;/em&gt; certain pathways that made it harder for me to do the kinds of self-care things I usually do. As this happened, my capacity to absorb difficulty diminished, and my ability to provide care for others also diminished. These phenomena were working together in ways that caused a negative feedback cycle.&lt;/p&gt;

&lt;p&gt;A few months ago, this thought started passing through my head:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hey, I should take a stab at writing about this depression thing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then, immediately after that, I’d think:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Ew, I don’t want to do that. That’s uncomfortable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And of course, as is true in many situations, it’s healthy to do that which is uncomfortable.&lt;/p&gt;

&lt;p&gt;My depression is/was, in many ways, a reasonable response to certain circumstances (death in family, acute &lt;em&gt;and&lt;/em&gt; chronic health problems). But my depression &lt;em&gt;also&lt;/em&gt; has explanatory power for other visible phenomena. It is a response to some things, and it has &lt;em&gt;caused&lt;/em&gt; other things.&lt;/p&gt;

&lt;p&gt;I’ve always found difficult problems to be made more manageable by writing them down. Many other people, much wiser than I am, underscore the same phenomena.&lt;/p&gt;

&lt;h2 id=&quot;why-i-am-writing-about-depression-current-and-future-me-will-benefit-and-maybe-others-will-too&quot;&gt;Why I am writing about depression: Current and future me will benefit (and maybe others will too)&lt;/h2&gt;

&lt;p&gt;I’ve not written very much in the last four years, and I’ve written almost nothing at all for the last year and a half. I’ve written 23 posts since 2020, and most of them were things that I “had” to write, to support conference talks I gave, presentations, or “explainers” for papers, tutorials, etc. Nothing where I wrote for the sake of making sense of my own life or the world around me.&lt;/p&gt;

&lt;p&gt;For contrast, I wrote over 50 posts in the prior two-year period; many of those posts &lt;em&gt;were&lt;/em&gt; contributing to me making sense of the world around me.&lt;sup id=&quot;fnref:comparing-trends&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:comparing-trends&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;There’s other trends and concepts I want to write about, but the “story” doesn’t make sense until I can explain “Oh, yeah, I was super depressed for a long time, and that’s why I did these things, and didn’t do these other things.”&lt;/p&gt;

&lt;p&gt;I write these words primarily for myself, right now, while knowing that because of how the internet works, a future version of me might benefit when I re-read these words, or others will benefit.&lt;/p&gt;

&lt;p&gt;I’ve read a few posts on the topic, where people have expressed some degree of surprise, or they’ll have an “ahah” moment, when they realize they’ve been depressed (or exhibiting signs of depression) for an extended period of time.&lt;/p&gt;

&lt;p&gt;I’ve felt a sense of kinship to how others have talked about their own experiences with depression. For example: &lt;a href=&quot;https://zellwk.com/&quot;&gt;https://zellwk.com/&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/patio11/&quot;&gt;https://twitter.com/patio11/&lt;/a&gt;, and many others. Most of the articles, talks, conversations I’ve read on the topic of experiencing depression, I don’t even remember many specific details. Just a sense of “Hm, this resonates”.&lt;/p&gt;

&lt;p&gt;Their words have been of benefit to me. In recent conversations with dear friends about depression, I’ve been finding the benefit and power of establishing a clear narrative, or a correlatory/causal chain.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;{circumstances} primed the pump for me experiencing depression. That depression was a reasonable response to those circumstances. It also has caused other changes in my life. Some of those changes are benign, some changes are self-sabotaging.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also, there is a “right time” to capture certain thoughts:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-07-21-write-it-now.jpg&quot; alt=&quot;write it now&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Anyway, all this said, I’m spending some time writing this all out. I’ve now started/edited this post a half-dozen or dozen times, and am finding my own thoughts around this topic to be getting clarified and improved as I try to make them legible and coherent. I’m already reaping benefit!&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;causal-arrows&quot;&gt;Causal Arrows&lt;/h2&gt;

&lt;p&gt;It’s hard for me to offer enough qualifying statements about everything I’m writing here. Certain circumstances contributed to my depression. My depression, in turn, contributed to other circumstances. What follows is a bit of me free-associating through a narrative response to:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;what led to my depression&lt;/li&gt;
    &lt;li&gt;how did it manifest in my life?&lt;/li&gt;
    &lt;li&gt;how did I come to eventually observe it&lt;/li&gt;
    &lt;li&gt;now what?&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;january-2020&quot;&gt;January 2020&lt;/h3&gt;

&lt;p&gt;A few days after we got back to Colorado from spending Christmas working in the family bakery in NJ, Kristi’s dad died suddenly and unexpectedly.&lt;/p&gt;

&lt;p&gt;It was a tremendous loss, both in obvious ways, and in ways that are difficult to enumerate. Kristi was 30. We’d expected and hoped for many more years with her dad. He and his wife were a few months away from retiring. It’s a painful loss, and will always be painful.&lt;/p&gt;

&lt;p&gt;Her dad (who was a 3rd-generation baker, and had run a bakery in the town his entire life) was a fixture of his town; there was well over 500 people at his funeral. He (and by extension the bakery, and his entire family) positively impacted thousands of people.&lt;/p&gt;

&lt;p&gt;I spent a lot of time reflecting on my own life and my eventual death.&lt;/p&gt;

&lt;p&gt;Kristi and I were able to spend two months back east, in NJ, to help her mom and family pick up the pieces. An advantage of working in the tech industry: we’ve both worked remotely for many years, we have near infinite location flexibility.&lt;/p&gt;

&lt;h3 id=&quot;february-march-2020&quot;&gt;February-March 2020&lt;/h3&gt;

&lt;p&gt;Shortly after spending those two months in NJ, which was a rather trying time, and after getting my annual performance bonus for 2019, I gave my notice at Proofpoint.&lt;/p&gt;

&lt;p&gt;There are always many reasons people change jobs, or in this case, quit jobs with no explicit plans to go back to full-time, W2 work, and this was no exception. I loved the team I was on, but it was the right time to move on to something else.&lt;/p&gt;

&lt;p&gt;Shortly after I gave my notice, but before my last day, Covid started being a thing, and the lockdowns started. (I was given many opportunities to &lt;em&gt;not&lt;/em&gt; quit, and instead ride out Covid with a well-paying engineering job. Proofpoint was in a strong spot, and was one of the companies that &lt;em&gt;grew&lt;/em&gt; because of the pandemic)&lt;/p&gt;

&lt;h3 id=&quot;april-june-2020&quot;&gt;April-June, 2020&lt;/h3&gt;

&lt;p&gt;My last day of work was the last day of March; I’d had a climbing trip to Cuba with good friends planned, returning to Viñales, and that didn’t happen.&lt;/p&gt;

&lt;p&gt;I did some contract work for Turing, the software development program I went to in 2017. I have been mentoring students in the backend program for years, and I reached out to see if they were open to more of help, since I suddenly had a lot of time on my hands, and I always really enjoy helping others be successful in the industry. Turing was eager for help.&lt;/p&gt;

&lt;p&gt;I also did some engineering work on internal Turing school applications, like their enrollment and payments applications.&lt;/p&gt;

&lt;p&gt;I always take detailed notes, like when I added Rubocop to two of their applications. &lt;a href=&quot;https://github.com/josh-works/intermediate_ruby_obstacle_course/tree/main/rubocop&quot;&gt;These notes will help anyone else who needs to do something similar&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There were huge ups and downs doing this work. I had a material impact on both the short-term and long-term success of quite a few students. (Their words, not mine.)&lt;/p&gt;

&lt;p&gt;This kind of work has always been the most fulfilling work I’ve ever done. Despite extensive conversations with the leadership at Turing, I wasn’t able to make the small, meaningful, systematic improvements I’d wanted to make to some spots of the curriculum that I had strong visibility into, but no one else did.&lt;/p&gt;

&lt;p&gt;In the course of providing free, scalable help to Turing students, I’d made many video walk-throughs (&lt;a href=&quot;https://www.youtube.com/watch?v=aeAkLxr5diE&quot;&gt;example&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=uYGS-DCNR-0&amp;amp;t=12s&quot;&gt;example&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=hzFW_BRdHLY&quot;&gt;example&lt;/a&gt;), received dozens of thankful messages from students, who said things like&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;These videos are why I made it through mod 1 and Turing. Thank you!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And I was consistently rebuffed by Turing leadership in attempts to formalize and upgrade these resources. This was discouraging, and has led to me stopping providing any aid to Turing students. All my work has been deleted from Turing repositories, and it continues to suffer from an extremely high dropout rate of enrolled students. I wish them the best, I think they were very close to being a reliably excellent software development training program.&lt;/p&gt;

&lt;h3 id=&quot;july-2020&quot;&gt;July 2020&lt;/h3&gt;

&lt;p&gt;I remember training on a Tension block in Ocean City, NJ, early July 2020, using a very specific right hand grip, working on rehearsing one of the last hard moves on &lt;a href=&quot;https://www.mountainproject.com/route/115133440/apocalypse&quot;&gt;Apocalypse&lt;/a&gt; in Rifle, CO.&lt;/p&gt;

&lt;p&gt;I’d &lt;em&gt;casually&lt;/em&gt; done hard-for-me boulder problems that spring&lt;sup id=&quot;fnref:hard-for-me-boulder-problems&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:hard-for-me-boulder-problems&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, and was excited/hopeful to see some of the bouldering power I’d obtained get me up some harder routes.&lt;/p&gt;

&lt;p&gt;And then in July, I got home, and just… stopped. I’ve been climbing for over 15 years now, and never have I ever taken and unforced break from climbing, other than a few weeks here and there, with some “active rest” to keep the tendons from thinking they’re not needed anymore, usually worked in between some training/performance cycles.&lt;/p&gt;

&lt;p&gt;My depression was particularly bad then, &lt;em&gt;but I didn’t even realize I was depressed&lt;/em&gt;; I just felt extremely anxious and sad most of my waking hours.&lt;/p&gt;

&lt;h3 id=&quot;august-october-2020&quot;&gt;August-October 2020&lt;/h3&gt;

&lt;p&gt;When the pandemic started, Kristi and I had hoped for a small (or large) correction to the price of property in Golden.&lt;/p&gt;

&lt;p&gt;This did not happen. Golden continues to remain extremely unaffordable, for clear, obvious reasons, mostly related to continuing to have laws on the books that were written by actual racists, with the intent of keeping black people out of neighborhoods populated by white people.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://josh.works/full-copy-of-1922-atlanta-zone-plan&quot;&gt;In 1922, politically powerful racists introduced ‘The Atlanta Zone Plan’&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This “Atlanta Zone Plan” is the template for all modern zoning regulations, and zoning regulations are one of the most powerful forces shaping cities (and all that happens within cities) today.&lt;/p&gt;

&lt;p&gt;The folks that created the Atlanta Zone Plan had been trying for a while to create some means of segregation that wouldn’t get struck down by the supreme court. Slavery was made illegal, a lot of Jim Crowe laws were eventually made illegal, redlining was made illegal, and this zoning thing was the first attempt by white supremacists to preserve their cultural and economic dominance that &lt;em&gt;wasn’t&lt;/em&gt; struck down by the supreme court.&lt;/p&gt;

&lt;p&gt;And this zoning paradigm exists today, perfectly preserved, across the entire country. (And the US has exported this paradigm to the rest of the world. Yaaaaayyyyy).&lt;/p&gt;

&lt;p&gt;Why do I talk about all this in a post about depression?&lt;/p&gt;

&lt;p&gt;Because Denver is hideously unaffordable, has zero good public transit, and most of the urban infrastructure is extremely hostile to individuals. All of this is a result of following racist laws.&lt;/p&gt;

&lt;p&gt;It’s demoralizing to have ones life and wellbeing so affected by such immoral and evil laws. Kristi and I eventually ended up paying almost $600k for a house in terrible condition in downtown Golden. I’ll be spending much time and money getting it to a tolerable condition.&lt;/p&gt;

&lt;h3 id=&quot;november-2020&quot;&gt;November 2020&lt;/h3&gt;

&lt;p&gt;I injured my back in a significant way. I was unable to stand up straight for at least two months. My normal means of self-care and mood repair were taken from me, replaced with a painful reminder of the frailty of the human experience.&lt;/p&gt;

&lt;p&gt;Everyone kept saying “oh, back injuries suck, but you’ll be better soon.”. Almost no one had an encouraging word about simply &lt;em&gt;being&lt;/em&gt; injured. It was an extremely alienating and isolating time.&lt;/p&gt;

&lt;p&gt;Since I couldn’t do work around the house (for example, I struggled to move a frying pan around the cooktop), I figured I’d go back to work.&lt;/p&gt;

&lt;p&gt;I really couldn’t get excited about most of the opportunities that I was encountering. Hiring is so damn broken.&lt;/p&gt;

&lt;p&gt;Unfortunately, because we’d just moved, I didn’t have an office set up, or even a desk or monitor. So, I was doing interviews, sitting on a couch, propping the laptop on a pillow, in near-constant pain from an injured back, in a period of substantial emotional ill-health. I’m proud to stay I still got job offers, and turned down a very compelling full-time offer in favor of a high-risk, high-potential-reward role with &lt;a href=&quot;https://pashi.com/&quot;&gt;Pashi&lt;/a&gt;, a manufacturing startup.&lt;sup id=&quot;fnref:writing&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:writing&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Soham, the founder, splits his time between India and the US. A brilliant, hard-working, driven person. I very much enjoyed the work we did together, but the 12 hour timezone difference, coupled with most of the work being done in India/Europe in a synchronous way, made it difficult for me to keep context and quickly do good work, while still maintaining a wall between work and non-work time.&lt;/p&gt;

&lt;p&gt;We agreed to a month-long trial period, with the goal of me going full-time, with equity, working hard to grow Pashi in a few manufacturing verticals in the USA.&lt;/p&gt;

&lt;p&gt;I ended up pulling the plug half-way through the trial. External sources of stress, plus the removal of normal health-promoting activities, plus the time-zone difference and loose communication meant I was working until late in the evening, and then hopping on calls at 7a the next day with the team, and I wasn’t able to rest or recover. Soham was totally pleased with my work, and excited for what we were going to do, and sad when I told him I couldn’t continue.&lt;/p&gt;

&lt;p&gt;This was a tumultuous time for me, and a tumultuous experience. Kristi and I were experiencing profound relationship difficulties, I was extremely depressed, and I feel like I was operating at like 20% of my normal capacity.&lt;/p&gt;

&lt;h3 id=&quot;december-2020&quot;&gt;December 2020&lt;/h3&gt;

&lt;p&gt;This was the first Christmas in the 13 years I’ve known Kristi that we &lt;em&gt;didn’t&lt;/em&gt; spend the week leading up to Christmas doing difficult and exhausting work to prepare for the busiest season in the bakery.&lt;/p&gt;

&lt;p&gt;It was something that had been long-promised in the family.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;By next year, the business will be sold and we can enjoy Christmas like normal people!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The bakery &lt;em&gt;had&lt;/em&gt; sold. We &lt;em&gt;could&lt;/em&gt; enjoy Christmas like normal people. Except Wayne passed away, and we spent the Christmas without him. It sucked.&lt;/p&gt;

&lt;p&gt;Kristi and I had scheduled a week-long “counseling intensive”, which brought us a lot of relief&lt;sup id=&quot;fnref:restoring-the-soul&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:restoring-the-soul&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;There’s much more that could be said. I usually do end-of-year “review” posts, and I didn’t do one for 2019, because I got curb-stomped by 2020, and struggled to write anything public. Ditto 2020, and I’d like to get to much more important topics to write about than this sort of naval-gazing, but this feels like it helps unblock me, and here I am.&lt;/p&gt;

&lt;p&gt;The stories we tell ourselves are important.&lt;/p&gt;

&lt;p&gt;I heard someone say something recently:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Narrative is the only difference between pain and suffering.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was a true statement in the context in which it was said, and while it likely cannot be generalized to every situation, it’s a broadly helpful sentiment.&lt;/p&gt;

&lt;p&gt;I’m spending some time making sure I get my narrative right. Lots of the errors I make in this domain are to have errors that tend in the direction of despair and hopelessness.&lt;/p&gt;

&lt;h2 id=&quot;what-has-helped&quot;&gt;What has helped&lt;/h2&gt;

&lt;p&gt;This topic will eventually get more discussion. I’m doing things that are helping. &lt;em&gt;I have friends that are enormously helpful&lt;/em&gt;, with and without awareness of what they’re helping with. In this section, asterisks and qualifications abound.&lt;/p&gt;

&lt;p&gt;A thread through what seems to have helped has been things like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Understand that when depressed, my reasoning exhibits different tendencies than when not depressed. Externalize my reasoning and emotions, let trusted friends weigh in on it. Trust them, and generally do what they suggest.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Being comfortable labelling myself as depressed, based on easy external metrics (DSM V, the many resources available to diagnose oneself)&lt;/li&gt;
  &lt;li&gt;Treating my depression as an illness instead of feeling shame (from myself or from others) for being depressed.&lt;/li&gt;
  &lt;li&gt;Talking about it with dear and trusted friends. (I’ll expand on this substantially soon.)&lt;/li&gt;
  &lt;li&gt;Making a concerted effort to trust my brain and emotions less when feeling sad, and let “feeling sad” trigger that intentional downgrading of trust in myself.&lt;/li&gt;
  &lt;li&gt;Imagine I had a friend who said:&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh, I’m feeling rather depressed today. I’d like to spend an hour doing something that promotes wellness, because I know I should, but because I’m depressed, I’m struggling to identify or do that thing. What would you recommend?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How would that conversation unfold? What would I be trying to accomplish for that friend? What would I recommend? How would I follow up? OK, can I do that for myself?&lt;/p&gt;

&lt;p&gt;If not, I should go ask a friend that question.&lt;/p&gt;

&lt;h4 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h4&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:comparing-trends&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;It’s not a perfect strategy, but a way I grew to observe my own depression was to find ways that my behaviors had changed compared to times that I know I wasn’t depressed. Writing has always been a big part of how I operate in the world, and I observed a strong aversion to any kind of biographical writing, which has historically not been the case. &lt;a href=&quot;#fnref:comparing-trends&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:hard-for-me-boulder-problems&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I did a few v8s in a single session, sometimes after just four or five attempts. Given that I’d never imagined myself a “strong climber”, I never thought V10 (or 5.13+) was attainable to me. Turns out it is. To most normal people, V10 is very, very hard. I also know some V13+ climbers that make V10 look easy and casual. ¯\_(ツ)_/¯ &lt;a href=&quot;#fnref:hard-for-me-boulder-problems&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:writing&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I got the job, and the opportunity, after Soham just clicked around this website a bit, and &lt;a href=&quot;https://josh.works/coffee&quot;&gt;set up a coffee&lt;/a&gt;. We moved quick, he paid me for the first two weeks of work, and I quickly put together sales collateral and explainers to help some early critical sales opportunities land. &lt;a href=&quot;#fnref:writing&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:restoring-the-soul&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;We went to &lt;a href=&quot;https://restoringthesoul.com/&quot;&gt;Restoring The Soul&lt;/a&gt;, and indeed, our souls were restored. &lt;a href=&quot;#fnref:restoring-the-soul&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Issues related to the city of Golden</title>
   <link href="https://josh.works/issues-in-golden"/>
   <updated>2021-07-26T13:00:00+00:00</updated>
   <id>https://josh.works/issues-related-to-the-city-of-golden</id>
   <content type="html">&lt;p&gt;While I was biking around recently, I saw notes about an upcoming neighborhood meeting about some rezoning, a big lot in downtown Golden.&lt;/p&gt;

&lt;p&gt;I went to the meeting (Thursday, July 22) and learned a lot.&lt;/p&gt;

&lt;p&gt;Here’s the lot in question:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;coors-property.jpg&quot; alt=&quot;picture of Coors property&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I have ridden my bike past this property hundreds of times. It’s directly between my house and downtown:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;strava-map.jpg&quot; alt=&quot;strava paths&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Blue lines are all the strava trips I’ve taken (by bike). See more here: &lt;a href=&quot;https://cryptic-sea-38287.herokuapp.com/&quot;&gt;https://cryptic-sea-38287.herokuapp.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two books that contain (broadly) everything an architect, land-user planner, or developer needs to maximize the value of the work they’re doing, and minimize the “externalities” of their project.&lt;/p&gt;

&lt;p&gt;If you’re serious about cities being places that promote the wellbeing of their populations, the environment, etc, these are the two books you need to have on your bookshelf:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/shoup-and-bertaud.jpg&quot; alt=&quot;Shoup and Bertraud&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Fixing these problems in Golden takes three steps. Ideally, all three would be done, but any of them done in isolation at any level of implementation would be a step in the right direction:&lt;/p&gt;

&lt;h3 id=&quot;step-1-get-parking-right&quot;&gt;Step 1: Get Parking Right&lt;/h3&gt;

&lt;p&gt;Golden city staff must read and implement &lt;a href=&quot;https://www.amazon.com/High-Cost-Parking-Updated-Edition/dp/193236496X/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1332084228&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=markeurban-20&amp;amp;linkId=65aeac5942c99b794876bb2d2dc32bb0&quot;&gt;The High Cost of Free Parking&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;No other “solution” will do anything but make the current situation worse.&lt;/p&gt;

&lt;p&gt;I’m writing more about parking here:&lt;/p&gt;

&lt;p&gt;👉  &lt;a href=&quot;/parking-in-golden&quot;&gt;parking in Golden, CO&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;step-2-get-buildings-right-location-size-use-etc&quot;&gt;Step 2: Get Buildings right (location, size, use, etc)&lt;/h3&gt;

&lt;p&gt;Read &lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design&quot;&gt;Order Without Design: How Markets Shape Cities&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;But Josh this is a big academic book I don’t want to read it…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s not that big, it’s quite approachable, but it’s fine if you don’t want to read it. Most modern planners have never read this book (I’ve asked about a dozen of them…) but they would be 100x better at their jobs (or they would at least stop making bad situations worse) if they’d read it.&lt;sup id=&quot;fnref:planners&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:planners&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This is THE book for anyone planning on spending a lot of money trying to solve a big problem in the city.&lt;/p&gt;

&lt;h3 id=&quot;step-3-give-full-evaluation-to-the-racist-intent-behind-modern-zoning-and-its-impact-of-how-cities-have-been-built-over-the-last-century&quot;&gt;Step 3: Give full evaluation to the racist intent behind modern zoning and it’s impact of how cities have been built over the last century&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/32191706-the-color-of-law&quot;&gt;The Color of Law: A Forgotten History of How Our Government Segregated America&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.fidelitypress.org/slaughter-of-cities&quot;&gt;The Slaughter of Cities: Urban Renewal as Ethnic Cleansing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;hindrances-to-the-city-of-golden-trending-in-the-right-direction&quot;&gt;Hindrances to the City of Golden trending in the right direction&lt;/h2&gt;

&lt;p&gt;As you might imagine, this system is not stable. Things are always changing, and either getting better, or getting worse.&lt;/p&gt;

&lt;p&gt;They’re currently getting &lt;em&gt;worse&lt;/em&gt;, and &lt;a href=&quot;https://www.guidinggolden.com/code-changes&quot;&gt;the new zoning plan&lt;/a&gt; that the city zoning staff is working on generally makes things worse, in addition to probably eating up about $1.5 million in budget and payroll.&lt;/p&gt;

&lt;h3 id=&quot;hindrance-1-grossly-mismanaged-parking&quot;&gt;Hindrance 1: Grossly Mismanaged parking&lt;/h3&gt;

&lt;p&gt;Parking is a scarce commodity, and like all commodities, &lt;em&gt;if you mismanage access to said commodity, there are downstream negative effects&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The solution is technical, not political. There are some complexities to it, but implementing this fix is well within the capacities of the full-time planning and engineering staff.&lt;/p&gt;

&lt;p&gt;This comes from The High Cost of Free Parking by Donald Shoup. Read more on this here:&lt;/p&gt;

&lt;p&gt;👉  &lt;a href=&quot;/parking-in-golden&quot;&gt;parking in Golden, CO&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Set appropriate price for curb-side parking&lt;/li&gt;
  &lt;li&gt;Spend all revenue where it’s collected&lt;/li&gt;
  &lt;li&gt;Abolish parking minimums&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;hindrance-2-exclusionary-zoning&quot;&gt;Hindrance 2: Exclusionary zoning&lt;/h3&gt;

&lt;p&gt;Euclidean zoning, AKA &lt;a href=&quot;https://en.wikipedia.org/wiki/Exclusionary_zoning&quot;&gt;exclusionary zoning&lt;/a&gt;, is killing our city. Serious people in the space don’t debate that exclusionary zoning is terrible.&lt;/p&gt;

&lt;p&gt;Persons who support exclusionary zoning are as sophisticated in urban planning as doctors &lt;em&gt;who believe in &lt;a href=&quot;https://www.britannica.com/science/leeching&quot;&gt;leeching&lt;/a&gt;&lt;/em&gt; are sophisticated about the human body.&lt;/p&gt;

&lt;p&gt;It’s not up for debate. You don’t have to believe you, and I’m actually eager to convince you otherwise, and I am willing to do so, and I’ll do so gently, but &lt;em&gt;exclusionary zoning is horrible for cities and causes most of the harms facing cities today&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Here’s more on this:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;1/20 Thoughts on Denver&amp;#39;s zoning and systemic racism. &lt;br /&gt;&lt;br /&gt;Here&amp;#39;s a screenshot from &lt;a href=&quot;https://twitter.com/CityofDenver?ref_src=twsrc%5Etfw&quot;&gt;@CityofDenver&lt;/a&gt;&amp;#39;s zoning map on &lt;a href=&quot;https://t.co/Tzx271JS8u&quot;&gt;https://t.co/Tzx271JS8u&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is textbook Euclidean Zoning, AKA &amp;quot;Single-Use Zoning&amp;quot;.&lt;br /&gt;&lt;br /&gt;The problems of this form of zoning are well-known:&lt;a href=&quot;https://t.co/WqiklxjB4h&quot;&gt;https://t.co/WqiklxjB4h&lt;/a&gt; &lt;a href=&quot;https://t.co/7RDaFJlttS&quot;&gt;pic.twitter.com/7RDaFJlttS&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/1294726871574179840?ref_src=twsrc%5Etfw&quot;&gt;August 15, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;hindrance-3-legally-imposed-minimums-lot-size-setbacks&quot;&gt;Hindrance 3: Legally-imposed Minimums (lot size, setbacks)&lt;/h3&gt;

&lt;p&gt;Having “minimums” around lot sizes and setbacks wrecks cities. I’ll add more sources at some point, but again, &lt;em&gt;this is not a contentious statement&lt;/em&gt;. If you think it’s politically charged, it’s because you’re thinking about the issue from the wrong angle.&lt;/p&gt;

&lt;h3 id=&quot;hindrance-4-legally-imposed-maximums&quot;&gt;Hindrance 4: Legally-imposed Maximums&lt;/h3&gt;

&lt;p&gt;Proscribing maximums (like floor area ratios, heights, densities) wrecks cities as much as the minimums do.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Most of the pleasant part of downtown that we all know and love is &lt;em&gt;wildly&lt;/em&gt; illegal according to modern zoning codes, because it violates minimums (setbacks) and maximums (floor area ratios).&lt;/p&gt;

&lt;p&gt;Together, these minimums/maximums leave little room for new development - all the new development we get is the ugly stuff. The charming, efficient buildings of the past are all illegal.&lt;/p&gt;

&lt;p&gt;More later.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.guidinggolden.com/planning-projects/news_feed/600-9th-street-rezoning&quot;&gt;PC21-12 Coorstek 600 9th Street Rezoning, from the City of Golden planning staff&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.trybaarchitects.com/people/john-mcintyre&quot;&gt;Tryba Architcts (The company working w/Coors on the development)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:planners&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;There’s a lot more I’ll say on “planners” soon - most of them mean well, and are highly constrained actors. Some of them are prevented from doing the right thing by broken political systems. Others are prevented from doing the right thing by ignorance. One of these is partically forgivable. &lt;a href=&quot;#fnref:planners&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>RailsConf Presentation: &apos;Junior&apos; Developers are a Solution to Many of your Problems</title>
   <link href="https://josh.works/railsconf"/>
   <updated>2021-05-21T13:00:00+00:00</updated>
   <id>https://josh.works/railsconf</id>
   <content type="html">&lt;p&gt;Did this talk resonate and you want to implement some of the ideas at your company? I might be able to help. Shoot me an email at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;joshthompson@hey.com&lt;/code&gt; or book some time to talk at https://calendly.com/joshthompson/coffee.&lt;/p&gt;

&lt;p&gt;This talk is available on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;railsconf.org&lt;/code&gt;, here: &lt;a href=&quot;https://railsconf.org/watch/bettering-our-industry/junior-devs-are-the-solution-to-many-of-your-problems&quot;&gt;https://railsconf.org/watch/bettering-our-industry/junior-devs-are-the-solution-to-many-of-your-problems&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve only just started systematizing resources around this. I’d love to talk with &lt;em&gt;you&lt;/em&gt; about your thoughts on these resources. Use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;coffee&lt;/code&gt; link above, or if there’s no availability &lt;em&gt;and&lt;/em&gt; this is an issue you’re willing to throw money at, book time on a much more flexible calendar here: &lt;a href=&quot;https://calendly.com/joshthompson/flexible&quot;&gt;https://calendly.com/joshthompson/flexible&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m a month into creating public resources to create a “path” by which an ECSD can grow to a non-ECSD. Follow along here: &lt;a href=&quot;https://github.com/sponsors/josh-works&quot;&gt;https://github.com/sponsors/josh-works&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;questions-that-came-up-from-the-talk&quot;&gt;Questions that came up from the talk&lt;/h1&gt;

&lt;p&gt;##&lt;/p&gt;

&lt;h1 id=&quot;misc-resources&quot;&gt;Misc Resources&lt;/h1&gt;

&lt;p&gt;There are lots of ways teams can better utilize the resources of their ECSDs.&lt;/p&gt;

&lt;p&gt;Q&amp;amp;A on March 14th, at 4:40p.&lt;/p&gt;

&lt;h2 id=&quot;slides&quot;&gt;Slides&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.dropbox.com/s/d98chrnpm8gn4uq/Junior%20Developers%20are%20the%20Solution%20to%20Many%20of%20Your%20Problems.key?dl=0&quot;&gt;Available on Dropbox&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;railsconf-cfp-draft-notes&quot;&gt;RailsConf CFP Draft Notes&lt;/h2&gt;

&lt;p&gt;Here’s the abstract for this talk: &lt;a href=&quot;/railsconf-cfp-draft-outline&quot;&gt;RailsConf CFP Draft Notes&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;useful-resources&quot;&gt;Useful Resources&lt;/h2&gt;

&lt;p&gt;I’ll be relying upon scientific and non-scientific literature like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.semanticscholar.org/paper/Psychological-Conditions-of-Personal-Engagement-and-Kahn/cbb3887590de9e5dc702b5d2655fbe804669fea0&quot;&gt;William Khan: Psychological Conditions of Personal Engagement and Disengagement at Work&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://commoncog.com/blog/tacit-knowledge-is-a-real-thing/&quot;&gt;Why Tacit Knowledge is More Important Than Deliberate Practice&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.journals.uchicago.edu/doi/abs/10.1086/421787&quot;&gt;Structural Holes and Good Ideas, American Journal of Sociology, 2004&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.researchgate.net/publication/334448588_Hiring_is_Broken_What_Do_Developers_Say_About_Technical_Interviews&quot;&gt;Hiring is Broken: What Do Developers Say About Technical Interviews&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://web.mit.edu/5.95/readings/bloom-two-sigma.pdf&quot;&gt;The 2 Sigma Problem: The Search for Methods of Group Instruction as Effective as One-to-One Tutoring (Benjamin Bloom, 1984)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://pubmed.ncbi.nlm.nih.gov/19739881/&quot;&gt;Conditions for Intuitive Expertise: A Failure to Disagree, Kahneman &amp;amp; Klein, Princeton, 2009&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Secret-Our-Success-Evolution-Domesticating/dp/0691166854&quot;&gt;The Secret of Our Success: How Culture Is Driving Human Evolution, Domesticating Our Species, and Making Us Smarter&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://how.complexsystems.fail/&quot;&gt;How Complex Systems Fail&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;other-talks-ive-given&quot;&gt;Other Talks I’ve given&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://josh.works/boulder_ruby_group&quot;&gt;Boulder Ruby: Move Slow and Improve Things: Performance Improvement in a Rails App&lt;/a&gt;
👉 &lt;a href=&quot;https://www.greaterthancode.com/safety-science-and-failure-as-an-opportunity&quot;&gt;Greater Than Code ep 220: Safety Science and Failure As An Opportunity For Growth&lt;/a&gt;&lt;/p&gt;

&lt;h4 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h4&gt;

</content>
 </entry>
 
 <entry>
   <title>Josh Thompson presentation to Governmental Accounting Standards Board (GASB)</title>
   <link href="https://josh.works/gasb"/>
   <updated>2021-03-29T13:00:00+00:00</updated>
   <id>https://josh.works/gasb-notes</id>
   <content type="html">&lt;p&gt;Here’s a &lt;em&gt;very&lt;/em&gt; important one-hour video that is highly relevant to GASB.&lt;/p&gt;

&lt;p&gt;If my testimony accomplishes nothing but encouraging members of the GASB board (&lt;a href=&quot;https://gasb.org/jsp/GASB/Page/GASBSectionPage&amp;amp;cid=1176174809353&quot;&gt;Joel Black&lt;/a&gt;, &lt;a href=&quot;https://gasb.org/jsp/GASB/Page/GASBSectionPage&amp;amp;cid=1176168267878&quot;&gt;Jeffrey Previdi&lt;/a&gt;, &lt;a href=&quot;https://gasb.org/cs/ContentServer?c=Page&amp;amp;cid=1351027743303&amp;amp;d=&amp;amp;pagename=GASB%2FPage%2FGASBSectionPage&quot;&gt;James Brown&lt;/a&gt;, &lt;a href=&quot;https://gasb.org/jsp/GASB/Page/GASBSectionPage&amp;amp;cid=1176166159071&quot;&gt;Brian Caputo&lt;/a&gt;, &lt;a href=&quot;https://gasb.org/jsp/GASB/Page/GASBSectionPage&amp;amp;cid=1176169158822&quot;&gt;Kristopher Knight&lt;/a&gt;, &lt;a href=&quot;https://gasb.org/jsp/GASB/Page/GASBSectionPage&amp;amp;cid=1176174810508&quot;&gt;Dianna Ray&lt;/a&gt;, and &lt;a href=&quot;https://gasb.org/jsp/GASB/Page/GASBSectionPage&amp;amp;cid=1176172907886&quot;&gt;Carolyn Smith&lt;/a&gt;) to spend 15 minutes watching the following video, I will have considered my time to have been well-spent.&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/MeYHHIAkjus&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;It’s worth watching the video to the 15 minute mark, when Chuck draws the parallel between the letter of the law and the spirit of the law. When Enron became famous for fraudulent reporting, it was because they &lt;em&gt;obfuscated&lt;/em&gt; their long-term liabilities, in the same way that state/local governments sometimes like to obfuscate their own financial position.&lt;/p&gt;

&lt;p&gt;If you were to watch the first ten minutes, you’d have data to chew on for a few hours.&lt;/p&gt;

&lt;p&gt;If you watched the first twenty minutes (at 2x speed, of course) you’ll be more knowledgeable about arcane government finance machinations than 99% of the lay population of the USA.&lt;/p&gt;

&lt;h2 id=&quot;josh-thompsons-testimony&quot;&gt;Josh Thompson’s Testimony&lt;/h2&gt;

&lt;p&gt;I submitted a letter (per the above presentation, which I watched live and took a lot of notes from). I ended up being given an opportunity to present to the board. Me, someone who’s a &lt;em&gt;total outsider&lt;/em&gt; to the industry. I “manage” my household finances, and that’s the most financial management I’ve ever done.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://gasb.org/jsp/GASB/Page/GASBSectionPage&amp;amp;cid=1176163491510&quot;&gt;Watch the live testimony here&lt;/a&gt;. You might even see my funny-looking face at 12:45p Mountain time, I’ll be presenting for a few minutes, with a time for the GASB board to ask me questions afterwards.&lt;/p&gt;

&lt;p&gt;I’ll be sharing updates on twitter:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://twitter.com/josh_works&quot;&gt;twitter.com/josh_works&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.dropbox.com/s/dzm9iuhwq6flqof/gasb_presentation.key?dl=0&quot;&gt;Here’s my slides&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get in touch! I’d love to talk about any of these things more: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;joshthompson@hey.com&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;finance-related-things&quot;&gt;Finance-related things&lt;/h2&gt;

&lt;p&gt;Keep in mind that I’m a software developer, and only occasionally read financial statements. (That said, I do occasionally read financial statements, which I imagine is unusual for non-finance/accounting people).&lt;/p&gt;

&lt;p&gt;I live in Golden, Colorado, and plan on living here for the next 60 years or so, until I (hopefully) die peacefully in my sleep.&lt;/p&gt;

&lt;p&gt;The financial well-being of my family, my children, grand-children, and neighbors is necessarily associated with the financial well-being of the City of Golden.&lt;/p&gt;

&lt;p&gt;If you’d like to read their annual financial reports, you may find them towards the bottom of the page here:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.cityofgolden.net/government/departments-divisions/finance/&quot;&gt;https://www.cityofgolden.net/government/departments-divisions/finance/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data-Z’s gives Denver’s &lt;a href=&quot;https://www.data-z.org/state_data_and_comparisons/city/denver&quot;&gt;financial state a grade of “D”&lt;/a&gt;, summarizing the challenges as (paraphrased):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Denver so over-spends that each taxpayer would have to be taxed an extra $5,800 to simply cover its expenses.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;proposed-concept-statement&quot;&gt;Proposed Concept Statement&lt;/h2&gt;

&lt;p&gt;Here’s the &lt;a href=&quot;https://www.gasb.org/cs/Satellite?c=Document_C&amp;amp;cid=1176174822546&amp;amp;pagename=GASB%2FDocument_C%2FDocumentPage&quot;&gt;proposed statement (pdf)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On page 10, you see the following:&lt;/p&gt;

&lt;h2 id=&quot;short-term-financial-resources-measurement-focus-and-accrual-basis-of-accounting&quot;&gt;Short-Term Financial Resources Measurement Focus and Accrual Basis of Accounting*&lt;/h2&gt;

&lt;p&gt;Definition (Josh Thompson’s light summarization/reformatting)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The short-term financial resources measurement focus incorporates outflows of short- term financial resources and inflows of short-term financial resources and all short-term financial assets, deferred outflows of resources, liabilities, and deferred inflows of resources.&lt;/p&gt;

  &lt;p&gt;Under an accrual basis of accounting, elements of financial statements arising from &lt;strong&gt;short-term transactions and other events are recognized as they occur&lt;/strong&gt;, and elements of financial statements arising from &lt;strong&gt;long-term transactions and other events are recognized when payments are due&lt;/strong&gt;.&lt;/p&gt;

  &lt;p&gt;Financial assets in this measurement focus include cash, assets that are available to be converted to cash, and assets that are consumable in lieu of cash. All liabilities in this measurement focus are financial liabilities.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sheila Weinberg, Founder &amp;amp; CEO in &lt;a href=&quot;https://www.truthinaccounting.org/&quot;&gt;Truth in Accounting&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;One of the GASB members highlighted that because the governmental fund financial statements of the general fund exclude long-term obligations and related expenses, these statements “obfuscate the government’s true financial condition” and “conceal costs and obligations incurred in a current period.”&lt;/p&gt;

  &lt;p&gt;Some people have objected to the use of the word “obfuscate” suggesting it is a strong word indicating confusion and bewilderment. I think it is the CORRECT word.&lt;/p&gt;

  &lt;p&gt;It is confusing and bewildering to have a balance sheet of governmental funds that does not include the pension and OPEB liabilities even though those funds will be used to pay them. States report positive fund balances while collectively they have accumulated more than $855 billion in unfunded pension liabilities and $617 billion of retiree health care liabilities. Most of the 75 most populated cities also report positive fund balances while they have collectively accumulated more than $179 billion in unfunded pension liabilities and $160 billion of retiree health care liabilities.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can download the entire &lt;em&gt;detailed&lt;/em&gt; letter &lt;a href=&quot;/_data/sheila_weinberg_gasb_letter.pdf&quot;&gt;here (pdf)&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;related-reading&quot;&gt;Related Reading&lt;/h2&gt;

&lt;p&gt;These books are not &lt;em&gt;technically&lt;/em&gt; about accounting and finance, but they’re about accounting and finance:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/1111.The_Power_Broker?ac=1&amp;amp;from_search=true&amp;amp;qid=SLFu7n1pUx&amp;amp;rank=1&quot;&gt;The Power Broker: Robert Moses and the Fall of New York&lt;/a&gt; &lt;a href=&quot;https://josh.works/robert-moses&quot;&gt;here’s my own very work-in-progress notes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/11612989-the-dictator-s-handbook?ac=1&amp;amp;from_search=true&amp;amp;qid=dMrX2U8KHV&amp;amp;rank=1&quot;&gt;The Dictator’s Handbook: Why Bad Behavior is Almost Always Good Politics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>RailsConf CFP Outline</title>
   <link href="https://josh.works/railsconf-cfp-draft-outline"/>
   <updated>2021-03-27T13:00:00+00:00</updated>
   <id>https://josh.works/rails-conf-cfp</id>
   <content type="html">&lt;p&gt;I’m pitching some ideas for RailsConf. I only heard about it a few days ago (oops) so this is a bit rushed:&lt;/p&gt;

&lt;h2 id=&quot;idea-1-junior-developers-are-the-solution-to-many-of-your-problems&quot;&gt;Idea 1: “Junior” Developers are the Solution to Many of Your Problems&lt;/h2&gt;

&lt;h3 id=&quot;abstract&quot;&gt;Abstract:&lt;/h3&gt;

&lt;p&gt;Our industry telegraphs: “We don’t want (or know how to handle) ‘Jr. Devs’.”&lt;/p&gt;

&lt;p&gt;Jr. Devs, or as I call them: Early-career Software Developers, or ECSDs, have incredible value &lt;em&gt;if&lt;/em&gt; their team/company/manager doesn’t “lock themselves out” of accessing this value.&lt;/p&gt;

&lt;p&gt;Whoever figures out how to embrace the value of ECSDs will outperform their cohort. 📈💰🤗&lt;/p&gt;

&lt;p&gt;I will speak to:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Executives (CTOs/Eng VPs)&lt;/li&gt;
  &lt;li&gt;Senior Developers/Dev Managers&lt;/li&gt;
  &lt;li&gt;ECSDs themselves&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;About how to:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Identify which problems are solvable because of ECSDs&lt;/li&gt;
  &lt;li&gt;Get buy-in for these &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;problem/solution sets&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Start solving these problems with ECSDs&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;for-review-committee&quot;&gt;For Review Committee:&lt;/h3&gt;

&lt;p&gt;This content will be visible only to the review committee.&lt;/p&gt;

&lt;h4 id=&quot;details-include-any-pertinent-details-such-as-outlines-outcomes-or-intended-audience&quot;&gt;Details (Include any pertinent details such as outlines, outcomes or intended audience.)&lt;/h4&gt;

&lt;p&gt;I tried to get the important stuff in the abstract, like:&lt;/p&gt;

&lt;h2 id=&quot;audience&quot;&gt;Audience:&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Executives/senior leadership&lt;/li&gt;
  &lt;li&gt;Senior developers/developer managers&lt;/li&gt;
  &lt;li&gt;Early-career Software Developers (ECSD)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;desired-outcomes&quot;&gt;Desired Outcomes&lt;/h2&gt;

&lt;p&gt;I’d like to start with a skeptical audience, or an uncertain audience, and move all of the audience to feeling equipped to “drive change” at whatever degree of influence they have within the organization.&lt;/p&gt;

&lt;p&gt;if representative members of each of the three groups &lt;em&gt;from the same company&lt;/em&gt; attended the talk, they could make all these changes in short order.&lt;/p&gt;

&lt;p&gt;I scare-quoted “driving change” because it implies a degree of coercion or force-of-will, but the tools I want them to have will sidestep that coercion entirely, and instead equip them to &lt;em&gt;deliver more value to their organization&lt;/em&gt; by perceiving the role of the ECSD differently.&lt;/p&gt;

&lt;p&gt;By way of analogy: forcing someone to eat a certain way is coercive. Cooking a delicious meal for them that they enjoy? That’s a gift. Same result, very different method.&lt;/p&gt;

&lt;h3 id=&quot;desired-outcome-for-an-executivectovp-engineering&quot;&gt;desired outcome for an executive/cto/vp engineering:&lt;/h3&gt;

&lt;p&gt;“I can explain to my department and other business units how improving the experience of ECSDs at my company will guarantee hiring/promotion pipelines inside of my organization, allowing me to spend less time and opportunity cost on trying to get the right people, while also reducing my exposure to the risk of a bad hire”&lt;/p&gt;

&lt;h3 id=&quot;desired-outcome-for-a-senior-developerdeveloper-manager&quot;&gt;desired outcome for a senior developer/developer manager:&lt;/h3&gt;

&lt;p&gt;“I can explain why my direct and effortful contributions to the learning, well-being, and safety of my team’s ECSD unlocks growth and value at several levels of the organization, including, but not limited to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;the experience of ECSDs (duh)&lt;/li&gt;
  &lt;li&gt;speed of feature development&lt;/li&gt;
  &lt;li&gt;change in overall technical debt in the application&lt;/li&gt;
  &lt;li&gt;error rate (be it bugs, outages, missed deadlines)&lt;/li&gt;
  &lt;li&gt;increases my own influence and reputation within my organization”&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;desired-outcome-for-an-early-career-software-developer-ecsd&quot;&gt;Desired outcome for an early-career software developer (ECSD)&lt;/h3&gt;

&lt;p&gt;“I understand specific ways that I can bring value to my organization, and I know how to leverage &lt;em&gt;my own inexperience&lt;/em&gt; to produce valuable artifacts that will lead to my own growth as a developer, and can speak confidently to those values, while understanding that I am part of a &lt;em&gt;system&lt;/em&gt;, for better or worse, and am not the only individual with influence over the value I bring to an organization.”&lt;/p&gt;

&lt;h3 id=&quot;talk-outline&quot;&gt;Talk Outline:&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Evidence that the industry is not welcoming to ECSDs&lt;/li&gt;
  &lt;li&gt;Kinds of opportunity that is lost by not being welcomeing to ECSDs, in:
    &lt;ul&gt;
      &lt;li&gt;speed/quality of onboarding&lt;/li&gt;
      &lt;li&gt;growth in skills of ECSDs&lt;/li&gt;
      &lt;li&gt;growth in skills of more experienced developers&lt;/li&gt;
      &lt;li&gt;lost opportunities to connect ideas across domains and industries&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Levers available to (executives|sr engineers|ECSDs) to do something about this
  I’ll be relying upon scientific and non-scientific literature like:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.semanticscholar.org/paper/Psychological-Conditions-of-Personal-Engagement-and-Kahn/cbb3887590de9e5dc702b5d2655fbe804669fea0&quot;&gt;William Khan: Psychological Conditions of Personal Engagement and Disengagement at Work&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://commoncog.com/blog/tacit-knowledge-is-a-real-thing/&quot;&gt;Why Tacit Knowledge is More Important Than Deliberate Practice&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.journals.uchicago.edu/doi/abs/10.1086/421787&quot;&gt;Structural Holes and Good Ideas, American Journal of Sociology, 2004&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.researchgate.net/publication/334448588_Hiring_is_Broken_What_Do_Developers_Say_About_Technical_Interviews&quot;&gt;Hiring is Broken: What Do Developers Say About Technical Interviews&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;http://web.mit.edu/5.95/readings/bloom-two-sigma.pdf&quot;&gt;The 2 Sigma Problem: The Search for Methods of Group Instruction as Effective as One-to-One Tutoring (Benjamin Bloom, 1984)&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://pubmed.ncbi.nlm.nih.gov/19739881/&quot;&gt;Conditions for Intuitive Expertise: A Failure to Disagree, Kahneman &amp;amp; Klein, Princeton, 2009&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Secret-Our-Success-Evolution-Domesticating/dp/0691166854&quot;&gt;The Secret of Our Success: How Culture Is Driving Human Evolution, Domesticating Our Species, and Making Us Smarter&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://how.complexsystems.fail/&quot;&gt;How Complex Systems Fail&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Leading/lagging indicators of success
    &lt;ul&gt;
      &lt;li&gt;There’s lots that can be used for benchmarking “where you are” and “where are you going”, and speak to indicators of success for all three target audience cohorts.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;pitch&quot;&gt;Pitch&lt;/h3&gt;

&lt;p&gt;The industry is growing quite quickly, with “junior developers” being an “ever-present problem”. (Ugh, I’m channeling words others have said, not my own actual thoughts.)&lt;/p&gt;

&lt;p&gt;So many ECSDs go through tremendous effort to get into the industry, hit it wide-eyed and excited, only to be told “you’re not good enough because you’re new”, or “only once you’ve spent time here will we treat you like a valuable contribution to our company”&lt;/p&gt;

&lt;p&gt;I don’t think that recommending experienced developers “be more welcoming” is going to effect meaningful change. Those who are amenable to this suggestion are already implementing it, and those who are not amenable don’t really care. ¯_(ツ)_/¯&lt;/p&gt;

&lt;p&gt;So, I want to explain in &lt;em&gt;extremely clear language&lt;/em&gt; the benefits that accrue to persons at various levels of the engineering organization &lt;em&gt;if they start acting like ECSDs have unique and meaningful contributions, partially because of their newness&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;There’s very real money to be made, industries to be transformed, individuals to be impacted, by persons adapting this thinking. The more senior the person is who gets onboard, the more impact this kind of thinking will have within an organization.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Structural Holes and Good Ideas</title>
   <link href="https://josh.works/structural-holes-and-good-ideas"/>
   <updated>2021-03-18T13:00:00+00:00</updated>
   <id>https://josh.works/structural-holes-and-good-ideas</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Note from author: This is part of an experimental series, more-or-less based on “white papers” and academic literature, as applied to somewhat practical-ish domains.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;These pages serve as a brief overview of a paper, and I’ll be able to link to this paper down the road when I what to be able to do so, without having to repeat all of this information&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;status: draft&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;structural-holes-and-good-ideas&quot;&gt;Structural Holes and Good Ideas&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.jstor.org/stable/10.1086/421787&quot;&gt;Paper on JSTOR, PDF available for free therein&lt;/a&gt; (or, as always, check a current mirror of &lt;a href=&quot;https://sci-hub.st/&quot;&gt;scihub&lt;/a&gt;), or &lt;a href=&quot;/_data/papers/Structural Holes and Good Ideas_0.pdf&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s the paper abstract, lightly reformatted for readability:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This article outlines the mechanism by which brokerage provides social capital.&lt;/p&gt;

  &lt;p&gt;Opinion and behavior are more homogeneous within than between groups, so people connected across groups are more familiar with alternative ways of thinking and behaving.&lt;/p&gt;

  &lt;p&gt;Brokerage across the structural holes between groups provides a vision of options otherwise unseen, which is the mechanism by which brokerage becomes social capital.&lt;/p&gt;

  &lt;p&gt;I review evidence consistent with the hypothesis, then look at the networks around managers in a large American electronics company.&lt;/p&gt;

  &lt;p&gt;The organization is rife with structural holes, and brokerage has its expected correlates.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Compensation, positive performance evaluations, promotions, and good ideas are disproportionately in the hands of people whose networks span structural holes.&lt;/strong&gt; The between-group brokers are more likely to express ideas, less likely to have ideas dismissed, and more likely to have ideas evaluated as valuable. I close with implications for creativity and structural change.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;p&gt;On page 387, the section under &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Creativity&lt;/code&gt;, is worth reading.&lt;/p&gt;

&lt;p&gt;Basically, people who bring ideas from one domain/network along with them into another domain/network can create substantial value.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>The Housing Market Is Absolutely Insane: How To Fix It</title>
   <link href="https://josh.works/how-to-fix-the-insane-housing-market"/>
   <updated>2021-02-23T13:00:00+00:00</updated>
   <id>https://josh.works/fixing-insane-housing-market</id>
   <content type="html">&lt;p&gt;I had a brief exchange with a good friend recently:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2021/insane-housing-market.jpg&quot; alt=&quot;how to fix&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The housing market is indeed insane. This problem that we’re both discussing is:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Unbelievable ($650,000 for a fixer upper)&lt;/li&gt;
  &lt;li&gt;Oppressive (“unjustly inflicting hardship and constraint, especially on a minority or other subordinate group”)&lt;/li&gt;
  &lt;li&gt;Evil&lt;/li&gt;
  &lt;li&gt;Fixable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not &lt;em&gt;certainly&lt;/em&gt; fixable, it’s not unavoidably fixable, but it’s fixable if a few things can be made to happen.&lt;/p&gt;

&lt;p&gt;I can defend each of these assertions. High housing costs are responsible for crippling the growth of generations of people, forcing large numbers of people to homelessness, etc.&lt;/p&gt;

&lt;p&gt;I’m not writing this article to convince you that there’s an &lt;em&gt;actual crisis&lt;/em&gt; around housing costs. Like, today, this week, this month. It’s a crisis. If you don’t think there’s a crisis, I’d posit &lt;em&gt;you are part of the problem&lt;/em&gt;, but like I said, I’m not writing to convince you there’s a crisis. It’s so obviously a crisis that, to people who see it accurately, they’d be annoyed how much they’d have to explain it to you.&lt;/p&gt;

&lt;p&gt;Read [The Color of Law], [The Power Broker], [The High Cost of Free Parking], [Order Without Design], [Seeing Like A State], [Strong Towns], etc. I don’t have time today to educate you on why the way “housing gets built” is a catastrophic problem.&lt;/p&gt;

&lt;p&gt;When you look at your monthly income, and look at the cost of housing, and imagine trying to buy &lt;em&gt;and pay off&lt;/em&gt; a house in any sort of desirable area in America, and you see how &lt;em&gt;fundamentally impossible it is&lt;/em&gt; for you to ever own a house free-and-clear, within a few years, you know there’s a problem.&lt;/p&gt;

&lt;h2 id=&quot;introductionoverview&quot;&gt;Introduction/Overview&lt;/h2&gt;

&lt;p&gt;We need to do a few things:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Understand how pleasant cities have historically developed. (AKA “Is there any place-or-time when this seemed like a solved problem”)&lt;/li&gt;
  &lt;li&gt;Understand how the current way of doing things &lt;em&gt;makes things worse and not better&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Understand the &lt;em&gt;actual&lt;/em&gt; changes required to fix these problems&lt;/li&gt;
  &lt;li&gt;Work backwards from actual changes to the current world we live in&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;get-rid-of-things-that-harm-us&quot;&gt;Get rid of things that harm us&lt;/h2&gt;

&lt;h3 id=&quot;euclidean-design&quot;&gt;Euclidean design&lt;/h3&gt;

&lt;p&gt;Fixes come from a range of directions. There are supply-side problems in housing, there are demand-side problems in housing. The entire financial infrastructure around homeownership is bananas.&lt;/p&gt;

&lt;p&gt;Most of the modern legal regime governing housing, it’s acquisition, it’s payment, what you can do with it, &lt;em&gt;is the regime created by racists with the explicit goal of keeping black people from being able to live in ‘nice neighborhoods’&lt;/em&gt;.&lt;/p&gt;

&lt;h3 id=&quot;zoning-laws&quot;&gt;Zoning laws&lt;/h3&gt;

&lt;p&gt;Most zoning laws (I say “most” because I’m SURE someone can find a single counterfactual) cause extreme harm.&lt;/p&gt;

&lt;p&gt;They slow down the speed of experimentation/change, the raise the costs of change, and they lock out large groups of people from &lt;em&gt;ever&lt;/em&gt; participating in the evolution/creation of their own cities&lt;/p&gt;

&lt;p&gt;I touch on this here:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-dnt=&quot;true&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;1/20 Thoughts on Denver&amp;#39;s zoning and systemic racism. &lt;br /&gt;&lt;br /&gt;Here&amp;#39;s a screenshot from &lt;a href=&quot;https://twitter.com/CityofDenver?ref_src=twsrc%5Etfw&quot;&gt;@CityofDenver&lt;/a&gt;&amp;#39;s zoning map on &lt;a href=&quot;https://t.co/Tzx271JS8u&quot;&gt;https://t.co/Tzx271JS8u&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is textbook Euclidean Zoning, AKA &amp;quot;Single-Use Zoning&amp;quot;.&lt;br /&gt;&lt;br /&gt;The problems of this form of zoning are well-known:&lt;a href=&quot;https://t.co/WqiklxjB4h&quot;&gt;https://t.co/WqiklxjB4h&lt;/a&gt; &lt;a href=&quot;https://t.co/7RDaFJlttS&quot;&gt;pic.twitter.com/7RDaFJlttS&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/1294726871574179840?ref_src=twsrc%5Etfw&quot;&gt;August 15, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;euclidean-zoning&quot;&gt;Euclidean zoning&lt;/h3&gt;

&lt;p&gt;Euclidean Zoning is cancerous. &lt;a href=&quot;http://sites.bu.edu/dome/2018/07/19/the-problems-with-euclidean-zoning/&quot;&gt;http://sites.bu.edu/dome/2018/07/19/the-problems-with-euclidean-zoning/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From that article:&lt;/p&gt;

&lt;p&gt;Euclidean zoning has also:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.theatlantic.com/business/archive/2016/01/zoning-land-use-segregation/422595/&quot;&gt;exacerbated segregation issues&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;limited housing supply&lt;/li&gt;
  &lt;li&gt;encouraged urban sprawl&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;eliminate-minimum-everything&quot;&gt;Eliminate minimum-everything&lt;/h3&gt;

&lt;p&gt;No more minimum lot sizes. No more minimum parking requirements.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Restrictions on minimum lot sizes, strict building codes, and other elements of Euclidean zoning have increased housing costs, limited new housing construction, worsened affordability issues, and increased the inequality divide in urban areas.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ll expand on this later. In general, minimum lot size laws were written to raise the cost of housing (and keep black people out of white neighborhoods). Do you need more evidence that the laws should be removed? If you’d like evidence of that assertion, I’m happy to provide it, assuming you’re acting in good faith.&lt;/p&gt;

&lt;h3 id=&quot;eliminate-most-building-codes&quot;&gt;Eliminate &lt;em&gt;most&lt;/em&gt; building codes&lt;/h3&gt;

&lt;p&gt;I want to live in a safe house. I also want to live in a place with shelter. If I have two options, which should I choose?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Option 1: Live in a place that doesn’t meet residential building code requirements&lt;/li&gt;
  &lt;li&gt;Option 2: Be homeless&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which would you have me choose? If you &lt;em&gt;well actually…&lt;/em&gt; your way into option 1, you’re part of the problem. But that’s OK, I don’t actually need you to agree with me to fix the problem.&lt;/p&gt;

&lt;p&gt;People &lt;em&gt;start&lt;/em&gt; with “inadequate” housing, when they’re resource-constrained, and then they upgrade their environment as they can.&lt;/p&gt;

&lt;p&gt;Please see the book: &lt;a href=&quot;https://www.amazon.com/How-Buildings-Learn-Happens-Theyre/dp/0140139966&quot;&gt;How Buildings Learn: What Happens After They’re Built&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;eliminate-zoning-laws&quot;&gt;Eliminate zoning laws&lt;/h3&gt;

&lt;p&gt;They were written by racists to keep black people out of neighborhoods. I feel dirty even having to explain this. The racists wrote that this was their goal when rolling out the institution of zoning. If you’re even partially honest in saying “that cannot be!!! &lt;em&gt;I&lt;/em&gt; am not a racist!” just go &lt;a href=&quot;/full-copy-of-1922-atlanta-zone-plan&quot;&gt;read the original zoning plan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Zoning laws, in America, are horrific and cannot be “modified” to be anything but horrific. Eliminate them.&lt;/p&gt;

&lt;p&gt;We could replace it with &lt;a href=&quot;https://urbankchoze.blogspot.com/2014/04/japanese-zoning.html&quot;&gt;Japanese zoning laws&lt;/a&gt; which, while they still have problems, are dramatically less harmful than American racially-biased zoning laws.&lt;/p&gt;

&lt;h2 id=&quot;do-things-that-help-us&quot;&gt;Do things that help us&lt;/h2&gt;

&lt;p&gt;So, after getting rid of bad stuff, we need to actually do lots of &lt;em&gt;good&lt;/em&gt; things. reduce, reuse, recycle, better use of space, better use of money, provide more important things like jobs, shelter, food, transportation to the people who live in the city.&lt;/p&gt;

&lt;h3 id=&quot;hire-people-that-actually-understand-how-cities-work-and-let-them-provide-expert-guidance-on-how-your-city-should-work&quot;&gt;Hire people that actually understand how cities work, and let them provide expert guidance on how &lt;em&gt;your&lt;/em&gt; city should work&lt;/h3&gt;

&lt;p&gt;Go read &lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design?from_search=true&quot;&gt;Order Without Design&lt;/a&gt;, and internalize its message.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Cities are labor markets&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cities are about labor markets and economic activity. Stop artificially separating housing from commerce. I wish &lt;em&gt;so hard&lt;/em&gt; that I could walk next door and grab a coffee and a block over and buy some groceries and another block over and hit up the local tiny climbing wall, and on my way back grab a beer and do some work in a coworking space.&lt;/p&gt;

&lt;p&gt;Oh, right, I &lt;em&gt;can’t&lt;/em&gt;, because 100 years ago, some asshole decided that people shouldn’t be allowed to open businesses from their house &lt;em&gt;because that was what poor black people did and that asshole used laws to criminalize the way of life of poor people.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh, we need licensing and permitting because without it, ANARCHY!!!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is pearl-clutching, and you’re wrong. So wrong that I cannot even bear to write two sentances explaining why licensing is horrible. &lt;a href=&quot;https://reason.com/tag/occupational-licensing/&quot;&gt;Just go read stories about it, and ask yourself ‘how the hell did we ever get to such a bad place’&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, since &lt;em&gt;cities are about labor&lt;/em&gt;, and &lt;em&gt;licensing artificially restricts the barrier to provided services&lt;/em&gt;, and &lt;em&gt;cities have generally criminalized living and working in the same spot of dirt&lt;/em&gt;, you can maybe see why cities have to throw away all the shitty laws they’ve got around licensing and “home occupations”. (That’s a pejorative term, and I’d love to never hear it again.)&lt;/p&gt;

&lt;p&gt;Oh, and stop funding your police department. They’re a terrible solution to mostly a not-problem, and most of what they do is oppress minorities and perpetuate our uniquely american “criminalization of poverty” thing. &lt;a href=&quot;https://podcasts.apple.com/us/podcast/behind-the-police/id1518323701&quot;&gt;https://podcasts.apple.com/us/podcast/behind-the-police/id1518323701&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(I have problems with political authority. Mostly because it’s &lt;em&gt;not real&lt;/em&gt;. There is no “political authority”. There’s three groups in the world:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;people &lt;em&gt;who use “political authority” as justification to make threats of violence against others&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;People who think &lt;em&gt;political authority&lt;/em&gt; requires that they and others submit to the demands of group 1&lt;/li&gt;
  &lt;li&gt;Everyone else&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Obviously, group 1 is small and powerful. Group 2 is huge. Group 3 is rapidly growing.&lt;/p&gt;

&lt;h3 id=&quot;eliminate-restrictions-on-commercial-and-residential-activity-in-the-same-lot&quot;&gt;Eliminate restrictions on commercial and residential activity in the same lot&lt;/h3&gt;

&lt;p&gt;If I want to work and live in the same place, who the hell are you to tell me I cannot? This is how human societies have managed themselves for all of time.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;valid-problems-with-these-fixes&quot;&gt;Valid problems with these fixes&lt;/h2&gt;

&lt;p&gt;There’s some problems with these fixes. I’m suggesting throwing away about a century of legislation that seems beyond the pale to many people.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The issue is that Euclidean zoning, is so ingrained it will be difficult for towns to change their entire structure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s so engrained. How do towns fix this?&lt;/p&gt;

&lt;p&gt;Honestly, towns need to do away with local governments. Just straight up end it. Stop paying your taxes. Stop going to city meetings. Stop submitting building plan propossals. Stop requesting permits. Just take your property and build on it.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;So, what happens when all this oppressive, legal bullshit is stripped away?&lt;/p&gt;

&lt;p&gt;We let “the market” sort itself. When the price for something is high, that attracts persons who try to solve it because there’s money to be made.&lt;/p&gt;

&lt;p&gt;An aging couple might convert their garage to college housing. They might rent out a basement to a small family. With a little up-work, they’ll bring in an extra $2k/month, forever.&lt;/p&gt;

&lt;p&gt;Incidentally, &lt;em&gt;this solves the ‘social security is running out of money’ problem for any elderly person who lives in a desirable locale&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Now, there’s more people living in neighborhoods. OH NO! THE TRAFFIC!&lt;/p&gt;

&lt;p&gt;JK, that won’t be a problem, because most people won’t drive nearly as much as they do when they live here:&lt;/p&gt;

&lt;add picture=&quot;&quot; of=&quot;&quot; suburban=&quot;&quot; hellscape=&quot;&quot;&gt;

They will live within a short walk of:

- grocery stores
- doctors&apos; offices
- restaurants
- markets
- a billion home-run businesses
- parks
- bookstores
- and much more

&amp;gt; JOSH! My neighborhood doesn&apos;t have all those things! This isn&apos;t true!

Your neighborhood doesn&apos;t have those things _because they&apos;re illegal. Make them not-illegal, and you&apos;ll start seeing them crop up._

## End America&apos;s embarrassing fetishization of alcohol

Fetish, definition:
- an excessive and irrational devotion or commitment to a particular thing
-  a form of sexual desire in which gratification is linked to an abnormal degree to a particular object, item of clothing, part of the body, etc
- an inanimate object worshiped for its supposed magical powers or because it is considered to be inhabited by a spirit.

All three of these apply to how America thinks about Alcohol, _and it&apos;s ruining our damn cities_. 

Wanna serve alcohol anywhere? oops, open drinking laws mean you have to have a fence between where your patrons sit, and &quot;the public&quot; might walk. Good job, you just criminalized collective shared seating between a number of small restaurants

Want to open a coffee shop, but you realize most people don&apos;t drink coffee at 5p, so you want to augment your offerings with time-and-context-aware offerings?

Too bad, liquor licenses are expensive AF, and require letting the city be rather intimate with every one of your dealings, so you cannot just hit the local liquor store, buy a few boxes of wine, and start &quot;selling wine&quot;. 

Want to open a restaurant, but you&apos;re from Spain, and you grew up drinking wine at lunch? 

Too bad. In America, you&apos;re a criminal and will be treated as such.


## The Positive

OK, so, I&apos;ve ranted and railed about &quot;bad things that need to go away&quot;, but that doesn&apos;t help with how to promote more good things?

Here&apos;s that list. We need to stop building in bad ways and start building in good ways. 

&quot;We&quot; is _not_ inclusive of &quot;people who have historically built things&quot;. I&apos;d love to see teenagers, college-age adults, and anyone under 30 getting into building buildings and mobility infrastructure. 

This is why licensing and credentialing is so damn harmful. If you want to _build_ anything in America you need to go through a decade of useless schooling and gatekeeping to get permission to do something, at which point your independence has been beaten out of you, and by the time you&apos;re done, you&apos;re likely depressed, overweight, and old. Not exactly a great spot to start &quot;changing the world&quot;.

- [Patterns of Home]
- [A Pattern Language]
- [How Buildings Learn]
- [Best Practices Dutch Cycling - 5. Bicycle Streets](https://fietsberaad.nl/Kennisbank/Best-Practices-Dutch-Cycling-5-Bicycle-Streets)
- [Order Without Design]()

# How to actually accomplish all of this

I&apos;m not going to suggest any books about cities, when it comes to transforming out cities and ending the systemic racism that our modern legal regime perpetuates. 

Here&apos;s some dangerous books that will help paint a path out:

- [The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey](https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority)
- [Police Union Power, Politics, and Confrontation in the 21st Century: New Challenges, New Issues](https://www.goodreads.com/book/show/4982654-police-union-power-politics-and-confrontation-in-the-21st-century)
- [The Power Broker: Robert Moses and the Fall of New York](https://www.goodreads.com/book/show/1111.The_Power_Broker)
- [Rules for Radicals: A Pragmatic Primer for Realistic Radicals](https://www.goodreads.com/book/show/102748.Rules_for_Radicals)

### Further Reading

- []()



### Footnotes 

&lt;/add&gt;
</content>
 </entry>
 
 <entry>
   <title>Driven by Compression Progress</title>
   <link href="https://josh.works/driven-by-compression-progress-novelty-humor-interestingness-curiosity-creativity"/>
   <updated>2021-02-18T13:00:00+00:00</updated>
   <id>https://josh.works/driven-by-compression-progress</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Note from author: This is part of an experimental series, more-or-less based on “white papers” and academic literature, as applied to somewhat practical-ish domains.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;These pages serve as a brief overview of a paper, and I’ll be able to link to this paper down the road when I what to be able to do so, without having to repeat all of this information&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;driven-by-compression-progress-a-simple-principle-explains-essential-aspects-of-subjective-beauty-novelty-surprise-interestingness-attention-curiosity-creativity-art-science-music-jokes&quot;&gt;Driven by Compression Progress: A Simple Principle Explains Essential Aspects of Subjective Beauty, Novelty, Surprise, Interestingness, Attention, Curiosity, Creativity, Art, Science, Music, Jokes&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://arxiv.org/abs/0812.4360&quot;&gt;Paper on arxiv.org, PDF available for free therein&lt;/a&gt;, or &lt;a href=&quot;/assets/Driven_by_compression_progress.pdf&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s the paper abstract, lightly reformatted for readability:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I argue that data becomes temporarily interesting by itself to some self-improving, but computationally limited, subjective observer once he learns to predict or compress the data in a better way, thus making it subjectively simpler and more beautiful.&lt;/p&gt;

  &lt;p&gt;Curiosity is the desire to create or discover more non-random, non-arbitrary, regular data that is novel and surprising not in the traditional sense of Boltzmann and Shannon but in the sense that it allows for compression progress because its regularity was not yet known.&lt;/p&gt;

  &lt;p&gt;This curiosity drive maximizes interestingness, the first derivative of subjective beauty or compressibility, that is, the steepness of the learning curve.&lt;/p&gt;

  &lt;p&gt;It motivates exploratory infants, mathematicians, composers, artists, dancers, comedians, yourself, and (since 1990) artificial intelligence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I read this mid-2019:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/compression-progress.jpg&quot; alt=&quot;read in 2019&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And three times since then. Whenever I re-read a paper, I add the date to it. Here’s it’s current state:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2021/2021-02-26 at 10.29 AM.jpg&quot; alt=&quot;read 4x&quot; /&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;The abstract was hard for me to read the first time. I had to re-read it a few different times. Here it is, with my thoughts between sentences:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I argue that data becomes temporarily interesting by itself to some self-improving, but computationally limited, subjective observer once he learns to predict or compress the data in a better way, thus making it subjectively simpler and more beautiful.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A self-improving, computationally limited, subjective observer is a fancy way of saying “a normal person”. I’m a self-improving, computationally limited, subjective observer.&lt;/p&gt;

&lt;p&gt;I feel a little dose of dopamine in my brain when I encounter novel information, and I have learned to predicted it or anticipate it better than I think I would have. A sign of “better prediction” or “compression” is when I can &lt;em&gt;name a principle elucidated by an author or a known phenomena&lt;/em&gt; that is a likely precipitating cause for the unfolding of the story/event.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Curiosity is the desire to create or discover more non-random, non-arbitrary, regular data that is novel and surprising not in the traditional sense of Boltzmann and Shannon but in the sense that it allows for compression progress because its regularity was not yet known.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Do you know that reference? I have no idea who Boltzmann is&lt;sup id=&quot;fnref:now-i-know-who-he-is&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:now-i-know-who-he-is&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, but I happen to know who Shannon is, and &lt;em&gt;because I know what is being implied&lt;/em&gt; this entire paper takes on a new light.&lt;/p&gt;

&lt;p&gt;Shannon is an incredible figure. I’d encourage you to read &lt;a href=&quot;https://www.goodreads.com/book/show/32919530-a-mind-at-play&quot;&gt;A Mind At Play: How Claude Shannon Invented the Information Age&lt;/a&gt;. It’s fascinating. His life, and his approach to life and his research, is &lt;em&gt;interesting&lt;/em&gt;, in the same recursive way that this entire paper I’m discussing is &lt;em&gt;interesting&lt;/em&gt;.&lt;sup id=&quot;fnref:shannon&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:shannon&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This drive maximizes interestingness, the first derivative of subjective beauty or compressibility, that is, the steepness of the learning curve.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The “steepness of the learning curve” is in the same sense that &lt;a href=&quot;/a-little-bit-of-slope-makes-up-for-a-lot-of-y-intercept&quot;&gt;the slope is more important than the y-intercept&lt;/a&gt;. (Click that link, read the talk. It’s important to understand the implications for having “the steepest learning curve possible”)&lt;/p&gt;

&lt;p&gt;This “steepness” piece, combined with the idea of “compressibility”, posits that they’re inextricably linked. The person who finds the best means to compress information learns the fastest, &lt;em&gt;and therefore outperforms all others in medium-to-long time horizons.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It motivates exploring infants, pure mathematicians, composers, artists, dancers, comedians, yourself, and (since 1990) artificial systems.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The conclusion of the abstract ties in this (admittedly dense) topic of “compression progress” to the domain of &lt;em&gt;all of us&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Anyone engaged in pure research should read this. Anyone who creates &lt;em&gt;anything&lt;/em&gt; (words, jokes, code) should attend to the idea of “compression progress”. To attend to this compression is to engage in learning and exploration in the most effective way possible.&lt;/p&gt;

&lt;p&gt;Incidentally, for examples of persons driven by compression progress, we can all turn to infants, and observe how they explore the world.&lt;sup id=&quot;fnref:secrets-of-success&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:secrets-of-success&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;I’ll probably pull out quotes from the paper at some point. Download the paper and skim the table of contents.&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:now-i-know-who-he-is&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;After reading this article, my friend &lt;a href=&quot;https://stephentpollard.com/&quot;&gt;Stephen Pollard&lt;/a&gt; emailed me with:&lt;/p&gt;
      &lt;blockquote&gt;
        &lt;p&gt;I just read that you don’t know who Boltzmann is. He’s a baller. He’s associated with &lt;a href=&quot;https://en.wikipedia.org/wiki/Entropy#Information_theory&quot;&gt;Entropy and information theory&lt;/a&gt;.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:now-i-know-who-he-is&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:shannon&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;An understanding of how Claude Shannon understood “information compression” sheds light on other forms of compression, as they compare/contrast, like: &lt;a href=&quot;https://news.ycombinator.com/item?id=26186685&quot;&gt;Jane Austen’s concept of information (Not Claude Shannon’s) (2013)&lt;/a&gt; &lt;a href=&quot;#fnref:shannon&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:secrets-of-success&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;One of the best books I’ve read recently expands on this “compression progress” from a novel ethnographic perspective. The book title is: &lt;a href=&quot;https://www.amazon.com/Secret-Our-Success-Evolution-Domesticating-ebook/dp/B00WY4OXAS/ref=as_li_ss_tl?keywords=the+secret+of+our+success&amp;amp;qid=1559607052&amp;amp;s=gateway&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=slatestarcode-20&amp;amp;linkId=761afd67f6541a6de5cebbd0127aa910&amp;amp;language=en_US&quot;&gt;The Secret of Our Success: How Culture Is Driving Human Evolution, Domesticating Our Species, and Making Us Smarter&lt;/a&gt;.&lt;/p&gt;

      &lt;p&gt;Don’t read the book, though, read this book review by Scott Alexander: &lt;a href=&quot;https://slatestarcodex.com/2019/06/04/book-review-the-secret-of-our-success/&quot;&gt;Book Review: The Secret Of Our Success&lt;/a&gt; &lt;a href=&quot;#fnref:secrets-of-success&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Two Critical Books and Two Critical Articles (For &apos;Software People&apos;)</title>
   <link href="https://josh.works/two-books-two-articles-for-software-developers"/>
   <updated>2021-01-26T13:00:00+00:00</updated>
   <id>https://josh.works/two-critical-books-articles-for-software-developers</id>
   <content type="html">&lt;p&gt;I speak with many persons who are &lt;em&gt;considering&lt;/em&gt; becoming software developers (usually by way of a program like the &lt;a href=&quot;https://www.coursereport.com/schools/flatiron-school&quot;&gt;Flatiron School&lt;/a&gt; or the &lt;a href=&quot;https://www.coursereport.com/schools/turing#/reviews&quot;&gt;Turing School&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;I’m a graduate of the Turing School, and have written a lot about the program, like:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing&quot;&gt;My reflections on Turing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;an 8-part guide to take you from &lt;em&gt;slightly&lt;/em&gt; prepared to ridiculously prepared for the back-end program&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;a bespoke &lt;a href=&quot;/particularly-well-prepared-for-turing-backend-program&quot;&gt;Turing prep for parents&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/remote-job-resources&quot;&gt;job-hunting advice for Turing grads (and anyone else)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I recommend &lt;em&gt;strongly&lt;/em&gt; the following books and articles &lt;em&gt;all the time&lt;/em&gt;. They are broadly helpful no matter where you are in your career (or if you don’t have one! A “career” is a luxury, a “job” puts a roof over your head.)&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;This is a copy/paste from a recent conversation. I’m going to stop copy/pasting these four links to people all the dang time, and instead send them to this page you’re reading right now:&lt;/p&gt;

&lt;p&gt;other person:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;What where those books/resources that you said are so foundational to your understanding of the industry?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Me:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Read these two books, and these two articles. The books are available at your local library in any format you’d want. The articles are long, give them appropriate attention:&lt;/p&gt;

  &lt;p&gt;1/3rd of the reason I became a software developer is because of these two articles:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.kalzumeus.com/2012/01/23/salary-negotiation/&quot;&gt;Salary Negotiation: Make More Money, Be More Valued (Patio11)&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/&quot;&gt;Don’t Call Yourself A Programmer, And Other Career Advice (Patio11)&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;

  &lt;p&gt;This book is another 1/3rd of the reason I got into software:&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/18693655-a-mind-for-numbers&quot;&gt;A Mind for Numbers: How to Excel at Math and Science (Even If You Flunked Algebra) &lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;The last 1/3rd (or maybe the first 1/3rd) was from this book:&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/13525945-so-good-they-can-t-ignore-you&quot;&gt;So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</content>
 </entry>
 
 <entry>
   <title>Dizzying but Invisible Depth</title>
   <link href="https://josh.works/dizzying-but-invisible-depth"/>
   <updated>2021-01-16T13:00:00+00:00</updated>
   <id>https://josh.works/dizzying-but-invisible-depth</id>
   <content type="html">&lt;p&gt;&lt;em&gt;The following is from &lt;a href=&quot;https://plus.google.com/+JeanBaptisteQueru/posts/dfydM2Cnepe&quot;&gt;https://plus.google.com/+JeanBaptisteQueru/posts/dfydM2Cnepe&lt;/a&gt;, but Google+ is shutdown, so it’s not easily sharable. I’m reposting here because this is such a useful post.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;dizzying-but-invisible-depth&quot;&gt;Dizzying but invisible depth&lt;/h2&gt;

&lt;p&gt;You just went to the Google home page.&lt;/p&gt;

&lt;p&gt;Simple, isn’t it?&lt;/p&gt;

&lt;p&gt;What just actually happened?&lt;/p&gt;

&lt;p&gt;Well, when you know a bit of about how browsers work, it’s not quite that simple. You’ve just put into play HTTP, HTML, CSS, ECMAscript, and more.&lt;/p&gt;

&lt;p&gt;Those are actually such incredibly complex technologies that they’ll make any engineer dizzy if they think about them too much, and such that no single company can deal with that entire complexity.&lt;/p&gt;

&lt;p&gt;Let’s simplify.&lt;/p&gt;

&lt;h3 id=&quot;you-just-connected-your-computer-to-wwwgooglecom&quot;&gt;You just connected your computer to www.google.com.&lt;/h3&gt;

&lt;p&gt;Simple, isn’t it?&lt;/p&gt;

&lt;p&gt;What just actually happened?&lt;/p&gt;

&lt;p&gt;Well, when you know a bit about how networks work, it’s not quite that simple. You’ve just put into play DNS, TCP, UDP, IP, Wifi, Ethernet, DOCSIS, OC, SONET, and more.&lt;/p&gt;

&lt;p&gt;Those are actually such incredibly complex technologies that they’ll make any engineer dizzy if they think about them too much, and such that no single company can deal with that entire complexity.&lt;/p&gt;

&lt;p&gt;Let’s simplify.&lt;/p&gt;

&lt;h3 id=&quot;you-just-typed-wwwgooglecom-in-the-location-bar-of-your-browser&quot;&gt;You just typed www.google.com in the location bar of your browser.&lt;/h3&gt;

&lt;p&gt;Simple, isn’t it?&lt;/p&gt;

&lt;p&gt;What just actually happened?&lt;/p&gt;

&lt;p&gt;Well, when you know a bit about how operating systems work, it’s not quite that simple. You’ve just put into play a kernel, a USB host stack, an input dispatcher, an event handler, a font hinter, a sub-pixel rasterizer, a windowing system, a graphics driver, and more, all of those written in high-level languages that get processed by compilers, linkers, optimizers, interpreters, and more.&lt;/p&gt;

&lt;p&gt;Those are actually such incredibly complex technologies that they’ll make any engineer dizzy if they think about them too much, and such that no single company can deal with that entire complexity.&lt;/p&gt;

&lt;p&gt;Let’s simplify.&lt;/p&gt;

&lt;h3 id=&quot;you-just-pressed-a-key-on-your-keyboard&quot;&gt;You just pressed a key on your keyboard.&lt;/h3&gt;

&lt;p&gt;Simple, isn’t it?&lt;/p&gt;

&lt;p&gt;What just actually happened?&lt;/p&gt;

&lt;p&gt;Well, when you know about bit about how input peripherals work, it’s not quite that simple.&lt;/p&gt;

&lt;p&gt;You’ve just put into play a power regulator, a debouncer, an input multiplexer, a USB device stack, a USB hub stack, all of that implemented in a single chip. That chip is built around thinly sliced wafers of highly purified single-crystal silicon ingot, doped with minute quantities of other atoms that are blasted into the crystal structure, interconnected with multiple layers of aluminum or copper, that are deposited according to patterns of high-energy ultraviolet light that are focused to a precision of a fraction of a micron, connected to the outside world via thin gold wires, all inside a packaging made of a dimensionally and thermally stable resin.&lt;/p&gt;

&lt;p&gt;The doping patterns and the interconnects implement transistors, which are grouped together to create logic gates.&lt;/p&gt;

&lt;p&gt;In some parts of the chip, logic gates are combined to create arithmetic and bitwise functions, which are combined to create an ALU. In another part of the chip, logic gates are combined into bistable loops, which are lined up into rows, which are combined with selectors to create a register bank.&lt;/p&gt;

&lt;p&gt;In another part of the chip, logic gates are combined into bus controllers and instruction decoders and microcode to create an execution scheduler. In another part of the chip, they’re combined into address and data multiplexers and timing circuitry to create a memory controller.&lt;/p&gt;

&lt;p&gt;There’s even more. Those are actually such incredibly complex technologies that they’ll make any engineer dizzy if they think about them too much, and such that no single company can deal with that entire complexity.&lt;/p&gt;

&lt;h3 id=&quot;can-we-simplify-further&quot;&gt;Can we simplify further?&lt;/h3&gt;

&lt;p&gt;In fact, very scarily, no, we can’t. We can barely comprehend the complexity of a single chip in a computer keyboard, and yet there’s no simpler level.&lt;/p&gt;

&lt;p&gt;The next step takes us to the software that is used to design the chip’s logic, and that software itself has a level of complexity that requires to go back to the top of the loop.&lt;/p&gt;

&lt;p&gt;Today’s computers are so complex that they can only be designed and manufactured with slightly less complex computers. In turn the computers used for the design and manufacture are so complex that they themselves can only be designed and manufactured with slightly less complex computers.&lt;/p&gt;

&lt;p&gt;You’d have to go through many such loops to get back to a level that could possibly be re-built from scratch.&lt;/p&gt;

&lt;p&gt;Once you start to understand how our modern devices work and how they’re created, it’s impossible to not be dizzy about the depth of everything that’s involved, and to not be in awe about the fact that they work at all, when Murphy’s law says that they simply shouldn’t possibly work.&lt;/p&gt;

&lt;p&gt;For non-technologists, this is all a black box. That is a great success of technology: all those layers of complexity are entirely hidden and people can use them without even knowing that they exist at all.&lt;/p&gt;

&lt;p&gt;That is the reason why many people can find computers so frustrating to use: there are so many things that can possibly go wrong that some of them inevitably will, but the complexity goes so deep that it’s impossible for most users to be able to do anything about any error.&lt;/p&gt;

&lt;p&gt;That is also why it’s so hard for technologists and non-technologists to communicate together: technologists know too much about too many layers and non-technologists know too little about too few layers to be able to establish effective direct communication.&lt;/p&gt;

&lt;p&gt;The gap is so large that it’s not even possible any more to have a single person be an intermediate between those two groups, and that’s why e.g. we end up with those convoluted technical support call centers and their multiple tiers. Without such deep support structures, you end up with the frustrating situation that we see when end users have access to a bug database that is directly used by engineers: neither the end users nor the engineers get the information that they need to accomplish their goals.&lt;/p&gt;

&lt;p&gt;That is why the mainstream press and the general population has talked so much about Steve Jobs’ death and comparatively so little about Dennis Ritchie’s: Steve’s influence was at a layer that most people could see, while Dennis’ was much deeper.&lt;/p&gt;

&lt;p&gt;On the one hand, I can imagine where the computing world would be without the work that Jobs did and the people he inspired: probably a bit less shiny, a bit more beige, a bit more square. Deep inside, though, our devices would still work the same way and do the same things. On the other hand, I literally can’t imagine where the computing world would be without the work that Ritchie did and the people he inspired. By the mid 80s, Ritchie’s influence had taken over, and even back then very little remained of the pre-Ritchie world.&lt;/p&gt;

&lt;p&gt;Finally, last but not least, that is why our patent system is broken: technology has done such an amazing job at hiding its complexity that the people regulating and running the patent system are barely even aware of the complexity of what they’re regulating and running.&lt;/p&gt;

&lt;p&gt;That’s the ultimate bikeshedding: just like the proverbial discussions in the town hall about a nuclear power plant end up being about the paint color for the plant’s bike shed, the patent discussions about modern computing systems end up being about screen sizes and icon ordering, because in both cases those are the only aspect that the people involved in the discussion are capable of discussing, even though they are irrelevant to the actual function of the overall system being discussed.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Ethan Magnass&apos; sermons from Grace Anglican Church in Grove City, PA</title>
   <link href="https://josh.works/sermons"/>
   <updated>2020-12-14T13:00:00+00:00</updated>
   <id>https://josh.works/ethan-magness-sermons</id>
   <content type="html">&lt;p&gt;&lt;em&gt;update from a few years later: I tried a bunch of stuff to keep myself within evangelicalism. failed, so iterated through another option, sorta in the style of &lt;a href=&quot;https://www.goodreads.com/book/show/149033.Exit_Voice_and_Loyalty&quot;&gt;exit, voice, and loyalty: responses in decline of quality of firms&lt;/a&gt;. I’ve firmly left the club, and warmly invite anyone else finding themselves within it to do the same: &lt;a href=&quot;/on-leaving-evangelicalism&quot;&gt;On Leaving Evangelicalism and Opposing It&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’ve been recommending a collection of sermons to many people recently.&lt;/p&gt;

&lt;p&gt;I’ve listened to each of these sermons quite a few times. They’re worth your time.&lt;/p&gt;

&lt;p&gt;Ethan Magness is the rector at &lt;a href=&quot;http://graceanglicanonline.com/&quot;&gt;Grace Anglican Church&lt;/a&gt; in Grove City, PA.&lt;/p&gt;

&lt;h2 id=&quot;sermon-series-on-joseph&quot;&gt;Sermon Series on Joseph&lt;/h2&gt;

&lt;p&gt;Grace Anglican Church podcast feed (&lt;a href=&quot;https://play.pocketcasts.com/podcasts/6de56a60-e04e-0134-ebdd-4114446340cb&quot;&gt;PocketCasts&lt;/a&gt;, &lt;a href=&quot;https://podcasts.apple.com/us/podcast/grace-anglican-church/id1209329002&quot;&gt;Apple Podcasts&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-i-privilege/&quot;&gt;St Joe (Part I) – Privilege – Genesis 37&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-ii-desecration-genesis-37/&quot;&gt;St Joe (Part II) – Desecration – Genesis 37&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-iii-companion-genesis-39/&quot;&gt;St Joe (Part III) – Companion – Genesis 39&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-iv-dreams-genesis-40/&quot;&gt;St Joe (Part IV) – Dreams – Genesis 40&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-v-engagement-genesis-41/&quot;&gt;St Joe (Part V) – Engagement – Genesis 41&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-vi-rise-genesis-41/&quot;&gt;St Joe (Part VI) – Rise – Genesis 41&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-vii-sun-genesis-45/&quot;&gt;St Joe (Part VII) – Sun – Genesis 45&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-viii-dad-genesis-46/&quot;&gt;St Joe (Part VIII) – Dad – Genesis 46&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-ix-bless-genesis-48/&quot;&gt;St Joe (Part IX) – Bless – Genesis 48&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-x-mix-genesis-49/&quot;&gt;St Joe (Part X) – Mix – Genesis 49&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://graceanglicanonline.com/podcast/st-joe-part-xi-mummies-genesis-50/&quot;&gt;St Joe (Part XI) – Mummies – Genesis 50&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;sermon-on-matthew-543-48&quot;&gt;Sermon on Matthew 5:43-48&lt;/h2&gt;

&lt;p&gt;From November 4, 2018: &lt;a href=&quot;http://graceanglicanonline.com/podcast/gollum-the-outstretched-hand-matthew-5/&quot;&gt;Gollum &amp;amp; the Outstretched Hand - Matthew 5&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Relevant scripture:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“You have heard that it was said, ‘Love your neighbor and hate your enemy.’&lt;/p&gt;

  &lt;p&gt;But I tell you, love your enemies and pray for those who persecute you, that you may be children of your Father in heaven. He causes his sun to rise on the evil and the good, and sends rain on the righteous and the unrighteous.&lt;/p&gt;

  &lt;p&gt;If you love those who love you, what reward will you get? Are not even the tax collectors doing that?&lt;/p&gt;

  &lt;p&gt;And if you greet only your own people, what are you doing more than others? Do not even pagans do that?&lt;/p&gt;

  &lt;p&gt;Be perfect, therefore, as your heavenly Father is perfect.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I have far more thoughts on the topic, but for now, this should help you, the reader, find these excellent sermons.&lt;/p&gt;

&lt;h2 id=&quot;todo&quot;&gt;Todo&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;I’d like to get high-quality transcripts of these sermons. There are services that do this (Like &lt;a href=&quot;https://www.rev.com/&quot;&gt;Rev&lt;/a&gt;), I’ll pay for it sometime soon. I want &lt;em&gt;good&lt;/em&gt; transcripts, not just AI-generated transcripts. It took me like two hours to clean up a few minutes of AI-generated text for &lt;a href=&quot;/my-thoughts-on-erics-thoughts-on-pias-thoughts&quot;&gt;My Thoughts on Eric Weinstein’s Thoughts on Pia Kalani’s Thoughts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At some point I’ll weave together other threads I’ve got sketched out, but are not ready for public consumption.&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/whats-up-with-anabaptists&quot;&gt;What’s up with the Anabaptists? (josh.works)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/was-jesus-ethics-normative&quot;&gt;Was Jesus’ behavior normative? (josh.works)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/on-leaving-evangelicalism&quot;&gt;On Leaving Evangelicalism and Opposing It&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Fred Roger&apos;s Method For Writing Scripts</title>
   <link href="https://josh.works/mr-rogers-method-for-writing-scripts"/>
   <updated>2020-09-30T13:00:00+00:00</updated>
   <id>https://josh.works/mr-rogers-methods-for-writing-scripts</id>
   <content type="html">&lt;p&gt;Someone said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;People think this is silly, but read about Fred rogers’ method for writing a script for his show. The rules aren’t fully applicable to presentations, but the attention to detail and to the Interpretation of the audience is. Don’t use any words carelessly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’m not normal. I’ve got three articles open right now. Is there a canonical resource you’d recommend, or I should just seat-of-the-pants research it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-09-30 at 3.16 PM.jpg&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;

&lt;!--more--&gt;
&lt;p&gt;I’m going to knock out what I can in 20 minutes, share back with said individual, and calibrate on if they think I learned what I need to learn. Timer starts at 3:17p.&lt;/p&gt;

&lt;p&gt;It’s now 3:37.&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;/p&gt;

&lt;p&gt;I didn’t find anything super specific to how he writes his scripts, but I think there’s a lot to glean from his approach to strongly empathizing with his audience. “strong empathy” feels like a criminal understatement.&lt;/p&gt;

&lt;p&gt;I’ve never seen Mr. Rogers. I’m tempted now to find some and watch it. If you’d recommend it, where should I start? Any youtube video overviews I should check out?&lt;/p&gt;

&lt;h3 id=&quot;10-things-tom-hangs-learned-by-playing-mr-rogers&quot;&gt;10 things Tom Hangs learned by Playing Mr. Rogers&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://screenrant.com/beautiful-day-in-the-neighborhood-tom-hanks-learned-playing-mr-rogers/&quot;&gt;A Beautiful Day In The Neighborhood: 10 Things Tom Hanks Learned By Playing Mr. Rogers (screenrant)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The 10 lessons from the article.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Be kind, be kind, and be kind&lt;/li&gt;
  &lt;li&gt;Every single person you’re talking to should feel like they’re the only person in the world who matters&lt;/li&gt;
  &lt;li&gt;The slow, reflective nature of Mr. Rogers’ kindness&lt;/li&gt;
  &lt;li&gt;Be the message, don’t preach the message&lt;/li&gt;
  &lt;li&gt;Even now, keep looking for the helpers&lt;/li&gt;
  &lt;li&gt;The sweater is the key&lt;/li&gt;
  &lt;li&gt;Embrace the good and true, over the easy and cynical&lt;/li&gt;
  &lt;li&gt;To spread joy is the natural order of things&lt;/li&gt;
  &lt;li&gt;Kindness and compassion as ministry&lt;/li&gt;
  &lt;li&gt;It’s not just a children’s show&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The titles don’t do it justice. Some of these spoke very loudly to me.&lt;/p&gt;

&lt;p&gt;###&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.theatlantic.com/family/archive/2018/06/mr-rogers-neighborhood-talking-to-kids/562352/&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few quotes in particular jumped out at me:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Per the pamphlet, there were nine steps for translating into Freddish:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;“State the idea you wish to express as clearly as possible, and in terms preschoolers can understand.” Example: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;It is dangerous to play in the street.&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;“Rephrase in a positive manner,” as in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;It is good to play where it is safe.&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;“Rephrase the idea, bearing in mind that preschoolers cannot yet make subtle distinctions and need to be redirected to authorities they trust.” As in, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ask your parents where it is safe to play.&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;“Rephrase your idea to eliminate all elements that could be considered prescriptive, directive, or instructive.” In the example, that’d mean getting rid of “ask”: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Your parents will tell you where it is safe to play.&lt;/code&gt;`&lt;/li&gt;
    &lt;li&gt;“Rephrase any element that suggests certainty.” That’d be “will”: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Your parents can tell you where it is safe to play.&lt;/code&gt;`&lt;/li&gt;
    &lt;li&gt;“Rephrase your idea to eliminate any element that may not apply to all children.” Not all children know their parents, so: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Your favorite grown-ups can tell you where it is safe to play.&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;“Add a simple motivational idea that gives preschoolers a reason to follow your advice.” Perhaps: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Your favorite grown-ups can tell you where it is safe to play. It is good to listen to them.&lt;/code&gt;`&lt;/li&gt;
    &lt;li&gt;“Rephrase your new statement, repeating the first step.” “Good” represents a value judgment, so: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Your favorite grown-ups can tell you where it is safe to play. It is important to try to listen to them.&lt;/code&gt;`&lt;/li&gt;
    &lt;li&gt;“Rephrase your idea a ﬁnal time, relating it to some phase of development a preschooler can understand.” Maybe: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Your favorite grown-ups can tell you where it is safe to play. It is important to try to listen to them, and listening is an important part of growing.&lt;/code&gt;`&lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;In working on the show, Rogers interacted extensively with academic researchers. Daniel R. Anderson, a psychologist formerly at the University of Massachusetts who worked as an advisor for the show, remembered a speaking trip to Germany at which some members of an academic audience raised questions about Rogers’s direct approach on television. They were concerned that it could lead to false expectations from children of personal support from a televised figure. Anderson was impressed with the depth of Rogers’s reaction, and with the fact that he went back to production carefully screening scripts for any hint of language that could confuse children in that way.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;As simple as Mister Rogers’ Neighborhood looked and sounded, every detail in it was the product of a tremendously careful, academically informed process.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;p&gt;Now I’m wondering about the financial success of his show.&lt;/p&gt;

&lt;h3 id=&quot;wikipedia-fred-rogers&quot;&gt;Wikipedia: Fred Rogers&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Fred_Rogers&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The show was popular:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;by 2016 it was the third-longest running program in PBS history&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah, here’s how involved he was:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;According to King, the process of putting each episode of Mister Rogers’ Neighborhood together was “painstaking”[59] and Rogers’ contribution to the program was “astounding”. Rogers wrote and edited all the episodes, played the piano and sang for most of the songs, wrote 200 songs and 13 operas, created all the characters (both puppet and human), played most of the major puppet roles, hosted every episode, and produced and approved every detail of the program.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He had two stages to the show:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;n 1975 Rogers stopped producing Mr. Rogers’ Neighborhood to focus on adult programming. […] In 1979, after an almost five-year hiatus, Rogers returned to producing the Neighborhood; King calls the new version “stronger and more sophisticated than ever”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ahhh…. influence, and storytelling:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Even though Rogers was not yet nationally known, he was chosen to testify because of his ability to make persuasive arguments and to connect emotionally with his audience. The clip of Rogers’ testimony, which was televised and has since been viewed by millions of people on the internet, helped to secure funding for PBS for many years afterwards.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Lets watch the clip, or queue it up for later at least. He starts to speak at 0:20:&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/fKy7ljRr0AA?start=20&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;I &lt;em&gt;will&lt;/em&gt; watch this video, just not quite right now.&lt;/p&gt;

&lt;p&gt;Oh, and he’s from Pittsburgh. I went to school near there, just finished working remotely for a company in Pittsburgh. I loved visiting the city.&lt;/p&gt;

&lt;h2 id=&quot;optional-next-steps&quot;&gt;Optional Next Steps&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;I could read &lt;a href=&quot;https://www.amazon.com/Good-Neighbor-Life-Work-Rogers/dp/1419735160/ref=sr_1_2?dchild=1&amp;amp;keywords=the+good+neighbor&amp;amp;qid=1601501543&amp;amp;sr=8-2&quot;&gt;Good Neighbor: The Life and Work of Fred Rogers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Actually watch some Mr. Rogers clips. I’m tempted to do that anyway, now.&lt;/li&gt;
  &lt;li&gt;Any recommended youtube videos?&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>Cultivate the Skill of Undivided Attention, or &apos;Deep Work&apos; (Crosspost from `letterstoanewdeveloper.com`)</title>
   <link href="https://josh.works/letters-to-a-new-developer-deep-work"/>
   <updated>2020-08-20T13:00:00+00:00</updated>
   <id>https://josh.works/letters-to-a-new-developer</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Dan Moore is always welcoming to guest authors; he accepted something I wrote: &lt;a href=&quot;https://letterstoanewdeveloper.com/2019/12/19/cultivate-the-skill-of-undivided-attention-or-deep-work/&quot;&gt;Cultivate the Skill of Undivided Attention, or “Deep Work” (Letters to a New Developer)&lt;/a&gt;. It ended up on &lt;a href=&quot;https://news.ycombinator.com/item?id=22646839&quot;&gt;Hacker News&lt;/a&gt; with 100 comments. I wrote this back in December 2019, forgot to post here until now.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Dan published a book by the title &lt;a href=&quot;https://letterstoanewdeveloper.com/2020/08/17/letters-to-a-new-developer-the-book/&quot;&gt;Letters to a New Developer&lt;/a&gt;. This letter is in it, but don’t let that disuade you. The book is full of great insights from developers of all experience levels.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Dear New Developer,&lt;/p&gt;

&lt;p&gt;You &lt;em&gt;know&lt;/em&gt; that there’s a chasm between your skill level and that of the mythical “senior software developer”.&lt;/p&gt;

&lt;p&gt;If you build a list of topics you encounter on your job that, if learned to a deep enough level, would put you on the same level as a senior developer, you’ll end up even more demoralized than before compiling that list.&lt;/p&gt;

&lt;p&gt;No need to assemble this list yourself! I’ve done it for you.&lt;/p&gt;

&lt;p&gt;Here’s the list of topics that I’d need to dedicate significant time to, in order to close the gap between me and the senior developers on our team, that I’ve encountered &lt;em&gt;in my last two days of work&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Breaking complex unknowns into simpler unknowns that can be further split into individual tickets&lt;/li&gt;
  &lt;li&gt;Adding tests to complex, legacy code, to guide further refactoring of said code.&lt;/li&gt;
  &lt;li&gt;Using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grep&lt;/code&gt; to comb through server logs to diagnose a hard-to-identify-and-reproduce problem&lt;/li&gt;
  &lt;li&gt;Provisioning new servers&lt;/li&gt;
  &lt;li&gt;Building bash scripts to automate complex workflows&lt;/li&gt;
  &lt;li&gt;Digging into gem source code to can shed gem dependencies while maintaining certain features&lt;/li&gt;
  &lt;li&gt;Understanding indexing well enough to see that certain queries that we &lt;em&gt;thought&lt;/em&gt; were using indexes were not, and fix this oversight index on the fly, without causing any blips in availability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these line-items has many books written about the topic.&lt;/p&gt;

&lt;p&gt;It seems like you could fill a bookshelf with books that address knowledge senior developers have available to them inside their own heads.&lt;/p&gt;

&lt;p&gt;It takes me long enough to work through a single book, so imagining a bookshelf of extra-curricular reading is quite daunting.&lt;/p&gt;

&lt;p&gt;It might feel daunting for you, too.&lt;/p&gt;

&lt;h2 id=&quot;leading-vs-lagging-indicators&quot;&gt;Leading vs. lagging indicators&lt;/h2&gt;

&lt;p&gt;The above list of skills is a lagging indicator of the underlying knowledge. We should not target improving lagging indicators, we should improve leading indicators.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh, what is this ‘lagging and leading indicator’ stuff?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Great question!&lt;/p&gt;

&lt;p&gt;A lagging indicator is “evidence that something has already happened.”&lt;/p&gt;

&lt;p&gt;If you got an A on a test, that is evidence that you learned the material.&lt;/p&gt;

&lt;p&gt;A leading indicator is “evidence that something will likely happen”.&lt;/p&gt;

&lt;p&gt;If you want to get an A on a test, you should study in a similar way as others who have gotten an A on that test. Maybe you need ten high-quality hours of study to get an A, so “number of high-quality study hours” would be a &lt;em&gt;leading&lt;/em&gt; indicator of your grade.&lt;/p&gt;

&lt;p&gt;We no longer take tests (phew. I hated taking tests.) but we get mini-tests of our knowledge, daily. We’re paid to solve problems, which often require learning new things.&lt;/p&gt;

&lt;p&gt;Rather than focusing on a list of things other developers have learned, and targeting that list, I humbly propose that a &lt;em&gt;leading indicator&lt;/em&gt; of acquiring this kind of knowledge is “hours per week spent in a state of intentional deep work”.&lt;/p&gt;

&lt;p&gt;The above list of topics are &lt;em&gt;lagging indicators&lt;/em&gt; of a high degree of technical knowledge. Someone acquires the knowledge, then, and only then, can demonstrate that they have it.&lt;/p&gt;

&lt;p&gt;Leading indicators are “predictive”, in that if you can identify correctly those indicators, you can predict the outcome of the issue at hand.&lt;/p&gt;

&lt;p&gt;In this case, the issue at hand is “become significantly more experienced in the domain of software development”.&lt;/p&gt;

&lt;p&gt;I propose that a &lt;em&gt;leading indicator&lt;/em&gt; of someone gaining these skills is the amount of time they spend in a state of &lt;em&gt;deep work&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I’d encourage you to read &lt;a href=&quot;https://www.goodreads.com/book/show/25744928-deep-work&quot;&gt;Deep Work: Rules for Focused Success in a Distracted World&lt;/a&gt;. The author makes a case for deep work being a key role in the success of “knowledge workers” (which includes many types of work, including, of course, software development.)&lt;/p&gt;

&lt;p&gt;If you’d rather not read the book, here’s the gist, from &lt;a href=&quot;https://www.samuelthomasdavies.com/book-summaries/business/deep-work/&quot;&gt;this summary of the book&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;In order to produce the absolute best stuff you’re capable of, you need to commit to deep work.&lt;/li&gt;
  &lt;li&gt;The ability to quickly master hard things and the ability to produce at an elite level, in terms of both quality and speed, are two core abilities for thriving in today’s economy.&lt;/li&gt;
  &lt;li&gt;“To learn hard things quickly, you must focus intensely without distraction.”&lt;/li&gt;
  &lt;li&gt;“Your work is craft, and if you hone your ability and apply it with respect and care, then like the skilled wheelwright you can generate meaning in the daily efforts of your professional life.”&lt;/li&gt;
  &lt;li&gt;“The key to developing a deep work habit is to move beyond good intentions and add routines and rituals to your working life designed to minimize the amount of your limited willpower necessary to transition into and maintain a state of unbroken concentration.”&lt;/li&gt;
  &lt;li&gt;Imagine two equally knowledgeable early-career software developers. They have the exact same skills on January 1, 2020. If the first software developer spends four hours a week doing deep work, while the second software developer spends fifteen hours a week doing deep work, their trajectories will be quite different, and that second developer will quickly gain technical knowledge and proficiencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, if you’re an early-career software developer, track the time you spend doing deep work. That has you focusing on a &lt;em&gt;leading&lt;/em&gt; indicator of growing in your skills.&lt;/p&gt;

&lt;p&gt;At that point, you’ll benefit from Peter Drucker’s assessment:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;What is measured, improves.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You’ll track how many hours you spend doing deep work, and by tracking it, you’ll do more and more of it.&lt;/p&gt;

&lt;h2 id=&quot;in-conclusion&quot;&gt;In conclusion&lt;/h2&gt;

&lt;p&gt;Do more deep work, and over a year or two years, your skills will grow much faster than those doing less deep work. Eventually, you might find that you’re doing the work of a senior developer!&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

&lt;p&gt;-Josh&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Full Copy of &apos;The Atlanta Zone Plan&apos; from 1922</title>
   <link href="https://josh.works/full-copy-of-1922-atlanta-zone-plan"/>
   <updated>2020-08-17T12:00:00+00:00</updated>
   <id>https://josh.works/1922-atlanta-zoning-plan-with-comments</id>
   <content type="html">&lt;p&gt;&lt;em&gt;update: I originally wrote this in 2020. It’s as present in my mind today as it was then. Some explanations can be found in the updates I wrote below. I might change the published date sometimes to float this up to the top of the list of blog posts.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To see the document that enshrined this thing into law across the USA, read &lt;a href=&quot;https://nvlpubs.nist.gov/nistpubs/Legacy/BH/nbsbuildinghousing5.pdf&quot;&gt;A Standard State Zoning Enabling Act: Under Which Municipalities May Adopt Zoning Regulations (pdf)&lt;/a&gt;. It is &lt;em&gt;full&lt;/em&gt; of jaw-dropping sentances. From page ONE:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Definitions. — No definitions are included. The terms used in the act are so commonly understood that definitions are unnecessary. Definitions are generally a source of danger. They give to words a restricted meaning. No difficulty will be found with the operation of the act because of the absence of such definitions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hilariously, the document is, in fact, &lt;em&gt;full&lt;/em&gt; of definitions. Each page has a few lines of text and 3/4s of it is footnotes.&lt;/p&gt;

&lt;p&gt;Under a section called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;remedies&lt;/code&gt;, my jaw dropped, &lt;em&gt;again&lt;/em&gt;. Wow. To see it, and appreciate that this document is being faithfully re-implemented, every day, today, a thousand times, in different cities around the world, especially though in the united states, is to be brought to tears.&lt;/p&gt;

&lt;h2 id=&quot;a-warning-and-a-request&quot;&gt;A Warning and a Request&lt;/h2&gt;

&lt;p&gt;In a moment, you will read the full text of a 1922 marketing pamphlet. This document is an important thread to understanding some very large political problems facing the world today, specifically &lt;strike&gt;housing, affordability, the growing wealth gap, and more&lt;/strike&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;update from a few years after I first wrote this post&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;When i first wrote this, I downplayed what this document connects to. It was written by a supremacist, who wanted to maintain the supremacy he was clinging to, the violent oppression and exploitation of people deemed slaves.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;this 1922 marketing pamphlet became “law” in the greater united states in 1926, in a supreme court case between the municipality of Euclid, ohio, and a real estate company. American-style zoning is known as ‘euclidean’ zoning, for this reason. That supreme court case obviously references this 1922 document. That style of zoning is presumed god in the USA today. The people who know enough about the space to know what ‘euclidean zoning’ is generally do not know that the person who invented it, in first penning the section about residence districts, wrote &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;r1-white&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;r2-colored&lt;/code&gt; in it. Definitionally, american-style zoning expects all housing to be segregated by that european-american style of supremacy, hallucinations of the concept of ‘race’. ‘single-family housing’ was the supremacist fantasy of whiteness, and multi-family housing was where they poured their rejected shadow-side. It was all, of course, heavily wrapped with layers of coercive control. Womp womp. the concept of political authority is, definitionally, credible threats of violence from one group against another. yaaaaaaay!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This document tells a story. This story is about &lt;em&gt;power&lt;/em&gt;. Most people that have &lt;em&gt;true&lt;/em&gt; power, power that can shape entire cities and how billions of dollars get spent, don’t run around telling everyone “I’m ludicrously powerful and there’s nothing you can do about it.”&lt;/p&gt;

&lt;p&gt;These ludicrously powerful people hide their power under layers of misdirection and distraction, and they make it look like they’re less powerful than they actually are. Like Robert Moses.&lt;sup id=&quot;fnref:robert-moses&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:robert-moses&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This 100 year old marketing brochure influences your daily experiences &lt;em&gt;today&lt;/em&gt;. Powerful people wrote that document.&lt;/p&gt;

&lt;h2 id=&quot;context-for-the-atlanta-zone-plan-of-1922&quot;&gt;Context for the Atlanta Zone Plan of 1922&lt;/h2&gt;

&lt;p&gt;I recently read &lt;a href=&quot;https://www.blackfeminisms.com/zoning/&quot;&gt;Racial Zoning: Segregation and the U.S. Federal Government&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ll share a quote from the article:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Whitten then went ahead and designed a zoning ordinance for Atlanta, advising city officials that “home neighborhoods had to be protected from any further damage to values resulting from inappropriate uses, including the encroachment of the colored.”&lt;/p&gt;

  &lt;p&gt;The zone plan drafted by Whitten and unpublished by the Atlanta City Planning Commission in 1922 explained that “race zoning is essential in the interest of the public peace, order and security and will promote the welfare and prosperity of both the white and colored race.”&lt;/p&gt;

  &lt;p&gt;The zoning law divided the city into an “R-I white district” and “R-2 colored district” with additional neighborhoods undetermined (Rothstein 2017)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This quote referenced a zone plan: &lt;a href=&quot;https://babel.hathitrust.org/cgi/pt?id=osu.32435003851870&quot;&gt;The Atlanta Zone Plan: Report Outlining a Tentative Zone Plan for Atlanta&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I read every word of that document. It’s pictures of the original pamphelt, converted to PDF. Here’s the full document:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/1922-zoning-plan.jpg&quot; alt=&quot;15 pages of text&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There’s only 15 pages with much text on them, and it is all so riveting.&lt;/p&gt;

&lt;p&gt;I share some high points and screenshots of the zoning plan in the following thread. I’d encourage you to peruse the threads before continuing:&lt;/p&gt;

&lt;h3 id=&quot;thoughts-on-denvers-zoning-and-systemic-racism-twitter-thread-1&quot;&gt;Thoughts on Denver’s zoning and systemic racism (Twitter thread #1)&lt;/h3&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-dnt=&quot;true&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;1/20 Thoughts on Denver&amp;#39;s zoning and systemic racism. &lt;br /&gt;&lt;br /&gt;Here&amp;#39;s a screenshot from &lt;a href=&quot;https://twitter.com/CityofDenver?ref_src=twsrc%5Etfw&quot;&gt;@CityofDenver&lt;/a&gt;&amp;#39;s zoning map on &lt;a href=&quot;https://t.co/Tzx271JS8u&quot;&gt;https://t.co/Tzx271JS8u&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is textbook Euclidean Zoning, AKA &amp;quot;Single-Use Zoning&amp;quot;.&lt;br /&gt;&lt;br /&gt;The problems of this form of zoning are well-known:&lt;a href=&quot;https://t.co/WqiklxjB4h&quot;&gt;https://t.co/WqiklxjB4h&lt;/a&gt; &lt;a href=&quot;https://t.co/7RDaFJlttS&quot;&gt;pic.twitter.com/7RDaFJlttS&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/1294726871574179840?ref_src=twsrc%5Etfw&quot;&gt;August 15, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;deeper-dive-into-connections-between-1922-zoning-plan-and-modern-denver-twitter-thread-2&quot;&gt;Deeper dive into connections between 1922 zoning plan and modern Denver (Twitter thread #2)&lt;/h3&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I missed a piece in this &amp;quot;R-1 White District&amp;quot; and &amp;quot;R-2 Colored District&amp;quot; narrative outlined in Atlanta&amp;#39;s 1922 zoning plan.&lt;br /&gt;&lt;br /&gt;The central piece of Witten&amp;#39;s racist zoning plan was &amp;quot;the encroachment of the colored&amp;quot; in white neighborhoods. &lt;a href=&quot;https://t.co/2gWMdsaEb8&quot;&gt;https://t.co/2gWMdsaEb8&lt;/a&gt; &lt;a href=&quot;https://t.co/mej9ILqNOK&quot;&gt;pic.twitter.com/mej9ILqNOK&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/1295034724658737152?ref_src=twsrc%5Etfw&quot;&gt;August 16, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;I wanted to make the text more readable/discoverable, instead of it living “inside” of this PDF, so I used a tool to extract text from the images. I’ve sprinkled some of my notes below.&lt;/p&gt;

&lt;p&gt;Oh, and if you find this kind of thing interesting, I’m working on an interesting related project, and I’d love your help:&lt;/p&gt;

&lt;h4&gt;Want to stay up to date on these projects? Enter your email below, and you&apos;ll get an approximately-monthly newsletter from me.&lt;/h4&gt;
&lt;form class=&quot;embeddable-buttondown-form&quot; action=&quot;https://buttondown.email/api/emails/embed-subscribe/josht&quot; method=&quot;post&quot; target=&quot;popupwindow&quot; onsubmit=&quot;window.open(&apos;https://buttondown.email/josht&apos;, &apos;popupwindow&apos;)&quot;&gt;
  &lt;label for=&quot;bd-email&quot;&gt;Enter your email&lt;/label&gt;
  &lt;input type=&quot;email&quot; name=&quot;email&quot; id=&quot;bd-email&quot; /&gt;
  
  &lt;input type=&quot;submit&quot; value=&quot;Subscribe&quot; /&gt;
  &lt;p&gt;&lt;i&gt;If you don&apos;t see the subscribe form above, &lt;a href=&quot;https://buttondown.email/josht&quot;&gt;click here&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;
&lt;/form&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;the-atlanta-zone-plan-report-outlining-a-tentative-zone-plan-for-atlanta&quot;&gt;The Atlanta Zone Plan: Report Outlining a Tentative Zone Plan for Atlanta&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;copied from &lt;a href=&quot;https://babel.hathitrust.org/cgi/pt?id=osu.32435003851870&quot;&gt;this online resource&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;introduction-purpose-of-zoning&quot;&gt;Introduction: Purpose of Zoning&lt;/h3&gt;

&lt;p&gt;Zoning will prevent the destruction of the comfort and value of your home through the erection nearby of a:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Public garage&lt;/li&gt;
  &lt;li&gt;Oil filling station&lt;/li&gt;
  &lt;li&gt;Grocery store&lt;/li&gt;
  &lt;li&gt;Steam Laundry&lt;/li&gt;
  &lt;li&gt;Sanatorium&lt;/li&gt;
  &lt;li&gt;Ice plant&lt;/li&gt;
  &lt;li&gt;Foundry&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;plan-authors&quot;&gt;Plan Authors&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Atlanta City Planning Commission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;James Key, &lt;em&gt;Mayor, Chairman&lt;/em&gt; &lt;sup id=&quot;fnref:they-mayor-was-in-on-it&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:they-mayor-was-in-on-it&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;Robert R. Otis, &lt;em&gt;Vice-Chairman&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Frank Pittman&lt;/li&gt;
  &lt;li&gt;Fred J. Terry&lt;/li&gt;
  &lt;li&gt;Hoke Smith&lt;/li&gt;
  &lt;li&gt;Joel Hurt&lt;/li&gt;
  &lt;li&gt;Chas. A. Wickersham&lt;/li&gt;
  &lt;li&gt;Robert H. Whitten, &lt;em&gt;Consultant&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;H. D. Cutter, Jr, &lt;em&gt;Engineer and Secretary&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;five-illustrations-of-the-need-for-zoning&quot;&gt;Five Illustrations of the Need for Zoning&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Note from Josh: Each of these illustrations are complex. They interleave facts and misdirection, I have a lot I could say about each sentance, but I’ll restrain myself until later in the document, as much as possile.&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;illustration-1&quot;&gt;Illustration 1&lt;/h3&gt;

&lt;p&gt;A mechanic buys a home for his family in a newly developed residence subdivision. He and his neighbors plant trees and shrubs and make the section a quiet and attractive home neighborhood.&lt;/p&gt;

&lt;p&gt;Then the adjoining house changes hands and the new owner (thinking only of his own immediate advantage) builds a small grocery store projecting to the sidewalk line and surrounds it with a litter of boxes and barrels.&lt;/p&gt;

&lt;p&gt;Our mechanic who has invested his entire savings, $3500 [$54,000 in 2020 dollars], in his home and given a first mortgage lien for the remainder of the purchase price would like to move away and offers his home for sale but finds that it will now bring but half the amount he paid for it and his entire savings, $3500, have been lost.&lt;/p&gt;

&lt;p&gt;He is forced to remain where he is. Not only his home but all the homes in the block are depreciated in value; as a result the owners are discouraged; the yards are neglected and the property allowed to run down.&lt;/p&gt;

&lt;p&gt;This nice, quiet home section has been ruined and the savings of the home owners wiped out. This is an example of what is happening in one block after another all over the city. Is this the way to encourage thrift or promote home ownership?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-16 at 11.28 AM.jpg&quot; alt=&quot;A Store in the Middle of a Resident Block&quot; title=&quot;A Store in the Middle of a Resident Block&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;illustration-2&quot;&gt;Illustration 2&lt;/h3&gt;

&lt;p&gt;Mr. Smith has purchased a home in an attractive neighborhood. All of the homes have large well kept yards.&lt;/p&gt;

&lt;p&gt;Mr. Smith believes that children, like plants, must have plenty of sun light and room in which to grow. The location selected seems an ideal one in which to live and raise his family. But there is a vacant lot next door. A speculative builder estimates that he can buy that lot, erect a four story, sixteen suite apartment house thereon, rent the apartments, sell to some investor and clean up a handsome profit for himself.&lt;/p&gt;

&lt;p&gt;The apartment house is erected and is quickly rented and sold.&lt;/p&gt;

&lt;p&gt;It rents well because it is in a section of private homes and has the benefit of the lawns and open spaces about the adjoining houses. But the value of Mr. Smith’s home is practically destroyed. His light and air is cut off by the huge bulk of the apartment house.&lt;/p&gt;

&lt;p&gt;The quiet and comfort of the entire block for private residence purposes has been largely destroyed.&lt;/p&gt;

&lt;p&gt;Each home owner fears that a similar apartment building may be constructed next door to him. Those who can, sell out or move away and rent their homes for any purpose or use that offers.&lt;/p&gt;

&lt;p&gt;Apartment houses are needed but is it necessary to permit them to scatter indiscriminately throughout the private home sections? If Atlanta is to be preserved as a city of homes we must protect the home owner by establishing definite limits beyond which the apartment house may not spread&lt;sup id=&quot;fnref:burying-the-lede&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:burying-the-lede&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;h3 id=&quot;illustration-3&quot;&gt;Illustration 3&lt;/h3&gt;

&lt;p&gt;A number of large apartment houses have been erected in a block in a section near the center of the city that is being generally developed for apartment house purposes. There is a large vacant lot in the block and a speculative builder determines that in consequence of the demand for garage storage space in this apartment-house neighborhood he can make a good profit by building a public garage on the vacant lot.&lt;/p&gt;

&lt;p&gt;The garage is built and the noise and traffic incident to its operation makes the entire block undesirable for residence purposes. The tenants of the nearby apartment houses move out and the vacant suites are only again rented at a rate that means an enormous loss to the owners&lt;sup id=&quot;fnref:this-is-encouraged-by-zoning&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:this-is-encouraged-by-zoning&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Zoning is just as essential for the protection of the apartment-house owner as it is for the protection of the home owner.&lt;/p&gt;

&lt;h3 id=&quot;illustration-4&quot;&gt;Illustration 4&lt;/h3&gt;

&lt;p&gt;Here is a large area that has been built up quite uniformly with small homes. There is a block near the center of the area that has remained undeveloped owing chiefly to the cost of bringing the lots to street grade.&lt;/p&gt;

&lt;p&gt;An ice manufacturer picks this block as a good location for his new ice plant. The plant is built and becomes the ice distributing center for a large area. The delivery teams are stabled at the plant, and early each morning the rumbling of the wagons and the shouts of the teamsters make sleep for the nearby residents impossible.&lt;/p&gt;

&lt;p&gt;Added to this, there is the continuous noise arising from the operation of the plant. The entire district is now undesirable for residence purposes&lt;sup id=&quot;fnref:unless-the-workers-can-live-there&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:unless-the-workers-can-live-there&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;. Property values fall and other small shops and industries take advantage of the low prices to secure locations for their operations.&lt;/p&gt;

&lt;p&gt;The area becomes blighted.&lt;/p&gt;

&lt;p&gt;It is spoiled for residence use and being without railroad track facilities is of little value for industrial purposes.&lt;/p&gt;

&lt;h3 id=&quot;illustration-5&quot;&gt;Illustration 5&lt;/h3&gt;

&lt;p&gt;A ten story office and store building is erected at the corner of the best business block in the central business section of the city. The building is a financial success: the ground floor is rented for retail store purposes and the upper floors, being light and airy, bring good rentals.&lt;/p&gt;

&lt;p&gt;Its success, however, leads to the erection of a sixteen story building across the street from one of its frontages, a twenty story building across the street from the other frontage and of sixteen to twenty-four story buildings on both sides and in the rear.&lt;/p&gt;

&lt;p&gt;The offices, being darkened by the higher buildings are forced to use artificial light throughout the entire day and are rentable only at a fraction of the former amounts.&lt;/p&gt;

&lt;p&gt;The building no longer earns a fair return on the investment. As the competition in building height proceeds a large proportion of the office floors of each building in this entire section are so darkened as to make the returns from the rentals insufficient to cover the investment&lt;sup id=&quot;fnref:office-buildings&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:office-buildings&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Unless office building heights are strictly limited the result is bound to be disastrous to the investors as well as injurious to the health and comfort of the clerks working in the darkened offices.&lt;/p&gt;

&lt;h2 id=&quot;what-zoning-is-and-does&quot;&gt;What Zoning is and does&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Josh: We’re getting closer to the author’s revealing their true colors. Just keep in mind the authors have a strong preference to keep black people out of white neighborhoods.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Zoning is a conscious, intelligent effort to direct the building of the city in accord with a well-considered plan&lt;sup id=&quot;fnref:conscious-intelligent-plan&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:conscious-intelligent-plan&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;. Like good housekeeping it provides a place for everything and tries to keep everything in its place. Like good industrial management it plans for an orderly growth and expansion of the plant.&lt;/p&gt;

&lt;p&gt;Zoning divides the land area of the city into residence, business and industrial districts and prevents the erection of business and industrial buildings in the residence districts or of industrial buildings in the business districts&lt;sup id=&quot;fnref:prohibit-businesses&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:prohibit-businesses&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Zoning prevents the development of great blighted areas near the heart of the city. Unless some definite limit is fixed to the distance to which business may spread out from the central business area one block after another is abandoned by the resident owners until great areas are affected that will never be needed for business and the typical blighted district results&lt;sup id=&quot;fnref:white-flight&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:white-flight&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;St. Louis has one of the best examples of this wasteful development&lt;sup id=&quot;fnref:st-lewis&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:st-lewis&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;10&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Zoning will centralize local business in well-defined local business centers. This will facilitate the transaction of business. It will improve land and rental values in the business sections, while at the same time conserving values in the residence sections&lt;sup id=&quot;fnref:zoning-enforces-sprawl&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:zoning-enforces-sprawl&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;11&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Zoning will keep the apartments out of the private house sections. The coming of the apartment drives out the private home. Only by setting definite limits to the spread of the apartment can the city be preserved as a city of homes&lt;sup id=&quot;fnref:apartments-means-black-people&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:apartments-means-black-people&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;12&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Zoning will prevent congestion of population. In addition to confining tenement house construction to certain areas, zoning will prevent excessive crowding even in the tenement areas. This will be accomplished by requiring a minimum number of square feet of lot area for each family for which the tenement is arranged&lt;sup id=&quot;fnref:minimum-lot-size&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:minimum-lot-size&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;13&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Zoning is essential to preserve the morale of the various neighborhoods or communities into which the city is divided. Zoning creates confidence that the existing character of the neighborhood will be preserved&lt;sup id=&quot;fnref:neighborhood-character&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:neighborhood-character&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;14&lt;/a&gt;&lt;/sup&gt;. Such confidence is essential to the improvement of the area and to the maintenance of a vigorous civic pride and spirit.&lt;/p&gt;

&lt;p&gt;Zoning requires each owner so to use his property as not to injure his neighbor. Without zoning the individual owner is powerless to prevent the destruction of the value of his property&lt;sup id=&quot;fnref:such-tricky-wording&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:such-tricky-wording&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;15&lt;/a&gt;&lt;/sup&gt;. Only by submitting to some restriction on his power to do with his own just as he pleases is he himself able to obtain protection. Zoning is a practical application of the Golden Rule to the use of property.&lt;/p&gt;

&lt;p&gt;Zoning enforces a certain degree of co-operation among property owners for their mutual advantage and protection. A certain degree of uniformity in the development of a block or area is beneficial to all owners. This is the meaning of restrictive covenants in all better-class residential developments. Zoning applies the principle of the restrictive covenant in so far as it can be used to promote public as distinct from purely private ends.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-16-reason-for-the-building-line.jpg&quot; alt=&quot;the reason for the building line&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The growth of cities has made it necessary to modify former ideas both of personal library and property rights. What a man can be allowed to do and what uses he can be allowed to make of his property depend on whether he lives on a 100 acre farm or in the middle of a city block.&lt;/p&gt;

&lt;p&gt;With the growth of the city it becomes more and more necessary to distinguish between liberty and license both as applied to persons and to property. Property in a city is “affected with a public interest.” Its value is a joint product of individual initiative and community growth. Its misuse can bring irreparable injury to the community and to property owners generally. It must submit to control both in the public interest and for its own preset vation.&lt;/p&gt;

&lt;p&gt;No useful trade or industry is in itself a nusiance; but any trade, industry or other use of property may become a nuisance if located in violation of an appropriate and orderly plan of city development.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-16-when-is-it-time-to-zone.jpg&quot; alt=&quot;When is it time to zone?&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Zoning will limit the height of buildings differently in different parts of the city. The height limits will be those appropriate for the various classes of use. No owner will be permitted to appropriate for the use of his building an undue share of the common stock of light and air. Without a height limit the tendency is for each new office or hotel building to push up higher than its neighbors in order to get more light and air. This competition to build the highest building with its attendant street traffic congestion will be stopped by zoning.&lt;/p&gt;

&lt;p&gt;Zoning will conserve property values. Haphazard development is bound to be costly and uneconomic development. Zoning will save enormous waste in building construction. With uncontrolled building development the construction of a new building in a neighborhood often means a net loss in the aggregate value of the building of that neighborhood. With zoning, each new building increases the aggregate value in an amount equal to and usually in excess of its own cost.&lt;/p&gt;

&lt;p&gt;Zoning will attract money to a city for investment in real estate. Large lending institutions will be inclined to favor those cities in which their investments will be afforded the safeguard of a comprehensive zoning plan. Failure to provide the zoning safeguard is as inexcusable as failure to protect property against destruction by fire.&lt;/p&gt;

&lt;p&gt;Zoning protects the home. Quiet and freedom from the distraction incident to trade, industy and attendant street traffic are essential to a wholesome home environment.&lt;/p&gt;

&lt;p&gt;Zoning will establish uniform building lines in the residence sections, thus giving opportunity for a front yard with a lawn and trees and preventing one building from pushing out in front of its neighbors.&lt;/p&gt;

&lt;p&gt;Zoning will promote industrial development. It will set aside adequate areas for industries within which the new plant may locate without incurring the criticism and continual complaints of neighboring residents and owners. It will attract to the city and to the home areas near the industrial areas a good and abundant labor supply. The segregation of industries will make it possible to serve the industrial areas more ef efficiently and more economically with sewers, trucking routes and freight facilities.&lt;/p&gt;

&lt;p&gt;Zoning promotes the health and comfort of the people. Orderly city growth cannot fail to have a marked effect on the physical fitness and vitality of the city’s inhabitants. The rapid increase in nervous and organic disorders has some very definite relation to the congestion, noise and confusion incident to the existing haphazard and uncontrolled building development.&lt;/p&gt;

&lt;p&gt;The New York Zoning Commission said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The necessity for reducing the stress and strain of city life is becoming more and more apparent. This is essential if the city is to be a place in which our heritage of health and vitality is to be used, conserved and handed down to succeeding generations instead of being abused and exhausted.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;outline-of-tentative-zone-plan&quot;&gt;Outline of Tentative Zone Plan&lt;/h2&gt;

&lt;p&gt;The zoning amendment of the city charter provides that zoning plans may be prepared by the City Planning Commission and that such plans if adopted by the General Council after public hearing have been held shall have the force of law. It is fully realized that plans of this kind, before being adopted, should have the benefit resulting from their study and criticism by property owners and civic and business organizations throughout the city. The plan herewith presented is not a final plan, but merely a tentative draft to secure public suggestions and criticism.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-16 at 1.22 PM.jpg&quot; alt=&quot;A Five-Story Apartment Projecting Beyond the Building Line Established by Residences&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It is proposed that this tentative plan shall be taken up in detail with the members of the General Council, with citizens interested, and with civic and commercial organizations and as a result of the recommendations thus received a final plan will be prepared for submission to the Commission and the General Council. It is expected that the final plan will be the result of the joint efforts and best thought of all concerned in the direction of building development along orderly and well considered lines of city growth.&lt;/p&gt;

&lt;p&gt;The city of Atlanta is divided into six classes of use districts. Two of these are residence districts and four are business and industrial districts. In addition to the use districts there are four classes of height districts and five classes of area districts. The height and area districts are superimposed over the use districts.&lt;/p&gt;

&lt;p&gt;Consequently, each portion of the city is in some one of the six classes of use districts, in some one of the four classes of height districts and also in some one of the five classes of area districts. The boundaries of the various use, height and area districts are shown on the zone map.&lt;/p&gt;

&lt;h3 id=&quot;residence-districts&quot;&gt;Residence Districts&lt;/h3&gt;

&lt;p&gt;THE two classes of residence districts are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Class UI or dwelling house district.&lt;/li&gt;
  &lt;li&gt;Class U2 or apartment house district.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A building arranged for more than two families may not be constructed in a dwelling house district. One of the chief purposes of the zone plan is to preserve Atlanta as a city of homes.&lt;/p&gt;

&lt;p&gt;While a certain number of apartment houses are beneficial, they should not be allowed to drive out the private homes in all sections of the city. Carefully limited but adequate areas are allowed for apartment house developement. The dwelling house districts, from which apartment houses are excluded, will include the larger portion of the entire area of Atlanta&lt;sup id=&quot;fnref:apartments-are-banned&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:apartments-are-banned&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;16&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Trade and industry are excluded from the residence districts&lt;sup id=&quot;fnref:trade-is-banned&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:trade-is-banned&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;17&lt;/a&gt;&lt;/sup&gt;. Churches, schools, libraries, etc., are permitted in the residence districts. Hospitals, sanitariums and institutional buildings are permitted in those blocks of the residence districts already occupied by similar buildings. They will also be permitted in other locations with the approval of the board of zoning appeals.&lt;/p&gt;

&lt;h3 id=&quot;race-zoning&quot;&gt;Race Zoning&lt;/h3&gt;

&lt;p&gt;The residence districts are further subdivided into three race districts:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;R1 or white residence district.&lt;/li&gt;
  &lt;li&gt;R2 or colored residence district.&lt;/li&gt;
  &lt;li&gt;R3 or undetermined race district.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the white residence districts no house not occupied by a colored family at the time of the passage of the zoning ordinance can be thereafter occupied by a colored family.&lt;sup id=&quot;fnref:black-people-cannot-buy&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:black-people-cannot-buy&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;18&lt;/a&gt;&lt;/sup&gt; In the colored residence districts no house not occupied by a white family at the time of the passage of the zoning ordinance can be thereafter occupied by a white family.&lt;sup id=&quot;fnref:black-people-cannot-sell&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:black-people-cannot-sell&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;19&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Servants quarters located on the same lot as the residence they serve will nevertheless be allowed in either districts without distinction to race&lt;sup id=&quot;fnref:blanket-exclusion-for-slaveholding-white-people&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:blanket-exclusion-for-slaveholding-white-people&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;20&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Certain limited limited residence areas are placed in neither the white district nor the colored district but are left undetermined as to the race zoning. The above race zoning is essential in the in interest of the public peace, order and security and will promote the welfare and prosperity of both the white and colored race. Care has been taken to prevent discrimination and to provide adequate space for the expansion of the housing areas of each race without encroaching on the areas now occupied by the other.&lt;/p&gt;

&lt;h3 id=&quot;business-and-industrial-districts&quot;&gt;Business and Industrial Districts&lt;/h3&gt;

&lt;p&gt;There are four classes of business and industrial districts:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Class U3 or local retail store district.&lt;/li&gt;
  &lt;li&gt;Class U4 or commercial district.&lt;/li&gt;
  &lt;li&gt;Class U5 or industrial district.&lt;/li&gt;
  &lt;li&gt;Class U6 or industrial (semi-nuisance) district.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the local retail store (class U3) district retail stores, offices and small shops for custom work or for the making of articles to be sold at retail on the premises are permitted. The uses permitted in the residence districts are also permitted in the local retail business district.&lt;/p&gt;

&lt;p&gt;Public garages, light manufacturing and bulk storage are excluded from the local retail business district. This district is suitable chiefly for the smaller retail centers adjacent to the resident tial sections. The attempt has been to provide small areas for neighborhood stores at half-mile intervals throughout the resident sections.&lt;/p&gt;

&lt;p&gt;The commercial (class U4) district regulations permit in addition to all uses permitted in the local retail business district, light manufacturing of a non-nuisance character and also public garages, bulk storage and wholesale business. The commercial districts will include most of the central business sections and some of the local business sections along the main traffic arteries and street car lines.&lt;/p&gt;

&lt;p&gt;In the industrial (class U5) district all heavy industrial uses of a comparatively non-nuisance type are permitted in addition to all the uses permitted in the residence and business districts.&lt;/p&gt;

&lt;p&gt;Most of the area appropriate for industrial development extending out through the industrial housing areas along the railroads should be placed in the class U5 district and thus aid in the spreading out of the industries and of the industrial population.&lt;/p&gt;

&lt;p&gt;In the semi-nuisance industrial (class U6) district such uses as boiler making, structual iron works and junk yards are permitted. This district provides for industries that need to be distributed in various industrial sectors about the city but are detrimental if immediately adjacent to residences. The nuisance features, usually noise, smoke or odor, extend up to about 1,200 feet from the industry, thus making the vicinity undesirable for certain other types of industry and very undesirable for housing.&lt;/p&gt;

&lt;p&gt;Fertilizer plants, glue factories, slaughter houses and similar industries are classed as nuisances and under the zone plan will not be permitted to locate within the city limits.&lt;/p&gt;

&lt;p&gt;The excluded nuisances are those that affect a very wide area with these exceptions the purpose of the four business and industrial districts is to provide locations for all types of business and industrial use with a minimum of inconvenience and waste and a maximum of efficiency.&lt;/p&gt;

&lt;p&gt;A manufacturer of food preparations may be seriously injured by the location nearby of a chemical plant. Moreover certain types of business and industrial use may be lo city close to good residential sections without material injury while other types if located within a quarter of mile of such sections are distinct nuisances.&lt;/p&gt;

&lt;p&gt;It is only by carefully grading the various trade and industrial uses according to their comparative freedom from nuisance characteristics that an orderly and efficient development of the city can be secured.&lt;/p&gt;

&lt;p&gt;The zoning regulations also provide that such special uses as a cemetery, crematory, aviation field, sewage disposal plant or refuse dump may be located only on application to and with the approval of the board of zoning appeals.&lt;/p&gt;

&lt;h3 id=&quot;height-districts&quot;&gt;Height Districts&lt;/h3&gt;

&lt;p&gt;The entire city is divided into four classes of height districts. The maximum limits are 35 feet, 50 feet, 100 feet and 150 feet, and the height districts are termed respectively class H1, H2, H3 and H4.&lt;/p&gt;

&lt;p&gt;In the class Hı height district the height limit is 2 1/2 stories but not in excess of 35 feet&lt;sup id=&quot;fnref:this-is-awkward&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:this-is-awkward&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;21&lt;/a&gt;&lt;/sup&gt;. The one and two family dwelling and the two story apartment sections will generally be placed in the class H1 district. This class will therefore include most of the residence sections.&lt;/p&gt;

&lt;p&gt;In the class H2 height district the maximum height is 50 feet. The 50 foot limit permits the erection of the ordinary four story apartment or the four story commercial building.&lt;/p&gt;

&lt;p&gt;In the class H3 height district the maximum height is 100 feet. The 100 foot limit provides for the ordinary eight story office or factory building. Most of the industrial areas will be included in this district.&lt;/p&gt;

&lt;p&gt;In the class H4 height district the maximum height is 150 feet. This 150 foot limit provides for the ordinary twelve story office or hotel building. The class H4 district will include that portion of the central business area where the most intensive office and hotel dedevelopment is anticipated.&lt;/p&gt;

&lt;p&gt;There are at present only seven buildings in the city over 150 feet in height. Our streets in the business section are so congested that it is imperative that the height of buildings be strictly limited so as to spread out the areas of intensive use. The widths of the streets will not take care of the traffic of a three story city and it will be absolutely disastrous to burden them with the traffic of a twenty or thirty story city.&lt;/p&gt;

&lt;p&gt;Values in the high grade shopping sections can best be maintained by encouraging the spreading out of the business area and the reservation of such sections for retail business and the traffic incident to retail business. The proposed height limit of 150 feet will tend to spread out the business district and will tend also to reduce traffic congestion and maintain values in the best retail business sections. The experience of New York and other large cities is that excessively high buildings are un-economic and very undesirable from a public standpoint&lt;sup id=&quot;fnref:tall-buildings-are-uneconomic&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:tall-buildings-are-uneconomic&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;22&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;A single high building may pay as it takes its light and air from above its neighbors; but when this first skyscraper becomes surrounded by buildings of similar height, light and air are cut off and only the upper floors can be leased at remunerative rentals. The occupants of the darkened offices on all the other floors must use artificial light throughout the&lt;/p&gt;

&lt;p&gt;day. By restricting all buildings to a reason ble height, so that when the business area is solidly built up, most of the floors of every building will have a fair supply of daylight, enormous economic loss will be avoided and the health of the people occupying offices and shops in the buildings will be conserved.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-16-which-is-the-common-sense-plan.jpg&quot; alt=&quot;Which is the Common Sense Plan?&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;area-districts&quot;&gt;Area Districts&lt;/h3&gt;

&lt;p&gt;The entire city is divided into five classes of area districts:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Class A1 requiring 5000 sq. ft. of lot area per family&lt;/li&gt;
  &lt;li&gt;Class A3 requiring 1250 sq. ft. of lot area per family.&lt;/li&gt;
  &lt;li&gt;Class A4 requiring 625 sq. ft. of lot area per family.&lt;/li&gt;
  &lt;li&gt;Class A5 with no required lot area per family when applied to commercial districts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The area districts are superimposed over the height and use districts. The area district regulations are intended to promote an approprate distribution of population and to resist the tendency toward the congestion of population. The requirement of a specified number of square feet of lot area per family is based on the number of housekeeping units or families for which the building is arranged or designed.&lt;/p&gt;

&lt;p&gt;On a lot of 40 feet by 125 feet a single family house can be constructed in a class A1 district; a two family house in a class A2 district; a four family house in a class A3 district; and an eight family house in a class A4 district. A more intensive development is in cach case allowed on corner lots.&lt;/p&gt;

&lt;p&gt;The class A1 district requiring 5000 sq. ft. of lot area per family is applied in those sections of the city where a single family house is the most appropriate development. The two family house is prohibited in A1 districts.&lt;/p&gt;

&lt;p&gt;The residence actions that seem appropriate for improvement with either a single family house on a small lot or a two family house on a lot having 5000 sq. ft. of lot area are placed in the class A2 district where the requirement is 2500 sq. ft. of lot area per family. Most of the apartment house districts will be in the class A4 districts requiring 625 sq ft. of lot area per family. This will permit an eight family apartment house on a lot 40 feet by 125 feet. Other apartment house areas will be placed in the A3 district which will permit the housing of but for families on the same size lot.&lt;/p&gt;

&lt;p&gt;The requirement of a certain number of square feet of lot area per family applies to residence buildings whether they are within the residence districts or are constructed within business or industrial districts. In computing the number of families that may be housed on a given lot area, deduction is made where a portion of the lot is used for business or industrial purposes. Thus in a class A3 area district where, for example, four families might be housed on a 40 ft. by 125 ft. lot, if there are stores occupying 2000 sq. ft. of area on the ground floor, the number of families that can be housed on the lot is reduced by one, or in other words there is a reduction of one family for each 2000 sq. ft. of lot area occupied for business purposes.&lt;/p&gt;

&lt;p&gt;The ordinary two or three story store and dwelling building is not a desirable type of construction from a public stand point. The regulations as applied will tend to reduce the number of flats that would otherwise be located over stores. The erection of dwellings or apartment houses is not prohibited in the industrial districts, though for the most part these districts are so located that there would be little tendency to build residences within them.&lt;/p&gt;

&lt;p&gt;It is, of course undesirable for many reasons to have residences and factories intermingled. The factories do not create a proper environment for the home, and the nearness of the home to the factories subject the factory owners to the complaints of the residents because of the nuisance features incident to the normal operations of the factories.&lt;/p&gt;

&lt;p&gt;While the zone plan does not prohibit the erection of residences even in the semi-nuisance industrial districts, it will tend to discourage the erection of dwellings therein for two reasons:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;first, with definite areas set aside for residences and factories, the financial hazard incident to the placing of residences in a factory zone will, in most cases, serve as a suf ficient deterrent;&lt;/li&gt;
  &lt;li&gt;second, the semi-nuisance in industrial districts will be placed in the A1 area districts which will require 5000 sq. ft. of lot area per family. This will further tend to make the erection of a residence in one of these districts uneconomic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;side-and-rear-yards&quot;&gt;Side and Rear Yards&lt;/h3&gt;

&lt;p&gt;Side and rear yards are required in all residence districts. In business and industrial districts, side yards are not required, but rear yards are required where such districts adjoin residence districts.&lt;/p&gt;

&lt;p&gt;The zone plan does not attempt to provide a complete code for the lighting and ventilation of the building. It simply establishes minimum standards for those open spaces about the building that have a relation to the lighting and ventilation of the adjoining buildings as well as to that of the building itself. The zone regulations are thus confined to those things in which adjoining owners have a mutual interest. Side yards, rear yard and front yard spaces are required for the mutual advantage of all owners and occupants of the block. The provision or omission of an interior court, on the other hand, does not affect the neighbor.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-17-a-public-garage.jpg&quot; alt=&quot;A Public Garage Located Among Apartments&quot; title=&quot;A Public Garage Located Among Apartments&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;front-yards-building-lines&quot;&gt;Front Yards: Building Lines&lt;/h3&gt;

&lt;p&gt;Atlanta has been generally developed with residences setting well back from the street line, affording adequate room for lawn and trees. This makes a healthful and convenient city as well as beautiful city. Grass and trees make an attractive home environment and are almost essential to a normal, healthful development of the child.&lt;/p&gt;

&lt;p&gt;Occasionally, in a detached residence section, an apartment house disregards the existing building line and is erected at or near the street line. This cuts off light and air from the neighboring buildings and if it becomes a type will entirely change the character of our residence sections. Atlanta will tend to reproduce conditions obtaining in certain other cities where there are great areas with apartment houses erected right on the street line and with out a bit of vegetation-nothing but the pavement and the bare brick walls. We can pre vent the reproduction of such conditions in our residence sections by maintaining the existing building lines.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-17-an-apartment-projecting-beyond-single-family-residences.jpg&quot; alt=&quot;An Apartment Projecting Beyond Single Family Residences&quot; title=&quot;An Apartment PRojecting Beyond Single Family Residences&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;classification-of-uses&quot;&gt;Classification of Uses&lt;/h3&gt;

&lt;p&gt;The classification of uses which is a part of the zoning ordinance divides the various uses of property into groups, classes and subdivisions. The use classes correspond to the use districts. Each use class lists the uses for which the corresponding use district class is specially designed to provide. Starting with the private dwelling, the classification enumerates the various kinds of residential use and then the business and industrial uses graded and arranged according to their comparative freedom from nuisance characteristics. In the hierarchy of uses the dwelling comes first and garbage reduction and fertilizer plants last.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-17-house-the-masses.jpg&quot; alt=&quot;&amp;quot;Shall the mass of the population of the great city of the future be housed like this or that?&amp;quot;&quot; title=&quot;Zoning is the only safeguard against excessive congestion&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;non-conforming-uses&quot;&gt;Non-conforming Uses&lt;/h3&gt;

&lt;p&gt;The zoning ordinance does not affect existing uses of property. A use or building existing at the time of the passage of the zoning ordinance which does not comply with the regulations of the use district in which it is located is called a non-conforming use. Such use or building may be continued though not conforming to the use district regulations. The zoning ordinance is not retroactive. If, for example, there is a store in an area that under the zoning ordinance is included in a residence district the store may nevertheless be continued. A non-conforming use may also be changed subject to the general rule that, if changed, it must be to a higher use as listed in the classification of uses. If, however, the non-conforming use is a class U6 (semi-nuisance) use or class U7 (nuisance) use it may not be changed unless to a conforming use. A change to another use listed in the same subdivision of the classification is not deemed a change of use under the ordinance. Thus a change from a grocery store to any other kind of a retail store or shop would technically be deemed a continuance of the existing use.&lt;/p&gt;

&lt;p&gt;A building housing a non-conforming use may not be structurally altered to an extent exceeding during any ten year period 60 per cent of the assessed value of the building&lt;sup id=&quot;fnref:10-year-60-per-cent-assessed-value&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:10-year-60-per-cent-assessed-value&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;23&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;While, therefore, an existing non-conforming use may be continued the limitations imposed on a change of use and on the reconstruction of the building housing the non-conforming use will eventually bring about the elimination of the non-conforming use&lt;sup id=&quot;fnref:remember-the-goal&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:remember-the-goal&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;24&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;h3 id=&quot;enforcement-board-of-zoning-appeals&quot;&gt;Enforcement: Board of Zoning Appeals&lt;/h3&gt;

&lt;p&gt;The zoning ordinance will be enforced by the inspector of buildings&lt;sup id=&quot;fnref:or-anyone-else&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:or-anyone-else&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;25&lt;/a&gt;&lt;/sup&gt;. No building permit will be issued unless the building and its proposed use conform to the zoning regulations.&lt;/p&gt;

&lt;p&gt;In the application of the zoning many cases will arise, especially near the dividing line be tween two use districts, where the strict letter of the zoning regulations may properly be modified. This can be done in specific cases with out injury to general public purposes of the ordinance, while at the same time avoiding unnecessary injury to the individual owner.&lt;/p&gt;

&lt;p&gt;Strictly limited discretion is therefore lodged in a board of zoning appeals created by the ordinance to make minor modifications and exceptions to the general rules and regulations established by the ordinance.&lt;/p&gt;

&lt;h3 id=&quot;amendment-of-zone-plan&quot;&gt;Amendment of Zone Plan&lt;/h3&gt;

&lt;p&gt;The Council will have full power to amend or supplement the zoning plan. Minor changes will be necessary to correct imperfections in the plan. Other amendments will be required to meet changing conditions of city growth. It is to be expected that the plan will be supplemented and changed when certain fundamental factors affecting the physical structure of the city have been fully worked out.&lt;/p&gt;

&lt;p&gt;While provision should be made for necessary changes, the method of such change should be safeguarded so as to prevent hasty and ill-considered action. A zone plan in order to afford the protection for which it is designed should be fairly permanent. Those who build in accordance with its provisions should feel reasonably sure that their investment will not be jeopardized by changes in the district lines. On the other hand, the method of change should not be so difficult as to make it impractical to conform the zone plan to changing conditions of city growth.&lt;/p&gt;

&lt;p&gt;Under the zoning ordinance any amendment proposed must secure a three-fourths vote of the Council for adoption&lt;sup id=&quot;fnref:this-plan-is-written-by-racists&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:this-plan-is-written-by-racists&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;26&lt;/a&gt;&lt;/sup&gt;, and before voting on such amendment the Council is required to submit the amendment to the city planning commission for its recommendation&lt;sup id=&quot;fnref:i-bet-they-are-racist-too&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:i-bet-they-are-racist-too&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;27&lt;/a&gt;&lt;/sup&gt;. If an amendment is proposed by the petition of the owners of 50% of the land in the area to be changed, Council must vote on such amendment within 90 days&lt;sup id=&quot;fnref:i-laughed-out-loud&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:i-laughed-out-loud&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;28&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-17-waste-in-city-building.jpg&quot; alt=&quot;Waste in City Building!&quot; title=&quot;Waste in City Building&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;building-the-future-city&quot;&gt;Building the Future City&lt;/h3&gt;

&lt;p&gt;Zoning is a first essential to the securing of a measure of orderliness in the building of the city. The common sense of the average citizen leads to a degree of order in the home, the store and the factory that is all but lacking in the life and work of the community as a whole. For want of a well-considered plan of building development each man builds without reference to his neighbor. The result is chaotic. Haphazard growth is inefficient, wasteful and ugly. Why not use the same forethought and care in the building of our community home that each sane man uses in the building of his individual home or factory? Zoning is the direction of building development along orderly and well-considered lines of city growth. On the economic side, zoning means increased industrial efficiency and the prevention of enormous waste. On the human side, zoning means better homes and an increase of health, comfort and happiness for all the people.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;And that is the end of the 1922 Zoning Plan!&lt;/p&gt;

&lt;p&gt;Like I’ve mentioned before, I’m working on projects in this space. I’d love to have your help:&lt;/p&gt;

&lt;h4&gt;Want to stay up to date on these projects? Enter your email below, and you&apos;ll get an approximately-monthly newsletter from me.&lt;/h4&gt;
&lt;form class=&quot;embeddable-buttondown-form&quot; action=&quot;https://buttondown.email/api/emails/embed-subscribe/josht&quot; method=&quot;post&quot; target=&quot;popupwindow&quot; onsubmit=&quot;window.open(&apos;https://buttondown.email/josht&apos;, &apos;popupwindow&apos;)&quot;&gt;
  &lt;label for=&quot;bd-email&quot;&gt;Enter your email&lt;/label&gt;
  &lt;input type=&quot;email&quot; name=&quot;email&quot; id=&quot;bd-email&quot; /&gt;
  
  &lt;input type=&quot;submit&quot; value=&quot;Subscribe&quot; /&gt;
  &lt;p&gt;&lt;i&gt;If you don&apos;t see the subscribe form above, &lt;a href=&quot;https://buttondown.email/josht&quot;&gt;click here&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;
&lt;/form&gt;

&lt;h2 id=&quot;updates-across-the-years&quot;&gt;Updates across the years&lt;/h2&gt;

&lt;p&gt;I could have, maybe wish I had, done more incremental updates to this post. Since writing it, I’ve written many other stand-alone pieces that are thematically related, but never updated this piece itself. I’ll do some back-filling. I’m writing these updates long after I’ve written some of these pieces:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/&quot;&gt;zoning regimes very different than ours&lt;/a&gt; it’s a substack, of course. In it I was/am simply discussing zoning regimes, in the style of a book titled ‘legal systems very different than ours’. &lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/introduction-land-use-regimes-very&quot;&gt;the first post of the substack explains the name more&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zoningverydifferentthanours.substack.com/p/parking-minimums-as-ethnic-cleansing&quot;&gt;parking minimums as ethnic cleansing&lt;/a&gt; is an attempt at a partial answer to ‘gosh, josh, why do you dislike some things about american style parking lots so much?’&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;2025&quot;&gt;2025&lt;/h3&gt;

&lt;p&gt;I’ve referenced this document quite a few times since 2020, the year I first discovered the document and did this write-up.&lt;/p&gt;

&lt;p&gt;For instance, I once showed up at a neighborhood zoning meeting (right after doing this write-up), and while everyone was mixing and mingling about a proposed modification to the zoning code (a neighborhood zoned r2, where I lived at the time, yet almost every attendee lived in an adjoining r1 neighborhood).&lt;/p&gt;

&lt;p&gt;I asked the then director of planning and zoning for the city of Golden (Rick Muriby, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Director of Community and Economic Development&lt;/code&gt;), if he know about this wild thing I’d just encountered, ‘the racialized origins of american-style zoning’?&lt;/p&gt;

&lt;p&gt;As I recall, he gave a bit of a smirk - not shock or fear or discomfort or whatever, and silently turned around and walked away.&lt;sup id=&quot;fnref:racialized&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:racialized&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;29&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Few people capable of reading today will explicitly defend supremacy, and the ones who &lt;em&gt;do&lt;/em&gt; defend it explicitly are so odious that everything about them is off-putting, thus to join them is to sorta willingly cede influence, and the possibility of being taken seriously by anyone of dignity or interest.&lt;/p&gt;

&lt;p&gt;Please remember that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;r1 zoning&lt;/code&gt; is virtually synonymous with ‘single family housing’ is virtually synonymous with ‘the suburbs’.&lt;/p&gt;

&lt;p&gt;Here’s a quote from Golden’s zoning code, today:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Residentially zoned area&lt;/em&gt;. “Residentially zoned area” means an area zoned for the development of residential dwelling units, including the CO, AG, RE, &lt;strong&gt;R1&lt;/strong&gt;, R1A, &lt;strong&gt;R2&lt;/strong&gt;, &lt;strong&gt;R3 zone districts&lt;/strong&gt;, and portions of PUD developments designed for such use.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think a ‘proper appreciation’ for the origin of such designations lead to conversations vastly more interesting about American-style zoning than are otherwise available.&lt;/p&gt;

&lt;p&gt;I, personally, notice fatigue or boredom settling in on me when I am overhearing people speak seriously about modern american-style zoning, residence districts, the suburbs, all of it.&lt;/p&gt;

&lt;p&gt;to have one’s life affected by something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;race districts&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;residence districts&lt;/code&gt; is to have ones life grievously affected by the ongoing effect of a supremacists willingness/desire to coerce their supremacy and beliefs and fears and griefs upon the world around them.&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:robert-moses&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;After this document from 1922 was sorta ‘ratified’ by the american supreme court in Euclid vs. Ambler (1926), it got labelled ‘euclidean zoning’ or ‘form-based zoning’. &lt;a href=&quot;/robert-moses&quot;&gt;Robert Moses&lt;/a&gt; got his hands on it, and as reported early in &lt;em&gt;The Power Broker: Robert Moses and the Fall of New York&lt;/em&gt;, he spread this municipal form of government all around new york city and state. he’s more responsible for the built environment of the globe today than anyone else conceivable. (literally the geometry of roads, highway onramps, features multiplied across the world in asphalt, steel, and concrete like leaves on a tree.) He invented ‘urban highways’, ‘eminent domain’ in the modern sense, slum clearence/urban renewal, the federal highway administration, and much more. &lt;a href=&quot;#fnref:robert-moses&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:they-mayor-was-in-on-it&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Only now did I realize &lt;em&gt;the mayor&lt;/em&gt; signed his name on this document. This document is explicitely racist, and the mayor was certainly not trying to &lt;a href=&quot;https://en.wikipedia.org/wiki/Overton_window&quot;&gt;move the Overton window&lt;/a&gt;. That means nothing in this proposal would jepordize the mayor’s political future. &lt;em&gt;This is a plan by racists and for racists&lt;/em&gt;. &lt;a href=&quot;#fnref:they-mayor-was-in-on-it&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:burying-the-lede&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The plan buries the lede. They are going to soon propose creating &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;R-1 White Districts&lt;/code&gt; (which ban apartment buildings) and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;R-2 Colored Districts&lt;/code&gt; which permit small apartment buildings. The author also argues that a principle purpose of this zoning plan is to prevent the encroachment of Black people on White neighborhoods. &lt;a href=&quot;#fnref:burying-the-lede&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:this-is-encouraged-by-zoning&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I actually agree with this assessment. Living next door to a parking garage is unpleasent and damages property values. Ironically, our modern zonign paradigm &lt;em&gt;forces&lt;/em&gt; the creation of parking garages where they would otherwise never exist, and forces the harms it claims to defend against. &lt;a href=&quot;#fnref:this-is-encouraged-by-zoning&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:unless-the-workers-can-live-there&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Long commutes are expensive, harmful to the environment, pocketbook, and soul. How nice would it be to live next to where you work? If I read Illustration 4 with the perspective of someone who works at the ice plant, I would be a big fan of being able to live near where I worked. &lt;a href=&quot;#fnref:unless-the-workers-can-live-there&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:office-buildings&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I laughed a little as I read this. I’m sure in 1922 a 20-story building was rather large and uncommon. I think we’ve all grown up with enough tall buildings that we can reject this assessment as categorically false, based on our lived experience. Every urban area has tall buildings (50 stories, 100 stories tall!) and the adjacent buildings go &lt;strong&gt;up&lt;/strong&gt; in value, not down. &lt;a href=&quot;#fnref:office-buildings&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:conscious-intelligent-plan&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;We could re-word this sentence to:&lt;/p&gt;
      &lt;blockquote&gt;
        &lt;p&gt;Zoning is a conscious, intelligent effort to &lt;strike&gt;direct&lt;/strike&gt; enforce the building of the city in accord with a &lt;strike&gt;well-considered&lt;/strike&gt; supremacist plan.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;&lt;a href=&quot;#fnref:conscious-intelligent-plan&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:prohibit-businesses&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;screenshot zoning codes from Denver that show restrictions of commercial activity in residential zones &lt;a href=&quot;#fnref:prohibit-businesses&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:white-flight&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The author is describing a phenomena known as “white flight”, but without labeling it as such. &lt;a href=&quot;#fnref:white-flight&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:st-lewis&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;St. Lewis has horrific history around racism. I’ll add links here soon. Just know that alarm bells should be going off in your head, as you read this reference to St. Lewis. &lt;a href=&quot;#fnref:st-lewis&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:zoning-enforces-sprawl&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The authors are arguing for “Euclidean zoning”. There’s no question that Euclidean zoning encourages sprawl and car-dependence, accomplishing the exact opposite of what the authors say zoning will accomplish. &lt;a href=&quot;#context-twitter-thread-1&quot;&gt;My first twitter thread&lt;/a&gt; goes into this phenomina in some detail. &lt;a href=&quot;#fnref:zoning-enforces-sprawl&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:apartments-means-black-people&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Remember that the authors associate apartment buildings and black people. They should have written &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Zoning will keep the Blacks out of the White neighborhoods. The coming of the Black drives out the White. Only by setting definite limits to the spread of the Blacks can the city be preserved as a city of Whites.&lt;/code&gt; &lt;a href=&quot;#fnref:apartments-means-black-people&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:minimum-lot-size&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This sentiment is what gives us “minimum lot size requirements”, which are, again, &lt;em&gt;everywhere&lt;/em&gt; in modern zoning codes. (screenshots? I can add screenshots) Oh, and this is where our density limits come from. &lt;a href=&quot;#fnref:minimum-lot-size&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:neighborhood-character&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This sentance is why so many “pro-density” advocates claim that anyone who mentions ‘preserving neighborhood character’ is racist. They’re wrong - neighborhood character is an AMAZING thing to preserve, but our modern form of zoning just happens to be a pretty bad way of going about it. Neighborhoods can be preserved even as they adapt to the needs of the people that live there, as everyone becomes better off and more satisfied with where they live. &lt;a href=&quot;#fnref:neighborhood-character&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:such-tricky-wording&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Of course we should not injure others. This sentance is tricky because what it’s really saying is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Without zoning the White owner is powerless to prevent a black person from modifying their property as they see fit.&lt;/code&gt; &lt;a href=&quot;#fnref:such-tricky-wording&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:apartments-are-banned&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Translation: This zoning plan bans apartment buildings from most of the city. &lt;a href=&quot;#fnref:apartments-are-banned&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:trade-is-banned&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Translation: This zoning plan bans &lt;em&gt;all&lt;/em&gt; commercial activity from most of the city. &lt;a href=&quot;#fnref:trade-is-banned&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:black-people-cannot-buy&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Translation: In an R1 district, it will become illegal for a black person to buy or rent property from a white property owner. &lt;a href=&quot;#fnref:black-people-cannot-buy&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:black-people-cannot-sell&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Translation: In an R2 district, it will become illegal for a black property owner to sell or rent their property to a white person. &lt;a href=&quot;#fnref:black-people-cannot-sell&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:blanket-exclusion-for-slaveholding-white-people&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Translation: White people who own slaves or have servents get a blanket exclusion from all this zoning limits we’re about to place on R1 (white single-family home) districts. &lt;a href=&quot;#fnref:blanket-exclusion-for-slaveholding-white-people&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:this-is-awkward&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Would it be strange if we found many, many references to a 35 foot height limit in zoning codes across the nation? I predict it would be uncomfortable. (most of the land in american cities has a 35 foot height limit) &lt;a href=&quot;#fnref:this-is-awkward&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:tall-buildings-are-uneconomic&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Now that we have 100 more years of experience with cities like New York City, I don’t think one can accept at face value the proposition that “excessively high buildings are uneconomic and very undesirable from a public standpoint”. Based off of the price of land in NYC, many, many people desire to live there. &lt;a href=&quot;#fnref:tall-buildings-are-uneconomic&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:10-year-60-per-cent-assessed-value&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Translation: If a given building is “non-conforming” and assessed at a value of $50,000 (for example), if you spend more than $30,000 on renovations over a ten-year period, &lt;em&gt;you are required by law&lt;/em&gt; to bring the entire building into ‘conforming uses’, which means you may spend more on bringing the building “to code” than you wanted to spend on the renovation. Sprinkler systems and elevators are &lt;em&gt;very&lt;/em&gt; expensive. &lt;a href=&quot;https://www.strongtowns.org/journal/2017/6/9/learning-from-a-non-conforming-neighborhood&quot;&gt;Most old neighborhoods are non-conforming&lt;/a&gt; &lt;a href=&quot;https://www.strongtowns.org/journal/2019/7/16/dropping-weight-is-not-enough-how-making-your-town-stronger-is-like-improving-bike-performance&quot;&gt;This single clause causes near-endless fiscal trouble for property owners, cities running out of money, and renters&lt;/a&gt; &lt;a href=&quot;#fnref:10-year-60-per-cent-assessed-value&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:remember-the-goal&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Remember the goal of this “non-conforming use” section. It’s &lt;em&gt;to force compliance with zoning laws over time&lt;/em&gt;, and it’s dammned effective. &lt;a href=&quot;https://www.nytimes.com/interactive/2016/05/19/upshot/forty-percent-of-manhattans-buildings-could-not-be-built-today.html&quot;&gt;40 percent of the buildings in Manhattan could not be built today&lt;/a&gt; &lt;a href=&quot;#fnref:remember-the-goal&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:or-anyone-else&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Local law enforcement is often an arm for zoning enforcement. &lt;a href=&quot;https://projects.tampabay.com/projects/2020/investigations/police-pasco-sheriff-targeted/intelligence-led-policing/&quot;&gt;This article&lt;/a&gt; is an amazing investigation into long-term abuse of policing powers in Florida. One of the themes is “police harass residents”. You don’t have to read the whole article, just notice how they use zoning code to harass residents, &lt;em&gt;including issuing mandatory court appearances, and if the person failed to show up or pay the fine, the police would arrest them&lt;/em&gt;:&lt;/p&gt;
      &lt;blockquote&gt;
        &lt;p&gt;If the targets, their family members or associates wouldn’t speak to deputies or answer questions, &lt;strong&gt;STAR team deputies were told to look for code enforcement violations like faded mailbox numbers, a forgotten bag of trash or overgrown grass, Rodgers said.&lt;/strong&gt;
&lt;strong&gt;The father of one Sheriff’s Office target was fined over the numbers posted on his house. The numbers were there, the document notes in the top-right, but a nearby light made them hard to see. The form indicates the father had to attend a mandatory court hearing.&lt;/strong&gt;&lt;/p&gt;

        &lt;p&gt;Pasco Sheriff’s Office:&lt;/p&gt;

        &lt;p&gt;“We would literally go out there and take a tape measure and measure the grass if somebody didn’t want to cooperate with us,” he said.&lt;/p&gt;

        &lt;p&gt;Rodgers said people sometimes would fail to pay the fine, which would result in a warrant being issued for their arrest.&lt;/p&gt;

        &lt;p&gt;“We’d get them one way or another,” he said.&lt;/p&gt;

        &lt;p&gt;Rodgers said the tactics made him and many of his colleagues uneasy. He thought the strategy was both ineffective and unethical, he said. But when he raised concerns, he said, a supervisor threatened to strip him of his rank and send him back to patrol.&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;&lt;img src=&quot;/images_2020/citation1-2x.jpg&quot; alt=&quot;What a disaster&quot; title=&quot;The father of one Sheriff’s Office target was fined over the numbers posted on his house. The numbers were there, the document notes in the top-right, but a nearby light made them hard to see. The form indicates the father had to attend a mandatory court hearing.&quot; /&gt;
  &lt;em&gt;The father of one Sheriff’s Office target was fined over the numbers posted on his house. The numbers were there, the document notes in the top-right, but a nearby light made them hard to see. The form indicates the father had to attend a mandatory court hearing.&lt;/em&gt; &lt;a href=&quot;#fnref:or-anyone-else&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:this-plan-is-written-by-racists&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Remember, the mayor signed his name on this supremacist document. No way will 3/4ths of the city council sign off on anything that diminishes institutionalized supremacy/european american nobility norms. &lt;a href=&quot;#fnref:this-plan-is-written-by-racists&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:i-bet-they-are-racist-too&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;🤔 I wonder how supremacist the city council in Atlanta in 1920 was. How about 1950? 1980? 2010? 2020? 2025? &lt;a href=&quot;#fnref:i-bet-they-are-racist-too&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:i-laughed-out-loud&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I laughed out loud as I read this last line of the paragraph. This zoning regime is carefully sculpted to look like it’s responsive to the inputs of “the people”, but it’s really responsive to the inputs of &lt;em&gt;only&lt;/em&gt; politically powerful people, like the mayor who put his name on this supremacist plan. &lt;a href=&quot;#fnref:i-laughed-out-loud&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:racialized&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I don’t remember if I used the word ‘racialized origin’, which is technical and very specific, or if I used the phrase ‘race-based origin’. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;racialized&lt;/code&gt; means &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;make racial in tone or character&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;categorize or divide according to race.&lt;/code&gt;. It’s the same as enslaved, segregated, ghetto-ized, interred (internment camps), reserved (native people slaughtered and entrapped inside of reservations), it’s known to be what Very Bad People did in Eastern Europe in the 19th century. &lt;a href=&quot;#fnref:racialized&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>My Thoughts on Eric Weinstein&apos;s Thoughts on Pia Kalani&apos;s Thoughts</title>
   <link href="https://josh.works/my-thoughts-on-erics-thoughts-on-pias-thoughts"/>
   <updated>2020-08-06T13:00:00+00:00</updated>
   <id>https://josh.works/eric-weinstein-quote</id>
   <content type="html">&lt;h2 id=&quot;context-for-two-sentances&quot;&gt;Context for two sentances&lt;/h2&gt;

&lt;p&gt;It’s August 8, 2020.&lt;/p&gt;

&lt;p&gt;The news is full of coronavirus, schools, employment, police brutality, a vaccine, elections, &lt;em&gt;so much politics&lt;/em&gt;, China, Tik-Tok, the Twitter-dm-hack-bitcoin-scam-or-was-it-dm-content hack happened.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tiger King&lt;/em&gt;, &lt;em&gt;Cheer&lt;/em&gt;, &lt;em&gt;Filthy Rich&lt;/em&gt; are some of the most-watched shows in America, run on Netflix. &lt;em&gt;Hamilton&lt;/em&gt; came out on Disney+ six weeks ago, and I’ve not heard about civil unrest, protests, riots or anything in a week or so.&lt;/p&gt;

&lt;p&gt;My wife and I are trying to buy a house in Denver. We just looked at a small property that was adorable for many reasons, closely related to the themes expounded upon in &lt;a href=&quot;https://www.strongtowns.org/&quot;&gt;Strong Towns&lt;/a&gt;, &lt;a href=&quot;https://granolashotgun.com/&quot;&gt;Granola Shotgun&lt;/a&gt;, and &lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design&quot;&gt;Order Without Design: How Markets Shape Cities&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The property will likely sell to someone for $500,000, but we feel strongly that it does not justify this price, and we will therefore not purchase it.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;This quote I want you to read comes from a podcast episode recorded April 21. I listened to the podcast episode a few days ago.&lt;/p&gt;

&lt;p&gt;I’ve never really listened to any Eric Weinstein before, but the guest was an author I find interesting. I’ve read two of the author’s books twice, and I rarely re-read books.&lt;/p&gt;

&lt;p&gt;Here’s the whole episode: &lt;a href=&quot;https://play.pocketcasts.com/podcasts/93e73600-7ea8-0137-f540-17da1cd0d495&quot;&gt;The Portal ep 31: Ryan Holliday&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before the episode starts, though, Eric Weinstein shares a thought he had. I found it striking, and wanted to see if others might find it striking as well.&lt;/p&gt;

&lt;p&gt;Here’s what he said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It occurred to me […] that the two older generations of Americans who are to duke it out in the race for the Presidency share a single purpose:&lt;/p&gt;

  &lt;p&gt;Their common goal [is]: stop the future from arriving at essentially any cost to future generations&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The purpose for this goal is: that they could live out their remaining days in as close to the style to which they’d become as accustomed to [in the 50’s through 70s] as is actually possible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This quote maybe wouldn’t have stuck out to me in isolation, but I’d heard it after some context building he did.&lt;/p&gt;

&lt;p&gt;So, I’ll share that context with you, so you can consider the above quote in context.&lt;/p&gt;

&lt;p&gt;I tried to find a transcrip of this episode, and found &lt;a href=&quot;https://moses.land/transcript-ryan-holiday-and-eric-weinstein-on-the-portal-episode-31/&quot;&gt;this&lt;/a&gt; machine-generated transcript. It was a giant blob of text, no line breaks, no formatting, so I’ve edited that version here.&lt;/p&gt;

&lt;p&gt;As I edited it, I’ve made a few modifications for clarity &lt;em&gt;and I inject my own thoughts&lt;/em&gt;. I mark my own thoughts clearly, but it seems the easiest way to share the context.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;3-minutes-from-the-opening-of-the-portal-episode-31&quot;&gt;3 minutes from the opening of &lt;em&gt;The Portal, Episode 31&lt;/em&gt;&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Josh: I’m quoting Eric from the podcast episode now. These are all his words, or his recounting of his conversation with his wife/others:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eric (00:02:27)&lt;/strong&gt;
For the last month I’ve spent nearly all of my time at home with my family and many of the better thoughts I’ve been exploring during this time are due to my collaborator and wife, Pia Malaney.&lt;/p&gt;

&lt;p&gt;Pia is the economist who currently runs CIGS, the &lt;a href=&quot;https://cigs-inet.org/&quot;&gt;Center for Innovation, Growth and Society&lt;/a&gt;, which she co-founded with INET, the Institute for New Economic Thinking.&lt;/p&gt;

&lt;p&gt;Very early on, I was fumbling to try to understand the most likely effects of the virus and she said something clarifying which I wish I had repeated to you all when it was fresh, she said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I think in a way the virus can be thought of as representing the future.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I don’t know. Maybe I’m dense, but I didn’t catch it the first time so I asked her to clarify. She was surprised that this wasn’t obvious to me so she spelled her position out:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Think about it this way, take all of the seemingly varied issues we discussed constantly over the dinner table and at conferences.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;“All of them?” I replied with the slightly teasing voices. I assumed she was speaking with hyperbole.&lt;/p&gt;

&lt;p&gt;Without an ounce of self doubt in a voice that I have learned to fear over many years of collaboration, she said brightly:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Why yes, pretty much all of them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;She continued:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Let’s start with&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;surveillance&lt;/li&gt;
    &lt;li&gt;monopolies&lt;/li&gt;
    &lt;li&gt;automation,&lt;/li&gt;
    &lt;li&gt;telecommuting&lt;/li&gt;
    &lt;li&gt;next generation warfare&lt;/li&gt;
    &lt;li&gt;UBI&lt;/li&gt;
    &lt;li&gt;future of work&lt;/li&gt;
    &lt;li&gt;the retail apocalypse&lt;/li&gt;
    &lt;li&gt;online dating&lt;/li&gt;
    &lt;li&gt;antivaxxers&lt;/li&gt;
    &lt;li&gt;the student debt crisis&lt;/li&gt;
    &lt;li&gt;supply chain vulnerability&lt;/li&gt;
    &lt;li&gt;green tech and climate change&lt;/li&gt;
    &lt;li&gt;urban homelessness&lt;/li&gt;
    &lt;li&gt;college equivalency certificates&lt;/li&gt;
    &lt;li&gt;biohacking,&lt;/li&gt;
    &lt;li&gt;the retreat from globalization,&lt;/li&gt;
    &lt;li&gt;collapse of mainstream journalism&lt;/li&gt;
    &lt;li&gt;Chinese ascendance&lt;/li&gt;
    &lt;li&gt;social engineering&lt;/li&gt;
    &lt;li&gt;Saudi modernization and the move away from fossil fuels in the Kingdom&lt;/li&gt;
    &lt;li&gt;inclusive stakeholding&lt;/li&gt;
    &lt;li&gt;political realignment and the problem of gerontocracy and the end of naive capitalism underpinned by U. Chicago-style economics&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;in fact, pretty much all the things we’ve used [the Center for Innovation, Growth, and Society] to explore.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;“Okay”, I said nervously&lt;/p&gt;

&lt;p&gt;“Well”, she continued,&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;you know that tired tech expression &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;the future is already here it just isn’t evenly distributed&lt;/code&gt;?&lt;/p&gt;

  &lt;p&gt;Across the board, this virus is accelerating that unifying future that was already headed our way.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And recapitulating that moment, where agent Kujan drops the Kobayashi coffee mug in &lt;em&gt;The Usual Suspects&lt;/em&gt;, a forest spontaneously emerged for me, from the confusion of the trees I had seen previously.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Josh: I didn’t know this reference, as I was editing this transcript, I looked it up. I’ve not seen the movie, so looked up the scene.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The description is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;The Ending of Usual Suspects when agent Kujan finds out who Keyser Soze is. One of the best scenes from the previous decade.&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/XYXXhn9fMYs&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;em&gt;back to Eric:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eric (00:04:20)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All of these seemingly disparate phenomena were suddenly revealed as closely related:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Americans were actually calling for their own surveillance only they were calling it “contact tracing”.&lt;/li&gt;
  &lt;li&gt;The retail apocalypse which had been building slowly suddenly became a matter of a government decree creating an ever more imposing monopoly for the world’s now richest human.&lt;/li&gt;
  &lt;li&gt;He in turn, owns and controls the only paper to take down a US president, consolidating control over our sense-making apparatus.&lt;/li&gt;
  &lt;li&gt;Most supposedly “essential” face-to-face office work was revealed to be illusory, as easily monitored-and-recorded telecommuting replaced the high-carbon commute&lt;/li&gt;
  &lt;li&gt;the demand for fossil fuels in turn evaporated pushing oil futures into radical states of contango.&lt;/li&gt;
  &lt;li&gt;Social distancing solved the problem of unwanted #MeTo toxic male touch a sexless Zoom dating put the hurt on “Netflix and chilling”.&lt;/li&gt;
  &lt;li&gt;Indeed, nearly UBI-like payments were going out to newly-unemployed former workers who were expected to sit at home on couches, as universities effectively all-but-confessed that they could deliver the same value through distance learning by not rebaiting extortionary tuition.&lt;/li&gt;
  &lt;li&gt;China, through an emasculated World Health Organization, seemingly began inducing our own US institutions like the CDC and Surgeon General’s office to impart deadly “magical thinking” to Americans about the ineffectiveness of masks for healthy people.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This all came as if some kind of twisted revenge for the &lt;a href=&quot;https://en.wikipedia.org/wiki/Boxer_Rebellion&quot;&gt;Boxer Rebellion&lt;/a&gt; where Chinese believe swords and martial arts made them invulnerable to Western high-tech warfare.&lt;/p&gt;

&lt;p&gt;Spontaneous protests broke out in cities across the country, as masked protesters fought mysterious rules that communicated that one may &lt;em&gt;not&lt;/em&gt; peaceably assemble, in contradition to the First Amendment.&lt;/p&gt;

&lt;p&gt;We were also not allowed to contradict public health authorities, who are clearly covering for a level of Baby Boomer and Silent Generation incompetence to keep the manufacturer and storage of essential goods and services within national boundaries and out of the hands of strategic rivals who think nothing of blatantly lying to us in matters of life, death and statistics.&lt;/p&gt;

&lt;p&gt;I reasoned, however, that there were clearly too many different things happening in such a situation, for the sudden arrival of the future to lack a single ideology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eric (00:6:28)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And so it occurred to me (and to Peter Thiel as well, who I called immediately) that the two older generations of Americans who were to duke it out in the race for the presidency shared a single purpose.&lt;/p&gt;

&lt;p&gt;Their common goal was “to stop the future from arriving at essentially any cost to future generations” so that they could live out the remaining days in as close to the style to which they’d become accustomed in childhood and young adulthood as was actually possible.&lt;/p&gt;

&lt;p&gt;And what did they use to accomplish this? Well, it was a combination of three ingredients:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;political control&lt;/li&gt;
  &lt;li&gt;a seemingly inexplicably indifference to the world of trouble that they would finally leave to their descendants after their demise.&lt;/li&gt;
  &lt;li&gt;a reliance on 75 years of astonishingly good luck, which can partially be explained as a rational universal fear of the future after:
    &lt;ul&gt;
      &lt;li&gt;two world wars&lt;/li&gt;
      &lt;li&gt;totalitarian atrocities&lt;/li&gt;
      &lt;li&gt;the 1918 pandemic&lt;/li&gt;
      &lt;li&gt;the Great Depression&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is related to Francis Fukuyama’s theory of &lt;a href=&quot;https://en.wikipedia.org/wiki/Francis_Fukuyama#The_End_of_History_and_the_Last_Man&quot;&gt;The End of History&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To [Boomers and Silent Generation members who held] this way of thinking what was happening was simple.&lt;/p&gt;

&lt;p&gt;The magic trick of holding back nearly all aspects of our true future required all three elements to be in place &lt;em&gt;simultaneously&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And nothing had changed with respect to the first two. In fact, all that it occurred was that their luck had finally run out with the COVID virus.&lt;/p&gt;

&lt;p&gt;To my generation, and the ones that followed that past version of the post-war American Dream was like a mesmerizing rumor and tale that the older generations had repeatedly and vividly wielded to cast a spell.&lt;/p&gt;

&lt;p&gt;This spell intimidated many of us from demanding answers and a say our own future.&lt;/p&gt;

&lt;p&gt;The spell they cast said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you can’t get a second home in your 30s from a paper route, a low cost education or a life in public service, then perhaps you should wait your turn and let the elders who made it work lead for a little while longer, until the younger generations can prove that they’re ready to assume adult responsibilities.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was a magical spell indeed, which blinded those of us who are forced to repeat “Okay Boomer” to explain our seeming relative inability to earn and lead in the presence of elders who could out-earn us in their prime.&lt;/p&gt;

&lt;p&gt;And this was even under the weight of multiple divorce settlements, or three-Martini lunches, and without the extensive training and apprenticeships that we seem to require.&lt;/p&gt;

&lt;p&gt;Well, that spell is now broken for me, watching our supposed leaders contend with a true pandemic.&lt;/p&gt;

&lt;p&gt;The Silent and Boomer generations, lacking any kind of precedent now look like incompetent adults.&lt;/p&gt;

&lt;p&gt;I suppose it is theoretically possible that the rest of us former gritty latchkey kids and Digital Natives would not fare better, but we could scarcely do worse.&lt;/p&gt;

&lt;p&gt;In fact, our elders are revealed not as go-getters or “can-do” leaders but as creatures of The System, who simply held back confronting the inevitable future for decades because its shape and form are indeed terrifying.&lt;/p&gt;

&lt;p&gt;And it wasn’t really the virus that was accelerating the terrifying future across the board.&lt;/p&gt;

&lt;p&gt;Any worldwide crisis of sufficient depth would have done it.&lt;/p&gt;

&lt;p&gt;The world has always been caught up in escalating plagues, wars, depressions and conflicts. The Coronavirus was ushering in the future simply because it was the first piece of early 20th-century-scale bad luck to fall into our new millennium characterized as it is by fragility.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I’ve got some thoughts that I’ll jot down at some point.&lt;/p&gt;

&lt;p&gt;But as I collect my thoughts, how about you? What’s your gut reaction to this?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How To Write A Letter of Recommendation for Yourself</title>
   <link href="https://josh.works/how-to-write-a-letter-of-recommendation-for-yourself"/>
   <updated>2020-08-06T13:00:00+00:00</updated>
   <id>https://josh.works/how-to-write-a-letter-of-recommendation-for-yourself</id>
   <content type="html">&lt;p&gt;I meet regularly with early-career software developers. A few recurring meetings, 1x/week, plus ad-hoc calls as needed with others.&lt;/p&gt;

&lt;p&gt;A question came up recently:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;My three-month internship is close to wrapping up. The Co-founder/CEO/lead developer of the consulting company I’m at likes me, said he wishes he could hire me but cannot, because they don’t have enough work in the pipeline.&lt;/p&gt;

  &lt;p&gt;He said he’d write me a letter of recommendation, and asked me to draft it for him.&lt;/p&gt;

  &lt;p&gt;How do I write my own letter of recommendation, for my first real software development job?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Feels like a trap, huh?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/office-hours-tufts.jpeg&quot; alt=&quot;who are you?&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://admissions.tufts.edu/blogs/jumbo-talk/post/the-office-hours/&quot;&gt;&lt;em&gt;source&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or, maybe they know you. They know you &lt;em&gt;too well&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;images/recommendation-warning.jpg&quot; alt=&quot;untrustworthy&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://blacklawyermagic.wordpress.com/&quot;&gt;&lt;em&gt;source&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I explained a few concepts that we wanted to “speak to” in the letter. I’ll explain.&lt;/p&gt;

&lt;p&gt;The software developer that I meet with mentioned that the CEO’s advice on the next job included “be able to speak to low liability”.&lt;/p&gt;

&lt;p&gt;I wanted to dig into this “liability” piece.&lt;/p&gt;

&lt;h2 id=&quot;how-much-does-a-bad-hire-cost&quot;&gt;How much does a bad hire cost?&lt;/h2&gt;

&lt;p&gt;What’s the biggest risk in hiring?&lt;/p&gt;

&lt;p&gt;It’s &lt;em&gt;the risk of a bad hire&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;How much does it cost to make a bad hire?&lt;/p&gt;

&lt;p&gt;I would conservatively estimate that it costs $100,000 and nine months of your life. Here’s how the math works from a hiring manager’s point of view:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Spend a month and 25 hours of labor dev team manager labor to find/interview the candidate(s) and winnow the applicants down to someone to make an offer.  (the hiring manager would prefer to be doing &lt;em&gt;literally anything else but hiring&lt;/em&gt;.)&lt;/li&gt;
  &lt;li&gt;Extend an offer, wait 2-6 more weeks before the new candidate starts. It can be painful to wait another six weeks, because the team is currently short-staffed, and has been for a long time. That’s why they’re hiring!&lt;/li&gt;
  &lt;li&gt;Start date! Start paying $150,000/yr or $3000/week for your shiny new employee.&lt;/li&gt;
  &lt;li&gt;Pay $12,000 for the first month of them working, figuring out your dev environment, ticket management, who knows what parts of the codebase, and a few easy bug fixes.&lt;/li&gt;
  &lt;li&gt;Start getting nervous. Employee not batting it out of the park like you’d hoped. Maybe still onboarding, give it another month (and $12,000 in payroll expense).&lt;/li&gt;
  &lt;li&gt;OK. Three months in and another $36,000 in payroll later, you’re pretty sure there’s a problem.&lt;/li&gt;
  &lt;li&gt;Start the pre-Performance Improvement Plan work. Talk to their team, their manager, them. Why is it not working? Why is the team &lt;em&gt;working slower&lt;/em&gt; with this new team member, instead of working faster? &lt;em&gt;Not only are you wasting five figures of payroll, the rest of your expensive dev team is producing less as well!&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Pre-PIP work is over. Another $5k in payroll gone forever. Now it’s time to give the formal PIP, which everyone knows is “beginning the firing process”&lt;/li&gt;
  &lt;li&gt;Two more months and $24,000 in payroll later, you fire the employee.&lt;/li&gt;
  &lt;li&gt;You feel relief with having gotten rid of the bad employee. You’re thrilled that you can get back to normal work.&lt;/li&gt;
  &lt;li&gt;Check the clock and balance sheet. It took you nine months and $100k to get to where you were at step 1.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Add up the time/expense:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;1-2 months to to find/hire a candidate.&lt;/li&gt;
  &lt;li&gt;7-8 months (and $84K-$96k) to hire, trial them, try to help them be successful, give up on that plan, and fire them.&lt;/li&gt;
  &lt;li&gt;Many hours spent thinking about this specific problem, talking with others about it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There’s nine months of your life. That’s 9 months of time, sure, but it’s also 9 months of &lt;a href=&quot;https://en.wikipedia.org/wiki/Opportunity_cost&quot;&gt;opportunity cost&lt;/a&gt;. What if you’d hired a great candidate? They’d be rapidly approaching their first year on the job, and everyone would be happy about it, instead of this disaster you’ve had to deal with.&lt;/p&gt;

&lt;p&gt;Here’s the really scary part: To large organizations (1000+ employees), &lt;em&gt;wasting $100k is meaningless compared to the wasted time and mis-directed effort&lt;/em&gt;. The entire organization is more annoyed at having &lt;em&gt;lost the time of a productive software developer&lt;/em&gt;. They don’t care that they lit a giant pile of money on fire, &lt;em&gt;they’re annoyed that their competitor is getting new features out the door and gaining marketshare and the future of their $x,000,000 company hangs in the balance&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Oh, and the good managers, not only do they want to be wise with money and build features/gain market-share…&lt;/p&gt;

&lt;p&gt;They want to see their team flourish.&lt;/p&gt;

&lt;p&gt;Being fired is a life-defining moment. (I speak from experience)&lt;/p&gt;

&lt;p&gt;If you’re a kind and empathetic person, &lt;em&gt;it’s particularly unpleasent to fire someone and it feels like a personal failure&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;You want to work for a kind and empathetic manager. (They’re not common, but they’re not impossible to find.)&lt;/p&gt;

&lt;p&gt;So, tailor your letter to speak to the concerns of a kind and empathetic manager. This manager would:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Want to see you do well&lt;/li&gt;
  &lt;li&gt;Want to see you develop your skills and competencies&lt;/li&gt;
  &lt;li&gt;Want you to make meaningful contributions to the product&lt;/li&gt;
  &lt;li&gt;Want a healthy team dynamic&lt;/li&gt;
  &lt;li&gt;Want you to voice concerns and observations as relevant&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And much more&lt;/p&gt;

&lt;h2 id=&quot;a-primary-goal-for-an-early-career-software-developer-telegraph-low-liability&quot;&gt;A Primary-goal for an early-career software developer: Telegraph Low Liability&lt;/h2&gt;

&lt;p&gt;First, when I say &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;telegraph low liability&lt;/code&gt; I mean it in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Telegraphing_(sports)&quot;&gt;sports definition&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In sporting terminology, to &lt;strong&gt;telegraph&lt;/strong&gt; is to unintentionally alert an opponent to one’s immediate situation or intentions. The sporting use of the term &lt;em&gt;telegraph&lt;/em&gt; draws a direct comparison with the communication device of the same name. “Telegraphing” always refers to a reflexive physical action rather than a protracted or intellectual give-away. For example, a boxer rotating his shoulders to throw a hook would be telegraphing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You should aim to “telegraph” that you’re a low-liability hire &lt;em&gt;without ever saying it so explicitely&lt;/em&gt;. It’s a subtle thing, best communicated incidentally, not directly.&lt;/p&gt;

&lt;p&gt;Five years ago, I wrote &lt;a href=&quot;/so-you-want-to-work-remotely&quot;&gt;So you want to work remotely…&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quoting myself:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;First, there’s the matter of framing how you go about working remotely. Obviously you want to work remotely, but put yourself in the shoes of a prospective employer. They don’t care if you work remotely or not - they want you to do great work for them and make them an effective, profitable organization.&lt;/p&gt;

  &lt;p&gt;Companies that hire remotely tend to be younger, agile-er, and smaller. So every employee matters. Making a bad hire can be catastrophic in terms of money and &lt;a href=&quot;https://en.wikipedia.org/wiki/Opportunity_cost&quot;&gt;opportunity cost&lt;/a&gt;. Your job is to make it very, very obvious that hiring YOU is a great decision. In fact, you want to be so good at what you do that passing up on you is a terrible decision.&lt;/p&gt;

  &lt;p&gt;[…]&lt;/p&gt;

  &lt;p&gt;When you can walk someone down the path from “Hire me” to “I’ll help you make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$x00,000/year&lt;/code&gt; more than you would otherwise”, &lt;em&gt;you’re talking their language&lt;/em&gt;. You’re &lt;em&gt;telegraphing&lt;/em&gt; that you understand their concerns without ever stating their concern explicitly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To bring it full circle, here’s how I would go about &lt;em&gt;drafting&lt;/em&gt; a CEO’s Letter of Recommendation &lt;em&gt;for me&lt;/em&gt;. If you find this idea uncomfortable, don’t worry about it. That’s a sign of psychological health, that you don’t love putting flattering words &lt;em&gt;about yourself&lt;/em&gt; into other people’s mouths.&lt;/p&gt;

&lt;h2 id=&quot;six-steps-to-draft-a-self-promotional-letter-of-recommendation-that-a-friendly-boss-requested&quot;&gt;Six Steps To Draft A Self-Promotional Letter Of Recommendation That A Friendly Boss Requested&lt;/h2&gt;

&lt;p&gt;Normally, that’s a good aversion to have. For this particular situation, you’ll have to bite the bullet and move on. I’m not going to give you the actual words (how could I?) but I’ll explain my process. I’ll include comments throughout:&lt;/p&gt;

&lt;h3 id=&quot;1-draft-the-openingclosing&quot;&gt;1. Draft the opening/closing&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hi there,         
# I find it easier to strike a natural tone when thinking relatively
# informally. So, I draft documents, even if they&apos;ll end up being 
# formal, informally. 
             
             
Sincerely, 
- Boss&apos;s name, Title, Company
# Yes, I write the closing right after the opening.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-provide-1-general-introductioncontext-sentence&quot;&gt;2. Provide 1 general introduction/context sentence&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hi there,

# Establish the relationship. This helps readers contextualize 
# what comes next
I met {person I am recommending} {n months ago} because 
 {internship|coffee meeting|event|etc}.

Sincerely,
- Boss&apos;s name, Title, Company
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;3-say-a-complementary-thing-about-yourself&quot;&gt;3. Say a complementary thing about yourself&lt;/h3&gt;

&lt;p&gt;This is the first uncomfortable sentence you’ll have to write:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hi there,

I met {Zaniyah} {a few months ago} because {she and I crossed paths
at a local Ruby meetup}.

# No gushing required. A claim of &quot;I would hire this 
# person if I could&quot; is plenty strong social signaling. 
I wish I could hire them myself, but don&apos;t have the budget and work
lined up to utilize them to their full potential. 

Sincerely,
- Boss&apos;s name, Title, Company
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;4-share-an-anecdote-that-touches-on-the-potential-you-show&quot;&gt;4. Share an anecdote that touches on the potential you show&lt;/h3&gt;

&lt;p&gt;This can be hard to think of an anecdote. It might take a few attempts to feel good about the one you’ve chosen and how you speak of it. Just write something down, see how you feel, delete it, write something else down, etc.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hi there,

I met {Zaniyah} {a few months ago} because {she and I crossed paths 
at a local Ruby meetup}.

I wish I could hire her myself, but don&apos;t have the budget and work 
lined up to utilize her to their full potential. 

# add a punchy positive story
When she started at {company}, one of the first things she did was 
make many updates to our onboarding documentation. 

It was rather out-of-date, and the team hadn&apos;t had new hires in a 
while. 

Any time she ran into friction or trouble, she would hunt down the 
answer, and immediately update the documentation so the next 
person would have a smoother process.

Sure enough, the next hire spent half the time she did getting 
up and running.

# If possible, generalize from that story to a stable attribute 
# that informs your work:
She brings a similar attention to detail and thoughtfullness about 
&quot;the next person&quot; to all of the work that she does. 

Sincerely,
- Boss&apos;s name, Title, Company
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;5-add-a-sentence-offering-to-speak-further-about-you&quot;&gt;5. Add a sentence offering to speak further about you&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hi there,

I met {Zaniyah} {a few months ago} because {she and I crossed paths 
at a local Ruby meetup}.

I wish I could hire her myself, but don&apos;t have the budget and work 
lined up to utilize her to his full potential. 

# add a punchy positive story
When she started at {company}, one of the first things she did was 
make many updates to our onboarding documentation. 

It was rather out-of-date, and the team hadn&apos;t had new hires in a 
while. 

Any time she ran into friction or trouble, she would hunt down the 
answer, and immediately update the documentation so the next 
person would have a smoother process.

Sure enough, the next hire spent half the time she did getting 
up and running.

She brings a similar attention to detail and thoughtfullness about 
&quot;the next person&quot; to all of the work that she does. 

# `An offer to provide evidence` is functionally the same as 
# `evidence`, so:
I&apos;d be happy to answer any follow-up questions you might have 
about Zaniyah. Feel free to email me at `email`

Sincerely,
- Boss&apos;s name, Title, Company
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;give-this-letter-to-your-boss-for-them-to-edit-it-to-their-liking&quot;&gt;Give this letter to your boss for them to edit it to their liking&lt;/h2&gt;

&lt;p&gt;It may be intimidating to hand something like this to your boss.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Would they really have said such kind things about me? Won’t it be awkward if they read it, and say “eh, you’re not this great, lets tone it down a bit.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It would be awkward, but they won’t do that.&lt;/p&gt;

&lt;p&gt;Instead, they’ll be thankful that you did all this work for them. You know what feels terrible?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;really wanting to say a nice thing about someone, but good stories/examples of why they’re great don’t come to mind. You KNOW there are good stories and examples, but you don’t remember them all.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You’re solving a big problem for your boss, in writing this letter. &lt;strong&gt;That is why they asked you to draft your own letter of recommendation for them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Done!&lt;/p&gt;

&lt;p&gt;If you’ve been tasked with writing your own letter of recommendation and it’s super intimidating, get in touch and I’ll help you out. Writing the first one is the hardest, it gets easier as you go.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I’m not an expert on this kind of thing, but I always like finding templates others have given for how they do things. Don’t think that this is the Right Way or (heaven forbid) The Only Way. This is just how I do it. If you’d got a resource that has helped you, tell me about it and I’ll update this post with a link to it!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Lastly, if you got value from this blog post, I can probably deliver value to you again. Punch your email in below and I’ll let you know when I write other posts, or do a big update to an existing post.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Build a Personal Website in Jekyll - A Detailed Guide For First-Timers</title>
   <link href="https://josh.works/build-a-personal-site-with-jekyll"/>
   <updated>2020-08-06T13:00:00+00:00</updated>
   <id>https://josh.works/setting-up-basic-jekyll-site-for-turing-backend-students</id>
   <content type="html">&lt;p&gt;You’re a turing student, in the backend program.&lt;/p&gt;

&lt;p&gt;You know Ruby, you wanna start blogging, but everyone who says&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;go start a blog&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Seems to also think you have 10 hours (or 20 hours? or 2 hours? how long does this take) to sit around dealing with setting up a personal website.&lt;/p&gt;

&lt;p&gt;Lets set one up.&lt;/p&gt;

&lt;h3 id=&quot;intended-audience&quot;&gt;Intended audience:&lt;/h3&gt;

&lt;p&gt;Turing Mod 1 backend student, or ambitious mod-0 student&lt;/p&gt;

&lt;h3 id=&quot;output-and-expected-results&quot;&gt;Output and expected results&lt;/h3&gt;

&lt;p&gt;Have a basic site online, at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;your-github-username.github.io&lt;/code&gt; that looks professional enough you could share it with a future employer, but puts the main emphasis on your words, not the flashyness of the page or complexity of the technology.&lt;/p&gt;

&lt;p&gt;My website (the one you’re reading on right now) looks pretty simple, and I know how to set it up, so we’ll &lt;em&gt;start&lt;/em&gt; with setting up something similar to my website, and I’ll show you how to use different templates as well.&lt;/p&gt;

&lt;h3 id=&quot;1-get-started-with-basic-jekylltheme-combination&quot;&gt;1. Get started with basic jekyll/theme combination&lt;/h3&gt;

&lt;p&gt;Head to &lt;a href=&quot;https://github.com/poole/poole&quot;&gt;https://github.com/poole/poole&lt;/a&gt;, and hit the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;clone or download&lt;/code&gt; url.&lt;/p&gt;

&lt;p&gt;In your terminal, make a new dirctory, perhaps in your pre-existing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;turing&lt;/code&gt; directory&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ~/turing

&lt;span class=&quot;c&quot;&gt;# Here&apos;s we&apos;re cloning the repo, but placing it inside of a folder _we_ define name&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git clone &amp;lt;url from that &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;poole&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt; repository&amp;gt; jekyll-site

&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;jekyll-site

&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;bundle &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# if `bundle install` throws error, do `gem install bundler`, then re-try `bundle install`&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;bundle &lt;span class=&quot;nb&quot;&gt;exec &lt;/span&gt;jekyll serve
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now the server should be running.&lt;/p&gt;

&lt;p&gt;Now, in a web browser, visit the given url:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://p64.f2.n0.cdn.getcloudapp.com/items/GGukgv9R/2020-05-21%20at%2012.34%20PM.jpg?v=63d74cf95de2c35b20ef3b8f0cbc1521&quot; alt=&quot;server running&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;sidebar---what-the-heck-is-jekyll-how-does-this-thing-turn-into-a-website-that-people-can-visit&quot;&gt;Sidebar - what the heck &lt;em&gt;is&lt;/em&gt; Jekyll? How does this thing turn into a website that people can visit?&lt;/h5&gt;

&lt;p&gt;great question! Holy cow.&lt;/p&gt;

&lt;p&gt;Jekyll’s documentation assumes a strong knowledge of how the internet works.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Transform your plain text into static websites and blogs&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What does this mean? What’s a “static site generator”? Why do some people even care so much?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;more to come soon&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;2-learn-the-basics-of-how-jekyll-works-so-you-can-customize-it-to-your-liking&quot;&gt;2. Learn the basics of how Jekyll works, so you can customize it to your liking&lt;/h3&gt;

&lt;p&gt;Lets figure out the important parts of this new directory.&lt;/p&gt;

&lt;h4 id=&quot;_configyml&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_config.yml&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.yml&lt;/code&gt; extension stands for “Yaml Ain’t Markup Language”, which is the punchline to a joke.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.yml&lt;/code&gt; is format common in Ruby for writing machine-readable setttings that are equally easy for humans to understand. So, your Jekyll site will use this file to set basic settings, but it’s easy for you to modify the values yourself.&lt;/p&gt;

&lt;p&gt;Here’s the first two changes you should make on your site:
&lt;img src=&quot;https://p64.f2.n0.cdn.getcloudapp.com/items/QwuKZYlA/jekyll_config.jpg?v=7e79afd04591ee5608c8cd8eacbc4711&quot; alt=&quot;first change&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Look at lines 2 and 3 in my editor - try making those changes, then make them show up in your browser. Don’t forget to restart your server! (hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ctrl-r&lt;/code&gt; to kill it.)&lt;/p&gt;

&lt;h3 id=&quot;3-set-up-github-repo-to-host-your-site&quot;&gt;3. Set up github repo to host your site&lt;/h3&gt;

&lt;p&gt;From github’s instructions:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Head over to &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; and &lt;a href=&quot;https://github.com/new&quot;&gt;create a new repository&lt;/a&gt; named username.github.io, where username is your username (or organization name) on GitHub.&lt;/p&gt;

  &lt;p&gt;If the first part of the repository doesn’t exactly match your username, it won’t work, so make sure to get it right.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once you’ve done that, clone the repository:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;git clone https://github.com/username/username.github.io
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In that new directory, you’ll need to place your Jekyll site. If you want to keep working with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;poole&lt;/code&gt; theme we’ve worked with, you will need “connect” your Jekyll site locally to this new repository.&lt;/p&gt;

&lt;p&gt;Lets first create a new directory at the root of your laptop for your website.&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;mkdir&lt;/span&gt; ~/your-github-username.github.io
&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;your-github-username.github.io
&lt;span class=&quot;nb&quot;&gt;mv&lt;/span&gt; ~/turing/jekyll-site &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now, lets connect your github repo to this repository:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git init
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git add &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git commit &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Initial commit&quot;&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git remote &lt;span class=&quot;nt&quot;&gt;-v&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# should come back empty&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git remote add origin &amp;lt;your clone-this-repo url from above&amp;gt;

&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git push origin master
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And, when you visit that URL, you should see all your files up there!&lt;/p&gt;

&lt;h1 id=&quot;customizing-your-new-jekyll-site&quot;&gt;Customizing your new jekyll site&lt;/h1&gt;

&lt;p&gt;I’d recommend setting up a &lt;em&gt;very&lt;/em&gt; basic landing page. It’s what my home page looks like, and it’ll probably work for you.&lt;/p&gt;

&lt;p&gt;Here’s how:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://p64.f2.n0.cdn.getcloudapp.com/items/5zuXZPZ6/2020-06-02%20at%209.20%20AM.jpg?v=cce72c77655716fb04e5d1e01882c66b&quot; alt=&quot;change index.html to index.md&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Then delete all that stuff, and make it your own:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://p64.f2.n0.cdn.getcloudapp.com/items/RBuq5Zw2/2020-06-02%20at%209.23%20AM.jpg?v=f6133f42c832e023da95a16b4a45dbf5&quot; alt=&quot;add three sections&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Then fill it out and make it your own!&lt;/p&gt;

&lt;p&gt;Here’s what I might write, if I were doing this for myself:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://p64.f2.n0.cdn.getcloudapp.com/items/xQuDKxnz/2020-06-02%20at%209.26%20AM.jpg?v=4fe24cf63e185e7df22a1edf883d86e5&quot; alt=&quot;it would look like this&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And here’s how it would look running locally:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://p64.f2.n0.cdn.getcloudapp.com/items/mXuAd2rB/2020-06-02%20at%209.27%20AM.jpg?v=a3dc52ab0976aa55bf6a695cc2d41344&quot; alt=&quot;running locally&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I didn’t like how large the headings were, so instead of H1s (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#&lt;/code&gt;), I went with H2: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;##&lt;/code&gt; before each section.&lt;/p&gt;

&lt;h3 id=&quot;additional-resources&quot;&gt;Additional resources&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/switching-to-jekyll&quot;&gt;https://josh.works/switching-to-jekyll&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://jekyll-themes.com/&quot;&gt;https://jekyll-themes.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>A Runbook for Upgrading Your Parent&apos;s Junky Old Laptop to a Chromebook</title>
   <link href="https://josh.works/upgrade-parents-junky-old-laptop-to-chromebook"/>
   <updated>2020-07-20T13:00:00+00:00</updated>
   <id>https://josh.works/parents-guide-to-painless-chromebook-setup</id>
   <content type="html">&lt;h4 id=&quot;tldr-im-creating-a-runbook-for-a-very-specific-delicate-and-potentially-time-consuming-and-emotionally-charged-operation-to-replace-my-70-year-old-newly-widowed-mother-in-laws-ancient-desktop-computer-with-a-easy-for-me-to-manage-chromebook&quot;&gt;tl;dr: I’m creating a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;runbook&lt;/code&gt; for a very specific, delicate, and potentially time-consuming and emotionally-charged operation to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;replace my 70-year-old newly-widowed mother-in-law&apos;s ancient desktop computer with a easy-for-me-to-manage Chromebook&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;Update: I posted to &lt;a href=&quot;https://www.reddit.com/r/chromeos/comments/it2fn2/how_much_should_i_spend_to_get_a_solid_chromebook/&quot;&gt;r/ChromeOS&lt;/a&gt; this question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much should I spend to get a solid Chromebook for aging mother-in-law?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;My mother-in-law is almost 75. Her husband managed the computer stuff for her, and he died in January.&lt;/p&gt;

  &lt;p&gt;I’m the tech-savvy son in law who gets the phone calls to help her connect to the WiFi again, or help her print stuff.&lt;/p&gt;

  &lt;p&gt;I’d love to buy her a chromebook - I think it’ll serve her well, be easy for her to use, and will make it way easier for me to help her with computer things.&lt;/p&gt;

  &lt;p&gt;Money isn’t an object, per se. I’m willing to spend $700 on a good machine if that’s what does the job.&lt;/p&gt;

  &lt;p&gt;But even if I am to spend that amount, I still don’t know where to start.&lt;/p&gt;

  &lt;p&gt;So, do any of you have aging parents who you’ve gotten setup with a Chromebook?&lt;/p&gt;

  &lt;p&gt;What laptop did you get? Are you happy with it? Any regrets or things you wish you did differently?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here’s results from the thread:&lt;/p&gt;

&lt;p&gt;My MIL has simple needs:&lt;/p&gt;

&lt;p&gt;She has simple needs:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Facebook&lt;/li&gt;
  &lt;li&gt;~facetime/hangouts/zoom~ facetime won’t be possible on a Chromebook. No problem&lt;/li&gt;
  &lt;li&gt;AOL email (AOL is horrible)&lt;/li&gt;
  &lt;li&gt;banking and stuff&lt;/li&gt;
  &lt;li&gt;read her kids’ instagrams, Tumblrs, etc&lt;/li&gt;
  &lt;li&gt;print stuff&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Printing could be tricky:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’d be cautious about getting a Chromebook if printing is a requirement. I’ve not had much luck getting Chrome OS to recognise printers and I have to transfer PDFs to another machine. I’ve tried with two HP printers which work fine on Windows and Ubuntu, but your mileage may vary if she has a different model of printer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But then:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If your printer is Google Cloud Print compatible then its super easy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Oh, yeah, but &lt;em&gt;of course&lt;/em&gt; &lt;a href=&quot;https://www.theverge.com/2019/11/22/20977888/google-cloud-print-shut-down-date-support&quot;&gt;Google is sunsetting Google Cloud Print in 3 months&lt;/a&gt;. 🙄&lt;/p&gt;

&lt;p&gt;So… we’ll see. I’ll buy something, might end up replacing her printer too.&lt;/p&gt;

&lt;p&gt;Wikipedia says a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;runbook&lt;/code&gt; is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In a computer system or network, a runbook is a compilation of routine procedures and operations that the system administrator or operator carries out. System administrators in IT departments and NOCs use runbooks as a reference.&lt;/p&gt;

  &lt;p&gt;Runbooks can be in either electronic or in physical book form. Typically, a runbook contains procedures to begin, stop, supervise, and debug the system. It may also describe procedures for handling special requests and contingencies. An effective runbook allows other operators, with prerequisite expertise, to effectively manage and troubleshoot a system.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Runbook&quot;&gt;&lt;em&gt;source&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the definition for the runbook &lt;em&gt;I&lt;/em&gt; will create:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In &lt;strike&gt;a computer system or network&lt;/strike&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;life&lt;/code&gt;, a runbook is a compilation of routine procedures and operations that the &lt;strike&gt;system administrator or operator&lt;/strike&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;individual&lt;/code&gt; carries out. &lt;strike&gt;System administrators in IT departments and NOCs&lt;/strike&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;People&lt;/code&gt; use runbooks as a reference.&lt;/p&gt;

  &lt;p&gt;Runbooks can be in either electronic or in physical book form. Typically, a runbook contains procedures to begin, stop, supervise, and debug the &lt;strike&gt;system&lt;/strike&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;situation&lt;/code&gt;. It may also describe procedures for handling special requests and contingencies. An effective runbook allows other &lt;strike&gt;operators&lt;/strike&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;people&lt;/code&gt;, with prerequisite expertise, to effectively manage and troubleshoot a &lt;strike&gt;system&lt;/strike&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;situation&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;how-i-decided-on-a-runbook-instead-of-a-guide&quot;&gt;How I decided on a “runbook” instead of a “guide”&lt;/h3&gt;

&lt;p&gt;A day after I announced the first version of this, a friend replied:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I&amp;#39;ve got 90%ish of my laptop set-up in a single bash script. Would probably pay for the chromebook equivalent of that + documentation explaining what has been setup. Something that creates all of the necessary accounts and software and explains it....&lt;/p&gt;&amp;mdash; Jack Pincus (@jwpincus) &lt;a href=&quot;https://twitter.com/jwpincus/status/1290721824418877441?ref_src=twsrc%5Etfw&quot;&gt;August 4, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;He said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’ve got 90%ish of my laptop set-up in a single bash script. Would probably pay for the chromebook equivalent of that + documentation explaining what has been setup. Something that creates all of the necessary accounts and software and explains it….&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I replied with (essentially)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;That’s what I’m trying to do&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And then I used a word in my response that was a big &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aha&lt;/code&gt; moment:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;i don&amp;#39;t think i&amp;#39;ll be able to make it that clean of a process, but I&amp;#39;m thinking more of a Runbook for a given situation.&lt;br /&gt;&lt;br /&gt;- &amp;quot;if this, that&amp;quot;&lt;br /&gt;- &amp;quot;this portion is Very Important, the rest of this is not&amp;quot;.&lt;br /&gt;- pre-written scripts for common objections&lt;br /&gt;&lt;br /&gt;etc.&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/1290767936739672064?ref_src=twsrc%5Etfw&quot;&gt;August 4, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;runbook-origin-story-aka-24-hours-ago-aug-3-2020&quot;&gt;Runbook Origin Story, aka 24 hours ago (Aug 3, 2020)&lt;/h2&gt;

&lt;p&gt;I spent a few hours recently helping my 75-year-old mother-in-law reconnect her junky old Windows laptop to the internet. Across five phone calls, and many pictures of her computer screen, we got her internet working again.&lt;/p&gt;

&lt;p&gt;As I did this, I live-tweeted the experience. It was about 20 tweets. A few pictures my mother-in-law sent me, and a poll.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;My mother in law is frustrated that her internet wasn&amp;#39;t working today. It&amp;#39;s been broken all day. I&amp;#39;ve called her a few times between other events to try to help debug it. &lt;br /&gt;&lt;br /&gt;This is a screenshot I just received (via email) that she took *with her phone* &lt;a href=&quot;https://t.co/5KnfCGZ2F4&quot;&gt;pic.twitter.com/5KnfCGZ2F4&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/1290420667444338688?ref_src=twsrc%5Etfw&quot;&gt;August 3, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;Part of the debugging process involved her taking pictures of her computer screen, because I couldn’t tell what she was looking at. (I don’t ever use a Windows operating system, so I was operating blind.)&lt;/p&gt;

&lt;p&gt;She was frustrated with it all, so I’d first suggested plugging-in/unplugging the router. It would be easier to walk her through that then the unfamiliar OS.&lt;/p&gt;

&lt;p&gt;After it didnt work (and hours passed) we did this back and forth. She took a picture and emailed it to me.&lt;/p&gt;

&lt;p&gt;It took a few minutes to arrive, then I’d look at it, tell her what to click, and wait for another screenshot:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-08-03-screen-01.JPG&quot; alt=&quot;first picture&quot; /&gt;&lt;/p&gt;

&lt;p&gt;about 15 minutes and another phone call later, I got this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-08-03-chromebook-rotated.JPG&quot; alt=&quot;second picture&quot; /&gt;&lt;/p&gt;

&lt;p&gt;All she ended up needing was to click her home wifi network and connect to it, per these screenshots.&lt;/p&gt;

&lt;p&gt;Months ago, I’d read things like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/chromeos/comments/h82m1d/secure_browsing_for_elderly_chromebook_or_windows/&quot;&gt;Secure browsing for elderly: chromebook or Windows 10 S (reddit)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/chromeos/comments/cdgq1q/a_chromebook_for_elderly_people/&quot;&gt;A chromebook for elderly people (reddit)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/chromeos/comments/34v0w2/people_who_bought_a_chromebook_for_an_elderly_or/&quot;&gt;People who bought a Chromebook for an elderly or tech illiterate parent/relative, what has yours and their experience been so far? (reddit, five years old! 😭)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On this last one, read through this answer. Emphasis mine.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I convinced my wife and her two brothers to purchase the Asus Chromebox for their mother this past December for Christmas.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;She had been complaining about how slow her desktop had been for years&lt;/strong&gt;. Every year we all put money together to update something electronic for her. One year it was a camera, then she lost that camera (lol) so we got her another the next year. Then it was a Bluray player. The computer had been on the list for years.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;In my family and circle’s I am the “go to person” to fix computer or technology related problems. I never gave my self that title but unfortunately for me I’m stuck with it.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;I don’t know about you but I can’t count how many times I’ve been asked to “fix”, “speed up”, or “I think I might have a virus, my computer is so slow can you take a look at it”. &lt;strong&gt;What I have found over the years is that almost always there isn’t a virus. The fix for all of those problems more times than not is you need a new machine. Your Sh** is old&lt;/strong&gt;. And honestly I just grew tired of getting this from so many “tech illiterate” people.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Windows (I can’t speak for Mac) is a pain to maintain. There are a lot of people who would say otherwise but unless you find that sort of thing easy, it just is.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;So with all that (hopefully funny backstory) said I wanted to get my mother in law a Chrome device. And like I said we got the Asus Chromebox.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Let me tell you, it is by far my mother in laws favorite device we ever got her.&lt;/strong&gt; We got it off of Amazon on black Friday. &lt;strong&gt;We paid $119.99&lt;/strong&gt; US and I bought an extra stick of ram from corsair I believe. That would upgrade the ram from 2gb to 4gb.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;She no longer has a slow computer. It boots up in less than 10 seconds. Everything is saved and synced. No windows updates. No fragmented hard drives. No virus/malware. She can still play solitare via a chrome store app. It plays video’s great when she sees them while looking at her facebook. The browser doesn’t lag and isn’t slow. ChomeOS updates automatically and is seamless. I know a lot of people that had their windows machines freeze while on a windows update. Essentially making their computer a brick, until someone like me comes and fixes it for them. If ChromeOS ever gets into trouble, it is as simple as doing a “powerwash” which is basically a factory reset and everything goes back to new. But since everything in ChromeOS is synced, as soon as you log back in everything is restored just how it was.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;Chromebooks/boxes come with at least 100gb of online storage and Drive is “mounted” in chromeOS it’s self so it acts just like if it were a hard drive in the computer. ChromeOS is incredibly simple. There aren’t a lot of options menus. You can’t get lost in the OS.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;ChromeOS I would argue is amazing for tech illiterate people&lt;/strong&gt;. I’m far from tech illiterate but ChromeOS has been an absolute breath of fresh air for me as well! There really isn’t much of a learning curve, outside of understanding how to install/remove a chrome app or extension.&lt;/p&gt;

  &lt;p&gt;There are, however, some take-aways. For one you can not install any software like you would on windows or mac. There is one program my mother in law uses and I have found no way of a work around for her and the chromebox. Skype is not available right out of the box for ChromeOS. There is a a work around but requires using a program to convert the Android Version to work in ChromeOS.&lt;/p&gt;

  &lt;p&gt;I have lots more I could say, but I’m getting the evil eye from the wife, time to get off of Reddit!&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;I can’t recommend a Chromebook/Box more, especially for non tech folks. And is wonderful for us who have to run tech support. Makes our job so much easier! I tell people to first examine their primary needs and research if they can be met with ChromeOS, before buying. Understand it’s limitations. If you go into it knowing exactly what you are getting, then it is a wonderful experience.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I was hooked. I want a Chromebook for my mother-in-law! $120? I would have bought that &lt;em&gt;yesterday&lt;/em&gt; if I knew exactly what to do and how long it would take to setup.&lt;/p&gt;

&lt;p&gt;I’d have spent another $120 on a guide that gave me exactly what I needed, super-custom to my exact use-case and background. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:chefs-kiss:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I want (and will therefore create) a Runbook to figure out what Chromebook to get her, set it up for her, and help her be successful with it. This can easily take many hours. I want my effort to be helpful to you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It won’t be quite as straight forward as a bash script - think of it as a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Runbook for Humans&lt;/code&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Later that day, here’s what happened:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-07-21-write-it-now.jpg&quot; alt=&quot;write it now&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;source: &lt;a href=&quot;https://twitter.com/sarahdoingthing/status/889082755203518464?s=20&quot;&gt;@sarahdoingthing&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, I’ve got a lot of the questions I’ll need answered jotted down, and I wanna see if there’s any interest in buying a guide like this. Would it be worth $10 to you? $100? $1000?&lt;/p&gt;

&lt;p&gt;In the pole, someone expressed it might be worth as much as $2000, so I am including that option below.&lt;/p&gt;

&lt;p&gt;Maybe it’s worth $1000 but you don’t even have $5 to spend to acquire the guide. Whatever I end up creating, I’ll make available to you.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Here’s the current planned detail of the guide, as it exists in my head right now:&lt;/p&gt;

&lt;h3 id=&quot;questions-ill-answer&quot;&gt;Questions I’ll answer&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;When I recognized it was the right time to actually take action&lt;/li&gt;
  &lt;li&gt;How I phrased the pain-points so she would agree that it was a problem&lt;/li&gt;
  &lt;li&gt;How I used the time I spent debugging her problems convincing her that she should use a different type of laptop&lt;/li&gt;
  &lt;li&gt;what actual machine to buy&lt;/li&gt;
  &lt;li&gt;how to set up an account for your parent&lt;/li&gt;
  &lt;li&gt;how to handle them using a non-gmail account (I assume this is a requirement)&lt;/li&gt;
  &lt;li&gt;how to take remote access of the machine and accomplish tasks yourself. (This beats your mother-in-law emailing you cell phone pictures.)&lt;/li&gt;
  &lt;li&gt;her reactions and first-run experience with my documented process&lt;/li&gt;
  &lt;li&gt;how I tweak my plans based on her responses&lt;/li&gt;
  &lt;li&gt;how to use all of this information to aid your own parents through a similar process&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;the-benefits-you-will-receive-from-this-guide&quot;&gt;The benefits you will receive from this guide&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Help your parent(s) feel a sense of dignity and control through this process, even though it might feel like it’s displacing an important, familiar thing needlessly&lt;/li&gt;
  &lt;li&gt;Remove a point of frustration that might be emotionally charged, thanks to issues related to maintaining competence and control over one’s affairs. (I suspect I’ll be looking for a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;step-by-step guide to helping your aging parents stop driving&lt;/code&gt; soon)&lt;/li&gt;
  &lt;li&gt;how to help your parent(s) use as much Gmail as they have to, while most likely using their primary email address with an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AOL&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yahoo&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;comcast&lt;/code&gt; email account. (and they get tons of spam in it :eyeroll: )&lt;/li&gt;
  &lt;li&gt;How to handle a password manager with them. Use or don’t use Chrome/Firefox password tools?&lt;/li&gt;
  &lt;li&gt;Oh, 1Password? If you use 1Password, and have your parent’s credentials in a 1Password vault that is shared with your siblings and/or in-laws, but you’re the one who manages that account, what should you do?&lt;/li&gt;
  &lt;li&gt;the above presumes that you came to have your parent’s credentials &lt;em&gt;at their request&lt;/em&gt;, of course.&lt;/li&gt;
  &lt;li&gt;once it’s set up, can it be easy enough to set up that they can unbox it themselves?&lt;/li&gt;
  &lt;li&gt;how much does it cost to ship a laptop through the mail, anyway? Is it safe? Legal?&lt;/li&gt;
  &lt;li&gt;Is it &lt;em&gt;actually&lt;/em&gt; possible to “easily” “remote in” and “fix things” for your parents? The reader might be skeptical of how “easy and simple” software often is, and is curious to know exactly what to expect.&lt;/li&gt;
  &lt;li&gt;An example to point to, when convincing your parent to take the plunge.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;Look, this guide is from this guy on the internet that did &lt;em&gt;this exact same thing with his mother-in-law who was similar to you because {reasons}&lt;/em&gt;, and look at this quote here where she says how thankful is she did this thing:&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;Hi, I’m Barb, and since I switched to this chromebook thing I spend 20 extra minuts a day facetiming with my grandkids! I love that!&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;the-un-faq&quot;&gt;The un-faq&lt;/h2&gt;

&lt;p&gt;These are &lt;em&gt;diqualifying&lt;/em&gt; conditions. Do not purchase this guide if:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Your parents are familiar with the Apple ecosystem, because I have always used Android and MacOS, don’t have an iPad or an iPhone. I feel strongly inclined to do MacOS.&lt;/li&gt;
  &lt;li&gt;You don’t want to use a Chromebook or learn a Windows operating system&lt;/li&gt;
  &lt;li&gt;You expect a perfectly-polished, high-production-value product&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;The poll got some answers, so I’m tossing up real-live purchase buttons to guage interest at your level of buy-in&lt;/p&gt;

&lt;h2 id=&quot;purchase-options&quot;&gt;Purchase Options&lt;/h2&gt;

&lt;p&gt;In the twitter poll, I gave options from $0 to $2000, so giving all those options below. For the record, this is &lt;em&gt;prepurchasing&lt;/em&gt; options. I’ve not built anything yet, other than some notes floating around my laptop. I use “someone put money down” as an expression of strong interest.&lt;/p&gt;

&lt;h3 id=&quot;1-money-is-no-object-1900&quot;&gt;1. Money Is No Object ($1900)&lt;/h3&gt;

&lt;p&gt;You want an excellent runbook and value your time.&lt;/p&gt;

&lt;div class=&quot;stripe_button_container&quot;&gt;
  &lt;div class=&quot;button_container&quot;&gt;
    &lt;button class=&quot;stripe_button&quot; style=&quot;background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em&quot; id=&quot;checkout-button-sku_Hlof76lIQGPrOW&quot; role=&quot;link&quot; type=&quot;button&quot;&gt;
      Pre-purchase ($1900)
    &lt;/button&gt;

    &lt;div id=&quot;error-message&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&quot;2-meaningful-money-but-if-it-saves-you-5-25-hours-and-hard-feelings-and-frustration-youre-all-in-495&quot;&gt;2. Meaningful money, but if it saves you 5-25 hours and hard feelings and frustration, You’re All In ($495)&lt;/h3&gt;

&lt;p&gt;You’d be spending one or two days of income to have a bullet-proof solution to upgrading your aging parent’s laptops. The story from Reddit had you nodding along hard. &lt;em&gt;This is exactly what you experience and want&lt;/em&gt;. But five years ago? What hardware do I need now? Can I dual-boot the operating system? How do I actually convince him/her/them to start using it?&lt;/p&gt;

&lt;div class=&quot;stripe_button_container&quot;&gt;
  &lt;div class=&quot;button_container&quot;&gt;
    &lt;button class=&quot;stripe_button&quot; style=&quot;background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em&quot; id=&quot;checkout-button-sku_HlotwPoptCsYBY&quot; role=&quot;link&quot; type=&quot;button&quot;&gt;
      Pre-purchase ($495)
    &lt;/button&gt;

    &lt;div id=&quot;error-message&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&quot;3-you-expect-non-trivial-value-from-this-guide-99&quot;&gt;3. You expect non-trivial value from this guide ($99)&lt;/h3&gt;

&lt;p&gt;You probably have spent at least $99 on something that will deliver much less value to you than this guide will.&lt;/p&gt;

&lt;p&gt;If that’s true, but this is not at $495 or $1900 problem to you, this would be your best bet.&lt;/p&gt;

&lt;p&gt;Low cost, you’ll get whatever I create. It’s a cheap gamble that $99 could save you from “donating” many thousands of dollars over the next six months.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;20 (scarce, non-work, nights-and-weekend) hours @$100/hr = $2000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;stripe_button_container&quot;&gt;
  &lt;div class=&quot;button_container&quot;&gt;
    &lt;button class=&quot;stripe_button&quot; style=&quot;background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em&quot; id=&quot;checkout-button-sku_HloZ1DXv53t7fT&quot; role=&quot;link&quot; type=&quot;button&quot;&gt;
      Pre-purchase ($99)
    &lt;/button&gt;

    &lt;div id=&quot;error-message&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&quot;4-what-you-might-spend-on-dinner-with-a-friend-49&quot;&gt;4. What You Might Spend on Dinner with a Friend ($49)&lt;/h3&gt;

&lt;p&gt;If you think you’d spend $20 but not $50, this guide might not be for you. It will be so good that $50 will be a screaming deal.&lt;/p&gt;

&lt;div class=&quot;stripe_button_container&quot;&gt;
  &lt;div class=&quot;button_container&quot;&gt;
    &lt;button class=&quot;stripe_button&quot; style=&quot;background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em&quot; id=&quot;checkout-button-sku_Hloz9JPn2QkUAQ&quot; role=&quot;link&quot; type=&quot;button&quot;&gt;
      Pre-purchase ($49)
    &lt;/button&gt;

    &lt;div id=&quot;error-message&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&quot;5-send-you-the-guide-when-im-done-0&quot;&gt;5. Send You The Guide When I’m Done ($0)&lt;/h3&gt;

&lt;p&gt;If you just want to follow along, or are on the fence about the value of what I’ll make, punch your email in below.&lt;/p&gt;

&lt;p&gt;I’ll end up writing my process up carefully, and I’ll certainly share it out when I’m done. I am good at writing detailed guides that save people dozens of hours and large amounts of frustration. I’ll share the guide when I’m done, and I’ll send updates as I go. I love to work in public; if you subscribe and follow along, you’ll get to see what I’m building as I go, and I’d love to get your input along the way.&lt;/p&gt;

&lt;p&gt;And if down the road you decide it’s worth paying for, you’ll have the option.&lt;/p&gt;

&lt;p&gt;Enter your email, and you’ll get all that when it’s available:&lt;/p&gt;

&lt;script async=&quot;&quot; data-uid=&quot;79563b40c7&quot; src=&quot;https://josh-thompson.ck.page/79563b40c7/index.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;&lt;em&gt;if you don’t see the subscribe form above, &lt;a href=&quot;https://josh-thompson.ck.page/79563b40c7&quot;&gt;click here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;faq&quot;&gt;FAQ&lt;/h2&gt;

&lt;p&gt;If your question isn’t asked, shoot me a note at &lt;a href=&quot;https://twitter.com/josh_works&quot;&gt;@josh_works&lt;/a&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;joshthompson@hey.com&lt;/code&gt;. I’ll answer it and update this list.&lt;/p&gt;

&lt;h3 id=&quot;what-all-is-included&quot;&gt;What all is included&lt;/h3&gt;

&lt;p&gt;A runbook for technical people who help their non-technical aging parents/family/friends with their technology problems.&lt;/p&gt;

&lt;p&gt;Specifically, writing up how to help the following persona:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A 70 mother-in-law with good relationships with her kids/grandkids&lt;/li&gt;
  &lt;li&gt;extremely resistant to change&lt;/li&gt;
  &lt;li&gt;feels bad needing constant help from her family&lt;/li&gt;
  &lt;li&gt;the tech trouble reminds her that her husband died recently and she misses him&lt;/li&gt;
  &lt;li&gt;on good terms with the person using this runbook (you!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This runbook will rely on building/deepening trust between you and the recipient, and that requires having something to build on. I’m sure it’ll be helpful even if the relationship is poor, but I wanted to mention it.&lt;/p&gt;

&lt;p&gt;A detailed guide with links to the exact product, tools, services that I use&lt;/p&gt;

&lt;p&gt;Lots of perspecive of how this is landing with my mother-in-law&lt;/p&gt;

&lt;p&gt;etc.&lt;/p&gt;

&lt;p&gt;Might do video walk-throughs. &lt;a href=&quot;https://josh.works/mythical-creature-refactor-ogre&quot;&gt;Here’s an example of how I do these&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;what-if-you-want-your-money-back&quot;&gt;What if you want your money back&lt;/h3&gt;

&lt;p&gt;Then I 100% wanna give it to you. Just let me know and I’ll send it right back, all fees included, between now and forever.&lt;/p&gt;

&lt;h3 id=&quot;you-might-want-the-100-or-500-or-2000-verison-but-dont-know-whichif-any-yet&quot;&gt;You might want the $100, or $500, or $2000 verison, but don’t know which/if-any yet&lt;/h3&gt;

&lt;p&gt;Yeah, totally get it. I’d say pop your email address into the $0 form, and reply to one of the emails when you feel so inclined.&lt;/p&gt;

&lt;h3 id=&quot;you-have-other-questions-id-like-to-ask-you&quot;&gt;You have other questions I’d like to ask you&lt;/h3&gt;

&lt;p&gt;Great! Pop your email in below; the very first email you’ll get asks:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’d really love to know what prompted your interest. Are you going through something similar right now? Do you think you might be doing something like this soon? Any advice or words of caution that you’d share?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;script async=&quot;&quot; data-uid=&quot;79563b40c7&quot; src=&quot;https://josh-thompson.ck.page/79563b40c7/index.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;&lt;em&gt;if you cannot see the email collection form above, you will have to turn off your JavaScript blocker or &lt;a href=&quot;https://josh-thompson.ck.page/79563b40c7&quot;&gt;visit this page&lt;/a&gt; to submit an email address&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;feel free to reach out at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;joshthompson@hey.com&lt;/code&gt; if you’ve got questions&lt;/em&gt;&lt;/p&gt;

&lt;script src=&quot;https://js.stripe.com/v3&quot;&gt;&lt;/script&gt;

&lt;script&gt;
(function() {
  var stripe = Stripe(&apos;pk_live_sPYviTcMAWXUxiZKnVtA1zW300d6I1ltcW&apos;);

  var checkoutButton = document.getElementById(&apos;checkout-button-sku_Hloz9JPn2QkUAQ&apos;);
  checkoutButton.addEventListener(&apos;click&apos;, function () {
    stripe.redirectToCheckout({
      lineItems: [{price: &apos;sku_Hloz9JPn2QkUAQ&apos;, quantity: 1}],
      mode: &apos;payment&apos;,
      
      successUrl: window.location.protocol + &apos;//josh.works/success&apos;,
      cancelUrl: window.location.protocol + &apos;//josh.works/canceled&apos;,
    })
    .then(function (result) {
      if (result.error) {
        // If `redirectToCheckout` fails due to a browser or network
        // error, display the localized error message to your customer.
        var displayError = document.getElementById(&apos;error-message&apos;);
        displayError.textContent = result.error.message;
      }
    });
  });
})();

(function() {
  var stripe = Stripe(&apos;pk_live_sPYviTcMAWXUxiZKnVtA1zW300d6I1ltcW&apos;);

  var checkoutButton = document.getElementById(&apos;checkout-button-sku_HloZ1DXv53t7fT&apos;);
  checkoutButton.addEventListener(&apos;click&apos;, function () {
    stripe.redirectToCheckout({
      lineItems: [{price: &apos;sku_HloZ1DXv53t7fT&apos;, quantity: 1}],
      mode: &apos;payment&apos;,
      successUrl: window.location.protocol + &apos;//josh.works/success&apos;,
      cancelUrl: window.location.protocol + &apos;//josh.works/canceled&apos;,
    })
    .then(function (result) {
      if (result.error) {
        // If `redirectToCheckout` fails due to a browser or network
        // error, display the localized error message to your customer.
        var displayError = document.getElementById(&apos;error-message&apos;);
        displayError.textContent = result.error.message;
      }
    });
  });
})();

(function() {
  var stripe = Stripe(&apos;pk_live_sPYviTcMAWXUxiZKnVtA1zW300d6I1ltcW&apos;);

  var checkoutButton = document.getElementById(&apos;checkout-button-sku_HlotwPoptCsYBY&apos;);
  checkoutButton.addEventListener(&apos;click&apos;, function () {
    stripe.redirectToCheckout({
      lineItems: [{price: &apos;sku_HlotwPoptCsYBY&apos;, quantity: 1}],
      mode: &apos;payment&apos;,
      successUrl: window.location.protocol + &apos;//josh.works/success&apos;,
      cancelUrl: window.location.protocol + &apos;//josh.works/canceled&apos;,
    })
    .then(function (result) {
      if (result.error) {
        var displayError = document.getElementById(&apos;error-message&apos;);
        displayError.textContent = result.error.message;
      }
    });
  });
})();

(function() {
  var stripe = Stripe(&apos;pk_live_sPYviTcMAWXUxiZKnVtA1zW300d6I1ltcW&apos;);

  var checkoutButton = document.getElementById(&apos;checkout-button-sku_Hlof76lIQGPrOW&apos;);
  checkoutButton.addEventListener(&apos;click&apos;, function () {
    // When the customer clicks on the button, redirect
    // them to Checkout.
    stripe.redirectToCheckout({
      lineItems: [{price: &apos;sku_Hlof76lIQGPrOW&apos;, quantity: 1}],
      mode: &apos;payment&apos;,
      // Do not rely on the redirect to the successUrl for fulfilling
      // purchases, customers may not always reach the success_url after
      // a successful payment.
      // Instead use one of the strategies described in
      // https://stripe.com/docs/payments/checkout/fulfillment
      successUrl: window.location.protocol + &apos;//josh.works/success&apos;,
      cancelUrl: window.location.protocol + &apos;//josh.works/canceled&apos;,
    })
    .then(function (result) {
      if (result.error) {
        // If `redirectToCheckout` fails due to a browser or network
        // error, display the localized error message to your customer.
        var displayError = document.getElementById(&apos;error-message&apos;);
        displayError.textContent = result.error.message;
      }
    });
  });
})();
&lt;/script&gt;

</content>
 </entry>
 
 <entry>
   <title>`Medusa` mythical creature: part 1</title>
   <link href="https://josh.works/mythical-creature-medusa-start"/>
   <updated>2020-07-20T13:00:00+00:00</updated>
   <id>https://josh.works/medusa-start</id>
   <content type="html">&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;Wow. I made parts 1 and 2 of this video months ago, forgot to make them findable.&lt;/p&gt;

&lt;h2 id=&quot;turings-mythical-creatures-medusa&quot;&gt;Turing’s Mythical Creatures: Medusa&lt;/h2&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/hzFW_BRdHLY&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;When you’re done, check out &lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;part 2&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>`Medusa` mythical creature: part 2</title>
   <link href="https://josh.works/mythical-creature-refactor-medusa"/>
   <updated>2020-07-20T13:00:00+00:00</updated>
   <id>https://josh.works/medusa-refactor</id>
   <content type="html">&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;Wow. I made this video months ago, forgot to make it findable.&lt;/p&gt;

&lt;h2 id=&quot;turings-mythical-creatures-medusa-refactor&quot;&gt;Turing’s Mythical Creatures: Medusa refactor&lt;/h2&gt;

&lt;p&gt;Watch/read &lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;part 1&lt;/a&gt; if you’ve not already:&lt;/p&gt;

&lt;p&gt;Here’s a walk-through for strategies and tactics to refactor the mythical creature we built last time. The refactored code is much improved, and your own understanding of your own code will be much improved as well.&lt;/p&gt;

&lt;p&gt;Part 2 is a 14 minute video, contains a &lt;em&gt;lot&lt;/em&gt; of information. Block out 30-40 minutes to work through it.&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/RziKZL0pLfc&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>2019 Annual Review</title>
   <link href="https://josh.works/2019-review"/>
   <updated>2020-01-31T13:00:00+00:00</updated>
   <id>https://josh.works/2019-annual-review</id>
   <content type="html">&lt;p&gt;It’s that time of the year. I always really enjoy reading other people’s annual reviews, and I find value in writing my own.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Previous reviews: &lt;a href=&quot;/2018-review&quot;&gt;2018&lt;/a&gt;, &lt;a href=&quot;/2017-review&quot;&gt;2017&lt;/a&gt;, 
&lt;a href=&quot;/2016-most-dangerous-books&quot;&gt;2016&lt;/a&gt;, &lt;a href=&quot;/2015_the_year_i_didnt_think_much&quot;&gt;2015&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My review breaks down into a few broad categories:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Travel&lt;/li&gt;
  &lt;li&gt;Relationships &amp;amp; Community&lt;/li&gt;
  &lt;li&gt;Leadville Trail Marathon&lt;/li&gt;
  &lt;li&gt;Climbing&lt;/li&gt;
  &lt;li&gt;Software Development&lt;/li&gt;
  &lt;li&gt;Reading&lt;/li&gt;
  &lt;li&gt;Projects&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;travel&quot;&gt;Travel&lt;/h2&gt;

&lt;p&gt;Last year, Kristi and I said we wanted to travel “less” in 2019 than we did in 2018. I spent 113 nights away from Golden in 2019, or, in total, three months and three weeks. About 25% of that time was on climbing trips, the rest of it was travel for time with family and friends, or “regular” non-climbing travel, or work travel.&lt;/p&gt;

&lt;p&gt;As far as the climbing trips, I got to &lt;a href=&quot;/climbing-in-cuba-2019&quot;&gt;climb in Cuba&lt;/a&gt;, &lt;a href=&quot;https://teamthompsontravels.tumblr.com/post/189273777538/kalymnos-greece-we-met-climbers-from-all-around&quot;&gt;Kalymnos, Greece&lt;/a&gt;, and did a fair bit of climbing within the USA.&lt;/p&gt;

&lt;p&gt;It’s the height of privilege and opportunity to travel this much, and it was about 25% less than we travelled last year. I will &lt;em&gt;still&lt;/em&gt; travel less in 2020, and I’d like a much higher percentage of that travel to be climbing trips.&lt;/p&gt;

&lt;p&gt;I’m starting this post in an airport. Maybe next year I’ll be doing it at home?&lt;/p&gt;

&lt;h2 id=&quot;relationships--community&quot;&gt;Relationships &amp;amp; Community&lt;/h2&gt;

&lt;p&gt;I care deeply for Kristi, wife, and she cares deeply for me.&lt;/p&gt;

&lt;p&gt;She and I know that anything that contributes to our individual flourishing contributes to the health of our relationship, and a healthy relationship likewise contributes to individual flourishing.&lt;/p&gt;

&lt;p&gt;We still love marriage counseling, and individual counseling. I mention this counseling regularly in conversation with others, with a goal of normalizing &lt;em&gt;seeking professional help for important things&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If you agree that a professional of any domain would be well-off seeking improvement in their craft, even to the point of getting 1:1 coaching, you should agree that pursuing marriage counseling, regularly, is healthy.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Despite how much Kristi and I were traveling away from Golden, we felt more connected and “plugged in” to a local community. This is a rich and wonderful thing, and its one I want to explore in great depth going forward.&lt;/p&gt;

&lt;h2 id=&quot;leadville-trail-marathon&quot;&gt;Leadville Trail Marathon&lt;/h2&gt;

&lt;p&gt;From late 2018 through mid-2019, I trained for the Leadville Trail Marathon. It’s supposedly one of the harder marathons out there, because it’s at such high elevation. It starts at 10,000+ feet and gets as high as 13,000+ ft.&lt;/p&gt;

&lt;p&gt;How one does on a race like a marathon is largely reflective of how well one prepared for it. I didn’t have audacious goals in running it. My goal was no higher than:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Don’t embarrass myself&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/samlandfried&quot;&gt;Sam Landfried&lt;/a&gt; was my eternally encouraging and kind running partner. We ran many of our weekly long runs together, and quite a few of the short mid-week runs.&lt;/p&gt;

&lt;p&gt;I would not have completed the training and the race without him.&lt;/p&gt;

&lt;p&gt;More than a few Saturdays began with a drive into the mountains to run 15-20 miles at elevation.&lt;/p&gt;

&lt;p&gt;Sometimes we were on the road, sometimes we were post-holing through thigh-deep snow.&lt;/p&gt;

&lt;p&gt;On the race day itself, there were a few times that he could easily have left me in the dust and run ahead (and consequently achieved a faster time) but he kindly stuck with me.&lt;/p&gt;

&lt;p&gt;We finished right at the 50th percentile for all finishers of the 2019 Leadville Trail Marathon. My goal was to finish above the bottom 25%, so this was a success.&lt;/p&gt;

&lt;p&gt;I’m thankful I had the opportunity to train and run with him.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-02-01-sam-josh-leadville.jpg&quot; style=&quot;width:60%;&quot; /&gt;
&lt;em&gt;Sam and I, somewhere in the latter half of the marathon.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;climbing&quot;&gt;Climbing&lt;/h2&gt;

&lt;p&gt;The &lt;em&gt;downside&lt;/em&gt; of training for and running a marathon is that time spent training has to come from something. For me, the time came from climbing.&lt;/p&gt;

&lt;p&gt;My climbing training in the spring and early summer took at hit, since I was training for Leadville. Between that and a very busy year with lots of travel, I didn’t accomplish any of my climbing and training goals, or even spend that much time outside.&lt;/p&gt;

&lt;p&gt;This all said, I did have some wins:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;I did more than a few 5.12d’s in a day&lt;/li&gt;
  &lt;li&gt;I felt confident on 5.12 in general; onsighted/flashed most 12 minuses&lt;/li&gt;
  &lt;li&gt;I hopped on more 5.13s, including a 5.13c in Rifle. I could pretty casually do all the moves on my first attempt (though, of course, weighted the rope dozens of times). Feels projectable, and I’d be very excited to send it in 2020.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C&lt;/p&gt;
&lt;h2 id=&quot;software-development&quot;&gt;Software Development&lt;/h2&gt;

&lt;p&gt;I met my goal of last year to give two talks at meetups. I &lt;a href=&quot;http://localhost:4000/lessons-learned-from-giving-technical-talks&quot;&gt;captured some lessons here&lt;/a&gt; and both talks went quite well.&lt;/p&gt;

&lt;p&gt;I’m now into my second year as a software developer, and I’ve learned a lot, and I look forward to the third year.&lt;/p&gt;

&lt;p&gt;Most of my writing on this website over the last year haCs been about software development, but at the tactical level; recapping lessons learned and ideas I may want to make easy to find later.&lt;/p&gt;

&lt;h2 id=&quot;reading&quot;&gt;Reading&lt;/h2&gt;

&lt;p&gt;I read 77 books. Here’s &lt;a href=&quot;https://www.goodreads.com/user/year_in_books/2019/27372191&quot;&gt;my year in books&lt;/a&gt; from GoodReads.&lt;/p&gt;

&lt;p&gt;Noteworthy reads:&lt;/p&gt;

&lt;h4 id=&quot;the-revolt-of-the-public-and-the-crisis-of-authority&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/22451908-the-revolt-of-the-public-and-the-crisis-of-authority&quot;&gt;The Revolt of the Public and the Crisis of Authority&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;Paints the current trends in the political sphere as one of the public rejecting the authority of the political elites.&lt;/p&gt;

&lt;h4 id=&quot;worth-the-candle&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/36146179-worth-the-candle&quot;&gt;Worth the Candle&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;A modest 2500 ebook of the “rationalist fiction” genre. I didn’t realize that rationalist fiction was a thing, but I enjoyed it.&lt;/p&gt;

&lt;h4 id=&quot;harry-potter-and-the-methods-of-rationality&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/10016013-harry-potter-and-the-methods-of-rationality&quot;&gt;Harry Potter and the Methods of Rationality&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;More rationalist fiction (also very long, available online for free). It was delightful.&lt;/p&gt;

&lt;h4 id=&quot;resident-aliens-life-in-the-christian-colony&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/145076.Resident_Aliens&quot;&gt;Resident Aliens: Life in the Christian Colony&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;The authors helped me rationalize my faith and my utter disgust with most of the dominant “christian” organizations and groups in the USA. Here’s a pragraph of &lt;a href=&quot;https://www.goodreads.com/review/show/2320346336?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;a review&lt;/a&gt; of this book on Goodreads:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;One of the most powerful and pertinent messages this book offers is its depiction of a church narrative enslaved to the doctrines of democracy and consumerism.&lt;/p&gt;

  &lt;p&gt;It paints both liberals and conservatives as two sides of the same coin, both looking to the government and her articulation of freedom, human rights, power, peace, and prosperity as method and mode of salvation.&lt;/p&gt;

  &lt;p&gt;They cite Yoder’s paradigm: The “activist” church desires to transform the world in a way that makes God and Christ unimportant and unnecessary, and the “conversionist” church is selfishly consumed with an individualistic saving of souls. Both are subjugated to the almighty nation-state and consumed by its heretical perspectives.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4 id=&quot;order-without-design-how-markets-shape-cities&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design&quot;&gt;Order Without Design: How Markets Shape Cities&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;One of the more potent books I’ve ever read. I’ve got a much longer review coming soon, and I am re-reading it right now.&lt;/p&gt;

&lt;p&gt;This book is likely to have a lasting impression on the trajectory of my life.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.planetizen.com/blogs/103583-order-without-design-pro-housing-pro-infrastructure&quot;&gt;Here’s a long-but-good review&lt;/a&gt;&lt;/p&gt;

&lt;h4 id=&quot;the-third-pillar-how-markets-and-the-state-leave-the-community-behind&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40594595-the-third-pillar&quot;&gt;The Third Pillar: How Markets and the State Leave the Community Behind&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;The state (and markets) are crushing community. All the “stuff” of our life happens in this “community” that we live in.&lt;/p&gt;

&lt;p&gt;It’s risky that states are unable to perceive it’s existence, and we’re all impoverished by this state of affairs.&lt;/p&gt;

&lt;h4 id=&quot;wait-but-why-the-story-of-us&quot;&gt;&lt;a href=&quot;https://waitbutwhy.com/2019/08/story-of-us.html&quot;&gt;Wait But Why: The Story of Us&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;This isn’t a book - it’s a series of very long articles illustrated with stick figures and graphs. It is &lt;em&gt;incredible&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;From the introduction:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;As a writer and a generally thinky person, I’ve spent a lot of my life thinking about the society I live in, and societies in general. I’ve always imagined society as a kind of giant human—a living organism like each of us, only much bigger.&lt;/p&gt;

  &lt;p&gt;When you’re a single cell in the body of a giant, it’s hard to understand what the giant’s doing, or why it is the way it is, because you can’t really zoom out and look at the whole thing all at once. But we do our best.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s very worth the click. Go on. Click &lt;a href=&quot;https://waitbutwhy.com/2019/08/story-intro.html&quot;&gt;right here&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I might do a longer book review (or thoughts on the books I read) another time.&lt;/p&gt;

&lt;h3 id=&quot;things-im-thinking-about-for-2020&quot;&gt;Things I’m thinking about for 2020&lt;/h3&gt;

&lt;p&gt;I taught a six-week Bible study on the book of Titus for my church. Learned a lot from it, and enjoyed the experience. Rumor has it others considered it to be “not a total waste of time”. I’d like to do this again.&lt;/p&gt;

&lt;p&gt;I’ve been pretty involved with helping mentor Turing students (and non-Turing students) who are breaking into the software development industry. Time spent in this domain is some of the most rewarding things I’ve undertaken this year, and I’d like to double down on that&lt;/p&gt;

&lt;p&gt;I don’t do goals so much as trying to build the right habits. If I can lay a good set of habits, then the ‘accomplishments’ take care of themselves.&lt;/p&gt;

&lt;p&gt;So, I’m working to build habits around writing, software development, teaching, rock climbing, and the intersection of all of the above.&lt;/p&gt;

&lt;p&gt;I’ve got far more on my mind, and we’ll see how 2020 plays out.&lt;/p&gt;

&lt;h3 id=&quot;other-peoples-annual-reviews&quot;&gt;Other people’s annual reviews&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.mrmoneymustache.com/2019/12/28/let-the-roaring-2020s-begin/&quot;&gt;Let the Roaring 2020s Begin (Mr. Money Mustache)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://jvns.ca/blog/2019-year-in-review/&quot;&gt;2019: Year in review (Julia Evans)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://danwang.co/2019-letter/&quot;&gt;2019 Letter (Dan Wang)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://robertheaton.com/2020/01/01/2019-review/&quot;&gt;2019 review (Robert Heaton)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Refactoring practice: Get rid of `attr_accessors` in `ogre.rb` in 2 minutes</title>
   <link href="https://josh.works/mythical-creature-refactor-ogre"/>
   <updated>2020-01-27T13:00:00+00:00</updated>
   <id>https://josh.works/mythical-creatures-refactor-ogre-no-more-attr-accessor</id>
   <content type="html">&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;More refactoring practice!&lt;/p&gt;

&lt;p&gt;I was reading &lt;a href=&quot;https://www.amazon.com/Practical-Object-Oriented-Design-Ruby-Addison-Wesley/dp/0321721330&quot;&gt;Practical Object Oriented Design in Ruby&lt;/a&gt;, and then was looking at a Turing student’s work on the &lt;a href=&quot;https://github.com/turingschool/ruby-exercises/blob/master/mythical-creatures/test/ogre_test.rb&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre&lt;/code&gt; mythical creature&lt;/a&gt; when I realized this was a perfect chance to explain a little about some principles of Object-Oriented Design.&lt;/p&gt;

&lt;p&gt;Here’s a quick &lt;strong&gt;TWO MINUTE&lt;/strong&gt; walk-through:&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/Z_e7p8cDF1Q&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;!--more--&gt;

&lt;p&gt;Here’s the code we’re starting with:&lt;/p&gt;

&lt;div class=&quot;language-rb highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Ogre&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:home&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:swings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:encounter_counter&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;home&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Swamp&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@home&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;home&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@swings&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;encounter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;notices_ogre?&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;swing_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;swing_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@swings&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;apologize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@swings&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Human&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_accessor&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:encounter_counter&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:name&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Jane&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;notices_ogre?&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;knocked_out?&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;
    &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;All tests pass.&lt;/p&gt;

&lt;p&gt;I made changes to any time the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ogre&lt;/code&gt; class changed the “internal state” of another object (aka the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Human&lt;/code&gt; class)&lt;/p&gt;

&lt;p&gt;Copy-paste the code into your editor, and make the changes yourself!&lt;/p&gt;

&lt;p&gt;The finished refactored version:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;update: 👏 to &lt;a href=&quot;https://github.com/gabichuelas&quot;&gt;Gaby Mendez&lt;/a&gt; for catching an error I made in the refactored code!&lt;/em&gt;&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Ogre&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:home&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:swings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:encounter_counter&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;home&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Swamp&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@home&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;home&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@swings&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;encounter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;increment_encounters&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;notices_ogre?&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;swing_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;swing_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@swings&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# Gaby pointed out that the human needed to actually get knocked unconscious&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# at a certain point. Duh! I added this line in response:&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;knock_unconscious&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;swings&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;apologize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# Gaby pointed out an error, so in fixing it I am deviating from the &lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# finished code in the video walkthrough. &lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;human&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;revive&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@swings&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Human&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:encounter_counter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:knocked_out&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Jane&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@knocked_out&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;increment_encounters&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;revive&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@knocked_out&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;knock_unconscious&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@knocked_out&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;notices_ogre?&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;encounter_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;knocked_out?&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# updated this a bit too. Sorry for the confusion!!!!!&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;knocked_out&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index-1&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

</content>
 </entry>
 
 <entry>
   <title>Mythical Creatures: Refactoring wizard.rb</title>
   <link href="https://josh.works/mythical-creature-refactor-wizard"/>
   <updated>2020-01-25T13:00:00+00:00</updated>
   <id>https://josh.works/mythical-creature-refactor-wizard</id>
   <content type="html">&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;Today we’re refactoring some code.&lt;/p&gt;

&lt;p&gt;I find it &lt;em&gt;extremely&lt;/em&gt; fruitful when others look over my code and help me clean it up. Quite a few Turing students have told me that the process of refactoring their own code with the help of someone who knows a bit more than them has been super helpful.&lt;/p&gt;

&lt;p&gt;This is an exercise from Turing School’s &lt;a href=&quot;https://github.com/turingschool/ruby-exercises&quot;&gt;ruby-exercises&lt;/a&gt; repository.&lt;/p&gt;

&lt;p&gt;Specifically, we’re refactoring a solution that makes &lt;a href=&quot;https://github.com/turingschool/ruby-exercises/blob/master/mythical-creatures/test/wizard_test.rb&quot;&gt;this test&lt;/a&gt; pass.&lt;/p&gt;

&lt;h2 id=&quot;how-to-get-the-maximum-value-from-this-exercise&quot;&gt;How to get the maximum value from this exercise&lt;/h2&gt;

&lt;p&gt;So far, I’ve found it most helpful to have &lt;em&gt;my own&lt;/em&gt; code refactored. I wish I could help every single person who might read this post refactor &lt;em&gt;their own code&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;But I cannot.&lt;/p&gt;

&lt;p&gt;But here’s the thing - when you’re working, you’ll often not be refactoring your own code either. It’s most likely you’ll be reading (and updating) code that someone else wrote.&lt;/p&gt;

&lt;p&gt;Or you’ll be nestling in new code and new features alongside existing code and existing features.&lt;/p&gt;

&lt;p&gt;So it’s useful to get practice reading other people’s code, and being able to work with it.&lt;/p&gt;

&lt;h1 id=&quot;video-walk-through&quot;&gt;Video Walk-through&lt;/h1&gt;

&lt;p&gt;Sometimes video walk-throughs are helpful, so I put one together. It is 7 minutes long, and covers useful material.&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/HfBrRb1LLSY&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;!--more--&gt;

&lt;p&gt;Copy-paste this code into your editor and run the tests:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# ruby-exercises/mythical-creatures/wizard.rb&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Wizard&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:name&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;bearded: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@rested&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;bearded?&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Ben&quot;&lt;/span&gt;
      &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;incantation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;saying&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;sudo &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;saying&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;rested?&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@rested&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;
      &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;cast&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@rested&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;MAGIC MISSILE!&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The tests should pass.&lt;/p&gt;

&lt;p&gt;We’re going to cover a few things:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Guard Clauses&lt;/li&gt;
  &lt;li&gt;Default variables&lt;/li&gt;
  &lt;li&gt;Running &lt;em&gt;just a single test from a test file instead of the whole thing&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Sometimes simple things go wrong and are deeply frustrating&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;guard-clauses&quot;&gt;Guard Clauses&lt;/h3&gt;

&lt;p&gt;Here’s the guard clauses I mention: &lt;a href=&quot;https://www.thechrisoshow.com/2009/02/16/using-guard-clauses-in-your-ruby-code/&quot;&gt;guard clauses (thechrisoshow.com)&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;default-variables&quot;&gt;Default variables&lt;/h3&gt;

&lt;p&gt;the test &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard are bearded by default&lt;/code&gt; implies that in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;initialization&lt;/code&gt; method, we should set &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bearded&lt;/code&gt; equal to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;true&lt;/code&gt;, rather than false.&lt;/p&gt;

&lt;h3 id=&quot;run-just-a-specific-test-in-a-test-file-minitest&quot;&gt;Run just a specific test in a test file (Minitest)&lt;/h3&gt;

&lt;p&gt;Sometimes it’s helpful to run just a single test in a test file, rather than the whole thing.&lt;/p&gt;

&lt;p&gt;Here’s the format:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ruby something_test.rb --name=/a-string-that-matches-something-in-the-test-you-want-to-run/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--name=/abc/&lt;/code&gt;, you can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-n=/abc&lt;/code&gt;. I’ll often append the string &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zzz&lt;/code&gt; to the test I want to run, then append &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-n/zzz/&lt;/code&gt; to the test running command. (With &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rspec&lt;/code&gt; you can identify test by line number.)&lt;/p&gt;

&lt;h3 id=&quot;things-go-so-so-wrong&quot;&gt;Things go so, so wrong&lt;/h3&gt;

&lt;p&gt;The video walk-through was my &lt;em&gt;second&lt;/em&gt; time recording the video, because I’d wandered so much in my explanations in the first video.&lt;/p&gt;

&lt;p&gt;Then, mid-way through the video, I closed the terminal window, CD’d into the wrong directory, and got a bunch of errors. I got it fixed, then fat-fingered my way back into closing the terminal. I was super frustrated.&lt;/p&gt;

&lt;p&gt;I’m ostensibly a “professional”, in that I get paid to “develop software”, but I thought it a useful reminder that we all do things that are frustrating and cause us to waste time. When you do this yourself, don’t worry about it to much. Our entire craft is hard. &lt;a href=&quot;http://johnsalvatier.org/blog/2017/reality-has-a-surprising-amount-of-detail&quot;&gt;Reality has a surprising amount of detail&lt;/a&gt; and it’s annoying when we get bit by that detail.&lt;/p&gt;

&lt;p&gt;Here’s the final version:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Wizard&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:bearded&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:rested&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:spell_counter&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;bearded: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@rested&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@bearded&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;bearded&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@spell_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;bearded?&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;bearded&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;incantation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;saying&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;sudo &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;saying&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;rested?&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spell_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# this is a &quot;guard clause&quot;, sorta&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;rested&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;cast&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@spell_counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;MAGIC MISSILE!&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index-1&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
</content>
 </entry>
 
 <entry>
   <title>How to take payments via Stripe on a Static Site</title>
   <link href="https://josh.works/why-i-sell-things-and-you-should-too"/>
   <updated>2019-12-22T13:00:00+00:00</updated>
   <id>https://josh.works/why-i-sell-info-products</id>
   <content type="html">&lt;p&gt;I’ve had rolling around my head an idea of selling small how-to guides and resources. Things that I wish existed, but have never been able to find.&lt;/p&gt;

&lt;p&gt;For example, I’ve read a bunch of books that talk about good Object-Oriented design, or refactoring code, or writing better tests. Despite all these books, the most useful part of learning, &lt;em&gt;doing the thing you’re trying to learn&lt;/em&gt;, is still hard to come by.&lt;/p&gt;

&lt;p&gt;I’m afraid that when I read a book about software, I retain only a fraction of the material, because I get so little exposure to actually writing code that exemplifies a given topic.&lt;/p&gt;

&lt;p&gt;I went to the Turing School of Software and Designe, and they’ve got a &lt;a href=&quot;https://github.com/turingschool/ruby-exercises&quot;&gt;great set of exercises&lt;/a&gt; for learning basic Ruby. It’s a repository of tests, and you run the tests and make them pass.&lt;/p&gt;

&lt;p&gt;It’s one of the most effective methods I’ve encountered for learning Ruby.&lt;/p&gt;

&lt;p&gt;I’d love for something similar to exist for learning more complex topics; targeted at early-career software developers. Shorter and more focused than a book, but more interactive and of higher quality than the smattering of blog posts one might find on the topic.&lt;/p&gt;

&lt;p&gt;Since this is a problem I’m willing to throw money at (and have spent non-trivial sums of money on, across books, courses, and hours spent working through this material), I imagine others are willing to do the same.&lt;/p&gt;

&lt;p&gt;Therefore, I want to simultaneously:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Scratch my own itch&lt;/li&gt;
  &lt;li&gt;Make these resources available for others to benefit from&lt;/li&gt;
  &lt;li&gt;(Aspirationally) inspire someone else to build a course or guide to some topic I want to learn, so I can buy it.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh, why would you &lt;em&gt;sell&lt;/em&gt; something like this, instead of giving it away for free?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Great question. I’ve got a few reasons:&lt;/p&gt;

&lt;h3 id=&quot;1-i-want-to-learn-how-to-collect-payment-for-something&quot;&gt;1. I want to learn how to collect payment for something&lt;/h3&gt;

&lt;p&gt;For better or worse, much of the world revolves around exchanging money for services.&lt;/p&gt;

&lt;p&gt;If the thing I can help you do is valuable to you, you will pay me a fraction of the perceived value to obtain said service.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I always teach what I know&lt;/em&gt;. There’s a running joke among some of my friends and co-workers: “Josh has written a gist about everything”.&lt;/p&gt;

&lt;p&gt;I keep copious notes and document nearly everything I do. I love to teach others and help them, so “selling a product about how to sell a product” fits right in line with &lt;em&gt;teach everything I know&lt;/em&gt;, despite how much it smells like a multi-level marketing scheme.&lt;/p&gt;

&lt;h3 id=&quot;2-putting-a-price-on-something-means-ill-put-a-lot-of-effort-into-making-it-good&quot;&gt;2. Putting a price on something means I’ll put a &lt;em&gt;lot&lt;/em&gt; of effort into making it good&lt;/h3&gt;

&lt;p&gt;The difference between&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Write a blog post and publish to the world&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Build a first-class, best-in-breed guide to an important skill that helps people put a roof over their head&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;is enormous.&lt;/p&gt;

&lt;p&gt;Putting a price on something I’ve made moves it from the former category to the latter, and I treat it with the care it deserves.&lt;/p&gt;

&lt;h3 id=&quot;3-when-someone-does-something-for-free-they-are-telegraphing-to-the-recipient-that-its-not-worth-any-money&quot;&gt;3. When someone does something for free, they are telegraphing to the recipient that it’s not worth any money&lt;/h3&gt;

&lt;p&gt;We, as humans, ascribe value to that which has evidence of value. If have two things, and one was free and the other cost money, I’m going to value the thing that cost the money more.&lt;/p&gt;

&lt;p&gt;The thing that I’m building will deliver value. Value that is far greater than what it will cost. If I made it free, &lt;em&gt;you would not value it as much&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I’ve &lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;put together a lot of resources for students getting ready to start Turing&lt;/a&gt;. Someone going to Turing is spending $20,000 and taking nearly a year off from earning any money to learn the skills of writing software.&lt;/p&gt;

&lt;p&gt;They’ve got a lot invested in the program.&lt;/p&gt;

&lt;p&gt;I put this guide in front of every new student going through the back-end program. I drop it in their cohort Slack channel before Turing starts.&lt;/p&gt;

&lt;p&gt;You know how much interest it generates? Invariably, &lt;em&gt;very little&lt;/em&gt;. The actual value of the material is enormous, but almost no one ascribes significant value to it.&lt;/p&gt;

&lt;p&gt;I’ve considered putting a price on it, just so it doesn’t get lumped in with all the other free stuff out there… but I have not, and likely never will.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I’ll be honest. It’s scary to put something out there and ask people to give you money for it.&lt;/p&gt;

&lt;p&gt;In general, when something scares you, it’s probable that pursuing that scary thing will be really good for you.&lt;/p&gt;

&lt;p&gt;It is on this principle that I’m offering anything for sale.&lt;/p&gt;

&lt;h2 id=&quot;courses-for-sale&quot;&gt;Courses for sale&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/add-stripe-to-static-site-course&quot;&gt;How to Integrate Stripe and a static site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Change your MAC address with a shell script</title>
   <link href="https://josh.works/shell-script-basics-change-mac-address"/>
   <updated>2019-12-18T13:00:00+00:00</updated>
   <id>https://josh.works/bash_basics</id>
   <content type="html">&lt;p&gt;For a while, I’ve had notes from &lt;a href=&quot;https://www.online-tech-tips.com/computer-tips/how-to-change-mac-address/&quot;&gt;Change or Spoof a MAC Address in Windows or OS X&lt;/a&gt; saved, so if I am using a wifi connection that limits me to thirty minutes or an hour or whatever, I can “spoof” a new MAC address, and when I re-connect to the wifi, the access point thinks I’m on a new, unique device.&lt;/p&gt;

&lt;p&gt;For the record - when I’m posted up at a coffee shop for an extended period of time, I make sure to &lt;em&gt;buy products regularly&lt;/em&gt; in payment for my time. So, if you’re spoofing your MAC address to use wifi for a longer period of time, maybe make sure to spend $5 or $10 when you run the script.&lt;/p&gt;

&lt;p&gt;Now, in case you think that I’m actually saving myself time here, I’m totally not. Here’s why:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://imgs.xkcd.com/comics/automation.png&quot; alt=&quot;XKCD Automation&quot; title=&quot;&apos;Automating&apos; comes from the roots &apos;auto-&apos; meaning &apos;self-&apos;, and &apos;mating&apos;, meaning &apos;screwing&apos;.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://xkcd.com/1319/&quot;&gt;XKCD: Automation&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://imgs.xkcd.com/comics/is_it_worth_the_time.png&quot; alt=&quot;XKCD Is it worth the time?&quot; title=&quot;Don&apos;t forget the time you spend finding the chart to look up what you save. And the time spent reading this reminder about the time spent. And the time trying to figure out if either of those actually make sense. Remember, every second counts toward your life total, including these right now.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://xkcd.com/1205/&quot;&gt;XKCD: Is it worth the time?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s the steps, for someone who’s on a MAC, to spoof your MAC address:&lt;/p&gt;

&lt;h3 id=&quot;get-your-current-mac-address&quot;&gt;Get your current MAC address&lt;/h3&gt;

&lt;p&gt;Hold down &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;option&lt;/code&gt; key, click your wifi icon:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-12-11-bash-basics-01.jpg&quot; alt=&quot;wifi details&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;figure-out-which-adapter-your-machine-is-using-to-connect-to-the-wifi&quot;&gt;Figure out which adapter your machine is using to connect to the wifi&lt;/h3&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ifconfig en0 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;c&quot;&gt;# one of these will return a MAC address that matches&lt;/span&gt;
ifconfig en1 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;c&quot;&gt;# the value you saw when looking for your current&lt;/span&gt;
ifconfig en2 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;c&quot;&gt;# mac address.&lt;/span&gt;
ifconfig en3 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;c&quot;&gt;# Keep incrementing the `en0` value until you run out of &lt;/span&gt;
                          &lt;span class=&quot;c&quot;&gt;# devices&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here’s me working through the list:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-12-11-basic-bash-02.jpg&quot; alt=&quot;checking all ports&quot; /&gt;&lt;/p&gt;

&lt;p&gt;For me, the very first result matched the MAC address I got from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;option+click&lt;/code&gt;ing the wifi network.&lt;/p&gt;

&lt;p&gt;That means I’ll be using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;en0&lt;/code&gt; as the [E]ther[N]et adapter I’ll update shortly.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h3 id=&quot;generate-a-random-new-mac-address&quot;&gt;Generate a random new MAC address&lt;/h3&gt;

&lt;p&gt;A MAC address has a standard-looking format.&lt;/p&gt;

&lt;p&gt;It looks like six blocks of two digits, which happen to be &lt;a href=&quot;https://en.wikipedia.org/wiki/Hexadecimal&quot;&gt;hexadecimal representations&lt;/a&gt; of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;00000000&lt;/code&gt; through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;11111111&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here’s some randomly-generated MAC addresses:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;e2:81:f6:f6:f9:e8
1f:24:37:47:d6:25
03:20:3f:48:46:ad
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;To generate a random string of characters that produces a &lt;a href=&quot;http://sqa.fyicenter.com/1000208_MAC_Address_Validator.html&quot;&gt;valid MAC address&lt;/a&gt;, run:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;openssl rand -hex 6 | sed &apos;s/\(..\)/\1:/g; s/.$//&apos;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And boom. You’ve got a MAC address.&lt;/p&gt;

&lt;p&gt;Now we need to update our current MAC address to this new MAC address.&lt;/p&gt;

&lt;h3 id=&quot;set-current-mac-address-to-temporarynew-mac-address&quot;&gt;Set current mac address to temporary/new MAC address&lt;/h3&gt;

&lt;p&gt;You can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ifconfig&lt;/code&gt; to set the ethernet address (is that interchangable with the MAC address?) to the randomly-generated string you got from the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;openssl&lt;/code&gt; command:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# you need to sudo it, unfortunately. No quotes around the mac address&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ifconfig en0 ether xx:xx:xx:xx:xx:xx

&lt;span class=&quot;c&quot;&gt;# here&apos;s the full command&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ifconfig en0 ether 8c:85:90:5a:79:56
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And with that, you can re-connect to the wifi network, and it &lt;em&gt;should&lt;/em&gt; recognize you as a new device, and let you onto the network.&lt;/p&gt;

&lt;p&gt;Here’s what I first ended up with:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Hi! lets change our mac address.&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Step 1: hold down option key, click wifi logo. Note the mac address&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Step 2: click &apos;disconnect from network&apos; &quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Step 3: note which ethernet adapter lines up with the mac address you just saw&quot;&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;en0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig en0 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;en1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig en1 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;en2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig en2 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;en3&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig en3 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;en4&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig en4 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;en5&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig en5 | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;en0 is: &lt;span class=&quot;nv&quot;&gt;$en0&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;en1 is: &lt;span class=&quot;nv&quot;&gt;$en1&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;en2 is: &lt;span class=&quot;nv&quot;&gt;$en2&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;en3 is: &lt;span class=&quot;nv&quot;&gt;$en3&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;en4 is: &lt;span class=&quot;nv&quot;&gt;$en4&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;en5 is: &lt;span class=&quot;nv&quot;&gt;$en5&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;read&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;Step 4: Enter which ethernet device lined up with the given mac address: &apos;&lt;/span&gt; ether_adapter
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;ether_adapter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;mac&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; openssl rand &lt;span class=&quot;nt&quot;&gt;-hex&lt;/span&gt; 6 | &lt;span class=&quot;nb&quot;&gt;sed&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;s/&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\1&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:/g; s/.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/&quot;&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;mac&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$mac&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;btw, here&apos;s the new mac address we&apos;re going to use: &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$mac&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;OK, we will change the mac address associated with: &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;old_mac&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig &lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;The old value was: &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$old_mac&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ifconfig &lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt; ether &lt;span class=&quot;nv&quot;&gt;$mac&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;new_mac&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig &lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;The new value is: &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$new_mac&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;go ahead and re-connect to the wifi. You should be able to join the network.&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Believe it or not, this script was far from perfect.&lt;/p&gt;

&lt;p&gt;First off, not all randomly-generated mac addresses are valid, even though they were passing an online mac address validator I was testing against. &lt;a href=&quot;https://askubuntu.com/a/536221&quot;&gt;AskUbuntu&lt;/a&gt; nicely shared what was going on.&lt;/p&gt;

&lt;p&gt;I didn’t want to deal with manually building a valid MAC address; I just noticed that about 2 out of 3 attempts to change my mac address, using the above script, the MAC address didn’t change.&lt;/p&gt;

&lt;p&gt;So, my next version of this script pulls the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;generate mac address&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;set current mac address to generated mac address&lt;/code&gt; steps into a function, and keeps calling the function until the mac address has changed.&lt;/p&gt;

&lt;p&gt;Why be elegant and precise when you can brute force a crappy solution?&lt;/p&gt;

&lt;p&gt;Here’s my finished “solution”:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# skipping some lines&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;read&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;Step 4: Which device lined up would you like to change? (hit return for en0) &apos;&lt;/span&gt; ether_adapter

&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-z&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;then
  &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;ether_adapter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;en0&quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;fi

&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;ether_adapter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt;

generate_and_set_new_mac_address&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nv&quot;&gt;mac&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; openssl rand &lt;span class=&quot;nt&quot;&gt;-hex&lt;/span&gt; 6 | &lt;span class=&quot;nb&quot;&gt;sed&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;s/&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\1&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:/g; s/./0/2; s/.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;mac&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$mac&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;OK, we will change the mac address associated with: &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

  &lt;span class=&quot;nv&quot;&gt;old_mac&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig &lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;

  &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;The old value was: &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$old_mac&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ifconfig &lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt; ether &lt;span class=&quot;nv&quot;&gt;$mac&lt;/span&gt;

  &lt;span class=&quot;nv&quot;&gt;new_mac&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; ifconfig &lt;span class=&quot;nv&quot;&gt;$ether_adapter&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;ether &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;The new value is: &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$new_mac&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$new_mac&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$old_mac&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$new_mac&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$old_mac&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;do
  &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;not the same&quot;&lt;/span&gt;
  generate_and_set_new_mac_address
&lt;span class=&quot;k&quot;&gt;done

&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;go ahead and re-connect to the wifi. You should be able to join the network.&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and this seems to work pretty well:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-12-17-bash_script_success.jpg&quot; alt=&quot;success&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I hope that in the near future, I’ll look at this bash script and have many ways to improve it. For now, it’ll do the trick.&lt;/p&gt;

&lt;h3 id=&quot;feb-9-2021-update&quot;&gt;Feb 9, 2021 update&lt;/h3&gt;

&lt;p&gt;Following &lt;a href=&quot;https://twitter.com/serent/status/1359208380435361792&quot;&gt;this tweet&lt;/a&gt; by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@serent&lt;/code&gt;, I updated the script a little. To generate a valid MAC address:&lt;/p&gt;

&lt;div class=&quot;language-diff highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;@@ -160,7 +162,7 @@&lt;/span&gt; fi
 export ether_adapter=$ether_adapter
&lt;span class=&quot;err&quot;&gt;
&lt;/span&gt; generate_and_set_new_mac_address() {
&lt;span class=&quot;gd&quot;&gt;-  mac=$( openssl rand -hex 6 | sed &quot;s/\(..\)/\1:/g; s/.$//&quot; )
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+  mac=$( openssl rand -hex 6 | sed &quot;s/\(..\)/\1:/g; s/./0/2; s/.$//&quot;)
&lt;/span&gt;   export mac=$mac
   echo &quot;OK, we will change the mac address associated with: $ether_adapter&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There’s other pain points in the script. I’ll fix them at some point.&lt;/p&gt;

&lt;h3 id=&quot;related-reading&quot;&gt;Related Reading&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=26060152#26060229&quot;&gt;Hacker News comments from 2021 on this post&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ryanstutorials.net/bash-scripting-tutorial/bash-script.php&quot;&gt;Bash Scripting Tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.online-tech-tips.com/computer-tips/how-to-change-mac-address/&quot;&gt;Change or Spoof a MAC Address in Windows or OS X&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/13781216/meaning-of-too-many-arguments-error-from-if-square-brackets&quot;&gt;Resolution to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[: too many arguments&lt;/code&gt; error&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://askubuntu.com/questions/423530/cant-change-my-mac-address-cant-assign-requested-address/536221&quot;&gt;AskUbuntu: “Can’t change my mac address - can’t assign requested address”&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>POODR Notes: Acquiring Behavior Through Inheritance (Chapter 6)</title>
   <link href="https://josh.works/poodr-ch-6-acquiring-behavior-through-inheritance"/>
   <updated>2019-11-28T13:00:00+00:00</updated>
   <id>https://josh.works/poodr_ch_6</id>
   <content type="html">&lt;p&gt;I’m reading through &lt;a href=&quot;https://www.goodreads.com/book/show/13507787-practical-object-oriented-design-in-ruby&quot;&gt;Practical Object Oriented Design in Ruby &lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;These are some notes from chapter 6, &lt;em&gt;Acquiring Behavior Through Inheritance&lt;/em&gt;; mostly these are for me, and they don’t intend to stand on their own. Read the book, work through chapter six, and &lt;em&gt;then&lt;/em&gt; come back and read through this.&lt;/p&gt;

&lt;p&gt;The current state of the code is we have this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RoadBike&lt;/code&gt; object and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MountainBike&lt;/code&gt; object that share significant code.&lt;/p&gt;

&lt;p&gt;We’re going to extract common functionality into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bycycle&lt;/code&gt; superclass.&lt;/p&gt;

&lt;p&gt;Step one, according to Sandi Metz, is &lt;em&gt;always move code from the base class to super class&lt;/em&gt;, never start with code in the super class.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# Please note how empty this class is.&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MountainBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:front_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:rear_shock&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@size&lt;/span&gt;         &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@front_shock&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:front_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@rear_shock&lt;/span&gt;   &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:rear_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;spares&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;chain:      &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;10-speed&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;tire_size:  &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;2.1&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;rear_shock: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rear_shock&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RoadBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:tape_color&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@size&lt;/span&gt;       &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@tape_color&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:tape_color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;spares&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;chain:      &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;10-speed&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;tire_size:  &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;23&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;tape_color: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tape_color&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;mtb&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;MountainBike&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;size:        &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;small&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;front_shock: &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;manitou&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;rear_shock: &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;fox&apos;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;road&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;RoadBike&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;size:       &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;large&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;tape_color: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Red&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We have three broad goals:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Clean up the initialization methods, so the sub-classes have sensible defaults&lt;/li&gt;
  &lt;li&gt;Clean up the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;spares&lt;/code&gt; method, so sub-classes have sensible defaults&lt;/li&gt;
  &lt;li&gt;Accomplish 1 and 2 in such a way that the next developer who adds a sub-class doesn’t have to inspect the existing classes in great detail to figure out subtle nuance.&lt;/li&gt;
&lt;/ol&gt;

&lt;!--more--&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;first-a-sub-optimal-refactor-for-initialize&quot;&gt;First, a sub-optimal refactor for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#initialize&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;First with adding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@tire_size&lt;/code&gt; to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bicycle&lt;/code&gt; superclass:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:size&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@size&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and we have to call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;super&lt;/code&gt; from the sub-class initialize method, in order to get all of our &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;instance variables&lt;/code&gt; initialized:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MountainBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:front_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:rear_shock&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@front_shock&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:front_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@rear_shock&lt;/span&gt;   &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:rear_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# we need this to get size from the superclass, otherwise we lose the `@size` instance variable&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RoadBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:tape_color&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@tape_color&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:tape_color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We’ve created a problem, now.&lt;/p&gt;

&lt;p&gt;Every new subclass of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bicycle&lt;/code&gt; that we might ever make needs to call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;super&lt;/code&gt; in the initialization method. That’s a subtle requirement, and &lt;em&gt;not&lt;/em&gt; one that will be immediately apparent to future developers.&lt;/p&gt;

&lt;h2 id=&quot;use-post_initialize-instead-of-initialize&quot;&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;post_initialize&lt;/code&gt; instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;initialize&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;To navigate this requirement that subclasses never call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;super&lt;/code&gt;, we’ll strip our entire &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;initialize&lt;/code&gt; method out of our subclass.&lt;/p&gt;

&lt;p&gt;Here’s what we end up with next:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:tire_size&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@tire_size&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:tire_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;default_tire_size&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;post_initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;post_initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MountainBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:front_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:rear_shock&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;post_initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@front_shock&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:front_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@rear_shock&lt;/span&gt;   &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:rear_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;No calls to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;super&lt;/code&gt;, and future developers, when looking at either the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bicycle&lt;/code&gt; class or one of its existing sub-classes &lt;em&gt;immediately&lt;/em&gt; see what’s going on, and follow the existing pattern.&lt;/p&gt;

&lt;p&gt;Future subclasses can now follow the pattern of existing subclasses. They won’t create an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;initialize&lt;/code&gt; method, but instead will implement a hook that responds to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;post_initialize&lt;/code&gt;.&lt;/p&gt;

&lt;h1 id=&quot;setting-sensible-defaults&quot;&gt;Setting sensible defaults&lt;/h1&gt;

&lt;p&gt;Lets step back to the state of the class, pre-refactor, when we had a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;spares&lt;/code&gt; method in both sub-classes, which contained values we’d rather set as defaults, like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chain&lt;/code&gt;, which is currently the same value across all &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bicycle&lt;/code&gt; subclasses, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tire_size&lt;/code&gt; which differs by sub-class&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# empty again&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MountainBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spares&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;chain:      &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;10-speed&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;tire_size:  &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;2.1&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;rear_shock: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rear_shock&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RoadBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spares&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;chain:      &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;10-speed&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;tire_size:  &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;23&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;tape_color: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tape_color&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here’s the first round of refactors.&lt;/p&gt;

&lt;p&gt;We pull &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chain&lt;/code&gt; into the superclass, fetching the value of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;default_chain&lt;/code&gt; if &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bicycle&lt;/code&gt; isn’t explicitly given a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chain&lt;/code&gt; value.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;default_tire_size&lt;/code&gt; is trickier; we &lt;em&gt;require&lt;/em&gt; every &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bicycle&lt;/code&gt; subclass to implement &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;default_tire_size&lt;/code&gt;, since it’s not implemented in the superclass:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:chain&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:tire_size&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{})&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@chain&lt;/span&gt;     &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:chain&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;     &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;default_chain&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@tire_size&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:tire_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;default_tire_size&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;default_chain&lt;/span&gt;
    &lt;span class=&quot;s1&quot;&gt;&apos;10-speed&apos;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;    
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;spares&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;chain: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;chain&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;tire_size: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tire_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MountainBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;default_tire_size&lt;/span&gt;
    &lt;span class=&quot;s1&quot;&gt;&apos;2.1&apos;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RoadBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;default_tire_size&lt;/span&gt;
    &lt;span class=&quot;s1&quot;&gt;&apos;23&apos;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When we give &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RoadBike&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MountainBike&lt;/code&gt; a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;default_tire_size&lt;/code&gt; method, the superclass may now call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;default_tire_size&lt;/code&gt; and set it appropriately.&lt;/p&gt;

&lt;p&gt;We’ve created a trap, however. From the book:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The root of the problem is that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bicycle&lt;/code&gt; imposes a requirement upon its subclasses that is not obvious from a glance at the code. As &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bicycle&lt;/code&gt; is written, subclasses &lt;em&gt;must&lt;/em&gt; implement &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;default_tire_size&lt;/code&gt;. Innocent and well-meaning subclasses like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RecumbentBike&lt;/code&gt; may fail because they do not fulfill requirements of which they are unaware.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can remove this trap, though, in the superclass, by telling all future developers that they need to implement certain methods.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;default_tire_size&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;NotImplementedError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;this &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; cannot respond to &apos;default_tire_size&apos;&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now when the new class is initialized, rather than simply failing to set a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tire_size&lt;/code&gt; value, we’ll explicitly halt execution and tell them exactly what method they need to add.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Phew. All this work, and we’ve still not fully fixed our &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;spares&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;We’ve got this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;spares&lt;/code&gt; method in the superclass, now using our handy sensible defaults:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:chain&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:tire_size&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{})&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@chain&lt;/span&gt;     &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:chain&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;     &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;default_chain&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@tire_size&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:tire_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;default_tire_size&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;default_chain&lt;/span&gt;
    &lt;span class=&quot;s1&quot;&gt;&apos;10-speed&apos;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;    
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;spares&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;chain: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;chain&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;tire_size: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tire_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;default_tire_size&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;NotImplementedError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;this &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; cannot respond to &apos;default_tire_size&apos;&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MountainBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spares&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;merge&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;front_shock: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;front_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;rear_shock: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rear_shock&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RoadBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spares&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;merge&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;tape_color: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tape_color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;By now, you should feel skeptical of calls to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;super&lt;/code&gt;. We want to avoid causing confusion with future developers about what classes should implement the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;spares&lt;/code&gt; method, and what it should do.&lt;/p&gt;

&lt;p&gt;The fix is easy, once you see it written out. We’re going to expect our classes to implement &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;local_spares&lt;/code&gt;, and we’ll simply ask our superclass to merge those &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;local_spares&lt;/code&gt; into its own hash, like so:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;  
  &lt;span class=&quot;nf&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spares&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;chain: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;chain&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;tire_size: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tire_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;merge&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;local_spares&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;local_spares&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MountainBike&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bicycle&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;local_spares&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;front_shock: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;front_shock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;ss&quot;&gt;rear_shock: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rear_shock&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;the-template-method-pattern&quot;&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Template Method&lt;/code&gt; Pattern&lt;/h1&gt;

&lt;p&gt;I had to read this chapter four or five times before it all sunk in, then I had to manually convert the classes from “tightly coupled and bad” to “appropriately abstract” three or four times for this to all sink in, at the &lt;em&gt;very basic level of this example&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Anyway, this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Template Method Pattern&lt;/code&gt; seems to mean:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Where abstract superclasses and their sub-classes share methods, the superclass must be explicit about what the subclasses must do.&lt;/p&gt;

  &lt;p&gt;If the superclass provides a globally-available method (like some default value) that &lt;em&gt;can&lt;/em&gt; be overridden (or ‘specialized’) by the sub-class, no further action need be taken by the superclass&lt;/p&gt;

  &lt;p&gt;If the superclass &lt;em&gt;requires&lt;/em&gt; a method value (like the subclass providing some specific default value or specialization) it ought to raise an error if that default value is not specialized.&lt;/p&gt;

  &lt;p&gt;Is it a rule of thumb that the subclasses never have an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;initialize&lt;/code&gt; method? it seems the superclass will call the subclasses with some sort of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;post_initialization&lt;/code&gt; method, rather than the subclasses calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;super&lt;/code&gt; after initializing themselves.&lt;/p&gt;

  &lt;p&gt;Subclasses ought to provide &lt;em&gt;specializations&lt;/em&gt; on the superclass, rather than ever overriding specific superclass attributes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’d love to come up with a repository of drills or exercises to practice refactoring code according to this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Template Method&lt;/code&gt; design pattern.&lt;/p&gt;

&lt;p&gt;Some day, later.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Aggregate and deduplicate your deprecation warnings in Rails</title>
   <link href="https://josh.works/aggregate-and-deduplicate-rails-deprecation-warnings"/>
   <updated>2019-10-03T13:00:00+00:00</updated>
   <id>https://josh.works/aggregate-and-deduplicate-deprecation-warnings</id>
   <content type="html">&lt;p&gt;We know we all stay on the cutting edge of Rails; no one, and I mean &lt;em&gt;no one&lt;/em&gt; out there is making a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;4.2 -&amp;gt; 5.2&lt;/code&gt; upgrade because Rails 4.2 is no longer supported.&lt;/p&gt;

&lt;p&gt;You, dear reader, have just suddenly found an interest in resolving deprecation warnings, and as one jumps a few Rails versions in short order, finding and resolving them systematically will save you a lot of time.&lt;/p&gt;

&lt;p&gt;Sure, you could run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tail -f log/test.log | grep &quot;DEPRECATION WARNING&quot;&lt;/code&gt;, but that’s not systematic. If the same line of code gets called 50 times, and prints a deprecation warning each time, that generates a lot of noise, not much signal.&lt;/p&gt;

&lt;p&gt;This does no one any good:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-10-03-deprecation-warning-01.jpg&quot; alt=&quot;endless repeat warnings&quot; /&gt;&lt;/p&gt;

&lt;!--more--&gt;
&lt;p&gt;Here’s what I settled on:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;In one terminal window, run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tail -f log/test.log | grep &quot;DEPRECATION WARNING&quot; &amp;gt;&amp;gt; deprecation_warnings.txt&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;In another terminal window, run all your tests. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails test&lt;/code&gt; or whatever.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you take a look at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;deprecation_warnings.txt&lt;/code&gt; after all your tests run, you’ll see plenty of deprecation warnings. Maybe even a few hundred lines of them.&lt;/p&gt;

&lt;p&gt;Daunting, eh?&lt;/p&gt;

&lt;p&gt;Lets make that less daunting:&lt;/p&gt;

&lt;p&gt;We’re going to remove all duplicates from that list, so the final output will show &lt;em&gt;just&lt;/em&gt; the unique deprecation warnings.&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sort deprecation_warnings.txt | uniq -c &amp;gt; unique_deprecation_warnings.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You have to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sort&lt;/code&gt; the file and pipe it into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uniq&lt;/code&gt;. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-c&lt;/code&gt; flag prints the number of occurrences of each line. This might help you figure out where to get started in resolving the dependencies.&lt;/p&gt;

&lt;p&gt;Now, the contents of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unique_deprecation_warnings.txt&lt;/code&gt; is one line per deprecation warning that popped up when running your tests (or, you could do this with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;log/development.log&lt;/code&gt; and exercising/running the app locally) and you can be a bit more systematic in resolving these deprecation warnings.&lt;/p&gt;

&lt;p&gt;I originally got 300 lines of deprecation warnings; once I sorted and deduplicated that list, I was down to 18. Much more manageable!&lt;/p&gt;

&lt;p&gt;This is much more usable!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-10-03-deprecation-warnings-02.jpg&quot; alt=&quot;This does us much good!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Since the deprecation warnings include the specific line of code that generates the warning, this list now functions as a checklist of what I need to resolve in the app.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Notes from &apos;Why We Sleep&apos;</title>
   <link href="https://josh.works/why-we-sleep-book-notes"/>
   <updated>2019-09-13T13:00:00+00:00</updated>
   <id>https://josh.works/notes-why-we-sleep</id>
   <content type="html">&lt;p&gt;I first read &lt;a href=&quot;https://www.goodreads.com/book/show/34466963-why-we-sleep?ac=1&amp;amp;from_search=true&quot;&gt;Why We Sleep: Unlocking the Power of Sleep and Dreams&lt;/a&gt; about two years ago. It immediately led me to prioritize sleep over almost everything else.&lt;/p&gt;

&lt;p&gt;Most of us don’t get enough sleep, and are worse for it. Usually when the topic of sleep comes up, I say&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hey, there’s this great book I read on sleep. You should read it, and then sleep more…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The people most in need of more sleep are also usually the people most unable to make time to read a book &lt;em&gt;about&lt;/em&gt; sleep. So, here’s an effort to help these people save time, prioritize sleep, and then maybe give the book a read anyway.&lt;/p&gt;

&lt;p&gt;I hope to use this post to accomplish two things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Convince you that sleep is massively important and you should sleep more&lt;/li&gt;
  &lt;li&gt;Convince you to read the book. If you find anything below compelling, you’ll find it &lt;em&gt;even more compelling&lt;/em&gt; if you read the whole book yourself.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything that follows is a quote from &lt;em&gt;Why We Sleep&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If I add my own comments, they’ll be inline and italicized, like so:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Josh: here’s a comment I’m adding&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please note: Alexey Guzey did a fantastic review of the science in the first chapter of this book: &lt;a href=&quot;https://guzey.com/books/why-we-sleep/&quot;&gt;Matthew Walker’s “Why We Sleep” Is Riddled with Scientific and Factual Errors&lt;/a&gt;. As you might guess from the title of the piece, there are some big problems with the science Matthew Walker users to justify his arguments.&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;index&quot;&gt;Index&lt;/h3&gt;

&lt;p&gt;I’ve quoted from this book, extensively. I don’t recommend reading this post top-to-bottom, but rather jumping around the post, from this following index, to a section that looks interesting, then going back to the top, jumping to a different section, etc.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#dont-let-people-shame-you-with-the-early-to-bed-early-to-rise-concept&quot;&gt;Not everyone is genetically wired to wake up early. Don’t let people shame you for sleeping in&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#how-does-caffeine-work&quot;&gt;Many of use drink a lot of coffee. What’s actually happening when we drink it?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#lots-of-folks-think-theyre-getting-enough-sleep&quot;&gt;Most people who don’t get enough sleep &lt;em&gt;think they get enough sleep&lt;/em&gt;. Here’s a quick way to tell if you get enough&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-as-an-aid-to-learn-new-things&quot;&gt;Turing students: Sleep the night before learning helps you learn new things&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#on-sleep-the-night-after-learning&quot;&gt;Turing students: Sleep the night after learning something boosts retention 20-40%&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-benefits-of-sleep-to-forget-things&quot;&gt;Sleep helps us forget things that we should forget&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-for-learning-complex-and-novel-skills-like-typing-piano-etc&quot;&gt;Turing students, athletes: Sleep helps you learn complex new patterns (physical or mental)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#studies-and-evidence-for-sleep-leading-to-mastery-of-difficult-material&quot;&gt;Turing students, college students: further studies and examples of sleep helping master difficult material&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-do-you-lose-if-you-chop-off-the-last-hour-or-two-of-your-planned-sleep-time&quot;&gt;Turing students: What does forcing yourself to wake up earlier than you should do to you?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-physical-performance&quot;&gt;Rock climbers, athletes: Sleep deprivation on physical performance. (Hint: It more than undoes everything you worked for in the last year)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-deprivation-and-driving&quot;&gt;Sleep deprivation and something that kills 40,000 people in the USA each year. (Driving)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#we-underestimate-your-sleep-deprivation-induced-performance-disability&quot;&gt;&lt;em&gt;You cannot estimate how poor your performance is when sleep deprived&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#driving-while-sleep-deprived-is-about-as-bad-as-driving-drunk&quot;&gt;Driving while sleep deprived is as bad as driving drunk&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-emotions&quot;&gt;Sleep lets you read other’s emotions well&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-substance-abuse&quot;&gt;Sleep deprivation contributes to substance abuse&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-alzheimers&quot;&gt;Sleep deprivation contributes to Alzheimers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#daylight-savings-time-helps-us-see-what-a-single-hour-reduction-in-sleep-brings-about&quot;&gt;Yes, one hour really matters, AKA “cool insights from daylight savings time”&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-deprivation-and-insulin-resistence&quot;&gt;Sleep deprivation will make you fatter&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-deprivation-and-the-immune-system&quot;&gt;Sleep deprivation will make you less able to fend off illness&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-emotional-intelligence&quot;&gt;Sleep and relating to other people (emotional intelligence)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-creativity&quot;&gt;You (and everyone you’re in charge of, if you’re a manager) are less creative when sleep deprived. This is relevant to businesses&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#insomnia&quot;&gt;Sleep and Insomnia&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#light-specifically-blue-light-or-light-from-screens-and-sleep&quot;&gt;Sleep and Insomnia: please stop looking at your phone as you go to sleep&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-alcohol&quot;&gt;Alcohol messes up your sleep, big time. (This chapter changed my life)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-sleeping-pills&quot;&gt;If you use sleeping pills or know someone who does, please read this section&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleeping-pills-vs-placebos&quot;&gt;Sleeping pills work - but so do placebos&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleeping-pills-and-damage-to-the-immune-system&quot;&gt;Sleeping pills make you unconscious, but not sleep. This damages your immune system&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#how-then-should-one-treat-insomnia&quot;&gt;OK, you’ve got insomnia. Can’t use sleeping pills. What then should you do?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-effectiveness-at-work&quot;&gt;Sleep and effectiveness as work: performance, job satisfaction, and ethics&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-the-k-12-educational-system&quot;&gt;Children should be allowed to be well rested. Less car accidents in 16-18 year old drivers, more of an improvement than ABS brakes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-adhd&quot;&gt;Sleep and ADHD. It’s likely that half of children diagnosed with ADHD are just sleep deprived&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sleep-and-medical-errors&quot;&gt;Doctors make mistakes when sleep deprived. And the founder of med school was a cocain addict. Preventable Medical Errors are the third-leading cause of death among Americans. 😱&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;quotes-from-why-we-sleep&quot;&gt;Quotes from &lt;em&gt;Why We Sleep&lt;/em&gt;:&lt;/h2&gt;

&lt;p&gt;Two-thirds of adults throughout all developed nations fail to obtain the recommended eight hours of nightly sleep.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;This is the grab-bag of negative impacts on sleeping too little. From the first chapter. The author expands on all of these points later in the book.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Routinely sleeping less than six or seven hours a night demolishes your immune system, more than doubling your risk of cancer.&lt;/li&gt;
  &lt;li&gt;Insufficient sleep is a key lifestyle factor determining whether or not you will develop Alzheimer’s disease.&lt;/li&gt;
  &lt;li&gt;Inadequate sleep — even moderate reductions for just one week — disrupts blood sugar levels so profoundly that you would be classified as pre-diabetic.&lt;/li&gt;
  &lt;li&gt;Short sleeping increases the likelihood of your coronary arteries becoming blocked and brittle, setting you on a path toward cardiovascular disease, stroke, and congestive heart failure.&lt;/li&gt;
  &lt;li&gt;Fitting Charlotte Brontë’s prophetic wisdom that “a ruffled mind makes a restless pillow,” sleep disruption further contributes to all major psychiatric conditions, including depression, anxiety, and suicidality.&lt;/li&gt;
  &lt;li&gt;Perhaps you have also noticed a desire to eat more when you’re tired? This is no coincidence. Too little sleep swells concentrations of a hormone that makes you feel hungry while suppressing a companion hormone that otherwise signals food satisfaction. Despite being full, you still want to eat more. It’s a proven recipe for weight gain in sleep-deficient adults and children alike.&lt;/li&gt;
  &lt;li&gt;Worse, should you attempt to diet but don’t get enough sleep while doing so, it is futile, since most of the weight you lose will come from lean body mass, not fat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add the above health consequences up, and a proven link becomes easier to accept: &lt;strong&gt;the shorter your sleep, the shorter your life span.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The old maxim “I’ll sleep when I’m dead” is therefore unfortunate. Adopt this mind-set, and you will be dead sooner and the quality of that (shorter) life will be worse.&lt;/p&gt;

&lt;hr /&gt;

&lt;!--more--&gt;

&lt;p&gt;But can we go so far as to say that a lack of sleep can kill you outright? Actually, yes…[one way sleep deprivation can kill you] is the deadly circumstance of getting behind the wheel of a motor vehicle without having had sufficient sleep.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drowsy driving is the cause of hundreds of thousands of traffic accidents and fatalities each year.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And here, it is not only the life of the sleep-deprived individuals that is at risk, but the lives of those around them.&lt;/p&gt;

&lt;p&gt;Tragically, one person dies in a traffic accident every hour in the United States due to a fatigue-related error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is disquieting to learn that vehicular accidents caused by drowsy driving exceed those caused by alcohol and drugs combined.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;dont-let-people-shame-you-with-the-early-to-bed-early-to-rise-concept&quot;&gt;Don’t let people shame you with the ‘early to bed early to rise’ concept.&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Some people can go to bed early and wake up early. Others cannot. It’s not a moral issue, it’s genetics.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;An adult’s owlness or larkness, also known as their chronotype, is strongly determined by genetics.&lt;/p&gt;

&lt;p&gt;If you are a night owl, it’s likely that one (or both) of your parents is a night owl.&lt;/p&gt;

&lt;p&gt;Sadly, society treats night owls rather unfairly on two counts.&lt;/p&gt;

&lt;p&gt;First is the label of being lazy, based on a night owl’s wont to wake up later in the day, due to the fact that they did not fall asleep until the early-morning hours.&lt;/p&gt;

&lt;p&gt;Others (usually morning larks) will chastise night owls on the erroneous assumption that such preferences are a choice, and if they were not so slovenly, they could easily wake up early.&lt;/p&gt;

&lt;p&gt;However, night owls are not owls by choice. They are bound to a delayed schedule by unavoidable DNA hardwiring. It is not their conscious fault, but rather their genetic fate.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;how-does-caffeine-work&quot;&gt;How does caffeine work?&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;It fills adenosine receptors in the brain, preventing actual adenosine from getting in. This masks the sleep-stimulating effect of adenosine&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Caffeine works by successfully battling with adenosine for the privilege of latching on to adenosine welcome sites—or receptors—in the brain. Once caffeine occupies these receptors, however, it does not stimulate them like adenosine, making you sleepy. Rather, caffeine blocks and effectively inactivates the receptors, acting as a masking agent.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;Best practice might be to refrain from caffeine anytime after the mid-morning.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What is problematic [about caffeine] is the persistence of caffeine in your system. In pharmacology, we use the term “half-life” when discussing a drug’s efficacy. This simply refers to the length of time it takes for the body to remove 50 percent of a drug’s concentration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caffeine has an average half-life of five to seven hours&lt;/strong&gt;. Let’s say that you have a cup of coffee after your evening dinner, around 7:30 p.m. This means that by 1:30 a.m., 50 percent of that caffeine may still be active and circulating throughout your brain tissue. In other words, by 1:30 a.m., you’re only halfway to completing the job of cleansing your brain of the caffeine you drank after dinner.&lt;/p&gt;

&lt;p&gt;There’s nothing benign about that 50 percent mark, either. Half a shot of caffeine is still plenty powerful, and much more decomposition work lies ahead throughout the night before caffeine disappears.&lt;/p&gt;

&lt;p&gt;Sleep will not come easily or be smooth throughout the night as your brain continues its battle against the opposing force of caffeine. Most people do not realize how long it takes to overcome a single dose of caffeine, and therefore fail to make the link between the bad night of sleep we wake from in the morning and the cup of coffee we had ten hours earlier with dinner.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;lots-of-folks-think-theyre-getting-enough-sleep&quot;&gt;Lots of folks think they’re getting enough sleep&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Here’s a starting point to evaluate that statement&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Am I getting enough sleep?&lt;/p&gt;

&lt;p&gt;Setting aside the extreme case of sleep deprivation, how do you know whether you’re routinely getting enough sleep? While a clinical sleep assessment is needed to thoroughly address this issue, an easy rule of thumb is to answer two simple questions.&lt;/p&gt;

&lt;p&gt;First, after waking up in the morning, could you fall back asleep at ten or eleven a.m.?&lt;/p&gt;

&lt;p&gt;If the answer is “yes,” you are likely not getting sufficient sleep quantity and/or quality.&lt;/p&gt;

&lt;p&gt;Second, can you function optimally without caffeine before noon?&lt;/p&gt;

&lt;p&gt;If the answer is “no,” then you are most likely self-medicating your state of chronic sleep deprivation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-as-an-aid-to-learn-new-things&quot;&gt;Sleep as an aid to learn new things&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;This is particularly relevant to Turing students&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sleep has proven itself time and again as a memory aid: both &lt;em&gt;before learning&lt;/em&gt;, to prepare your brain for initially making new memories, and &lt;em&gt;after learning&lt;/em&gt;, to cement those memories and prevent forgetting.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;The author explains the methodology of many sleep-and-memory-related studies. I’ll include the high points for you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Later that day, at six p.m., all participants performed another round of intensive learning where they tried to cram yet another set of new facts into their short-term storage reservoirs (another one hundred face-name pairs).&lt;/p&gt;

&lt;p&gt;Our question was simple:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Does the learning capacity of the human brain decline with continued time awake across the day and, if so, can sleep reverse this saturation effect and thus restore learning ability?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Those who were awake throughout the day became progressively worse at learning, even though their ability to concentrate remained stable (determined by separate attention and response time tests).&lt;/p&gt;

&lt;p&gt;In contrast, those who napped did markedly better, and actually improved in their capacity to memorize facts. The difference between the two groups at six p.m. was not small: a 20 percent learning advantage for those who slept.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;on-sleep-the-night-after-learning&quot;&gt;On Sleep the night after learning&lt;/h3&gt;

&lt;p&gt;The second benefit of sleep for memory comes after learning, one that effectively clicks the “save” button on those newly created files.&lt;/p&gt;

&lt;p&gt;In doing so, sleep protects newly acquired information, affording immunity against forgetting: an operation called consolidation…&lt;/p&gt;

&lt;p&gt;The experimental results of Jenkins and Dallenbach have now been replicated time and again, &lt;strong&gt;with a memory retention benefit of between 20 and 40 percent being offered by sleep, compared to the same amount of time awake.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is not a trivial concept when you consider the potential advantages in the context of studying for an exam, for instance, or evolutionarily, in remembering survival-relevant information such as the sources of food and water and locations of mates and predators.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Using MRI scans, we have since looked deep into the brains of participants to see where those memories are being retrieved from before sleep relative to after sleep.&lt;/p&gt;

&lt;p&gt;It turns out that those information packets were being recalled from &lt;strong&gt;very different geographical locations within the brain at the two different times&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before having slept, participants were fetching memories from the short-term storage site of the hippocampus - that temporary warehouse, which is a vulnerable place to live for any long duration of time if you are a new memory.&lt;/p&gt;

&lt;p&gt;But things looked very different by the next morning. The memories had moved.&lt;/p&gt;

&lt;p&gt;After the full night of sleep, participants were now retrieving that same information from the neocortex, which sits at the top of the brain - a region that serves as the long-term storage site for fact-based memories, where they can now live safely, perhaps in perpetuity.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;the-benefits-of-sleep-to-forget-things&quot;&gt;The benefits of sleep to forget things&lt;/h3&gt;

&lt;p&gt;Up to this point, we have discussed the power of sleep after learning to enhance remembering and avoid forgetting.&lt;/p&gt;

&lt;p&gt;However, the capacity to forget can, in certain contexts, be as important as the need for remembering, both in day-to-day life (e.g., forgetting last week’s parking spot in preference for today’s) and clinically (e.g., in excising painful, disabling memories, or in extinguishing craving in addiction disorders).&lt;/p&gt;

&lt;p&gt;Moreover, forgetting is not just beneficial to delete stored information we no longer need.&lt;/p&gt;

&lt;p&gt;It also lowers the brain resources required for retrieving those memories we want to retain, similar to the ease of finding important documents on a neatly organized, clutter-free desk. In this way, sleep helps you retain everything you need and nothing that you don’t, improving the ease of memory recollection.&lt;/p&gt;

&lt;p&gt;Said another way, forgetting is the price we pay for remembering.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;sleep helps us remember what we want, and clears out memories of unimportant or painful events&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The results were clear. Sleep powerfully, yet very selectively, boosted the retention of those words previously tagged for “remembering,” yet actively avoided the strengthening of those memories tagged for “forgetting.” Participants who did not sleep showed no such impressive parsing and differential saving of the memories.&lt;/p&gt;

&lt;p&gt;We had learned a subtle, but important, lesson: sleep was far more intelligent than we had once imagined.&lt;/p&gt;

&lt;p&gt;Counter to earlier assumptions in the twentieth and twenty-first centuries, sleep does not offer a general, nonspecific (and hence verbose) preservation of all the information you learn during the day.&lt;/p&gt;

&lt;p&gt;Instead, sleep is able to offer a far more discerning hand in memory improvement: one that preferentially picks and chooses what information is, and is not, ultimately strengthened.&lt;/p&gt;

&lt;p&gt;Sleep accomplishes this by using meaningful tags that have been hung onto those memories during initial learning, or potentially identified during sleep itself.&lt;/p&gt;

&lt;p&gt;Numerous studies have shown a similarly intelligent form of sleep-dependent memory selection across both daytime naps and a full night of sleep.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-for-learning-complex-and-novel-skills-like-typing-piano-etc&quot;&gt;Sleep for learning complex and novel skills, like typing, piano, etc&lt;/h3&gt;

&lt;p&gt;The term “muscle memory” is a misnomer.&lt;/p&gt;

&lt;p&gt;Muscles themselves have no such memory: a muscle that is not connected to a brain cannot perform any skilled actions, nor does a muscle store skilled routines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Muscle memory is, in fact, brain memory&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Training and strengthening muscles can help you better execute a skilled memory routine, but the routine itself — the memory program — resides firmly and exclusively within the brain.&lt;/p&gt;

&lt;p&gt;Years before I explored the effects of sleep on fact-based, textbook-like learning, I examined motor skill memory.&lt;/p&gt;

&lt;p&gt;[A] transformative experience happened some years later while I was obtaining my PhD. It was 2000, and the scientific community had proclaimed that the next ten years would be “The Decade of the Brain,” forecasting (accurately, as it turned out) what would be remarkable progress within the neurosciences.&lt;/p&gt;

&lt;p&gt;I had been asked to give a public lecture on the topic of sleep at a celebratory event… After my lecture, a distinguished-looking gentleman with a kindly affect, dressed in a tweed suit jacket with a subtle yellow-green hue that I still vividly recall to this day, approached me.&lt;/p&gt;

&lt;p&gt;It was a brief conversation, but one of the most scientifically important of my life.&lt;/p&gt;

&lt;p&gt;He thanked me for the presentation, and told me that he was a pianist. He said he was intrigued by my description of sleep as an active brain state, one in which we may review and even strengthen those things we have previously learned.&lt;/p&gt;

&lt;p&gt;Then came a comment that would leave me reeling, and trigger a major focus of my research for years to come.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“As a pianist,” he said, “I have an experience that seems far too frequent to be chance. I will be practicing a particular piece, even late into the evening, and I cannot seem to master it. Often, I make the same mistake at the same place in a particular movement. I go to bed frustrated. But when I wake up the next morning and sit back down at the piano, I can just play, perfectly.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;“I can just play.”&lt;/p&gt;

&lt;p&gt;The words reverberated in my mind as I tried to compose a response. I told the gentleman that it was a fascinating idea, and it was certainly possible that sleep assisted musicianship and led to error-free performance, but that I knew of no scientific evidence to support the claim.&lt;/p&gt;

&lt;p&gt;He smiled, seeming unfazed by the absence of empirical affirmation, thanked me again for my lecture, and walked toward the reception hall.&lt;/p&gt;

&lt;p&gt;I, on the other hand, remained in the auditorium, realizing that this gentleman had just told me something that violated the most repeated and entrusted teaching edict: practice makes perfect.&lt;/p&gt;

&lt;p&gt;Not so, it seemed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Perhaps it was practice, with sleep, that makes perfect?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;studies-and-evidence-for-sleep-leading-to-mastery-of-difficult-material&quot;&gt;Studies and evidence for sleep leading to mastery of difficult material&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;The author goes into the studies he did to determine the effects of sleep on “finishing” the work that’s begun with deliberate practice&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I took a large group of right-handed individuals and had them learn to type a number sequence on a keyboard with their left hand, such as 4-1-3-2-4, as quickly and as accurately as possible.&lt;/p&gt;

&lt;p&gt;Like learning a piano scale, subjects practiced the motor skill sequence over and over again, for a total of twelve minutes, taking short breaks throughout.&lt;/p&gt;

&lt;p&gt;Unsurprisingly, the participants improved in their performance across the training session; practice, after all, is supposed to make perfect.&lt;/p&gt;

&lt;p&gt;We then tested the participants twelve hours later. Half of the participants had learned the sequence in the morning and were tested later that evening after remaining awake across the day. The other half of the subjects learned the sequence in the evening and we retested them the next morning after a similar twelve-hour delay, but one that contained a full eight-hour night of sleep.&lt;/p&gt;

&lt;p&gt;Those who remained awake across the day showed no evidence of a significant improvement in performance.&lt;/p&gt;

&lt;p&gt;However, fitting with the pianist’s original description, &lt;strong&gt;those who were tested after the very same time delay of twelve hours, but that spanned a night of sleep, showed a striking 20 percent jump in performance speed and a near 35 percent improvement in accuracy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Importantly, those participants who learned the motor skill in the morning—and who showed no improvement that evening—did go on to show an identical bump up in performance when retested after a further twelve hours, now after they, too, had had a full night’s sleep.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In other words, your brain will continue to improve skill memories in the absence of any further practice. It is really quite magical. Yet, that delayed, “offline” learning occurs exclusively across a period of sleep, and not across equivalent time periods spent awake, regardless of whether the time awake or time asleep comes first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Practice does not make perfect. It is practice, followed by a night of sleep, that leads to perfection.&lt;/p&gt;

&lt;p&gt;We went on to show that these memory-boosting benefits occur no matter whether you learn a short or a very long motor sequence (e.g., 4-3-1-2 versus 4-2-3-4-2-3-1-4-3-4-1-4), or when using one hand (unimanual) or both (bimanual, similar to a pianist).&lt;/p&gt;

&lt;p&gt;Analyzing the individual elements of the motor sequence, such as 4-1-3-2-4, allowed me to discover how, precisely, sleep was perfecting skill.&lt;/p&gt;

&lt;p&gt;Even after a long period of initial training, participants would consistently struggle with particular transitions within the sequence. These problem points stuck out like a sore thumb when I looked at the speed of the keystrokes.&lt;/p&gt;

&lt;p&gt;There would be a far longer pause, or consistent error, at specific transitions.&lt;/p&gt;

&lt;p&gt;For example, rather than seamlessly typing 4-1-3-2-4, 4-1-3-2-4, a participant would instead type: 4-1-3 [pause] 2-4, 4-1-3 [pause] 2-4.&lt;/p&gt;

&lt;p&gt;They were chunking the motor routine into pieces, as if attempting the sequences all in one go was just too much.&lt;/p&gt;

&lt;p&gt;Different people had different pause problems at different points in the routine, but almost all people had one or two of these difficulties. I assessed so many participants that I could actually tell where their unique difficulties in the motor routine were just by listening to their typing during training.&lt;/p&gt;

&lt;p&gt;When I tested participants after a night of sleep, however, my ears heard something very different.&lt;/p&gt;

&lt;p&gt;I knew what was happening even before I analyzed the data: mastery. Their typing, post-sleep, was now fluid and unbroken. Gone was the staccato performance, replaced by seamless automaticity, which is the ultimate goal of motor learning: 4-1-3-2-4, 4-1-3-2-4, 4-1-3-2-4, rapid and nearly perfect.&lt;/p&gt;

&lt;p&gt;Sleep had systematically identified where the difficult transitions were in the motor memory and smoothed them out.&lt;/p&gt;

&lt;p&gt;This finding rekindled the words of the pianist I’d met: “but when I wake up the next morning and sit back down at the piano, I can just play, perfectly.”&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;what-do-you-lose-if-you-chop-off-the-last-hour-or-two-of-your-planned-sleep-time&quot;&gt;What do you lose, if you “chop off” the last hour or two of your planned sleep time?&lt;/h3&gt;

&lt;p&gt;My final discovery, in what spanned almost a decade of research, identified the type of sleep responsible for the overnight motor-skill enhancement, carrying with it societal and medical lessons.&lt;/p&gt;

&lt;p&gt;The increases in speed and accuracy, underpinned by efficient automaticity, were directly related to the amount of stage 2 NREM, especially in the last two hours of an eight-hour night of sleep (e.g., from five to seven a.m., should you have fallen asleep at eleven p.m.).&lt;/p&gt;

&lt;p&gt;Indeed, it was the number of those wonderful sleep spindles in the last two hours of the late morning — the time of night with the richest spindle bursts of brainwave activity — that were linked with the offline memory boost.&lt;/p&gt;

&lt;p&gt;More striking was the fact that the increase of these spindles after learning was detected only in regions of the scalp that sit above the motor cortex (just in front of the crown of your head), and not in other areas. The greater the local increase in sleep spindles over the part of the brain we had forced to learn the motor skill exhaustively, the better the performance upon awakening.&lt;/p&gt;

&lt;p&gt;Many other groups have found a similar “local-sleep”-and-learning effect. When it comes to motor-skill memories, the brainwaves of sleep were acting like a good masseuse—you still get a full body massage, but they will place special focus on areas of the body that need the most help. In the same way, sleep spindles bathe all parts of the brain, but a disproportionate emphasis will be placed on those parts of the brain that have been worked hardest with learning during the day.&lt;/p&gt;

&lt;p&gt;Perhaps more relevant to the modern world is the time-of-night effect we discovered.&lt;/p&gt;

&lt;p&gt;Those last two hours of sleep are precisely the window that many of us feel it is okay to cut short to get a jump start on the day. As a result, we miss out on this feast of late-morning sleep spindles.&lt;/p&gt;

&lt;p&gt;It also brings to mind the prototypical Olympic coach who stoically has her athletes practicing late into the day, only to have them wake in the early hours of the morning and return to practice.&lt;/p&gt;

&lt;p&gt;In doing so, coaches may be innocently but effectively denying an important phase of motor memory development within the brain — one that fine-tunes skilled athletic performance.&lt;/p&gt;

&lt;p&gt;When you consider that very small performance differences often separate winning a gold medal from a last-place finish in professional athletics, then any competitive advantage you can gain, such as that naturally offered by sleep, can help determine whether or not you will hear your national anthem echo around the stadium.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-physical-performance&quot;&gt;Sleep and physical performance&lt;/h3&gt;

&lt;p&gt;I back up these claims with examples from the more than 750 scientific studies that have investigated the relationship between sleep and human performance, many of which have studied professional and elite athletes specifically.&lt;/p&gt;

&lt;p&gt;Obtain anything less than eight hours of sleep a night, and especially less than six hours a night, and the following happens:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;time to physical exhaustion drops by 10 to 30 percent, and aerobic output is significantly reduced.&lt;/li&gt;
  &lt;li&gt;Similar impairments are observed in limb extension force and vertical jump height, together with decreases in peak and sustained muscle strength.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add to this marked impairments in cardiovascular, metabolic, and respiratory capabilities that hamper an underslept body, including faster rates of lactic acid buildup, reductions in blood oxygen saturation, and converse increases in blood carbon dioxide, due in part to a reduction in the amount of air that the lungs can expire.&lt;/p&gt;

&lt;p&gt;Even the ability of the body to cool itself during physical exertion through sweating — a critical part of peak performance — is impaired by sleep loss.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Even teams that are aware of sleep’s importance before a game are surprised by my declaration of the equally, if not more, essential need for sleep in the days after a game.&lt;/p&gt;

&lt;p&gt;Post-performance sleep accelerates physical recovery from common inflammation, stimulates muscle repair, and helps restock cellular energy in the form of glucose and glycogen.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-deprivation-and-driving&quot;&gt;Sleep deprivation and driving&lt;/h3&gt;

&lt;p&gt;One brain function that buckles under even the smallest dose of sleep deprivation is concentration.&lt;/p&gt;

&lt;p&gt;The deadly societal consequences of these concentration failures play out most obviously and fatally in the form of drowsy driving.&lt;/p&gt;

&lt;p&gt;Every hour, someone dies in a traffic accident in the US due to a fatigue-related error.&lt;/p&gt;

&lt;p&gt;There are two main culprits of drowsy-driving accidents:&lt;/p&gt;

&lt;p&gt;The first is people completely falling asleep at the wheel. This happens infrequently, however, and usually requires an individual to be acutely sleep-deprived (having gone without shut-eye for  twenty-plus hours).&lt;/p&gt;

&lt;p&gt;The second, more common cause is a momentary lapse in concentration, called a microsleep. These last for just a few seconds, during which time the eyelid will either partially or fully close.&lt;/p&gt;

&lt;p&gt;They are usually suffered by individuals who are chronically sleep restricted, &lt;strong&gt;defined as getting less than seven hours of sleep a night on a routine basis&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;During a microsleep, your brain becomes blind to the outside world for a brief moment—and not just the visual domain, but in all channels of perception.&lt;/p&gt;

&lt;p&gt;Most of the time you have no awareness of the event. More problematic is that your decisive control of motor actions, such as those necessary for operating a steering wheel or a brake pedal, will momentarily cease.&lt;/p&gt;

&lt;p&gt;As a result, you don’t need to fall asleep for ten to fifteen seconds to die while driving.&lt;/p&gt;

&lt;p&gt;Two seconds will do it. &lt;strong&gt;A two-second microsleep at 30 mph with a modest angle of drift can result in your vehicle transitioning entirely from one lane to the next.&lt;/strong&gt; This includes into oncoming traffic. Should this happen at 60 mph, it may be the last microsleep you ever have.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;we-underestimate-your-sleep-deprivation-induced-performance-disability&quot;&gt;We underestimate your sleep-deprivation-induced performance disability&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;“I’m not sleep deprived”, you say. “Besides, even if I am sleep deprived, I’m still OK at doing what I need to “do.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The third key finding, common to both of these studies, is the one I personally think is the most harmful of all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When participants were asked about their subjective sense of how impaired they were, they consistently underestimated their degree of performance disability.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was a miserable predictor of how bad their performance actually, objectively was.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is the equivalent of someone at a bar who has had far too many drinks picking up his car keys and confidently telling you, “I’m fine to drive home.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Similarly problematic is baseline resetting.&lt;/p&gt;

&lt;p&gt;With chronic sleep restriction over months or years, an individual will actually acclimate to their impaired performance, lower alertness, and reduced energy levels.&lt;/p&gt;

&lt;p&gt;That low-level exhaustion becomes their accepted norm, or baseline. Individuals fail to recognize how their perennial state of sleep deficiency has come to compromise their mental aptitude and physical vitality, including the slow accumulation of ill health.&lt;/p&gt;

&lt;p&gt;A link between the former and latter is rarely made in their mind. Based on epidemiological studies of average sleep time, millions of individuals unwittingly spend years of their life in a sub-optimal state of psychological and physiological functioning, never maximizing their potential of mind or body due to their blind persistence in sleeping too little.&lt;/p&gt;

&lt;p&gt;Sixty years of scientific research prevent me from accepting anyone who tells me that he or she can “get by on just four or five hours of sleep a night just fine.”&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;driving-while-sleep-deprived-is-about-as-bad-as-driving-drunk&quot;&gt;Driving while sleep deprived is about as bad as driving drunk&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Sleep deprivation is about the same as being legally drunk. If you’d consider it unethical to get drunk and drive, or drunk while working, or drunk while trying to work through a hard conversation with your significant other, consider getting more sleep&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In a disturbing later study, researchers in Australia took two groups of healthy adults, one of whom they got drunk to the legal driving limit (.08 percent blood alcohol), the other of whom they sleep-deprived for a single night.&lt;/p&gt;

&lt;p&gt;Both groups performed the concentration test to assess attention performance, specifically the number of lapses.&lt;/p&gt;

&lt;p&gt;After being awake for nineteen hours, people who were sleep-deprived were as cognitively impaired as those who were legally drunk.&lt;/p&gt;

&lt;p&gt;Said another way, if you wake up at seven a.m. and remain awake throughout the day, then go out socializing with friends until late that evening, yet drink no alcohol whatsoever, by the time you are driving home at two a.m. you are as cognitively impaired in your ability to attend to the road and what is around you as a legally drunk driver.&lt;/p&gt;

&lt;p&gt;In fact, participants in the above study started their nosedive in performance after just fifteen hours of being awake (ten p.m. in the above scenario).&lt;/p&gt;

&lt;p&gt;Drunk driving and drowsy driving are deadly propositions in their own right, but what happens when someone combines them?&lt;/p&gt;

&lt;p&gt;It is a relevant question, since most individuals are driving drunk in the early-morning hours rather than in the middle of the day, meaning that most drunk drivers are also sleep-deprived.&lt;/p&gt;

&lt;p&gt;We can now monitor driver error in a realistic but safe way using driving simulators.&lt;/p&gt;

&lt;p&gt;With such a virtual machine, a group of researchers examined the number of complete off-road deviations in participants placed under four different experimental conditions:&lt;/p&gt;

&lt;p&gt;(1) eight hours of sleep
(2) four hours of sleep
(3) eight hours of sleep plus alcohol to the point of being legally drunk
(4) four hours of sleep plus alcohol to the point of being legally drunk&lt;/p&gt;

&lt;p&gt;Those in the eight-hour sleep group had few, if any, off-road errors.&lt;/p&gt;

&lt;p&gt;Those in the four-hour sleep condition (the second group) had six times more off-road deviations than the sober, well-rested individuals.&lt;/p&gt;

&lt;p&gt;The same degree of driving impairment was true of the third group, who had eight hours of sleep but were legally drunk.&lt;/p&gt;

&lt;p&gt;Driving drunk or driving drowsy were both dangerous, and equally dangerous.&lt;/p&gt;

&lt;p&gt;A reasonable expectation was that performance in the fourth group of participants would reflect the additive impact of these two groups: four hours of sleep plus the effect of alcohol (i.e., twelve times more off-road deviations). &lt;strong&gt;It was far worse&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This group of participants drove off the road almost thirty times more than the well-rested, sober group.&lt;/p&gt;

&lt;p&gt;The heady cocktail of sleep loss and alcohol was not additive, but instead multiplicative.&lt;/p&gt;

&lt;p&gt;They magnified each other, like two drugs whose effects are harmful by themselves but, when taken together, interact to produce truly dire consequences.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;This coming week, more than 2 million people in the US will fall asleep while driving their motor vehicle.&lt;/p&gt;

&lt;p&gt;That’s more than 250,000 every day, with more such events during the week than weekends for obvious reasons. More than 56 million Americans admit to struggling to stay awake at the wheel of a car each month.&lt;/p&gt;

&lt;p&gt;As a result, 1.2 million accidents are caused by sleepiness each year in the United States.&lt;/p&gt;

&lt;p&gt;Said another way: for every thirty seconds you’ve been reading this book, there has been a car accident somewhere in the US caused by sleeplessness.&lt;/p&gt;

&lt;p&gt;It is more than probable that someone has lost their life in a fatigue-related car accident during the time you have been reading this chapter.&lt;/p&gt;

&lt;p&gt;You may find it surprising to learn that vehicle accidents caused by drowsy driving exceed those caused by alcohol and drugs combined.&lt;/p&gt;

&lt;p&gt;Drowsy driving alone is worse than driving drunk.&lt;/p&gt;

&lt;p&gt;That may seem like a controversial or irresponsible thing to say, and I do not wish to trivialize the lamentable act of drunk driving by any means.&lt;/p&gt;

&lt;p&gt;Yet my statement is true for the following simple reason: drunk drivers are often late in braking, and late in making evasive maneuvers.&lt;/p&gt;

&lt;p&gt;But when you fall asleep, or have a microsleep, you stop reacting altogether.&lt;/p&gt;

&lt;p&gt;A person who experiences a microsleep or who has fallen asleep at the wheel does not brake at all, nor do they make any attempt to avoid the accident. As a result, car crashes caused by drowsiness tend to be far more deadly than those caused by alcohol or drugs. Said crassly, when you fall asleep at the wheel of your car on a freeway, there is now a one-ton missile traveling at 65 miles per hour, and no one is in control.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;h3 id=&quot;sleep-and-emotions&quot;&gt;Sleep and emotions&lt;/h3&gt;

&lt;p&gt;Many of us know that inadequate sleep plays havoc with our emotions. We even recognize it in others.&lt;/p&gt;

&lt;p&gt;Consider another common scenario of a parent holding a young child who is screaming or crying and, in the midst of the turmoil, turns to you and says, “Well, Steven just didn’t get enough sleep last night.”&lt;/p&gt;

&lt;p&gt;Universal parental wisdom knows that bad sleep the night before leads to a bad mood and emotional reactivity the next day…&lt;/p&gt;

&lt;p&gt;Analysis of the brain scans revealed the largest effects I have measured in my research to date. A structure located in the left and right sides of the brain, called the amygdala — a key hot spot for triggering strong emotions such as anger and rage, and linked to the fight-or-flight response — showed well over a 60 percent amplification in emotional reactivity in the participants who were sleep-deprived.&lt;/p&gt;

&lt;p&gt;In contrast, the brain scans of those individuals who were given a full night’s sleep evinced a controlled, modest degree of reactivity in the amygdala, despite viewing the very same images.&lt;/p&gt;

&lt;p&gt;It was as though, without sleep, our brain reverts to a primitive pattern of uncontrolled reactivity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We produce unmetered, inappropriate emotional reactions, and are unable to place events into a broader or considered context&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-substance-abuse&quot;&gt;Sleep and Substance Abuse&lt;/h3&gt;

&lt;p&gt;Sleep disturbance is a recognized hallmark associated with addictive substance use.&lt;/p&gt;

&lt;p&gt;Insufficient sleep also determines relapse rates in numerous addiction disorders, associated with reward cravings that are unmetered, lacking control from the rational head office of the brain’s prefrontal cortex.&lt;/p&gt;

&lt;p&gt;Relevant from a prevention standpoint, insufficient sleep during childhood significantly predicts early onset of drug and alcohol use in that same child during their later adolescent years, even when controlling for other high-risk traits, such as anxiety, attention deficits, and parental history of drug use.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-alzheimers&quot;&gt;Sleep and Alzheimers&lt;/h3&gt;

&lt;p&gt;Around the same time that we were conducting our studies, Dr. Maiken Nedergaard at the University of Rochester made one of the most spectacular discoveries in the field of sleep research in recent decades.&lt;/p&gt;

&lt;p&gt;Working with mice, Nedergaard found that a kind of sewage network called the glymphatic system exists within the brain. Its name is derived from the body’s equivalent lymphatic system, but it’s composed of cells called glia (from the Greek root word for “glue”).&lt;/p&gt;

&lt;p&gt;Glial cells are distributed throughout your entire brain, situated side by side with the neurons that generate the electrical impulses of your brain.&lt;/p&gt;

&lt;p&gt;Just as the lymphatic system drains contaminants from your body, the glymphatic system collects and removes dangerous metabolic contaminants generated by the hard work performed by neurons in your brain, rather like a support team surrounding an elite athlete.&lt;/p&gt;

&lt;p&gt;Although the glymphatic system — the support team — is somewhat active during the day, Nedergaard and her team discovered that it is during sleep that this neural sanitization work kicks into high gear.&lt;/p&gt;

&lt;p&gt;Associated with the pulsing rhythm of deep NREM sleep comes a ten- to twentyfold increase in effluent expulsion from the brain.&lt;/p&gt;

&lt;p&gt;In what can be described as a nighttime power cleanse, the purifying work of the glymphatic system is accomplished by cerebrospinal fluid that bathes the brain.&lt;/p&gt;

&lt;p&gt;Nedergaard made a second astonishing discovery, which explained why the cerebrospinal fluid is so effective in flushing out metabolic debris at night.&lt;/p&gt;

&lt;p&gt;The glial cells of the brain were shrinking in size by up to 60 percent during NREM sleep, enlarging the space around the neurons and allowing the cerebrospinal fluid to proficiently clean out the metabolic refuse left by the day’s neural activity.&lt;/p&gt;

&lt;p&gt;Think of the buildings of a large metropolitan city physically shrinking at night, allowing municipal cleaning crews easy access to pick up garbage strewn in the streets, followed by a good pressure-jet treatment of every nook and cranny.&lt;/p&gt;

&lt;p&gt;When we wake each morning, our brains can once again function efficiently thanks to this deep cleansing.&lt;/p&gt;

&lt;p&gt;So what does this have to do with Alzheimer’s disease? One piece of toxic debris evacuated by the glymphatic system during sleep is amyloid protein—the poisonous element associated with Alzheimer’s disease.&lt;/p&gt;

&lt;p&gt;Other dangerous metabolic waste elements that have links to Alzheimer’s disease are also removed by the cleaning process during sleep, including a protein called tau, as well as stress molecules produced by neurons when they combust energy and oxygen during the day.&lt;/p&gt;

&lt;p&gt;Should you experimentally prevent a mouse from getting NREM sleep, keeping it awake instead, there is an immediate increase in amyloid deposits within the brain. Without sleep, an escalation of poisonous Alzheimer’s-related protein accumulated in the brains of the mice, together with several other toxic metabolites.&lt;/p&gt;

&lt;p&gt;Phrased differently, and perhaps more simply, wakefulness is low-level brain damage, while sleep is neurological sanitation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;From this cascade comes a prediction: &lt;strong&gt;getting too little sleep across the adult life span will significantly raise your risk of developing Alzheimer’s disease.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Precisely this relationship has now been reported in numerous epidemiological studies, including those individuals suffering from sleep disorders such as insomnia and sleep apnea.&lt;/p&gt;

&lt;p&gt;Parenthetically, and unscientifically, I have always found it curious that Margaret Thatcher and Ronald Reagan — two heads of state that were very vocal, if not proud, about sleeping only four to five hours a night — both went on to develop the ruthless disease.&lt;/p&gt;

&lt;p&gt;The current US president, Donald Trump — also a vociferous proclaimer of sleeping just a few hours each night — may want to take note.&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;daylight-savings-time-helps-us-see-what-a-single-hour-reduction-in-sleep-brings-about&quot;&gt;Daylight Savings Time helps us see what a single-hour reduction in sleep brings about&lt;/h3&gt;

&lt;p&gt;In the Northern Hemisphere, the switch to daylight savings time in March results in most people losing an hour of sleep opportunity.&lt;/p&gt;

&lt;p&gt;Should you tabulate millions of daily hospital records, as researchers have done, you discover that this seemingly trivial sleep reduction comes with a frightening spike in heart attacks the following day.&lt;/p&gt;

&lt;p&gt;Impressively, it works both ways. In the autumn within the Northern Hemisphere, when the clocks move forward and we gain an hour of sleep opportunity time, rates of heart attacks plummet the day after.&lt;/p&gt;

&lt;p&gt;A similar rise-and-fall relationship can be seen with the number of traffic accidents, proving that the brain, by way of attention lapses and microsleeps, is just as sensitive as the heart to very small perturbations of sleep.&lt;/p&gt;

&lt;p&gt;Most people think nothing of losing an hour of sleep for a single night, believing it to be trivial and inconsequential. It is anything but.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-deprivation-and-insulin-resistence&quot;&gt;Sleep Deprivation and Insulin Resistence&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;insulin resistance as the root of metabolic syndrome (obesity, heart disease, etc is covered in great depth in &lt;a href=&quot;/notes-gary-taubes-case-against-sugar&quot;&gt;The Case Against Sugar&lt;/a&gt; and &lt;a href=&quot;/notes-gary-taubes-why-we-get-fat&quot;&gt;Why We Get Fat&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;By taking small tissue samples, or biopsies, from participants at the end of the above experiments, we can examine how the cells of the body are operating.&lt;/p&gt;

&lt;p&gt;After participants had been restricted to four to five hours of sleep for a week, the cells of these tired individuals had become far less receptive to insulin.&lt;/p&gt;

&lt;p&gt;In this sleep-deprived state, the cells were stubbornly resisting the message from insulin and refusing to open up their surface channels.&lt;/p&gt;

&lt;p&gt;The cells were repelling rather than absorbing the dangerously high levels of glucose.&lt;/p&gt;

&lt;p&gt;The roadside drains were effectively closed shut, leading to a rising tide of blood sugar and a pre-diabetic state of hyperglycemia.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-deprivation-and-the-immune-system&quot;&gt;Sleep Deprivation and the Immune System&lt;/h3&gt;

&lt;p&gt;Prather retrospectively separated the participants into four sub-groups on the basis of how much sleep they had obtained in the week before being exposed to the common cold virus:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;less than five hours of sleep&lt;/li&gt;
  &lt;li&gt;five to six hours of sleep&lt;/li&gt;
  &lt;li&gt;six to seven hours of sleep&lt;/li&gt;
  &lt;li&gt;seven or more hours of sleep&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There was a clear, linear relationship with infection rate.&lt;/p&gt;

&lt;p&gt;The less sleep an individual was getting in the week before facing the active common cold virus, the more likely it was that they would be infected and catch a cold. In those sleeping five hours on average, the infection rate was almost 50 percent. In those sleeping seven hours or more a night in the week prior, the infection rate was just 18 percent.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-emotional-intelligence&quot;&gt;Sleep and Emotional Intelligence&lt;/h3&gt;

&lt;p&gt;Having had a full night of sleep, which contained REM sleep, participants demonstrated a beautifully precise tuning curve of emotional face recognition, rather like a stretched out V shape.&lt;/p&gt;

&lt;p&gt;When navigating the cornucopia of facial expressions we showed them inside the MRI scanner, their brains had no problem deftly separating one emotion from another across the delicately changing gradient, and the accuracy of their own ratings proved this to be similarly true.&lt;/p&gt;

&lt;p&gt;It was effortless to disambiguate friendly and approachable signals from those intimating even minor threat as the emotional tide changed toward the foreboding. Confirming the importance of the dream state, the better the quality of REM sleep from one individual to the next across that rested night, the more precise the tuning within the emotional decoding networks of the brain the next day.&lt;/p&gt;

&lt;p&gt;Through this platinum-grade nocturnal service, better REM-sleep quality at night provided superior comprehension of the social world the next day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But when those same participants were deprived of sleep, including the essential influence of REM sleep, they could no longer distinguish one emotion from another with accuracy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The tuning V of the brain had been changed, rudely pulled all the way up from the base and flattened into a horizontal line, as if the brain was in a state of generalized hypersensitivity without the ability to map gradations of emotional signals from the outside world…&lt;/p&gt;

&lt;p&gt;By removing REM sleep, we had, quite literally, removed participants’ levelheaded ability to read the social world around them.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-creativity&quot;&gt;Sleep and Creativity&lt;/h3&gt;

&lt;p&gt;Perhaps the most striking proof of sleep-inspired insight, and one I most frequently describe when giving talks to start-up, tech, or innovative business companies to help them prioritize employee sleep, comes from a study conducted by Dr. Ullrich Wagner at the University of Lübeck, Germany.&lt;/p&gt;

&lt;p&gt;Trust me when I say you’d really rather not be a participant in these experiments.&lt;/p&gt;

&lt;p&gt;Not because you have to suffer extreme sleep deprivation for days, but because you have to work through hundreds of miserably laborious number-string problems, almost like having to do long division for an hour or more.&lt;/p&gt;

&lt;p&gt;Actually “laborious” is far too generous a description. It’s possible some people have lost the will to live while trying to sit and solve hundreds of these number problems!&lt;/p&gt;

&lt;p&gt;I know, I’ve taken the test myself.&lt;/p&gt;

&lt;p&gt;You will be told that you can work through these problems using specific rules that are provided at the start of the experiment.&lt;/p&gt;

&lt;p&gt;Sneakily, what the researchers do not tell you about is the existence of a hidden rule, or shortcut, common across all the problems.&lt;/p&gt;

&lt;p&gt;If you figure out this embedded cheat, you can solve many more problems in a far shorter time.&lt;/p&gt;

&lt;p&gt;I’ll return to this shortcut in just a minute. After having had participants perform hundreds of these problems, they were to return twelve hours later and once again work through hundreds more of these mind-numbing problems.&lt;/p&gt;

&lt;p&gt;However, at the end of this second test session, the researchers asked whether the subjects had cottoned on to the hidden rule.&lt;/p&gt;

&lt;p&gt;Some of the participants spent that twelve-hour time delay awake across the day, while for others, that time window included a full eight-hour night of sleep.&lt;/p&gt;

&lt;p&gt;After time spent awake across the day, despite the chance to consciously deliberate on the problem as much as they desired, a rather paltry 20 percent of participants were able to extract the embedded shortcut.&lt;/p&gt;

&lt;p&gt;Things were very different for those participants who had obtained a full night of sleep—one dressed with late-morning, REM-rich slumber.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Almost 60 percent returned and had the “ah-ha!” moment of spotting the hidden cheat—which is a threefold difference in creative solution insight afforded by sleep!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;insomnia&quot;&gt;Insomnia&lt;/h3&gt;

&lt;p&gt;Other factors, however, come from within a person, and are innate biological causes of insomnia.&lt;/p&gt;

&lt;p&gt;Noted in the clinical criteria described above, these factors cannot be a symptom of a disease (e.g., Parkinson’s disease) or a side effect of a medication (e.g., asthma medication).&lt;/p&gt;

&lt;p&gt;Rather, the cause(s) of the sleep problem must stand alone in order for you to be primarily suffering from true insomnia. The two most common triggers of chronic insomnia are psychological:&lt;/p&gt;

&lt;p&gt;(1) emotional concerns, or worry
(2) emotional distress, or anxiety.&lt;/p&gt;

&lt;p&gt;In this fast-paced, information-overloaded modern world, one of the few times that we stop our persistent informational consumption and inwardly reflect is when our heads hit the pillow.&lt;/p&gt;

&lt;p&gt;There is no worse time to consciously do this. Little wonder that sleep becomes nearly impossible to initiate or maintain when the spinning cogs of our emotional minds start churning, anxiously worrying about things we did today, things that we forgot to do, things that we must face in the coming days, and even those far in the future.&lt;/p&gt;

&lt;p&gt;That is no kind of invitation for beckoning the calm brainwaves of sleep into your brain, peacefully allowing you to drift off into a full night of restful slumber.&lt;/p&gt;

&lt;p&gt;Since psychological distress is a principal instigator of insomnia, researchers have focused on examining the biological causes that underlie emotional turmoil.&lt;/p&gt;

&lt;p&gt;One common culprit has become clear: an overactive sympathetic nervous system, which, as we have discussed in previous chapters, is the body’s aggravating fight-or-flight mechanism.&lt;/p&gt;

&lt;p&gt;The sympathetic nervous system switches on in response to threat and acute stress that, in our evolutionary past, was required to mobilize a legitimate fight-or-flight response.&lt;/p&gt;

&lt;p&gt;The physiological consequences are increased heart rate, blood flow, metabolic rate, the release of stress-negotiating chemicals such as cortisol, and increased brain activation, all of which are beneficial in the acute moment of true threat or danger.&lt;/p&gt;

&lt;p&gt;However, the fight-or-flight response is not meant to be left in the “on” position for any prolonged period of time.&lt;/p&gt;

&lt;p&gt;As we have already touched upon in earlier chapters, chronic activation of the flight-or-flight nervous system causes myriad health problems, one of which is now recognized to be insomnia.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;light-specifically-blue-light-or-light-from-screens-and-sleep&quot;&gt;Light (specifically blue light, or light from screens) and sleep&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;stop looking at your phone right before going to bed. Please.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Compared to reading a printed book, reading on an iPad suppressed melatonin release by over 50 percent at night.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Indeed, iPad reading delayed the rise of melatonin by up to three hours, relative to the natural rise in these same individuals when reading a printed book.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When reading on the iPad, their melatonin peak, and thus instruction to sleep, did not occur until the early-morning hours, rather than before midnight.&lt;/p&gt;

&lt;p&gt;Unsurprisingly, individuals took longer to fall asleep after iPad reading relative to print-copy reading.&lt;/p&gt;

&lt;p&gt;But did reading on the iPad actually change sleep quantity/quality above and beyond the timing of melatonin?&lt;/p&gt;

&lt;p&gt;It did, in three concerning ways.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;First, individuals lost significant amounts of REM sleep following iPad reading.&lt;/li&gt;
  &lt;li&gt;Second, the research subjects felt less rested and sleepier throughout the day following iPad use at night.&lt;/li&gt;
  &lt;li&gt;Third was a lingering aftereffect, with participants suffering a ninety-minute lag in their evening rising melatonin levels for several days after iPad use ceased—almost like a digital hangover effect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using LED devices at night impacts our natural sleep rhythms, the quality of our sleep, and how alert we feel during the day.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-alcohol&quot;&gt;Sleep and Alcohol&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;I used to regularly have a glass of wine in the evenings, shortly before bed. I stopped doing that.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Give alcohol a little more time, and it begins to sedate other parts of the brain, dragging them down into a stupefied state, just like the prefrontal cortex.&lt;/p&gt;

&lt;p&gt;You begin to feel sluggish as the inebriated torpor sets in. This is your brain slipping into sedation. Your desire and ability to remain conscious are decreasing, and you can let go of consciousness more easily.&lt;/p&gt;

&lt;p&gt;I am very deliberately avoiding the term “sleep,” however, because sedation is not sleep.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alcohol sedates you out of wakefulness, but it does not induce natural sleep.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The electrical brainwave state you enter via alcohol is not that of natural sleep; rather, it is akin to a light form of anesthesia.&lt;/p&gt;

&lt;p&gt;Yet this is not the worst of it when considering the effects of the evening nightcap on your slumber.&lt;/p&gt;

&lt;p&gt;More than its artificial sedating influence, alcohol dismantles an individual’s sleep in an additional two ways:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First, alcohol fragments sleep, littering the night with brief awakenings.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alcohol-infused sleep is therefore not continuous and, as a result, not restorative. Unfortunately, most of these nighttime awakenings go unnoticed by the sleeper since they don’t remember them. Individuals therefore fail to link alcohol consumption the night before with feelings of next-day exhaustion caused by the undetected sleep disruption sandwiched in between. Keep an eye out for that coincidental relationship in yourself and/or others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second, alcohol is one of the most powerful suppressors of REM sleep that we know of.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When the body metabolizes alcohol it produces by-product chemicals called aldehydes and ketones. The aldehydes in particular will block the brain’s ability to generate REM sleep. It’s rather like the cerebral version of cardiac arrest, preventing the pulsating beat of brainwaves that otherwise power dream sleep.&lt;/p&gt;

&lt;p&gt;People consuming even moderate amounts of alcohol in the afternoon and/or evening are thus depriving themselves of dream sleep…&lt;/p&gt;

&lt;p&gt;You don’t have to be using alcohol to levels of abuse, however, to suffer its deleterious REM-sleep-disrupting consequences, as one study can attest.&lt;/p&gt;

&lt;p&gt;Recall that one function of REM sleep is to aid in memory integration and association: the type of information processing required for developing grammatical rules in new language learning, or in synthesizing large sets of related facts into an interconnected whole.&lt;/p&gt;

&lt;p&gt;To wit, researchers recruited a large group of college students for a seven-day study. The participants were assigned to one of three experimental conditions. On day 1, all the participants learned a novel, artificial grammar, rather like learning a new computer coding language or a new form of algebra. It was just the type of memory task that REM sleep is known to promote.&lt;/p&gt;

&lt;p&gt;Everyone learned the new material to a high degree of proficiency on that first day—around 90 percent accuracy.&lt;/p&gt;

&lt;p&gt;Then, a week later, the participants were tested to see how much of that information had been solidified by the six nights of intervening sleep.&lt;/p&gt;

&lt;p&gt;What distinguished the three groups was the type of sleep they had.&lt;/p&gt;

&lt;p&gt;In the first group — the control condition — participants were allowed to sleep naturally and fully for all intervening nights.&lt;/p&gt;

&lt;p&gt;In the second group, the experimenters got the students a little drunk just before bed on the first night after daytime learning. They loaded up the participants with two to three shots of vodka mixed with orange juice, standardizing the specific blood alcohol amount on the basis of gender and body weight.&lt;/p&gt;

&lt;p&gt;In the third group, they allowed the participants to sleep naturally on the first and even the second night after learning, and then got them similarly drunk before bed on night 3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note that all three groups learned the material on day 1 while sober, and were tested while sober on day 7.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This way, any difference in memory among the three groups could not be explained by the direct effects of alcohol on memory formation or later recall, but must be due to the disruption of the memory facilitation that occurred in between.&lt;/p&gt;

&lt;p&gt;On day 7, participants in the control condition remembered everything they had originally learned, even showing an enhancement of abstraction and retention of knowledge relative to initial levels of learning, just as we’d expect from good sleep.&lt;/p&gt;

&lt;p&gt;In contrast, those who had their sleep laced with alcohol on the first night after learning suffered what can conservatively be described as partial amnesia seven days later, &lt;strong&gt;forgetting more than 50 percent of all that original knowledge.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This fits well with evidence we discussed earlier: that of the brain’s non-negotiable requirement for sleep the first night after learning for the purposes of memory processing.&lt;/p&gt;

&lt;p&gt;The real surprise came in the results of the third group of participants. &lt;strong&gt;Despite getting two full nights of natural sleep after initial learning, having their sleep doused with alcohol on the third night still resulted in almost the same degree of amnesia—40 percent of the knowledge they had worked so hard to establish on day 1 was forgotten.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The overnight work of REM sleep, which normally assimilates complex memory knowledge, had been interfered with by the alcohol.&lt;/p&gt;

&lt;p&gt;More surprising, perhaps, was the realization that the brain is not done processing that knowledge after the first night of sleep.&lt;/p&gt;

&lt;p&gt;Memories remain perilously vulnerable to any disruption of sleep (including that from alcohol) even up to three nights after learning, despite two full nights of natural sleep prior. Framed practically, let’s say that you are a student cramming for an exam on Monday.&lt;/p&gt;

&lt;p&gt;Diligently, you study all of the previous Wednesday. Your friends beckon you to come out that night for drinks, but you know how important sleep is, so you decline.&lt;/p&gt;

&lt;p&gt;On Thursday, friends again ask you to grab a few drinks in the evening, but to be safe, you turn them down and sleep soundly a second night.&lt;/p&gt;

&lt;p&gt;Finally, Friday rolls around — now three nights after your learning session — and everyone is heading out for a party and drinks. Surely, after being so dedicated to slumber across the first two nights after learning, you can now cut loose, knowing those memories have been safely secured and fully processed within your memory banks.&lt;/p&gt;

&lt;p&gt;Sadly, not so. Even now, alcohol consumption will wash away much of that which you learned and can abstract by blocking your REM sleep.&lt;/p&gt;

&lt;p&gt;How long is it before those new memories are finally safe? We actually do not yet know, though we have studies under way that span many weeks. What we do know is that sleep has not finished tending to those newly planted memories by night 3.&lt;/p&gt;

&lt;p&gt;I elicit audible groans when I present these findings to my undergraduates in lectures. The politically incorrect advice I would (of course never) give is this: go to the pub for a drink in the morning. That way, the alcohol will be out of your system before sleep.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-sleeping-pills&quot;&gt;Sleep and Sleeping Pills&lt;/h3&gt;

&lt;p&gt;Most relevant, and a key focus of this chapter, is the (ab)use of prescription sleeping pills. Sleeping pills do not provide natural sleep, can damage health, and increase the risk of life-threatening diseases. We will explore the alternatives that exist for improving sleep and combating insipid insomnia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No past or current sleeping medications on the legal (or illegal) market induce natural sleep.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don’t get me wrong — no one would claim that you are awake after taking prescription sleeping pills. But to suggest that you are experiencing natural sleep would be an equally false assertion.&lt;/p&gt;

&lt;p&gt;The older sleep medications — termed “sedative hypnotics,” such as diazepam — were blunt instruments. They sedated you rather than assisting you into sleep.&lt;/p&gt;

&lt;p&gt;Understandably, many people mistake the former for the latter.&lt;/p&gt;

&lt;p&gt;Most of the newer sleeping pills on the market present a similar situation, though they are slightly less heavy in their sedating effects.&lt;/p&gt;

&lt;p&gt;Sleeping pills, old and new, target the same system in the brain that alcohol does — the receptors that stop your brain cells from firing — and are thus part of the same general class of drugs: sedatives.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;If you compare natural, deep-sleep brainwave activity to that induced by modern-day sleeping pills, such as zolpidem (brand name Ambien) or eszopiclone (brand name Lunesta), the electrical signature, or quality, is deficient.&lt;/p&gt;

&lt;p&gt;The electrical type of “sleep” these drugs produce is lacking in the largest, deepest brainwaves.&lt;/p&gt;

&lt;p&gt;Adding to this state of affairs are a number of unwanted side effects, including next-day grogginess, daytime forgetfulness, performing actions at night of which you are not conscious (or at least have partial amnesia of in the morning), and slowed reaction times during the day that can impact motor skills, such as driving.&lt;/p&gt;

&lt;p&gt;True even of the newer, shorter-acting sleeping pills on the market, these symptoms instigate a vicious cycle.&lt;/p&gt;

&lt;p&gt;The waking grogginess can lead people to reach for more cups of coffee or tea to rev themselves up with caffeine throughout the day and evening.&lt;/p&gt;

&lt;p&gt;That caffeine, in turn, makes it harder for the individual to fall asleep at night, worsening the insomnia. In response, people often take an extra half or whole sleeping pill at night to combat the caffeine, but this only amplifies the next-day grogginess from the drug hangover.&lt;/p&gt;

&lt;p&gt;Even greater caffeine consumption then occurs, perpetuating the downward spiral.&lt;/p&gt;

&lt;p&gt;Another deeply unpleasant feature of sleeping pills is rebound insomnia.&lt;/p&gt;

&lt;p&gt;When individuals stop taking these medications, they frequently suffer far worse sleep, sometimes even worse than the poor sleep that led them to seek out sleeping pills to begin with.&lt;/p&gt;

&lt;p&gt;The cause of rebound insomnia is a type of dependency in which the brain alters its balance of receptors as a reaction to the increased drug dose, trying to become somewhat less sensitive as a way of countering the foreign chemical within the brain. This is also known as drug tolerance.&lt;/p&gt;

&lt;p&gt;But when the drug is stopped, there is a withdrawal process, part of which involves an unpleasant spike in insomnia severity.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleeping-pills-vs-placebos&quot;&gt;Sleeping Pills vs Placebos&lt;/h3&gt;

&lt;p&gt;A recent team of leading medical doctors and researchers examined all published studies to date on newer forms of sedative sleeping pills that most people take.&lt;/p&gt;

&lt;p&gt;They considered sixty-five separate drug-placebo studies, encompassing almost 4,500 individuals.&lt;/p&gt;

&lt;p&gt;Overall, participants subjectively felt they fell asleep faster and slept more soundly with fewer awakenings, relative to the placebo.&lt;/p&gt;

&lt;p&gt;But that’s not what the actual sleep recordings showed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There was no difference in how soundly the individuals slept. Both the placebo and the sleeping pills reduced the time it took people to fall asleep (between ten and thirty minutes), but the change was not statistically different between the two.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In other words, there was no objective benefit of these sleeping pills beyond that which a placebo offered.&lt;/p&gt;

&lt;p&gt;Summarizing the findings, the committee stated that sleeping pills only produced “slight improvements in subjective and polysomnographic sleep latency”—that is, the time it takes to fall asleep.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The committee concluded the report by stating that the effect of current sleeping medications was “rather small and of questionable clinical importance.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleeping-pills-and-damage-to-the-immune-system&quot;&gt;Sleeping Pills and Damage to the Immune System&lt;/h3&gt;

&lt;p&gt;One frequent cause of mortality appears to be higher-than-normal rates of infection. Also discussed in earlier chapters, natural sleep is one of the most powerful boosters of the immune system, helping ward off infection.&lt;/p&gt;

&lt;p&gt;Why, then, do individuals who are taking sleeping pills that purportedly “improve” sleep suffer higher rates of various infections, when the opposite is predicted?&lt;/p&gt;

&lt;p&gt;It is possible that medication-induced sleep does not provide the same restorative immune benefits as natural sleep.&lt;/p&gt;

&lt;p&gt;This would be most troubling for the elderly. Older adults are far more likely to suffer from infections. Alongside newborns, they are the most immunologically vulnerable individuals in our society.&lt;/p&gt;

&lt;p&gt;Older adults are also the heaviest users of sleeping pills, representing more than 50 percent of the individuals prescribed such drugs.&lt;/p&gt;

&lt;p&gt;Based on these coincidental facts, it may be time for medicine to reappraise the prescription frequency of sleeping pills in the elderly.&lt;/p&gt;

&lt;p&gt;Another cause of death linked to sleeping pill use is an increased risk for fatal car accidents. This is most likely caused by the non-restorative sleep such drugs induce and/or the groggy hangover that some suffer, both of which may leave individuals drowsy while driving the next day.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Shouldn’t drug companies be more transparent about the current evidence and risks surrounding sleeping pill use?&lt;/p&gt;

&lt;p&gt;Unfortunately, Big Pharma can be notoriously unbending within the arena of revised medical indications. This is especially true once a drug has been approved following basic safety assessments, and even more so when profit margins become exorbitant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consider that the original Star Wars movies—some of the highest-grossing films of all time — required more than forty years to amass $3 billion in revenue. It took Ambien just twenty-four months to amass $4 billion in sales profit&lt;/strong&gt;, discounting the black market.&lt;/p&gt;

&lt;p&gt;That’s a large number, and one I can only imagine influences Big Pharma decision-making at all levels.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;how-then-should-one-treat-insomnia&quot;&gt;How, then, should one treat insomnia?&lt;/h3&gt;

&lt;p&gt;Currently, the most effective of these is called cognitive behavioral therapy for insomnia, or CBT-I, and it is rapidly being embraced by the medical community as the first-line treatment.&lt;/p&gt;

&lt;p&gt;Working with a therapist for several weeks, patients are provided with a bespoke set of techniques intended to break bad sleep habits and address anxieties that have been inhibiting sleep.&lt;/p&gt;

&lt;p&gt;CBT-I builds on basic sleep hygiene principles that I describe in the appendix, supplemented with methods individualized for the patient, their problems, and their lifestyle. Some are obvious, others not so obvious, and still others are counterintuitive.&lt;/p&gt;

&lt;p&gt;The obvious methods involve reducing caffeine and alcohol intake, removing screen technology from the bedroom, and having a cool bedroom.&lt;/p&gt;

&lt;p&gt;In addition, patients must (1) establish a regular bedtime and wake-up time, even on weekends, (2) go to bed only when sleepy and avoid sleeping on the couch early/mid-evenings, (3) never lie awake in bed for a significant time period; rather, get out of bed and do something quiet and relaxing until the urge to sleep returns, (4) avoid daytime napping if you are having difficulty sleeping at night, (5) reduce anxiety-provoking thoughts and worries by learning to mentally decelerate before bed, and (6) remove visible clockfaces from view in the bedroom, preventing clock-watching anxiety at night.&lt;/p&gt;

&lt;p&gt;One of the more paradoxical CBT-I methods used to help insomniacs sleep is to restrict their time spent in bed, perhaps even to just six hours of sleep or less to begin with.&lt;/p&gt;

&lt;p&gt;By keeping patients awake for longer, we build up a strong sleep pressure—a greater abundance of adenosine. Under this heavier weight of sleep pressure, patients fall asleep faster, and achieve a more stable, solid form of sleep across the night.&lt;/p&gt;

&lt;p&gt;In this way, a patient can regain their psychological confidence in being able to self-generate and sustain healthy, rapid, and sound sleep, night after night: something that has eluded them for months if not years.&lt;/p&gt;

&lt;p&gt;Upon reestablishing a patient’s confidence in this regard, time in bed is gradually increased. While this may all sound a little contrived or even dubious, skeptical readers, or those normally inclined toward drugs for help, should first evaluate the proven benefits of CBT-I before dismissing it outright.&lt;/p&gt;

&lt;p&gt;Results, which have now been replicated in numerous clinical studies around the globe, demonstrate that CBT-I is more effective than sleeping pills in addressing numerous problematic aspects of sleep for insomnia sufferers.&lt;/p&gt;

&lt;p&gt;CBT-I consistently helps people fall asleep faster at night, sleep longer, and obtain superior sleep quality by significantly decreasing the amount of time spent awake at night.&lt;/p&gt;

&lt;p&gt;More importantly, the benefits of CBT-I persist long term, even after patients stop working with their sleep therapist. This sustainability stands in stark contrast to the punch of rebound insomnia than individuals experience following the cessation of sleeping pills.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here’s the link to these 12 tips, as a single page: &lt;a href=&quot;https://www.nlm.nih.gov/medlineplus/magazine/issues/summer12/articles/summer12pg20.html&quot;&gt;nih.gov&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-effectiveness-at-work&quot;&gt;Sleep and Effectiveness at Work&lt;/h3&gt;

&lt;p&gt;Interestingly, participants in the above studies do not perceive themselves as applying less effort to the work challenge, or being less effective, when they were sleep-deprived, despite both being true.&lt;/p&gt;

&lt;p&gt;They seemed unaware of their poorer work effort and performance — a theme of subjective misperception of ability when sleep-deprived that we have touched upon previously in this book.&lt;/p&gt;

&lt;p&gt;Even the simplest daily routines that require slight effort, such as time spent dressing neatly or fashionably for the workplace, have been found to decrease following a night of sleep loss.&lt;/p&gt;

&lt;p&gt;Individuals also like their jobs less when sleep-deprived — perhaps unsurprising considering the mood-depressing influence of sleep deficiency.&lt;/p&gt;

&lt;p&gt;Under-slept employees are not only less productive, less motivated, less creative, less happy, and lazier, but they are also more unethical.&lt;/p&gt;

&lt;p&gt;Reputation in business can be a make-or-break factor. Having under-slept employees in your business makes you more vulnerable to that risk of disrepute.&lt;/p&gt;

&lt;p&gt;Previously, I described evidence from brain-scanning experiments showing that the frontal lobe, which is critical for self-control and reining in emotional impulses, is taken offline by a lack of sleep. As a result, participants were more emotionally volatile and rash in their choices and decision-making.&lt;/p&gt;

&lt;p&gt;This same result is predictably borne out in the higher-stakes setting of the workplace. Studies in the workplace have found that employees who sleep six hours or less are significantly more deviant and more likely to lie the following day than those who sleep six hours or more.&lt;/p&gt;

&lt;p&gt;Seminal work by Dr. Christopher Barns, a researcher in the Foster School of Business at Washington University, has found that the less an individual sleeps, the more likely they are to create fake receipts and reimbursement claims, and the more willing to lie to get free raffle tickets.&lt;/p&gt;

&lt;p&gt;Barns also discovered that under-slept employees are more likely to blame other people in the workplace for their own mistakes, and even try to take credit for other people’s successful work: hardly a recipe for team building and a harmonious business environment.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-the-k-12-educational-system&quot;&gt;Sleep and the k-12 educational system&lt;/h3&gt;

&lt;p&gt;[A school district experimented with starting school later in the day…]&lt;/p&gt;

&lt;p&gt;Yet something even more profound has happened in this ongoing story of later school start times — something that researchers did not anticipate: &lt;strong&gt;the life expectancy of students increased.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The leading cause of death among teenagers is road traffic accidents, and in this regard, even the slightest dose of insufficient sleep can have marked consequences, as we have discussed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When the Mahtomedi School District of Minnesota pushed their school start time from 7:30 to 8:00 a.m., there was a 60 percent reduction in traffic accidents in drivers sixteen to eighteen years of age.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Teton County in Wyoming enacted an even more dramatic change in school start time, shifting from a 7:35 a.m. bell to a far more biologically reasonable one of 8:55 a.m.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The result was astonishing—a 70 percent reduction in traffic accidents in sixteen- to eighteen-year-old drivers. To place that in context, the advent of anti-lock brake technology (ABS)—which prevents the wheels of a car from seizing up under hard braking, allowing the driver to still maneuver the vehicle—reduced accident rates by around 20 to 25 percent. It was deemed a revolution.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-adhd&quot;&gt;Sleep and ADHD&lt;/h3&gt;

&lt;p&gt;An added reason for making sleep a top priority in the education and lives of our children concerns the link between sleep deficiency and the epidemic of ADHD (attention deficit hyperactivity disorder). Children with this diagnosis are irritable, moodier, more distractible and unfocused in learning during the day, and have a significantly increased prevalence of depression and suicidal ideation.&lt;/p&gt;

&lt;p&gt;If you make a composite of these symptoms (unable to maintain focus and attention, deficient learning, behaviorally difficult, with mental health instability), and then strip away the label of ADHD, these symptoms are nearly identical to those caused by a lack of sleep.&lt;/p&gt;

&lt;p&gt;Take an under-slept child to a doctor and describe these symptoms without mentioning the lack of sleep, which is not uncommon, and what would you imagine the doctor is diagnosing the child with, and medicating them for?&lt;/p&gt;

&lt;p&gt;Not deficient sleep, but ADHD. There is more irony here than meets the eye. Most people know the name of the common ADHD medications: Adderall and Ritalin.&lt;/p&gt;

&lt;p&gt;But few know what these drugs actually are.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adderall is amphetamine with certain salts mixed in, and Ritalin is a similar stimulant, called methylphenidate. Amphetamine and methylphenidate are two of the most powerful drugs we know of to prevent sleep and keep the brain of an adult (or a child, in this case) wide awake.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the very last thing that such a child needs.&lt;/p&gt;

&lt;p&gt;As my colleague in the field, Dr. Charles Czeisler, has noted, there are people sitting in prison cells, and have been for decades, because they were caught selling amphetamines to minors on the street.&lt;/p&gt;

&lt;p&gt;However, we seem to have no problem at all in allowing pharmaceutical companies to broadcast prime-time commercials highlighting ADHD and promoting the sale of amphetamine-based drugs (e.g., Adderall, Ritalin).&lt;/p&gt;

&lt;p&gt;To a cynic, this seems like little more than an uptown version of a downtown drug pusher. I am in no way contesting the disorder of ADHD, and not every child with ADHD has poor sleep. But we know that there are children, many children, perhaps, who are sleep-deprived or suffering from an undiagnosed sleep disorder that masquerades as ADHD.&lt;/p&gt;

&lt;p&gt;They are being dosed for years of their critical development with amphetamine-based drugs.&lt;/p&gt;

&lt;p&gt;One example of an undiagnosed sleep disorder is pediatric sleep-disordered breathing, or child obstructive sleep apnea, which is associated with heavy snoring. Overly large adenoids and tonsils can block the airway passage of a child as their breathing muscles relax during sleep. The labored snoring is the sound of turbulent air trying to be sucked down into the lungs through a semi-collapsed, fluttering airway.&lt;/p&gt;

&lt;p&gt;The resulting oxygen debt will reflexively force the brain to awaken the child briefly throughout the night so that several full breaths can be obtained, restoring full blood oxygen saturation.&lt;/p&gt;

&lt;p&gt;However, this prevents the child from reaching and/or sustaining long periods of valuable deep NREM sleep.&lt;/p&gt;

&lt;p&gt;Their sleep-disordered breathing will impose a state of chronic sleep deprivation, night after night, for months or years on end.&lt;/p&gt;

&lt;p&gt;As the state of chronic sleep deprivation builds over time, the child will look ever more ADHD-like in temperament, cognitively, emotionally, and academically. Those children who are fortunate to have the sleep disorder recognized, and who have their tonsils removed, more often than not prove that they do not have ADHD.&lt;/p&gt;

&lt;p&gt;In the weeks after the operation, a child’s sleep recovers, and with it, normative psychological and mental functioning in the months ahead. Their “ADHD” is cured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Based on recent surveys and clinical evaluations, we estimate that more than 50 percent of all children with an ADHD diagnosis actually have a sleep disorder, yet a small fraction know of their sleep condition and its ramifications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A major public health awareness campaign by governments — perhaps without influence from pharmaceutical lobbying groups — is needed on this issue.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;sleep-and-medical-errors&quot;&gt;Sleep and Medical Errors&lt;/h3&gt;

&lt;p&gt;If you are about to receive medical treatment at a hospital, you’d be well advised to ask the doctor: “How much sleep have you had in the past twenty-four hours?”&lt;/p&gt;

&lt;p&gt;The doctor’s response will determine, to a statistically provable degree, whether the treatment you receive will result in a serious medical error, or even death.&lt;/p&gt;

&lt;p&gt;All of us know that nurses and doctors work long, consecutive hours, and none more so than doctors during their resident training years.&lt;/p&gt;

&lt;p&gt;Few people, however, know why. Why did we ever force doctors to learn their profession in this exhausting, sleepless way?&lt;/p&gt;

&lt;p&gt;The answer originates with the esteemed physician William Stewart Halsted, MD, who was also a helpless drug addict.&lt;/p&gt;

&lt;p&gt;Halsted founded the surgical training program at Johns Hopkins Hospital in Baltimore, Maryland, in May 1889. As chief of the Department of Surgery, his influence was considerable, and his beliefs about how young doctors must apply themselves to medicine, formidable.&lt;/p&gt;

&lt;p&gt;There was to be a six-year residency, quite literally. The term “residency” came from Halsted’s belief that doctors must live in the hospital for much of their training, allowing them to be truly committed in their learning of surgical skills and medical knowledge.&lt;/p&gt;

&lt;p&gt;Fledgling residents had to suffer long, consecutive work shifts, day and night.&lt;/p&gt;

&lt;p&gt;To Halsted, sleep was a dispensable luxury that detracted from the ability to work and learn. Halsted’s mentality was difficult to argue with, since he himself practiced what he preached, being renowned for a seemingly superhuman ability to stay awake for apparently days on end without any fatigue. But Halsted had a dirty secret that only came to light years after his death, and helped explain both the maniacal structure of his residency program and his ability to forgo sleep. &lt;strong&gt;Halsted was a cocaine addict.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It was a sad and apparently accidental habit, one that started years before his arrival at Johns Hopkins. Early in his career, Halsted was conducting research on the nerve-blocking abilities of drugs that could be used as anesthetics to dull pain in surgical procedures.&lt;/p&gt;

&lt;p&gt;One of those drugs was cocaine, which prevents electrical impulse waves from shooting down the length of the nerves in the body, including those that transmit pain.&lt;/p&gt;

&lt;p&gt;Addicts of the drug know this all too well, as their nose, and often their entire face, will become numb after snorting several lines of the substance, almost like having been injected with too much anesthetic by an overly enthusiastic dentist.&lt;/p&gt;

&lt;p&gt;Working with cocaine in the laboratory, it didn’t take long before Halsted was experimenting on himself, after which the drug gripped him in an ceaseless addiction. If you read Halsted’s academic report of his research findings in the New York Medical Journal from September 12, 1885, you’d be hard pressed to comprehend it. Several medical historians have suggested that the writing is so discombobulated and frenetic that he undoubtedly wrote the piece when high on cocaine.&lt;/p&gt;

&lt;p&gt;[…]&lt;/p&gt;

&lt;p&gt;Halsted inserted his cocaine-infused wakefulness into the heart of Johns Hopkins’s surgical program, imposing a similarly unrealistic mentality of sleeplessness upon his residents for the duration of their training. The exhausting residency program, which persists in one form or another throughout all US medical schools to this day, has left countless patients hurt or dead in its wake — and likely residents, too.&lt;/p&gt;

&lt;p&gt;That may sound like an unfair charge to level considering the wonderful, lifesaving work our committed and caring young doctors and medical staff perform, but it is a provable one.&lt;/p&gt;

&lt;p&gt;Many medical schools used to require residents to work thirty hours. You may think that’s short, since I’m sure you work at least forty hours a week. But for residents, that was thirty hours all in one go.&lt;/p&gt;

&lt;p&gt;Worse, they often had to do two of these thirty-hour continuous shifts within a week, combined with several twelve-hour shifts scattered in between. The injurious consequences are well documented.&lt;/p&gt;

&lt;p&gt;Residents working a thirty-hour-straight shift will commit 36 percent more serious medical errors, such as prescribing the wrong dose of a drug or leaving a surgical implement inside of a patient, compared with those working sixteen hours or less.&lt;/p&gt;

&lt;p&gt;Additionally, after a thirty-hour shift without sleep, residents make a whopping 460 percent more diagnostic mistakes in the intensive care unit than when well rested after enough sleep.&lt;/p&gt;

&lt;p&gt;Throughout the course of their residency, one in five medical residents will make a sleepless-related medical error that causes significant, liable harm to a patient.&lt;/p&gt;

&lt;p&gt;One in twenty residents will kill a patient due to a lack of sleep. Since there are over 100,000 residents currently in training in US medical programs, this means that many hundreds of people — sons, daughters, husbands, wives, grandparents, brothers, sisters — are needlessly losing their lives every year because residents are not allowed to get the sleep they need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As I write this chapter, a new report has discovered that medical errors are the third-leading cause of death among Americans after heart attacks and cancer. Sleeplessness undoubtedly plays a role in those lives lost.&lt;/strong&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Of course, medical institutions put forward other arguments to justify the old-school way of sleep abuse.&lt;/p&gt;

&lt;p&gt;The most common harkens back to a William Halsted–like mind-set: without working exhaustive shifts, it will take far too long to train residents, and they will not learn as effectively. Why, then, can several western European countries train their young doctors within the same time frame when they are limited to working no more than forty-eight hours in one week, without continuous long periods of sleeplessness? Perhaps they are just not as well trained?&lt;/p&gt;

&lt;p&gt;This, too, is erroneous, since many of those western European medical programs, such as in the UK and Sweden, rank among the top ten countries for most medical practice health outcomes, while the majority of US institutes rank somewhere between eighteenth and thirty-second.&lt;/p&gt;

&lt;p&gt;As a matter of fact, several pilot studies in the US have shown that when you limit residents to no more than a sixteen-hour shift, with at least an eight-hour rest opportunity before the next shift, the number of serious medical errors made—defined as causing or having the potential to cause harm to a patient—drops by over 20 percent.&lt;/p&gt;

&lt;p&gt;Furthermore, residents made 400 to 600 percent fewer diagnostic errors to begin with.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;#index&quot;&gt;back to index&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;
</content>
 </entry>
 
 <entry>
   <title>How I take notes, AKA &apos;Add an Index to Your Notebook&apos;</title>
   <link href="https://josh.works/how-i-take-notes-aka-add-an-index-to-your-notebook"/>
   <updated>2019-09-04T13:00:00+00:00</updated>
   <id>https://josh.works/build-an-index-into-your-notebook</id>
   <content type="html">&lt;p&gt;A while back, sometime in 2017, I wrote this tweet:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;a while ago, I read about how to keep well-organized notes on a range of topics. Here&amp;#39;s my current notebook, indexed by category: &lt;a href=&quot;https://t.co/aVsNnGPEpd&quot;&gt;pic.twitter.com/aVsNnGPEpd&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/861410702053048321?ref_src=twsrc%5Etfw&quot;&gt;May 8, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;Since then, I occasionally have conversations with people, about how we all handle taking notes in physical notebooks. Rather than wrestling with a web browser to find this one specific tweet, I’ll just drop everything I have to say on the topic into this post.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;After encountering this “indexing” method, I’m a firm convert to the value of organizing paper notes in this fashion. It helps me get very dense notes in my notebook, and it’s easy for me to organize my notes by &lt;em&gt;topic&lt;/em&gt;, rather than in chronological order.&lt;/p&gt;

&lt;p&gt;Here’s my current stash of “indexed” notebooks:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-06.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;All of these notebooks are full of notes, and they’re all indexed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Mostly, I talk about indexes with Turing students, getting ready to dive deep into technical topics. A single lesson might reference a new keyboard shortcut for their code editor, a novel way of using Git, several new methods in a given programming language, and more.&lt;/p&gt;

&lt;p&gt;Rather than stick all of those on a page marked with the current date (and being unable to quickly look up the Git commands next time I break something with it) I’d just add each new piece of information to a page specific to the topic.&lt;/p&gt;

&lt;p&gt;If I didn’t have a page specific to the topic, I’d flip ahead of the first empty page in my notebook, add the topic to the top of the page, and then add that new topic to the front of my notebook, in the index:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-04.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;My very first Turing notebook (this single notebook lasted me about half of the program&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Lets dig a bit deeper into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git&lt;/code&gt; index item (the very first item, top of the page in the picture)&lt;/p&gt;

&lt;p&gt;Each of those small black lines marks another page of notes about Git.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-09.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;Here’s ‘git’ the index, and you can see that I have at least four pages of notes on git, scattered throughout my notebook&lt;/em&gt;
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;I took a picture of each of the pages I have about Git - you can see my notes are not super dense, but they’re easy for me to find. My handwriting is atrocious, but… I can read it.&lt;/p&gt;

&lt;p&gt;On the top left of the page, you can see where I marked the edge of the page, so I could find it “from the index”&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-10.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;yet another page of notes on Git&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When the above page was filled with notes, I flipped ahead to the next empty page, titled it &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Git&lt;/code&gt;, and kept on writing notes. The top right of the page shows where I marked it to find it later from the index.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-12.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;and another&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When the above page was full, I started a fresh page.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-07.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;Even more notes on Git&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-08.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;I had MANY pages of notes on Git&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-13.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;last page of notes on Git. Phew&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That’s it for notes specific to Git.&lt;/p&gt;

&lt;p&gt;This is my index in my second Turing notebook:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-05.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;My second Turing notebook, lasted the other half of the program and a bit of my job after I graduated&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;other-ways-to-use-indexes&quot;&gt;Other Ways to Use Indexes&lt;/h2&gt;

&lt;p&gt;There are &lt;em&gt;many&lt;/em&gt; uses to indexing notebooks. I keep a daily work schedule now, so I can keep track of what I need to do (if some item pops up at standup, for instance). But I keep a lot of other notes in the same notebook. Here’s how I keep them separate:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-01.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;This is my current work notebook&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I went ahead and grabbed a picture of the other indexes I’ve built, across the rest of my notebooks, just for fun. You can see how easy it would be to find the single page of notes I have on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Running Training&lt;/code&gt;, for example.&lt;/p&gt;

&lt;p&gt;Why just one page, you ask? Well, I don’t like training for running!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-08-25-index-02.jpg&quot; alt=&quot;image of an index&quot; /&gt;
&lt;em&gt;An old notebook with an index (and lots of marked pages&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I hope this is helpful to you! I’d love to credit the person who first told me about this, but for the life of me, I cannot remember. If you think you’ve see this somewhere, and tell me, I’ll gladly source ‘em.&lt;/p&gt;

&lt;h3 id=&quot;related-articles&quot;&gt;Related Articles&lt;/h3&gt;

&lt;p&gt;As I finished this post, I started hunting around the internet to see what other cool ways folks have for organizing paper notes.&lt;/p&gt;

&lt;p&gt;As you might imagine, there’s many ways. No way is the “right” way, including what I’ve outlined above. But, hopefully, what you just read or some of these other sources will help you organize your notes in a way that you find helpful and effective.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://thetechnicalgeekery.com/2013/06/the-complete-guide-to-indexing-your-paper-notes/&quot;&gt;The Art of Personal Indexing: The Complete Guide to Indexing Your Paper Notes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.highfivehq.com/&quot;&gt;The Highfive Notebook (basically what I’ve outlined above)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>LeetCode: Words From Characters, and Benchmarking Solutions</title>
   <link href="https://josh.works/find-words-formed-by-characters-and-benchmarking"/>
   <updated>2019-08-23T13:00:00+00:00</updated>
   <id>https://josh.works/leetcode-weekly-contest</id>
   <content type="html">&lt;p&gt;I recently worked through &lt;a href=&quot;https://leetcode.com/problems/find-words-that-can-be-formed-by-characters/&quot;&gt;a LeetCode problem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The first run was pretty brutal. It took (what felt like) forever, and I was not content with my solution.&lt;/p&gt;

&lt;p&gt;Even better, it passed the test cases given while building the solution, but failed on submission.&lt;/p&gt;

&lt;p&gt;So, once I fixed it so it didn’t fail on submission… it then timed out. My code was so inefficient &lt;em&gt;leetcode’s test suite took too long to finish&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I have a few learning objectives for doing this kind of code challenge:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Improve my knowledge of Ruby’s API&lt;/li&gt;
  &lt;li&gt;Get better at benchmarking code “snippets”.&lt;/li&gt;
  &lt;li&gt;Refresh/document my “process” for learning new things about a programming language, for the benefit of Turing students who are attacking their own code challenges.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;the-challenge-and-my-not-quite-working-solution&quot;&gt;The challenge and my (not quite working) solution.&lt;/h2&gt;

&lt;p&gt;Here’s the given instructions:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;You are given an array of strings &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;words&lt;/code&gt; and a string &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chars&lt;/code&gt;.&lt;/p&gt;

  &lt;p&gt;A string is good if it can be formed by characters from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chars&lt;/code&gt; (each character can only be used once).&lt;/p&gt;

  &lt;p&gt;Return the sum of lengths of all good strings in words.&lt;/p&gt;

  &lt;p&gt;Example 1:&lt;/p&gt;
  &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Input: words = [&quot;cat&quot;,&quot;bt&quot;,&quot;hat&quot;,&quot;tree&quot;], chars = &quot;atach&quot;
Output: 6
Explanation: 
The strings that can be formed are &quot;cat&quot; and &quot;hat&quot; so the answer is 3 + 3 = 6.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;/div&gt;
  &lt;p&gt;Example 2:&lt;/p&gt;
  &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Input: words = [&quot;hello&quot;,&quot;world&quot;,&quot;leetcode&quot;], chars = &quot;welldonehoneyr&quot;
Output: 10
Explanation: 
The strings that can be formed are &quot;hello&quot; and &quot;world&quot; so the answer is 5 + 5 = 10.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;/div&gt;
  &lt;p&gt;Note:&lt;/p&gt;

  &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;1 &amp;lt;= words.length &amp;lt;= 1000
1 &amp;lt;= words[i].length, chars.length &amp;lt;= 100
All strings contain lowercase English letters only.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;!--more--&gt;

&lt;p&gt;There’s a few things I struggled with; first, I was doing all of this in the LeetCode UI; I didn’t get to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; to pause code execution and quickly poke around internal state; I had to rely on liberal use of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;print&lt;/code&gt; statements, which is decidedly un-fun.&lt;/p&gt;

&lt;p&gt;This lovely 13 lines of code took me probably a full hour. Yikes:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;count_characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;w&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;word_chars_in_approve_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;  
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;word_chars_in_approve_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;all?&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;include?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I hit the “submit” button… it didn’t pass. In the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;word_chars_in_approve_list&lt;/code&gt; method, I’m only checking to see that all of the characters in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;word&lt;/code&gt; also exist in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chars&lt;/code&gt; string.&lt;/p&gt;

&lt;p&gt;So if&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;word = &quot;bbb&quot;
chars = &quot;b&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;the method returned true, even though it shouldn’t have - per the instructions:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;each character can only be used once&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;word&lt;/code&gt; of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bbb&lt;/code&gt;, it would be valid only if the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chars&lt;/code&gt; list had at least &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;3&lt;/code&gt; instances of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;b&lt;/code&gt; in it:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;word = &quot;bbb&quot;
chars = &quot;bbb&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;So, I worked a bit with &lt;a href=&quot;https://www.codementor.io/gando_001&quot;&gt;Kunal Madhav&lt;/a&gt; from CodeMentor (I had a variety of questions for him, among them was this challenge and my general strategy for solving technical challenges. He was great. You should talk with him.)&lt;/p&gt;

&lt;p&gt;Together, we eventually ironed out the following:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;count_characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;word_chars_in_approve_list?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;w&lt;/span&gt; 
        &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;word_chars_in_approve_list?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;include?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;remove_first_instance_of&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;remove_first_instance_of&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;split_chars&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;index&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;split_chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;split_chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;delete_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;split_chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Lots of other solutions &lt;a href=&quot;https://leetcode.com/problems/find-words-that-can-be-formed-by-characters/discuss/?currentPage=2&amp;amp;orderBy=hot&amp;amp;query=&quot;&gt;available here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But this code was &lt;em&gt;timing out&lt;/em&gt;; this took too long to run. So, I figured out a modest performance improvement. Rather than splitting and joining the word so many times, I did it just once:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;count_characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;word_chars_in_approve_list?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;w&lt;/span&gt; 
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;word_chars_in_approve_list?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;include?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;index&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;delete_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;All the action is happening in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;word_chars_in_approve_list?&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;The output from submitting it on LeetCode:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Runtime: 832 ms, faster than 18.18% of Ruby online submissions for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Find Words That Can Be Formed by Characters&lt;/code&gt;.
Memory Usage: 10.2 MB, less than 100.00% of Ruby online submissions for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Find Words That Can Be Formed by Characters&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, the above code worked, but I didn’t really feel like it was good code.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;The next day, I wanted to revisit this. I recommend to Turing students &lt;em&gt;all the time&lt;/em&gt; to write code down in a notebook, and re-build the solution/class/whatever from their notebook.&lt;/p&gt;

&lt;p&gt;So, I’m taking a dose of my own medicine:&lt;/p&gt;

&lt;p&gt;I made some improvements from a readability perspective:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;count_characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;reduce&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;results&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;results&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;word_in_chars?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;results&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;word_in_chars?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;char_list&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;char_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;include?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;char_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;delete_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;char_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;next&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And the above solution vs. the below solution is what I want to benchmark:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;count_characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;word_chars_in_approve_list?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;w&lt;/span&gt; 
        &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;found_words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;word_chars_in_approve_list?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;include?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;remove_first_instance_of&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;remove_first_instance_of&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;split_chars&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;index&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;split_chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;split_chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;delete_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;split_chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;benchmarking-code-snippets&quot;&gt;Benchmarking Code Snippets&lt;/h2&gt;

&lt;p&gt;LeetCode offers pretty detailed benchmarking, but I wanted to see exactly how bad my “too slow” solution was.&lt;/p&gt;

&lt;p&gt;So, I spun up a little benchmark.&lt;/p&gt;

&lt;p&gt;In ruby, you can do something like this:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;benchmark&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;count_characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# first version of code you want to test&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;count_characters_medium&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# second version of code to test&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;count_characters_fast&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# third version of code to test&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;no&quot;&gt;Benchmark&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;bmbm&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;iterations&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;30000&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;words&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;cat&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;hat&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;ball&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;sasafras&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;characters&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;catbl&quot;&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;report&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;slower&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;n&quot;&gt;iterations&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;times&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;count_characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;report&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;medium&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;n&quot;&gt;iterations&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;times&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;count_characters_medium&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  
  &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;report&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;faster&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; 
    &lt;span class=&quot;n&quot;&gt;iterations&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;times&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;count_characters_fast&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;words&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;characters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Include the code you want to test before declaring &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Benchmark&lt;/code&gt;, and this benchmark code will run the given arguments through the associated methods.&lt;/p&gt;

&lt;p&gt;When I used small strings, it was not easy to tell which code was faster. I was running it 30000+ times, and was getting output showing only a small difference.&lt;/p&gt;

&lt;p&gt;But then I ran it on the input LeetCode was providing, and I got much more interesting results:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Rehearsal -------------------------------------------
slower   13.530000   0.080000  13.610000 ( 14.094186)
medium    2.120000   0.020000   2.140000 (  2.453419)
faster    1.700000   0.010000   1.710000 (  1.725038)
--------------------------------- total: 17.460000sec

              user     system      total        real
slower   13.160000   0.050000  13.210000 ( 13.371204)
medium    1.740000   0.010000   1.750000 (  1.759786)
faster    1.810000   0.010000   1.820000 (  1.888091)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;My “slow” code was taking a bit more than seven times as long to run as the “faster” code. That’s a noteworthy improvement.&lt;/p&gt;

&lt;h3 id=&quot;additional-resources&quot;&gt;Additional Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://rubyinrails.com/2013/09/13/benchmark-in-ruby-code-using-bm-and-bmbm-with-examples/&quot;&gt;Benchmark in Ruby code using bm and bmbm with examples&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ruby-doc.org/stdlib-2.6.3/libdoc/benchmark/rdoc/Benchmark.html#method-c-bmbm&quot;&gt;Benchmark API (RubyDoc)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/josh-works/josh-works.github.io/blob/master/code_snippets/find-words-formed-by-characters.rb&quot;&gt;My full “test” file, with extremely long test input&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Book Notes: &apos;Why We Get Fat&apos; by Gary Taube</title>
   <link href="https://josh.works/notes-gary-taubes-why-we-get-fat"/>
   <updated>2019-08-13T13:00:00+00:00</updated>
   <id>https://josh.works/notes-why-we-get-fat-gary-taubes</id>
   <content type="html">&lt;p&gt;I recently read &lt;a href=&quot;https://www.goodreads.com/book/show/8727466-why-we-get-fat&quot;&gt;Why We Get Fat&lt;/a&gt;, by Gary Taubes. I read it shortly after reading &lt;em&gt;The Case Against Sugar&lt;/em&gt;. &lt;a href=&quot;/notes-gary-taubes-case-against-sugar&quot;&gt;My notes and a write-up on &lt;em&gt;The Case Against Sugar&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I explained in that post, I find it helpful to do a ‘deep dive’ on some of the books I want to be deeply influenced by. For a variety of reasons, I have a tolerably high degree of physical fitness. I’d like to retain this fitness for a long time. Much of the fitness equation is “don’t have extra body fat”, so to that end, I’ve been doing reading on the topic.&lt;/p&gt;

&lt;p&gt;Given how prevalent being overweight or obese is in our society, the small investment of reading a few books that might point one towards a proper course of action has ludicrously high returns.&lt;/p&gt;

&lt;h3 id=&quot;notes-on-formatting&quot;&gt;Notes on formatting&lt;/h3&gt;

&lt;p&gt;I will be freely interjecting my thoughts throughout the rest of this review. When I quote the author, it will be denoted like such:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;These are words the author has written&lt;/p&gt;

  &lt;p&gt;Sometimes they’ll extend for several paragraphs&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I may choose to &lt;em&gt;italicize&lt;/em&gt; or &lt;strong&gt;make bold&lt;/strong&gt; portions of the quotations from the books. In general, these are my decisions, not the author’s.&lt;/p&gt;

&lt;p&gt;If there are&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;[words wrapped in brackets]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;it’s me editorializing to load the context of the quote.&lt;/p&gt;

&lt;h1 id=&quot;my-collected-notes-from-why-we-get-fat-and-what-to-do-about-it&quot;&gt;My collected notes from &lt;em&gt;Why we get fat: and what to do about it&lt;/em&gt;&lt;/h1&gt;

&lt;hr /&gt;

&lt;p&gt;Getting fat is &lt;em&gt;not&lt;/em&gt; a “calories-in/calories-out” problem, or “eat too much, exercise too little” problem. It’s a hormonal regulation problem.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In honor of the laws of thermodynamics that they’re replacing, we’ll call these the laws of adiposity. The First Law:&lt;/p&gt;

  &lt;p&gt;Body fat is carefully regulated, if not exquisitely so.&lt;/p&gt;

  &lt;p&gt;This is true even though some people fatten so easily that it’s virtually impossible to imagine.&lt;/p&gt;

  &lt;p&gt;What I mean by “regulated” is that our bodies, when healthy, are working diligently to maintain a set amount of fat in our fat tissue — not too much and not too little — and that this, in turn, is used to assure a steady supply of fuel to the cells.&lt;/p&gt;

  &lt;p&gt;The implication (our working assumption) is that &lt;strong&gt;if someone gets obese it’s because this regulation has been thrown out of whack&lt;/strong&gt; not that it’s ceased to exist.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;
&lt;!--more--&gt;

&lt;p&gt;Lots of Taube’s assessment of nutrition comes from research done in Europe, specifically Germany and Austria. It got lost to the modern medical establishment, though.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Anti-German sentiment in the postwar medical community, understandable as it may have been, assuredly didn’t help matters.&lt;/p&gt;

  &lt;p&gt;The authorities writing about obesity in the United States after the war treated the German medical literature as though it didn’t exist, even though it was Germans and Austrians who had founded and done most of the meaningful research in the fields of nutrition, metabolism, endocrinology, and genetics, which means all the fields relevant to obesity.&lt;/p&gt;

  &lt;p&gt;(The one notable exception was Hilde Bruch, a German herself, who discussed this prewar literature extensively.)&lt;/p&gt;

  &lt;p&gt;Once the psychologists took over in the 1960s and obesity officially became an eating disorder — a character defect but in kinder words — any hope that these authorities would pay attention to how the fat tissue was regulated effectively vanished.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;The science I’ll be talking about was worked out by researchers between the 1920s and the 1980s. At no point was it particularly controversial. Those who did the research agreed that this was how it worked, and they still agree.&lt;/p&gt;

  &lt;p&gt;The problem, though, as I hope I’ve made clear, is that the “authorities” on obesity, even those who weren’t psychologists or psychiatrists, came to believe that they knew what makes people fat: overeating and sedentary behavior.&lt;/p&gt;

  &lt;p&gt;As a result, nothing else on the subject really mattered to them, including the science of how fat tissue is regulated. They either ignored it entirely or actively rejected it because they didn’t like its implications (which I’ll discuss later). Despite their head-in-the-sand attitude, the regulation of our fat tissue does matter. Whether we get fat or stay lean depends on it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;why-fat-accumulates&quot;&gt;Why fat accumulates&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;Simple question: Why do we store fat in the first place? What’s the reason? Okay, some of it provides insulation to keep us warm, and some of it provides padding to protect the more fragile structures within, but what about the rest? The fat around the waist, for instance? The way the experts typically see it is that fat storage works as a kind of long-term savings account — like a retirement account that you can dip into only in dire need.&lt;/p&gt;

  &lt;p&gt;The idea is that your body takes excess calories and stashes them away as fat, and they remain in the fat tissue until you someday find yourself sufficiently underfed (because you’re now dieting or exercising or perhaps stranded on a desert island) that this fat is mobilized. You then use it for fuel.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;But it has been known since the 1930s that this conception is not even remotely accurate.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;As it happens, fat is continuously flowing out of our fat cells and circulating around the body to be used for fuel and, if it’s not used for fuel, returned to the fat cells.&lt;/p&gt;

  &lt;p&gt;This goes on regardless of whether we’ve recently eaten or exercised.&lt;/p&gt;

  &lt;p&gt;In 1948, after this science was worked out in detail, Ernst Wertheimer, a German biochemist who had emigrated to Israel and is considered the father of the field of fat metabolism, put it this way: “Mobilization and deposition of fat go on continuously, without regard to the nutritional state of the animal.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;insulin-is-the-god-level-hormone-that-regulates-fat-accumulation-or-fat-loss&quot;&gt;Insulin is the “god-level” hormone that regulates fat accumulation or fat loss&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;Since insulin is the primary regulator of fat metabolism, it’s not surprising that it’s the primary regulator of LPL activity. Insulin activates LPL on fat cells, particularly the fat cells of the abdomen; it “upregulates” LPL, as researchers say.&lt;/p&gt;

  &lt;p&gt;The more insulin we secrete, the more active the LPL on the fat cells, and the more fat is diverted from the bloodstream into the fat cells to be stored.&lt;/p&gt;

  &lt;p&gt;Insulin also happens to suppress LPL activity on the muscle cells, assuring that they won’t have many fatty acids to burn. (Insulin also tells muscle cells and others in the body not to burn fatty acids but to continue burning up blood sugar instead.)&lt;/p&gt;

  &lt;p&gt;This means that when fatty acids do escape from a fat cell, if insulin levels happen to be high, these fatty acids won’t be taken up by the muscle cells and used for fuel. They’ll end up back in the fat tissue.&lt;/p&gt;

  &lt;p&gt;Insulin also influences an enzyme that we haven’t discussed, hormone-sensitive lipase, or HSL for short. And this may be even more critical to how insulin regulates the amount of fat we store.&lt;/p&gt;

  &lt;p&gt;Just as LPL works to make fat cells (and us) fatter, HSL works to make fat cells (and us) leaner.&lt;/p&gt;

  &lt;p&gt;It does so by working inside the fat cells to break down triglycerides into their component fatty acids, so that those fatty acids can then escape into the circulation. The more active this HSL, the more fat we liberate and can burn for fuel and the less, obviously, we store.&lt;/p&gt;

  &lt;p&gt;Insulin also suppresses this enzyme HSL, and so it prevents triglycerides from being broken down inside the fat cells and keeps the outward flow of fatty acids from the fat cells to a minimum.&lt;/p&gt;

  &lt;p&gt;And it takes just a little bit of insulin to accomplish this feat of shutting down HSL and trapping fat in our fat cells. When insulin levels are elevated, even a little, fat accumulates in the fat cells.&lt;/p&gt;

  &lt;p&gt;In short, everything insulin does in this context works to increase the fat we store and decrease the fat we burn. Insulin works to make us fatter.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;if-insulin-matters-so-much-how-do-we-use-that-to-our-advantage&quot;&gt;If insulin matters so much, how do we use that to our advantage?&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;The bottom line is something that’s been known (and mostly ignored) for over forty years.&lt;/p&gt;

  &lt;p&gt;The one thing we absolutely have to do if we want to get leaner — if we want to get fat out of our fat tissue and burn it — is to lower our insulin levels and to secrete less insulin to begin with.&lt;/p&gt;

  &lt;p&gt;Here’s how Yalow and Berson phrased it back in 1965:&lt;/p&gt;

  &lt;p&gt;“releasing fat from our fat tissue and then burning it for energy”, they wrote, “requires only the negative stimulus of insulin deficiency.”&lt;/p&gt;

  &lt;p&gt;If we can get our insulin levels to drop sufficiently low (the negative stimulus of insulin deficiency), we can burn our fat.&lt;/p&gt;

  &lt;p&gt;If we can’t, we won’t. When we secrete insulin, or if the level of insulin in our blood is abnormally elevated, we’ll accumulate fat in the fat tissue. That’s what the science tells us.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;But another important factor is just how sensitive to insulin your cells happen to be and how quickly they become insensitive — the property called “insulin resistance” — in response to the insulin you secrete.&lt;/p&gt;

  &lt;p&gt;This idea of being resistant to insulin is absolutely critical to understanding the reasons we get fat and also many of the diseases associated with it. I’ll return to it frequently.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;As I said, it’s carbohydrates that ultimately determines insulin secretion and insulin that drives the accumulation of body fat.&lt;/p&gt;

  &lt;p&gt;Not all of us get fat when we eat carbohydrates, but for those of us who do get fat, the carbohydrates are to blame; the fewer carbohydrates we eat, the leaner we will be.&lt;/p&gt;

  &lt;p&gt;A comparison with cigarettes is apt. Not every longtime smoker gets lung cancer. Only one in six men will, and one in nine women. But for those who do get lung cancer, cigarette smoke is far and away the most common cause.&lt;/p&gt;

  &lt;p&gt;In a world without cigarettes, lung cancer would be a rare disease, as it once was. In a world without carbohydrate-rich diets, obesity would be a rare condition as well.&lt;/p&gt;

  &lt;p&gt;Not that all foods that contain carbohydrates are equally fattening. This is a crucial point. &lt;strong&gt;The most fattening foods are the ones that have the greatest effect on our blood sugar and insulin levels.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;These are the concentrated sources of carbohydrates, and particularly those that we can digest quickly:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;anything made of refined flour (bread, cereals, and pasta)&lt;/li&gt;
    &lt;li&gt;liquid carbohydrates (beers, fruit juices, and sodas)&lt;/li&gt;
    &lt;li&gt;starches (potatoes, rice, and corn)&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;These foods flood the bloodstream quickly with glucose. Blood sugar shoots up; insulin shoots up. We get fatter. Not surprisingly, these foods have been considered uniquely fattening for nearly two hundred years (as I’ll discuss later).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;Total sugar consumption (“caloric sweeteners,” as the Department of Agriculture calls them, to distinguish them from “non-caloric” artificial sweeteners) promptly increased from roughly 120 pounds per capita yearly to 150, since Americans didn’t realize that high-fructose corn syrup was just another form of sugar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;The message of Adiposity [aka “getting fat”] 101 is simple enough: if you’re predisposed to get fat and want to be as lean as you can be without compromising your health, you have to restrict carbohydrates and so keep your blood sugar and insulin levels low.&lt;/p&gt;

  &lt;p&gt;The point to keep in mind is that you don’t lose fat because you cut calories; you lose fat because you cut out the foods that make you fat — the carbohydrates.&lt;/p&gt;

  &lt;p&gt;If you get down to a weight you like and then add these foods back to the diet, you’ll get fat again.&lt;/p&gt;

  &lt;p&gt;That only some people get fat from eating carbohydrates (just as only some get lung cancer from smoking cigarettes) doesn’t change the fact that if you’re one of those who do, you’ll only lose fat and keep it off if you avoid these foods.&lt;/p&gt;

  &lt;p&gt;This isn’t the only injustice involved here. It’s not even the worst of them. As I said in the introduction, the implications of Adiposity 101 do not include the ability to lose weight or maintain it without sacrifice. So far, the message is that carbohydrates make us fat and keep us fat.&lt;/p&gt;

  &lt;p&gt;But the precise foods responsible for making us fat are also the ones we’re likely to rank highest on a list of foods we crave and would never want to live without—pasta, bagels, bread, French fries, sweets, and beer among them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;low-carbhigh-fat-diets-are-not-bad-for-you&quot;&gt;Low-carb/high-fat diets are not bad for you&lt;/h3&gt;

&lt;p&gt;Late-1900’s and early-2000s research on diet was often championing the exactly wrong approach to weight management. Something was going wrong then, given the skyrocketing rate of obesity.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Times article, “New Diet Decried by Nutritionists: Dangers Are Seen in Low Carbohydrate Intake,” quoted Harvard’s Jean Mayer as claiming that to prescribe carbohydrate-restricted diets to the public was “the equivalent of mass murder.”&lt;/p&gt;

  &lt;p&gt;Mass murder. Mayer’s logic? Well, first, as the Times explained, “It is a medical fact that no dieter can lose weight unless he cuts down on excess calories, either by taking in fewer of them, or by burning them up.”&lt;/p&gt;

  &lt;p&gt;We now know that this is not a medical fact, but the nutritionists didn’t in 1965, and most of them still don’t.&lt;/p&gt;

  &lt;p&gt;Second, because these diets restrict carbohydrates, they compensate by allowing more fat.&lt;/p&gt;

  &lt;p&gt;It’s the high-fat nature of the diets, the Times explained, that prompted Mayer to make the mass murder accusation. This is how such diets have been treated ever since.&lt;/p&gt;

  &lt;p&gt;The belief that dietary fat causes heart disease — saturated fat, particularly — led directly to the idea that carbohydrates prevent it.&lt;/p&gt;

  &lt;p&gt;By the early 1980s, Jane Brody of &lt;em&gt;The Times&lt;/em&gt;, the single most influential journalist on the nutrition beat for the last forty years, was telling us “we need to eat more carbohydrates” and advocating starches and bread as diet foods. “Not only is eating pasta at the height of fashion,” she wrote, “it can help you lose weight.”&lt;/p&gt;

  &lt;p&gt;In 1983, when British authorities compiled their “Proposals for Nutritional Guidelines for Health Education in Britain,” they had to explain that “the previous nutritional advice in the UK to limit the intake of all carbohydrates as a means of weight control now runs counter to current thinking.”&lt;/p&gt;

  &lt;p&gt;This logic may have reached the pinnacle of absurdity in 1995 (at least I hope it did), when the American Heart Association published a pamphlet suggesting that we can eat virtually anything with impunity — even candy and sugar — as long as it’s low in fat: “To control the amount and kind of fat, saturated fatty acids and dietary cholesterol you eat,” the AHA counseled, “choose snacks from other food groups such as … low-fat cookies, low-fat crackers … unsalted pretzels, hard candy, gum drops, sugar, syrup, honey, jam, jelly, marmalade (as spreads).”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;When we pay attention to how HDL tracks with heart disease — not just LDL and total cholesterol — we learn something about the purported risks and benefits of the foods we might choose to eat instead of fattening carbohydrates: red meat, say, or eggs and bacon, even lard and butter.&lt;/p&gt;

  &lt;p&gt;It’s important to understand that the fat in these foods is not all saturated. Rather, these animal fats are mixtures of saturated and unsaturated fats, just as vegetable fats are, and these fats all have different effects on our LDL and HDL cholesterol.&lt;/p&gt;

  &lt;p&gt;Take lard, for example, which has long been considered the archetypal example of a killer fat. It was lard that bakeries and fast-food restaurants used in large quantities before they were pressured to replace it with the artificial trans fats that nutritionists have now decided might be a cause of heart disease after all.&lt;/p&gt;

  &lt;p&gt;You can find the fat composition of lard easily enough, as you can for most foods, by going to a U.S. Department of Agriculture website called the National Nutrient Database for Standard Reference. You’ll find that nearly half the fat in lard (47 percent) is monounsaturated, which is almost universally considered a “good” fat. Monounsaturated fat raises HDL cholesterol and lowers LDL cholesterol (both good things, according to our doctors).&lt;/p&gt;

  &lt;p&gt;Ninety percent of that monounsaturated fat is the same oleic acid that’s in the olive oil so highly touted by champions of the Mediterranean diet. Slightly more than 40 percent of the fat in lard is indeed saturated, but a third of that is the same stearic acid that’s in chocolate and is now also considered a “good fat,” because it will raise our HDL levels but have no effect on LDL (a good thing and a neutral thing).&lt;/p&gt;

  &lt;p&gt;The remaining fat (about 12 percent of the total) is polyunsaturated, which actually lowers LDL cholesterol but has no effect on HDL (also a good thing and a neutral thing).&lt;/p&gt;

  &lt;p&gt;In total, more than 70 percent of the fat in lard will improve your cholesterol profile compared with what would happen if you replaced that lard with carbohydrates. The remaining 30 percent will raise LDL cholesterol (bad) but also raise HDL (good). In other words, and hard as this may be to believe, if you replace the carbohydrates in your diet with an equal quantity of lard, it will actually reduce your risk of having a heart attack.&lt;/p&gt;

  &lt;p&gt;It will make you healthier. The same is true for red meat, bacon and eggs, and virtually any other animal product we might choose to eat instead of the carbohydrates that make us fat. (Butter is a slight exception, because only half the fat will definitively improve your cholesterol profile; the other half will raise LDL but also raise HDL.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;what-counts-as-sugar-for-the-purposes-of-this-book-and-your-life&quot;&gt;What counts as “sugar” for the purposes of this book (and your life)&lt;/h3&gt;

&lt;p&gt;In an attempt to use the knowledge contained within this book, I want to be better at parsing information in ingredient lists and the nutritional panel included on the back of most food items. If one wants to avoid sugar, one needs to be aware of the many different words used to describe sugar.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Biochemically, the term “sugar” refers to a group of carbohydrate molecules consisting, as the word “carbohydrate” implies, of atoms of carbon and hydrogen. The names of these carbohydrates all end in “-ose”—glucose, galactose, dextrose, fructose, lactose, sucrose, etc. All of these sugars will dissolve in water, and they all taste sweet to us, although to a greater or lesser extent. When physicians or researchers refer to “blood sugar,” they’re talking about glucose, because it constitutes virtually all of the sugar circulating in our blood.&lt;/p&gt;

  &lt;p&gt;The more common usage of “sugar” refers to sucrose, the white crystalline variety that we put in our coffee or tea or sprinkle on our morning cereal. Sucrose in turn is composed of equal parts glucose and fructose, the two smaller sugars (monosaccharides, in the chemical lingo) bonded together to make the larger one (a disaccharide).&lt;/p&gt;

  &lt;p&gt;Fructose, found naturally in fruits and honey, is the sweetest of all these sugars, and it’s the fructose that makes sucrose particularly sweet. Lately, researchers have been asking whether fructose is toxic, because it’s the significant amount of fructose in sugar (sucrose) that differentiates it from other carbohydrate-rich foods, such as bread or potatoes, which break down upon digestion to mostly glucose alone. Because we never consume the fructose without the glucose, though, the appropriate question is whether sucrose, the combination of roughly equal parts fructose and glucose, is toxic, not one alone.&lt;/p&gt;

  &lt;p&gt;This would be confusing enough without the introduction in the 1970s of high-fructose corn syrup (HFCS), which replaced a significant part of the refined sugar (i.e., sucrose) consumed in the United States over the decade that followed. High-fructose corn syrup comes in different formulations; the most common one is known as HFCS-55, because it’s 55 percent fructose and 45 percent glucose.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;Sugar by any other name is still sugar! All of these are forms of sugar:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;sucrose&lt;/li&gt;
    &lt;li&gt;dextrose&lt;/li&gt;
    &lt;li&gt;fructose&lt;/li&gt;
    &lt;li&gt;maltose&lt;/li&gt;
    &lt;li&gt;lactose&lt;/li&gt;
    &lt;li&gt;glucose&lt;/li&gt;
    &lt;li&gt;honey&lt;/li&gt;
    &lt;li&gt;agave syrup&lt;/li&gt;
    &lt;li&gt;high-fructose corn syrup&lt;/li&gt;
    &lt;li&gt;maple syrup&lt;/li&gt;
    &lt;li&gt;brown-rice syrup&lt;/li&gt;
    &lt;li&gt;molasses&lt;/li&gt;
    &lt;li&gt;evaporated cane juice&lt;/li&gt;
    &lt;li&gt;cane juice&lt;/li&gt;
    &lt;li&gt;fruit-juice concentrate&lt;/li&gt;
    &lt;li&gt;corn sweetener&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

</content>
 </entry>
 
 <entry>
   <title>Book Notes: &apos;The Case Against Sugar&apos; by Gary Taube</title>
   <link href="https://josh.works/notes-gary-taubes-case-against-sugar"/>
   <updated>2019-08-12T13:00:00+00:00</updated>
   <id>https://josh.works/notes-gary-taubes-case-against-sugar</id>
   <content type="html">&lt;p&gt;In the last few weeks, I read &lt;a href=&quot;https://www.goodreads.com/book/show/29874881-the-case-against-sugar&quot;&gt;The Case Against Sugar&lt;/a&gt; by Gary Taubes.&lt;/p&gt;

&lt;p&gt;I found it to be compelling (more on that in a moment) and &lt;em&gt;I want to be impacted by them&lt;/em&gt;. I want the daily decisions that I make to be subtly influenced by this author and these books.&lt;/p&gt;

&lt;p&gt;Related but in a different vein, Nat Ellison has his &lt;a href=&quot;https://www.nateliason.com/notes&quot;&gt;collection of book notes&lt;/a&gt;. Derek Sivers &lt;a href=&quot;https://sivers.org/&quot;&gt;has his&lt;/a&gt;. Patrick Collison has &lt;a href=&quot;https://patrickcollison.com/bookshelf&quot;&gt;a list&lt;/a&gt; of books he recommends. I’ve got &lt;a href=&quot;/recommended-reading-original-list&quot;&gt;my own list of recommended books&lt;/a&gt;, but I’ve wanted to dive a bit deeper on some of them. So, like Nat Ellison and others, I’m grab-bagging quotes (helpfully brought over from highlights on my Kindle) and some thoughts interspersed between.&lt;/p&gt;

&lt;p&gt;I’ve not settled (yet) on a format I like, but as in most things, this is an iterative process. These notes may be useful to others (at least to help them decide if the book is worth reading) but primarily this is a helpful process &lt;em&gt;to me&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;After reading &lt;em&gt;The Case Against Sugar&lt;/em&gt;, I read (and did a write-up of) &lt;a href=&quot;/notes-gary-taubes-why-we-get-fat&quot;&gt;Why We Get Fat: And What To Do About It&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;notes-on-formatting&quot;&gt;Notes on formatting&lt;/h3&gt;

&lt;p&gt;I’ve included broad quotes from the book; headings, non-quoted text, bold/italicized text, etc all my addition to help with the skimming, unless I indicate otherwise.&lt;/p&gt;

&lt;h1 id=&quot;the-case-against-sugar&quot;&gt;The Case Against Sugar&lt;/h1&gt;

&lt;h3 id=&quot;the-dominant-views-of-obesity-and-weight-have-problems&quot;&gt;The dominant views of obesity and weight have problems&lt;/h3&gt;

&lt;p&gt;Starting this out with a strong shot across the bow, Taubes argues that the “modern” understanding about why we get fat falls into two dominant approaches, and both are catastrophically wrong.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Since the 1930s, to summarize briefly, nutritionists have embraced two ideas that ultimately shaped our judgments about what constitutes a healthy diet. These would be the pillars on which the foundation of nutritional wisdom about the impact of foods — including sugar — on obesity, diabetes, heart disease, and other chronic diseases would be based. They were both products of the state of the science of the era; &lt;strong&gt;they were both misconceived, and they would both do enormous damage to our understanding of the diet-disease relationship and, as a result, the public health.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;The first idea was that the fat in our diets causes the chronic diseases that tend to kill us prematurely in modern Western societies.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;At its simplest, this focus on dietary fat — specifically from butter, eggs, dairy, and fatty meats — emerged from a concept that is now known as a nutrition transition: As populations become more affluent and more urban, more “Westernized” in their eating habits and lifestyle, they experience an increased prevalence of these chronic diseases. Almost invariably, the dietary changes include more fat consumed (and more meat) and fewer carbohydrates…&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;The second pillar of modern nutritional wisdom is far more fundamental and ultimately has had far more influence on how the science has developed, and it still dominates thinking on the sugar issue.&lt;/strong&gt; As such, it has also done far more damage. To the sugar industry, it has been the gift that keeps on giving, the ultimate defense against all arguments and evidence that sugar is uniquely toxic. &lt;strong&gt;This is the idea that we get obese or overweight because we take in more calories than we expend or excrete.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;By this thinking, researchers and public-health authorities think of obesity as a disorder of “energy balance,” a concept that has become so ingrained in conventional thinking, so widespread, that arguments to the contrary have typically been treated as quackery, if not a willful disavowal of the laws of physics.&lt;/p&gt;

  &lt;p&gt;According to this logic of energy balance, of calories-in/calories-out, the only meaningful way in which the foods we consume have an impact on our body weight and body fat is through their energy content — calories. This is the only variable that matters. We grow fatter because we eat too much — we consume more calories than we expend — and this simple truth was, and still is, considered all that’s necessary to explain obesity and its prevalence in populations.&lt;/p&gt;

  &lt;p&gt;This thinking renders effectively irrelevant the radically different impact that different macronutrients—the protein, fat, and carbohydrate content of foods—have on metabolism and on the hormones and enzymes that regulate what our bodies do with these foods: whether they’re burned for fuel, used to rebuild tissues and organs, or stored as fat.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;By this energy-balance logic, the close association between obesity, diabetes, and heart disease implies no profound revelations to be gleaned about underlying hormonal or metabolic disturbances, but rather that obesity is driven, and diabetes and heart disease are exacerbated, by some combination of gluttony and sloth.&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;It implies that all these diseases can be prevented, or that our likelihood of contracting them is minimized if individuals - or populations - are willing to eat in moderation and perhaps exercise more, as lean individuals are assumed to do naturally. Despite copious reasons to question this logic and, as we’ll see, an entire European school of clinical research that came to consider it nonsensical, medical and nutrition authorities have tended to treat it as gospel.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;!--more--&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;breakfast-cereal-companies-have-been-sketchy-for-a-while&quot;&gt;Breakfast Cereal companies have been sketchy for a while&lt;/h3&gt;

&lt;p&gt;Next time you walk down the cereal isle of an American supermarket, think of this section:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[He] then began the trend of rationalizing how a company positioned as a producer of health foods could justify selling a cereal coated in sugar. Echoing the logic of Jim Rex, Post executives would argue that pre-sweetened cereal actually contained less sugar than what children would add on their own.&lt;/p&gt;

  &lt;p&gt;By adding sugar, Post was merely “trading off sugar carbohydrates for grain carbohydrates and sugar and starch are metabolized in exactly the same way.” Biochemists had already demonstrated that this was untrue, but it was not widely known.&lt;/p&gt;

  &lt;p&gt;Either way, Post argued that “the nutritional value of the product” remained unchanged, with sugar calories replacing those from cereal grains. Sugar Crisp (now called Golden Crisp) sold spectacularly well, forcing the rest of the industry to play catch-up.&lt;/p&gt;

  &lt;p&gt;Nabisco quickly released Ranger Joe nationwide, now renamed Wheat and Rice Honeys. Kellogg’s, in 1950, released Sugar Corn Pops, even though most of the company stock was still held by the W. K. Kellogg Foundation, “a charitable organization established to promote children’s health and education.”&lt;/p&gt;

  &lt;p&gt;Kellogg’s set out to produce a sugar-coated version of its iconic cornflakes as if “it was their salvation,” releasing Sugar Frosted Flakes in 1952 and Sugar Smacks, a direct competitor to Post’s Sugar Crisp, a year later.&lt;/p&gt;

  &lt;p&gt;Kellogg’s failed to produce a sugar-coated oat cereal and turned to chocolate instead. The company logic, again guided by nutritionists, was that “all this sweetness is not the best for children, [and] that bittersweet chocolate was good and healthy and it wouldn’t be harmful to them.” The result was Cocoa Krispies.&lt;/p&gt;

  &lt;p&gt;When the first, bittersweet-flavored version didn’t sell, the company added even more sugar. “The new cereal,” as one Kellogg’s salesman put it, “was a dietary flop, and a sales bonanza.”&lt;/p&gt;

  &lt;p&gt;General Mills executives worried about the “possible dietary effects” of sugar-coated cereals, and its in-house nutritionist delayed the company’s entry into the pre-sweetened market for years, but eventually they were overruled.&lt;/p&gt;

  &lt;p&gt;The marketing team at General Mills argued that if the company didn’t compete, it wouldn’t survive. In 1953, General Mills released Sugar Smiles, a mixture of Wheaties and sugar-frosted Kix; by 1956, they had released three more sugar-coated cereals—Sugar Jets, Trix, and Cocoa Puffs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;is-the-sugar-industry-really-a-thing&quot;&gt;Is ‘the sugar industry’ really a thing?&lt;/h3&gt;

&lt;p&gt;Vilifying sugar can seem a bit tinfoil-hat-esque&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;By the mid-1930s, when the U.S. Congress passed the Sugar Act, which would stay in force, with amendments, for forty years, the domestic sugar industry was distributed so widely — beet sugar in the Northern, Central, and Western states; cane in the South; refiners on the coasts; and the candy, soda, and paint industries (sugar is an essential ingredient in paint) — that &lt;strong&gt;President Franklin Roosevelt was calling the sugar lobby, according to The New York Times, “the most powerful pressure group that had descended on the national capital during his lifetime.”&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;The Sugar Act effectively guaranteed that producing and refining sugar in the United States would always be a profitable business. It established the price of raw sugar (typically higher, if not significantly so, than world prices), put limits on domestic production, and set quotas on imports.&lt;/p&gt;

  &lt;p&gt;The Sugar Act also allowed for subsidies to be paid to producers either for the sugar they didn’t produce or the sugar they couldn’t sell - “benefit payments to domestic producers,” in the words of the Times. As a result, consumers were invariably paying more for sugar than would have been the case without the quotas and price supports. And yet that didn’t stop us from buying sugar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;p&gt;The sugar industry built a research arm to support its goals; the research arm would shape research and legislation. Some of the key players in this enterprise would use the same tactics promoting the idea that cigarettes are safe. (Or, rather, “we cannot be sure that they’re dangerous”)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Sugar Research Foundation, befitting its name, would not indulge in any of the questionable activities that led to the demise of [it’s predecessor,] the Sugar Institute. Rather, it would focus on the single major challenge that the entire industry had in common - “the defense of sugar as a food and the expansion of post-war markets for sugar.”&lt;/p&gt;

  &lt;p&gt;The dilemma for such an organization is one that would become common to all such industry-funded research programs and, most notably, those of the tobacco industry: how to defend and promote the use of a product - sugar, in this case - while simultaneously funding research that is ostensibly meant to secure all known facts about the product and its effect on human health. Because this research could elucidate the problematic aspects of sugar, the two goals could turn out to be mutually exclusive.&lt;/p&gt;

  &lt;p&gt;Executives of the sugar industry might hope this would never happen, but there was no guarantee. If results of the research in any way challenged “the defense of sugar,” the organization would have to find a way to spin its research and its program of education to make it appear as though it didn’t.&lt;/p&gt;

  &lt;p&gt;By 1951, the Sugar Research Foundation, by then renamed the Sugar Association Inc. (SAI), had distributed three million dollars in research grants throughout the highest levels of academia — from Princeton and Harvard on the East Coast to the California Institute of Technology on the West.&lt;/p&gt;

  &lt;p&gt;At a time when academic researchers were encouraged to work closely with industry, the SRF/SAI grants went to some of the most prominent researchers in nutrition, carbohydrate chemistry, and metabolism. The program was exceptional, and the grants themselves would regularly be written up in Science and other influential scientific journals.&lt;/p&gt;

  &lt;p&gt;The first award went to the Massachusetts Institute of Technology (MIT): $125,000 to fund five years of research on carbohydrate metabolism. The MIT researchers would look for new industrial uses for sugar, while training a generation of young scientists in carbohydrate chemistry.&lt;/p&gt;

  &lt;p&gt;MIT announced the grant along with the news that Robert Hockett, an assistant professor of chemistry, would take a leave of absence from the university to become scientific director of the SRF/SAI. The president of MIT would later say that he hoped this collaboration with the sugar industry would be a model for how industry and universities worked together in the future, and to a great extent it was.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Robert Hockette later served as scientific director for the Council for Tobacco Research, per this next section:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In the early 1970s, Hockett served as scientific director for the Council for Tobacco Research.&lt;/p&gt;

  &lt;p&gt;In that role, he dealt with the dilemma of funding research while simultaneously promoting consumption of the product by threatening at least one investigator with a cessation of his funding if he didn’t spin the interpretation of the evidence to make it less obvious that cigarette smoke was carcinogenic.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;In 1951, the American Sugar Refining Company launched an intensive advertising campaign…stressing how important it was for children, in particular, to benefit from the energy contained in pure sugar.&lt;/p&gt;

  &lt;p&gt;Three years later, the Sugar Association took over the effort, working through its public-relations arm, Sugar Information, Inc., which would now be dedicated to communicating the proposition that sugar was an indispensable food in any diet. The Sugar Association budgeted $1.8 million for a three-year advertising blitz—an “educational campaign”—and hired the legendary Leo Burnett advertising agency in Chicago to craft it.&lt;/p&gt;

  &lt;p&gt;[…]&lt;/p&gt;

  &lt;p&gt;Burnett’s agency was famous, among other things, for the Jolly Green Giant, Tony the Tiger, the Pillsbury Doughboy, and the Marlboro Man. In 1998, Time magazine listed Burnett, the “Sultan of Sell,” as among the hundred most influential people of the twentieth century.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;While physicians at Harvard, Cornell, and Stanford medical schools were now publishing in the medical journals anti-obesity diets that advocated avoiding sugar and sweets entirely, as did the occasional medical textbook, the sugar industry, reported &lt;em&gt;The Times&lt;/em&gt;, was dead set on convincing the public that its product was anything but fattening. Sugar Information, Inc., with the help of Leo Burnett, would do so by taking advantage of two assumptions of the nutritionists themselves.&lt;/p&gt;

  &lt;p&gt;The first, as we discussed, was that obesity was caused by the excess consumption of all calories. If so, there was nothing unique about sugar. It was “neither a ‘reducing food’ nor a ‘fattening food,’ ” as the sugar-industry advertisements were now proclaiming.&lt;/p&gt;

  &lt;p&gt;Assumption number two was based on the idea that hunger is a response either to low blood sugar or to the diminished utilization of glucose for fuel by the central nervous system. (The latter was an idea of Jean Mayer, working in Fred Stare’s department at Harvard, and funded, at least in part, by the Sugar Association.)&lt;/p&gt;

  &lt;p&gt;&lt;em&gt;Both assumptions would be repeatedly refuted in experiments and would remain at best controversial for another twenty years, but nutritionists had a tendency, as they still do, to hold on to their hypotheses once adopted, regardless of the evidence that might accumulate against them.&lt;/em&gt; These ideas continued to suggest that foods that had the ability to raise blood sugar quickly or to be metabolized quickly - as sugar did and was - would be particularly effective at staving off hunger and thus overeating.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;p&gt;An article expressing a negative view of sugar &lt;em&gt;almost&lt;/em&gt; appeared in Readers Digest. &lt;em&gt;Almost&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Mayer had published an article in June 1976 in The New York Times Magazine - “The Bitter Truth About Sugar” - linking sugar not just to cavities and tooth decay but to obesity and type 2 diabetes, what Mayer called the “fat-and-forty type” of diabetes because of its association with obesity and aging.&lt;/p&gt;

  &lt;p&gt;For children, Mayer suggested, sugar is quite possibly as addictive as tobacco. “The limited bill against sucrose which can be documented is sufficient to justify a drastic decrease in our consumption”, Mayer had written.&lt;/p&gt;

  &lt;p&gt;At the Scottsdale meeting, four months after the Times had published Mayer’s article, Tatem described how the Sugar Association had come to learn that Reader’s Digest was planning to run an excerpt of it.&lt;/p&gt;

  &lt;p&gt;Tatem and his colleagues had then managed to kill the excerpt, he said, first with an hour-and-a-half call to a Reader’s Digest editor, followed by a three-page telegram to the managing editor himself.&lt;/p&gt;

  &lt;p&gt;Mayer’s article, according to the telegram, which was distributed to board members at the meeting, was a “scientific farce and a journalistic disgrace,” and the Sugar Association could say this because “not one shred of substantiated, admissible scientific evidence exists linking sugar to the death-dealing diseases.”&lt;/p&gt;

  &lt;p&gt;This was the story that the sugar industry believed, and this was the story the Sugar Association was now widely selling to the American public. “We have moved to the defensive - the defense of our primary product,” Tatem said. “In confronting our critics we try never to lose sight of the fact that no confirmed scientific evidence links sugar to the death-dealing diseases. This crucial point is the lifeblood of the Association.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;
&lt;h3 id=&quot;sugar-and-the-fda-getting-cyclamates-and-saccharin-banned&quot;&gt;Sugar and the FDA, getting cyclamates and saccharin banned&lt;/h3&gt;

&lt;p&gt;The ‘threat’ mentioned below was non-caloric sweeteners displacing sugar in food.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Publicly, the sugar industry would address the threat by looking for ways to diversify their products—continuing to fund research on the use of sugar in paints, detergents, water purification, and cigarettes, among other items—but none of these held the promise of replacing the sugar sales that were in danger of being lost to artificial sweeteners.&lt;/p&gt;

  &lt;p&gt;Privately, the industry would try to generate the evidence that the FDA needed to put the competition out of business. Although industry executives were remarkably open about this strategy, at least once it was showing signs of success.&lt;/p&gt;

  &lt;p&gt;In 1969, after the Sugar Association created the International Sugar Research Foundation, John Hickson, the Foundation’s vice president, described the sugar industry’s position as&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;find new arguments to use as leverage to force the FDA to fulfill its regulatory functions or expect to see major fractions of its markets taken over.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;To The New York Times, Hickson phrased this position in slightly more colloquial terms:&lt;/p&gt;
  &lt;blockquote&gt;
    &lt;p&gt;If anyone can undersell you nine cents out of 10,&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;he said, speaking of cyclamates and saccharin,&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;you’d better find some brickbat you can throw at him.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;That brickbat, to be precise, was a 1958 amendment to the Pure Food and Drugs Act that had been passed by Congress twenty years earlier.&lt;/p&gt;

  &lt;p&gt;The original act had mandated that the FDA approve any new ingredient in processed foods as safe before it could be used, specifying that the only criterion for approval was safety. If a product had a safety risk, no amount of benefit from its use would work in its favor. There would be none of the trade-offs that Roosevelt had perceived or Philip Handler would later describe.&lt;/p&gt;

  &lt;p&gt;A New York congressman named James Delaney chaired the congressional committee responsible for the 1958 amendment, and Delaney had recently lost a close relative to cancer. Hence, the amendment came with what would come to be called the “Delaney clause,” specifying that “no additive shall be deemed to be safe if it is found to induce cancer when ingested by man or animal.”&lt;/p&gt;

  &lt;p&gt;The 1958 amendment had also allowed the FDA to exempt some seven hundred existing substances from the approval process on the grounds that they were “generally recognized as safe,” a designation that depended on the opinions of experts with the appropriate qualifications.&lt;/p&gt;

  &lt;p&gt;These substances, which included both cyclamates and saccharin, had what would come to be known as GRAS (generally recognized as safe) status: the industry could freely use and sell them as food additives, but if new evidence came along to raise questions about their safety, the FDA would have to reassess these as well.&lt;/p&gt;

  &lt;p&gt;Between 1963 and 1969, the Sugar Association spent more than two-thirds of a million dollars (over four million today) on research designed to force the FDA to remove cyclamates from the GRAS list and have them banned.&lt;/p&gt;

  &lt;p&gt;Much of the funding went to then obscure research organizations such as the Wisconsin Alumni Research Foundation (WARF) and the Worcester Foundation for Experimental Biology. The researchers at these foundations would look at the effects of saccharin or cyclamates on ingestion and excretion, metabolism, blood transport, drug interactions, the stunting of growth, cell or chromosomal damage that might lead to cancer, on sex hormones, birth defects, behavior, and even gastric distress.&lt;/p&gt;

  &lt;p&gt;The aim was to find something that could prompt the FDA to reassess the GRAS status of these artificial sweeteners. If nothing else, the research reports from these institutions would keep cyclamates and saccharin in the news as a potential health hazard and increase consumer anxiety about their safety.&lt;/p&gt;

  &lt;p&gt;In May 1965, the FDA published its first review of the medical literature on cyclamates and concluded that there was little to fear.&lt;/p&gt;

  &lt;p&gt;Five months later, the Sugar Association announced that WARF had published a one-page letter in the prestigious journal Nature suggesting that cyclamates could stunt the growth of rats—at least when the rats consumed these noncaloric sweeteners in quantities equivalent to hundreds of twelve-ounce cans of diet soda daily. This was the only study the WARF researchers would publish on cyclamates, but the two researchers involved (apparently the president and head of the biological department at WARF) continued their research through the early 1970s, first on cyclamates and then on saccharin.&lt;/p&gt;

  &lt;p&gt;They reported directly to the Sugar Association and paid multiple visits to the FDA to discuss their unpublished results and why they believed that cyclamates should be banned from public use of any kind, suggesting to the FDA investigators that cyclamates were capable of causing everything from birth defects to “mental disturbance.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;if-all-the-modern-science-is-suspect-has-there-ever-been-a-correct-understanding-of-nutrition-sugar-etc&quot;&gt;If all the “modern” science is suspect, has there ever been a correct understanding of nutrition, sugar, etc?&lt;/h3&gt;

&lt;p&gt;Yes. Pre-WWII nutrition research in Europe was good, and informs most of the author’s views on diet and nutrition. The research saw the obesity as a hormonal regulatory disorder; it’s ignored/lost today. Why?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[This body of literature existed…] Then it virtually vanished. As the German and Austrian medical-research communities evaporated with the rise of Hitler and the devastation of the Second World War, the notion of obesity as a hormonal regulatory disorder effectively evaporated with it.&lt;/p&gt;

  &lt;p&gt;The primary German textbook on endocrinology and internal medicine in the 1950s still included a discussion of this thinking, but that textbook never saw an English translation, which is significant, since the lingua franca of medical science had now shifted from German prewar to English afterward.&lt;/p&gt;

  &lt;p&gt;The German-language journals from the prewar era, and with them the best scientific thinking of the era in all the disciplines relevant to both obesity and diabetes—including metabolism, endocrinology, nutrition, and genetics—would no longer be read, nor would they be referenced.&lt;/p&gt;

  &lt;p&gt;In the United States, which would now dominate medical research for decades, physicians treating obese patients in their clinics and researchers studying it in the laboratory embraced the ideas of Louis Newburgh as documented facts. “The work of Newburgh showed clearly,” they would say in seminars, or “Newburgh answered that” would be the response to any suggestions that obesity was caused by anything other than a perverted appetite.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;observed-trends-on-health&quot;&gt;Observed trends on health&lt;/h3&gt;

&lt;p&gt;There’s research on diet. There’s also value in correlation and the change in health in populations over time. The book spends non-trivial time on the topic.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The logic that sugar was likely to be causally involved was based on a series of propositions:&lt;/p&gt;

  &lt;p&gt;First, that the prevalence of heart disease was increasing in Western nations (whether as dramatically as some believed or not) and increased with affluence; it was higher in developed nations than undeveloped.&lt;/p&gt;

  &lt;p&gt;Second, that the same was true of the prevalence of diabetes, obesity, and hypertension (high blood pressure).&lt;/p&gt;

  &lt;p&gt;Third, that these disorders are intimately related: the obese are likely to be diabetic and hypertensive and have heart attacks; those who have heart attacks are likely to be hypertensive and obese and/or diabetic; diabetics are very likely to be obese and hypertensive and very likely to die of heart attacks.&lt;/p&gt;

  &lt;p&gt;So, whatever the causal factor was, it was likely to be something that accompanied affluence and was an integral part of Western diets or lifestyles, and something that could cause all these diseases, not just heart disease alone.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;the-eating-fat-makes-you-fat-movement&quot;&gt;The “eating fat makes you fat” movement&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;Through the 1960s and 1970s, researchers launched ever more elaborate and expensive trials in which the subjects were randomized to diets of differing amounts or types of fat and then followed for a year or several years to see the effect: Did they have more or less heart disease or cancer?&lt;/p&gt;

  &lt;p&gt;Did they live longer or tend to die prematurely?&lt;/p&gt;

  &lt;p&gt;Those trials would consistently fail to confirm that eating less fat or replacing saturated fat with polyunsaturated fat could prolong lives. No such equivalent effort would be pursued in testing sugar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;the-sugar-industry-spent-lots-of-money-on-shiny-things-for-the-premier-research-institutions-of-the-day&quot;&gt;The sugar industry spent lots of money on shiny things for the premier research institutions of the day&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;The point man for the Sugar Association’s Food and Nutrition Committee was Fred Stare, founder and longtime chairman of the department of nutrition at the Harvard School of Public Health.&lt;/p&gt;

  &lt;p&gt;The sugar industry had been supporting Stare and his department since the early 1940s, and the International Sugar Research Foundation estimated that its grants to Stare (to study the relationship between blood sugar, appetite, and obesity) had resulted in the publication of thirty research articles and reviews between 1952 and 1956 alone.&lt;/p&gt;

  &lt;p&gt;In 1960, when Stare’s nutrition department broke ground on a new five-million-dollar building, it was paid for largely by private donations, including the “lead gift,” as Stare described it, of $1.026 million from the General Foods Corporation, the maker of Kool-Aid and the Tang breakfast drink.&lt;/p&gt;

  &lt;p&gt;By the late 1960s, Stare had become, in academia, the most public defender of sugar — it was not even “remotely true,” he would write, “that modern sugar consumption contributes to poor health” — while his department received funding from the sugar industry, the National Confectioners Association, Coca-Cola, PepsiCo, and the National Soft Drink Association. (Tobacco - industry documents reveal that Stare’s department, at his request, also received money from the Tobacco Research Council, specifically to fund projects that might exonerate cigarettes as a cause of heart disease.)&lt;/p&gt;

  &lt;p&gt;Stare freely acknowledged that he did not use sugar in his coffee or cereal; he was saving the calories, he said, for a martini at night. But he also argued that it was unsound “and may be hazardous” to recommend that anyone, including children, avoid sugar, on the grounds that if they did they would be likely to replace it with saturated fat, “and that, I hope, everyone will agree, is not desirable.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;In November 1976, Stare’s copious conflicts of interest were finally exposed in an article by Michael Jacobson, founder of the Center for Science in the Public Interest, and two colleagues, entitled “Professors on the Take.”&lt;/p&gt;

  &lt;p&gt;“In the three years after Stare told a Congressional hearing on the nutritional value of cereals that ‘breakfast cereals are good foods,’ ” Jacobson and his colleagues wrote, “the Harvard School of Public Health received about $200,000 from Kellogg, Nabisco, and their related corporate foundations.” (“A lot of the public, and unfortunately some of my colleagues, think I’m a monster,” Stare would later acknowledge, “a paid tool of the food industry.”)&lt;/p&gt;

  &lt;p&gt;By 1976, however, Stare was no longer necessary for the public-relations campaign, and the Sugar Association could turn to an FDA document that took up where “Sugar in the Diet of Man” left off.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;In 1986, the FDA returned to the question of whether sugar should be generally recognized as safe. Three FDA administrators, led by Walter Glinsmann (who would later become a consultant for the Corn Refiners Association), now took up the job that the SCOGS committee had left off in 1976. After reviewing the evidence once again, these FDA administrators determined that “no conclusive evidence demonstrates a hazard to the general public when sugars are consumed at the levels that are now current.”&lt;/p&gt;

  &lt;p&gt;The FDA assessment then became the official government position on sugar, its logic and conclusions echoed in a series of official reports on diet and health that came after — particularly &lt;em&gt;the 1988 Surgeon General’s Report on Nutrition and Health&lt;/em&gt; and &lt;em&gt;the 1989 National Academy of Sciences report Diet and Health&lt;/em&gt;, which are the two seminal documents on the subject in the last half-century, and even reviews by the Institute of Medicine as late as 2005.&lt;/p&gt;

  &lt;p&gt;All of these official documents focused on fat as the root of dietary evils: The “disproportionate consumption of food high in fats,” according to the Surgeon General’s report, played a prominent role in five of the ten most common causes of death and thus could be held chiefly responsible for two-thirds of the 2.1 million deaths in the United States that year. All repeated the FDA’s conclusion that the evidence linking sugar to chronic disease was inconclusive, and then effectively equated “inconclusive,” as the Sugar Association did, with “nonexistent.” (As of March 2016, the Sugar Association Web site was still misquoting the FDA report to make that point.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;p&gt;In 1986, the average American consumed forty-two pounds of sugar a year. Today, the number is closer to 120 pounds.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In their 1986 report, Glinsmann and his colleagues estimated the levels at which sugar was currently consumed to be forty-two pounds of sugar per person per year, or the equivalent every day of the amount of sugar in eighteen ounces — a can and a half — of Coke or Pepsi.&lt;/p&gt;

  &lt;p&gt;This was only slightly more than half of what the USDA was estimating at the time — seventy-five pounds per capita — and significantly less than half (44 percent) of what the USDA estimated we were consuming by the early twenty-first century, ninety pounds per capita.&lt;/p&gt;

  &lt;p&gt;Even the most ardent critics of sugar would probably be content if Americans consumed only forty-two pounds of added sugar and high-fructose corn syrup each year on average, but the evidence suggests we consume significantly more.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;nutrition-science-convinced-that-high-fat-diets-were-bad&quot;&gt;Nutrition science convinced that high-fat diets were bad&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;What happened after that tells us a lot about the particular pitfalls of nutrition science and public-health policy and how they interact.&lt;/p&gt;

  &lt;p&gt;Instead of the billion-dollar test of the dietary-fat hypothesis, the NIH invested a quarter-billion dollars in two trials that tested variations on the same theme, or links in a hypothetical chain of reasoning.&lt;/p&gt;

  &lt;p&gt;The first trial would test the supposition that men with high cholesterol levels who were told to eat a low-fat diet (and also took blood-pressure medication and received counseling to quit smoking, if either of these was necessary) would live longer than men who weren’t.&lt;/p&gt;

  &lt;p&gt;The results of this study were published in 1982 and failed to confirm the hypothesis.&lt;/p&gt;

  &lt;p&gt;The men on the low-fat diet suffered more deaths than the men who were left to their own devices. (The investigators refused to believe that a low-fat diet could be harmful, and certainly not the smoking cessation, so they concluded, questionably, that the blood-pressure medication had unforeseen side effects and caused more deaths than it prevented.)&lt;/p&gt;

  &lt;p&gt;The second trial tested the hypothesis that a cholesterol-lowering medication given to men with very high levels of cholesterol would lengthen their lives, compared with men who took no such medication. The results of this study, published in 1984, indicated that the medication helped, albeit just barely.&lt;/p&gt;

  &lt;p&gt;The authorities at the National Institutes of Health then took what amounts to a leap of faith. (“It’s an imperfect world,” as one of the NIH administrators later phrased it. “The data that would be definitive are ungettable, so you do your best with what is available.”)&lt;/p&gt;

  &lt;p&gt;Concerned, as they were, that hundreds of thousands of Americans were dying of heart disease yearly, they assumed that if a drug that lowered cholesterol would extend the lives of men with very high cholesterol, then a diet that also lowered cholesterol would do the same for all the rest of us.&lt;/p&gt;

  &lt;p&gt;Equally important, they assumed that the benefit of communicating this leap of faith on a nationwide scale was worth the risks.&lt;/p&gt;

  &lt;p&gt;In 1984, attended by considerable controversy, they initiated a massive public-relations campaign to induce every American over the age of two to eat a low-fat diet.&lt;/p&gt;

  &lt;p&gt;We’ve been living with the consequences ever since. Had scientific progress stopped there, we wouldn’t know whether the leap of faith was justified. But we do.&lt;/p&gt;

  &lt;p&gt;The NIH eventually spent between half a billion and a billion dollars, depending on the estimate, testing the hypothesis that a low-fat diet would prevent chronic disease in women and bestow on them a longer life.&lt;/p&gt;

  &lt;p&gt;The authorities involved had little doubt that it would, and were responding to political pressure to include women in medical trials; women had been underrepresented until then. The trial, known as the Women’s Health Initiative, was launched in the early 1990s, and the results were reported in 2006.&lt;/p&gt;

  &lt;p&gt;Once again, it failed to confirm the hypothesis. The roughly twenty thousand women in the trial who had been counseled to consume low-fat diets (and to eat more fruits, vegetables, and whole grains, and less red meat) saw no health benefits compared with the women who had been given no dietary instructions whatsoever.&lt;/p&gt;

  &lt;p&gt;Once again, the researchers involved and the public-health authorities chose not to perceive this negative result as reason to question their belief that fat causes heart disease and that low-fat diets will prevent it. Rather, they chose to assume that the trial—the largest such randomized trial ever done—simply failed to get the right answer, or would have gotten the answer they expected (“statistically significant,” in the scientific jargon) had the study lasted longer or included more subjects, or had the women in the trial done a better job of adhering to a low-fat diet.&lt;/p&gt;

  &lt;p&gt;These authorities had now spent decades (nearly half a century, in the case of the American Heart Association) telling us that dietary fat was killing us. Thus they found it easier to accept, or at least easier to communicate, the notion that the study had failed (or almost but not quite succeeded) than that their preconceptions about diet and the dietary advice they had been giving, based largely on that initial leap of faith, had been incorrect.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;metabolic-syndrome-mechanism-by-which-we-actually-get-fat&quot;&gt;Metabolic Syndrome (mechanism by which we &lt;em&gt;actually&lt;/em&gt; get fat)&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;The medical research community came to recognize that insulin resistance and a condition now known as “metabolic syndrome” is a major, if not the major, risk factor for heart disease and diabetes.&lt;/p&gt;

  &lt;p&gt;Before we get either heart disease or diabetes, &lt;strong&gt;we first manifest metabolic syndrome&lt;/strong&gt;. The CDC now estimates that some seventy-five million adult Americans have metabolic syndrome.&lt;/p&gt;

  &lt;hr /&gt;

  &lt;p&gt;Metabolic syndrome ties together a host of disorders that the medical community typically thought of as unrelated, or at least having separate and distinct causes:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;getting fatter (obesity)&lt;/li&gt;
    &lt;li&gt;high blood pressure (hypertension)&lt;/li&gt;
    &lt;li&gt;high triglycerides&lt;/li&gt;
    &lt;li&gt;low HDL cholesterol (dyslipidemia)&lt;/li&gt;
    &lt;li&gt;heart disease (atherosclerosis)&lt;/li&gt;
    &lt;li&gt;high blood sugar (diabetes)&lt;/li&gt;
    &lt;li&gt;inflammation (pick your disease)&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;as products of insulin resistance and high circulating insulin levels (hyperinsulinemia). It’s a kind of homeostatic disruption in which regulatory systems throughout the body are misbehaving with slow, chronic, pathological consequences everywhere.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;As Reaven described it, the condition of being resistant to insulin — the key defect in metabolic syndrome — is the underlying cause of type 2 diabetes.&lt;/p&gt;

  &lt;p&gt;Not everyone with insulin resistance becomes diabetic, however; some continue to secrete sufficient insulin to overcome their bodies’ resistance to the hormone. And this hyperinsulinemia in turn has deleterious effects throughout the human body, including causing heart disease by raising triglyceride levels and blood pressure, lowering levels of HDL cholesterol, and further exacerbating the insulin resistance.&lt;/p&gt;

  &lt;p&gt;It’s a vicious cycle in which secreting too much insulin can cause insulin resistance, and insulin resistance will cause the body to secrete still more insulin. Diabetes and heart disease are likely to follow. Getting ever fatter may be a cause, but it could be a result as well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;For the past fifty years, as the Tokelau case illustrates, nutritionists and heart-disease researchers have assumed that eating too much salt is the cause of hypertension, which can be defined as chronically and pathologically high levels of blood pressure.&lt;/p&gt;

  &lt;p&gt;That hypertension is one of the five criteria that a physician will use in diagnosing metabolic syndrome would make it seem obvious that it’s likely caused by the same trigger - dietary or otherwise - as the other conditions.&lt;/p&gt;

  &lt;p&gt;In other words, if your blood pressure is elevated, that’s a sign that you’re insulin-resistant and have metabolic syndrome; it also means you’re likely to be overweight, or at least getting fatter, and your triglycerides are elevated, you’re glucose-intolerant, and your HDL cholesterol is low.&lt;/p&gt;

  &lt;p&gt;They all go hand in hand and are probably caused by the same thing.&lt;/p&gt;

  &lt;p&gt;By Occam’s Razor and Burkitt’s logic, if sugar causes insulin resistance and elevates triglycerides and makes us fat, then it very likely causes hypertension, too — if not directly, then at least indirectly, through its effect on insulin resistance and weight.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

</content>
 </entry>
 
 <entry>
   <title>How to Run Your Rails App in Profiling Mode</title>
   <link href="https://josh.works/how-to-run-your-rails-app-in-profiling-mode"/>
   <updated>2019-07-29T13:00:00+00:00</updated>
   <id>https://josh.works/how-run-your-rails-app-in-profiling-mode</id>
   <content type="html">&lt;p&gt;Last time, I &lt;a href=&quot;/data-dog-apm-rails-app-setup&quot;&gt;wrote about setting up DataDog for your Rails application&lt;/a&gt;. Even when “just” running the app locally, it is sending data to DataDog.&lt;/p&gt;

&lt;p&gt;This is super exciting, because I’m getting close to being able to glean good insights from DataDog’s Application Performance Monitoring tool.&lt;/p&gt;

&lt;p&gt;For a variety of reasons, I want to run DataDog against the app as it is running locally, on my laptop. This will scale up to monitoring all this in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;production&lt;/code&gt;, but for now, I can rapidly experiment, and since we’re not deploying anything (yet) I can freely experiment with gathering/interpreting all this data locally.&lt;/p&gt;

&lt;p&gt;The problem with running the app locally is it’s usually running on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;development&lt;/code&gt; mode, which means Rails does lots of stuff to make local development easier, but which makes actual page load time take longer.&lt;/p&gt;

&lt;p&gt;Nate covered how to configure your app to run it in a “production-like” environment, locally, but I got tripped up in some of the minor details involved with porting generalized instructions to our specific codebase.&lt;/p&gt;

&lt;p&gt;So, today, I’m going to explain how to run the app locally in a way that mimics production. Some of this will be specific to our app, but I some of it could be useful to anyone else with a Rails app&lt;/p&gt;

&lt;h2 id=&quot;required-changes-to-configdevelopmentrb&quot;&gt;Required changes to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;config/development.rb&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;Nate suggested setting these options in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;development.rb&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# config/environments/development.rb&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cache_classes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;eager_load&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;serve_static_files&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# 4.2 or less&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# config.public_file_server.enabled = true # 5.0 or more&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;compile&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;digest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;active_record&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;migration_error&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;!--more--&gt;

&lt;p&gt;Since we’re turning off &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assets.compile&lt;/code&gt;, we have to tell the app to precompile assets before we start it.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ rake assets:precompile
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When I start the app server, I get the following error:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[13022] ! Unable to load application: NoMethodError: undefined method `=~&apos; for #&amp;lt;Pathname:0x00007ffc8b20f000&amp;gt;
/Users/joshthompson/wombat/threatsim-rails/threatsim/vendor/bundle/ruby/2.4.0/gems/rails-dev-boost-0.3.0/lib/rails_development_boost/dependencies_patch.rb:107:in `load_path_to_real_path&apos;: undefined method `=~&apos; for #&amp;lt;Pathname:0x00007ffc8b20f000&amp;gt; (NoMethodError)
	from /Users/joshthompson/wombat/threatsim-rails/threatsim/vendor/bundle/ruby/2.4.0/gems/rails-dev-boost-0.3.0/lib/rails_development_boost/loadable_patch.rb:8:in `load&apos;
	from /Users/joshthompson/wombat/threatsim-rails/threatsim/app/workers/license_violation_notice_worker.rb:15:in `&amp;lt;top (required)&amp;gt;&apos;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;That’s coming from this method:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# vendor/bundle/ruby/2.4.0/gems/rails-dev-boost-0.3.0/lib/rails_development_boost/dependencies_patch.rb:105&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;load_path_to_real_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;expanded_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;expand_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;expanded_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;.rb&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;unless&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=~&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\.r(?:b|ake)\Z/&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;expanded_path&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Playing with the code and finding where it breaks, I “cheated” a fix in:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# vendor/bundle/ruby/2.4.0/gems/rails-dev-boost-0.3.0/lib/rails_development_boost/dependencies_patch.rb:105&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;load_path_to_real_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Pathname&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# I added this&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;expanded_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;expand_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;expanded_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;.rb&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;unless&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=~&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\.r(?:b|ake)\Z/&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;expanded_path&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now the app starts up. (I’m not sure what the long-term solution to this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;load_path_to_real_path&lt;/code&gt; method will be.)&lt;/p&gt;

&lt;p&gt;I can click around the app, and I can see data showing up in the Datadog dashboard, &lt;a href=&quot;/data-dog-apm-rails-app-setup&quot;&gt;per the setup we did last time&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-29-localhost-dd-01.jpg&quot; alt=&quot;Data in Datadog&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;how-to-toggle-profiling-mode&quot;&gt;How to toggle &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;profiling&lt;/code&gt; mode&lt;/h1&gt;

&lt;p&gt;Eventually, as I move down the path of performance work, I’ll want to be able to easily run the app with these changes made in  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;config/environments/development.rb&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For our whole team to work on this collectively, we’ll need to be able to commit this code and make it easy to run in profiling mode.&lt;/p&gt;

&lt;p&gt;I don’t want to just leave a big block of code commented out, with a comment like “swap commented blocks around to run in profiling mode”.&lt;/p&gt;

&lt;p&gt;This looks bad:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# uncomment the following code for performance mode, while adding comments to the UNCOMMENTED block below. Switch back when done. &lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# config.cache_classes = true&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# config.eager_load = true&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# config.serve_static_files = true # 4.2 or less&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# config.assets.compile = false&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# config.assets.digest = true&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# config.active_record.migration_error = false&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# comment this block out to run profiling mode, uncomment ^^&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# reverse when done&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cache_classes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;eager_load&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;serve_static_files&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# 4.2 or less&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;compile&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;digest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;active_record&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;migration_error&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Nate (unsurprisingly) gave us a cleaner suggestion:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cache_classes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;eager_load&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;serve_static_files&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;compile&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;digest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;active_record&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;migration_error&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now, when you boot the server, just pass in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PROFILE=true&lt;/code&gt; as an environment variable:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;rails s PROFILE=true
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There’s a lot of double negatives in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ENV[&quot;PROFILE&quot;]&lt;/code&gt; option, and I wanted to verify that I was setting these correctly. If you want to do the same, add the following to your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;development.rb&lt;/code&gt; and boot the app:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# config/environments/development.rb&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cache_classes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;eager_load&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;serve_static_files&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# 4.2 or less&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;compile&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;digest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;active_record&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;migration_error&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
  
  &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;app boot settings&quot;&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.cache_classes is &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cache_classes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.eager_load is &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;eager_load&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.serve_static_files is &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;serve_static_files&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.assets.compile  is &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;compile&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.assets.digest is &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;digest&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.active_record.migration_error  is &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;active_record&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;migration_error&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When you boot the app, you’ll see this printed out:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-29-run-production-like-in-dev-01.jpg&quot; alt=&quot;settings&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now, you can re-work these lines to spot-check that you are reading your environment variables correctly:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cache_classes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;eager_load&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;serve_static_files&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# 4.2 or less&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;compile&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;digest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;active_record&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;migration_error&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;PROFILE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;app boot settings&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.cache_classes should be true&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.cache_classes is        &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cache_classes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.eager_load should be true &quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.eager_load is        &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;eager_load&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.serve_static_files should be true &quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.serve_static_files is        &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;serve_static_files&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.assets.compile should be false &quot;&lt;/span&gt; 
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.assets.compile  is       &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;compile&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.assets.digest should be true&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.assets.digest is        &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;digest&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.active_record.migration_error should be false&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;config.active_record.migration_error is        &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;active_record&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;migration_error&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you forget to pass in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PROFILE=1&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PROFILE=true&lt;/code&gt;, all of the expected vs. actual results will be backwards. (Which shows that by &lt;em&gt;not&lt;/em&gt; running the app in profile mode, it’s running in a normal &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;development&lt;/code&gt; mode.)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-29-run-production-like-in-dev-02.jpg&quot; alt=&quot;confirming all is good&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve spot-checked that you like what you’ve got, delete all the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;print&lt;/code&gt; statements, and commit the new code. Now your whole team can toggle on/off &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;profiling&lt;/code&gt; mode, simulating a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;production&lt;/code&gt;-like environment will staying in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;development&lt;/code&gt; group.&lt;/p&gt;

&lt;p&gt;Next up, load testing the app with Siege, and seeing what Datadog tells us!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Setting up Application Performance Monitoring in DataDog in your Rails App</title>
   <link href="https://josh.works/data-dog-apm-rails-app-setup"/>
   <updated>2019-07-28T13:00:00+00:00</updated>
   <id>https://josh.works/data_dog_setup</id>
   <content type="html">&lt;p&gt;&lt;em&gt;When I write guides to things, I write them first and foremost for myself, and I tend to work through things in excruciating detail. You might find this to be a little too in-depth, or you might appreciate the detail. Either way, if you want a step-by-step guide, this should do it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As mentioned in &lt;a href=&quot;/load-testing-your-app-with-siege&quot;&gt;Load Testing your app with Siege&lt;/a&gt;, I want to get Application Performance Monitoring in place for our app. We use Rails.&lt;/p&gt;

&lt;p&gt;To someone who doesn’t know much about this space, there was more friction than I expected.&lt;/p&gt;

&lt;p&gt;I’ll wander around, get everything set up, and outline any places that I bump into stuff.&lt;/p&gt;

&lt;p&gt;First, DataDog has a handy video about how to configure your app to use APM:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://docs.datadoghq.com/videos/rails/&quot;&gt;https://docs.datadoghq.com/videos/rails/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately, the link they give in the video to &lt;a href=&quot;https://app.datadoghq.com/apm/docs&quot;&gt;https://app.datadoghq.com/apm/docs&lt;/a&gt; redirects to &lt;a href=&quot;https://app.datadoghq.com/apm/intro&quot;&gt;https://app.datadoghq.com/apm/intro&lt;/a&gt;, which &lt;em&gt;fails to tell you how to find the actual docs&lt;/em&gt;. 🙄&lt;/p&gt;

&lt;p&gt;So, I found &lt;a href=&quot;https://docs.datadoghq.com/tracing/&quot;&gt;https://docs.datadoghq.com/tracing/&lt;/a&gt;, which don’t look anything like what’s in the video. Docs go out of date, this isn’t a problem.&lt;/p&gt;

&lt;p&gt;It looks like the setup involves a few steps:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Enable Trace collection in the Datadog Agent&lt;/li&gt;
  &lt;li&gt;Instrument your application to send traces to your Datadog Agent&lt;/li&gt;
  &lt;li&gt;Enable Trace Search &amp;amp; Analytics&lt;/li&gt;
  &lt;li&gt;Enrich tracing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don’t know that we’ll get to step 4, but 1-3 look great.&lt;/p&gt;

&lt;h1 id=&quot;enable-trace-collection-in-the-datadog-agent&quot;&gt;Enable Trace collection in the Datadog Agent&lt;/h1&gt;

&lt;p&gt;There’s a lot of complexity boiled into &lt;a href=&quot;https://docs.datadoghq.com/tracing/#setting-up-apm&quot;&gt;this short little paragraph&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Install and configure the latest Datadog Agent. (On macOS, install and run the Trace Agent in addition to the &lt;a href=&quot;https://docs.datadoghq.com/tracing/setup/python/&quot;&gt;Datadog Agent&lt;/a&gt;. See the &lt;a href=&quot;https://github.com/DataDog/datadog-agent/tree/master/docs/trace-agent#run-on-macos&quot;&gt;macOS Trace Agent documentation&lt;/a&gt; for more information). APM is enabled by default in Agent 6, however there are additional configurations to be set in a containerized environment including setting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apm_non_local_traffic: true&lt;/code&gt;. To get an overview of all the possible settings for APM including setting up APM in containerized environments such as &lt;a href=&quot;https://docs.datadoghq.com/agent/docker/apm/?tab=java&quot;&gt;Docker&lt;/a&gt; or &lt;a href=&quot;https://docs.datadoghq.com/agent/kubernetes/daemonset_setup/?tab=k8sfile&quot;&gt;Kubernetes&lt;/a&gt;, get started &lt;a href=&quot;https://docs.datadoghq.com/tracing/send_traces/&quot;&gt;Sending traces to Datadog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;!--more--&gt;
&lt;p&gt;Surely I’m not the only person that finds this to be a bit complex, but the whole point of this blog post is to sort all this out.&lt;/p&gt;

&lt;p&gt;We’ll break &lt;em&gt;this single step&lt;/em&gt; into its actual component sub-steps, as appropriate for a “standard” Rails app.&lt;/p&gt;

&lt;h2 id=&quot;install-and-configure-the-latest-datadog-agent&quot;&gt;Install and configure the latest Datadog Agent&lt;/h2&gt;

&lt;p&gt;So, hopping over to the link for &lt;a href=&quot;https://docs.datadoghq.com/tracing/setup/python/&quot;&gt;the latest Datadog Agent&lt;/a&gt;, my first thought is &lt;em&gt;why the heck is this about Python&lt;/em&gt;? Their docs link to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;python&lt;/code&gt; section of the docs, not an overview of a list of available languages.&lt;/p&gt;

&lt;p&gt;The Ruby setup is here: &lt;a href=&quot;https://docs.datadoghq.com/tracing/setup/ruby/&quot;&gt;https://docs.datadoghq.com/tracing/setup/ruby/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, we’re here:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-17-datadog_01.jpg&quot; alt=&quot;datadog docs&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s about now that I’m wondering what &lt;em&gt;is&lt;/em&gt; the “DataDog Agent”.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://docs.datadoghq.com/agent/?tab=agentv6&quot;&gt;The docs&lt;/a&gt; say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Datadog Agent is software that runs on your hosts. It collects events and metrics from hosts and sends them to Datadog, where you can analyze your monitoring and performance data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On the ruby setup page, it says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Ruby APM tracer sends trace data through the Datadog Agent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That… sorta answers the question. I’m not sure &lt;em&gt;where&lt;/em&gt; I would install it. It says it “runs on your hosts”, so… I guess I have to get this on our hosts somewhere?&lt;/p&gt;

&lt;p&gt;We’ll proceed through the setup. Sigh. I really don’t like these docs. They’re self-referential, and not helping me build a mental model of what I’m trying to do. So we’ll keep blindly pushing along.&lt;/p&gt;

&lt;h3 id=&quot;add-the-ddtrace-gem-to-your-gemfile&quot;&gt;Add the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ddtrace&lt;/code&gt; gem to your Gemfile&lt;/h3&gt;

&lt;p&gt;We already have &lt;a href=&quot;https://github.com/datadog/dogstatsd-ruby&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dogstatsd-ruby&lt;/code&gt;&lt;/a&gt; in the Gemfile, which is also a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;datadog&lt;/code&gt; gem. Oh well. Onward.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle install&lt;/code&gt; and create the specified config file:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# config/initializers/datadog.rb&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;ddtrace&apos;&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Datadog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;configure&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# This will activate auto-instrumentation for Rails&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:rails&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Wooow. That’s the end of this section. The docs say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;After setting up, your services will appear on the APM services page within a few minutes. Learn more about using the APM UI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, I assume this means after I deploy our app with the updated configuration.&lt;/p&gt;

&lt;p&gt;The link to the APM services page is &lt;a href=&quot;https://app.datadoghq.com/apm/services&quot;&gt;app.datadoghq.com/apm/services&lt;/a&gt;, but the URL redirects to &lt;a href=&quot;https://app.datadoghq.com/apm/intro&quot;&gt;app.datadoghq.com/apm/intro&lt;/a&gt;, which tells me nothing about next steps. It looks like a marketing page without a clickable CTA or next-step.&lt;/p&gt;

&lt;p&gt;We’re obviously not just going to blindly deploy this in our next release, so this would be an &lt;em&gt;excellent&lt;/em&gt; spot to know about sandboxing options, or test/demo modes, etc.&lt;/p&gt;

&lt;p&gt;I’m pausing this guide here to send an email to their support team.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I sent:&lt;/p&gt;
&lt;blockquote&gt;

  &lt;p&gt;… So, can you help me figure out next steps? Is there a sort of sandboxed environment, or rate-limited environment, where I can prove that this is useful/valuable, or build some dashboards for my higher-ups to see and understand the value of datadog?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They replied:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;… Regarding conducting testing in a sandboxed environment, this can achieve by opening up a new, free trial account. Details are here:
&lt;a href=&quot;https://www.datadoghq.com/free-datadog-trial/&quot;&gt;https://www.datadoghq.com/free-datadog-trial/&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Once you have conducted the necessary tests and are done using the account, you can reach out to support to close the account if you’d like.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, this is the path I’m going!&lt;/p&gt;

&lt;p&gt;I went to the given URL, created a new account, and am working through their onboarding now:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog_01.jpg&quot; alt=&quot;choose datadog agent&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When I click &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Mac OS X&lt;/code&gt;, I’m given a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bash&lt;/code&gt; command to download and install the Datadog Agent.&lt;/p&gt;

&lt;p&gt;I wish they better explained the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;even on your workstation&lt;/code&gt; bit meant. I don’t want to start sending tons of data from my laptop to Datadog; I trust them that this isn’t a keylogger, but still. I like knowing what I’m doing.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog_02.jpg&quot; alt=&quot;install mac client&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Oh well. Onward!&lt;/p&gt;

&lt;p&gt;I ran the install command:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ DD_API_KEY=aaaaa bash -c &quot;$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_mac_os.sh)&quot;

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed
100  4974  100  4974    0     0  23554      0 --:--:-- --:--:-- --:--:-- 23573

* Downloading datadog-agent
######################################################################## 100.0%

* Installing datadog-agent, you might be asked for your sudo password...
Password:

  - Mounting the DMG installer...

  - Unpacking and copying files (this usually takes about a minute) ...

  - Unmounting the DMG installer ...

* Restarting the Agent...



Your Agent is running properly. It will continue to run in the
background and submit metrics to Datadog.

You can check the agent status using the &quot;datadog-agent status&quot; command
or by opening the webui using the &quot;datadog-agent launch-gui&quot; command.

If you ever want to stop the Agent, please use the Datadog Agent App or
the launchctl command. It will start automatically at login.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and sure enough, I can see it running now:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ ps aux | grep datadog
.
.
joshthompson     91147   0.0  0.1  4408076  14024   ??  S     2:21PM   0:00.16 /opt/datadog-agent/embedded/bin/trace-agent -config=/opt/datadog-agent/etc/datadog.yaml
joshthompson     91135   0.0  0.4  4481160  58976   ??  S     2:21PM   0:04.13 /opt/datadog-agent/bin/agent/agent run
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And we now have the program &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;datadog-agent&lt;/code&gt; available in our shell. Cool.&lt;/p&gt;

&lt;p&gt;Oh, and even more. Datadog is getting info from the agent:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog_03.jpg&quot; alt=&quot;agent is reporting&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’ll click the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;finish&lt;/code&gt; button, and carry onward.&lt;/p&gt;

&lt;p&gt;I get dropped into a dashboard, that doesn’t give me a whole lot. If I click the link from&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Get a summary of basic metrics at your &lt;a href=&quot;https://app.datadoghq.com/dash/integration/1/System%20-%20Metrics&quot;&gt;System Overview dashboard&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I get an overview of my laptop’s system metrics. Mildly surprising. Oh well.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog-nothing-interesting.jpg&quot; alt=&quot;application performance monitoring&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Click the APM button and… yay, a “get started” button.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;This is a quick sidebar on ‘feature discoverability’ in an application:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’d clicked this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;APM&lt;/code&gt; tab before, when in my work Datadog account for other purposes.&lt;/p&gt;

&lt;p&gt;Whatever plan my company is on doesn’t have Application Performance Monitoring set up, so we cannot use the feature.&lt;/p&gt;

&lt;p&gt;The way this “feature unavailability” was displayed in the UI to me was a the same page in the following screenshot, it was just missing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Get Started&lt;/code&gt; button.&lt;/p&gt;

&lt;p&gt;So, there I was, a developer wanting to use an expensive monitoring tool, trying to set it up, and when I first found this, I just gave up on the project.&lt;/p&gt;

&lt;p&gt;The page should see that I’m on an account spending &lt;em&gt;many&lt;/em&gt; dolalrs/month with DataDog, and should make it &lt;em&gt;very easy&lt;/em&gt; for me to contact someone about enabling a trial of this feature.&lt;/p&gt;

&lt;p&gt;I expect that if we start using this tool, it’s tens of thousands of dollars per year of additional income for DataDog.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog-cta-fix.jpg&quot; alt=&quot;aha. Success&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Oh well. Not my problem.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I clicked the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Get Started&lt;/code&gt; button, and am asked to choose a language:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog-apm_01.jpg&quot; alt=&quot;progress&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This process is &lt;em&gt;significantly&lt;/em&gt; better than working through the docs:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog-apm_02.jpg&quot; alt=&quot;gem install ddtrace&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I clicked the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rails&lt;/code&gt; button:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog-apm-03.jpg&quot; alt=&quot;initializer&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’m skeptical. I’m not even running my app locally.&lt;/p&gt;

&lt;p&gt;Maybe if I add the initializer and then do &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails serve&lt;/code&gt;, Datadog will start getting information, but they should say as much.&lt;/p&gt;

&lt;p&gt;So, I’ll fire up my rails server locally… interact with the app a bit (like logging in) and…&lt;/p&gt;

&lt;p&gt;A little bit of wonky CSS, but I think we’re making progress.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog-apm-04.gif&quot; alt=&quot;data incoming&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The page was frozen, so I did a hard refresh, then rebuilt the URL to get me to &lt;a href=&quot;https://app.datadoghq.com/apm/services&quot;&gt;https://app.datadoghq.com/apm/services&lt;/a&gt;, and we’re in business:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-20-datadog-apm-05.jpg&quot; alt=&quot;its running locally&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’m going to end this post here. Next, I’ll see what sort of things we can learn from Datadog while running our app locally, interacting it (or &lt;a href=&quot;/load-testing-your-app-with-siege&quot;&gt;crushing it with siege/apache benchmark&lt;/a&gt;) and eventually finding where to make changes to improve the app performance.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Load Testing your app with Siege</title>
   <link href="https://josh.works/load-testing-your-app-with-siege"/>
   <updated>2019-07-02T13:00:00+00:00</updated>
   <id>https://josh.works/load-testing-your-app-with-siege</id>
   <content type="html">&lt;p&gt;Last time, I dug into using &lt;a href=&quot;/apache-benchmark-test-page-behind-login&quot;&gt;Apache Benchmark to do performance testing on a page that requires authentication to access&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Today, we’ll figure out how to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;siege&lt;/code&gt; to visit many unique URLs on our page, and to get benchmarks on that process. I’ll next figure out performance profiling in Datadog, and with these three tools put together, we should be ready to make some meaningful improvements to our application.&lt;/p&gt;

&lt;p&gt;This series of posts is a direct result of Nate Berkopec’s &lt;a href=&quot;https://www.railsspeed.com/&quot;&gt;The Complete Guide to Rails Performance&lt;/a&gt;, with aid from his screencasts, as well as Steve Grossi’s &lt;a href=&quot;https://work.stevegrossi.com/2015/02/07/load-testing-rails-apps-with-apache-bench-siege-and-jmeter/&quot;&gt;Load Testing Rails Apps with Apache Bench, Siege, and JMeter&lt;/a&gt;. Armed with these resources, and standing on shoulders of giants, off we go.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.joedog.org/siege-home/&quot;&gt;Siege&lt;/a&gt;’s description:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Siege is an http load testing and benchmarking utility. It was designed to let web developers measure their code under duress, to see how it will stand up to load on the internet. Siege supports basic authentication, cookies, HTTP, HTTPS and FTP protocols. It lets its user hit a server with a configurable number of simulated clients. Those clients place the server “under siege.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can get siege with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;brew install siege&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I’m using it because it can run a &lt;em&gt;list&lt;/em&gt; of URLs you give it. Imagine your app is a store, and it lists a few thousand products. Each product should have a unique URL, something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;www.mystore.com/product-name&lt;/code&gt;, or maybe &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;www.mystore.com/productguid-product-name&lt;/code&gt;. That &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;product-guid&lt;/code&gt; makes sure that you can have unique URLs, even if there are two items with the same product name.&lt;/p&gt;

&lt;p&gt;Knowing what’s in your database, you can easily concat &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;product-guid&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;product-name&lt;/code&gt;, stick it to the end of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;www.mystore.com&lt;/code&gt;, and come up with a list of a hundred or a thousand or ten thousand unique product URLs in your application. If you saved these to a text file and had Siege visit every single one of those pages as quickly as possible… this might look like some sort of good stress test, huh?&lt;/p&gt;

&lt;h3 id=&quot;dumping-unique-urls-into-a-text-file&quot;&gt;Dumping unique URLs into a text file&lt;/h3&gt;

&lt;p&gt;You’ll probably start working in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails console&lt;/code&gt; session, to figure out how to access the URL scheme just right.&lt;/p&gt;

&lt;p&gt;I fired up the console, and entered:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;all_campaign_urls.txt&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# this opens the file in write mode; will over-write contents of file if it exists&lt;/span&gt;
  &lt;span class=&quot;no&quot;&gt;Campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;account_id: &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4887&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;find_each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;writing &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;http://localhost:3000/account/campaigns/&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_param&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;http://localhost:3000/account/campaigns/&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_param&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;!--more--&gt;

&lt;p&gt;I looked in our dev database to find an account with a lot of data; account with the id &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;4887&lt;/code&gt; is an account associated with QA automation, and has lots of data in it.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;campaign.to_param&lt;/code&gt; is how we build URLs out of our campaigns - it just concats the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;guid&lt;/code&gt; with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;title&lt;/code&gt; string, as provided by the customer, and calls &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.parameterize&lt;/code&gt; on it. For this batch of campaigns, they’re generated programmatically by our automated QA test suite.&lt;/p&gt;

&lt;p&gt;When finished, you might see something like this in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;all_campaign_urls.txt&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/siege_01.jpg&quot; alt=&quot;all campaigns&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;visiting-all-of-those-pages-in-a-siege-test&quot;&gt;Visiting all of those pages in a Siege test&lt;/h3&gt;

&lt;p&gt;So, you can &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;siege --help&lt;/code&gt; and see a flag for passing in a file:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ siege --help
SIEGE 4.0.4
Usage: siege [options]
       siege [options] URL
       siege -g URL
Options:
  -V, --version             VERSION, prints the version number.
  -h, --help                HELP, prints this section.
  -C, --config              CONFIGURATION, show the current config.
  -v, --verbose             VERBOSE, prints notification to screen.
  -q, --quiet               QUIET turns verbose off and suppresses output.
  -g, --get                 GET, pull down HTTP headers and display the
                            transaction. Great for application debugging.
  -p, --print               PRINT, like GET only it prints the entire page.
  -c, --concurrent=NUM      CONCURRENT users, default is 10
  -r, --reps=NUM            REPS, number of times to run the test.
  -t, --time=NUMm           TIMED testing where &quot;m&quot; is modifier S, M, or H
                            ex: --time=1H, one hour test.
  -d, --delay=NUM           Time DELAY, random delay before each requst
  -b, --benchmark           BENCHMARK: no delays between requests.
  -i, --internet            INTERNET user simulation, hits URLs randomly.
  -f, --file=FILE           FILE, select a specific URLS FILE.
  -R, --rc=FILE             RC, specify an siegerc file
  -l, --log[=FILE]          LOG to FILE. If FILE is not specified, the
                            default is used: PREFIX/var/siege.log
  -m, --mark=&quot;text&quot;         MARK, mark the log file with a string.
                            between .001 and NUM. (NOT COUNTED IN STATS)
  -H, --header=&quot;text&quot;       Add a header to request (can be many)
  -A, --user-agent=&quot;text&quot;   Sets User-Agent in request
  -T, --content-type=&quot;text&quot; Sets Content-Type in request
      --no-parser           NO PARSER, turn off the HTML page parser
      --no-follow           NO FOLLOW, do not follow HTTP redirects

Copyright (C) 2017 by Jeffrey Fulmer, et al.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Already I know we’re going to need &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--file&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--header&lt;/code&gt;, as we’ll need to fake authenticated sessions by submitting some cookies, &lt;a href=&quot;/apache-benchmark-test-page-behind-login&quot;&gt;the process for which I outlined last time&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--get&lt;/code&gt; flag looks useful:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;GET, pull down HTTP headers and display the transaction. Great for application debugging.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, lets log in as our QA account. Since I’m running this all locally, I can find the associated email address in our DB. I don’t know the password, of course, but I can force a local password reset, grab the email in Mailcatcher, and set it to whatever password I want.&lt;/p&gt;

&lt;p&gt;Lets get these headers in.&lt;/p&gt;

&lt;p&gt;We can make a cURL test request with our cookies. When I do&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ curl -v http://localhost:3000/account/campaigns/dd4dfb48aa-dec-05-drive-by-test
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I expect to see the page come back, not a redirect to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/users/sign_in&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;What I expect a failed authentication to look like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;*   Trying ::1...
* TCP_NODELAY set
* Connection failed
* connect to ::1 port 3000 failed: Connection refused
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 3000 (#0)
&amp;gt; GET /account/campaigns/dd4dfb48aa-dec-05-drive-by-test HTTP/1.1
&amp;gt; Host: localhost:3000
&amp;gt; User-Agent: curl/7.54.0
&amp;gt; Accept: */*
&amp;gt;
&amp;lt; HTTP/1.1 302 Found
&amp;lt; Location: http://localhost:3000/users/sign_in
&amp;lt; Content-Type: text/html; charset=utf-8
&amp;lt; Cache-Control: no-cache
&amp;lt; Set-Cookie: _ts_session_id=94f33f8f3c53608e0d54da4735ab6ef4; path=/; expires=Sun, 07 Jul 2019 16:46:59 -0000; HttpOnly; SameSite=Lax
&amp;lt; Set-Cookie: __profilin=p%3Dt; path=/; HttpOnly; SameSite=Lax
.
.
.
* Connection #0 to host localhost left intact
&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;You are being &amp;lt;a href=&quot;http://localhost:3000/users/sign_in&quot;&amp;gt;redirected&amp;lt;/a&amp;gt;.&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;%
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;cookies:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;_ts_session_id: c86fd1fe38d7a6c56ce1ef5990045057
fd827a2c5655094bcce3748d6ee6d3e4: ImRhMDY1YjdjYjMwNGNjNWUxNzFkNDhjOGQ0YzA0OTIwIg%3D%3D--98c228cb35af1a269ee894c22540b81848e2ed09
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And we’re in business:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ siege --header=&quot;Cookie: _ts_session_id=c86fd1fe38d7a6c56ce1ef5990045057, \ 
fd827a2c5655094bcce3748d6ee6d3e4=ImRhMDY1YjdjYjMwNGNjNWUxNzFkNDhjOGQ0YzA0OTIwIg%3D%3D--98c228cb35af1a269ee894c22540b81848e2ed09&quot; \
-f all_campaign_urls.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;img src=&quot;/images/siege_02.jpg&quot; alt=&quot;all campaigns&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Notice those status codes of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;200&lt;/code&gt;? I can &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tail -f log/development.log&lt;/code&gt; and see all the activity, indicating that the submitted cookies are associated with an authenticated user.&lt;/p&gt;

&lt;p&gt;First thing I notice is it &lt;em&gt;seems&lt;/em&gt; like these are extremely long page-load times.&lt;/p&gt;

&lt;p&gt;I’m having Siege load about 162 different URLs. When you run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;siege&lt;/code&gt; with the default configuration, it runs 20 simultaneous users. This seemed to be a bit much for what my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;localhost&lt;/code&gt; could handle, so I tried dropping the number of concurrent users first to two users, then to one.&lt;/p&gt;

&lt;p&gt;To set the number of concurrent users, just add the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--concurrent=NUM&lt;/code&gt; flag. I was still flooded with output, so I dropped concurrent users to 1 and removed all but 20 pages from the list of pages to load up.  I gave it a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;time&lt;/code&gt; flag of 60 seconds, as well: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-t 60s&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When all is said and done, you’ll see &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;siege&lt;/code&gt; making a bunch of timed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GET&lt;/code&gt; requests, like so:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-17_siege_get_requests.gif&quot; alt=&quot;lots of traffic&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Eventually, everything will settle out, and you’ll get a summary of the load test:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Lifting the server siege...
Transactions:		         101 hits
Availability:		      100.00 %
Elapsed time:		       59.24 secs
Data transferred:	       20.73 MB
Response time:		        0.58 secs
Transaction rate:	        1.70 trans/sec
Throughput:		        0.35 MB/sec
Concurrency:		        0.99
Successful transactions:         101
Failed transactions:	           0
Longest transaction:	        1.99
Shortest transaction:	        0.00
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;Yeah, OK, this is cool, Josh, but how the heck am I supposed do anything useful with this?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Great question! Its time to see where our app is spending most of its time, out in the real world. We could do more benchmarking locally, but obviously real-world data, gathered from real people interacting with your real app in production is the most useful source of data.&lt;/p&gt;

&lt;p&gt;Therefore, &lt;strike&gt;I&apos;ll soon be writing&lt;/strike&gt; I have written &lt;a href=&quot;/data-dog-apm-rails-app-setup&quot;&gt;about how to get useful data from a Rails app into DataDog&lt;/a&gt;!&lt;/p&gt;

&lt;h3 id=&quot;additional-resources&quot;&gt;Additional Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://work.stevegrossi.com/2015/02/07/load-testing-rails-apps-with-apache-bench-siege-and-jmeter/&quot;&gt;Load Testing Rails Apps with Apache Bench, Siege, and JMeter&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.railsspeed.com/&quot;&gt;The Complete Guide to Rails Performance&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://humanwhocodes.com/blog/2009/05/05/http-cookies-explained/&quot;&gt;HTTP Cookies explained&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Benchmarking a page protected by a login with Apache Benchmark</title>
   <link href="https://josh.works/apache-benchmark-test-page-behind-login"/>
   <updated>2019-06-28T13:00:00+00:00</updated>
   <id>https://josh.works/apache_benchmark_load_testing_app_behind_login_page</id>
   <content type="html">&lt;p&gt;I’ve been slowly working through &lt;a href=&quot;https://www.railsspeed.com/&quot;&gt;The Complete Guide to Rails Performance&lt;/a&gt;. I’m taking the ideas and concepts from Nate’s book and working on applying the lessons to the app I work on in my day job.&lt;/p&gt;

&lt;p&gt;I had a chance to attend Nate’s workshop in Denver a few days ago, as well; while there, we fired up our apps in production-like mode, and used &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wrk&lt;/code&gt;, a HTTP benchmarking tool, to see how many pages our app could serve in a given amount of time. (&lt;a href=&quot;https://github.com/wg/wrk&quot;&gt;wrk docs&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;A normal &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wrk&lt;/code&gt; run might look like so:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wrk&lt;/code&gt; will run for a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[t]hread&lt;/code&gt; count of 12, with 400 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[c]onnections&lt;/code&gt;, for a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[d]uration&lt;/code&gt; of 30 seconds, against &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;127.0.0.1:8080/index.html&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is fine for testing unprotected home pages, but the app I work on requires a login before getting to anything interesting. So, I wondered&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;how does one use a HTTP benchmarking tool against an application with a login page?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And I found the answer.&lt;/p&gt;

&lt;h2 id=&quot;apache-benchmark&quot;&gt;Apache Benchmark&lt;/h2&gt;

&lt;p&gt;Apache Benchmark describes itself as &lt;a href=&quot;https://httpd.apache.org/docs/2.4/programs/ab.html&quot;&gt;[an] Apache HTTP server benchmarking tool&lt;/a&gt;. Similar to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wrk&lt;/code&gt;, but a bit more feature-rich.&lt;/p&gt;

&lt;p&gt;You can use it very similarly to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wrk&lt;/code&gt; - give it a thread count, connection count, duration, and address, and it’ll hammer that page and serve up all sorts of good results.&lt;/p&gt;

&lt;p&gt;The “rule of thumb” for benchmarking “protected” pages is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Whatever page you can access locally in an incognito browser is what your benchmarking tool can hit without any special authentication.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words, when I visit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://localhost:3000/&lt;/code&gt; locally, I get redirected to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://localhost:3000/users/sign_in&lt;/code&gt;. This is fine for apache bench, if I want to test how quickly our sign-in page loads. I can run:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ ab -t 10 http://127.0.0.1:3000/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;which returns:&lt;/p&gt;

&lt;!--more--&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Benchmarking 127.0.0.1 (be patient)
Finished 690 requests


Server Software:
Server Hostname:        127.0.0.1
Server Port:            3000

Document Path:          /
Document Length:        101 bytes

Concurrency Level:      1
Time taken for tests:   10.007 seconds
Complete requests:      690
Failed requests:        0
Non-2xx responses:      690
Total transferred:      1380000 bytes
HTML transferred:       69690 bytes
Requests per second:    68.95 [#/sec] (mean)
Time per request:       14.503 [ms] (mean)
Time per request:       14.503 [ms] (mean, across all concurrent requests)
Transfer rate:          134.67 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:     8   14   6.3     12      49
Waiting:        8   14   6.2     12      48
Total:          8   14   6.3     13      49

Percentage of the requests served within a certain time (ms)
  50%     13
  66%     14
  75%     17
  80%     18
  90%     22
  95%     28
  98%     33
  99%     39
 100%     49 (longest request)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tail -f log/development.log&lt;/code&gt; you can see all the traffic/requests.&lt;/p&gt;

&lt;p&gt;This report has a giant red flag, though. It has these three lines:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Complete requests:      690
Failed requests:        0
Non-2xx responses:      690
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;2xx responses are “success” responses; The HTTP status code returned for each one of these 690 requests was something besides “successful”.&lt;/p&gt;

&lt;p&gt;That’s because &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://127.0.0.1:3000/&lt;/code&gt; redirects to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://127.0.0.1:3000/users/sign_in&lt;/code&gt;; I imagine it’s getting 3xx HTTP status codes, trying to redirect it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/users/sign_in&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So, if we re-build our AP call, we can improve things:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ ab -t 10 http://127.0.0.1:3000/users/sign_in
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The results are quite a bit better. Notice no failed requests, and no non-2xx requests?&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Benchmarking 127.0.0.1 (be patient)
Finished 682 requests


Server Software:
Server Hostname:        127.0.0.1
Server Port:            3000

Document Path:          /users/sign_in
Document Length:        9502 bytes

Concurrency Level:      1
Time taken for tests:   10.004 seconds
Complete requests:      682
Failed requests:        0
Total transferred:      7888694 bytes
HTML transferred:       6480364 bytes
Requests per second:    68.17 [#/sec] (mean)
Time per request:       14.669 [ms] (mean)
Time per request:       14.669 [ms] (mean, across all concurrent requests)
Transfer rate:          770.04 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    12   15   2.7     14      39
Waiting:       12   14   2.7     13      39
Total:         12   15   2.7     14      39

Percentage of the requests served within a certain time (ms)
  50%     14
  66%     15
  75%     16
  80%     16
  90%     18
  95%     19
  98%     21
  99%     23
 100%     39 (longest request)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is meaningful improvement, but still not testing our &lt;em&gt;home&lt;/em&gt; page, the page one sees &lt;em&gt;after&lt;/em&gt; they punch in their username and password. (When one gets logged in, they are redirected to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;account/campaigns&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;So, if you can temporarily disable all authentication on a page, you might be able to access it locally in an incognito browser.&lt;/p&gt;

&lt;p&gt;But every page of our app has a concept of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;current_user&lt;/code&gt;, and the data we display is determined 100% by exactly &lt;em&gt;who&lt;/em&gt; is logged in.&lt;/p&gt;

&lt;p&gt;Apache Bench provides a few additional flags one can pass in, like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;-A auth-username:password
    Supply BASIC Authentication credentials to the server. The 
    username and password are separated by a single : and sent 
    on the wire base64 encoded. The string is sent regardless 
    of whether the server needs it (i.e., has sent an 401 
    authentication needed).
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This isn’t sufficient for a Rails app, though. This could work on a website that has a pop-up requiring username/password (maybe?) but not for modern web applications.&lt;/p&gt;

&lt;p&gt;Fortunately, once someone is logged into a Rails app, the app keeps track of that login via cookies. Here’s another flag &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ab&lt;/code&gt; provides:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;-C cookie-name=value
    Add a Cookie: line to the request. The argument is typically 
    in the form of a name=value pair. This field is repeatable.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I found &lt;a href=&quot;https://work.stevegrossi.com/2015/02/07/load-testing-rails-apps-with-apache-bench-siege-and-jmeter/&quot;&gt;an article&lt;/a&gt; by Steve Grossi, where he said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;But you’re (hopefully) using more sophisticated, session-based authentication, especially with a Rails app. In this case, you’ll just need to give Apache Bench an authenticated cookie to use on your behalf. I’m sure there’s an easier way to do this with cURL, but I find it simplest to use Chrome developer tools to inspect the cookie header sent after I log in.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I can work with this.&lt;/p&gt;

&lt;h3 id=&quot;apache-bench-and-cookie-based-authentication&quot;&gt;Apache Bench and cookie-based authentication&lt;/h3&gt;

&lt;p&gt;Per Steve Grossi’s instructions, we first have to find &lt;em&gt;just&lt;/em&gt; the relevant cookies for logging in.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://makandracards.com/makandra/13757-using-apache-benchmark-ab-on-sites-with-authentication&quot;&gt;Another helpful page&lt;/a&gt; said&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;Open the site to test in the browser of your choice. Do not login yet.&lt;/li&gt;
    &lt;li&gt;In order to see which cookies are really necessary, delete all cookies, reload the page, log into the site and reload the cookie information site. For Rails powered sites, you should see a cookie named &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_your_site_session&lt;/code&gt; and – depending on your authentication solution – something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;remember_token&lt;/code&gt;.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-06-28_ab_01.jpg&quot; alt=&quot;getting cookie&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, with these cookies, lets build up a new-and-improved Apache Bench request:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ ab -t 1 -C &apos;_ts_session_id=&amp;lt;cookie_1&amp;gt;;fd827a2c56550=&amp;lt;cookie_2&amp;gt;&apos; http://127.0.0.1:3000/account/campaigns
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;validating-apache-benchs-cookie-based-authentication-in-logsdevelopmentlog&quot;&gt;Validating Apache Bench’s cookie-based authentication in logs/development.log&lt;/h3&gt;

&lt;p&gt;Hah! This works. I can validate this a few different ways; for example, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tail -f logs/development.log&lt;/code&gt; prints lots of user details for the user corresponding to this cookie:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-06-28_ab_02.jpg&quot; alt=&quot;user details&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Just for fun, I wanted to re-create this in Postman, to make sure the cookies are working and the page is getting loaded up.&lt;/p&gt;

&lt;h3 id=&quot;validating-apache-benchs-cookie-based-authentication-in-postman&quot;&gt;Validating Apache Bench’s cookie-based authentication in Postman&lt;/h3&gt;

&lt;p&gt;Fire up Postman, and head to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Cookies&lt;/code&gt; tab:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-06-28-ab_03.jpg&quot; alt=&quot;postman cookies tab&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Next, add the domain name for the cookie. Note that it must be &lt;em&gt;just&lt;/em&gt; the domain; no &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;www&lt;/code&gt;, no &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;com&lt;/code&gt;, no port number.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;localhost&lt;/code&gt; (good)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://localhost&lt;/code&gt; (bad)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;localhost:3000&lt;/code&gt; (bad)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-06-28-ab_04.jpg&quot; alt=&quot;valid postman cookies&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And, if everything works, you can now make a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GET&lt;/code&gt; to a resource that would normally return a login page!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-06-28-ab_05.jpg&quot; alt=&quot;boom&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Lastly, here’s the output from AB with cookie auth, against &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;account/campaigns&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ ab -t 10 -C &apos;_ts_session_id=&amp;lt;cookie_1&amp;gt;;fd827a2c56550=&amp;lt;cookie_2&amp;gt;&apos; http://127.0.0.1:3000/account/campaigns

Benchmarking 127.0.0.1 (be patient)
Finished 93 requests


Server Software:
Server Hostname:        127.0.0.1
Server Port:            3000

Document Path:          /account/campaigns
Document Length:        24381 bytes

Concurrency Level:      1
Time taken for tests:   10.057 seconds
Complete requests:      93
Failed requests:        0
Total transferred:      2446086 bytes
HTML transferred:       2267433 bytes
Requests per second:    9.25 [#/sec] (mean)
Time per request:       108.136 [ms] (mean)
Time per request:       108.136 [ms] (mean, across all concurrent requests)
Transfer rate:          237.53 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    86  108 107.2     94    1112
Waiting:       86  108 107.2     94    1112
Total:         86  108 107.2     94    1113

Percentage of the requests served within a certain time (ms)
  50%     94
  66%     95
  75%     97
  80%     99
  90%    106
  95%    117
  98%    279
  99%   1113
 100%   1113 (longest request)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Next up will be using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;siege&lt;/code&gt; to visit dozens of subsequent pages on the app. And some Datadog goodies. At that point, I &lt;em&gt;think&lt;/em&gt; we’ll be ready to start making comparative judgements across pages, speeds, and we’ll be able to start making intelligent decisions about how to speed up the app.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://work.stevegrossi.com/2015/02/07/load-testing-rails-apps-with-apache-bench-siege-and-jmeter/&quot;&gt;Load Testing Rails Apps with Apache Bench, Siege, and JMeter&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://makandracards.com/makandra/13757-using-apache-benchmark-ab-on-sites-with-authentication&quot;&gt;Using Apache Benchmark (ab) on sites with authentication (MakeAndraCards)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://learning.getpostman.com/docs/postman/sending_api_requests/cookies/&quot;&gt;Postman docs on sending cookies&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.speedshop.co/workshops.html&quot;&gt;Nate’s workshops&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.railsspeed.com/&quot;&gt;The Complete Guide to Rails Performance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Deliberate Practice in Programming with Avdi Grimm and the Rake gem</title>
   <link href="https://josh.works/deliberate-practice-avdi-grimm-rake-gem"/>
   <updated>2019-06-21T13:00:00+00:00</updated>
   <id>https://josh.works/rake_gem_writing_better_code</id>
   <content type="html">&lt;p&gt;I’ve had the concept of Deliberate Practice stuck in my head for a while.&lt;/p&gt;

&lt;p&gt;I want to improve at things (all the things!) in general, but writing and reading code, specifically. Writing and reading code is germane to my primary occupation (software developer) and drives most of my effectiveness on my team.&lt;/p&gt;

&lt;p&gt;If there are two people, one who knows more about something, and one who knows less, but the person who knows less is learning new things &lt;em&gt;faster&lt;/em&gt; than the other person, in short order, they’ll switch places.&lt;/p&gt;

&lt;p&gt;This concept comes from John Ousterhout, and his talk at Stanford about how &lt;a href=&quot;/a-little-bit-of-slope-makes-up-for-a-lot-of-y-intercept&quot;&gt;the slope is more important than y-intercept&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_558ca9b4e4b0391692169928_1435281858196_y-intercept.pngy-intercept_&quot; alt=&quot;slope and intercept&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I know how to write the code I know how to write; I don’t know how to write &lt;em&gt;better&lt;/em&gt; code than that. So, I’m taking advantage of code written by people who are &lt;em&gt;really good at what they do&lt;/em&gt;, and I’m modeling my code after them.&lt;/p&gt;

&lt;h2 id=&quot;deliberate-practice&quot;&gt;Deliberate Practice&lt;/h2&gt;

&lt;p&gt;I’m trying to apply the principles of &lt;a href=&quot;https://fs.blog/2012/07/what-is-deliberate-practice/&quot;&gt;deliberate practice&lt;/a&gt; to writing code.&lt;/p&gt;

&lt;p&gt;Eric Anders coined the term &lt;strong&gt;Deliberate Practice&lt;/strong&gt;, and it boils down to four components:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;You must be motivated to attend to the task and exert effort to improve your performance.&lt;/li&gt;
  &lt;li&gt;The design of the task should take into account your pre-existing knowledge so that the task can be correctly understood after a brief period of instruction.&lt;/li&gt;
  &lt;li&gt;You should receive immediate informative feedback and knowledge of results of your performance.&lt;/li&gt;
  &lt;li&gt;You should repeatedly perform the same or similar tasks.&lt;/li&gt;
&lt;/ol&gt;

&lt;!--more--&gt;

&lt;p&gt;If this is curious to you, read &lt;a href=&quot;https://www.goodreads.com/book/show/26312997-peak?from_search=true&quot;&gt;Peak: Secrets from the New Science of Expertise&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Programming is tricky to parse apart and apply elements of deliberate practice.&lt;/p&gt;

&lt;h2 id=&quot;deliberate-practice-applied-to-programming&quot;&gt;Deliberate Practice applied to programming&lt;/h2&gt;

&lt;p&gt;The hardest part (in my opinion) is &lt;strong&gt;getting immediate informative feedback&lt;/strong&gt; and &lt;strong&gt;repeating the same/similar tasks&lt;/strong&gt;. Usually, while working, once I complete a task, I move on to the next one. I don’t get feedback on it, nor do I repeat it.&lt;/p&gt;

&lt;p&gt;So, it’s difficult to exercise the “deliberate practice” muscles &lt;em&gt;while working&lt;/em&gt;. I wanted to find an effective means of getting feedback and getting repetition.&lt;/p&gt;

&lt;p&gt;So, I scheduled a &lt;a href=&quot;https://avdi.codes/duck/&quot;&gt;rubber ducking&lt;/a&gt; session with Avdi Grimm, brought him this problem and told him some solutions I had.&lt;/p&gt;

&lt;p&gt;My proposed solution was to find “good code” in an open-source gem that is well tested, delete the file, break the tests, and re-build the file until the tests pass.&lt;/p&gt;

&lt;p&gt;He thought it was a great idea, so that’s what we did. We worked through the &lt;a href=&quot;https://github.com/ruby/rake&quot;&gt;Rake gem&lt;/a&gt;, specifically the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FileList&lt;/code&gt; class. (&lt;a href=&quot;https://github.com/ruby/rake/blob/master/lib/rake/file_list.rb&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FileList&lt;/code&gt; on github&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Here’s some of what we worked on:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;In a recent Rubber Duck session, &lt;a href=&quot;https://twitter.com/josh_works?ref_src=twsrc%5Etfw&quot;&gt;@josh_works&lt;/a&gt; proposed the novel idea of practicing code skills by deleting a class from an open-source codebase and re-implementing it using the tests as a guide. He generously agreed to let me share the video! &lt;a href=&quot;https://t.co/4HQNrtsHnU&quot;&gt;https://t.co/4HQNrtsHnU&lt;/a&gt;&lt;/p&gt;&amp;mdash; Avdi Grimm (@avdi) &lt;a href=&quot;https://twitter.com/avdi/status/1128359573147004930?ref_src=twsrc%5Etfw&quot;&gt;May 14, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;This was great, and I’ve been working through re-implementing this class, slowly, on my own time.&lt;/p&gt;

&lt;p&gt;It’s a great way to encounter novel/new patterns for approaching problems. For example, &lt;a href=&quot;https://github.com/ruby/rake/blob/master/lib/rake/file_list.rb#L64-L84&quot;&gt;this block&lt;/a&gt; of code has consumed a bit of time, as I’ve fully unpacked it and worked with the underlying concepts:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;DELEGATING_METHODS&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sym&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;SPECIAL_RETURN&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;include?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sym&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;ln&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;__LINE__&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;class_eval&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%{
      def #{sym}(*args, &amp;amp;block)
        resolve
        result = @items.send(:#{sym}, *args, &amp;amp;block)
        self.class.new.import(result)
      end
    }&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;__FILE__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ln&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;ln&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;__LINE__&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;class_eval&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%{
      def #{sym}(*args, &amp;amp;block)
        resolve
        result = @items.send(:#{sym}, *args, &amp;amp;block)
        result.object_id == @items.object_id ? self : result
      end
    }&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;__FILE__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ln&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We’ve got a few things happening:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Module#class_eval&lt;/code&gt; (&lt;a href=&quot;https://ruby-doc.org/core-2.6.3/Module.html#method-i-class_eval&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Object#__LINE__&lt;/code&gt; (&lt;a href=&quot;https://ruby-doc.org/docs/keywords/1.9/Object.html#method-i-__LINE__&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Object#__FILE__&lt;/code&gt; (&lt;a href=&quot;https://ruby-doc.org/docs/keywords/1.9/Object.html#method-i-__FILE__&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;blocks and Procs&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Object#send&lt;/code&gt; (&lt;a href=&quot;https://ruby-doc.org/core-2.6.3/Object.html#method-i-send&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This &lt;em&gt;single each block&lt;/em&gt; is walking me through metaprogramming, and other bits of ways of using Ruby that are currently ways I use it now.&lt;/p&gt;

&lt;p&gt;This blog post, and subsequent posts, will be unpacking exactly what’s going on. I want to learn via deliberate practice, and I learn by documenting what I’m learning. Often I refer back to these posts later, so they serve as references and guides for future-Josh.&lt;/p&gt;

&lt;h1 id=&quot;what-does-class_eval-do&quot;&gt;What does &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class_eval&lt;/code&gt; do?&lt;/h1&gt;

&lt;p&gt;Lets look at the first &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class_eval&lt;/code&gt; call:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;ln&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;__LINE__&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;class_eval&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%{
  def #{sym}(*args, &amp;amp;block)
    resolve
    result = @items.send(:#{sym}, *args, &amp;amp;block)
    self.class.new.import(result)
  end
}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;__FILE__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ln&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We can see in &lt;a href=&quot;https://ruby-doc.org/core-2.6.3/Module.html#method-i-class_eval&quot;&gt;the docs&lt;/a&gt; that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class_eval&lt;/code&gt; can take three arguments (or a block, but we’ll get there later):&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class_eval(string [, filename [, lineno]]) -&amp;gt; obj
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;__file__-and-__line__&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;__FILE__&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;__LINE__&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;a quick hunt around and some Pry sessions reveals that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;__LINE__&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;__FILE__&lt;/code&gt; are to help give informative error messages, as they help the program find it’s current location in terms of file_name and line_number&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kp&quot;&gt;__LINE__&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;45&lt;/span&gt;
&lt;span class=&quot;kp&quot;&gt;__FILE__&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;(pry)&quot;&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;expand_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;__FILE__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/Users/joshthompson/josh-works.github.io/(pry)&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So, with this information, you could have something printed like&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/Users/joshthompson/josh-works.github.io/(pry):45
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;which looks suspiciously like how error messages are formatted in stack traces. Here’s an error I got yesterday:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[73861] ! Unable to load application: NoMethodError: undefined method `=~&apos; for #&amp;lt;Pathname:0x00007f89cf9eb6e0&amp;gt;
/Users/joshthompson/.rvm/gems/ruby-2.4.4/gems/rails-dev-boost-0.3.0/lib/rails_development_boost/dependencies_patch.rb:109:in `load_path_to_real_path&apos;: undefined method `=~&apos; for #&amp;lt;Pathname:0x00007f89cf9eb6e0&amp;gt; (NoMethodError)
	from /Users/joshthompson/.rvm/gems/ruby-2.4.4/gems/rails-dev-boost-0.3.0/lib/rails_development_boost/loadable_patch.rb:8:in `load&apos;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I have no doubt this stack trace makes great use of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;File.expand_path(__FILE__)&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;__LINE__&lt;/code&gt; to build up these errors.&lt;/p&gt;

&lt;p&gt;If you’re curious, I clobbered an ugly hotfix in like so:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# /Users/joshthompson/.rvm/gems/ruby-2.4.4/gems/rails-dev-boost-0.3.0/lib/rails_development_boost/dependencies_patch.rb:105&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;load_path_to_real_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# below line added by Josh, it&apos;s 💩, remove ASAP&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Pathname&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;expanded_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;expand_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;expanded_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;.rb&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;unless&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=~&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\.r(?:b|ake)\Z/&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;expanded_path&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So, with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;__FILE__&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;__LINE__&lt;/code&gt; arguments now understood, back to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class_eval&lt;/code&gt; method’s first argument, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;string&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;class_evalstring-filename-line_number&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class_eval(string, filename, line_number)&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;I worked through &lt;a href=&quot;https://dalibornasevic.com/posts/16-ruby-class_eval-__file__-and-__line__-arguments&quot;&gt;this post&lt;/a&gt; about class_eval, and worked with the &lt;a href=&quot;https://ruby-doc.org/core-2.6.3/Module.html#method-i-class_eval&quot;&gt;docs&lt;/a&gt; on the same.&lt;/p&gt;

&lt;p&gt;It’s reasonably straight forward. We’re just writing a new method definition, that is created at run-time.&lt;/p&gt;

&lt;p&gt;If I stick a pry in the block, and then just copy-paste the contents within the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%{}&lt;/code&gt;, I can see what is happening:&lt;/p&gt;

&lt;p&gt;Note the pry, and what I copied-pasted:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-06-21_deliberate_practice_01.jpg&quot; alt=&quot;class_eval&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It looks a bit difficult to read at first:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-06-21_deliberate_practice_02.jpg&quot; alt=&quot;class_eval_string&quot; /&gt;&lt;/p&gt;

&lt;p&gt;but when we &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;puts foo&lt;/code&gt;, it cleans right up:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-06-21_deliberate_practice_03.jpg&quot; alt=&quot;class_eval_puts&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class_eval&lt;/code&gt; simply lets us define new classes at runtime.&lt;/p&gt;

&lt;p&gt;In this particular block, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sym&lt;/code&gt; was equal to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;amp;&lt;/code&gt;; if we &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;continue&lt;/code&gt; through the list a few more times, we can find a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class_eval&lt;/code&gt; with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sym&lt;/code&gt; equal to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;collect&lt;/code&gt;. What do you think the method definition &lt;em&gt;there&lt;/em&gt; will be?&lt;/p&gt;

&lt;p&gt;If you guessed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;def collect&lt;/code&gt;, you’re following how this works!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-06-21_deliberate_practice_04.jpg&quot; alt=&quot;class_eval_puts&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, this last evaluation of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class_eval&lt;/code&gt; results in a method like so:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;collect&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;block&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;resolve&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@items&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:collect&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;block&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;block-blocks&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;amp;block&lt;/code&gt;, Blocks&lt;/h1&gt;

&lt;p&gt;That &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;amp;block&lt;/code&gt;, I see everywhere.&lt;/p&gt;

&lt;p&gt;Cracking open my copy of &lt;a href=&quot;https://www.amazon.com/Metaprogramming-Ruby-Program-Like-Facets/dp/1941222129&quot;&gt;Metaprogramming Ruby 2: Program Like the Ruby Pros (Facets of Ruby)&lt;/a&gt;, I took my first pass through this topic a while ago, during which I wrote &lt;a href=&quot;/blocks_and_closures&quot;&gt;Blocks and Closures in Ruby&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Paolo Perrotta describes the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;amp;&lt;/code&gt; operator, in the context of blocks:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A block is like an additional, anonymous argument to a method. In most cases, you execute the block right there in the method, using &lt;em&gt;yield&lt;/em&gt;. In two cases, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yield&lt;/code&gt; is not enough:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;You want to pass the block to another method (or even another block)&lt;/li&gt;
    &lt;li&gt;You want to convert the block to a &lt;em&gt;Proc&lt;/em&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;In both cases, you need to point at the block and say, “I want to use &lt;em&gt;this&lt;/em&gt; block” –to do that, you need a name. To attach a binding to the block, you can add one special argument to the method. This argument must be the last in the list of arguments and prefixed by an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;amp;&lt;/code&gt; sign.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;amp;&lt;/code&gt; is shorthand for calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;to_proc&lt;/code&gt; on whatever it’s bound to, I think.&lt;/p&gt;

&lt;p&gt;OK, I’m not going to get too bogged down in this code just yet. I’ve got enough of an understanding that I can move forward, for now, on making this classes’ test pass.&lt;/p&gt;

&lt;p&gt;More to come soon.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Turing Prep Chapter 4: Arrays, Hashes, and Nested Collections</title>
   <link href="https://josh.works/turing-backend-prep-arrays-hashes-nested-collections"/>
   <updated>2019-06-09T13:00:00+00:00</updated>
   <id>https://josh.works/turing_prework_arrays_hashes_nested_collections</id>
   <content type="html">&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;So far, we’ve covered some &lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;string manipulation&lt;/a&gt; and did a few &lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;mythical creatures&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You totally don’t have to look through the screencasts in the order I’ve listed below. I just wanted to call out array/hash manipulation on its own page.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/playlist?list=PLziI1EoC2-jdfrIdeqUNHYVTnq99uVm6I&quot;&gt;You can also look through the whole playlist&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;array-manipulation-exercises&quot;&gt;Array Manipulation Exercises&lt;/h2&gt;

&lt;p&gt;These are from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ruby-exercises/data-types/collections/arrays.rb&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/RUnd1Uu0AyE&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;!--more--&gt;

&lt;p&gt;I’ll add more screencasts for the other files in this directory soon:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; tree collections
collections
├── README.md
├── advanced_nested_collections
│   ├── nesting.rb               // done
│   └── nesting_test.rb          // done
├── arrays.rb                    // done, what you&apos;re reading right now
├── hashes.rb                    // coming soon
└── nested_collections.rb        // coming soon
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;As I’ve mentioned before, I would recommend you try to stay &lt;em&gt;ahead&lt;/em&gt; of me in this video. If you get stuck on making a test pass for more than a few minutes, check that spot of the video, then carry on.&lt;/p&gt;

&lt;p&gt;This video is so long because I go into excruciating detail on each test, not just showing the given method that works, but showing how I would google for the right answers if I didn’t know them.&lt;/p&gt;

&lt;p&gt;Googling is a skill. Get good at it. :)&lt;/p&gt;

&lt;h4 id=&quot;heres-an-index-of-timestampswhats-covered-at-that-location-for-this-array-manipulation-video&quot;&gt;Here’s an index of timestamps/what’s covered at that location for this Array manipulation video.&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=1m10s&quot;&gt;1:10 - How to use this video&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=2m05s&quot;&gt;2:05 - test_0&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=2m28s&quot;&gt;2:28 - test_1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=3m05s&quot;&gt;3:05 - test_2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=3m35s&quot;&gt;3:35 - using “pry” for the first time in this file&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=4m53s&quot;&gt;4:53 - test_22&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=8m33s&quot;&gt;8:33 - test_3&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/anki-spaced-repetition-system&quot;&gt;9:20 - Anki flashcard post I mention&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=10m12s&quot;&gt;10:12 - test_4&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=14m10s&quot;&gt;14:10 - test_a&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=15m18s&quot;&gt;15:18 - test_5&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=18m17s&quot;&gt;18:17 - test_b&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=18m36s&quot;&gt;18:36 - test_c&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=19m08s&quot;&gt;19:08 - test_6&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=21m33s&quot;&gt;21:33 - test_7&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=23m02s&quot;&gt;23:02 - test_8&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=27m04s&quot;&gt;27:04 - test_9&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=30m19s&quot;&gt;30:19 - test_10&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=30m59s&quot;&gt;30:59 - test_11&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=31m41s&quot;&gt;31:41 - why read the docs?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=32m37s&quot;&gt;32:37 - test_12&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=34m58s&quot;&gt;34:58 - test_13&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=36m05s&quot;&gt;36:05 - test_14&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=38m10s&quot;&gt;38:10 - suggested next steps&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RUnd1Uu0AyE&amp;amp;t=38m46s&quot;&gt;38:46 - write down Array methods in a notebook.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;advanced-nested-collections&quot;&gt;Advanced Nested Collections&lt;/h2&gt;

&lt;p&gt;Inside the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;collections&lt;/code&gt; directory, there’s &lt;em&gt;another&lt;/em&gt; directory, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;advanced_nested_collections&lt;/code&gt;; this is well worth your time to play around with.&lt;/p&gt;

&lt;p&gt;Here’s a walk-through:&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/9AaElA4elDU&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;I cover a lot of things in the video; here’s the index:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=0m04s&quot;&gt;0:04 - The “tree” command: https://github.com/MrRaindrop/tree-cli&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=0m14s&quot;&gt;0:14 - &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd&lt;/code&gt; to the target file&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=1m10s&quot;&gt;1:10 - the importance of process over specific answers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=1m54s&quot;&gt;1:54 - I probably won’t be coming up with the “best” solutions, and that’s OK&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=2m50s&quot;&gt;2:50 - Copying relative and absolute file paths to the clipboard&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=3m15s&quot;&gt;3:15 - run all tests, all skipped&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=3m23s&quot;&gt;3:23 - def test_list_of_olive_garden_employees&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=3m33s&quot;&gt;3:33 - exploring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stores&lt;/code&gt; object in Pry&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=4m29s&quot;&gt;4:29 - Start with other hash exercises; if you’ve not done any, this isn’t a good starting point.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=4m50s&quot;&gt;4:50 - test_pancake_ingredients&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=5m42s&quot;&gt;5:42 - using .keys&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=6m30s&quot;&gt;6:30 - dealing with array of hashes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=7m26s&quot;&gt;7:26 - test_rissotto_price&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=8m33s&quot;&gt;8:33 - test_big_mac_ingredients&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=9m52s&quot;&gt;9:52 - using .find; I used it wrong. Better usage examples: https://www.youtube.com/watch?v=2tTMAPT7rcw, https://apidock.com/ruby/Enumerable/find. Sorry.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=10m40s&quot;&gt;10:40 - I’m still using it wrong. super sorry.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=11m10s&quot;&gt;11:10 - Find is an Enumerable method, not Array method, which is why I had to look in a different spot in the docs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=12m39s&quot;&gt;12:39 - test_list_of_restaurants&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=13m39s&quot;&gt;13:39 - test_list_of_dishes_names_for_olive_garden&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=14m20s&quot;&gt;14:20 - using .map for first time.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=15m30s&quot;&gt;15:30 - convert .map to .each, per instructions&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=15m45s&quot;&gt;15:45 - using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;continue&lt;/code&gt; in pry to move to next item in list&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=16m20s&quot;&gt;16:20 - difference between .each and .map&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=18m43s&quot;&gt;18:43 - test_list_of_employees_across_all_restaurants&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=21m13s&quot;&gt;21:13 - using ruby docs to get unstuck&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=22m10s&quot;&gt;22:10 - using .each with TWO arguments in block instead of one.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=23m44s&quot;&gt;23:44 use .concat to avoid nested arrays&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=25m29s&quot;&gt;25:29 test_list_of_all_ingredients_across_all_restaurants&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=32m29s&quot;&gt;32:29 test_full_menu_price_for_olive_garden&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=37m13s&quot;&gt;37:13 test passes. Lets refactor, giving .reduce a shot! 😱&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=41m14s&quot;&gt;41:14 test_full_menu_for_olive_garden&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=48m38s&quot;&gt;48:38 I accidentally broke the prior test; fixing it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=50m02s&quot;&gt;50:02 test_full_menu_price_for_olive_garden&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=53m51s&quot;&gt;53:51 it works! refactoring to use .reduce&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=9AaElA4elDU&amp;amp;t=1h03m00s&quot;&gt;1:03:00 explaining a gotcha with .reduce&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;When you’re done, consider taking a look at some of the more advanced refactoring guides:&lt;/p&gt;

&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index-1&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
</content>
 </entry>
 
 <entry>
   <title>Exploring source code via Griddler and Griddler-Mailgun</title>
   <link href="https://josh.works/exploring-source-code-via-griddler-and-griddler-mailgun"/>
   <updated>2019-05-31T13:00:00+00:00</updated>
   <id>https://josh.works/exploring_griddler_and_griddler_mailgun_source_code</id>
   <content type="html">&lt;p&gt;Proofpoint had a two-day “hack day” recently. My coworker &lt;a href=&quot;https://github.com/Jliv316&quot;&gt;John&lt;/a&gt; and I teamed up on a cool little feature. I’ll give some context in a moment, but this post isn’t about the hack day, or email - it’s about exploring source code.&lt;/p&gt;

&lt;p&gt;Here’s the context:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In my day-to-day, I work on a simulated phishing tool; it lets our customers send simulated phishing attacks to their employees&lt;/p&gt;

  &lt;p&gt;We then gather and report data on things like:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;who opened the email&lt;/li&gt;
    &lt;li&gt;who clicked the phishing link (or opened the attachment)&lt;/li&gt;
    &lt;li&gt;who read the subsequent training page&lt;/li&gt;
    &lt;li&gt;and more&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;One strong benefit of using this tool is our customers can send their employees very realistic, very tricky phish, and educate them how to avoid falling for those tricky phish “in the wild”.&lt;/p&gt;

  &lt;p&gt;The more realistic the phish, the higher-quality the training.&lt;/p&gt;

  &lt;p&gt;So, we wanted to set up an email inbox that our customers could forward real-life phish to, and our staff could look through all the submitted phish, preview the email, and decide to convert the &lt;em&gt;real&lt;/em&gt; phish into a simulated phishing template available in our “phishing template library”.&lt;/p&gt;

  &lt;p&gt;Basically, if you got a really sneaky phish, you could forward it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;phishingideas@proofpoint.com&lt;/code&gt;, and we could quickly decide if we wanted to make this phishing template available to all our customers.&lt;/p&gt;

  &lt;p&gt;I’d heard this idea discussed before, always as a “nice-to-have”, but the feature ticket never got written, and we never prioritized it. John and I work closely with the Director of Support, and others, and when digging into their pain-points, they also said this would be a nice feature.&lt;/p&gt;

  &lt;p&gt;So, we decided to build it!&lt;/p&gt;

  &lt;p&gt;We still have to set up some SMTP stuff in Mailgun, and do a few other bits of configuration, but the actual rails app is functioning as expected, and can receive mail passed along from Mailgun.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’m not writing about receiving mail in a Rails app, though - that’ll be another post. But at one point, John and I got pretty bogged down with some unexpected errors.&lt;/p&gt;

&lt;p&gt;It wasn’t until we started exploring the source code of the gem generating the errors that we found the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Had we been quicker to jump into the gem source code, we would have saved ourselves three hours, and maybe would have gotten the entire feature built and up for testing in the time-frame we had.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recently I’ve been making it a habit to explore stack traces when I get them, because when they pop up in my terminal, &lt;a href=&quot;/prying-into-a-stack-trace&quot;&gt;it’s super easy to view the source of the problem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So, here’s the error we were getting:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/griddler_gem_01.jpg&quot; alt=&quot;griddler gem&quot; /&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;The stack trace was a normal-looking stack trace:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;NoMethodError at /email_processor
=================================

&amp;gt; undefined method `[]&apos; for nil:NilClass

app/models/email_processor.rb, line 9
-------------------------------------

ruby
    4       @email = email
    5     end
    6   
    7     def process
    8       new_template = {
&amp;gt;   9         from_name:  @email.from[:name],
   10         from_email: @email.from[:email],
   11         email_body: @email.raw_html, #todo SANITIZE HTML
   12         subject: @email.subject,
   13         account_id: 314
   14       }


App backtrace
-------------

 - app/models/email_processor.rb:9:in `process&apos;

Full backtrace
--------------

 - app/models/email_processor.rb:9:in `process&apos;
 - griddler (1.5.2) app/controllers/griddler/emails_controller.rb:23:in `process_email&apos;
 - griddler (1.5.2) app/controllers/griddler/emails_controller.rb:6:in `block in create&apos;
 - griddler (1.5.2) app/controllers/griddler/emails_controller.rb:5:in `create&apos;
 - actionpack (4.2.11.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action&apos;
 - actionpack (4.2.11.1) lib/abstract_controller/base.rb:198:in `process_action&apos;
 - actionpack (4.2.11.1) lib/action_controller/metal/rendering.rb:10:in `process_action&apos;
 - actionpack (4.2.11.1) lib/abstract_controller/callbacks.rb:20:in `block in process_action&apos;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Our code was causing the stack trace when we called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@email.from[:name]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;But we couldn’t figure out exactly what the problem was. We were using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;griddler-mailgun&lt;/code&gt; gem (&lt;a href=&quot;https://github.com/bradpauly/griddler-mailgun&quot;&gt;docs&lt;/a&gt;), and it seemed like we were running everything right.&lt;/p&gt;

&lt;p&gt;We’d found watched a &lt;a href=&quot;https://vimeo.com/67520302&quot;&gt;really old video&lt;/a&gt;, and copied exactly the submitted params the video discussed.&lt;/p&gt;

&lt;p&gt;We followed the &lt;a href=&quot;https://thoughtbot.com/blog/griddler-is-better-than-ever&quot;&gt;ThoughtBot setup instructions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We could &lt;em&gt;not&lt;/em&gt; figure out the problem.&lt;/p&gt;

&lt;p&gt;I finally thought we should explore the gem source code, but I didn’t want to just click around the source code on GitHub. After all, the exact line this thing broke on isn’t super helpful. You can go see it yourself: &lt;a href=&quot;https://github.com/thoughtbot/griddler/blob/master/app/controllers/griddler/emails_controller.rb#L23&quot;&gt;https://github.com/thoughtbot/griddler/blob/master/app/controllers/griddler/emails_controller.rb#L23&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I knew there was a way to quickly open up a gem. I couldn’t remember what it was.&lt;/p&gt;

&lt;h3 id=&quot;viewing-gem-source-code&quot;&gt;Viewing Gem Source Code&lt;/h3&gt;

&lt;p&gt;Googling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;how to open ruby gem source code locally&lt;/code&gt; (or something like that) led straight to a StackOverflow question: &lt;a href=&quot;https://stackoverflow.com/questions/10453249/viewing-a-gems-source-code&quot;&gt;Viewing a Gem’s Source Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/a/29770875/3210178&quot;&gt;One of the answers&lt;/a&gt; worked perfectly for us:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I usually open a gem by running this command from the console&lt;/p&gt;
  &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;EDITOR=&amp;lt;your editor&amp;gt; bundle open &amp;lt;name of gem&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Since I use Atom and I wanted to see the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gridder&lt;/code&gt; gem, I ran:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ EDITOR=atom bundle open griddler
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Boom. I could see the code. I can even put a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; in it!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/griddler_gem_02.jpg&quot; alt=&quot;I can find the problem!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When I re-ran the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POST&lt;/code&gt; request from Postman, with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails s&lt;/code&gt; running in my terminal:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/griddler_gem_03.jpg&quot; alt=&quot;it&apos;s alliiiive&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I won’t bore you with the details, but by investigating the state of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;email&lt;/code&gt; object being passed to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;processor_class.new&lt;/code&gt;, we could see that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;email&lt;/code&gt; already was missing params.&lt;/p&gt;

&lt;p&gt;So, I kept digging. Where was the email getting processed? Where was this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;params&lt;/code&gt; object coming from?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/griddler_gem_04.jpg&quot; alt=&quot;I can find the problem!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This took us over to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;griddler-mailgun&lt;/code&gt; gem (we use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Mailgun&lt;/code&gt; in our app, so we set up the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;griddler-mailgun&lt;/code&gt; gem to talk between services.)&lt;/p&gt;

&lt;p&gt;So, I got to open &lt;em&gt;another&lt;/em&gt; gem in the editor. :)&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ EDITOR=atom bundle open griddler-mailgun
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here’s what we found:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/griddler_gem_05.jpg&quot; alt=&quot;suspicious use of upper case keys&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It seems odd that these keys were capitalized. In ruby ,&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:From&lt;/code&gt; is not the same as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:from&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So, we updated our params that we were passing in from Postman, to capitalize a few keys:&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
	&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;recipient&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;josh@domain.com&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
	&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;From&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Not Working Well &amp;lt;whywontyouwork@working.foo&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
	&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;To&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;josh@domain.com&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
	&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;subject&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;SendGrid thoughtbot&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
	&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;body-plain&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;This is some text body&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
	&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;body-html&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Supports &amp;lt;em&amp;gt;HTML&amp;lt;/em&amp;gt; as well.&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Notice the capitalized &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;From&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;To&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;And it worked. Now we had the email in our application.&lt;/p&gt;

&lt;p&gt;This cost us almost &lt;em&gt;three hours&lt;/em&gt; of frustration. Once we started digging into the gem itself, we were unblocked in thirty minutes.&lt;/p&gt;

&lt;p&gt;I’m going to make a PR against the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;griddler&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;griddler-mailgun&lt;/code&gt; repositories soon, with a note in the documentation on this convention; maybe everyone who uses these tools knows that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;From&lt;/code&gt; key has to be capitalized, but we sure didn’t. There’s &lt;a href=&quot;https://github.com/bradpauly/griddler-mailgun/issues/19&quot;&gt;one open issue from 2017&lt;/a&gt; where someone else ran into the same problem. I’ve shared this solution there, but that’s not a great way to surface the fix for everyone to see.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;update: I’ve got a &lt;a href=&quot;https://github.com/bradpauly/griddler-mailgun/pull/27&quot;&gt;README update PR&lt;/a&gt; in on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;griddler-mailgun&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But the big learning for me was… how to quickly open a gem for further investigation. And you can even stick a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; in it to trace around execution!&lt;/p&gt;

&lt;p&gt;There’s more than one way to get at this. You can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem open&lt;/code&gt;, as &lt;a href=&quot;https://guides.rubygems.org/command-reference/#gem-open&quot;&gt;per the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem&lt;/code&gt; docs&lt;/a&gt;. You can specify a gem version to open, as it’s common to have more than one version of a gem installed on your machine.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;gem open whenever -e atom -v 0.9.7
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I’ll absolutely be using this general pattern much more now to dig into source code. This has the ancillary benefit of exposing me to lots of well-written code; supposedly, to write better code, one ought to spend time reading good code.&lt;/p&gt;

&lt;p&gt;Now there’s less friction between me (and you!) and reading good code.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://thoughtbot.com/blog/griddler-is-better-than-ever&quot;&gt;Griddler is better than ever (ThoughtBot)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/thoughtbot/griddler&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;griddler&lt;/code&gt; gem (github)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://catskull.svbtle.com/use-griddler-to-receive-emails-as-http-post-events-in-rails&quot;&gt;Use griddler to receive emails as http post events from Mandrill in Rails (David Degraw)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bradpauly/griddler-mailgun&quot;&gt;1&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;riddler-mailgun&lt;/code&gt; gem (github)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://guides.rubygems.org/command-reference/#gem-open&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem&lt;/code&gt; docs, specifically on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem open&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Turing Prep Chapter 3: Moar Mythical Creatures</title>
   <link href="https://josh.works/turing-backend-prep-mythical-creatures"/>
   <updated>2019-05-31T13:00:00+00:00</updated>
   <id>https://josh.works/turing_prework_03_mythical_creatures</id>
   <content type="html">&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;I’ve made a few more videos, focusing on the Mythical Creatures exercises.&lt;/p&gt;

&lt;h2 id=&quot;mythical-creatures-unicornrb&quot;&gt;Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;Once you’ve finished the strings, arrays, hashes, etc… you may want to take a spin at the infamous Mythical Creatures!&lt;/p&gt;

&lt;p&gt;These exercises will give you lots of practice with “object oriented” programming. You will define an object (like a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Person&lt;/code&gt; object) and create instances of that object that have certain behaviors and methods of interaction.&lt;/p&gt;

&lt;p&gt;This is a lot to wrap your head around, and “object oriented programming” is a topic that fills dozens of books, hundreds of conference talks, and you’ll spend the rest of your life building a better understanding of. So don’t feel any rush to grasp it all in the next ten minutes.&lt;/p&gt;

&lt;p&gt;Block out an hour or two to work through through this guide: &lt;a href=&quot;https://launchschool.com/books/oo_ruby/read/the_object_model&quot;&gt;LaunchSchool: The Object Model&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read it carefully, but don’t worry that it all won’t make sense. Take notes, run the code examples, take your time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When, and only when, you’ve read through the above set of articles about &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;The Object Model&lt;/code&gt; may you start to tackle the first mythical creature.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not watch the following walk-through until you’ve read and run code from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;The Object Model&lt;/code&gt; linked above.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It can be tricky getting set up, so here’s another video of the very first mythical creature:&lt;/p&gt;

&lt;p&gt;A quick aside - as you work through these exercises, and all of the exercises to come, you’ll perhaps notice a constant tension between “results” vs. “process”. Here’s what I mean by this, explained in a conversation with a Turing student, working through this exact guide:&lt;/p&gt;

&lt;p&gt;They said:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;[…] In other words, there is more than one way to achieve the result, so do I focus on process or product?  I am not expecting there to be a single “right” answer, but I am curious as to how Turing is going to evaluate us. Are the steps used more important than the outcome?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I responded with:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Your intuition is leading you well - the steps &lt;em&gt;and&lt;/em&gt; the outcome, are important.&lt;/p&gt;

  &lt;p&gt;I’d recommend de-emphasizing the Turing evaluations in your mind, though, and just focusing on building the right kind of skills that will serve you well for the rest of your career as a developer. And, from that lens, there will &lt;em&gt;always&lt;/em&gt; be tension between
&lt;strong&gt;the best I know how to do &lt;em&gt;right now&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;the best that can be done, ever&lt;/strong&gt;.&lt;/p&gt;

  &lt;p&gt;Obviously, as you grow your skill-set as a developer, you would be able to go back and improve prior bits of code you’ve written. It’s rare to crank out a “perfect” project, no matter how small.&lt;/p&gt;

  &lt;p&gt;So, optimize for learning, which basically means… when you find something that works, use it, but next time you come across a similar kind of challenge, you might use something slightly different.&lt;/p&gt;

  &lt;p&gt;I don’t know if any of this makes sense. It basically means
&lt;strong&gt;don’t sweat not getting exposed to every single Ruby method, but be open to using new ones as situations arise, and you get more comfortable with the ones you know.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or, in summary:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;There may be multiple ways to achieve the required outcome; use what you now know; be on the lookout for other methods that achieve the same result.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/mocwGsu41yw&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;!--more--&gt;

&lt;p&gt;Feel free to rely heavily on my solution here in the video, but when you’re done making it pass the first time, you &lt;em&gt;must&lt;/em&gt; delete all the code (and the file containing the code), and do the exercise a second time, from scratch.&lt;/p&gt;

&lt;p&gt;If you don’t, you will get maybe 10% of the learning out of this exercise that you should. I made this video not to give you the solution, but to help you get the shape of running the drills. Now that you know the shape (from the video) you can do the drills, but you must re-build &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, if you made it pass while watching my guide.&lt;/p&gt;

&lt;p&gt;Once you’ve re-built your own &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Unicorn&lt;/code&gt; class, re-read the Object-Oriented guide: &lt;a href=&quot;https://launchschool.com/books/oo_ruby/read/the_object_model&quot;&gt;https://launchschool.com/books/oo_ruby/read/the_object_model&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Much more of it will make sense to you this time.&lt;/p&gt;

&lt;h2 id=&quot;mythical-creatures-dragonrb&quot;&gt;Mythical creatures, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;We’re doing another Mythical Creature - this time, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;. I’ll get a bit deeper into using Pry, as well as opening with a very minor (but very important!) Terminal modification.&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/NIPerY-xuCk&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;We discuss:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Setting new tabs/windows in Terminal to open from current directory. (&lt;a href=&quot;https://apple.stackexchange.com/questions/178017/new-terminal-to-same-directory&quot;&gt;more on this&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Atom split panes (&lt;a href=&quot;https://flight-manual.atom.io/using-atom/sections/panes/&quot;&gt;more&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Atom Autosave package: It’s in your editor by default. &lt;a href=&quot;https://stackoverflow.com/questions/29902834/auto-save-in-atom-editor&quot;&gt;here’s how to turn it on&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Atom package that shows current indentation: (vertical white lines) &lt;a href=&quot;https://atom.io/packages/indent-guide-improved&quot;&gt;indent-guide-improved&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Atom package that highlights beginning/end of method: &lt;a href=&quot;https://atom.io/packages/ruby-block&quot;&gt;ruby-block&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Atom package that highlightes all instances of selected text: &lt;a href=&quot;https://atom.io/packages/highlight-selected&quot;&gt;highlight-selected&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;How to run just a single test in Minitest: &lt;a href=&quot;https://stackoverflow.com/a/9310490/3210178&quot;&gt;StackOverflow answer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;how to run just a single test at a time from the command line&lt;/li&gt;
  &lt;li&gt;calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;self&lt;/code&gt; inside of Pry, to see the current object under test.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;mythical-creatures-hobbitrb&quot;&gt;Mythical creatures, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/h1&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit&lt;/code&gt; mythical creature is a bit tricky. We have to start &lt;em&gt;doing things&lt;/em&gt; with methods, without necessarily &lt;em&gt;returning&lt;/em&gt; anything. Then we have to “interrogate” the object under test to see what has changed, and if some things have changed in a certain way, we do one thing, if not, another.&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/uYGS-DCNR-0&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;IF YOU HAVE QUESTIONS! Email me, or ping me in the Turing slack channel (I’m &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@josh_t&lt;/code&gt;). I’ll make sure to integrate answers to your questions into this guide.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;When you’re done, move on to chapter 4!&lt;/p&gt;

&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index-1&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;additional-resources&quot;&gt;Additional resources&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://tutorials.jumpstartlab.com/academy/workshops/objects_and_methods.html&quot;&gt;JumpStart Labs: Objects and Methods&lt;/a&gt; This is a good companion piece to the above OO articles&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://launchschool.com/books/oo_ruby/read/the_object_model&quot;&gt;LaunchSchool: The Object Model&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://launchschool.com/blog/assert-yourself-an-introduction-to-minitest&quot;&gt;LaunchSchool: Assert Yourself (an introduction to minitest)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://gist.github.com/josh-works/7f2e6c82d22dca6e9fbc029c8b17703d&quot;&gt;another one of my gists: terminal command summaries, tab-complete git branches, and a better terminal prompt (with video)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Turing Prep appendix: Troubleshooting Errors</title>
   <link href="https://josh.works/turing-backend-prep-troubleshooting-guide"/>
   <updated>2019-05-19T14:00:00+00:00</updated>
   <id>https://josh.works/turing_prework_troubleshooting</id>
   <content type="html">&lt;p&gt;Pretty much any time I hear the same question twice, I will try to add a section here for it, and make it as findable by future students as possible.&lt;/p&gt;

&lt;p&gt;Do you have a question not answered here? PLEASE send me a DM in Slack or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@&lt;/code&gt; me  (I’m &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;josh_t&lt;/code&gt; in the Turing slack). I’ll take a look, make sure you get a solution in place, and then I’ll update this document accordingly.&lt;/p&gt;

&lt;h2 id=&quot;atom--in-terminal-doesnt-do-anything&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;atom .&lt;/code&gt; in Terminal doesn’t do anything&lt;/h2&gt;

&lt;p&gt;You may need to install the Atom Shell Commands. Atom makes it super easy to do this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-09-14_turing_troubleshooting_01.jpg&quot; alt=&quot;install shell commands&quot; /&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;gem-install-pry-failing-with-you-do-not-have-permission&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem install pry&lt;/code&gt; failing with “you do not have permission”&lt;/h2&gt;

&lt;p&gt;If you get an error like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don&apos;t have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Don’t worry. We’ll sort you out. It’ll take some work.&lt;/p&gt;

&lt;p&gt;First, lets see which installed version of Ruby your computer is trying to use:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ which ruby
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you get something that looks like this:&lt;/p&gt;
&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# this is broken:&lt;/span&gt;
/usr/bin/ruby

&lt;span class=&quot;c&quot;&gt;# this is working:&lt;/span&gt;
/Users/yourusername/.rbenv/shims/ruby
/Users/yourusername/.rvm/rubies/ruby-2.3.3/bin/ruby
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you got &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/bin/ruby&lt;/code&gt;, we’ll need to fix some stuff. Read on!&lt;/p&gt;

&lt;h2 id=&quot;which-ruby-returns-usrbinruby&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;which ruby&lt;/code&gt; returns &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/bin/ruby&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;This means you’re using the version of Ruby that came installed on your laptop, and it’s from like 2013.&lt;/p&gt;

&lt;p&gt;You shouldn’t be messing with this version of Ruby, so your system isn’t letting you.&lt;/p&gt;

&lt;p&gt;To use Ruby safely, you’ll need to use a tool to manage Ruby’s environment. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rbenv&lt;/code&gt; is the most common tool for this: &lt;a href=&quot;https://github.com/rbenv/rbenv&quot;&gt;https://github.com/rbenv/rbenv&lt;/a&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rbenv&lt;/code&gt; stands for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ruby Environment&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You should have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[homebrew](https://brew.sh/)&lt;/code&gt; on your computer already. If you don’t, figure out how to install it.&lt;/p&gt;

&lt;p&gt;If you have it, here’s a summary &lt;a href=&quot;https://github.com/rbenv/rbenv#homebrew-on-macos&quot;&gt;of the instructions for MacOS&lt;/a&gt;:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;rbenv
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;rbenv init
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After running the second command, you’ll see something in your terminal like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval &quot;$(rbenv init -)&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If we translate this to plain English, it says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Please modify a configuration file on your laptop to include this line of code at the bottom of it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To do follow the above instructions, we can run:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;echo &quot;eval &apos;$(rbenv init -)&apos;&quot; &amp;gt;&amp;gt; ~/.zshrc &amp;amp;&amp;amp; source ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;You should be skeptical of blindly copy-pasting commands from strangers on the internet into your terminal. This command contains three different commands, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;append&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;source&lt;/code&gt; commands. I recommend installing this &lt;a href=&quot;https://github.com/tldr-pages/tldr&quot;&gt;tldr tool&lt;/a&gt; to understand exactly what is happening here.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now do &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle install&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem install pry&lt;/code&gt; again. If it works, success! You’re done!&lt;/p&gt;

&lt;p&gt;If that &lt;em&gt;doesn’t&lt;/em&gt; work, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rbenv&lt;/code&gt; might not yet be installed, so lets make sure it’s installed and working correctly. Do:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ rbenv -v
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You should get something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rbenv 1.1.2&lt;/code&gt; back.&lt;/p&gt;

&lt;p&gt;Next, tell &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rbenv&lt;/code&gt; to install ruby 2.4.1 (or whatever version of Ruby you want. The current newest stable version of Ruby is up to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2.7.1&lt;/code&gt;)&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ rbenv install 2.4.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And then set this version of ruby as the “global” version to use, until you tell it otherwise or a particular project specifies a different version:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ rbenv global 2.4.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You can now do &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem install pry&lt;/code&gt;, and it will install the gem to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2.4.1&lt;/code&gt; version of Ruby, as managed by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rbenv&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Still having problems?&lt;/p&gt;

&lt;h3 id=&quot;undefined-method-pry&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;undefined method pry&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;undefined method &apos;pry&apos; for #Binding:0x0007f8f980d39f8&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When you try to hit a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; in your tests, you might type in something like:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_12&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;children&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Sarah&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Owen&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Peter&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  
  &lt;span class=&quot;nb&quot;&gt;binding&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;pry&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# adding a pry&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;one_string&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;children&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;assert_equal&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Sarah, Owen, Peter&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;one_string&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And then you get an error like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;undefined method &apos;pry&apos; for #Binding:0x0007f8f980d39f8&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The problem is ruby needs the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; gem to be available in the file where you’re trying to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;binding.pry&lt;/code&gt;. Here’s how to do this:&lt;/p&gt;

&lt;h2 id=&quot;add-pry-snippet-in-atom&quot;&gt;Add Pry snippet in Atom&lt;/h2&gt;

&lt;p&gt;We’re going to make this happen with four presses, instead of 26.&lt;/p&gt;

&lt;p&gt;So you can type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; and hit the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tab&lt;/code&gt; key, and it’ll auto-expand into the full snippet:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-09-20-pry-04.gif&quot; alt=&quot;pry all day&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Wahoo!&lt;/p&gt;

&lt;p&gt;Also, this line of code is easy to make mistakes with.&lt;/p&gt;

&lt;p&gt;I can hardly type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require &apos;pry&apos;;binding,pry&lt;/code&gt;. I mean &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require &quot;pry&quot;:bindingpry&lt;/code&gt;…&lt;/p&gt;

&lt;p&gt;Here’s how to set this shortcut up:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Go to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Atom &amp;gt; Snippets&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-09-20-pry-03.jpg&quot; alt=&quot;go to snippets&quot; /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Paste this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; snippet shortcut into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;snippets.cson&lt;/code&gt; file:&lt;/li&gt;
&lt;/ol&gt;

&lt;pre&gt;&lt;code class=&quot;language-cson&quot;&gt;&apos;.source.ruby&apos;:
  &apos;require &quot;pry&quot;&apos;:
    &apos;prefix&apos;: &apos;pry&apos;
    &apos;body&apos;: &apos;require &quot;pry&quot;; binding.pry&apos;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It should look something like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-09-20-pry-05.jpg&quot; alt=&quot;the whole .cson file&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Save and close this file, and go back to your code, type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt;, and hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tab&lt;/code&gt;. 👍&lt;/p&gt;

&lt;p&gt;Want to know more about Atom’s snippets? &lt;a href=&quot;https://flight-manual.atom.io/using-atom/sections/snippets/&quot;&gt;Heres Atom’s docs on snippets&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;fspathmakeref-and-a-bunch-of-other-stuff&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FSPathMakeRef&lt;/code&gt; and a bunch of other stuff&lt;/h2&gt;

&lt;p&gt;Here’s an error one student saw:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FSPathMakeRef(/Applications/Atom.app) failed with error -36.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Googling around led here: &lt;a href=&quot;https://github.com/atom/atom/issues/5222&quot;&gt;https://github.com/atom/atom/issues/5222&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One possible cause was the user’s machine had two instances of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Atom.app&lt;/code&gt; on it. In this case, one was in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Downloads&lt;/code&gt; folder, the other in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Applications&lt;/code&gt;. Delete one of them, try again.&lt;/p&gt;

&lt;h2 id=&quot;traceback-cannot-load-such-file----pry&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Traceback... cannot load such file -- pry&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;This seems like an intimidating error message at first.&lt;/p&gt;

&lt;p&gt;It’s not. The error just says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Dear user, you’ve asked me to import code to run these tests, but I cannot find the code you require.&lt;/p&gt;

  &lt;p&gt;The code I was looking for (and cannot find) is called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pry is an amazing tool. You’ll soon come to love it. In the mean time, just install it. It’s a ruby “gem” so you use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem install &amp;lt;gem_name&amp;gt;&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;In your terminal, run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem install pry&lt;/code&gt; and then run the tests again.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Turing Prep Chapter 2: Run your first tests (and make them pass)</title>
   <link href="https://josh.works/turing-backend-prep-02-first-tests-and-making-them-pass"/>
   <updated>2019-05-19T13:00:00+00:00</updated>
   <id>https://josh.works/turing_prework_02_getting_the_right_files</id>
   <content type="html">&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;hr /&gt;

&lt;p&gt;A warning - the hours ahead that you spend on this will be chock full of error messages. Embrace googling error messages! When in doubt, google it, even if it’s meaningless to you! Somewhere on the internet exists hints and clues about what to do.&lt;/p&gt;

&lt;p&gt;This skill set (googling for hints, using those hints to improve your googling, testing those assumptions, not giving up, etc) is known as &lt;strong&gt;technical sophistication&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every time you encounter something unfamiliar, and google your way to an understanding and/or solution, you’re building &lt;em&gt;technical sophistication&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In technology, a similar skill (or, more accurately, set of skills) [as mathematical maturity] exists in the form of &lt;strong&gt;technical sophistication&lt;/strong&gt;. In addition to “hard skills” like familiarity with text editors and the Unix command line, technical sophistication includes “soft skills” like looking for promising menu items and knowing the kinds of search terms to drop into Google… along with an attitude of doing what it takes to make the machine do our bidding.&lt;/p&gt;

  &lt;p&gt;These soft skills, and this attitude, are hard to teach directly, so as you progress through this and subsequent Learn Enough tutorials you should always be on the lookout for opportunities to increase your technical sophistication… Over time, the cumulative effect will be that &lt;strong&gt;you’ll have the seemingly magical ability to do everything in every program&lt;/strong&gt;.&lt;/p&gt;

  &lt;p&gt;- Michael Hartl, &lt;a href=&quot;https://www.learnenough.com/command-line-tutorial/basics#aside-technical_sophistication&quot;&gt;https://www.learnenough.com/command-line-tutorial&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Technical sophistication aside, I’ve put &lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;together a list of trouble-shooting steps&lt;/a&gt; for errors various students have run into, and I’ve helped them resolve. If you hit a problem, check here to see if someone else has seen it too.&lt;/p&gt;

&lt;!--more--&gt;
&lt;hr /&gt;

&lt;h1 id=&quot;seven-steps-to-your-first-completed-ruby-exercise-lesson&quot;&gt;Seven steps to your first completed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ruby-exercise&lt;/code&gt; lesson:&lt;/h1&gt;

&lt;ol&gt;
  &lt;li&gt;figure out how to download the correct repositories&lt;/li&gt;
  &lt;li&gt;use your terminal to explore what you’ve downloaded&lt;/li&gt;
  &lt;li&gt;open the correct files in Atom&lt;/li&gt;
  &lt;li&gt;“run” the files in your terminal and work through the error messages&lt;/li&gt;
  &lt;li&gt;learn the basics of Minitest&lt;/li&gt;
  &lt;li&gt;get your first passing test in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;strings.rb&lt;/code&gt; file&lt;/li&gt;
  &lt;li&gt;make the whole file pass!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Throughout this whole process, I hope you maintain a sense of curiosity about the steps involved. You’ll encounter error messages, new terminology, shortcuts for moving around your terminal, and lots of new information around Ruby and testing and such. If you have not read part 1 of this guide, and the two books referenced therein, &lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;now would be a great time to do so&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve included a video walkthrough of everything you need to get started:s&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/aeAkLxr5diE&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h2 id=&quot;1-clone-the-repository&quot;&gt;1. Clone the repository&lt;/h2&gt;

&lt;p&gt;Download the exercises: &lt;a href=&quot;https://github.com/turingschool/ruby-exercises&quot;&gt;https://github.com/turingschool/ruby-exercises&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: “the repository” means “a collection of files and folders on Github.com”. “Cloning it” means “copy those files and folders to your computer”.&lt;/p&gt;

&lt;p&gt;To do this, first visit this URL: &lt;a href=&quot;https://github.com/turingschool/ruby-exercises&quot;&gt;https://github.com/turingschool/ruby-exercises&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Clone or download&lt;/code&gt; button:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-05-19-turing_prework_02_03.jpg&quot; alt=&quot;clone repo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The URL you receive will look like one of these two options:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://github.com/turingschool/ruby-exercises.git&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git@github.com:turingschool/ruby-exercises.git&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It doesn’t matter which one you use. To exercise your &lt;em&gt;technical sophistication&lt;/em&gt; muscles, you can read more on &lt;a href=&quot;https://help.github.com/articles/which-remote-url-should-i-use/&quot;&gt;the difference between HTTPS and SSH URLs here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, in your terminal, navigate to where you want these exercises to be downloaded. You probably have a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;turing&lt;/code&gt; directory in your home folder.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: If you’ve not yet watched the video walk-through, I strongly suggest watching it. I used to have a bunch of instructions listed out below, but since writing them out here, I updated them &lt;a href=&quot;https://github.com/turingschool/ruby-exercises&quot;&gt;in this authoritive location&lt;/a&gt;. I almost deleted the rest of this post in favor of the guide there, but I’m leaving it just in case I find out I need some portion of it later.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here’s how to find those instructions:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;Head to the ruby exercises URL: &lt;a href=&quot;https://github.com/turingschool/ruby-exercises&quot;&gt;https://github.com/turingschool/ruby-exercises&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Scroll down the page and follow the instructions.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;When you’re done with setting this up and have your first passing test, jump to the &lt;a href=&quot;#5-learn-the-basics-of-minitest&quot;&gt;what is minitest?&lt;/a&gt; section&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;Here’s the original instructions:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Since I have a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;turing&lt;/code&gt; directory in &lt;em&gt;my&lt;/em&gt; home folder, I would use:&lt;/p&gt;

&lt;div class=&quot;language-zsh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ~/turing/prework
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You might place these files somewhere else. Up to you. Once you’ve &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd&lt;/code&gt;‘ed into the right directory, clone down the repo. We’ll use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git clone&lt;/code&gt; command:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;git clone https://github.com/turingschool/ruby-exercises.git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;or, if you received the SSH url:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;git clone git@github.com:turingschool/ruby-exercises.git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;PS: As a reminder, commands formatted like the above, especially beginning with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$&lt;/code&gt; sign, should be run in your terminal. If you see a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;//&lt;/code&gt; sign, the text that follows it should be treated as a comment. For example:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;go&quot;&gt;// lets `cd` to our home directory:
&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ~
&lt;span class=&quot;go&quot;&gt;
// now lets look at all of our hidden files using the [a]ll flag:
&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;ls&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;2-use-your-terminal-to-explore-what-youve-downloaded&quot;&gt;2. Use your Terminal to explore what you’ve downloaded&lt;/h2&gt;

&lt;p&gt;You should be able to see the cloned directory on your machine. If you run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ls&lt;/code&gt; in the directory you just ran the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git clone&lt;/code&gt; command, you should see an entry for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ruby-exercises&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;now, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd&lt;/code&gt; into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ruby-exercises&lt;/code&gt; directory:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;ruby-exercises
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Lets start with heading into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/data-types/strings/&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;go&quot;&gt;// first, `cd` into the `data-types` directory
&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;data-types
&lt;span class=&quot;go&quot;&gt;
// i usually run `ls` just to see what is in each level of a directory. 
// I&apos;m a curious person.
&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;ls&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;
// now `cd` into the `strings` directory:
&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;strings
&lt;span class=&quot;go&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;When you call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ls&lt;/code&gt; the last time, you should see &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;README.md&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;strings.rb&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It will look a bit like this:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;ls&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;README.md
strings.rb
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If this is what you see, you made it!&lt;/p&gt;

&lt;p&gt;If not, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd&lt;/code&gt; up a level or two, and look around again. (To change directories &lt;em&gt;up&lt;/em&gt;, you can do&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ..
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;3-open-everything-in-atom&quot;&gt;3. Open everything in Atom&lt;/h2&gt;

&lt;p&gt;now we’ll open everything in Atom:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;atom &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Click the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;README&lt;/code&gt; file, and read it.&lt;/p&gt;

&lt;p&gt;If you have problems opening atom, read the &lt;a href=&quot;/turing-backend-prep-troubleshooting-guide#cannot-open-atom-from-the-terminal&quot;&gt;Troubleshooting Errors: Cannot open atom from the terminal&lt;/a&gt; post&lt;/p&gt;

&lt;h2 id=&quot;4-run-the-file-in-your-terminal-resolve-gem-related-error-messages&quot;&gt;4. Run the file in your terminal. Resolve gem-related error messages&lt;/h2&gt;

&lt;p&gt;Run the file in your editor with:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;ruby strings.rb
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You might get an error like this. (I’ve highlighted the relevant pieces of the error. The first highlight shows where in the file we ran into the problem, and it’s line 3 of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;strings.rb&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;The second highlight says “cannot load such file – pry”.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-09-19-turing_prework_02_01.jpg&quot; alt=&quot;pry missing&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now, take a look at line three of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;strings.rb&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-09-19-turing_prework_02_02.jpg&quot; alt=&quot;line 3&quot; /&gt;&lt;/p&gt;

&lt;p&gt;That’s a gem we need.&lt;/p&gt;

&lt;p&gt;If you don’t get this error, great! You already have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; on your machine, and you can skip the next section.&lt;/p&gt;

&lt;h3 id=&quot;what-the-heck-is-a-ruby-gem&quot;&gt;What the heck is a “ruby gem”&lt;/h3&gt;

&lt;p&gt;A “gem” is just a little bundle of code that interacts with Ruby.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/RubyGems&quot;&gt;Here’s a rather verbose description of what gems are.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And, since we need to install the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; gem, we can look it up and see what it does. I googled &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ruby gem pry&lt;/code&gt; and clicked the first result, which brought me to: https://github.com/pry/pry&lt;/p&gt;

&lt;p&gt;Feel free to read the docs, and get a feel for what Pry can do for you.&lt;/p&gt;

&lt;p&gt;Anyway, install the Pry gem with:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;gem &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;pry
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you want to see all of the gems installed on your computer already, you can run:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;go&quot;&gt;gem list
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You can read more about &lt;a href=&quot;https://guides.rubygems.org/rubygems-basics/&quot;&gt;the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem&lt;/code&gt; command here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you get an error like this:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;go&quot;&gt;ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don&apos;t have write permissions into the usr/lib/ruby/gems/pry directory.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I’ve got trouble-shooting instructions &lt;a href=&quot;/turing-backend-prep-troubleshooting-guide#gem-install-pry-failing-with-you-do-not-have-permission&quot;&gt;in the troubleshooting guide&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;5-learn-the-basics-of-minitest&quot;&gt;5. Learn the basics of Minitest&lt;/h2&gt;

&lt;p&gt;See the references to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;minitest&lt;/code&gt; at the top of the file? &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;minitest/autorun&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;minitest/pride&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;These are “modules” of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;minitest&lt;/code&gt; gem.&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;strongly&lt;/em&gt; recommend “pausing” this guide and reading (and re-reading, and write all the code from all the examples in) this &lt;em&gt;excellent&lt;/em&gt; guide: &lt;a href=&quot;https://launchschool.com/blog/assert-yourself-an-introduction-to-minitest&quot;&gt;https://launchschool.com/blog/assert-yourself-an-introduction-to-minitest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ll state that again. Read and study the Minitest guide. It is &lt;em&gt;fantastic&lt;/em&gt; and will set you up for success for the rest of Turing:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://launchschool.com/blog/assert-yourself-an-introduction-to-minitest&quot;&gt;https://launchschool.com/blog/assert-yourself-an-introduction-to-minitest&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Did you read the Launch School post? Great! Then most of what is in this file should look a lot more readable to you.&lt;/p&gt;

&lt;p&gt;As a quick test, answer the following questions:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;What is minitest?&lt;/li&gt;
  &lt;li&gt;what is a Domain-Specific Language (DSL)?&lt;/li&gt;
  &lt;li&gt;What does &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_equal&lt;/code&gt; mean? How many arguments does it expect?&lt;/li&gt;
  &lt;li&gt;Will &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_equal true, &quot;true&quot;&lt;/code&gt; pass?&lt;/li&gt;
  &lt;li&gt;How do you “run” a test file?&lt;/li&gt;
  &lt;li&gt;is a “failing” test a bad thing?&lt;/li&gt;
  &lt;li&gt;does minitest run all the tests in order?&lt;/li&gt;
  &lt;li&gt;Find a list of minitest assertions (google it!). What’s a cool one you found?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Awesome. If you can answer all of those questions, you’ve got your head wrapped around Minitest. Onward!&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;6-run-the-file-again-get-a-bunch-of-sssssssss-printed-out&quot;&gt;6. Run the file again, get a bunch of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SSSSSSSSS&lt;/code&gt; printed out&lt;/h2&gt;

&lt;p&gt;Wahoo! If you see a long string of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SSSSSSSSS&lt;/code&gt;, you’re doing great.&lt;/p&gt;

&lt;p&gt;Here’s what minitest results mean:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;S&lt;/code&gt; means “skip”, and it means we “skipped” the test. (see all the words inside each method, that say “skip”? that’s how we skip that test.)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;E&lt;/code&gt; means “error”. the test couldn’t run for some reason.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;F&lt;/code&gt; means “failure”. the test ran, but didn’t pass.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.&lt;/code&gt; means “success”. The test ran, and passed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;7-make-the-whole-file-pass&quot;&gt;7. Make the whole file pass!&lt;/h2&gt;

&lt;p&gt;So, lets make the first test pass. Just watch the video where I do the first few tests.&lt;/p&gt;

&lt;p&gt;Once you get the hang of it, try pausing the video and keep going on your own. Then unpause the video, compare the results, repeat. (But please do watch the video, at least this little section at &lt;a href=&quot;https://www.youtube.com/watch?v=BKqo2w0W7S0&amp;amp;t=654s&quot;&gt;10:55 on using Pry from inside your tests&lt;/a&gt;)&lt;/p&gt;

&lt;div class=&quot;container&quot;&gt;
&lt;iframe class=&quot;video&quot; src=&quot;https://www.youtube.com/embed/aeAkLxr5diE&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;what-next&quot;&gt;What next?&lt;/h1&gt;

&lt;p&gt;Go ahead and finish this file. When you’re done, do the other test files in that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;data-types&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;Please read the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;README.md&lt;/code&gt; associated with every exercise.&lt;/p&gt;

&lt;p&gt;These exercises (in order) are:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;data-types/strings/strings.rb &lt;span class=&quot;c&quot;&gt;# you just finished this one&lt;/span&gt;
data-types/ints_and_floats.rb &lt;span class=&quot;c&quot;&gt;# do this next&lt;/span&gt;
data-types/collections/arrays.rb &lt;span class=&quot;c&quot;&gt;# then this&lt;/span&gt;
data-types/collections/hashes.rb &lt;span class=&quot;c&quot;&gt;# then this&lt;/span&gt;
data-types/collections/nested-collections.rb  &lt;span class=&quot;c&quot;&gt;# then this&lt;/span&gt;
data-types/advanced_nested_collections/nesting_test.rb &lt;span class=&quot;c&quot;&gt;# Then this. &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-07-20-turing-int-and-float.jpg&quot; alt=&quot;next datatype&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Once you start on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;collections&lt;/code&gt;, go read the associated guide I wrote: &lt;a href=&quot;https://josh.works/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The chapters are a bit out of order. I’ll fix that soon.&lt;/p&gt;

&lt;p&gt;When you’re done, feel free to move to the next chaptter, dealing with objects in Ruby!&lt;/p&gt;

&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index-1&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

</content>
 </entry>
 
 <entry>
   <title>Turing Prep Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be</title>
   <link href="https://josh.works/turing-backend-prep-01-intro"/>
   <updated>2019-05-09T13:00:00+00:00</updated>
   <id>https://josh.works/turing_prework_01_intro</id>
   <content type="html">&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;why-this-rubybackend-software-engineering-prep-series-exists&quot;&gt;Why this “ruby/backend-software-engineering prep series” exists&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This entire series has been a constant work-in-progress. I say that as I offer an explanation, and ask for your patience for the confusing and unclear bits ahead.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The information will be the best fit for someone who’s finished Turing’s &lt;a href=&quot;https://mod0.turing.io/&quot;&gt;Mod 0 program&lt;/a&gt; and the &lt;a href=&quot;https://github.com/turingschool-examples/module_0_capstone&quot;&gt;Mod 0 capstone&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That said, if you get here before finishing (or even starting) the Mod 0 program, you can &lt;em&gt;probably&lt;/em&gt; self-serve your way to readiness for this guide, and the upcoming 8+ chapters, if you’ve got the right mix of available time and eagerness to finish this entire thing.&lt;/p&gt;

&lt;p&gt;As you spend time working through the resources you’ll soon encounter, you will absolutely learn some tips and tricks and useful ideas, perspectives, mental models, that you wouldn’t otherwise have learned at this point in your journey.&lt;/p&gt;

&lt;p&gt;We’ll accomplish these admittedly grand goals by by working on, (and completing) a collection of exercises, written in Ruby, which will require you to exercise quite a few skills to finish &lt;em&gt;even the first exercise&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;These exercises &lt;em&gt;generally&lt;/em&gt; try to build from “very small step, with lots of support along the way” to “much larger steps, much less help, you will absolutely have to dig around more on your own, but this is a ‘happy little accident’.”&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Warning: Footnote tutorial ahead 👉&lt;/strong&gt; Click/tap the little numbers, and the page will “jump” to the bottom, and at the end of the footnote, you can click another button that brings you back to the that same number. Practice it at least once!&lt;/em&gt;&lt;sup id=&quot;fnref:thank-you&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:thank-you&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;There’s many objections or questions that you could raise, right now, as you are reading these words. You’re possibly on your phone&lt;sup id=&quot;fnref:i-would-never&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:i-would-never&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, but I’d ask that you give it a shot, next time you’re sitting at your laptop.&lt;sup id=&quot;fnref:did-you-read-the-footnote&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:did-you-read-the-footnote&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; Read the rest of this article (or at least skim it!) &lt;em&gt;and&lt;/em&gt; get the first ruby exercise completed (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/data-types/strings.rb&lt;/code&gt;), which is the topic of Chapter 2, and &lt;em&gt;I bet you’ll feel proud of yourself in the next ten minutes of fiddling at your terminal.&lt;/em&gt;&lt;sup id=&quot;fnref:now-you-know&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:now-you-know&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Some of you are already sold and are charging ahead, some of you are still hesitant, or don’t take it seriously enough.&lt;sup id=&quot;fnref:cant-stop&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:cant-stop&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;If you spend 10 hours on this material, between now and when Turing starts, you’ll be much improved from your baseline, and if you’re doing Turing you’re already committing &lt;em&gt;a lot&lt;/em&gt;. Time, money, emotional energy, re-arranging your life for a while, &lt;em&gt;certainly&lt;/em&gt; thinking more about your financial situation and how much you can/want to spend on baby-sitting.&lt;/p&gt;

&lt;p&gt;If you think you can spend &lt;em&gt;more&lt;/em&gt; than ten hours on this work (perhaps you’ve stumbled across this resource weeks/months before Turing’s starting!), you’ll be pleased.&lt;/p&gt;

&lt;p&gt;To the more income/expense type persons&lt;sup id=&quot;fnref:thats-me&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:thats-me&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The energy and focus you spend/invest in/on these resources, and working in your own terminal, editor, etc. will, over time, deliver incrementally more learning or less time, stress, and/or anxiety.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;how-much-time-should-i-put-into-this&quot;&gt;How much time should I put into this?&lt;/h2&gt;

&lt;p&gt;This can take as much or as little as you have to put into it. Start with a little, consider upping it to more.&lt;/p&gt;

&lt;p&gt;As little as a few short &lt;em&gt;but focused&lt;/em&gt; sessions spread over a few days could be great. If you can do more than that, and you’ve got weeks? Great! Try to finish this entire prep series, in detail, and watch all the walk-through videos, pausing them all a bunch of times as you go to play with code in your editor. You’ll have a blast!&lt;/p&gt;

&lt;p&gt;However much time you allocate to this, please don’t squish out &lt;em&gt;all&lt;/em&gt; of the stuff that gives life meaning. If you’re able/willing/inclined:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Go for walks&lt;/li&gt;
  &lt;li&gt;talk with friends and family&lt;/li&gt;
  &lt;li&gt;do the grocery shopping or take care of your kids for your partner who will be doing a lot more of it once Turing &lt;em&gt;actually&lt;/em&gt; starts&lt;/li&gt;
  &lt;li&gt;Relax with a book (Maybe one of the books I’m about to recommend!)&lt;/li&gt;
  &lt;li&gt;Do something physical&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m not sure how much time this will all take. Like I said, 10 hours will make a big difference, 20 hours will permanently change your Turing experience. Budget 20 hours ± 5 hrs. You could do this in a long weekend, or a few evenings in a week, but you’ll get the most time if you spread your efforts across at least two weeks, to give the material time to stew and soak in.&lt;/p&gt;

&lt;h2 id=&quot;if-thats-a-reasonable-amount-of-time-where-do-i-get-started&quot;&gt;If that’s a reasonable amount of time, where do I get started?&lt;/h2&gt;

&lt;p&gt;Good question. The answer involves a long digression and tortured analogy on the topics of:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;screwdrivers&lt;/li&gt;
  &lt;li&gt;how to learn hard things&lt;/li&gt;
  &lt;li&gt;why you should “do drills”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yes, drills, like this:&lt;/p&gt;

&lt;iframe src=&quot;https://giphy.com/embed/cOQBUfE46cdKP3lFNt&quot; width=&quot;480&quot; height=&quot;270&quot; frameborder=&quot;0&quot; class=&quot;giphy-embed&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href=&quot;https://giphy.com/gifs/nba-cOQBUfE46cdKP3lFNt&quot;&gt;via GIPHY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the end of this particular post, I have a few objectives for you:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Understand the importance of bringing the right &lt;em&gt;process&lt;/em&gt; to hard problems&lt;/li&gt;
  &lt;li&gt;Decide to read &lt;em&gt;A Mind for Numbers&lt;/em&gt; and &lt;em&gt;Deep Work&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;Understand that spending a few dollars and hours &lt;em&gt;learning how to learn&lt;/em&gt; is a fantastic start to Turing prep, where you’re spending a lot more than a few hours and few dollars to learn a difficult craft.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;the-right-tools-for-the-job&quot;&gt;The right tools for the job&lt;/h2&gt;

&lt;p&gt;If I handed you a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Spax&lt;/code&gt; screw, and told you I’d pay you $1000 to screw it into a piece of wood, and then handed you a Phillips screw driver, what would you do?&lt;/p&gt;

&lt;p&gt;Spax screws look like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/spax_small.jpg&quot; alt=&quot;spax&quot; title=&quot;A spax screw. Notice the shape of the head.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A spax screw. Notice the shape of the head.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One would use a Spax bit to drive the screw:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/spax_head.jpeg&quot; alt=&quot;spax bit&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A philips screw bit looks like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/phillips-head-power-bits-196.jpg&quot; alt=&quot;philips bit&quot; title=&quot;Notice the shape of the head. This is shaped like a +, the spax is shaped like a *&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Notice the shape of the head. This is shaped like a +, the spax is shaped like a *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Philips bits are for driving philips screws, which look like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Flat-Head-Thread-Forming-Screws-Type-F.jpg&quot; alt=&quot;philips screw&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, can you drive a Spax screw with a Philips bit?&lt;/p&gt;

&lt;p&gt;Not easily. 
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;You could try really hard, use great effort, and end up damaging both the screw driver bit &lt;em&gt;and&lt;/em&gt; the screw, and probably barely get a single screw in. I bet, though, that you could get a single screw partially embedded in the wood.&lt;/p&gt;

&lt;p&gt;What if I were to pay you $1000 &lt;em&gt;per screw&lt;/em&gt; you could drive into the wood?&lt;/p&gt;

&lt;p&gt;Now you can’t rely on just herculean effort, sleepless nights, and tenacity.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;you have to have the Spax bit to drive a Spax screw.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For $1000 per screw, you could afford to buy the correct bit, and it would let you &lt;em&gt;effortlessly&lt;/em&gt; drive the screws.&lt;/p&gt;

&lt;p&gt;I’d argue it would be &lt;em&gt;irresponsible to not get the right tools&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The analogy should be clear - you’re not being asked to drive screws, you’re being asked to learn challenging and technical skills. Most of us didn’t learn how to learn hard things in school, we figured out how to game the system and squeak by.&lt;/p&gt;

&lt;p&gt;Or, we didn’t learn to game the system and we didn’t squeak by. Did anyone else pick up some failing grades in high school and college. No? Just me? OK.&lt;/p&gt;

&lt;p&gt;You need to learn software development, and you’re probably going to put a lot of time and money into this goal.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;It could be considered irresponsible to not acquire the right kinds of tools for learning technical topics&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Obviously, you need the right physical tools; a laptop, functioning screen, etc. But you need the right knowledge. You need to &lt;em&gt;know how to learn hard things&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-right-mental-tools-for-the-job-tactics-and-mindset&quot;&gt;The right &lt;em&gt;mental&lt;/em&gt; tools for the job: Tactics and Mindset&lt;/h2&gt;

&lt;p&gt;To learn hard things, you’ll need:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Specific tactics&lt;/li&gt;
  &lt;li&gt;The correct mindset&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;how-to-get-the-right-tactics&quot;&gt;How to get the right tactics&lt;/h3&gt;

&lt;p&gt;To obtain the right tactics, and some of the mindset, I strongly recommend buying or renting a copy of &lt;a href=&quot;https://www.goodreads.com/book/show/18693655-a-mind-for-numbers&quot;&gt;A Mind for Numbers: How to Excel at Math and Science (Even If You Flunked Algebra)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While you’re waiting for Amazon to deliver the book, or to pick it up from the library, read these two summaries:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://fastertomaster.com/a-mind-for-numbers-barbara-oakley/&quot;&gt;Faster to Master: Book Summary: “A Mind For Numbers”, Barbara Oakley&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.karlbooklover.com/a-mind-for-numbers-summary/&quot;&gt;Karl Booklover: A mind for numbers — Summary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;A Mind for Numbers&lt;/em&gt; talks about how to learn hard things. The author talks about mental models, “chunking” information to free up working memory, practice, drills, repetition, staying the right amount out of your comfort zone, doing hard things, avoiding distraction, procrastination, etc.&lt;/p&gt;

&lt;p&gt;Everything in that book is relevant to the rest of your career in software. Please read the book.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I know most of you will not read the book, despite my strong suggestion and humble request that you do so. That’s because &lt;em&gt;you don’t yet trust me&lt;/em&gt;. It’s OK that you don’t trust me, I’m just a random person on the internet, but I humbly ask that you &lt;em&gt;start trying to trust me&lt;/em&gt;.&lt;sup id=&quot;fnref:trust-me&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:trust-me&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;If you’re not going to read the book, you don’t get to question my methodology for the rest of this guide. Accept the following truth:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;To learn hard things, you need to build mental models of the hard thing, and to build this mental model,   you need practice and repetition.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Any individual or team that performs at a high level is on board with the value of “drilling” important things. Fire drills, drills for sports teams, drilling to practice something you’ll be tested on - all of these are ways to make sure not only that you know how to do the right task, but &lt;em&gt;you can’t get that task wrong&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So, working through these drills will move you in the same direction. You’ll not just build a single new class from scratch, but you’ll eventually do it so many times you can’t help but &lt;em&gt;get it right every time&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This will make the rest of your time at Turing go much, much better. It could help save you from repeating a module.&lt;/p&gt;

&lt;p&gt;If you &lt;em&gt;would&lt;/em&gt; repeat a module, but after doing these drills you don’t, that’s six weeks saved, plus a few thousand dollars, and the knowledge will serve you for the rest of your career as a developer.&lt;/p&gt;

&lt;p&gt;But don’t take my word for it. Here’s what other Turing students have said, after working through this guide:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I definitely feel over prepared in some aspects, but I’m trying to use it to help everyone get to the same levels of understanding&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;It has been amazing and I feel like I learned so much from mythical_creatures…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The mythical_creatures felt like it like brought everything together and how it works (on a kindergarten level) but made it all feel…real-ish in a way, and that was huge.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;i swear to god, knowing what pry was and having done mythical creatures helped me so much here!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;At the end of week 2 I’m feeling way better than I anticipated i would jumping into all of this and I know it’s in large part because of your encouragement for folks to work through the ruby exercises and the videos to support being able to do those in the first place.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here’s what a student said, who &lt;em&gt;didn’t&lt;/em&gt; follow this guide:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I wish I’d done mythical creatures and more before. I really struggled in mod 1&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;how-to-get-the-right-mindset&quot;&gt;How to get the Right Mindset&lt;/h3&gt;

&lt;p&gt;Please read &lt;a href=&quot;https://www.goodreads.com/book/show/25744928-deep-work&quot;&gt;Deep Work: Rules for Focused Success in a Distracted World&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Deep Work&lt;/em&gt; pairs well with &lt;em&gt;A Mind for Numbers&lt;/em&gt; but will help round out some of the “why” of a program like Turing’s. It was part of the reason that I went to Turing myself, and I wrote &lt;a href=&quot;https://josh.works/i-quit&quot;&gt;Quitting the shallow for the deep&lt;/a&gt; about changes I made to my life after reading &lt;em&gt;Deep Work&lt;/em&gt; and preparing for Turing.&lt;/p&gt;

&lt;p&gt;I wrote that in October 2016. My how the time flies.&lt;/p&gt;

&lt;p&gt;These two books represent a modest investment of time and money. You’re going to spend hundreds of hours over the next few months learning programming. $25 of books (or free, if you use a library) plus a few hours of reading may significantly impact the effectiveness of every one of those hours you’re already planning on spending focused on programming.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It could be considered irresponsible to not acquire the right kinds of tools for learning technical topics&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;how-you-ought-to-approach-drills&quot;&gt;How you ought to approach drills&lt;/h2&gt;

&lt;p&gt;Both books talk about drills, and focused practice. We’re familiar with the idea of drills in other domains (fire drills, sports drills) but it’s rare to see the same kind of ideas ported over to “academic” pursuits.&lt;/p&gt;

&lt;p&gt;Well, here we are. If it’s good enough for saving lives when the building is burning down, and for every professional athlete that’s ever lived, it’s good enough for us.&lt;/p&gt;

&lt;p&gt;We’re doing drills. &lt;em&gt;Programming&lt;/em&gt; drills.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Why would we do &lt;em&gt;programming&lt;/em&gt; drills, Josh? Isn’t it just good enough to get some solution once, then move on to another problem?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There’s lots of reasons for doing drills. If you want to get into the nitty gritty, know that they line up closely with the principles of &lt;a href=&quot;https://jamesclear.com/deliberate-practice-theory&quot;&gt;Deliberate Practice&lt;/a&gt; which is “how anyone can learn anything”.&lt;/p&gt;

&lt;p&gt;But for our purposes, here’s why you should do drills:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Relatively small and focused. You can knock out most of these in just a few minutes.&lt;/li&gt;
  &lt;li&gt;Attack the same principle from many directions. You’ll do lots of string manipulation, and you’ll create classes and object “factories” a bunch of different times. They’re similar enough to each other that the knowledge will reinforce itself, but different enough that you have to think hard.&lt;/li&gt;
  &lt;li&gt;Force you to reveal and examine your own assumptions about how &lt;em&gt;your&lt;/em&gt; code works. You’ll be writing a lot of code. You’ll have to understand it pretty well by the time you’re done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s more reasons, but we’ll leave it at this.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;You should bring tools suited to the task at hand. If you need to drive Spax screws, bring a Spax screw bit.&lt;/p&gt;

&lt;p&gt;Read&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/18693655-a-mind-for-numbers&quot;&gt;Mind for Numbers: How to Excel at Math and Science (Even If You Flunked Algebra)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25744928-deep-work&quot;&gt;Deep Work: Rules for Focused Success in a Distracted World&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re not going to read the books, at least read these summaries:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://fastertomaster.com/a-mind-for-numbers-barbara-oakley/&quot;&gt;Faster to Master: Book Summary: “A Mind For Numbers”, Barbara Oakley&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.karlbooklover.com/a-mind-for-numbers-summary/&quot;&gt;Karl Booklover: A mind for numbers — Summary&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.njlifehacks.com/deep-work-cal-newport-summary/&quot;&gt;“Deep Work: Rules for Focused Success in a Distracted World” by Cal Newport (Book Summary)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.samuelthomasdavies.com/book-summaries/business/deep-work/&quot;&gt;Deep Work by Cal Newport (book summary)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Be swayed by other students who have worked through this guide and have felt very well prepared by it. They’ve saved themselves time, stress, sleepless nights, perhaps money, and much more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;what’s next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Well, just click on over to chapter 2:&lt;/p&gt;

&lt;hr /&gt;
&lt;h5 id=&quot;preparing-for-turing-series-index-1&quot;&gt;Preparing for Turing Series Index&lt;/h5&gt;

&lt;p&gt;What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program&lt;/p&gt;

&lt;p&gt;It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.&lt;/p&gt;

&lt;p&gt;I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-01-intro&quot;&gt;Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be&lt;/a&gt;  &lt;strong&gt;&lt;em&gt;you are here&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-02-first-tests-and-making-them-pass&quot;&gt;Chapter 2: Your first passing tests!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-mythical-creatures&quot;&gt;Chapter 3: Objects in Ruby and Mythical Creatures: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unicorn.rb&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dragon.rb&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hobbit.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-arrays-hashes-nested-collections&quot;&gt;Chapter 4: Arrays, Hashes, and Nested Collections&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-wizard&quot;&gt;Chapter 5: Refactoring common errors - in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wizard.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-ogre&quot;&gt;Chapter 6: Refactoring practice - Getting rid of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessors&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ogre.rb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-medusa-start&quot;&gt;Chapter 7: Building out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/mythical-creature-refactor-medusa&quot;&gt;Chapter 8: Refactoring the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;medusa&lt;/code&gt; mythical creature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/turing-backend-prep-troubleshooting-guide&quot;&gt;Appendix: Troubleshooting Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h3&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:thank-you&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Thank you! I made a very earnest request, you clicked the footnote, and now you’re reading it. &lt;em&gt;OR&lt;/em&gt; you’re reading this footnote because you read one of the &lt;em&gt;later&lt;/em&gt; footnotes, and noticed this one near it. &lt;em&gt;That counts too!&lt;/em&gt; &lt;a href=&quot;#fnref:thank-you&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:i-would-never&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;We must all admit that we all are on our phones in the bathrooms. Somewhere between “50% of the time” and “100%”. No shame. High-quality reading time, sometimes! &lt;a href=&quot;#fnref:i-would-never&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:did-you-read-the-footnote&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Did you read that previous footnote? I sometimes annotate my writing with footnotes. They’re not always worth reading, but it’s worth recognizing them. &lt;a href=&quot;#fnref:did-you-read-the-footnote&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:now-you-know&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I bet you read &lt;em&gt;one&lt;/em&gt; of these footnotes. Got it! Now you know how they work! Click the number in the text above, and the page “jumps” down to this line of text. Click the funky arrow at the end of the footnote to return to where you started. Try it! Click the arrow: &lt;a href=&quot;#fnref:now-you-know&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:cant-stop&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;And some of you take it so seriously you read &lt;em&gt;every&lt;/em&gt; footnote. I know you exist, because I, the author, compulsively read every footnote I encounter in nearly any piece of text.&lt;/p&gt;

      &lt;p&gt;I know how damn useful they can be, but &lt;em&gt;also&lt;/em&gt; how useless they can be, and I wish an author would just be consistent. Don’t drop mind-bending parenthetical footnotes that I have to flip pages/click things to read, &lt;em&gt;and&lt;/em&gt; a note that says “ibid”! I want the former, not the latter.&lt;/p&gt;

      &lt;p&gt;Just know, if this describes you, I’ve got you, and the UI for jumping between footnotes and text in this document &lt;em&gt;isn’t the worst thing that has ever existed&lt;/em&gt;. &lt;a href=&quot;#fnref:cant-stop&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:thats-me&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I absolutely bring a a “strong lens.” to the world, but I’m not talking about bias, I’m talking about &lt;em&gt;webcomics&lt;/em&gt;. Don’t know what they are? Oh boy, you’re in for a treat! &lt;a href=&quot;#fnref:thats-me&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:trust-me&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;It’s not unreasonable to think:&lt;/p&gt;

      &lt;blockquote&gt;
        &lt;p&gt;Josh, you’re doing a lot of talking and making some bold claims. Why should I devote my scarce time and resources to doing what you suggest instead of all the other things I could be doing?&lt;/p&gt;
      &lt;/blockquote&gt;

      &lt;p&gt;Great question. Here’s my answer:&lt;/p&gt;

      &lt;p&gt;I’ve been helping Turing students prep for the backend program since I graduated Turing in August of 2017. I’ve worked with dozens-to-hundreds of Turing students.
For the last few months, I’ve had phone conversations with every single student who’s had to repeat mod 1 of the backend program. Literally. 30 minutes, at least, during intermission week before they started mod 1 the second time, and once again, week six, after they found out they were moving on to mod 2. (so far, all have graduated the mod their second time around.) &lt;a href=&quot;#fnref:trust-me&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>2018 In Review &amp; Thoughts on 2019</title>
   <link href="https://josh.works/2018-review"/>
   <updated>2019-05-05T13:00:00+00:00</updated>
   <id>https://josh.works/2018_review</id>
   <content type="html">&lt;p&gt;I find a lot of value in other people’s reviews of their years. It’s the time of year to be contemplative and reflective on the last 12 months, so here we are.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note to reader: I’m posting this in May, 2019. I wrote it in late December, 2018, didn’t get around to finishing it up and publishing until… today. I actually like this phenomena, as I can now see goals I’ve had for 2019, and now that we’re almost half-way through 2019, I can see what I’ve accomplished. I’ll in-line a few other comments where appropriate&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Previous reviews: &lt;a href=&quot;https://josh.works/2019-review&quot;&gt;2019&lt;/a&gt;, &lt;a href=&quot;/2018-review&quot;&gt;2018&lt;/a&gt;, &lt;a href=&quot;/2017-review&quot;&gt;2017&lt;/a&gt;, 
&lt;a href=&quot;/2016-most-dangerous-books&quot;&gt;2016&lt;/a&gt;, &lt;a href=&quot;/2015_the_year_i_didnt_think_much&quot;&gt;2015&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I wish I had 2012-2014 reviews, but never wrote them. Therefore, I will write one for 2018 (and future years, most likely).&lt;/p&gt;

&lt;h2 id=&quot;annual-review-process&quot;&gt;Annual Review Process&lt;/h2&gt;

&lt;p&gt;Hacker News surfaced &lt;a href=&quot;https://www.google.com/search?client=firefox-b-1-d&amp;amp;q=tim+ferris+annual+review&quot;&gt;this post&lt;/a&gt; a few days ago. I like the format:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;Look through your calendar, week by week, over the last year&lt;/li&gt;
    &lt;li&gt;Find the things that you found most valuable, and most disliked&lt;/li&gt;
    &lt;li&gt;Figure out how to do more of the things you found valuable/enjoyable/meaningful, and less of the things you disliked or found least valuable.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, this in mind, my last year falls into a few broad categories:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Relationships/friendships/community&lt;/li&gt;
  &lt;li&gt;Rock climbing&lt;/li&gt;
  &lt;li&gt;Software development&lt;/li&gt;
  &lt;li&gt;Reading&lt;/li&gt;
  &lt;li&gt;Travel (which dovetails into the first two categories)&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;travel&quot;&gt;Travel&lt;/h2&gt;

&lt;p&gt;Travel is a big category. I spent ~146 nights sleeping somewhere besides our apartment. Usually (109 nights) I was with Kristi somewhere, and at least fifteen of these nights were “just” dog sitting together around Denver.&lt;/p&gt;

&lt;p&gt;Six weeks of this time was spent somewhere outside of the USA, and the rest of that time was domestic travel.&lt;/p&gt;

&lt;p&gt;The trips ranged from over three-and-a-half weeks long, to short over-nights.&lt;/p&gt;

&lt;p&gt;This is the first time I counted up all the days of travel. I’m floored. This is an insane amount of privilege and opportunity. It’s also exhausting.&lt;/p&gt;

&lt;p&gt;The travel was almost exclusively a mix of time with friends and family, and rock climbing.&lt;/p&gt;

&lt;p&gt;For example, Kristi and I spent ten days at my parent’s house for Thanksgiving, and another ten days at her parents house for Christmas. A few weeks visiting family in the spring. About 35 of these travel days were on dedicated climbing trips.&lt;/p&gt;

&lt;p&gt;I’m writing this on a plane, appropriately enough. I want to travel substantially less in 2019 than I have in 2018, with a higher percentage of that travel being oriented towards climbing trips.&lt;/p&gt;

&lt;h2 id=&quot;relationshipsfriendshipscommunity&quot;&gt;Relationships/friendships/community&lt;/h2&gt;

&lt;p&gt;One of the most important things to Kristi and I are our families and friendships. We’ve invested in these relationships heavily over the last year, and in each other.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Investing time in helping others is similar to investing 💰 in startups:&lt;br /&gt;&lt;br /&gt;- Usually the ROI is negligible or nothing.&lt;br /&gt;- Sometimes the ROI is decent.&lt;br /&gt;- Once in a while the ROI is absolutely phenomenal.&lt;br /&gt;&lt;br /&gt;Like angel investing, being helpful has limited downside and unlimited upside.&lt;/p&gt;&amp;mdash; Leo Polovets (@lpolovets) &lt;a href=&quot;https://twitter.com/lpolovets/status/1078787517279756289?ref_src=twsrc%5Etfw&quot;&gt;December 28, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;The other domain I “invest” in is burgeoning software developers as they are getting established in the software development industry. These are Turing students, and not-Turing students. It’s rewarding, as, despite how low the formal barriers to entry are for the industry, it’s still hard to navigate from “not a developer” to “gainfully employed software developer”.&lt;/p&gt;

&lt;p&gt;Investing in others in this domain has been a theme for a while, and I’d like to keep it going. I’m not so motivated by investing 💰 in things in general, but investing in people is indeed one of the most interesting uses of time.&lt;/p&gt;

&lt;p&gt;This “investing in people” is interesting because if I can help someone navigate that transition, though, the benefits are significant. It’s pleasant getting treated well, and not risking physical or emotional health in a job. I enjoy discussing job hunting, being effective - and demonstrating that effectiveness - in a job, and salary negotiation. These topics are relevant to many my peers, so I enjoy trying to be useful to others in that way.&lt;/p&gt;

&lt;p&gt;Kristi and I changed churches this year, as well. It was a weighty decision, and one we made slowly and carefully, but ultimately was the right decision. Our new church home is fantastic, and we’re glad we made the change.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note from mid-2019: Kristi and I continue to be strong advocates of therapy and counseling. Our marriage is important to us, and money spent on this domain continues to be some of the best money we’ve ever spent. I won’t say “everyone should go to counseling!”, because that is an overly broad statement, but it’s only a little overly-broad. If one has a knee-jerk reaction to the idea of counseling, consider how you think of professional athletes paying someone for their coaching services. It’s not only not-strange, it would be irresponsible for that athlete to not engage in that coaches’ services. You can pay a “coach” to help you improve your significant relationships in your life. It’s money well spent. &lt;a href=&quot;https://josh.works/about/#theology&quot;&gt;More thoughts on this topic&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;climbing&quot;&gt;Climbing&lt;/h2&gt;

&lt;p&gt;I’ve continued to improve as a climber. It’s slow work, and I don’t begrudge the pace of improving, but I do have a constant worry in the back of my mind that I could be training more effectively, or I have a giant hole in my knowledge about climbing, and it’s crippling me &lt;em&gt;and I don’t even know it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’ve not sent more than a handful of 5.13s, but I have come &lt;em&gt;very&lt;/em&gt; close (falling-off-last-move-close) on five or six. I am aware that there’s a gulf between “almost sending” and “sending”, but I was able to quickly piece together and give valid send attempts on many hard climbs this year.&lt;/p&gt;

&lt;p&gt;I have been targeting the 12+ grade (12c, 12d) and did quite a few one-day sends of climbs at this grade. I’ve sent routes I’m pleased with in Rifle, Shelf Road, various European locations, and more. I have not tried many 5.13s, but I think I ought to be trying more.&lt;/p&gt;

&lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned=&quot;&quot; data-instgrm-permalink=&quot;https://www.instagram.com/p/Br9CqLABq4S/?utm_source=ig_embed&amp;amp;utm_medium=loading&quot; data-instgrm-version=&quot;12&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:16px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/Br9CqLABq4S/?utm_source=ig_embed&amp;amp;utm_medium=loading&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&quot; target=&quot;_blank&quot;&gt; &lt;div style=&quot; display: flex; flex-direction: row; align-items: center;&quot;&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 19% 0;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;display:block; height:50px; margin:0 auto 12px; width:50px;&quot;&gt;&lt;svg width=&quot;50px&quot; height=&quot;50px&quot; viewBox=&quot;0 0 60 60&quot; version=&quot;1.1&quot; xmlns=&quot;https://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;https://www.w3.org/1999/xlink&quot;&gt;&lt;g stroke=&quot;none&quot; stroke-width=&quot;1&quot; fill=&quot;none&quot; fill-rule=&quot;evenodd&quot;&gt;&lt;g transform=&quot;translate(-511.000000, -20.000000)&quot; fill=&quot;#000000&quot;&gt;&lt;g&gt;&lt;path d=&quot;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&quot;padding-top: 8px;&quot;&gt; &lt;div style=&quot; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&quot;&gt; View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 12.5% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&quot;&gt;&lt;div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 8px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: auto;&quot;&gt; &lt;div style=&quot; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt; &lt;p style=&quot; margin:8px 0 0 0; padding:0 4px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/Br9CqLABq4S/?utm_source=ig_embed&amp;amp;utm_medium=loading&quot; style=&quot; color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;&quot; target=&quot;_blank&quot;&gt;I don’t think that there is a superior way to get better at bouldering than trying and climbing really hard boulders in a variety of styles, while engaging in a minimal amount of supplemental physical training. I struggle to respond when people ask for training advice, but don’t want to hear that answer. If an individual likes climbing and someone suggests that the way forward is to mostly climb, you’d think that person would be excited, not resistant. The only thing I can think of that would cause that type of reaction is that the person is not satisfied with the rate of their improvement and is hoping that there is something else they can do to get better faster...Maybe there is? Maybe it’s not worth rushing? Maybe not rushing it is actually the way to speed it up? Maybe it’s more important how you do a thing than what the thing is exactly? I don’t really know. What I do know, is that I f#@%ing love to rock climb. 🤷‍♂️ I’d like to fall just a tiny bit less though. I think. #trying 🔜🇨🇭&lt;/a&gt;&lt;/p&gt; &lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;A post shared by &lt;a href=&quot;https://www.instagram.com/captainwangles/?utm_source=ig_embed&amp;amp;utm_medium=loading&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px;&quot; target=&quot;_blank&quot;&gt; Will Anglin&lt;/a&gt; (@captainwangles) on &lt;time style=&quot; font-family:Arial,sans-serif; font-size:14px; line-height:17px;&quot; datetime=&quot;2018-12-29T02:03:06+00:00&quot;&gt;Dec 28, 2018 at 6:03pm PST&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//www.instagram.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;&lt;em&gt;Note from mid-2019: I’ve been working with coaches this year to be strategic in how I improve my climbing. I’m working at getting stronger, duh, but also being a bit smarter when climbing, too. Early results are promising, more to come soon.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;software-development&quot;&gt;Software Development&lt;/h2&gt;

&lt;p&gt;This particular item has been a long time coming. I’m no longer a freshly-minted, wet-behind-the-ears software developer. I’ve got a history of looking at problems and working towards solutions, then implementing those solutions.&lt;/p&gt;

&lt;p&gt;I’ve paid off technical debt, built new features, explored wildly unfamiliar pieces of technology and infrastructure, and taken production down less than once (but more than zero times. It was technically a delay in background job processing in the EU region. (&lt;a href=&quot;/add_uniqueness_constraint_on_column_with_existing_duplicates&quot;&gt;Don’t leave an indexed column without an index at any point in the migration, kids!&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;I feel comfortable and effective in my role, even as I continue to learn many, many new things.&lt;/p&gt;

&lt;p&gt;For 2019, I’ve got a few talks scheduled at local meetups, and some other projects in the works. I spend great time and effort on this particular component of my life, but I am generally at peace, and don’t feel particular anxiety towards it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note from mid-2019: I gave two talks in the first half of 2019. &lt;a href=&quot;/lessons-learned-from-giving-technical-talks&quot;&gt;It was a quite educational process&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;reading&quot;&gt;Reading&lt;/h2&gt;

&lt;p&gt;I read 81 books last year. &lt;a href=&quot;/recommended-books-from-2018&quot;&gt;Here’s the list&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;They were a mix of fiction and non-fiction, and as usual, delivered great value to me. It could be a bit excessive, the number that I’ve read, but I don’t think it’s detracted from other, more important uses of my time.&lt;/p&gt;

&lt;h2 id=&quot;spanish&quot;&gt;Spanish&lt;/h2&gt;

&lt;p&gt;I spent about two months pushing hard into furthering my Spanish. A few weeks in Spain was fantastic motivation and practice. But, as usual, when I got back state-side, the motivation for furthering my knowledge waned. Thanks to &lt;a href=&quot;/anki-spaced-repetition-system&quot;&gt;Anki&lt;/a&gt;, I’ve kept my head-knowledge, but it’s practice &lt;em&gt;speaking&lt;/em&gt; that is the most effective.&lt;/p&gt;

&lt;p&gt;I’m generally disappointed with where my language learning efforts stand.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note from mid-2019: so far this year I’ve spent another two weeks or so in Spanish-speaking countries. I very much want to attain conversational fluency, and there will be much more to come on this topic soon. This note was added while in Quito, Ecuador. The motivation is high, which is temporary, I know.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;side-projects&quot;&gt;Side Projects&lt;/h2&gt;

&lt;p&gt;I started 0 side-projects this year. It was actually a bit refreshing, as in the past, side-projects would lead to me feeling guilty about not pushing them along or doing more. So, formally &lt;em&gt;not&lt;/em&gt; having side-projects (besides learning Spanish) is restful.&lt;/p&gt;

&lt;p&gt;I’m content with this.&lt;/p&gt;

&lt;h2 id=&quot;writing&quot;&gt;Writing&lt;/h2&gt;

&lt;p&gt;This thing I’m doing here has been quite valuable to me. Technical and non-technical posts deliver value to me, and are easy to link to and share for others.&lt;/p&gt;

&lt;p&gt;I never regret writing something and publishing it, and I’d like to find more of a groove for this going forward.&lt;/p&gt;

&lt;h1 id=&quot;lessons-learned&quot;&gt;Lessons learned&lt;/h1&gt;

&lt;p&gt;Climbing is good for my soul.&lt;/p&gt;

&lt;p&gt;I’m married to an incredible woman.&lt;/p&gt;

&lt;p&gt;The most valuable things take sustained, focused work over non-trivial time horizons.&lt;/p&gt;

&lt;p&gt;In important domains, get professional insights. Read books, and if the advice/next steps are particularly difficult to implement, pay someone for help.&lt;/p&gt;

&lt;p&gt;I will continue to invest in 1:1 time with experts in domains like: programming &amp;amp; software development, marriage &amp;amp; relationships, climbing and other forms of physical training, etc.&lt;/p&gt;

&lt;p&gt;That’s it for 2018. I look forward to the rest of 2019.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Troubleshooting Chinese Character Sets in MySQL</title>
   <link href="https://josh.works/troubleshooting-chinese-character-sets-in-mysql"/>
   <updated>2019-04-21T13:00:00+00:00</updated>
   <id>https://josh.works/chinese_charsets_in_mysql</id>
   <content type="html">&lt;p&gt;A while back, I picked up a bug where when a customer tried to save certain kinds of data using Chinese characters, we were replacing the Chinese characters like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;平仮名&lt;/code&gt; with a series of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;?&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This will be a quick dive through how I figured out what the problem was, and then validated said problem, and then what the actual fix is.&lt;/p&gt;

&lt;p&gt;This isn’t just a story about character encoding, though. It’s a story about debugging. Debugging skills are valuable, and just like any other skill, they can be sharpened. I have built some competence in this domain, and I wanted to record some of the process, in the hopes that it might help others.&lt;/p&gt;

&lt;p&gt;I perceive good debugging to go hand-in-hand with asking good questions. &lt;a href=&quot;/better-questions&quot;&gt;I wrote &lt;em&gt;Asking experts, and gaining more than just answers&lt;/em&gt;&lt;/a&gt; about how asking good questions is &lt;em&gt;hard&lt;/em&gt;, but done well makes it easy for someone else to help you, and leads to deeper understanding of the space.&lt;/p&gt;

&lt;p&gt;Mark Dalrymple &lt;a href=&quot;https://www.bignerdranch.com/blog/thoughts-on-debugging-part-1/&quot;&gt;wrote &lt;em&gt;Thoughts on Debugging, Part 1&lt;/em&gt;&lt;/a&gt; and said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Debugging, to me, is just a skill. It’s an analytical skill, but fundamentally it is a skill that can be learned and developed through practice: you identify problems, analyze the system to figure out what is causing that problem, and then figure out the changes necessary to correct the problem.&lt;/p&gt;

  &lt;p&gt;Finding the cause leads to the solution. The fix might not be practical from a business perspective. If fixing this bug requires overhauling the entire app, it might make better sense to leave it than to pay what it would take to fix.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good debugging is also a particularly useful skill a developer could bring to their job, &lt;em&gt;and you don’t have to be an experienced developer to be good at debugging&lt;/em&gt;. You could argue good debugging is based more on attitude than technical know-how, so if you’re just getting your start in the software development industry, making sure you’re good at debugging things &lt;em&gt;and then telling potential employers this&lt;/em&gt; could be to your advantage.&lt;/p&gt;

&lt;p&gt;Here’s some more thoughts on this, from other developers (quoted anonymously from the DenverDevs Slack channel):&lt;/p&gt;

&lt;p&gt;For what it’s worth, I had most of this blog post written before even seeing these quotes.&lt;/p&gt;

&lt;p&gt;dev_1:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;There’s the tiresome old joke about “I’m not better at computers/coding/etc. than you, I’m just better at google!” Ha. So funny.&lt;/p&gt;

  &lt;p&gt;But a truly under-appreciated skillset that I think doesn’t get its fair share of mention from experts/teachers/celebrity-bloggers or attention by some developers is &lt;em&gt;debugging&lt;/em&gt;.&lt;/p&gt;

  &lt;p&gt;There’s often so much mental headspace put into the idea of writing code, good code, functional code, that “what do I do when I don’t write working code” is rarely addressed.&lt;/p&gt;

  &lt;p&gt;Even well seasoned (yum) devs are constantly surprised by features of browser devtools, that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;console.trace()&lt;/code&gt; exists alongside &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;console.log()&lt;/code&gt;, and more.&lt;/p&gt;

  &lt;p&gt;I think it’s often seen as a side effect of what we do so much that we learn the tools and techniques as we need them instead of as a crucial skill.&lt;/p&gt;

  &lt;p&gt;I think making mistakes in your code and figuring out why the error/mistake is occurring is a great way to further comprehension of a language, don’t get me wrong. But so many people are never told where to look first when they don’t know &lt;em&gt;why&lt;/em&gt; or &lt;em&gt;how&lt;/em&gt; an error is occurring. They just feel like they’re going to a doctor and saying “it hurts” they don’t know where, they don’t know how, just, ouch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;!--more--&gt;

&lt;p&gt;dev_2:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I think also knowing where in a fullstack application, an error actually occurred is a super surprising and frankly awesome skill to see from someone more junior.&lt;/p&gt;

  &lt;p&gt;So being able to jump in, verify if a network request is showing you something funky, understanding what errors from different layers of the application might look at (depending on the error handling written at each level).&lt;/p&gt;

  &lt;p&gt;That is SUCH. A. GREAT. SKILL. Also a skill that will help you waste less and less time fumbling through errors as you develop.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Onward!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note to the reader: this rest of this post is born out of notes I was making as I worked on this bug. I often create a document of notes based on the current Jira ticket I’m working on. Obviously that document isn’t fit for public consumption, so the following is a lightly editorialized version of this document, with modified screenshots, logs, etc.&lt;/em&gt;&lt;/p&gt;

&lt;h1 id=&quot;reproducing-the-bug&quot;&gt;Reproducing the bug&lt;/h1&gt;

&lt;p&gt;Not all bugs can be reproduced. That makes them particularly challenging. But if a bug cannot be reproduced, that’s a bunch of useful signal in itself.&lt;/p&gt;

&lt;p&gt;So, you need to determine if this bug can be replicated.&lt;/p&gt;

&lt;p&gt;This particular bug happened to be very easily to replicate:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-01.png&quot; alt=&quot;setup&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The results, after creating the campaign:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-02.png&quot; alt=&quot;question marks&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;reproduce-on-localhost&quot;&gt;Reproduce on localhost?&lt;/h3&gt;

&lt;p&gt;It’s one thing to find a bug happening on production - if one can then replicate it locally, that helps a &lt;em&gt;lot&lt;/em&gt;. It’s easier to manipulate/examine state when running the app on your own machine, so now that I had this replicated “in the wild”, I re-did the same process on locally.&lt;/p&gt;

&lt;p&gt;The encoding problem showed up just the same on my local machine.&lt;/p&gt;

&lt;p&gt;So, now to see when and where we’re losing that character encoding.&lt;/p&gt;

&lt;h1 id=&quot;where-is-the-correct-encoding-being-strippedbrokenlostmisplaced&quot;&gt;Where is the correct encoding being stripped/broken/lost/’misplaced’?&lt;/h1&gt;

&lt;p&gt;When building the campaign, can keep an eye on the network tab, and I see a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POST&lt;/code&gt; request containing everything correctly encoded. (some params removed for readability):&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;{
   &quot;method&quot;:&quot;POST&quot;,
   &quot;path&quot;:&quot;/account/usb_campaigns/79&quot;,
   &quot;format&quot;:&quot;json&quot;,
   &quot;controller&quot;:&quot;account/usb_campaigns&quot;,
   &quot;action&quot;:&quot;update&quot;,
   &quot;status&quot;:200,
   &quot;utf8&quot;:&quot;\u2713&quot;,
   &quot;usb_campaign&quot;:{
     ----------------------------------------------------------------
    |  &quot;title&quot;:&quot;these are lost \u4e16\u754c &amp;lt; those were lost&quot;,       |
    | # these characters following the `\u` encoded Chinese characters|
     -----------------------------------------------------------------
      &quot;file_details_attributes&quot;:{
         &quot;0&quot;:{
            &quot;id&quot;:&quot;7&quot;,
            &quot;nonce&quot;:&quot;294033000&quot;,
            &quot;_destroy&quot;:&quot;false&quot;,
            &quot;extension&quot;:&quot;xlsx&quot;,
            &quot;basename&quot;:&quot;chars.\u4e16\u754c.chars&quot;
         }
      },
      &quot;device_quantity&quot;:&quot;10&quot;,
      &quot;address_attributes&quot;:{
         &quot;id&quot;:&quot;7&quot;,
         &quot;company_name&quot;:&quot;ThreatSim Development&quot;,
         &quot;name&quot;:&quot;f&quot;,
         &quot;street1&quot;:&quot;f&quot;,
         &quot;street2&quot;:&quot;&quot;,
         &quot;city&quot;:&quot;f&quot;,
         &quot;country_code&quot;:&quot;US&quot;,
         &quot;state&quot;:&quot;GU&quot;,
         &quot;zip&quot;:&quot;11111&quot;
      },
      &quot;id&quot;:&quot;79&quot;
   },
   &quot;training_type_campaign_type&quot;:&quot;USB&quot;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But when we take a look at the database, we’ve lost the encoding:&lt;/p&gt;

&lt;p&gt;from the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usb_campaigns&lt;/code&gt; table on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;localhost&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-03.png&quot; alt=&quot;bad encoder!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ditto on the filename:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-04.png&quot; alt=&quot;bad file name encoder!&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;how-do-we-store-these-values-in-the-database&quot;&gt;How do we store these values in the database?&lt;/h2&gt;

&lt;p&gt;I’m first looking in the controller that this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#update&lt;/code&gt; action hits:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;update&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;pry&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;binding&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;pry&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@campaign&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;current_user&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;account&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;usb_campaigns&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;decorate&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;authorize&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@campaign&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;saver&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;save&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;respond_with&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@campaign&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Since I’m running this in localhost, I can just hit the pry and inspect the params. My &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;params&lt;/code&gt; hash has everything as I expect it:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-05.png&quot; alt=&quot;params&quot; /&gt;&lt;/p&gt;

&lt;p&gt;but if I play the line right under the require, and look at the object, it has lost the encoding:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-06.png&quot; alt=&quot;don&apos;t fail me now&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, why is Chinese encoding being lost? And where, precisely, is this object being built and modified?&lt;/p&gt;

&lt;p&gt;Stepping through the method, line by line:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;vi&quot;&gt;@campaign&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;current_user&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;account&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;usb_campaigns&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;decorate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Seems unrelated to saving the campaign. Just calls the decorator. Maybe to make sure that new values are captured next time someone looks at the campaign page?&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;authorize&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@campaign&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;no clue what it is doing. We have no &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;def authorize&lt;/code&gt; in our app. Tons of references like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;authorize @custom_training&lt;/code&gt;, (about 122 instances) but can’t tell where it’s coming from. (Update: this is from the &lt;a href=&quot;https://github.com/plataformatec/devise&quot;&gt;Devise gem&lt;/a&gt;)&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;saver&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now we’re getting somewhere. This line calls another method in our class (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Account::USBCampaignsController&lt;/code&gt; in case you forgot… I just did.)&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;saver&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@saver&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;USBCampaign&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Saver&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;draft?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;usb_campaign_params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;end_at_params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;remote_ip&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And, this new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;USBCampaign::Saver&lt;/code&gt; object of course has &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#save&lt;/code&gt; available to it:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;save&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;EndDateParser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;end_at_params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;symbolize_keys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;parse!&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;assign_attributes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;usb_campaign_params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;may_draft?&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;saving_draft&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;draft!&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;elsif&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;may_submit?&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;saving_draft&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;submit!&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;notify_support_of_new_usb_campaign!&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;campaign&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;save&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If we dig into that second line, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usb_campaign_params&lt;/code&gt; are the expected values containing chinese characters, and &lt;a href=&quot;http://api.rubyonrails.org/classes/ActiveModel/AttributeAssignment.html#method-i-assign_attributes&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assign_attributes&lt;/code&gt;&lt;/a&gt; is the standard way to update database values.&lt;/p&gt;

&lt;p&gt;here’s the params going into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assign_attributes&lt;/code&gt; function:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-07.png&quot; alt=&quot;trying to change variables&quot; /&gt;&lt;/p&gt;

&lt;p&gt;hm. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;campaign.save&lt;/code&gt; worked. I didn’t expect it to:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-08.png&quot; alt=&quot;save&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Lets check the database.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-09.png&quot; alt=&quot;not expected&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So why is my new object showing the wrong values?&lt;/p&gt;

&lt;p&gt;AHA! &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;campaign.reload&lt;/code&gt; for the win. I hadn’t pulled in new values from the DB, which seemed to fail to save correctly.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-10.png&quot; alt=&quot;betrayed!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, my working assumption at this point: We’re passing the correct information to the database when saving a new object, but the database itself is losing important information.&lt;/p&gt;

&lt;p&gt;This leads to some obvious questions.&lt;/p&gt;

&lt;h1 id=&quot;does-our-database-support-chinese-characters&quot;&gt;Does our database support Chinese characters?&lt;/h1&gt;

&lt;p&gt;First, does our database support “unusual” characters? here’s my super sophisticated, professional-level test:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-11.png&quot; alt=&quot;german characters&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, there’s one set of character encoding. Lets try Japanese characters:&lt;/p&gt;

&lt;p&gt;Ah, interesting. I tried to paste in:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hiragana. Hiragana (平仮名, ひらがな, Japanese pronunciation: [çiɾaɡana]) is a Japanese syllabary,&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and got:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-12.png&quot; alt=&quot;japanese chars&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This looks suspiciously like our problematic Chinese characters:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;世界&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-13.png&quot; alt=&quot;no dice&quot; /&gt;&lt;/p&gt;

&lt;p&gt;OK, the problem is how MySql handles these character sets.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Fortunately, the internet exists.&lt;/p&gt;

&lt;p&gt;Here’s what I’m looking through for inspiration:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/14456313/cant-insert-chinese-character-into-mysql&quot;&gt;php: Can’t insert Chinese character into MySQL&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/faqs-cjk.html&quot;&gt;MySQL 8.0 FAQ: MySQL Chinese, Japanese, and Korean Character Sets&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From the MySQL docs, some notes as I follow their instructions:&lt;/p&gt;

&lt;p&gt;First, CLI access to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mysql&lt;/code&gt; running on docker:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mysql -h 127.0.0.1 -P 3306 -u root -p&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;VERSION&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;-----------+&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;VERSION&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;-----------+&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;38&lt;/span&gt;    &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;-----------+&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;make-sure-that-the-database-is-actually-using-the-desired-character-set&quot;&gt;Make sure that the database is actually using the desired character set&lt;/h3&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;character_set_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;collation_name&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;information_schema&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;columns&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;table_schema&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;threatsim_development&apos;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE_NAME&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;usb_campaigns&apos;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COLUMN_NAME&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;gives:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;+--------------------+-------------------+
| character_set_name | collation_name    |
+--------------------+-------------------+
| latin1             | latin1_swedish_ci |
+--------------------+-------------------+
1 row in set (0.00 sec)

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;HEX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;usb_campaigns&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;determine-the-hexadecimal-value-of-the-character-or-characters-that-are-not-being-displayed-correctly&quot;&gt;Determine the hexadecimal value of the character or characters that are not being displayed correctly.&lt;/h3&gt;

&lt;p&gt;gives:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;+--------------+
| HEX(&apos;title&apos;) |
+--------------+
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
| 7469746C65   |
+--------------+
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;make-sure-that-a-round-trip-is-possible-when-you-select-literal-or-_introduce-hexadecimal-value-do-you-obtain-literal-as-a-result&quot;&gt;Make sure that a round trip is possible. When you select &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;literal&lt;/code&gt; (or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_introduce hexadecimal-value&lt;/code&gt;), do you obtain &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;literal&lt;/code&gt; as a result?&lt;/h3&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;ペ&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`ペ`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;returns:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;?
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This seems noteworthy.&lt;/p&gt;

&lt;p&gt;And:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;世界&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`世界`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;returns:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;??
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The plot thickens:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-14.png&quot; alt=&quot;eureka?&quot; /&gt;&lt;/p&gt;

&lt;p&gt;OK, it’s a per-table encoding problem. Our &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;campaigns&lt;/code&gt; table can handle these values just fine, but not &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usb_campaigns&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-15.png&quot; alt=&quot;not working&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;on-a-per-table-basis-changing-character_set_name&quot;&gt;on a per-table basis, changing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;character_set_name&lt;/code&gt;&lt;/h1&gt;

&lt;p&gt;Lets compare a table where these character encodings work (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;campaigns&lt;/code&gt;) to where they don’t (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usb_campaigns&lt;/code&gt;):&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;character_set_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;collation_name&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;information_schema&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;columns&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;table_schema&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;threatsim_development&apos;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE_NAME&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;campaigns&apos;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COLUMN_NAME&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;gives:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;+--------------------+--------------------+
| character_set_name | collation_name     |
+--------------------+--------------------+
| utf8mb4            | utf8mb4_unicode_ci |
+--------------------+--------------------+
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Remember that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usb_campaigns&lt;/code&gt; gave:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;+--------------------+-------------------+
| character_set_name | collation_name    |
+--------------------+-------------------+
| latin1             | latin1_swedish_ci |
+--------------------+-------------------+
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I bet if we changed the table encoding method, we’d be good to go!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf&quot;&gt;Stackoverflow&lt;/a&gt; for the win. Suggested:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ALTER TABLE Table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;&lt;/code&gt;, which I changed to:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;threatsim_development&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;usb_campaigns&lt;/span&gt; 
&lt;span class=&quot;k&quot;&gt;CONVERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TO&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;CHARACTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COLLATE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4_unicode_ci&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And now, when I check the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;character_set_name&lt;/code&gt;, I get:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;+--------------------+--------------------+
| character_set_name | collation_name     |
+--------------------+--------------------+
| utf8mb4            | utf8mb4_unicode_ci |
+--------------------+--------------------+
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Wahoo!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-16.png&quot; alt=&quot;it worked&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;editing-tables-on-a-oneshot&quot;&gt;Editing tables on a oneshot&lt;/h1&gt;

&lt;p&gt;So, lets sanity-check this in the app. If it works, I’ll update the table where we’re having the file_names problem too, and then I’ll figure out how to change this in production.&lt;/p&gt;

&lt;p&gt;Wahoo! It works. I updated &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usb_campaigns&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usb_campaign_file_details&lt;/code&gt;, and all is groovy:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/011s0W3x2s2b/2018-05-31%20at%201.28%20PM.png&quot; alt=&quot;it works!&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Now to test on a oneshot!&lt;/p&gt;

&lt;p&gt;I’ve SSH’ed in to https://temporary_staging_environment_url_placeholder.com, and ran&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;threatsim_staging&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;usb_campaigns&lt;/span&gt;  &lt;span class=&quot;k&quot;&gt;CONVERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TO&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;CHARACTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COLLATE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4_unicode_ci&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;threatsim_staging&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;usb_campaign_file_details&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;CONVERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TO&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;CHARACTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COLLATE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4_unicode_ci&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And it’s fixed!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-21-screenshot-17.png&quot; alt=&quot;fixed!&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;rails-migration-for-character_set_name&quot;&gt;Rails migration for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;character_set_name&lt;/code&gt;&lt;/h1&gt;

&lt;p&gt;I’ve reset the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usb_campaign_file_details&lt;/code&gt; table to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;latin1&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;latin1_swedish_ci&lt;/code&gt;, and I’m going to work on a rails migration that will update it.&lt;/p&gt;

&lt;p&gt;Scratch that - a coworker suggested asking Jordan directly.&lt;/p&gt;

&lt;h1 id=&quot;asking-jordan-for-help&quot;&gt;Asking Jordan for help&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;note to reader: Jordan is on our DevOps team, and I linked to the gist I created in a JIRA ticket for Jordan/DevOps, to make these changes on production. I wanted them to have the context around my request, so I linked around a bit inside this doc.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hi Jordan! There are two tables to change the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;character_set_name&lt;/code&gt; on.&lt;/p&gt;

&lt;p&gt;I don’t know if it makes more sense to change the whole table, or just the column.&lt;/p&gt;

&lt;p&gt;The tables are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;threatsim_staging.usb_campaign_file_details&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;threatsim_staging.usb_campaigns&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These two commands, run on a oneshot, fixed all the above problems:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;threatsim_staging&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;usb_campaigns&lt;/span&gt;  &lt;span class=&quot;k&quot;&gt;CONVERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TO&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;CHARACTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COLLATE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4_unicode_ci&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;threatsim_staging&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;usb_campaign_file_details&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;CONVERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TO&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;CHARACTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COLLATE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;utf8mb4_unicode_ci&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Since I know &lt;em&gt;almost nothing&lt;/em&gt; about updating production databases, and you know &lt;em&gt;lots&lt;/em&gt; of things, I would love to know your professional opinion on how to implement the above changes.&lt;/p&gt;

&lt;p&gt;For a quick-and-dirty check of what the problem is, read through &lt;a href=&quot;#does-our-database-support-chinese-characters&quot;&gt;Does our database support chinese characters?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inspiration:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://gist.github.com/tjh/1711329&quot;&gt;this gist of other’s migrations to do just this&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/5746633/define-character-in-rails-migration&quot;&gt;stack overflow: define character in rails migration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.bignerdranch.com/blog/thoughts-on-debugging-part-1/&quot;&gt;Thoughts on Debugging, Part 1, by Mark Dalrymple&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.bignerdranch.com/blog/thoughts-on-debugging-2/&quot;&gt;Thoughts on Debugging, Part 2, by Mark Dalrymple&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://danluu.com/teach-debugging/&quot;&gt;Dan Luu: Teach debugging&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>VCR&apos;s debug_logger and `git diff`</title>
   <link href="https://josh.works/vcr-debug-logger-and-git-diff"/>
   <updated>2019-04-19T13:00:00+00:00</updated>
   <id>https://josh.works/git-diff-name-only</id>
   <content type="html">&lt;p&gt;I recently added the &lt;a href=&quot;https://github.com/vcr/vcr&quot;&gt;vcr gem&lt;/a&gt; to one of our repositories, and was adding tests for an external API.&lt;/p&gt;

&lt;p&gt;One of my tests was passing, and I wanted to commit the VCR cassette, along with the test/code that went with it.&lt;/p&gt;

&lt;p&gt;I had &lt;em&gt;thought&lt;/em&gt; I’d rebuilt the VCR cassette a few minutes before, but when I did &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git status&lt;/code&gt;, none of the expected files showed up. VCR cassettes record API calls and store them as big &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.yml&lt;/code&gt; files, which &lt;em&gt;should&lt;/em&gt; show up in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git status&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-02-28 at 5.31 PM.png&quot; alt=&quot;useless git status&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This did not map to my expectation - I expected to see the VCR cassette.&lt;/p&gt;

&lt;h2 id=&quot;two-tools-to-help-find-the-missing-cassettes&quot;&gt;Two tools to help find the missing cassettes&lt;/h2&gt;

&lt;p&gt;First, I had to make sure the cassettes actually existed and were being used in my tests. Second, assuming the cassettes existed, I had to find them.&lt;/p&gt;

&lt;p&gt;I checked the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_helper.rb&lt;/code&gt;, to see where the cassettes were supposed to be stashed:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;VCR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;configure&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cassette_library_dir&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;fixtures/vcr_cassettes&quot;&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;hook_into&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:webmock&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;!--more--&gt;

&lt;p&gt;That directory location looked right. But we already &lt;em&gt;had&lt;/em&gt; a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test/fixtures/vcr_cassettes&lt;/code&gt;, and it was empty.&lt;/p&gt;

&lt;p&gt;When I did a global find in the project for the name of the cassette I’d set, nothing came up, except for the test I was working in.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Where was this cassette? Did I even have VCR configured correctly?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I opened up the &lt;a href=&quot;https://github.com/vcr/vcr#usage&quot;&gt;VCR docs&lt;/a&gt; to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#usage&lt;/code&gt; section, and found this line:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Rails and Minitest&lt;/em&gt;: Do not use ‘test/fixtures’ as the directory if you’re using Rails and Minitest (Rails will instead transitively load any files in that directory as models).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🤔&lt;/p&gt;

&lt;p&gt;So maybe there &lt;em&gt;was&lt;/em&gt; a problem with my directory structure?&lt;/p&gt;

&lt;h3 id=&quot;vcrs-debug_logger&quot;&gt;VCR’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;debug_logger&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;I googled around, and found &lt;a href=&quot;https://www.rubyguides.com/2018/12/ruby-vcr-gem/&quot;&gt;this useful article&lt;/a&gt;, which mentioned toggling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;debugger mode&lt;/code&gt;, so I updated the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_helper.rb&lt;/code&gt; block for VCR, sending debug information to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$stderr&lt;/code&gt;, aka my terminal:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;VCR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;configure&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cassette_library_dir&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;fixtures/vcr_cassettes&quot;&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;hook_into&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:webmock&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;debug_logger&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;vg&quot;&gt;$stderr&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# Added this line here&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When I reran the test, I got lots of useful output:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# the following&apos;s been anonymized a bit
[Cassette: &apos;external_service_fetch_token&apos;] Initialized with options: {:record=&amp;gt;:once, :match_requests_on=&amp;gt;[:method, :uri], :allow_unused_http_interactions=&amp;gt;true, :serialize_with=&amp;gt;:yaml, :persist_with=&amp;gt;:file_system}
[webmock] Handling request: [post https://service.com/give-me-a-token] (disabled: false)
[Cassette: &apos;external_service_fetch_token&apos;] Initialized HTTPInteractionList with request matchers [:method, :uri] and 1 interaction(s): { [post https://service.com/give-me-a-token] =&amp;gt; [200 &quot;{\n  \&quot;access_token\&quot; : \&quot;aaabbbcccddd&quot;] }
[Cassette: &apos;external_service_fetch_token&apos;] Checking if [post https://service.com/give-me-a-token] matches [post https://service.com/give-me-a-token] using [:method, :uri]
[Cassette: &apos;external_service_fetch_token&apos;] method (matched): current request [post https://service.com/give-me-a-token] vs [post https://service.com/give-me-a-token]
[Cassette: &apos;external_service_fetch_token&apos;] uri (matched): current request [post https://service.com/give-me-a-token] vs [post https://service.com/give-me-a-token]
[Cassette: &apos;external_service_fetch_token&apos;] Found matching interaction for [post https://service.com/give-me-a-token] at index 0: [200 &quot;{\n  \&quot;access_token\&quot; : \&quot;aaabbbcccddd&quot;]
[webmock] Identified request type (stubbed_by_vcr) for [post https://service.com/give-me-a-token]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;This request was being recorded somewhere. Where was it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git status&lt;/code&gt; had given me nothing. Maybe I &lt;em&gt;didn’t&lt;/em&gt; delete this a while ago - maybe this was an old file that I’d committed long ago.&lt;/p&gt;

&lt;h2 id=&quot;git-diff--development---name-only-to-the-rescue&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git diff  development --name-only&lt;/code&gt; to the rescue!&lt;/h2&gt;

&lt;p&gt;We all probably use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git diff&lt;/code&gt; quite regularly, but I didn’t want to look at &lt;em&gt;all&lt;/em&gt; of the different &lt;em&gt;lines of code&lt;/em&gt; between my current branch and development. I’d written a lot of code, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;development&lt;/code&gt; had changed a lot with other people’s code. I would just rebase my branch on top before finalizing the PR anyway.&lt;/p&gt;

&lt;p&gt;But I still wondered if I had these VCR cassettes committed in my current branch somewhere. Maybe I misunderstood where they were getting saved.&lt;/p&gt;

&lt;p&gt;So I ran &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git diff development --name-only&lt;/code&gt; It shows &lt;em&gt;just the names of the files&lt;/em&gt; that differ between the specified branch and your own branch.&lt;/p&gt;

&lt;p&gt;I knew I’d changed about fifteen files, but when I ran the above command, I got back a list of over 100 files that had changed.&lt;/p&gt;

&lt;p&gt;Therefore, to further refine your results, you might want to limit the results to just the filenames on &lt;em&gt;your&lt;/em&gt; branch that differ from the comparison branch.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git diff development...current_branch --name-only&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here’s the output I got:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;threatsim/Gemfile
threatsim/Gemfile.lock
threatsim/app/controllers/api/external_service/things_controller.rb
threatsim/app/models/external_service_token_validator.rb
threatsim/config/routes.rb
threatsim/fixtures/vcr_cassettes/external_service_expired_token.yml
threatsim/fixtures/vcr_cassettes/external_service_generate_token.yml
threatsim/fixtures/vcr_cassettes/external_service_token_validation.yml
threatsim/test/controllers/api/external_service/things_controller_test.rb
threatsim/test/models/external_service_token_validator_test.rb
threatsim/test/test_helper.rb
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Boom. Those &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*.yml&lt;/code&gt; files are what I needed.&lt;/p&gt;

&lt;p&gt;I’d been on a long goose chase because I didn’t think to run this command any earlier.&lt;/p&gt;

&lt;p&gt;What had happened to my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.yml&lt;/code&gt; files? The VCR configuration told the truth! They got placed in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fixtures/vcr_cassettes/&lt;/code&gt;, while I was &lt;em&gt;expecting&lt;/em&gt; them to be in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test/fixtures/vcr_cassettes&lt;/code&gt;. I’d committed them previously, and forgotten or never noticed that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fixtures&lt;/code&gt; directory was in the root of the application, not nested in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;This was a minor difference, but it took longer than I would have expected to uncover. But now I have a new tool in my git toolbox to use in the future.&lt;/p&gt;

&lt;h3 id=&quot;related-resources&quot;&gt;Related Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://git-scm.com/docs/git-diff&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git diff&lt;/code&gt; docs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://git-scm.com/docs/git-diff#git-diff---name-only&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git diff&lt;/code&gt; docs, specific to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--name-only&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.rubyguides.com/2018/12/ruby-vcr-gem/&quot;&gt;How to Use The VCR Gem to Improve Your Testing Suite (RubyGuides)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/vcr/vcr#usage&quot;&gt;VCR Gem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Climbing in Cuba, 2019</title>
   <link href="https://josh.works/climbing-in-cuba-2019"/>
   <updated>2019-04-12T13:00:00+00:00</updated>
   <id>https://josh.works/cuba_2019</id>
   <content type="html">&lt;p&gt;A few weeks ago, I had the opportunity to go climbing in Cuba.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/IMG_20190322_184730.jpg&quot; alt=&quot;mark and dave&quot; /&gt;
&lt;em&gt;Mark and Dave, walking back from climbing outside Viñales&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/IMG_20190328_120104.jpg&quot; alt=&quot;The roof of the world&quot; /&gt;
&lt;em&gt;Locals crag, called “The roof of the world”. Stunning routes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/IMG_20190327_123602.jpg&quot; alt=&quot;We spent a lot of time in this cave&quot; /&gt;
&lt;em&gt;because it was so hot, we spent a lot of time in this cave.&lt;/em&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Kristi and I tend to stick pictures on our Tumblr, and this list is all the Cuba-related footage I’ve posted:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://teamthompsontravels.tumblr.com/post/183914947878/climbing-in-cuba&quot;&gt;Pictures from Cuba&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://teamthompsontravels.tumblr.com/post/184035118353/mark-had-a-working-sequence-for-the-crux-of-this&quot;&gt;Video: Mark on the crux of his project, as he sent the route&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://teamthompsontravels.tumblr.com/post/184035160887/this-was-the-very-bouldery-and-very-fun-opening-to&quot;&gt;Video: Me on the bouldery opening portion of a cool route&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://teamthompsontravels.tumblr.com/post/184035215659/on-the-walk-home-after-a-day-of-climbing-we&quot;&gt;Video: Farmer plowing field with his oxen&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://teamthompsontravels.tumblr.com/post/184035620908/cuba-pictures-continued&quot;&gt;More pictures from Cuba&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://teamthompsontravels.tumblr.com/post/184059892994/the-crux-of-a-route-that-i-didnt-send-on-this&quot;&gt;Video: Crux of a different route&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://teamthompsontravels.tumblr.com/post/184059981513/havana-nightlife-there-was-dancing-and-live-music&quot;&gt;Video: Dancers in Havana&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/IMG_20190330_105404.jpg&quot; alt=&quot;View from our casa particulares in Havana&quot; /&gt;
&lt;em&gt;View from our casa particulares in Havana&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/IMG_20190330_161944.jpg&quot; alt=&quot;more Havana&quot; /&gt;
&lt;em&gt;More Havana&lt;/em&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Some Lessons Learned While Preparing for Two Technical Talks</title>
   <link href="https://josh.works/lessons-learned-from-giving-technical-talks"/>
   <updated>2019-03-19T13:00:00+00:00</updated>
   <id>https://josh.works/preparing_to_give_technical_talks</id>
   <content type="html">&lt;p&gt;A few weeks ago, I gave two talks about Ruby and Rails:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;An &lt;a href=&quot;https://josh.works/denverrb&quot;&gt;8-minute lightning talk&lt;/a&gt; about using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.count&lt;/code&gt; vs &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.size&lt;/code&gt; in ActiveRecord query methods&lt;/li&gt;
  &lt;li&gt;A &lt;a href=&quot;https://josh.works/boulder_ruby_group&quot;&gt;30-minute talk&lt;/a&gt; at the Boulder Ruby Group arguing that developers should &lt;em&gt;embrace&lt;/em&gt; working with non-development business functions, and the constraints therein. I illustrated this via a story about finding slow SQL queries, and using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.count&lt;/code&gt; vs &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.size&lt;/code&gt; in ActiveRecord query methods.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;things-that-went-well&quot;&gt;Things that went well&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;I enjoyed actually &lt;em&gt;giving&lt;/em&gt; the talks&lt;/li&gt;
  &lt;li&gt;I heard positive feedback after-the-fact&lt;/li&gt;
  &lt;li&gt;I learned a lot from the process, and next time the prep will be much less anxiety-inducing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;things-that-went-poorly&quot;&gt;Things that went poorly&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;I felt quite anxious in the ten days or so leading up to the talks, thought it was because I was procrastinating.&lt;/li&gt;
  &lt;li&gt;I felt stressed &lt;em&gt;and shameful&lt;/em&gt; about not having the talks prepared.&lt;/li&gt;
  &lt;li&gt;I did not finalize either talk until few minutes before leaving to give it, and was up late at night the night before each talk, doing the lions share of the preparation, therefore I was sleep deprived.&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;lessons-learned&quot;&gt;Lessons Learned&lt;/h2&gt;

&lt;p&gt;I’ve got a few lessons learned from the process that will inform the next time I do a technical talk. I expect this will be iterative, and I expect I’ll continue to learn about this process for a while.&lt;/p&gt;

&lt;h3 id=&quot;motivation-matters-and-intrinsic-motivation-is-much-more-powerful-than-extrinsic-motivation&quot;&gt;Motivation Matters, and &lt;em&gt;intrinsic&lt;/em&gt; motivation is much more powerful than &lt;em&gt;extrinsic&lt;/em&gt; motivation&lt;/h3&gt;

&lt;p&gt;I initially volunteered to give the talks because many people I respect have indicated that it’s a healthy thing to do. I also believe that the opportunity for the most personal growth overlaps with areas of great discomfort. I really &lt;em&gt;did not want to give a talk&lt;/em&gt;, so I knew that it would be good to do so.&lt;/p&gt;

&lt;p&gt;So I said I’d give a talk, knowing that I had weeks to prepare. I volunteered to give a talk with only a loose idea of what I’d talk about.&lt;/p&gt;

&lt;p&gt;I spent most of my time leading up to the talks worrying about what I was going to talk about, and what technical topic I knew well enough to dive into and explain to a bunch of &lt;em&gt;quite&lt;/em&gt; experienced software developers at the Boulder Ruby Group. I thought:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have nothing useful to say. They’ve forgotten more about Ruby than I will ever know.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I got unblocked from this problem late in the game. I found &lt;a href=&quot;https://overreacted.io/preparing-for-tech-talk-part-1-motivation/&quot;&gt;Preparing for a Tech Talk, Part 1: Motivation&lt;/a&gt;, and started thinking about this problem from the other end.&lt;/p&gt;

&lt;p&gt;A few quotes from the article that hit home for me:&lt;/p&gt;

&lt;h4 id=&quot;internal-vs-external-motivation&quot;&gt;Internal vs. external motivation:&lt;/h4&gt;

&lt;blockquote&gt;
  &lt;p&gt;Maybe giving talks is a part of your current job. Maybe you want to gain more recognition in the industry so you can land a better job or get a raise… We’ll call these motivations external.
[…]
Maybe you find it rewarding to teach people. Maybe you enjoy learning, and giving a talk is a nice excuse to dig deeper. Maybe you want to start or change the conversation about a topic. Maybe you want to amplify or critique an idea.&lt;/p&gt;

  &lt;p&gt;Such internal motivations aren’t a proxy for another desire like professional recognition. These are the things that have intrinsic value to you.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I realized I’d started the process of giving the talk with &lt;em&gt;external&lt;/em&gt; motivations, but I wouldn’t be able to make a talk that didn’t suck until I’d uncovered the right &lt;em&gt;internal&lt;/em&gt; motivations.&lt;/p&gt;

&lt;p&gt;Instead of thinking&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;What do I know well enough to talk about to seasoned professionals&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I thought&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;What do I know, or what perspective do I have, that might be interesting and maybe even useful to a crowd of experienced software developers?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Turns out I’ve got stuff there, and a few stories that could prove to be instructive.&lt;/p&gt;

&lt;h3 id=&quot;my-motivations&quot;&gt;My Motivations&lt;/h3&gt;

&lt;p&gt;I &lt;em&gt;love&lt;/em&gt; to share knowledge and teach things.&lt;/p&gt;

&lt;p&gt;This website is pretty strong evidence of that, and I spent a lot of time helping people learn things about software development, rock climbing, career navigation, and more. It’s a strong unifying thread throughout many domains of my life.&lt;/p&gt;

&lt;p&gt;Sometimes it’s a “direct knowledge transfer”, where I simply have a piece of knowledge that they don’t, and I give them that piece of knowledge. This is rare, though. I’d say 90% of the time, I “teach” through a collection of ideas, like: &lt;strong&gt;process&lt;/strong&gt;, &lt;strong&gt;my experiences&lt;/strong&gt;, and &lt;strong&gt;stories of failure (and success)&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I might share a &lt;em&gt;process&lt;/em&gt; around something. (Finding a bug, resolving a stack trace, feeling confident while lead climbing)&lt;/li&gt;
  &lt;li&gt;I might share a &lt;em&gt;story of failure&lt;/em&gt; that illustrates a concept. (I failed my last project coming out of Turing, &lt;em&gt;and&lt;/em&gt; I got an F my last semester of college, and got a “provisional” diploma until I finished an online class to hit some credit requirement. The concept is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;good_grades != good_education &amp;amp;&amp;amp; bad_grades != bad_educated&lt;/code&gt;. There’s a loose relationship &lt;em&gt;at best&lt;/em&gt; between grades and the vast majority of knowledge one might acquire.)&lt;/li&gt;
  &lt;li&gt;I know so little about so much, so even if I share &lt;em&gt;just&lt;/em&gt; obvious things, it’s likely that others will be helped, via the &lt;em&gt;Munroe’s “Today’s Ten Thousand Rule”&lt;/em&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/xkcd_ten_thousand.png&quot; alt=&quot;XKCD: Ten Thousand&quot; title=&quot;Saying &apos;what kind of an idiot doesn&apos;t know about the Yellowstone supervolcano&apos; is so much more boring than telling someone about the Yellowstone supervolcano for the first time.&quot; /&gt;
&lt;em&gt;mouseover text: Saying ‘what kind of an idiot doesn’t know about the Yellowstone supervolcano’ is so much more boring than telling someone about the Yellowstone supervolcano for the first time.&lt;/em&gt; &lt;a href=&quot;https://xkcd.com/1053/&quot;&gt;(source)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once I was thinking in this direction, I was back in my “normal” operating mode - I like to share everything I can about what I’m learning, knowng that someone else out there might find value in it. I often share very basic things, because they either are not basic to me, or if they &lt;em&gt;are&lt;/em&gt; basic to me, I still didn’t learn about them until “recently”, and it might be my day to learn the obvious thing.&lt;/p&gt;

&lt;p&gt;So, I &lt;em&gt;embraced&lt;/em&gt; being the least experienced developer in the room, and suddenly had a topic to talk about.&lt;/p&gt;

&lt;h2 id=&quot;its-possible-to-plan-for-not-knowing-where-youre-going&quot;&gt;It’s possible to plan for not knowing where you’re going&lt;/h2&gt;

&lt;p&gt;The part of me that wants to pass himself off as cool, calm, collected, professional, and knowledgeable is reluctant to write this part…&lt;/p&gt;

&lt;p&gt;For both talks, I didn’t know &lt;em&gt;precisely&lt;/em&gt; what I wanted to say, but I had a rough idea. So I started making slides, and adding full sentences and paragraphs of text to them (shudder). As I needed screenshots and code snippets, I grabbed them and added them.&lt;/p&gt;

&lt;p&gt;I kept bouncing between content as it existed in my head and the content as it existed on the slides, and slowly nailed down a coherent narrative.&lt;/p&gt;

&lt;h2 id=&quot;the-slides&quot;&gt;The slides&lt;/h2&gt;

&lt;p&gt;I used Keynote, and never considered doing any live coding. It often doesn’t go well, and I didn’t want to have to be improvising even more on the fly than I would be.&lt;/p&gt;

&lt;p&gt;So, I made heavy use of screenshots and gifs, and weaved them into a slide deck.&lt;/p&gt;

&lt;p&gt;I started with paper notes I put together on the talks I was giving. They were haphazardly organized, but I dutifully transcribed everything into a slide.&lt;/p&gt;

&lt;p&gt;I wrote out “whole sentences” on slides, sometimes paragraphs. I was working in the direction of creating that great &lt;em&gt;faux pas&lt;/em&gt;, of reading my slides to the audience.&lt;/p&gt;

&lt;p&gt;I shuffled slides around, added sentences/bullet-points where needed, often giving the talk in small chunks “in my head”, and making adjustments as I went.&lt;/p&gt;

&lt;p&gt;Once I had a basic “flow” down, I pulled the sentences out of the slide and copied into the presenter notes below the slide, and dropped a few related words into the content of the slide.&lt;/p&gt;

&lt;p&gt;The few words would be enough to remind me what I wanted to talk about, and I could reference the presenter notes if needed, and now, without my narration, the meaning of each slide wasn’t obvious when it popped up.&lt;/p&gt;

&lt;h2 id=&quot;the-results&quot;&gt;The results&lt;/h2&gt;

&lt;p&gt;I gave two talks! I recorded both talks on my cell phone, so I could figure out how to improve them. I made a landing page for both talks, because it takes no effort to do so.&lt;/p&gt;

&lt;p&gt;Here’s both of those pages, with links for slides and the recordings themselves:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/boulder_ruby_group&quot;&gt;https://josh.works/boulder_ruby_group&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/denverrb&quot;&gt;https://josh.works/denverrb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I gained a lot from both of these talks. The talk at Boulder Ruby Group was particularly instructive, as everyone in the room was quite knowledgable, and the “talk” unfolded as more of a dialog than a standard one-way presentation.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://rodriguezcommaj.com/blog/a-few-tips-on-building-slides&quot;&gt;A Few Tips on Building Slides (Jason Rodriguez)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://overreacted.io/preparing-for-tech-talk-part-1-motivation/&quot;&gt;Preparing for a Tech Talk, Part 1: Motivation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>HTTParty and to_json</title>
   <link href="https://josh.works/httparty-and-to-json"/>
   <updated>2019-03-12T13:00:00+00:00</updated>
   <id>https://josh.works/httparty-and-json</id>
   <content type="html">&lt;p&gt;I was having some trouble debugging an &lt;a href=&quot;https://github.com/jnunemaker/httparty&quot;&gt;HTTParty&lt;/a&gt; POST request.&lt;/p&gt;

&lt;p&gt;A few tools that were useful to me:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;post DEBUG info to &lt;a href=&quot;https://www.computerhope.com/jargon/s/stdout.htm&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;STDOUT&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.poftut.com/netcat-nc-command-tutorial-examples/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;netcat&lt;/code&gt;&lt;/a&gt; to listen to HTTP requests locally&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I had this code:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;headers: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;ss&quot;&gt;authorization: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Bearer &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;our_token&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;query: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;data: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;body: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;token: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;their_token&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;debug_output: &lt;/span&gt;&lt;span class=&quot;no&quot;&gt;STDOUT&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And when I &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;post&lt;/code&gt;ed it:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;HTTParty&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;BASE_URL&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/endpoint&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I kept getting something like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;opening connection to externalservice.net:443...
opened
starting SSL for externalservice.net:443...
SSL established
&amp;lt;- &quot;POST /endpoint?data=true HTTP/1.1\r\nContent-Type: application/json\r\nAuthorization: Bearer alksdjflkajsdf\r\nHost: externalservice.net\r\nContent-Length: 1234\r\n\r\n&quot;
&amp;lt;- &quot;token=aslsdjfhasiudyfkajn&quot;
-&amp;gt; &quot;HTTP/1.1 400 Bad Request\r\n&quot;
-&amp;gt; &quot;Date: Mon, 11 Mar 2019 16:58:13 GMT\r\n&quot;
-&amp;gt; &quot;Content-Type: text/plain\r\n&quot;
-&amp;gt; &quot;Content-Length: 28\r\n&quot;
-&amp;gt; &quot;\r\n&quot;
reading 28 bytes...
-&amp;gt; &quot;Invalid json line 1 column 7&quot;
read 28 bytes
Conn keep-alive
=&amp;gt; &quot;Invalid json line 1 column 7&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;!--more--&gt;

&lt;p&gt;Invalid json? The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;body&lt;/code&gt; was being passed into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTTParty&lt;/code&gt; as a hash, I had been assuming this would convert it to JSON.&lt;/p&gt;

&lt;div class=&quot;language-rb highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;token: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;their_token&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So, I fired up &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;netcat&lt;/code&gt; on localhost, to try making different &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POST&lt;/code&gt; requests and watch the formatting a little closer:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;nc -l -k localhost 4000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I was seeing requests like so:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-03-11 at 11.09 AM.png&quot; alt=&quot;looks OK, right?&quot; /&gt;&lt;/p&gt;

&lt;p&gt;what was the solution?&lt;/p&gt;

&lt;p&gt;My coworker &lt;a href=&quot;https://github.com/Jliv316&quot;&gt;John Livingston&lt;/a&gt; was chatting with me about a PR he had open, and asked for a review on an update to a Slack notification bot. I saw him use a suspicious method inside of &lt;em&gt;his&lt;/em&gt; HTTParty request.&lt;/p&gt;

&lt;div class=&quot;language-rb highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HTTParty&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;ss&quot;&gt;body: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;payload&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;ss&quot;&gt;headers: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;Content-Type&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;application/json&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;AHHHHHHHH&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/p8Uw3hzdAE2dO/giphy.gif&quot; alt=&quot;AHHHHHHHH&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Because I’d also been working on a &lt;em&gt;different&lt;/em&gt; post request, where the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Content-Type&lt;/code&gt; was &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;application/x-www-form-urlencoded&lt;/code&gt;, I wasn’t actually looking to make sure the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;body&lt;/code&gt; was putting out JSON. Of course this isn’t JSON.&lt;/p&gt;

&lt;h4 id=&quot;not-json&quot;&gt;Not json:&lt;/h4&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;token=slkdjflkj
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;json&quot;&gt;json:&lt;/h4&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;{&quot;token&quot;:&quot;slkdjflkj&quot;}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The fix? add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.to_json&lt;/code&gt; on the request body:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;headers: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;ss&quot;&gt;authorization: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Bearer &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;our_token&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;query: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;data: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
  &lt;span class=&quot;ss&quot;&gt;body: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;token: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;their_token&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_json&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# I just added .to_json      ^^^^^^^&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I’m writing this whole thing out because in hindsight it’s blindingly obvious what the problem was, but at the time I was &lt;em&gt;really&lt;/em&gt; stuck on why the endpoint couldn’t parse the body as json.&lt;/p&gt;

&lt;p&gt;Now we all know.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Job Hunting Recommendations for Early-Career Software Developers</title>
   <link href="https://josh.works/remote-job-resources"/>
   <updated>2019-02-26T11:00:00+00:00</updated>
   <id>https://josh.works/turing_remote_resources</id>
   <content type="html">&lt;p&gt;&lt;em&gt;I’ve distilled a number of conversations into this post.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Some of it is specific to getting a remote job and working remotely, but all of it is applicable for any kind of software-related role. It’s probably applicable to non-software roles, but this is where most of my exprience lies.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Finally, I think “advice to others” is a tall order. All I know is things I did, and what seemed to correlate with good results. Correlation is not causation, etc. I recommend reading &lt;a href=&quot;https://guzey.com/advice/&quot;&gt;Every thought about giving and taking advice I’ve ever had, as concisely as possible (Alexey Guzey)&lt;/a&gt; before you do any more advice taking and giving.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Other than this first section about finding &lt;em&gt;remote-friendly&lt;/em&gt; jobs, everything below applies to any job hunt. So, even if you’re not looking specifically for remote work, keep reading.&lt;/p&gt;

&lt;p&gt;This is a guide mostly about &lt;em&gt;cold outreach&lt;/em&gt;, so buckle up. We’re about to get uncomfortable.&lt;/p&gt;

&lt;iframe src=&quot;https://giphy.com/embed/26gJzFLDj0ZB33fFu&quot; width=&quot;480&quot; height=&quot;240&quot; frameborder=&quot;0&quot; class=&quot;giphy-embed&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href=&quot;https://giphy.com/gifs/bobs-burgers-26gJzFLDj0ZB33fFu&quot;&gt;&lt;i&gt;GIPHY&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;finding-promising-jobs&quot;&gt;Finding promising jobs&lt;/h2&gt;

&lt;p&gt;I generally recommend job-seekers “cut their teeth” with this process on very specific posts in Hacker News.&lt;/p&gt;

&lt;p&gt;I’m going to recommend you use &lt;a href=&quot;https://kennytilton.github.io/whoishiring/&quot;&gt;this sophisticated little search tool for the massive Hacker News monthly “Who is hiring?” question with hundreds of openings listed.&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Go ahead, Click the link. Then type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ruby&lt;/code&gt;. It’ll look like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/search-hn-job-postings.gif&quot; alt=&quot;Filter the results&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Most people in the world have not heard of “hacker news”, other than reading in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;news&lt;/code&gt; when Equifax gets &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hacked&lt;/code&gt; (again) (and again) (and again).&lt;/p&gt;

&lt;p&gt;If it’s unfamiliar to you, it’s basically &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Reddit for tech people&lt;/code&gt;. It’s got a distinctive layout, and has one of the craziest implementations of tables-based HTML I’ve ever seen.&lt;/p&gt;

&lt;p&gt;There are many different posts that go by on tech Reddit. One of the monthly recurring posts is a “Who’s hiring this month” kind of post. Here’s the thread for July 2020:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=23702122&quot;&gt;–&amp;gt; Ask HN: Who is hiring? (July 2020)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-08-10 at 11.10 PM.jpg&quot; alt=&quot;who&apos;s hiring thread&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Basically, each top-level comment is posted by a different person, with a different opportunity. Each comment adheres to the thread criteria:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Please state the job location and include the keywords REMOTE, INTERNS and/or VISA when the corresponding sort of candidate is welcome. When remote work is not an option, include ONSITE.&lt;/p&gt;

  &lt;p&gt;Please only post if you personally are part of the hiring company—no recruiting firms or job boards. Only one post per company. If it isn’t a household name, please explain what your company does.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Many of the posters will include a personal email address. Those that don’t might work at a larger company, or might be posting anonymously.&lt;/p&gt;

&lt;p&gt;The main goal here is to find jobs and companies that look interesting and/or promising, based on a variety of critera.&lt;/p&gt;

&lt;p&gt;It’s really hard to manually search through the pages of comments, trying to not get bogged down in comments on each individual job posting.&lt;/p&gt;

&lt;p&gt;This is where this &lt;a href=&quot;https://kennytilton.github.io/whoishiring/&quot;&gt;sophisticated little search tool&lt;/a&gt; comes in. You’ll use it to filter down job opportunities.&lt;/p&gt;

&lt;p&gt;Go back, type in a programming language or framework, and start looking.&lt;/p&gt;

&lt;h2 id=&quot;telegraphing-competence&quot;&gt;Telegraphing competence&lt;/h2&gt;

&lt;p&gt;As I worked through the above list and found interesting opportunities, what did I do to explore if I and a given company or team might be a good fit for each other?&lt;/p&gt;

&lt;p&gt;My goal was to telegraph competence to anyone I interacted with. So, one of my main goals was to create &lt;em&gt;visible evidence&lt;/em&gt; that I am competent.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;That’s not helpful, Josh. How do you do that? Do you run around screaming “I’M COMPETENT” at everyone you meet?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;!--more--&gt;

&lt;p&gt;No. I just type things on the internet, and make those easy to find. My email signature has a link to my website, which has a smattering of technical and non-technical posts, and my “about me” page makes sure to also telegraph competence. If you don’t have a website, just hop onto Medium, and start writing some things. Here’s examples of my “technical” posts:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/block-value&quot;&gt;https://josh.works/block-value&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/metaprogramming-method-missing-01&quot;&gt;https://josh.works/metaprogramming-method-missing-01&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/blocks_and_closures&quot;&gt;https://josh.works/blocks_and_closures&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/first-pass-elixir-phoenix&quot;&gt;https://josh.works/first-pass-elixir-phoenix&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/elixir-phoenix-part-deux&quot;&gt;https://josh.works/elixir-phoenix-part-deux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My “about” page is fairly friendly and comprehensive: &lt;a href=&quot;https://josh.works/about&quot;&gt;https://josh.works/about&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;None of these posts are earth shattering &lt;strike&gt;(actually, they are *all* very basic)&lt;/strike&gt;&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; but it telegraphs:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I have some initiative. Not necessarily a lot, but at least a little&lt;/li&gt;
  &lt;li&gt;I can write words in a legible and readable fashion. This is valuable in a remote work environment, as almost all communication will be written. (I.E. writing skills are particularly valuable.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Jason Fried, founder of Basecamp (and a bunch of other stuff) wrote in his book &lt;a href=&quot;https://www.goodreads.com/book/show/6732019-rework&quot;&gt;Rework&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;“If you are trying to decide among a few people to fill a position hire the best writer. it doesn’t matter if the person is marketer, salesperson, designer, programmer, or whatever, their writing skills will pay off. That’s because being a good writer is about more than writing clear writing.&lt;/p&gt;

  &lt;p&gt;Clear writing is a sign of clear thinking. great writers know how to communicate. they make things easy to understand. they can put themselves in someone else’s shoes. they know what to omit. And those are qualities you want in any candidate.&lt;/p&gt;

  &lt;p&gt;Writing is making a comeback all over our society… Writing is today’s currency for good ideas.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, writing is valuable. Write stuff, and make it easy to find.&lt;/p&gt;

&lt;p&gt;To further make the point, &lt;a href=&quot;https://devspade.com/writing-will-always-be-the-hot-sauce/&quot;&gt;Brendon Caffery&lt;/a&gt; in &lt;em&gt;Writing Will Always Be the Hot Sauce&lt;/em&gt; says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Communication is key to any team environment. These days engineers are expected to engage via Slack, JIRA, GitHub, Basecamp, Trello, Asana, Google Docs, StackOverflow, and more. Oh, and also email and Twitter and LinkedIn and…and…and. What’s the common algorithm to solving problems on these platforms? What’s the common API? Writing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Protip: Once you’ve written anything online (Like on Medium or a personal blog) add a link to it in the signature of your email address. Now when you email someone, if they want to learn a bit more about you, it’s easy to do so.&lt;/p&gt;

&lt;p&gt;Two or three posts on Medium or a simple personal website will sufficie.&lt;/p&gt;

&lt;h2 id=&quot;combing-those-jobs-with-that-telegraphed-competence-cold-outreach-&quot;&gt;Combing those jobs with that telegraphed competence: Cold Outreach 🥶&lt;/h2&gt;

&lt;p&gt;OK, you’ve got some companies and roles you’re interested in. You’ve laid the groundwork for telegraphing competence by writing online and making it discoverable, &lt;em&gt;and you’ve added a link to your website to your email signature&lt;/em&gt;. It’s time to start writing emails to strangers.&lt;/p&gt;

&lt;p&gt;Cold outreach. It’s hard, right?&lt;/p&gt;

&lt;iframe src=&quot;https://giphy.com/embed/9n5UIlRppk91e&quot; width=&quot;480&quot; height=&quot;480&quot; frameborder=&quot;0&quot; class=&quot;giphy-embed&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href=&quot;https://giphy.com/gifs/mrw-eye-anyone-9n5UIlRppk91e&quot;&gt;&lt;i&gt;GIPHY&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I agree. If you don’t like sending people emails out of the blue, I have a suggestion for you. &lt;em&gt;Role-playing&lt;/em&gt;!&lt;/p&gt;

&lt;p&gt;You’re going to roll-play someone who likes to do sales-y activities, and &lt;em&gt;that&lt;/em&gt; person is going to get you a job.&lt;/p&gt;

&lt;iframe src=&quot;https://giphy.com/embed/uCqcY1UZZZUys&quot; width=&quot;480&quot; height=&quot;345&quot; frameborder=&quot;0&quot; class=&quot;giphy-embed&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href=&quot;https://giphy.com/gifs/win-cosplay-costume-uCqcY1UZZZUys&quot;&gt;&lt;i&gt;GIPHY&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’re “selling” the product of your own development skills. So, get into a sales mindset, and you’ll do just fine.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;AH JOSH I AM NOT INTO SALES! Sounds so smarmy and cheesy and self-serving. I just want to find a healthy team where I can make meaningful contributions to the company, my team-mates, and the customers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Right! And to do this, you need to imagine things from the perspective of a hiring manager or team lead who might hire you.&lt;sup id=&quot;fnref:bad-hire&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:bad-hire&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; This person is busy, has a ton of priorities, and is hiring because they have an urgent need for more engineers. &lt;em&gt;This person probably dislikes dealing with hiring as much as you dislike dealing with job hunting&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;To obtain this empathetic perspective, start here: &lt;a href=&quot;https://news.ycombinator.com/item?id=5476363&quot;&gt;Dear HN “Who’s Hiring” responders&lt;/a&gt;, and read the entire comment &lt;em&gt;carefully&lt;/em&gt;. Then go apply it in your emails.&lt;/p&gt;

&lt;h2 id=&quot;cold-outreach-is-an-umbrella-term-for-a-more-complicated-operation-&quot;&gt;Cold Outreach is an Umbrella Term for a More Complicated Operation ⛱&lt;/h2&gt;

&lt;p&gt;I see the whole process of cold outreach as a collection of microskills, just like a complicated operation in Ruby or Javascript. You break the big complex task into small, managable sub-operations.&lt;/p&gt;

&lt;p&gt;For example, if the big complex operation is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;get a job&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then this might be &lt;em&gt;a&lt;/em&gt; progression through the sub-operations&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Find people who know more about the industry, company, or job market than you do&lt;/li&gt;
  &lt;li&gt;Find means of contacting these people, for example, email&lt;/li&gt;
  &lt;li&gt;Write emails that lead to further emails&lt;/li&gt;
  &lt;li&gt;Have conversations where someone thinks you might be a good addition to the team&lt;/li&gt;
  &lt;li&gt;Telegraph technical proficiency in the course of email correspondence&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;etc.&lt;/p&gt;

&lt;p&gt;All of those are tiny sub-skills of the job-hunting process. if you can do the first three, getting a job is just a matter of volume. One email or one conversation won’t turn into a job, but ten might.&lt;/p&gt;

&lt;p&gt;Twenty almost certainly will.&lt;/p&gt;

&lt;p&gt;Turing has a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#cold-outreach&lt;/code&gt; channel. Join it.&lt;/p&gt;

&lt;p&gt;The hardest part of cold outreach is just starting it. There’s 100 things you can do that make you &lt;em&gt;think&lt;/em&gt; you’re making progress, but besides actually &lt;em&gt;sending an email to a stranger&lt;/em&gt; none of it is effective.&lt;/p&gt;

&lt;p&gt;Patrick McKenzie is one of my favorite folks on the internet. He wrote &lt;a href=&quot;http://www.kalzumeus.com/2012/01/23/salary-negotiation/&quot;&gt;this piece on salary negotiation&lt;/a&gt; which is &lt;em&gt;still&lt;/em&gt; the gold standard on the topic.&lt;/p&gt;

&lt;p&gt;Even though you’re not “negotiating salary” until you get an offer, you are negotiating it by proving your worth and showing you have value to bring to a company, and by being professional in your communications. All of that can be done in the first email.&lt;/p&gt;

&lt;p&gt;Here’s an inspirational tweet:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Retweeting for endorsement. (Never too old for this! I started running businesses in 2006 and I think my first truly cold email was ~2015 or so.) &lt;a href=&quot;https://t.co/L6ZJCYpo8d&quot;&gt;https://t.co/L6ZJCYpo8d&lt;/a&gt;&lt;/p&gt;&amp;mdash; Patrick McKenzie (@patio11) &lt;a href=&quot;https://twitter.com/patio11/status/930353734953058305?ref_src=twsrc%5Etfw&quot;&gt;November 14, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;Patrick McKenzie (&lt;a href=&quot;https://twitter.com/patio11&quot;&gt;@patio11&lt;/a&gt;) is a good person to follow on the internet&lt;/p&gt;

&lt;p&gt;He wrote &lt;a href=&quot;https://stripe.com/atlas/guides/starting-sales&quot;&gt;https://stripe.com/atlas/guides/starting-sales&lt;/a&gt;. Scroll down to “How should you communicate with customers?”, and mentally swap “customers” with “potential employers”, and go from there. within reason.&lt;/p&gt;

&lt;p&gt;I recommend you follow &lt;a href=&quot;https://twitter.com/sehurlburt&quot;&gt;Stephanie Hurlburt&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Something people don&amp;#39;t realize:&lt;br /&gt;&lt;br /&gt;Most people, even some with a lot of followers, barely get any messages. And they *love* to help you.&lt;/p&gt;&amp;mdash; Stephanie Hurlburt (@sehurlburt) &lt;a href=&quot;https://twitter.com/sehurlburt/status/889003730175016960?ref_src=twsrc%5Etfw&quot;&gt;July 23, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;There’s tons of people that she retweets that are tweeting some variation of&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’d love to help people with {topic}, and DM’s are welcome. &lt;em&gt;please ask me for help&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Reaching out to these people would be a good place to get practice w/cold outreach.&lt;/p&gt;

&lt;p&gt;I have a bit of an advantage because I’ve done sales in the past. Most of the skills for sales translate well to getting a job, so… as much as you can, imagine you’re a sales person, but the product you’re selling is &lt;em&gt;your own skills as a developer&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-craiglist-penis-effect-and-why-theres-less-competition-than-you-might-think&quot;&gt;The Craiglist Penis Effect, and Why There’s Less Competition Than You Might Think&lt;/h2&gt;

&lt;p&gt;Years ago, I was helping review applications for a role my team had. It was one of the sweet roles you’d find on &lt;a href=&quot;https://weworkremotely.com/&quot;&gt;https://weworkremotely.com/&lt;/a&gt;. We got 300 applications within a few days.&lt;/p&gt;

&lt;p&gt;I dismissed 270 of them out of hand, based on the email preview alone. They all began with either&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Dear Sir or Madame…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or were some variation of&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Here’s my LinkedIn/CV, let me know if you’re interested&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Why did I dismiss these out of hand?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Zero effort to differentiate themselves&lt;/li&gt;
  &lt;li&gt;They &lt;em&gt;obviously&lt;/em&gt; did zero research on our company, our team, or our product&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this situation, how did someone differentiate themselves?&lt;/p&gt;

&lt;p&gt;We had one person email me directly with questions about the role before they applied. They asked good questions, and did at least a few minutes of research on the role. I floated their application to the top and was pulling to hire them, without knowing anything else about them, soley based on this little bit of proactive effort.&lt;/p&gt;

&lt;p&gt;This “little bit of effort” phenomena is sometimes called &lt;a href=&quot;https://www.iwillteachyoutoberich.com/blog/the-craigslist-penis-effect/&quot;&gt;The Craigslist Penis Effect&lt;/a&gt; (that link is safe to click).&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Craigslist Penis Effect describes situations where everyone else is so horrible that, by being even half-decent, you can out-do everyone else.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I propose that you view getting a good job as a numbers game:&lt;/p&gt;

&lt;p&gt;300 applications per job minus 90% of those applications (because most job applications are a dumpster fire) leaves removes 270 of the applications, leaving 30 tolerable applications per job.&lt;/p&gt;

&lt;p&gt;So, if you’re in the 50% percentile of the remaining applications, every dev role comes down to you and fifteen other people.&lt;/p&gt;

&lt;p&gt;As a Turing grad, i’d bet you’re closer to 80th percentile for that pool, so you’re now down to competing with ~6 people for every one of those jobs.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;In summary, get good at:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;showcasing your work (I.E. a personal website that proves you can write some tolerable code, or have an aptitude to learn)&lt;/li&gt;
  &lt;li&gt;telegraphing competence in basic email communications&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Write personalized, engaging emails to fifteen people, and you will &lt;em&gt;guaranteed&lt;/em&gt; have a collection of interesting email responses, and will have a few interviews lined up.&lt;/p&gt;

&lt;p&gt;For another take on the same idea, read &lt;a href=&quot;https://www.joelonsoftware.com/2005/01/27/news-58/&quot;&gt;Everyone thinks they’re hiring the top 1% (Joel Spolsky)&lt;/a&gt;. The numbers are far more favorable to you than you may be inclined to think.&lt;/p&gt;

&lt;h2 id=&quot;faq&quot;&gt;FAQ&lt;/h2&gt;

&lt;p&gt;A guide like this leads to questions, of course. If your questions are not answered here, send them my way and I’ll add them!&lt;/p&gt;

&lt;h4 id=&quot;who-would-you-contact-just-the-hiring-managers-or-does-it-make-just-as-much-sense-to-reach-out-to-my-potential-peers&quot;&gt;Who would you contact? Just the hiring managers, or does it make just as much sense to reach out to my potential peers.&lt;/h4&gt;

&lt;p&gt;I’d reach out to potential future peers first, with something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hi there, I’m doing some research on {your company}. Do you like the work that you do? Do you think it’s likely you’ll still be there in a year or two?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And, if they say&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;No, I will not be here in a year&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s a great spot to ask why. Maybe you don’t want to join the team either!&lt;/p&gt;

&lt;h4 id=&quot;any-thoughts-on-best-ways-to-get-the-right-email-address&quot;&gt;Any thoughts on best ways to get the right email address?&lt;/h4&gt;

&lt;p&gt;Look up employees on LinkedIn; some of them will link out to twitter or personal websites or github or something on their linkedin page.&lt;/p&gt;

&lt;p&gt;Then start clicking around, trying to find a way to get in touch. (Github profile names are often the same as twitter handles, and often list a personal email address in the profile, for example)&lt;/p&gt;

&lt;p&gt;If they have their email address listed publicly, it’s fair game to shoot them an email.&lt;/p&gt;

&lt;h4 id=&quot;is-there-potential-for-cold-outreach-to-do-harm-google-for-instance-receives-over-2-million-applications-per-year-i-could-imagine-this-leading-to-feelings-of-frustration-from-hms-even-when-receiving-a-well-thought-out-email&quot;&gt;Is there potential for cold outreach to do harm? Google, for instance, receives over 2 million applications per year. I could imagine this leading to feelings of frustration from HMs even when receiving a well-thought-out email.&lt;/h4&gt;

&lt;p&gt;I am sure, but the vastly more probable outcome is you send them an email, and they don’t write back.&lt;/p&gt;

&lt;p&gt;I always end these emails with:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;No doubt you’re super busy right now, so I’ll bump this email up your inbox in a week or so if I don’t hear back&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Josh&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;and… a week later, if I don’t hear back, I’ll send a very short follow-up, and then leave it at that.&lt;/p&gt;

&lt;p&gt;I’ve done a lot of cold outreach, I’ve had plenty of non-responses, but never seen anything bad come from it.&lt;/p&gt;

&lt;p&gt;I’ve also worked with quite a few other people through the above process, and never seen bad results.&lt;/p&gt;

&lt;p&gt;It’s a statistical guarantee that if you send enough of these, you’ll eventually catch someone on a really bad day, but even then they’ll probably just say:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;don’t email me&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and then you don’t!&lt;/p&gt;

&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;When I wrote this, my website had quite a bit less going on. This website could be an intimidating model to copy, if someone is just starting out writing online. I promise that this website has as humble beginnings as any you’ve ever seen. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:bad-hire&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;In &lt;a href=&quot;/how-to-write-a-letter-of-recommendation-for-yourself&quot;&gt;How To Write A Letter of Recommendation for Yourself&lt;/a&gt;, I estimated the cost of a bad hire to be $100,000 and nine months of lost time. An individual who knows very well “of what he speaks”, upon reading the article said: “I can attest that your $100k cost to company for a bad hire is very conservative!” &lt;a href=&quot;#fnref:bad-hire&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>2018 Reading Review &amp; Recommendations</title>
   <link href="https://josh.works/recommended-books-from-2018"/>
   <updated>2019-02-25T13:00:00+00:00</updated>
   <id>https://josh.works/2018_books</id>
   <content type="html">&lt;p&gt;I read many books in 2018. I’m listing them out here, along with recommendations. Here’s the recommendation “key”:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;👍 = I recommend this book. (This metric is intentionally fuzzy.)&lt;/li&gt;
  &lt;li&gt;😔 = This book influenced my mental model of the world/reality/myself&lt;/li&gt;
  &lt;li&gt;🏢 = Book topic is architecture and/or urbanism&lt;/li&gt;
  &lt;li&gt;💵 = Book topic is finance/economics/politics&lt;/li&gt;
  &lt;li&gt;😫 = This book is hard to get through. Lengthy and/or academic&lt;/li&gt;
  &lt;li&gt;🐲 = Fiction (most of the fiction I read had fantastic(al) creatures in them, hence the dragon)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want anything of value from this list, quickly skim through it. If any of the book topics/titles look of interest to you, consider reading. If a book doesn’t look interesting to you, but I’ve strongly recommended it, you should read it. :)&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;tl;dr&lt;/strong&gt; of the subsequent list of 70+ books is:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Read &lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Read &lt;a href=&quot;https://www.goodreads.com/book/show/32191706-the-color-of-law&quot;&gt;The Color of Law: A Forgotten History of How Our Government Segregated America&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;If you’re a parent, or have friends who are parents, or might someday be a parent, consider reading &lt;a href=&quot;https://www.goodreads.com/book/show/23168823-how-to-raise-an-adult&quot;&gt;How to Raise an Adult: Break Free of the Overparenting Trap and Prepare Your Kid for Success&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I did this last year as well: &lt;a href=&quot;/recommended-books-from-2017&quot;&gt;Recommended books from 2017&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;notes-and-themes&quot;&gt;Notes and Themes&lt;/h1&gt;

&lt;p&gt;I re-read &lt;em&gt;The Problem of Political Authority&lt;/em&gt;, which continues to be my &lt;a href=&quot;/recommended-reading-original-list#uncomfortable-books&quot;&gt;most recommended book&lt;/a&gt;. It contains straight-forward, elegant prose, provocative ideas, and perceptive analysis. What else could one want in a book?&lt;/p&gt;

&lt;p&gt;I added a few lines on some of these books. Most I didn’t say anything about. I could have spoken at length on many, many more of these books, but it’s daunting to do so on such a list. This makes me want to re-do how I record thoughts on books. Hm.&lt;/p&gt;

&lt;p&gt;I read (and finished) the &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Dresden_Files&quot;&gt;Dresden Files&lt;/a&gt; series. All fifteen of them. I enjoyed the series immensely, though I didn’t mark them with a 👍 - if you’re into fiction, film noir, and crime-fighting wizards, this series is for you. If not, don’t waste your time. If you think reading should only be non-fiction to make you smarter, or “hard” fiction, to make you smarter - I disagree. The Dresden files were like candy. Easy, bite-sized, not complex, and delightful. Won’t kill you in small doses.&lt;/p&gt;

&lt;h2 id=&quot;january&quot;&gt;January&lt;/h2&gt;

&lt;h4 id=&quot;dead-beat-the-dresden-files-7-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/17683.Dead_Beat&quot;&gt;Dead Beat (The Dresden Files, #7)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;the-house-of-morgan-an-american-banking-dynasty-and-the-rise-of-modern-finance---&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/16131.The_House_of_Morgan&quot;&gt;The House of Morgan: An American Banking Dynasty and the Rise of Modern Finance&lt;/a&gt; 😔 💵 😫&lt;/h4&gt;

&lt;p&gt;This is Ron Chernow’s first biography. Ron Chernow has authored many other biographies, including the Hamilton biography that inspired the musical. The institution we know today as “JP Morgan Chase” had an interesting start and history. After reading &lt;em&gt;Money, Bank Credit, and Economic Cycles&lt;/em&gt; &lt;a href=&quot;/recommended-reading-original-list#money-bank-credit-and-economic-cycles&quot;&gt;here’s my analysis on MBCEC, for the curious&lt;/a&gt;, I have little appreciation for large banks doing their leveraged buyouts and functionally fraudulent activities, but it’s still interesting to know the basics of such a prominent institution in America.&lt;/p&gt;

&lt;p&gt;For a while, the bank had more of a say in international relations than the US government did. The government had limited access to capital, and the bank could provide it, so large banks played a role in “cracking open” south/central America and Asia, often with many deleterious effects in those regions.&lt;/p&gt;

&lt;h4 id=&quot;the-death-and-life-of-great-american-cities----&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/30833.The_Death_and_Life_of_Great_American_Cities&quot;&gt;The Death and Life of Great American Cities&lt;/a&gt; 😔 👍 🏢 💵&lt;/h4&gt;

&lt;p&gt;Jane Jacobs is a hero. She &lt;em&gt;loves&lt;/em&gt; cities, and when you’re done reading this book, you might love them too. She identified huge problems in the 50’s with the profession of “city planning”, and most of the industry is clueless to her critiques, bumbling along, making the same errors they always did. (Sorta like doctors draining “bad humors”.)&lt;/p&gt;

&lt;p&gt;I think most of the built environment in America is headed straight for insolvency and bankruptcy, and if there was a time to change bad practices to good ones, it passed long ago. But this book is still a must-read.&lt;/p&gt;

&lt;h4 id=&quot;crazy-busy-a-mercifully-short-book-about-a-really-big-problem&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/17152690-crazy-busy&quot;&gt;Crazy Busy: A (Mercifully) Short Book about a (Really) Big Problem&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;preludes--nocturnes-the-sandman-1--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/23754.Preludes_Nocturnes&quot;&gt;Preludes &amp;amp; Nocturnes (The Sandman, #1)&lt;/a&gt; 👍 🐲&lt;/h4&gt;

&lt;p&gt;This is the first comic book I’ve read in many years. I loved it. I wish my library had the rest of the series. 
&lt;!--more--&gt;&lt;/p&gt;

&lt;h4 id=&quot;in-living-color-images-of-christ-and-the-means-of-grace--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6545108-in-living-color&quot;&gt;In Living Color: Images of Christ and the Means of Grace&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;h4 id=&quot;black-hole-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/38333.Black_Hole&quot;&gt;Black Hole&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;the-steps-of-pittsburgh-portrait-of-a-city--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/136310.The_Steps_of_Pittsburgh&quot;&gt;The Steps of Pittsburgh: Portrait of a City&lt;/a&gt; 😔 🏢&lt;/h4&gt;

&lt;h4 id=&quot;-ninety-percent-of-everything-inside-shipping-the-invisible-industry-that-puts-clothes-on-your-back-gas-in-your-car-and-food-on-your-plate&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/16044961-ninety-percent-of-everything&quot;&gt; Ninety Percent of Everything: Inside Shipping, the Invisible Industry That Puts Clothes on Your Back, Gas in Your Car, and Food on Your Plate&lt;/a&gt;&lt;/h4&gt;

&lt;h2 id=&quot;february&quot;&gt;February&lt;/h2&gt;

&lt;h4 id=&quot;life-in-code-a-personal-history-of-technology-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/31450584-life-in-code&quot;&gt;Life in Code: A Personal History of Technology&lt;/a&gt; 👍&lt;/h4&gt;

&lt;p&gt;Despite what the technology industry looks like today, women were the original pioneers of the industry. &lt;a href=&quot;https://outline.com/W8cdVE&quot;&gt;The Secret History of Women in Coding, by the New York Times&lt;/a&gt; is a fantastic entry-point to women in software development.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Life in Code&lt;/em&gt; is an auto-biographical by Ellen Ullman take on a women in technology from a fairly recent perspective (1970s to today). When I have kids, I hope they read this book.&lt;/p&gt;

&lt;h4 id=&quot;proven-guilty-the-dresden-files-8-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/91474.Proven_Guilty&quot;&gt;Proven Guilty (The Dresden Files, #8)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;the-panic-of-1819-reactions-and-policies--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/747553.The_Panic_of_1819&quot;&gt;The Panic of 1819: Reactions and Policies&lt;/a&gt; 💵 😫&lt;/h4&gt;

&lt;h4 id=&quot;we--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/76171.We&quot;&gt;We&lt;/a&gt; 👍 💵&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;We&lt;/em&gt;, written by {author}, was the intellectual seed that gave rise to &lt;em&gt;1984&lt;/em&gt;. The two compare/contrast nicely.&lt;/p&gt;

&lt;h4 id=&quot;white-night-the-dresden-files-9-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/91475.White_Night&quot;&gt;White Night (The Dresden Files, #9)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;small-favor-the-dresden-files-10-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/927979.Small_Favor&quot;&gt;Small Favor (The Dresden Files, #10)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;radicals-chasing-utopia-inside-the-rogue-movements-trying-to-change-the-world-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/35335226-radicals-chasing-utopia&quot;&gt;Radicals Chasing Utopia: Inside the Rogue Movements Trying to Change the World&lt;/a&gt; 💵&lt;/h4&gt;

&lt;p&gt;I love strange things, and there’s a lot of “strange” (political) movements around the world. This was an interesting look at them. Who knows how the political realm will shake out over the next few decades, but it will likely look very different from today, and some of these movements may be much more prominent, for better or worse.&lt;/p&gt;

&lt;h4 id=&quot;how-buildings-learn-what-happens-after-theyre-built---&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/38310.How_Buildings_Learn&quot;&gt;How Buildings Learn: What Happens After They’re Built&lt;/a&gt; 😔 👍 🏢&lt;/h4&gt;

&lt;p&gt;One of the best books I read in 2018. Here’s the shocker: buildings tend to change over time. They get additions, modifications, renovations, etc. It’s a deeply &lt;em&gt;normal&lt;/em&gt; thing, and our society has written laws in such a way as to pretend buildings never change, or if they do change, it should be in only very minor ways, or they need approval of someone else before changing.&lt;/p&gt;

&lt;p&gt;I wish this were not so.&lt;/p&gt;

&lt;p&gt;This book is full of beautiful pictures and diagrams, and will give you a new appreciation for kinda ugly buildings.&lt;/p&gt;

&lt;h2 id=&quot;march&quot;&gt;March&lt;/h2&gt;

&lt;h4 id=&quot;getting-to-yes-negotiating-agreement-without-giving-in--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/313605.Getting_to_Yes&quot;&gt;Getting to Yes: Negotiating Agreement Without Giving In&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;p&gt;This book is what every subsequent book on negotiation strives to be. If you have any interest in getting along with people, this is as good a start as you can get.&lt;/p&gt;

&lt;h4 id=&quot;skin-in-the-game-the-hidden-asymmetries-in-daily-life&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/36064445-skin-in-the-game&quot;&gt;Skin in the Game: The Hidden Asymmetries in Daily Life&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;cryptonomicon&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/816.Cryptonomicon&quot;&gt;Cryptonomicon&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;zen-and-the-art-of-motorcycle-maintenance-an-inquiry-into-values-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/629.Zen_and_the_Art_of_Motorcycle_Maintenance&quot;&gt;Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values&lt;/a&gt; 😫&lt;/h4&gt;

&lt;h4 id=&quot;a-wrinkle-in-time-time-quintet-1-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/33574273-a-wrinkle-in-time&quot;&gt;A Wrinkle in Time (Time Quintet, #1)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h2 id=&quot;april&quot;&gt;April&lt;/h2&gt;

&lt;h4 id=&quot;breaking-smart---season-1-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/26097555-breaking-smart---season-1&quot;&gt;Breaking Smart - Season 1&lt;/a&gt; 💵&lt;/h4&gt;

&lt;h4 id=&quot;turn-coat-the-dresden-files-11-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/3475161-turn-coat&quot;&gt;Turn Coat (The Dresden Files, #11)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;the-color-of-law-a-forgotten-history-of-how-our-government-segregated-america---&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/32191706-the-color-of-law&quot;&gt;The Color of Law: A Forgotten History of How Our Government Segregated America&lt;/a&gt; 😔 👍 💵&lt;/h4&gt;

&lt;p&gt;Exceptional. One of my most recommended books of the year. &lt;a href=&quot;https://www.goodreads.com/review/show/2626783774?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;From a Goodreads review&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A succinct history of de jure segregation in America, The Color of Law argues that anti-Black governmental policies, not de facto segregation, led to the nation’s racially divided cities and suburbs.&lt;/p&gt;

  &lt;p&gt;In terse prose, Richard Rothstein details the underhanded ways in which Republican and Democratic politicians alike imposed and enforced racial segregation across the U.S. throughout the twentieth century, from explicit racial zoning to state-sponsored violence and blockbusting.&lt;/p&gt;

  &lt;p&gt;Rothstein lucidly conveys how federal, state, and local laws worked in conjunction to restrict Black people’s options for housing nationwide; all his points are well supported by extensive research, and his focus on all of the country’s regions is impressive. Accompanying descriptions of legislation are anecdotes that illustrate the devastating effects de jure segregation has had on Black families and communities, saving the book from reading as dry. Well worth reading.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4 id=&quot;digital-gold-bitcoin-and-the-inside-story-of-the-misfits-and-millionaires-trying-to-reinvent-money&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/23546676-digital-gold&quot;&gt;Digital Gold: Bitcoin and the Inside Story of the Misfits and Millionaires Trying to Reinvent Money&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;a-gentleman-in-moscow--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/29430012-a-gentleman-in-moscow&quot;&gt;A Gentleman in Moscow&lt;/a&gt; 👍 🐲&lt;/h4&gt;

&lt;p&gt;My sister and I both wanted to read Anna Karenina, and she suggested reading &lt;em&gt;A Gentleman in Moscow&lt;/em&gt; to get some context and understanding of Russia, Russian literature, etc. This was a delightful read.&lt;/p&gt;

&lt;h4 id=&quot;make-your-bed-little-things-that-can-change-your-lifeand-maybe-the-world&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/31423133-make-your-bed&quot;&gt;Make Your Bed: Little Things That Can Change Your Life…And Maybe the World&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;the-boy-who-harnessed-the-wind&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/11735875-the-boy-who-harnessed-the-wind&quot;&gt;The Boy Who Harnessed the Wind&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;the-reason-for-god-belief-in-an-age-of-skepticism--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/1858013.The_Reason_for_God&quot;&gt;The Reason for God: Belief in an Age of Skepticism&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;h2 id=&quot;may&quot;&gt;May&lt;/h2&gt;

&lt;h4 id=&quot;a-call-to-prayer-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/1030140.A_Call_to_Prayer&quot;&gt;A Call to Prayer&lt;/a&gt; 😔&lt;/h4&gt;

&lt;h4 id=&quot;the-obstacle-is-the-way-the-timeless-art-of-turning-trials-into-triumph&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/18668059-the-obstacle-is-the-way&quot;&gt;The Obstacle Is the Way: The Timeless Art of Turning Trials into Triumph&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;anna-karenina--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/15823480-anna-karenina&quot;&gt;Anna Karenina&lt;/a&gt; 👍 🐲&lt;/h4&gt;

&lt;p&gt;This was my first time reading Tolstoy as an adult, and it exceeded every expectation. The chapters were &lt;em&gt;tiny&lt;/em&gt;, so despite how much of the book took place inside the character’s heads, I always felt like I was making progress through the book.&lt;/p&gt;

&lt;p&gt;Tolstoy has human nature nailed.&lt;/p&gt;

&lt;h4 id=&quot;changes-the-dresden-files-12-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6585201-changes&quot;&gt;Changes (The Dresden Files, #12)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;how-children-fail--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/573009.How_Children_Fail&quot;&gt;How Children Fail&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;p&gt;This was a sad read. In the same vein as &lt;em&gt;The Life and Death of Great American Cities&lt;/em&gt;, keen observers of various domains have identified problems (and solutions) to large, society-wide problems, &lt;em&gt;back in the 1960s&lt;/em&gt;. And we’ve rediscovered those problems regularly ever sense, and act as if there is no solution.&lt;/p&gt;

&lt;p&gt;This was a short read, but riveting.&lt;/p&gt;

&lt;h4 id=&quot;annihilation-southern-reach-1-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/17934530-annihilation&quot;&gt;Annihilation (Southern Reach, #1)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;authority-southern-reach-2-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/18077769-authority&quot;&gt;Authority (Southern Reach, #2)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h2 id=&quot;june&quot;&gt;June&lt;/h2&gt;

&lt;h4 id=&quot;the-meaning-of-marriage-facing-the-complexities-of-commitment-with-the-wisdom-of-god--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/13000611-the-meaning-of-marriage&quot;&gt;The Meaning of Marriage: Facing the Complexities of Commitment with the Wisdom of God&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;p&gt;If you are married, or in a relationship, it would behoove you to try to engage in that relationship well. Timothy Keller writes from a Christian perspective, but I’d say anyone could benefit from this book, even if they’re not a Christian.&lt;/p&gt;

&lt;p&gt;If you are married or in a relationship, and you’ve not read a book lately on relationships or marriage, I’d encourage you to rectify that situation.&lt;/p&gt;

&lt;h4 id=&quot;obliquity-why-our-goals-are-best-achieved-indirectly-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/7888001-obliquity&quot;&gt;Obliquity: Why Our Goals Are Best Achieved Indirectly&lt;/a&gt; 😔&lt;/h4&gt;

&lt;h4 id=&quot;make-bootstrappers-handbook&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/39165640-make&quot;&gt;MAKE: Bootstrapper’s Handbook&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;ghost-story-the-dresden-files13-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/8058301-ghost-story&quot;&gt;Ghost Story (The Dresden Files,#13)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;cold-days-the-dresden-files-14-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/12216302-cold-days&quot;&gt;Cold Days (The Dresden Files, #14)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;marriage-matters-extraordinary-change-through-ordinary-moments-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/19098910-marriage-matters&quot;&gt;Marriage Matters: Extraordinary Change through Ordinary Moments&lt;/a&gt; 👍&lt;/h4&gt;

&lt;h4 id=&quot;crash-early-crash-often-ribbonfarm-roughs-book-3-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/35673227-crash-early-crash-often&quot;&gt;Crash Early, Crash Often (Ribbonfarm Roughs Book 3)&lt;/a&gt; 💵&lt;/h4&gt;

&lt;h2 id=&quot;july&quot;&gt;July&lt;/h2&gt;

&lt;h4 id=&quot;wool-omnibus-silo-1-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/13453029-wool-omnibus&quot;&gt;Wool Omnibus (Silo, #1)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;the-godly-mans-picture&quot;&gt;&lt;a href=&quot;https://www.goodreawds.com/book/show/20762680-the-godly-man-s-picture&quot;&gt;The Godly Man’s Picture&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;skin-game-the-dresden-files-15-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/19486421-skin-game&quot;&gt;Skin Game (The Dresden Files, #15)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;his-majestys-dragon-temeraire-1--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/28876.His_Majesty_s_Dragon&quot;&gt;His Majesty’s Dragon (Temeraire, #1)&lt;/a&gt; 👍 🐲&lt;/h4&gt;

&lt;h4 id=&quot;the-checklist-manifesto-how-to-get-things-right--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6667514-the-checklist-manifesto&quot;&gt;The Checklist Manifesto: How to Get Things Right&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;h4 id=&quot;the-simple-path-to-wealth-your-road-map-to-financial-independence-and-a-rich-free-life--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/30646587-the-simple-path-to-wealth&quot;&gt;The Simple Path to Wealth: Your road map to financial independence and a rich, free life&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;p&gt;This book takes a complicated topic and boils it down to some simple, actionable steps. I’d argue this is a good entry point to anyone wanting to square away their financial house. If the topic is of interest to you, read this book.&lt;/p&gt;

&lt;h4 id=&quot;option-b-facing-adversity-building-resilience-and-finding-joy--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/32938155-option-b&quot;&gt;Option B: Facing Adversity, Building Resilience, and Finding Joy&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;h2 id=&quot;august&quot;&gt;August&lt;/h2&gt;

&lt;h4 id=&quot;the-nature-of-software-development-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/23016056-the-nature-of-software-development&quot;&gt;The Nature of Software Development&lt;/a&gt; 😔&lt;/h4&gt;

&lt;h4 id=&quot;what-if-serious-scientific-answers-to-absurd-hypothetical-questions-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/21413662-what-if&quot;&gt;What If?: Serious Scientific Answers to Absurd Hypothetical Questions&lt;/a&gt; 👍&lt;/h4&gt;

&lt;h4 id=&quot;the-problem-of-political-authority-an-examination-of-the-right-to-coerce-and-the-duty-to-obey---&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt; 😔 👍👍👍 💵&lt;/h4&gt;

&lt;p&gt;Still the best book I’ve read in the last few years. Please read this.&lt;/p&gt;

&lt;h4 id=&quot;just-ride-a-radically-practical-guide-to-riding-your-bike-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/9189678-just-ride&quot;&gt;Just Ride: A Radically Practical Guide to Riding Your Bike&lt;/a&gt; 👍&lt;/h4&gt;

&lt;h4 id=&quot;the-case-against-sugar--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/29874881-the-case-against-sugar&quot;&gt;The Case Against Sugar&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;p&gt;Gary Taubes is a journalist, and pieces together an interesting narrative about the story of Sugar in America. Its compelling, and has led to change in how I eat. Read the Goodreads overview for more info, but the &lt;em&gt;tl;dr&lt;/em&gt; is sugar causes a hormonal response in your body that can eventually lead to all the negative effects with associate with an unhealthy diet.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;the story is so much more complex than “calories in vs. calories out”.&lt;/em&gt;&lt;/p&gt;

&lt;h4 id=&quot;why-we-sleep-unlocking-the-power-of-sleep-and-dreams--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/34466963-why-we-sleep&quot;&gt;Why We Sleep: Unlocking the Power of Sleep and Dreams&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;p&gt;This book has led to me not setting an alarm as often as possible, prioritizing an early bedtime, and if my body decides it wants to sleep for nine or ten hours, I go for it.&lt;/p&gt;

&lt;p&gt;I’ve improved my sleep hygiene, I am sleeping more, and I’m more thankful for the sleep that I do get. This book has changed my life, it could change yours.&lt;/p&gt;

&lt;h4 id=&quot;airbnb-your-life-the-host-edition&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/31295718-airbnb-your-life&quot;&gt;Airbnb Your Life: The Host Edition&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;dark-matter--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/27833670-dark-matter&quot;&gt;Dark Matter&lt;/a&gt; 👍 🐲&lt;/h4&gt;

&lt;h2 id=&quot;september&quot;&gt;September&lt;/h2&gt;

&lt;h4 id=&quot;the-ultimate-guide-to-remote-work-how-to-grow-manage-and-work-with-remote-teams-zapier-app-guides-book-3&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25266259-the-ultimate-guide-to-remote-work&quot;&gt;The Ultimate Guide to Remote Work: How to Grow, Manage and Work with Remote Teams (Zapier App Guides Book 3)&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;the-sorrows-of-empire-militarism-secrecy-and-the-end-of-the-republic---&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40718.The_Sorrows_of_Empire&quot;&gt;The Sorrows of Empire: Militarism, Secrecy, and the End of the Republic&lt;/a&gt; 😔 👍 💵&lt;/h4&gt;

&lt;p&gt;Chalmers Johnson for the win. The government of the United States has been in a 19 year war in Afghanistan and a sixteen year war in Iraq. This book helps explain why, and what might be to come.&lt;/p&gt;

&lt;h4 id=&quot;blowback-the-costs-and-consequences-of-american-empire---&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40709.Blowback&quot;&gt;Blowback: The Costs and Consequences of American Empire&lt;/a&gt; 😔 👍 💵&lt;/h4&gt;

&lt;p&gt;Chalmers Johnson is my newest favorite author. Unfortunatly he died a few years ago, but he’s been talking about the implications of US military colonialism for a long time. He wrote this title the year before 9/11. &lt;em&gt;He saw it coming and wrote a book about it&lt;/em&gt;. He thought 9/11 might lead to a reform of US military policy, but it didn’t. The US just doubled down on a bad thing.&lt;/p&gt;

&lt;p&gt;Fortunately, American military colonialism will end soon enough as the USA goes bankrupt in part because of this colonialism, and the rest of the world will be much improved when this happens.&lt;/p&gt;

&lt;h4 id=&quot;the-mysteries-of-money-ribbonfarm-the-rust-age-ribbonfarm-roughs-book-7-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/36198931-the-mysteries-of-money&quot;&gt;The Mysteries of Money: Ribbonfarm: The Rust Age (Ribbonfarm Roughs Book 7)&lt;/a&gt; 💵&lt;/h4&gt;

&lt;h4 id=&quot;the-name-of-the-wind-the-kingkiller-chronicle-1--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/186074.The_Name_of_the_Wind&quot;&gt;The Name of the Wind (The Kingkiller Chronicle, #1)&lt;/a&gt; 👍 🐲&lt;/h4&gt;

&lt;h4 id=&quot;the-wise-mans-fear-the-kingkiller-chronicle-2--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/1215032.The_Wise_Man_s_Fear&quot;&gt;The Wise Man’s Fear (The Kingkiller Chronicle, #2)&lt;/a&gt; 👍 🐲&lt;/h4&gt;

&lt;h2 id=&quot;october&quot;&gt;October&lt;/h2&gt;

&lt;h4 id=&quot;free-range-kids-giving-our-children-the-freedom-we-had-without-going-nuts-with-worry--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6250260-free-range-kids&quot;&gt;Free-Range Kids: Giving Our Children the Freedom We Had Without Going Nuts with Worry&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;h4 id=&quot;programmers-guide-to-a-sane-workweek-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/37939319-programmer-s-guide-to-a-sane-workweek&quot;&gt;Programmer’s Guide to a Sane Workweek&lt;/a&gt; 😔&lt;/h4&gt;

&lt;h4 id=&quot;the-elegance-of-the-hedgehog-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2967752-the-elegance-of-the-hedgehog&quot;&gt;The Elegance of the Hedgehog&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;peak-secrets-from-the-new-science-of-expertise--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/26312997-peak&quot;&gt;Peak: Secrets from the New Science of Expertise&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;p&gt;There’s no such thing as a “natural talent”, and the guy that invented the term “deliberate practice” has a lot of useful/encouraging knowledge to share on the topic.&lt;/p&gt;

&lt;h4 id=&quot;the-passionate-programmer&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6399113-the-passionate-programmer&quot;&gt;The Passionate Programmer&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;art-of-neighboring-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/13789093-art-of-neighboring&quot;&gt;Art of Neighboring&lt;/a&gt; 👍&lt;/h4&gt;

&lt;h4 id=&quot;confident-pluralism-surviving-and-thriving-through-deep-difference--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/26195602-confident-pluralism&quot;&gt;Confident Pluralism: Surviving and Thriving through Deep Difference&lt;/a&gt; 😔 👍&lt;/h4&gt;

&lt;h2 id=&quot;november&quot;&gt;November&lt;/h2&gt;

&lt;h4 id=&quot;dune-dune-chronicles-1-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/234225.Dune&quot;&gt;Dune (Dune Chronicles, #1)&lt;/a&gt; 🐲&lt;/h4&gt;

&lt;h4 id=&quot;the-mystery-of-banking-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/154253.The_Mystery_of_Banking&quot;&gt;The Mystery of Banking&lt;/a&gt; 💵&lt;/h4&gt;

&lt;h4 id=&quot;esv-readers-bible&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/18955447-esv-reader-s-bible&quot;&gt;ESV Reader’s Bible&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;dismantling-the-empire-americas-last-best-hope---&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/8195140-dismantling-the-empire&quot;&gt;Dismantling the Empire: America’s Last Best Hope&lt;/a&gt; 😔 👍 💵&lt;/h4&gt;

&lt;p&gt;More good stuff from Chalmers Johnson. Read this.&lt;/p&gt;

&lt;h2 id=&quot;december&quot;&gt;December&lt;/h2&gt;

&lt;h4 id=&quot;exit-voice-and-loyalty-responses-to-decline-in-firms-organizations-and-states---&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/149033.Exit_Voice_and_Loyalty&quot;&gt;Exit, Voice, and Loyalty: Responses to Decline in Firms, Organizations, and States&lt;/a&gt; 😔 👍 💵&lt;/h4&gt;

&lt;h4 id=&quot;how-to-raise-an-adult-break-free-of-the-overparenting-trap-and-prepare-your-kid-for-success-&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/23168823-how-to-raise-an-adult&quot;&gt;How to Raise an Adult: Break Free of the Overparenting Trap and Prepare Your Kid for Success&lt;/a&gt; 👍&lt;/h4&gt;

&lt;h4 id=&quot;on-confidence&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/35890182-on-confidence&quot;&gt;On Confidence&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;the-final-empire-mistborn-1--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/68428.The_Final_Empire&quot;&gt;The Final Empire (Mistborn, #1)&lt;/a&gt; 👍 🐲&lt;/h4&gt;

&lt;h4 id=&quot;the-well-of-ascension-mistborn-2--&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/68429.The_Well_of_Ascension&quot;&gt;The Well of Ascension (Mistborn, #2)&lt;/a&gt; 👍 🐲&lt;/h4&gt;

&lt;h4 id=&quot;sources&quot;&gt;Sources&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/review/list/27372191-josh-thompson?sort=date_read&quot;&gt;I record everything on Goodreads&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;I pulled this data from &lt;a href=&quot;https://www.goodreads.com/api&quot;&gt;the Goodreads API&lt;/a&gt;. It was a PITA the way I pulled the data, sorted, and cleaned it. Next year I’ll maybe write a little Ruby script to do it all for me. :)&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Pry-ing into a Stack Trace</title>
   <link href="https://josh.works/prying-into-a-stack-trace"/>
   <updated>2019-02-22T12:00:00+00:00</updated>
   <id>https://josh.works/prying_into_a_stack_trace</id>
   <content type="html">&lt;p&gt;I was recently working on a feature, committed what I thought was clean code, and started getting errors. I &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git stash&lt;/code&gt;ed, and re-ran my tests, and still got errors. Here’s the full stacktrace:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; b ruby -Itest test/models/model_name_redacted_test.rb -n=/errors/

# Running tests with run options -n=/errors/ --seed 55842:

/Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-reporters-1.3.5/lib/minitest/reporters/default_reporter.rb:49:in `after_suite&apos;: undefined method `name&apos; for nil:NilClass (NoMethodError)
	from /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-reporters-1.3.5/lib/minitest/reporters/base_reporter.rb:59:in `report&apos;
	from /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-reporters-1.3.5/lib/minitest/reporters/default_reporter.rb:89:in `report&apos;
	from /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-reporters-1.3.5/lib/minitest/minitest_reporter_plugin.rb:26:in `each&apos;
	from /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-reporters-1.3.5/lib/minitest/minitest_reporter_plugin.rb:26:in `report&apos;
	from /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-5.11.3/lib/minitest.rb:808:in `each&apos;
	from /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-5.11.3/lib/minitest.rb:808:in `report&apos;
	from /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-5.11.3/lib/minitest.rb:141:in `run&apos;
	from /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-5.11.3/lib/minitest.rb:63:in `block in autorun&apos;
Coverage report generated for Unit Tests to /Users/joshthompson/wombat/threatsim-rails/threatsim/coverage. 1512 / 17964 LOC (8.42%) covered.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is a relatively common error. Something is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nil&lt;/code&gt; where it ought not to be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nil&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;But now for the kicker.&lt;/p&gt;

&lt;p&gt;I found out that if you hold the cmd key down and click one of those file paths, the file in question &lt;em&gt;will open in your editor&lt;/em&gt;!!!&lt;/p&gt;

&lt;p&gt;AND YOU CAN JUST PUT A PRY IN THERE SOMEWHERE AND YOU’LL HIT IT NEXT TIME THAT LINE OF CODE EXECUTES!!!
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;AAAAAHHHHH HOW DID I NOT KNOW THIS??? I’ve been writing code full-time for two years, and did not know I could do this!&lt;/p&gt;

&lt;p&gt;OK, I am breathing fine. Shall we unpack this?&lt;/p&gt;

&lt;p&gt;Lets run the test. It’ll cause an error, with a stack trace. Hold down the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd&lt;/code&gt; key, and mouse over the path, as you would a URL:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-02-21 at 11.45 PM.png&quot; alt=&quot;cmd and mouseover&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Great. Now click it.&lt;/p&gt;

&lt;p&gt;The file you selected gets opened up in your current text editor, with the cursor at the line in question!&lt;/p&gt;

&lt;p&gt;In this case, it’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;minitest/reporters/default_reporter.rb:49&lt;/code&gt;, which is a gem bound to a specific ruby version, managed by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RVM&lt;/code&gt;, so the path also includes &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.rvm/gems/ruby-2.3.7/gems/&lt;/code&gt;, which is in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/Users/joshthompson/&lt;/code&gt;, so the full path is:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/minitest-reporters-1.3.5/lib/minitest/reporters/default_reporter.rb:49
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-02-21 at 11.47 PM.png&quot; alt=&quot;file opens&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can stick a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt; in there to pause execution and poke around.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-02-21 at 11.50 PM.png&quot; alt=&quot;pry ready to go&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Run the test again, and execution pauses at the pry. (In this case, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;super&lt;/code&gt; keyword bumps where the pry hits to the superclass.)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-02-21 at 11.52 PM.png&quot; alt=&quot;exploring the context&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The long story short is - I was passing a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;name&lt;/code&gt; flag to Minitest, and it couldn’t find a test by that name.&lt;/p&gt;

&lt;p&gt;I wouldn’t have figured this out except for exploring the source code - I would have kept rolling back my commits, thinking that I’d botched my code somewhere.&lt;/p&gt;

&lt;p&gt;Being able to quickly explore the source code of Ruby gems &lt;strong&gt;and interact with those gems in a pry sessions&lt;/strong&gt; is a complete game changer.&lt;/p&gt;

&lt;p&gt;Here’s what the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;all_reporters&lt;/code&gt; object looked like, by the way:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-02-21 at 11.54 PM.png&quot; alt=&quot;all reporters&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is huge. I’m so excited about this.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How To Procfile: Run Just a Single Process</title>
   <link href="https://josh.works/procfile-run-a-single-process"/>
   <updated>2019-02-21T08:00:00+00:00</updated>
   <id>https://josh.works/procfile_basics</id>
   <content type="html">&lt;p&gt;Lets say you’ve got something like this in your Procfile:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;web:          PORT=3000 RAILS_ENV=development bundle exec puma -C ./config/puma_development.rb -e development
devlog:       tail -f ./log/development.log
mailcatcher:  ruby -rbundler/setup -e &quot;Bundler.clean_exec(&apos;mailcatcher&apos;, &apos;--foreground&apos;)&quot;%
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And you want to run &lt;em&gt;just&lt;/em&gt; the stuff in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;web&lt;/code&gt; line.&lt;/p&gt;

&lt;p&gt;Old Josh would have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cat&lt;/code&gt;ed the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;procfile&lt;/code&gt;, and copy-pasted most of the top line into the terminal.&lt;/p&gt;

&lt;p&gt;New Josh knows better.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ foreman start web 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If I wanted to see just the devlog, I could do:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;foreman start devlog
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I knew this was possible, I just kept getting the syntax wrong. For example, I tried &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;foreman web&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;foreman devlog&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now I know. And so do you.&lt;/p&gt;

&lt;h3 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;I pieced this together from conversational snippets I heard at work, and &lt;a href=&quot;https://devcenter.heroku.com/articles/procfile&quot;&gt;Heroku docs on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;The Procfile&lt;/code&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Whole Messages in Slack</title>
   <link href="https://josh.works/whole-messages-in-slack"/>
   <updated>2019-02-20T13:00:00+00:00</updated>
   <id>https://josh.works/whole_messages_in_slack</id>
   <content type="html">&lt;p&gt;I use &lt;a href=&quot;https://slack.com/features&quot;&gt;Slack&lt;/a&gt; at work. And used it in Turing. And am in a few programming-related Slack groups. (Ahoy, &lt;a href=&quot;https://denverdevs.org/&quot;&gt;#DenverDevs&lt;/a&gt;). My last job, I used Slack. The job before that, I got the whole company &lt;em&gt;on&lt;/em&gt; Slack. I’ve used it for years.&lt;/p&gt;

&lt;p&gt;Slack delivers value to me, and induces little anxiety, and most importantly, &lt;em&gt;Slack does not interrupt my day, and I don’t think I interrupt other people’s days via Slack much either.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Slack is famous for ruining other people’s work-days. Their complaints are valid:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://qz.com/632016/why-im-breaking-up-with-slack/&quot;&gt;Why I’m Breaking Up With Slack (Quartz)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://pspdfkit.com/blog/2018/how-to-use-slack-and-not-go-crazy/&quot;&gt;How to Use Slack and Not Go Crazy&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://doist.com/blog/asynchronous-communication-betting-against-slack/&quot;&gt;Why We’re Betting Against Real-Time Team Messaging Apps Like Slack (Doist)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://m.signalvnoise.com/is-group-chat-making-you-sweat/&quot;&gt;Is Group Chat Making You Sweat? (Basecamp)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://blog.nuclino.com/slack-is-not-where-deep-work-happens&quot;&gt;Slack Is Not Where ‘Deep Work’ Happens&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, if some people like Slack, and some people hate it, what might account for the difference?&lt;/p&gt;

&lt;p&gt;Personal preference is certainly part of the difference… but I think it’s not the whole story.&lt;/p&gt;

&lt;p&gt;This is a bit of a “how Josh uses Slack” post. It might pair well with PSPDFKit’s &lt;a href=&quot;https://pspdfkit.com/blog/2018/how-to-use-slack-and-not-go-crazy/&quot;&gt;How to Use Slack and Not Go Crazy &lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;slack-settings-aka-silence-the-beast&quot;&gt;Slack settings (aka “Silence the Beast”)&lt;/h2&gt;

&lt;p&gt;Slack’s default notification settings will &lt;em&gt;ruin you&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It tries to make sound &lt;em&gt;and&lt;/em&gt; pop up a desktop notification &lt;em&gt;every time someone says something in a channel you’ve joined&lt;/em&gt;. This is unacceptible.&lt;/p&gt;

&lt;p&gt;Turn off all audible notifications, and while you’re at it, turn off the rest, too:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-12 at 5.38 AM.png&quot; alt=&quot;No notifications!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-12 at 5.40 AM.png&quot; alt=&quot;no audible notifications!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I have sometimes been in the same room as people who have audible notifications when someone posts &lt;em&gt;anything&lt;/em&gt; to &lt;em&gt;any channel&lt;/em&gt;, and feel vaguely horrified. Don’t be this person.&lt;/p&gt;

&lt;p&gt;When I’m at my computer, I know that I’ll see Slack regularly. It’s rare that I would go without checking slack for more than 30 minutes. &lt;a href=&quot;https://www.goodreads.com/book/show/25744928-deep-work&quot;&gt;Deep Work: Rules for Focused Success in a Distracted World&lt;/a&gt; would probably prefer me to go an hour or two without looking at Slack during the day. I hope to get there some day, but am not there yet.&lt;/p&gt;

&lt;p&gt;Since I check Slack regularly when I’m at my computer, I turn off all notifications. If someone sends me an urgent message, they might wait for a while before I write back.&lt;/p&gt;

&lt;p&gt;This is OK to me, as I treat direct messages as asynchronous communication, and encourage others to do the same. “You there?” isn’t a message I’ll ever send.&lt;/p&gt;

&lt;p&gt;There are a few channels where an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@here&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@channel&lt;/code&gt; will cause a notification “dot” to show up on Slack. The vast majority of the rest of the channels I’m in, I’ve muted even &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@here&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@channel&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This means I can be in many channels, and never even know there’s conversation happening in them until I choose to go look in them.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-04-12 at 5.53 AM.png&quot; alt=&quot;mute all the things&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;are-you-there-and-other-messages-to-never-send&quot;&gt;“Are you there?” and other messages to never send&lt;/h2&gt;

&lt;p&gt;A while back, &lt;a href=&quot;/primative-obsession-and-exceptional-values&quot;&gt;I learned about “whole values” in Ruby objects&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For example, if you call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;course.duration&lt;/code&gt;, it might return &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;6&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;6&lt;/code&gt; what? 6 Days? 6 weeks? Avdi talked about making the value “whole”, by including every element required to correctly parse the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;duration&lt;/code&gt; attribute. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;course.duration&lt;/code&gt; would now return something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Weeks[6]&lt;/code&gt;, or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Months[3]&lt;/code&gt;. Unambiguous. 
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;I propose being biased towards sending “whole messages” in Slack, as well. The message should contain every element required to respond correctly.&lt;/p&gt;

&lt;p&gt;This makes Slack minimally disruptive to the person receiving the messages, as they can respond at their leisure. (If you’re asking a large and complex question in Slack, and you cannot fit it into a single message, consider sending an email!)&lt;/p&gt;

&lt;p&gt;These are just &lt;em&gt;suggestions&lt;/em&gt;, or even &lt;em&gt;personal preferences&lt;/em&gt;. If you read these and think:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Eh, not for me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s totally fine. If you read them and think:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This is interesting. I didn’t even know anyone noticed such things. It makes no difference to me if I do these things, so I’ll lean in the direction of Josh’s preference, even if its just to make his life a little easier.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then my goal is wildly accomplished.&lt;/p&gt;

&lt;h3 id=&quot;send-whole-messages&quot;&gt;Send whole messages&lt;/h3&gt;

&lt;p&gt;My preference for a work communication is more-or-less asynchronous. Sometimes we need to communicate in real time, and I’m happy to hop on a call when helpful.&lt;/p&gt;

&lt;p&gt;Lots of messages in Slack don’t have to be synchronous.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When you send a message in Slack, it should contain everything the recipient needs to take action.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s some examples.&lt;/p&gt;

&lt;p&gt;The following was the first time I had ever “spoken” with this person, who works two time-zones away:&lt;/p&gt;

&lt;p&gt;Them:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Hi there. Got a minute for a question?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;me, about 40 minutes later, because I was working and often go extended periods of time without looking at Slack:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;can you provide more context?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;they provided a &lt;em&gt;tiny&lt;/em&gt; bit more context, and I replied with:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;go ahead and ask the question. I’ll answer when I can. We’re doing a deploy right now, but no harm in asking. (I’m a fan of “whole messages”, so you should go ahead and fire off as long of a question as you want, link to tickets, screenshots, whatever, and I’ll follow up when I can.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When I’m composing a message to someone, I try to follow my own advice to &lt;a href=&quot;/better-questions&quot;&gt;ask better questions&lt;/a&gt; by providing all the information they need in a single message. I’ll often preface it with something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hey {so and so} - this is not urgent, and I don’t want a response until it’s convenient for you. To that end, I’ll provide further context and my specific question.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, if they see a notification on their phone because they’re away from their desk - they can go ahead and ignore the notification. They can follow up at their leisure.&lt;/p&gt;

&lt;p&gt;Here’s a message (part of a longer note) I sent to someone I was working on a project with:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Also - I am a &lt;em&gt;massive&lt;/em&gt; fan of asynchronous, independent work, so anytime you happen to get slack messages from me, please &lt;em&gt;don’t&lt;/em&gt; feel any pressure to reply. I try to send “whole messages”, that don’t require much real-time back-and-forth, and don’t have any expectations of quick replies.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;miscellaneous-other-preferences&quot;&gt;Miscellaneous other preferences&lt;/h3&gt;

&lt;p&gt;These are some other “rules” and patterns I’ve arrived at when it comes to using Slack:&lt;/p&gt;

&lt;h4 id=&quot;be-biased-towards-using-channels-for-topics-and-not-just-groups-of-people&quot;&gt;Be biased towards using channels for &lt;em&gt;topics&lt;/em&gt;, and not just &lt;em&gt;groups of people&lt;/em&gt;&lt;/h4&gt;

&lt;p&gt;The only channel I try to stay 100% up-to-date-with is my team channel. It’s nice having topical channels, as it’s easy to know where to go to have conversation on a given topic, rather than topical conversations bleeding into general channels.&lt;/p&gt;

&lt;h4 id=&quot;be-biased-towards-using-public-channels-so-relevant-parties-can-joinleave-them-as-needed&quot;&gt;Be biased towards using public channels, so relevant parties can join/leave them as needed&lt;/h4&gt;

&lt;p&gt;A private channel makes you feel a bit locked into it. If you leave it, and need to add something to &lt;em&gt;that&lt;/em&gt; channel, you need to be re-invited. So, we all have healthy &lt;a href=&quot;https://www.urbandictionary.com/define.php?term=Fomo&quot;&gt;fomo&lt;/a&gt; and choose to never leave the channel. This cuts against the general pattern of Slack, and makes it just a smidge more intrusive in the day-to-day.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;But I don’t want the whole company reading what I’m saying in a given channel, Josh!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s fine. There are certainly times that you might not need the whole company up in your business. But these are few and far between, and &lt;em&gt;how often do&lt;/em&gt; YOU &lt;em&gt;go prowling in other team’s channels?&lt;/em&gt;. My guess is “not that often”.&lt;/p&gt;

&lt;h4 id=&quot;fill-out-your-slack-profile&quot;&gt;Fill out your Slack profile&lt;/h4&gt;

&lt;p&gt;Before Wombat was acquired, I had about 230 coworkers. Now I have 2500. It’s &lt;em&gt;desperately&lt;/em&gt; useful for me to know who works on what team and on what product, if I get a message out of the blue from someone, or if I need to send someone a message.&lt;/p&gt;

&lt;p&gt;My profile has:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;A picture of me&lt;/li&gt;
  &lt;li&gt;A description of what I do/what team I work with&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a case study of how time consuming it is when this information is missing - I got a message recently that I thought was from someone on our support team. This knowledge drove my answer in a certain direction.&lt;/p&gt;

&lt;p&gt;A few minutes later, after looking said person up in our company directory (not finding them) I turned to LinkedIn - turns out this person was a developer on another product. This information obviously shaped my answer in a &lt;em&gt;different&lt;/em&gt; direction.&lt;/p&gt;

&lt;h4 id=&quot;close-slack-now-and-again&quot;&gt;Close Slack now and again&lt;/h4&gt;

&lt;p&gt;If I really want to go heads-down on something, and am feeling tons of friction and distraction, I can just enter “monk mode”. I’ll quit Slack, block every website except what’s defined in a whitelisted, pre-determined list (Github, Jira, StackOverflow, language documentation, etc) and will “lock myself in” to a problem for an hour or so.&lt;/p&gt;

&lt;p&gt;I recommend everyone give this a shot now and again. It’s nerve-wracking at first, which underscores how valuable it is to actually quit Slack.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://qz.com/632016/why-im-breaking-up-with-slack/&quot;&gt;Why I’m Breaking Up With Slack (Quartz)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://pspdfkit.com/blog/2018/how-to-use-slack-and-not-go-crazy/&quot;&gt;How to Use Slack and Not Go Crazy&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://doist.com/blog/asynchronous-communication-betting-against-slack/&quot;&gt;Why We’re Betting Against Real-Time Team Messaging Apps Like Slack (Doist)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://m.signalvnoise.com/is-group-chat-making-you-sweat/&quot;&gt;Is Group Chat Making You Sweat? (Basecamp)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://blog.nuclino.com/slack-is-not-where-deep-work-happens&quot;&gt;Slack Is Not Where ‘Deep Work’ Happens
deep-work&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25744928-deep-work&quot;&gt;Deep Work: Rules for Focused Success in a Distracted World (Cal Newport)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.nohello.com/&quot;&gt;Please Don’t Say Just Hello In Chat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Blood Flow Restriction with Tyler</title>
   <link href="https://josh.works/blood-flow-restriction-for-climbing"/>
   <updated>2019-02-16T13:00:00+00:00</updated>
   <id>https://josh.works/blood_flow_restriction</id>
   <content type="html">&lt;p&gt;&lt;em&gt;old draft, publishing, needs polish.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Me: Sport climber, decade+, of and on a few different times over the years.&lt;/p&gt;

&lt;p&gt;Educate myself, train as effectively and safely as I can. I’m 30, and wanna hit some significant climbing goals by 40, and a big part of that is getting stronger, safely, while not getting injured.&lt;/p&gt;

&lt;p&gt;I’m also running a high-elevation marathon (Leadville Marathon) this summer, and would love to see if there’s any intersection of running and BFR.&lt;/p&gt;

&lt;p&gt;I’m also on the road a lot, with limited access to “standard” training tools. I’ll travel with the Tension hangboard, and just got a block so I can work w/1-arm hangs, and its a bit smaller.&lt;/p&gt;

&lt;p&gt;Attendees:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Nate just moved to CO, climbing since 2013&lt;/li&gt;
  &lt;li&gt;Johan 53, from Norway/Sweden, sport climber&lt;/li&gt;
  &lt;li&gt;Brad (Butora), head coach in Atlanta or something.&lt;/li&gt;
  &lt;li&gt;Brent, 5 years, boulderer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aerobic capacity improvements via BFR&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Improved strength&lt;/p&gt;

&lt;p&gt;Lower-extremity workouts, etc&lt;/p&gt;

&lt;p&gt;Running: &lt;a href=&quot;https://drive.google.com/drive/u/0/folders/1F6Mct9I5zX2uphqFnkAYq45biW2N4lKu&quot;&gt;Conditioning Circuit, airdyne bike to failure&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://drive.google.com/drive/u/0/folders/1Jsc8W5sW403Wzj5KHT_vXhhriOPUsfSt&quot;&gt;Acute Cardiovascular and Hemodynamic Responses to Low Intensity
Eccentric Resistance Exercise with Blood Flow Restriction&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://drive.google.com/drive/u/0/folders/1NQUp99G5wiZlGc_fjczC_fzlB1gJW4XH&quot;&gt;How BFR works&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;What’s the goal of strength coach, rehab specialist&lt;/p&gt;

&lt;p&gt;Improve facets of athleticism through general/specific exercise.&lt;/p&gt;

&lt;p&gt;High motor unit recruitment at sub-maximal load.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;no need to go to 100% max load to get full recruitment. (yay)&lt;/li&gt;
  &lt;li&gt;efficiently clear out metabolic waste&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;hormonal-response&quot;&gt;Hormonal response:&lt;/h3&gt;

&lt;p&gt;HGH improves by a lot
MTOR pathway
Vascular something or another
Testosterone improved&lt;/p&gt;

&lt;p&gt;All without really high intensity.&lt;/p&gt;

&lt;h3 id=&quot;how-does-the-body-respond-to-exercise-stress&quot;&gt;How does the body respond to exercise stress?&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;we “fatigue” muscles, and signals associated with “fatigue” induce local/systemic response that allow motor units to improve their ability to sustain the exercise&lt;/li&gt;
  &lt;li&gt;“fatigue” is felt when “homeostasis” in the working tissue is “disturbed”&lt;/li&gt;
  &lt;li&gt;the “disturbance” is caused by severe hypoxia and decrease in intracellular phosphate stores (ATP/PC - phospho-creatine)&lt;/li&gt;
  &lt;li&gt;Protein synthesis is upreguated in all active tissues.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;energy-systems&quot;&gt;Energy systems&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Phosphagen, 10 seconds before expended - Anaerobic&lt;/li&gt;
  &lt;li&gt;Glycolytic: energy system that BFR works, 20-60 seconds of use &lt;a href=&quot;https://en.wikipedia.org/wiki/Anaerobic_glycolysis&quot;&gt;wikipedia&lt;/a&gt; Anaerobic&lt;/li&gt;
  &lt;li&gt;Oxidative: aerobic, sustainable, aerobic&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;to-anki&quot;&gt;To Anki&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Proximal/proximally, distal/distally&lt;/li&gt;
  &lt;li&gt;angiogenic effect&lt;/li&gt;
  &lt;li&gt;endothelial health&lt;/li&gt;
  &lt;li&gt;HGH&lt;/li&gt;
  &lt;li&gt;phosphate, intercellular phosphate stores&lt;/li&gt;
  &lt;li&gt;ATP is required for muscle contraction AND relaxation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;how-to-explain-bfr-to-parents&quot;&gt;How to explain BFR to parents&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Climbing is a strength &lt;em&gt;and&lt;/em&gt; skill sport.&lt;/li&gt;
  &lt;li&gt;To improve at climbing, you can become more skilled, and/or you can become “stronger”&lt;/li&gt;
  &lt;li&gt;There’s some “standard” ways that people get “stronger”:
    &lt;ul&gt;
      &lt;li&gt;Neural adaptations&lt;/li&gt;
      &lt;li&gt;Physiological adaptations (muscle size and “efficiency”)
        &lt;ul&gt;
          &lt;li&gt;aerobic&lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;anaerobic adaptation&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;you can force anaerobic adaptations by creating a mis-match in “fuel” availability&lt;/li&gt;
        &lt;/ul&gt;

        &lt;p&gt;Results of this mismatch:&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;hormonal response&lt;/li&gt;
          &lt;li&gt;general muscular strength adaptations&lt;/li&gt;
          &lt;li&gt;recovery adaptations, clear out metabolic waste quicker, so I can recover more efficiently.&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Heavy loading w/BFR:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;3x10 @ 70-90% 1RM&lt;/li&gt;
  &lt;li&gt;2-3 min rest between sets&lt;/li&gt;
  &lt;li&gt;5-6 exercises, 2-3 days/wk&lt;/li&gt;
  &lt;li&gt;neural response first&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BFRT&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;3x30 @ 20-50% 1rm&lt;/li&gt;
  &lt;li&gt;20-30 s rest between sets&lt;/li&gt;
  &lt;li&gt;4-5 exercises, 20-25 min&lt;/li&gt;
  &lt;li&gt;2-3 days/wk, or daily&lt;/li&gt;
  &lt;li&gt;hypertrophic response first&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;studies-to-read&quot;&gt;Studies to read&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://drive.google.com/drive/u/0/folders/1Jsc8W5sW403Wzj5KHT_vXhhriOPUsfSt&quot;&gt;Blood flow restriction training in clinical
musculoskeletal rehabilitation: a systematic review
and meta-analysis&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://thenuggetclimbing.com/episodes/tyler-nelson&quot;&gt;Tyler Nelson on The NuggetClimbing podcast, discussing blood flow restriction training&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bstrong.training/products/b-strong-training-system&quot;&gt;purchase bands online&lt;/a&gt; the bands are, regrettably, still insanely expensive. Probably the production price of everything could be tens of dollars, not hundreds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;notes-from-2026&quot;&gt;notes from 2026&lt;/h1&gt;

&lt;h2 id=&quot;diyat-home-hormone-therapy&quot;&gt;DIY/At-home hormone therapy&lt;/h2&gt;

&lt;p&gt;I know lots of folks are talking about hormone therapy, testosterone. I feel like using BFR bands is a little like taking HGH and/or testosterone directly. But better than taking something directly, because the body is manufacturing everything. The body is full of complex chemical pathways, I’m generally reticent to modify it directly.&lt;/p&gt;

&lt;p&gt;BFR work is perfect. I’ve been doing a ton of heavy lifting and heavy climbing lately, feeling stronger, but also feeling the strain in the connective tissues throughout my body.&lt;/p&gt;

&lt;p&gt;Lots of tendon proprioceptive input from the isometric bar holds (which, at like 600 pounds, makes sense.)&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/isometric-bar-holds-part-2&quot;&gt;/isometric-bar-holds-part-2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>The Complete Guide to Rails Performance: basic setup</title>
   <link href="https://josh.works/rails_performance_course_basic_setup"/>
   <updated>2018-11-29T13:00:00+00:00</updated>
   <id>https://josh.works/rails_speed_setup</id>
   <content type="html">&lt;p&gt;You know the feeling.&lt;/p&gt;

&lt;p&gt;You are excited to start a guide or a tutorial. You buy it, crack it open, and start working through the environment setup.&lt;/p&gt;

&lt;p&gt;Then… something goes wrong. Next thing you know, you’ve spent &lt;del&gt;two&lt;/del&gt; &lt;del&gt;three&lt;/del&gt; too many hours debugging random crap, and you’re not even done with the introduction to the dang thing.&lt;/p&gt;

&lt;p&gt;Oh, this has never happened to you? Must be nice.&lt;/p&gt;

&lt;p&gt;I’m working through &lt;a href=&quot;https://www.railsspeed.com/&quot;&gt;The Complete Guide to Rails Performance&lt;/a&gt;, and I’m thrilled to get learning underway.&lt;/p&gt;

&lt;p&gt;I’ve hit a few hiccups, though. I’m not the most sophisticated user out there, so here’s a mess of problems I ran into, and the solutions I did.&lt;/p&gt;

&lt;h2 id=&quot;elastic-search&quot;&gt;Elastic Search&lt;/h2&gt;

&lt;p&gt;All of my struggles were with ElasticSearch. I’ve never used it before, so this isn’t surprising.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/rubygems/rubygems.org/blob/master/CONTRIBUTING.md#environment-os-x&quot;&gt;The RubyGems docs&lt;/a&gt; recommend the following:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Install Elastic Search:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;Pull ElasticSearch 5.1.2 : &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.2&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;Running Elasticsearch from the command line:
      &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;docker run -p 9200:9200 -e &quot;http.host=0.0.0.0&quot; -e &quot;transport.host=127.0.0.1&quot; docker.elastic.co/elasticsearch/elasticsearch:5.1.2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;      &lt;/div&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;docker-container-exit-code-137&quot;&gt;Docker container, exit code 137&lt;/h2&gt;

&lt;p&gt;The docker container was instantly exiting with a &lt;a href=&quot;https://success.docker.com/article/what-causes-a-container-to-exit-with-code-137&quot;&gt;137 exit code&lt;/a&gt;. That means its out of memory.&lt;/p&gt;

&lt;p&gt;I fixed this in the Docker app directly, but just bumping the memory allocated to the containers, and hitting the “save/restart” button.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-11-29 at 9.04 PM.jpg&quot; alt=&quot;bump the memory&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now I could run:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle exec rake environment elasticsearch:import:all DIR=app/models FORCE=y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Which brought me to:&lt;/p&gt;

&lt;h2 id=&quot;elasticsearchunauthorized-401&quot;&gt;Elasticsearch…Unauthorized: [401]&lt;/h2&gt;

&lt;p&gt;I got&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Elasticsearch::Transport::Transport::Errors::Unauthorized: [401]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sigh. Googled around, no quick solutions.&lt;/p&gt;

&lt;p&gt;So, I hunted through the Slack group for the course, and saw someone suggest just &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;brew installing&lt;/code&gt; ElasticSearch.&lt;/p&gt;

&lt;p&gt;Done.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;brew install elasticsearch&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It installs &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;6.5.1&lt;/code&gt; by default. This isn’t the recommended version, but… we’ll carry onward.&lt;/p&gt;

&lt;p&gt;I can run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;elasticsearch&lt;/code&gt; in the terminal now, and get a lot of output.&lt;/p&gt;

&lt;p&gt;Trying &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle exec rake environment elasticsearch:import:all DIR=app/models FORCE=y&lt;/code&gt; again, and we get:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; bundle exec rake environment elasticsearch:import:all DIR=app/models FORCE=y
[IMPORT] Loading models from: app/models
[IMPORT] Processing model: Rubygem...
[IMPORT] Done
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Woot!&lt;/p&gt;

&lt;p&gt;Lets try the tests.&lt;/p&gt;

&lt;p&gt;I’ll start &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;memcached&lt;/code&gt;. Since it just hangs, filling up a terminal tab, lets &lt;a href=&quot;https://stackoverflow.com/questions/13338870/what-does-at-the-end-of-a-linux-command-mean&quot;&gt;send it to the background&lt;/a&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; memcached &amp;amp;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;bundle exec rake
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sweet. Just rows upon rows of sweet green dots…. and a failure.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-11-29 at 8.50 PM.png&quot; alt=&quot;so close&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;dependencytest&quot;&gt;DependencyTest&lt;/h2&gt;

&lt;p&gt;The error is:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Failure:
DependencyTest#test_: 
  with a Gem::Dependency that refers to a Rubygem that exists and has multiple requirements should create a Dependency referring to the existing Rubygem. 
[/Users/joshthompson/workspace/rails_speed/rubygems.org/test/unit/dependency_test.rb:96]:
Expected: &quot;&amp;lt; 1.0.0, &amp;gt;= 0.0.0&quot;
  Actual: &quot;&amp;gt;= 0.0.0, &amp;lt; 1.0.0&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We’ll table this for now.&lt;/p&gt;

&lt;p&gt;Starting the server works fine. I’ll update this post if I sort out the test failure.&lt;/p&gt;

&lt;p&gt;If you elect to work through the course, this might save you a bit of hassle. I went way too far down the docker hole before just brew installing it. :(&lt;/p&gt;

&lt;h2 id=&quot;download-rubygems-production-db&quot;&gt;download Rubygem’s production DB:&lt;/h2&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ script/load-pg-dump -c -d gemcutter_production latest_dump
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;No problems.&lt;/p&gt;

&lt;p&gt;When it came time to generate the assets, first take failed:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; RAILS_ENV=production rake assets:precompile
rake aborted!
ArgumentError: Missing `secret_key_base` for &apos;production&apos; environment, set this string with `rails credentials:edit`
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Swap it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt; RAILS_ENV=production rake assets:precompile SECRET_KEY_BASE=foo&lt;/code&gt; and you’re good to go.&lt;/p&gt;

&lt;p&gt;Aaaand…&lt;/p&gt;

&lt;p&gt;server error on http://localhost:3000/&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-11-29 at 9.17 PM.jpg&quot; alt=&quot;but what a cute error message&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A message in the slack group suggested using the following for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;script/load-pg-dump&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;script/load-pg-dump -c -d rubygems_production latest_dump
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;(it’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rubygems_production&lt;/code&gt; instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gemcutter_production&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;still failing. same server error.&lt;/p&gt;

&lt;p&gt;Taking a look in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;log/production.log&lt;/code&gt;, I’ve got useful errors like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;F, [2018-11-29T21:30:19.469620 #4540] FATAL – : ActionView::Template::Error (PG::UndefinedTable: ERROR:  relation “announcements” does not exist&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; RAILS_ENV=production rake db:migrate SECRET_KEY_BASE=foo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;but that doesn’t work:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; RAILS_ENV=production rake db:migrate SECRET_KEY_BASE=foo
== 20090527122639 CreateRubygems: migrating ===================================
-- adapter_name()
   -&amp;gt; 0.0000s
-- adapter_name()
   -&amp;gt; 0.0000s
-- adapter_name()
   -&amp;gt; 0.0000s
-- create_table(:rubygems, {:id=&amp;gt;:integer})
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::DuplicateTable: ERROR:  relation &quot;rubygems&quot; already exists
: CREATE TABLE &quot;rubygems&quot; (&quot;id&quot; serial NOT NULL PRIMARY KEY, &quot;name&quot; character varying, &quot;token&quot; character varying, &quot;user_id&quot; integer, &quot;created_at&quot; timestamp, &quot;updated_at&quot; timestamp)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is probably a horrible fix, but:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ psql
# enter psql cli
\l
# list available databases
\c rubygems_production
# connect to said db
\dt
# list all relations
drop table rubygems;
# drop the table
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;re-run migrations and… it now fails on a different relation.&lt;/p&gt;

&lt;p&gt;so, running the mother of all horrible commands:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; RAILS_ENV=production rake db:reset SECRET_KEY_BASE=foo DISABLE_DATABASE_ENVIRONMENT_CHECK=1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;nukes the production DB, redoes everything. Don’t do this.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RAILS_ENV=production SECRET_KEY_BASE=foo rails s&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;works, now, but the production DB is empty, so we have to re-import it:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;script/load-pg-dump -c -d rubygems_production latest_dump
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;after a few minutes… boot up the rails server again, and:&lt;/p&gt;

&lt;p&gt;damnit. error page. Same complaint about missing relation.&lt;/p&gt;

&lt;p&gt;When I swap everything out to working on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;development&lt;/code&gt; environment instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;production&lt;/code&gt;, it works. I’ll carry on from here for now.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I asked for a bit of help in the Slack group for the program, and got great help.&lt;/p&gt;

&lt;p&gt;Turns out I just needed to do a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle exec rake db:create RAILS_ENV=production&lt;/code&gt;, then re-run the script: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;script/load-pg-dump -c -d rubygems_production latest_dump&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now I can run the app in production:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;RAILS_ENV=production SECRET_KEY_BASE=foo rails s
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Growing in your first software development job</title>
   <link href="https://josh.works/growing-in-first-software-development-job"/>
   <updated>2018-11-28T13:00:00+00:00</updated>
   <id>https://josh.works/how_to_grow_in_first_dev_role</id>
   <content type="html">&lt;p&gt;I started my first software developer role a year ago. (November 2017)&lt;/p&gt;

&lt;p&gt;This is tremendously exciting, of course, but introduces its own set of challenges, like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I finished Turing and I’ve got a job! Oh snap. I just finished a grueling program, and my reward is I’m fit to sit at the same table with people who &lt;em&gt;know so much more than me&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have to learn a whole new codebase. Or four.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have to meet the standards of an inexperienced-but-competent professional, which are higher than “eager student”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, I’ve been thinking &lt;em&gt;a lot&lt;/em&gt; about how to grow as a developer in my job.&lt;/p&gt;

&lt;h2 id=&quot;what-does-grow-as-a-developer-mean&quot;&gt;What does “grow as a developer” mean?&lt;/h2&gt;

&lt;p&gt;Part of growing in anything means having goals. I have career goals that may be 5+ years out, but for the next year or two, these are the goals I’m using to drive me towards my goal of being “an experienced developer””&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Build &lt;em&gt;deep&lt;/em&gt; competency with the “standard” Rails framework. I think Rails scales just fine, and I don’t want to toss a JS-heavy front-end on our application. (I’m &lt;del&gt;secretly&lt;/del&gt; pulling for Turbolinks and Stimulus…)&lt;/li&gt;
  &lt;li&gt;Help guide our product through a few big changes in the coming year, &lt;em&gt;and help drive decisions around those changes&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Support other teams within the company&lt;/li&gt;
  &lt;li&gt;Put up a lot of PRs, close a lot of tickets. Do a lot of “work”&lt;/li&gt;
  &lt;li&gt;???&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not great goals, as far as good goal-setting goes, but I am not worrying too much about it, because good habits tend to be more important than good goals. And I’ve got good habits!&lt;/p&gt;

&lt;h2 id=&quot;constraints&quot;&gt;Constraints&lt;/h2&gt;

&lt;p&gt;Here are some constraints I’m operating within:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I work on a 100% distributed team of developers, but most of the rest of the offices works in-office in Pittsburgh. (Project/Product Management, Quality Assurance, DevOps, Support, Managed Services, Sales)&lt;/li&gt;
  &lt;li&gt;My immediate team is a group of three other developers. Myself and one other dev started at the same time.&lt;/li&gt;
  &lt;li&gt;The other two developers have been on the team for about three years.&lt;/li&gt;
  &lt;li&gt;The individuals who built most of the application is no longer on the team.&lt;/li&gt;
  &lt;li&gt;there is an extreme level of trust passed to all on the team. No one is required to pair with me, or checks in with me every day to make sure I’ve committed X code or fixed Y bugs.&lt;/li&gt;
  &lt;li&gt;We’re currently without an immediate manager.&lt;/li&gt;
  &lt;li&gt;I live a balanced life. I spend time with my wife, I rock climb a lot, I’ve gotten back into running, I read a lot. I won’t spend 20 hours a week on top of my job, trying to become a better developer.&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;p&gt;These constraints are challenges, indeed. In some ways, it might be easier to waltz into a company that has a robust mentoring program, and batch-hires new developers so everyone is passing through the mentorship pipeline with a buddy.&lt;/p&gt;

&lt;p&gt;Sure, that would be cool. But then I’d miss out on all the fun of wrestling with this challenge myself. I’ve rarely found myself in the exact same place, moving in the exact same speed, as many others, so this is a very Josh-friendly opportunity.&lt;/p&gt;

&lt;h2 id=&quot;what-is-the-range-of-options-available-to-me&quot;&gt;What is the range of options available to me?&lt;/h2&gt;

&lt;p&gt;There’s a few potential avenues I’m exploring right now:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Pairing more with my coworkers&lt;/li&gt;
  &lt;li&gt;self-study&lt;/li&gt;
  &lt;li&gt;implement suggestions from other developers&lt;/li&gt;
  &lt;li&gt;Work-related side-projects&lt;/li&gt;
  &lt;li&gt;non-work-related side-projects&lt;/li&gt;
  &lt;li&gt;Meetups&lt;/li&gt;
  &lt;li&gt;Teaching/helping others&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;pairing-more-with-coworkers&quot;&gt;Pairing more with coworkers&lt;/h3&gt;

&lt;p&gt;A simplistic solution could be to go look at some company who has an established mentorship program, and try to force-fit it into our team of four. If said plan called for 15 hours a week of pairing, I could ask each of the three developers how they felt about pairing with me for five hours a week, each.&lt;/p&gt;

&lt;p&gt;That’s almost a workday out of each week that would be lost to pairing. Maybe this is the most effective use of everyone’s time, but I’m not yet convinced that it is.&lt;/p&gt;

&lt;p&gt;If it &lt;em&gt;is&lt;/em&gt; the best use of time, there’s still a lot of questions about how it would work, like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;how should we pair?&lt;/li&gt;
  &lt;li&gt;Driver/Navigator? One types, the other adds insights and suggestions?&lt;/li&gt;
  &lt;li&gt;Do we use my machine or theirs?&lt;/li&gt;
  &lt;li&gt;Do we work on whatever ticket I’m working on? Whatever ticket they’re working on? both? neither?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’re also 100% remote, so this pairing would have to be 100% Slack/Zoom/something similar. Anytime the internet dropped many packets, there would be lag and friction.&lt;/p&gt;

&lt;p&gt;Since I’ve started, I have set up weekly 1:1s with everyone on my team. Usually technical things come up, and I get help with whatever I’m working on, but a big part of it was I wanted to get to know my team. We don’t see each other often, and I wanted to get to know them. I also sometimes “shadow” one of my coworkers for 30 minutes or an hour a week, to absorb some of how they work, without interrupting their work too much.&lt;/p&gt;

&lt;h3 id=&quot;self-study&quot;&gt;Self-study&lt;/h3&gt;

&lt;p&gt;There’s a lot of great books out there about software development, and classes, videos, and more.&lt;/p&gt;

&lt;p&gt;So far, I’ve read (or am reading)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://pragprog.com/book/ppmetr2/metaprogramming-ruby-2&quot;&gt;Metaprogramming in Ruby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.poodr.com/&quot;&gt;Practical Object-Oriented Design in Ruby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X&quot;&gt;The Pragmatic Programmer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://pragprog.com/book/cfcar2/the-passionate-programmer&quot;&gt;The Nature of Software Development (Ron Jeffries)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/29902035-agile-web-development-with-rails-5?ac=1&amp;amp;from_search=true&quot;&gt;Agile Web Development with Rails 5&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/9364729-eloquent-ruby?ac=1&amp;amp;from_search=true#&quot;&gt;Eloquent Ruby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/SQL-Queries-Mere-Mortals-Hands/dp/0321992474&quot;&gt;SQL Queries for Mere Mortals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’ a start, but only that - a start. I don’t yet feel like I’ve read that many books about software development, Ruby/Rails, or programming in general. So, since I love to read, I’ll always have a book or two going on the topic.&lt;/p&gt;

&lt;h3 id=&quot;courses&quot;&gt;Courses&lt;/h3&gt;

&lt;p&gt;I done most of Avdi Grimm’s &lt;a href=&quot;https://avdi.codes/moom/&quot;&gt;Mastering the Object Oriented Mindset&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s been good so far. I’m learning plenty, and I’m about half-way through it, and have been &lt;a href=&quot;https://josh.works/tags#moom&quot;&gt;writing about some of what I’ve learned&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve also started Nate Berkopec’s &lt;a href=&quot;https://www.railsspeed.com/&quot;&gt;RailsSpeed course&lt;/a&gt; - it’s all about speeding up a Rails app, and I’m really excited about it.&lt;/p&gt;

&lt;p&gt;Both of these have given me a lot of value. In different ways, but I’m feeling like a wiser, more confident, more competent developer because of it.&lt;/p&gt;

&lt;p&gt;So far, though, I’ve not been able to take something directly from one of these courses and apply it at Wombat. I’m not concerned about that at all - I’ve not finished either course, and I’ll have plenty of opportunity to apply this learning.&lt;/p&gt;

&lt;h3 id=&quot;work-related-side-projects&quot;&gt;Work-related side-projects&lt;/h3&gt;

&lt;p&gt;As I encounter projects at work that are amenable to studying in more depth, and spinning into a one-off tutorial/blog post, I will capture the idea and consider a few hours of effort in that direction.&lt;/p&gt;

&lt;p&gt;That is where a few recent blog posts have been born:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/pry-tips-and-tricks&quot;&gt;Pry Tips and Tricks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/sidekiq-and-background-jobs-in-rails-for-beginners&quot;&gt;Sidekiq/Redis/Background jobs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/array-divergence&quot;&gt;array intersection/divergence&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/test-rake-tasks-in-rails&quot;&gt;Testing Rake Tasks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These blog posts are a great way for me to build a more robust mental model around the topic, as well as give me something to refer back to if I need to later.&lt;/p&gt;

&lt;p&gt;This is a nice “proof of progress”, as well. It’s easy for me to feel like I’ve not made much progress in the last week, and therefore &lt;em&gt;I must have made no progress in the last six months&lt;/em&gt;. This is a logical fallacy, but that’s how my brain works. It’s nice to have evidence of work done.&lt;/p&gt;

&lt;h3 id=&quot;non-work-related-side-projects&quot;&gt;non-work-related side-projects&lt;/h3&gt;

&lt;p&gt;I don’t spend too much time on non-work related projects. I’d love to extend my Turing capstone project, &lt;a href=&quot;/block-value&quot;&gt;Block Value&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I had a ton of fun with it, and it feels close to being &lt;em&gt;actually good&lt;/em&gt;. I’d need to brush up on my Javascript a bit, though. When I’m ready to dig into Javascript, I think this project might be the way I do that. I’d like to drop in OpenStreetMaps instead of Google Maps, and drop in &lt;a href=&quot;https://leafletjs.com/&quot;&gt;Leaflet.js&lt;/a&gt; instead of the crappy Javascript I have in there.&lt;/p&gt;

&lt;h3 id=&quot;meetups&quot;&gt;Meetups&lt;/h3&gt;

&lt;p&gt;I’ve been attending &lt;a href=&quot;https://www.meetup.com/boulder_ruby_group/&quot;&gt;Boulder.rb&lt;/a&gt; and &lt;a href=&quot;https://www.meetup.com/Denver-rb/&quot;&gt;Denver.rb&lt;/a&gt; (and am considering starting a meetup in Golden!), and I’ve enjoyed those communities. Both are fairly time consuming, as I have to travel to the location mid-day to dodge rush hour, etc.&lt;/p&gt;

&lt;p&gt;I’m giving a talk at Boulder.rb in a few weeks, and hope to keep that trend rolling.&lt;/p&gt;

&lt;h3 id=&quot;teachinghelping-others&quot;&gt;Teaching/helping others&lt;/h3&gt;

&lt;p&gt;I like helping others. In job hunts, salary negotiations, learning programming, rock climbing, and more.&lt;/p&gt;

&lt;p&gt;I’ve worked regularly with folks breaking into software development (Turing and non-Turing students) and I enjoy the process. It helps me stretch my empathy/teaching/understanding muscles, and I very much enjoy teaching, and seeing others make progress, so this is probably something I’ll continue for the rest of my career.&lt;/p&gt;

&lt;p&gt;I know that helping others is a part of growing in a career, but I’m not yet seeing where this interest of mine ties into helping my own skills grow.&lt;/p&gt;

&lt;p&gt;As our team at Wombat grows, I’ll get to step into a bit of a mentorship role there, but this opportunity brings this post full circle. I’m not yet exactly sure what I have to offer. Sure, I’ll be useful in them getting their environment set up, and wrapping their head around the code base, and making good PRs and stuff… but I’ve got a lot more I need to learn.&lt;/p&gt;

&lt;h3 id=&quot;additional-resources&quot;&gt;Additional Resources&lt;/h3&gt;

&lt;p&gt;I’ve read all of this, and more, in pursuit of upping my skills.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nateliason.com/blog/learning-plateau&quot;&gt;How to Break Through Any Learning Plateau and Never Stop Growing (Nat Ellison)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/pulse/want-happy-work-spend-time-learning-josh-bersin/&quot;&gt;New Research Shows “Heavy Learners”​ More Confident, Successful, and Happy at Work (LinkedIn)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://slack.engineering/how-slack-supports-junior-engineers-89f6dcfe74a1&quot;&gt;How Slack Supports Junior Engineers (Slack)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.eventbrite.com/engineering/how-to-support-junior-engineers/&quot;&gt;How Your Company Can Support Junior Engineers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://jvns.ca/blog/senior-engineer/&quot;&gt;What’s a senior engineer’s job? (Julia Evans)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/&quot;&gt;On Being A Senior Engineer (John Allspaw)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://lethain.com/career-narratives/&quot;&gt;Career narratives. (Will Larson)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=18128477&amp;amp;p=2&quot;&gt;Ask HN: What is your best advice for a junior software developer?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Primitive Obsession &amp; Exceptional Values</title>
   <link href="https://josh.works/primative-obsession-and-exceptional-values"/>
   <updated>2018-10-12T13:00:00+00:00</updated>
   <id>https://josh.works/primitive_obsession_and_exceptional_values</id>
   <content type="html">&lt;p&gt;I’ve been working through Avdi Grimes’ &lt;a href=&quot;https://avdi.codes/moom/&quot;&gt;Mastering the Object Oriented Mindset&lt;/a&gt; course.&lt;/p&gt;

&lt;p&gt;One of the topics was using “whole values”, instead of being “primative obsessed”. The example Avdi gave was clear as day.&lt;/p&gt;

&lt;p&gt;He used a course with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;duration&lt;/code&gt; attribute to show the problem.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;duration&lt;/span&gt; 
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;3 what? weeks? days? months?&lt;/p&gt;

&lt;p&gt;Of course, you could write a method like:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;duration_in_weeks&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But now you’ll have trouble rendering this all over the place. You’d have conditionals every time you wanted to render courses in weeks (if it makes sense), or in months (if appropriate), or of course, days.&lt;/p&gt;

&lt;p&gt;So, the solution is to use “Whole values”. This means an attribute should be a complete unit, in and of itself, and should need no further refining to be usable.&lt;/p&gt;

&lt;p&gt;So, you should be able to do something like this:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;duration&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Months&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;shorter_course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;duration&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Weeks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;!--more--&gt;

&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/26ufdipQqU2lhNA4g/giphy.gif&quot; alt=&quot;mind blown&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, here’s the basics of this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Duration&lt;/code&gt; class, that your units (like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Days&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Weeks&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Months&lt;/code&gt;) inherit from:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Duration&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:magnitude&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;magnitude&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@magnitude&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;magnitude&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;freeze&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;inspect&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;magnitude&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;]&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;magnitude&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;downcase&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;kp&quot;&gt;alias_method&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:magnitude&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Days&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Weeks&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Months&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And it delivers pretty cool stuff:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;main:0&amp;gt; Days.new(3)
=&amp;gt; Days[3]
main:0&amp;gt; Days.new(3).to_s
=&amp;gt; &quot;3 days&quot;
main:0&amp;gt; length = Weeks.new(3)
=&amp;gt; Weeks[3]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But having the option to call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;course.duration&lt;/code&gt; and get &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Weeks[3]&lt;/code&gt; as a response is… amazing. Or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;course.length.to_s&lt;/code&gt; and get &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;3 weeks&lt;/code&gt;. Super cool.&lt;/p&gt;

&lt;p&gt;Avdi walked through the example code, but I was partial to having it available for playing around myself. So, I built a very simple test file.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://gist.github.com/josh-works/6eb437670b66a67675c23352c787e66d&quot;&gt;Check out the full test suite, if you’re interested&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The above gist also has the code that makes it all pass. I’m going to highlight just a few of the tests below:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_duration_is_months_object&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;assert_instance_of&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Months&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;duration&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This test (and a few others) make it explicit that when you call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@math.duration&lt;/code&gt; you don’t expect a primitive back - you expect an instance of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Months&lt;/code&gt; class. Super cool.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_duration_inspect&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;assert_equal&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Months[4]&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;duration&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;inspect&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We can “convert” our Duration value into a primitive (a string) by calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#inspect&lt;/code&gt; on it. Other than this, though, the duration value lives as its own object.&lt;/p&gt;

&lt;p&gt;The tests test some helper methods that Avidi mentioned, to make it a bit easier to render the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;course.duration&lt;/code&gt; in a view:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;render_course_info&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;render_value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;duration&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;)&quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;render_value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;value&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Months&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; gruling months&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Weeks&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; delightful weeks&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Days&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;a paultry &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; days&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;exceptional-values&quot;&gt;Exceptional Values&lt;/h1&gt;

&lt;p&gt;So, we’ve got this method that takes input as a string, like “12 months”, and tries to convert it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Months[12]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you are accepting data from a user, you’ll need to plan on invalid input, like “99 blinks”.&lt;/p&gt;

&lt;p&gt;Here’s the first take of the conversion method:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;raw_value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;raw_value&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Duration&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;raw_value&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\A(\d+)\s+months\z/i&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;Months&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\A(\d+)\s+weeks\z/i&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;Weeks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\A(\d+)\s+days\z/i&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;Days&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; 
    &lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This kind of works, but &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nil&lt;/code&gt; isn’t a great place-holder. Now your view logic needs to do all sorts of special work to handle if there are &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nil&lt;/code&gt; values, which of course there will be all the time, because if you call:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;math&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;duration&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;12 days&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The course &lt;em&gt;will have nil values auto-assigned&lt;/em&gt; simply because the user has not filled it in  yet.&lt;/p&gt;

&lt;p&gt;Anyway, so, as you might expect from someone talking about “whole values”, there’s a “whole value” implementation of an exception:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;raw_value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;raw_value&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Duration&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;raw_value&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\A(\d+)\s+months\z/i&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;Months&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\A(\d+)\s+weeks\z/i&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;Weeks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\A(\d+)\s+days\z/i&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;Days&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; 
    &lt;span class=&quot;no&quot;&gt;ExceptionalValue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;raw_value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;reason: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;unrecognized format&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# we create a new Exceptional Value object if we get unrecognized input&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here’s what that object might look like, using this exceptional value:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;math&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Course&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Math&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;duration&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;a blink of an eye&quot;&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Course&lt;/span&gt;
 &lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Math&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;duration&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&amp;lt;&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ExceptionalValue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mh&quot;&gt;0x00007fca79021188&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@raw_value&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;a blink of an eye&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@reason&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;unrecognized format&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;pretty cool, huh?&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://gist.github.com/josh-works/6eb437670b66a67675c23352c787e66d&quot;&gt;check out the gist for tests and class code. Don’t judge me for sticking like 40 classes in the same file…&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>`ls` command to show directory contents</title>
   <link href="https://josh.works/ls_command_recursively_list_directory_contents"/>
   <updated>2018-10-03T11:00:00+00:00</updated>
   <id>https://josh.works/unix_ls_command</id>
   <content type="html">&lt;p&gt;I like to use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tree&lt;/code&gt; command on my local machine when trying to peek into the structure and contents of a given directory.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;tree -L 2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;will [L]ist recursively everything [2] levels deep from your current directory. The output is nicely formatted like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; tree -L 2
.
├── cargo
│   ├── ARCHITECTURE.md
│   ├── CONTRIBUTING.md
│   ├── Cargo.lock
│   ├── Cargo.toml
│   ├── LICENSE-APACHE
│   ├── LICENSE-MIT
│   ├── LICENSE-THIRD-PARTY
│   ├── README.md
│   ├── appveyor.yml
│   ├── rustfmt.toml
│   ├── src
│   ├── target
│   └── tests
├── fastly
│   └── fastly-test-blog
├── get-pip.py
├── learning_aws
├── learning_elixir
│   ├── hellow
│   ├── sample01.exs
│   └── sling_clone
├── learning_over_the_wire
│   ├── bandit
│   └── leviathan
├── learning_react
│   └── react_tutorial
├── learning_ruby_rails
│   ├── InstaClone
│   ├── blocks_practice.rb
│   ├── chris_pine_ruby_lessons
│   ├── eloquent_ruby
│   ├── email_sender
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you’ve SSHed into a linux box, however, and you’re trying to look around a bit, you won’t have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tree&lt;/code&gt; available to you. How can you list out the contents of directories?&lt;/p&gt;

&lt;p&gt;Easy. The good ‘ol &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ls&lt;/code&gt; command:&lt;/p&gt;

&lt;!--more--&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ls -1d ./*/*
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;results in:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; ls -1d ./*/*
./cargo/ARCHITECTURE.md
./cargo/CONTRIBUTING.md
./cargo/Cargo.lock
./cargo/Cargo.toml
./cargo/LICENSE-APACHE
./cargo/LICENSE-MIT
./cargo/LICENSE-THIRD-PARTY
./cargo/README.md
./cargo/appveyor.yml
./cargo/rustfmt.toml
./cargo/src
./cargo/target
./cargo/tests
./fastly/fastly-test-blog
./learning_elixir/hellow
./learning_elixir/sample01.exs
./learning_elixir/sling_clone
./learning_over_the_wire/bandit
./learning_over_the_wire/leviathan
./learning_react/react_tutorial
./learning_ruby_rails/InstaClone
./learning_ruby_rails/blocks_practice.rb
./learning_ruby_rails/chris_pine_ruby_lessons
./learning_ruby_rails/eloquent_ruby
./learning_ruby_rails/email_sender
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ls&lt;/code&gt; is obviously “list”. What about that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-1d&lt;/code&gt; thing?&lt;/p&gt;

&lt;p&gt;according to the man page:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;-1   (The numeric digit ``one&apos;&apos;.)  Force output to be one entry per line.  This is the
      default when output is not to a terminal.
         
-d   Directories are listed as plain files (not searched recursively).
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;to achieve a certain number of directories in depth, just repeat the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;./*./*&lt;/code&gt; pattern, one &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/*&lt;/code&gt; per directory depth you’d like to view.&lt;/p&gt;

&lt;p&gt;The output isn’t always particularly readable - sometimes you get a ton of results.&lt;/p&gt;

&lt;p&gt;If this is the case, you could always pipe the output to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;head&lt;/code&gt;, or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grep&lt;/code&gt; the output. That said, I’ve used this general pattern regularly, and it’s been helpful.&lt;/p&gt;

&lt;h3 id=&quot;related-resources&quot;&gt;Related resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://unix.stackexchange.com/questions/93323/list-subdirectories-only-n-level-deep&quot;&gt;List subdirectories only n level deep (unix.stackexchange.com)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Rails Migration: When you can&apos;t add a uniqueness constraint because you already have duplicates</title>
   <link href="https://josh.works/add_uniqueness_constraint_on_column_with_existing_duplicates"/>
   <updated>2018-09-28T10:00:00+00:00</updated>
   <id>https://josh.works/rails_migrations_add_unique_constraint_with_existing_duplicates</id>
   <content type="html">&lt;p&gt;&lt;em&gt;I get to occasionally contribute to the Wombat Security dev blog. I wrote the following for &lt;a href=&quot;http://development.wombatsecurity.com/development/2018/09/28/rails-migration-add-uniqueness-constraint/&quot;&gt;development.wombatsecurity.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;this-post-has-been-updated-to-reflect-some-lessons-learned-while-running-this-migration-in-production-dont-leave-a-column-without-an-index-at-any-point-in-the-migration-skip-to-section&quot;&gt;This post has been updated to reflect some lessons learned while running this migration in production. &lt;em&gt;Don’t leave a column without an index at any point in the migration&lt;/em&gt;. &lt;a href=&quot;#update-do-not-leave-a-column-without-an-index-at-any-point-in-the-migration&quot;&gt;skip to section&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;For work, I picked up a bug where a CSV export was creating duplicate rows when it shouldn’t have been.&lt;/p&gt;

&lt;p&gt;We generate the CSV export with a big ol’ SQL statement in some Elixir workers, and got the bug reproduced and found the problem was with how we did some joins on other columns.&lt;/p&gt;

&lt;p&gt;We had something in the statement like this:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;OUTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`reports`&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;ON&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`reports`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;`id`&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`people`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;`report_id`&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`addresses`&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;ON&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`addresses`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;`people_id`&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`people`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;`id`&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`favorite_colors`&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;ON&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`favorite_colors`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;`people_id`&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`people.id`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In this highly contrived example, I found out that we’re expecting a single row in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;favorite_colors&lt;/code&gt; table for each &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;person&lt;/code&gt;, but we were getting multiple &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;favorite_color&lt;/code&gt; rows.&lt;/p&gt;

&lt;p&gt;Every time we had a duplicate row on that joined table, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LEFT JOIN&lt;/code&gt; created two rows in the export, even though there should have been one.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;a href=&quot;https://robots.thoughtbot.com/the-perils-of-uniqueness-validations&quot;&gt;Thoughtbot has an amazing article about the exact problem we were having&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In that article, they describe the problem with uniqueness validations like so:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/unique_without_index.png&quot; alt=&quot;unique_without_index&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://robots.thoughtbot.com/the-perils-of-uniqueness-validations&quot;&gt;https://robots.thoughtbot.com/the-perils-of-uniqueness-validations&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We need to enforce uniqueness at the &lt;em&gt;database&lt;/em&gt; level. Not the model level.&lt;/p&gt;

&lt;h2 id=&quot;whats-the-easy-fix&quot;&gt;What’s the easy fix?&lt;/h2&gt;

&lt;p&gt;The “easy” fix is simple - Add an index to the column you want to enforce uniqueness upon, then add a uniqueness constraint:&lt;/p&gt;

&lt;p&gt;(since this column already happened to have an index in our database, we have to remove it and re-add it in the migration)&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;AddUniquenessConstraintToFavoriteColors&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Migration&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;change&lt;/span&gt;
   &lt;span class=&quot;n&quot;&gt;remove_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;
   &lt;span class=&quot;n&quot;&gt;add_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;unique: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Lets make this a bit more explicit. We’ll define an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;up&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;down&lt;/code&gt; migration. (you’ll see why in a moment)&lt;/p&gt;

&lt;h3 id=&quot;updown-migration&quot;&gt;Up/down migration&lt;/h3&gt;

&lt;p&gt;I am going to be explicit about the up and down, for the rollback:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;AddUniquenessConstraintToFavoriteColors&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Migration&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;up&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;remove_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# you can&apos;t MODIFY the index, just remove it, then re-add it with the changes&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;add_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;unique: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;algorithm: :inplace&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# unique forces uniqueness (duh)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;down&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;remove_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# removing the index that has uniqueness constraint&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;add_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# adding one without the constraint&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This migration will work, &lt;em&gt;if&lt;/em&gt; you run it against a table that doesn’t have duplicate values in the given column.&lt;/p&gt;

&lt;p&gt;But the &lt;em&gt;whole reason&lt;/em&gt; I was digging into all this was because I had a table with duplicate values. This is a table that now has many rows of data, and more than a few duplicates.&lt;/p&gt;

&lt;p&gt;If you run the above migration, and there are duplicates on the table, you’ll get a lovely error like so:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;== 20180914203948 AddUniquenessConstraintToFavoriteColors: migrating ========================
-- remove_index(:favorite_colors, :person_id)
   -&amp;gt; 0.0388s
-- add_index(:favorite_colors, :person_id, {:unique=&amp;gt;true, :algorithm=&amp;gt;:inplace})
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Duplicate entry &apos;44&apos; for key &apos;index_favorite_colors_on_person_id&apos;: CREATE UNIQUE INDEX `index_favorite_colors_on_person_id`  ON `favorite_colors` (`person_id`) ALGORITHM = INPLACE
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;clean-up-duplicates-and-add-uniqueness-constraint&quot;&gt;Clean up duplicates &lt;em&gt;and&lt;/em&gt; add uniqueness constraint&lt;/h1&gt;

&lt;p&gt;The big question was:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;How do we clean up the duplicates, &lt;em&gt;and&lt;/em&gt; run the migration, without duplicates showing up between when we clean them up and run the migration?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My first thought was a rake task to find and prune duplicates, but this is a relatively active table, and if even a few seconds elapsed between the rake task and migration, we might get another duplicate on it, which would prevent the migration from running.&lt;/p&gt;

&lt;h1 id=&quot;the-solution&quot;&gt;The Solution&lt;/h1&gt;

&lt;p&gt;The rake task was not a good solution. Fortunately, I work with many people who are much smarter than I, and they put me on the right track. I needed to update the migration to run a query that would:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Find all duplicate rows&lt;/li&gt;
  &lt;li&gt;Get the ID’s of those duplicate rows&lt;/li&gt;
  &lt;li&gt;Trim one of the row IDs of the “duplicates” list&lt;/li&gt;
  &lt;li&gt;Delete all the remaining IDs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, the SQL query gets built up in three pieces.&lt;/p&gt;

&lt;p&gt;I’ll give you the full SQL query, then we’ll dig into the component pieces. The following query creates a list of IDs that we can then use ActiveRecord/Sequel to delete. (More on the migration in a minute):&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;substring&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dups&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_groups&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;,&apos;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;IN&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;dups&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_groups&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; 
    &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt;  &lt;span class=&quot;n&quot;&gt;group_concat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;id_groups&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;EXISTS&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; 
      &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
     &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;BY&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;dups&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Lets unpack it. First, here’s a little SQL you could run locally to generate results to play with:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;ID&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AUTO_INCREMENT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;PRIMARY&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;KEY&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;color&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;VARCHAR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`favorite_colors`&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;`ID`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`person_id`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;`color`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;VALUES&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;yellow&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;yellow&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;blue&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;blue&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;green&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;purple&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;yellow&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;black&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;OK, first, lets find the duplicate rows. There’s a lot of them in here. The following query comes from &lt;a href=&quot;https://stackoverflow.com/a/689294/3210178&quot;&gt;StackOverflow&lt;/a&gt;, and served me well:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; 
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt;   &lt;span class=&quot;k&quot;&gt;EXISTS&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt;  &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt;   &lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;BY&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So, obviously, that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WHERE EXISTS&lt;/code&gt; piece is interesting. But that depends on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SELECT 1... LIMIT 1, 1&lt;/code&gt;, which is unfamiliar to me.&lt;/p&gt;

&lt;h2 id=&quot;limit-count-offset&quot;&gt;Limit &lt;em&gt;count&lt;/em&gt;, &lt;em&gt;offset&lt;/em&gt;&lt;/h2&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is the most basic version of the above statement. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SELECT&lt;/code&gt; piece just inserts a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1&lt;/code&gt; in the table. It could easily be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SELECT &quot;FOOBAR&quot;&lt;/code&gt;. The prior &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WHERE EXISTS&lt;/code&gt; is just looking for &lt;em&gt;a&lt;/em&gt; value from the statement.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LIMIT 1, 1&lt;/code&gt; is curious. It’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LIMIT &amp;lt;count&amp;gt; &amp;lt;offset&amp;gt;&lt;/code&gt;. So it’s limiting the count to one, and it’s offsetting it by 1. &lt;a href=&quot;https://www.postgresql.org/docs/8.2/static/queries-limit.html&quot;&gt;PostgreSQL has the best docs on this function&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This means it returns one row, offset from the first row by 1. So, if you ran the following query:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You’d get four rows, &lt;em&gt;skipping&lt;/em&gt; the first two rows, and including the subsequent four.&lt;/p&gt;

&lt;p&gt;Here’s the results of:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;id&lt;/th&gt;
      &lt;th&gt;person_id&lt;/th&gt;
      &lt;th&gt;color&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;yellow&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2&lt;/td&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;yellow&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;And if we run&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;we get:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;id&lt;/th&gt;
      &lt;th&gt;person_id&lt;/th&gt;
      &lt;th&gt;color&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;3&lt;/td&gt;
      &lt;td&gt;2&lt;/td&gt;
      &lt;td&gt;blue&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;4&lt;/td&gt;
      &lt;td&gt;2&lt;/td&gt;
      &lt;td&gt;blue&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;So, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LIMIT 1, 1&lt;/code&gt; takes the results of the prior &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WHERE&lt;/code&gt; and basically “hides” the first match, and leaves only the second match. The temporary result would be empty when the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EXISTS&lt;/code&gt; statement checked the subquery, and the row would be deemed “not a duplicate”.&lt;/p&gt;

&lt;h4 id=&quot;exists&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EXISTS&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;In &lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/exists-and-not-exists-subqueries.html&quot;&gt;the docs&lt;/a&gt;, we learn:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If a subquery returns any rows at all, EXISTS subquery is TRUE, and NOT EXISTS subquery is FALSE. For example:&lt;/p&gt;

  &lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;column1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;t1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;EXISTS&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;t2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;I still don’t fully grasp the nuance of the total SQL statement, but I feel like I’m approaching comprehension. Either way, I am pleased to know how to return the complete rows of duplicates from a table where there are duplicate values in a given column.&lt;/p&gt;

&lt;p&gt;OK, so we’ve got duplicates. How do we make them usable?&lt;/p&gt;

&lt;h3 id=&quot;get-ids-from-results&quot;&gt;Get IDs from results&lt;/h3&gt;

&lt;p&gt;We don’t want to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SELECT *&lt;/code&gt;, now, we want to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SELECT group_concat(favorite_colors.id) AS id_groups&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt;  &lt;span class=&quot;n&quot;&gt;group_concat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;id_groups&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;EXISTS&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; 
  &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
 &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;BY&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;returns:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;id_groups&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;1,2&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;3,4,6&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;5,7&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GROUP BY table.column_with_duplicates&lt;/code&gt; is important to split the groups by unique value. Without the group by, you’d get one long string of joined IDs, which would be totally useless.&lt;/p&gt;

&lt;p&gt;Next, we want to trim off the first ID in each of these groups. So, here’s the full query:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;substring&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dups&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_groups&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;,&apos;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;IN&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;dups&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_groups&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt;  &lt;span class=&quot;n&quot;&gt;group_concat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;id_groups&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;EXISTS&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; 
      &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;favorite_colors&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
     &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;BY&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person_id&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;dups&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And this returns:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;id_groups&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;2&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;4,6&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;7&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;And the results of this SQL statement can now be deleted from the database via ActiveRecord. Here’s our full migration:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;AddUniquenessConstraintToFavoriteColors&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Migration&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;disable_ddl_transaction!&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;up&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;results&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;execute&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;SQL&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;
    SELECT substring(dups.id_groups, position(&apos;,&apos;IN dups.id_groups) + 1)
      FROM 
        (SELECT  group_concat(fc.id) AS id_groups
        FROM favorite_colors fc
        WHERE EXISTS
          ( 
          SELECT 1
          FROM favorite_colors tmp
          WHERE tmp.person_id = fc.person_id
          LIMIT 1, 1
         )
        GROUP BY fc.person_id
    ) AS dups
&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;    SQL&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;results&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_array&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;c1&quot;&gt;# I know find_in_batches would normally be a better fit&lt;/span&gt;
      &lt;span class=&quot;no&quot;&gt;FavoriteColors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;id: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_array&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;delete_all&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;remove_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;add_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;unique: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;algorithm: :inplace&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;down&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;remove_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;add_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;in-conclusion&quot;&gt;In Conclusion&lt;/h1&gt;

&lt;p&gt;You can use this pattern to add a uniqueness constraint to a table that already has duplicate values. This will clean out duplicates, but leave original values, and will prevent additional duplicates from being written to the table.&lt;/p&gt;

&lt;p&gt;In hindsight, this was a relatively straight-forward migration. I had not found any resource online that talked about the process of adding a uniqueness constraint if the table already had data that violated the constraint, so I hope that this write-up might help someone else in a similar spot.&lt;/p&gt;

&lt;h1 id=&quot;update-do-not-leave-a-column-without-an-index-at-any-point-in-the-migration&quot;&gt;Update: Do not leave a column without an index at any point in the migration&lt;/h1&gt;

&lt;p&gt;I made a mistake in all this.&lt;/p&gt;

&lt;p&gt;Take a look at what we ran:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;results&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_array&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# I know find_in_batches would normally be a better fit&lt;/span&gt;
  &lt;span class=&quot;no&quot;&gt;FavoriteColors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;id: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_array&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;delete_all&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;remove_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;add_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;unique: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;algorithm: :inplace&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;See how we &lt;em&gt;remove&lt;/em&gt; an index, then add it?&lt;/p&gt;

&lt;p&gt;This means if the migration fails while adding the new index, and we have to re-run the migration, we’re now executing the query without an index on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;favorite_colors&lt;/code&gt; column.&lt;/p&gt;

&lt;p&gt;If you’re doing a big ol’ query against a few hundred thousand rows of data, with the index, it’ll take a few seconds. Without the index, it could take… many minutes.&lt;/p&gt;

&lt;p&gt;Here’s what you should do:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;results&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_array&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# I know find_in_batches would normally be a better fit&lt;/span&gt;
  &lt;span class=&quot;no&quot;&gt;FavoriteColors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;id: &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id_array&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;delete_all&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# rename existing index&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;rename_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors_non_unique&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# add the uniqueness index (if we didn&apos;t rename the existing index, we&apos;d get an error saying &quot;an index by this name already exists&quot;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;add_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:person_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;unique: &lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;algorithm: :inplace&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# This line won&apos;t get run unless the above index has been successfully added. We&apos;re removing it by the name we&apos;ve given it:&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;remove_index&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:favorite_colors_non_unique&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;useful-additional-resources&quot;&gt;Useful additional resources&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://robots.thoughtbot.com/the-perils-of-uniqueness-validations&quot;&gt;The Perils of Uniqueness Validations (Thoughtbot)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/48007376/rails-add-unique&quot;&gt;Rails add unique (StackOverflow question)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://medium.com/@igorkhomenko/rails-make-sure-you-have-proper-db-indexes-for-your-models-unique-validations-ffd0364df26f&quot;&gt;Rails: make sure you have proper DB indexes for your model’s unique validations (Igor Khomenko, Medium)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Sidekiq and Background Jobs for Beginners</title>
   <link href="https://josh.works/sidekiq-and-background-jobs-in-rails-for-beginners"/>
   <updated>2018-07-30T13:00:00+00:00</updated>
   <id>https://josh.works/sidekiq_background_jobs_for_beginners</id>
   <content type="html">&lt;p&gt;I’ve recently had to learn more about background jobs (using &lt;a href=&quot;https://github.com/mperham/sidekiq&quot;&gt;Sidekiq&lt;/a&gt;, specifically) for some bugs I was working on.&lt;/p&gt;

&lt;p&gt;I learned a lot. Much of it was &lt;em&gt;extremely&lt;/em&gt; basic. Anyone who knows much at all about Sidekiq will say “oh, duh, of course that’s true”, but at the time, it wasn’t obvious to me.&lt;/p&gt;

&lt;p&gt;The reason I needed such basic overviews is because prior to my current job, I’d had just a few &lt;em&gt;hours&lt;/em&gt; of exposure to background jobs, and understood little of those hours. And I got dropped into a project that has dozens of jobs, handling hundreds of thousands of actions a day.&lt;/p&gt;

&lt;p&gt;As is my style, when I don’t understand something, I like to go to the very basics.&lt;/p&gt;

&lt;p&gt;Most of the interesting stuff is way down at the bottom, on &lt;a href=&quot;#watching-redis&quot;&gt;watching Redis do it’s thing&lt;/a&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;In this case, I went back to Turing! I found the &lt;a href=&quot;https://github.com/turingschool/backend-curriculum-site/blob/gh-pages/module3/archive/lessons/background_workers.md&quot;&gt;background jobs lesson&lt;/a&gt; from Mod 3, and worked through it.&lt;/p&gt;

&lt;p&gt;I very much enjoy seeing evidence of things working “under the hood”, rather than just accepting that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BackgroundWorker.perform_later(foo.id)&lt;/code&gt; works differently than &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BackgroundWorker.new.perform(foo.id)&lt;/code&gt;, etc. So, this post will focus not as much on &lt;em&gt;using&lt;/em&gt; Sidekiq, but &lt;em&gt;seeing that it’s working&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If you want to follow along, do the above tutorial. &lt;a href=&quot;https://github.com/josh-works/turing_sidekiq_tutorial/tree/eb5ef7eb34f8baefab9d763c469d9917c09c7d3f&quot;&gt;This is what my repo looks like right now&lt;/a&gt;. I’ll recap most of what’s in the tutorial.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;To run the app, run each of the following, using multiple terminal tabs as needed:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;rails s
redis-server
sidekiq
mailcatcher
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The app should now working. Navigate to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[http://localhost:3000/](http://localhost:3000/)&lt;/code&gt;, and you should see Missy Elliot in all her glory.&lt;/p&gt;

&lt;p&gt;Open up &lt;a href=&quot;http://localhost:3000/sidekiq/&quot;&gt;http://localhost:3000/sidekiq/&lt;/a&gt; to see the sidekiq dashboard, and then over to &lt;a href=&quot;http://localhost:1080/&quot;&gt;http://localhost:1080/&lt;/a&gt; for mailcatcher.&lt;/p&gt;

&lt;p&gt;You’ll notice that when sending emails via the app, nothing is happening on &lt;a href=&quot;http://localhost:3000/sidekiq/&quot;&gt;http://localhost:3000/sidekiq/&lt;/a&gt;, and the redis terminal window is untouched:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-07-25_redis.jpg&quot; alt=&quot;redis&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;convert-a-non-background-job-to-a-background-job&quot;&gt;Convert a non-background-job to a background job&lt;/h2&gt;

&lt;p&gt;The essence of a background job is to do stuff &lt;em&gt;in the background&lt;/em&gt;, without making the Rails app sit around doing all the work.&lt;/p&gt;

&lt;p&gt;To simulate the pain of waiting for synchronous jobs, when you use this app, the “send email” method has a five-second &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sleep&lt;/code&gt; in it.&lt;/p&gt;

&lt;p&gt;Lets make this a background job:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;create the job. (you can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails generate job &amp;lt;job_name&amp;gt;&lt;/code&gt;, per the &lt;a href=&quot;https://edgeguides.rubyonrails.org/active_job_basics.html#create-the-job&quot;&gt;ActiveJob docs&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Call the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;notify user job&lt;/code&gt; from the controller, instead of calling the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;user notifier&lt;/code&gt; directly.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;make-the-job&quot;&gt;Make the job&lt;/h2&gt;

&lt;p&gt;We’ll hand-roll this. Make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;app/jobs/send_user_gif_job.rb&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;SendUserGifJob&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveJob&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Base&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;queue_as&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:default&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;perform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# do da ting&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;(Deviated slightly from the docs with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ActiveJob::Base&lt;/code&gt;. I’m working with Rails 4.2)&lt;/p&gt;

&lt;h2 id=&quot;make-a-test&quot;&gt;Make a test&lt;/h2&gt;

&lt;p&gt;Working through the &lt;a href=&quot;https://edgeguides.rubyonrails.org/testing.html#testing-jobs&quot;&gt;rubyonrails.org docs on testing jobs&lt;/a&gt;, I’ll set up the following:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# test/jobs/send_user_gif_job_test.rb&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;test_helper&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;SendUserGifJobTest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveJob&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;TestCase&lt;/span&gt; 
  &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;that email is sent&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;SendUserGifJob&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;perform_async&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;test@test.com&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# literally no idea what to assert here...&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# assert &lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I’ve no idea what to assert just yet, but we’ll get there. Lets run the test!&lt;/p&gt;

&lt;p&gt;…&lt;/p&gt;

&lt;p&gt;Unfortunately, this test passes. :(&lt;/p&gt;

&lt;p&gt;After taking a look at the &lt;a href=&quot;https://github.com/mperham/sidekiq/wiki/Testing&quot;&gt;testing Sidekiq&lt;/a&gt; docs, I’ve got some ideas.&lt;/p&gt;

&lt;h2 id=&quot;messed-up-sidekiq&quot;&gt;Messed up Sidekiq?&lt;/h2&gt;

&lt;p&gt;After a bit of playing in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails console&lt;/code&gt;, I had a bunch of bad jobs that Sidekiq was trying to process. Every time I started Sidekiq, it broke with a stack trace for “uninitialized constant”, for a job/class/worker that didn’t exist.&lt;/p&gt;

&lt;p&gt;To clear out everything in Sidekiq, run the following from the rails console:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Sidekiq::Queue.all.each(&amp;amp;:clear)
Sidekiq::RetrySet.new.clear
Sidekiq::ScheduledSet.new.clear
Sidekiq::DeadSet.new.clear
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;As usual, I found the answer &lt;a href=&quot;https://stackoverflow.com/a/47290191/3210178&quot;&gt;on Stack Overflow&lt;/a&gt; (I could see this being a very dangerous command to run in any sort of production environment. Don’t do that, please.)&lt;/p&gt;

&lt;p&gt;After clearing out the queue, I can run Sidekiq just fine.&lt;/p&gt;

&lt;h2 id=&quot;rework-the-test-and-worker&quot;&gt;Rework the test and worker&lt;/h2&gt;

&lt;p&gt;These are &lt;em&gt;workers&lt;/em&gt; and not &lt;em&gt;jobs&lt;/em&gt;. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ActiveJob&lt;/code&gt; &lt;em&gt;jobs&lt;/em&gt; live in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/jobs&lt;/code&gt;. So, if you want a &lt;em&gt;worker&lt;/em&gt;, don’t put it in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/jobs&lt;/code&gt; directory, put it in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/workers&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;Don’t ask me why I know this.&lt;/p&gt;

&lt;p&gt;I had problems because of where I stuck these files, and &lt;s&gt;had some other problems because of naming conventions&lt;/s&gt; decided naming conventions are important.&lt;/p&gt;

&lt;p&gt;So, I threw away all the work and did &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails g sidekiq:worker SendGifToUserWorker&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here’s what I’ve got right now, after the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails g&lt;/code&gt; and taking some examples from the testing docs:&lt;/p&gt;

&lt;p&gt;My &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SendGifToUserWorker&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# app/workers/send_gif_to_user_worker.rb&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;SendGifToUserWorker&lt;/span&gt;
  &lt;span class=&quot;kp&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Sidekiq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Worker&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;perform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# Do something&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;My &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SendGifToUserWorkerTest&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# test/workers/send_gif_to_user_worker_test.rb&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;test_helper&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;SendGifToUserWorkerTest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveJob&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;TestCase&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;that email is sent&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;SendGifToUserWorker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;perform_async&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;test@test.com&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# literally no idea what to assert here...&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# assert &lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  
  &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;that job is pushed to queue&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;assert_equal&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;SendGifToUserWorker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;size&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;SendGifToUserWorker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;perform_async&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;test@test.com&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;assert_equal&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;SendGifToUserWorker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;size&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Unfortunately, the tests pass. This tells me the job is running fine (I guess), but no clue what is happening under the hood.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;correction: the second test passes every-other-time or so.&lt;/em&gt; The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jobs.size&lt;/code&gt; queue isn’t always starting at 0, so it fails the first assertion of 0.&lt;/p&gt;

&lt;p&gt;A fix was to add the following setup method:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# test/workers/send_gif_to_user_worker_test.rb:5&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;setup&lt;/span&gt;
  &lt;span class=&quot;no&quot;&gt;Sidekiq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Worker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;clear_all&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;making-sidekiq-do-stuff-via-the-rails-console&quot;&gt;Making Sidekiq do stuff via the Rails Console&lt;/h2&gt;

&lt;p&gt;Since the tests don’t push &lt;em&gt;actual&lt;/em&gt; jobs to Sidekiq, I don’t see any indication that anything interesting is happening in Sidekiq web, or Redis, or the Sidekiq terminal window. :(&lt;/p&gt;

&lt;p&gt;I updated the mail model in the application to actually use Sidekiq (no failing test quite right now, sorry) and here’s my worker:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# app/workers/send_gif_to_user_worker.rb&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;SendGifToUserWorker&lt;/span&gt;
  &lt;span class=&quot;kp&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Sidekiq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Worker&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;perform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;thought&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;UserNotifier&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;send_randomness_email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;thought&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;deliver_now&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And it’s getting called from the mailers controller, like so:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# app/controllers/mailers_controller.rb&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MailersController&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ApplicationController&lt;/span&gt;
  
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;create&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;SendGifToUserWorker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;perform_async&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:mailers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:mailers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:thought&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;flash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:message&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;You did it! Email sent to &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:mailers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;redirect_to&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/sent&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;sent&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;With that setup, in my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails console&lt;/code&gt;, I can do something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SendGifToUserWorker.perform_async(&quot;test@test.com&quot;, &quot;hello&quot;)&lt;/code&gt;, and I get back some sort of GUID:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;main:0&amp;gt; SendGifToUserWorker.perform_async(&quot;test@test.com&quot;, &quot;hello&quot;)
=&amp;gt; &quot;08e6a309cf7c46dc0178c53f&quot;
main:0&amp;gt; SendGifToUserWorker.perform_async(&quot;test@test.com&quot;, &quot;hello&quot;)
=&amp;gt; &quot;8b962d28217ae177564f0fd7&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Each of these talks to Sidekiq, and you can see these jobs go by in the logs:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;2018-07-27T17:13:55.023Z 10221 TID-ovusw76r0 SendGifToUserWorker JID-08e6a309cf7c46dc0178c53f INFO: start
2018-07-27T17:13:55.023Z 10221 TID-ovusw76r0 SendGifToUserWorker JID-08e6a309cf7c46dc0178c53f INFO: done: 0.0 sec
2018-07-27T17:13:57.521Z 10221 TID-ovusw781o SendGifToUserWorker JID-8b962d28217ae177564f0fd7 INFO: start
2018-07-27T17:13:57.521Z 10221 TID-ovusw781o SendGifToUserWorker JID-8b962d28217ae177564f0fd7 INFO: done: 0.0 sec
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is what it looks like, in the logs and sidekiq web, running the jobs from the Rails console:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-07-27_sidekiq_rails_console.gif&quot; alt=&quot;rails console, sidekiq web, and sidekiq&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, cool. My job still isn’t doing anything, but at least it’s running. I guess.&lt;/p&gt;

&lt;h2 id=&quot;restart-sidekiq-when-you-make-a-change-to-a-worker&quot;&gt;Restart Sidekiq when you make a change to a worker&lt;/h2&gt;

&lt;p&gt;It makes sense that the Sidekiq worker test might assert JUST that jobs get queued correctly.&lt;/p&gt;

&lt;p&gt;I’m still not content - my tests are passing, &lt;em&gt;without the sidekiq worker actually doing anything&lt;/em&gt;. I’d feel great about a red test related to it.&lt;/p&gt;

&lt;p&gt;Everything to this point &lt;a href=&quot;https://github.com/josh-works/turing_sidekiq_tutorial/tree/38f5750293edf3198e11b114851c8d313608f334&quot;&gt;is on commit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;38f5750&lt;/code&gt;&lt;/a&gt;, if you’re following along.&lt;/p&gt;

&lt;p&gt;Sidekiq is queuing the job as I’d expect it to, even though it’s not doing anything.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;I just spent an embarrassing amount of time “troubleshooting” why my worker wasn’t doing what I thought it should do. Turns out &lt;em&gt;you need to restart Sidekiq if you change a Sidekiq job&lt;/em&gt;. Maybe this isn’t always true, but if you’re saying&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;why isn’t &lt;new thing=&quot;&quot;&gt; showing up in Sidekiq?&lt;/new&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;just restart Sidekiq.&lt;/p&gt;

&lt;h2 id=&quot;watching-redis&quot;&gt;Watching Redis&lt;/h2&gt;

&lt;p&gt;I want to make sure that this stuff is getting in and out of Redis as expected. Redis is a super fast key:value store, and we should see stuff getting written to, and read from Redis.&lt;/p&gt;

&lt;p&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;redis-server&lt;/code&gt; to start Redis running. It’s pretty boring to watch, and doesn’t show you any information about data placed in/out of it, so not that helpful.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-07-28_redis_01.jpg&quot; alt=&quot;boring redis&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Once you have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;redis-server&lt;/code&gt; running, you can run (in another terminal tab) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;redis-cli monitor&lt;/code&gt;, which dumps you into something that prints a TON of logs when it’s not doing anything. (all of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hmset macbookpro&lt;/code&gt; stuff is still &lt;em&gt;me doing nothing&lt;/em&gt;. It’s reading “server status” details like a hyperactive chipmunk on crack.)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-07-28_redis_02.gif&quot; alt=&quot;slow your roll, Redis&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I found the signal-to-noise ratio of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;redis-cli monitor&lt;/code&gt; to make it near-useless. What we care about in Redis are &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hset&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lpush&lt;/code&gt;. Maybe more, but this is sufficient for finding what I want.&lt;/p&gt;

&lt;p&gt;So, once you’ve got redis running, to watch the logs for JUST &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hset&lt;/code&gt;s and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lpush&lt;/code&gt;es, run:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;redis-cli monitor | grep -E &quot;(hset|lpush)&quot;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And you’ll see nothing, until Sidekiq pushes jobs to Redis, and reads from it:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-07-28_redis_03.gif&quot; alt=&quot;thank you, redis&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://redis.io/commands/hset&quot;&gt;redis docs for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hset&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://redis.io/commands/lpush&quot;&gt;redis docs for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lpush&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s those lines, formatted for easier reading:&lt;/p&gt;

&lt;h3 id=&quot;lpush&quot;&gt;lpush&lt;/h3&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;mf&quot;&gt;1532784329.095661&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;127.0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;53832&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lpush&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;queue&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:default&lt;/span&gt; 
  &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:SendGifToUserWorker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;flip&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;flop&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;retry&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;queue&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:default&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;jid&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:adfa15f29ed6c09cda7f6973&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;created_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;1532784329.095427&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;enqueued_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;1532784329.095466&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;hset&quot;&gt;hset&lt;/h3&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;mf&quot;&gt;1532784332.778327&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;127.0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;53803&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hset&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;MacBook&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Pro&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6715&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;local&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;32134&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:cc8d1568c5c6:workers&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ow3kb5tjc&lt;/span&gt; 
  &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;queue&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:default&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;ss&quot;&gt;payload:
      &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:SendGifToUserWorker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;flip&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;flop&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;retry&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;queue&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:default&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;jid&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:adfa15f29ed6c09cda7f6973&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;created_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;1532784329.095427&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;enqueued_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;1532784329.095466&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;run_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1532784329&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;By the way, Redis is a bit cleaner if you run the server as a background process. To do this, do:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;redis-server &amp;amp;&lt;/code&gt; (the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;amp;&lt;/code&gt; makes it a background process).&lt;/p&gt;

&lt;p&gt;To stop Redis, just do &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;redis-cli shutdown&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-doesdoes-not-occur&quot;&gt;What does/does not occur&lt;/h2&gt;

&lt;p&gt;So, how can we be sure that our Sidekiq job is actually firing? Lets see what it looks like, using this worker &lt;em&gt;with&lt;/em&gt; Sidekiq, and without.&lt;/p&gt;

&lt;p&gt;Compare these two lines:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;SendGifToUserWorker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;perform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:mailers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:mailers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:thought&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;SendGifToUserWorker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;perform_async&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:mailers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:mailers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:thought&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Which one is using Sidekiq?&lt;/p&gt;

&lt;p&gt;The first line is creating a new instance of the worker class, and calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;perform&lt;/code&gt; directly on it. &lt;em&gt;It’s not hitting Sidekiq&lt;/em&gt;, and if the job fails, it won’t requeue.&lt;/p&gt;

&lt;p&gt;At least, I think this is the case.&lt;/p&gt;

&lt;p&gt;Here’s what &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails server&lt;/code&gt; (left), redis (filtering for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hset&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lpush&lt;/code&gt; events, top right) and Sidekiq (bottom right) look like when I trigger the email worker:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-07-30_sidekiq_02.gif&quot; alt=&quot;using sidekiq&quot; title=&quot;using sidekiq&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here’s how I can see a job using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Worker.new.perform&lt;/code&gt; doesn’t “hit” sidekiq:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-07-30_sidekiq_01.gif&quot; alt=&quot;not using sidekiq&quot; title=&quot;not using sidekiq&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The Rails server just sits for a while, and redis and Sidekiq seem clueless of the event?&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;One of the bugs I was working with, the root of the problem was the worker/job seemed to not be requeuing when it failed. I spent time touching up the worker, and logging around the specific error (it was a timeout on an internal API endpoint), but even after rescuing the timeout, the job wasn’t happening again.&lt;/p&gt;

&lt;p&gt;Someone else on the team wisely pointed out that the entire worker was getting called with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Worker.new.perform()&lt;/code&gt;, which was sidestepping (oh, the puns) the Sidekiq infrastructure. I understood this to be true, but I still wanted to see it for myself.&lt;/p&gt;

&lt;p&gt;In the process of working through this lesson, I found a &lt;a href=&quot;https://stackoverflow.com/questions/19251976/get-sidekiq-to-execute-a-job-immediately&quot;&gt;Stack Overflow post&lt;/a&gt; about “how to make Sidekiq execute a job immediately”. The only answer suggested calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Worker.new.perform&lt;/code&gt;, and that must be, for some reason, why this bit of code ended up in our codebase. The developer wanted it to happen immediately, and perhaps did not expect it to fail at any point.&lt;/p&gt;

&lt;p&gt;Anyway, I’m content that I understand the basic difference between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Worker.perform_async&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Worker.new.perform&lt;/code&gt;, and next time I encounter an issue like this, I’ll much more quicly wrap my head around it.&lt;/p&gt;

&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/turingschool/backend-curriculum-site/blob/gh-pages/module3/archive/lessons/background_workers.md&quot;&gt;Turing Sidekiq lesson&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.engineyard.com/blog/testing-async-emails-rails-42&quot;&gt;Testing async emails, the Rails 4.2+ way&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/30119144/rails-how-to-switch-between-dev-and-production-mode&quot;&gt;Quickly booting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails s&lt;/code&gt; into production&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/7829480/no-route-matches-get-assets&quot;&gt;No route matches [GET] /assets&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/14713084/how-to-see-set-get-in-redis-log&quot;&gt;StackOverflow: How to see set/get/ in redis log&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Mocks &amp; Stubs &amp; Exceptions in Ruby</title>
   <link href="https://josh.works/mocks-stubs-exceptions-ruby"/>
   <updated>2018-05-26T13:00:00+00:00</updated>
   <id>https://josh.works/mocks_stubs_exceptions_ruby</id>
   <content type="html">&lt;p&gt;Some of my recent work has been around improving error handling and logging.&lt;/p&gt;

&lt;p&gt;We had some tasks that, if they failed to execute correctly, were &lt;em&gt;supposed&lt;/em&gt; to raise exceptions, log themselves, and re-queue, but they were not.&lt;/p&gt;

&lt;p&gt;The class in which I was working managed in large part API calls to external services, services that our team has no control over. Sometimes the services work great, sometimes they don’t. The tests for this class made heavy use of mocks, stubs, and the &lt;a href=&quot;https://github.com/vcr/vcr&quot;&gt;VCR gem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This post was originally going to be about error handling, but then I realized I was getting a bit crossed up just by the mocks and stubs, so I took a quick detour into the topic, in order to build out a mental model of what was going on.&lt;/p&gt;

&lt;p&gt;As I often do, I spun up a bare-bones implementation of all of the required pieces, to see how everything was playing together. &lt;a href=&quot;https://semaphoreci.com/community/tutorials/mocking-in-ruby-with-minitest&quot;&gt;One guide&lt;/a&gt; I found was excellent, but the sample app was a bit over-kill. I didn’t want a whole new rails app - I just wanted a class and test file.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;note: This isn’t a tutorial, per se, but it’s just two files and you can easily copy-paste the code into an editor and run the tests. I’ll link to specific commits in a github repo throughout. Clone it down, check out the commit, poke around.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This project took me through:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;stubbing&lt;/li&gt;
  &lt;li&gt;mocking&lt;/li&gt;
  &lt;li&gt;raising exceptions&lt;/li&gt;
  &lt;li&gt;rescuing exceptions&lt;/li&gt;
  &lt;li&gt;testing all of the above
&lt;!--more--&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;what-are-mocks-and-stubs&quot;&gt;What are mocks and stubs?&lt;/h1&gt;

&lt;p&gt;I’ll admit - the “standard definition” of mocks and stubs didn’t mean much to me. Quite a few definitions I found referenced “&lt;a href=&quot;https://martinfowler.com/articles/mocksArentStubs.html&quot;&gt;the Fowler article&lt;/a&gt;” which, while interesting, doesn’t quite move me forward on testing Rails app &lt;em&gt;today&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;From &lt;a href=&quot;https://stackoverflow.com/a/5164709/3210178&quot;&gt;StackOverflow&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;mocks are objects that have a similar interface as something else&lt;/li&gt;
    &lt;li&gt;stubs are fake methods and return a specific answer&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, of course, I needed to see them function ‘in the wild’.&lt;/p&gt;

&lt;h1 id=&quot;eliminate-dependencies-on-other-classes-in-testing&quot;&gt;Eliminate dependencies on other classes in testing&lt;/h1&gt;

&lt;p&gt;I decided to make up this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;service&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;connection&lt;/code&gt; class.&lt;/p&gt;

&lt;p&gt;Imagine I want to connect to a few different third-party services. I’ll have a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;connection&lt;/code&gt; class into which I can pass a third-party service “object”, and it should “connect”.&lt;/p&gt;

&lt;p&gt;I will assume I can call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;third_party_service.status&lt;/code&gt; and get back &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;200&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;404&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;504&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;I will also assume that sometimes &lt;em&gt;my own service&lt;/em&gt; will not function correctly, and so &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;my_service.status&lt;/code&gt; can also be any particular status code, like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;200&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;404&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;504&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;I’d like to be able to test that I can raise specific errors if either &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;connection.status&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;third_party_service.status&lt;/code&gt; is not &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2xx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here’s my sample &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Connection&lt;/code&gt; class, where I’ve hard-coded the 200 status:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Connection&lt;/span&gt;

  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:status_code&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@status_code&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;get_service_status&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;get_service_status&lt;/span&gt;
    &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;connect_to_external_service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And here’s the test that shows all is groovy:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ConnectionTest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Minitest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Test&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_initializes_with_response_code&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;assert_equal&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now, lets say I’ve got this third party service. Since I’m testing this all locally, and I want to square away mocking and stubbing anyway, I’m getting real fancy and I’m putting this in the same file as my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Connection&lt;/code&gt; class:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Connection&lt;/span&gt;

  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:status_code&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@status_code&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;get_service_status&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;get_service_status&lt;/span&gt;
    &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;


  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;connect_to_external_service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# this is my third-party class that `Connection` might have dependencies upon&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Service&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:status_code&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@status_code&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;get_service_status&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# status_code would be 200, 504, 404, etc&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;get_service_status&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# do complicated stuff here to get status code&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# return a status code&lt;/span&gt;
    &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Inside my test, when I call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Connection.new.connect_to_external_service()&lt;/code&gt;, I need to pass in a service object, like so:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;srvc = Service.new
conn = Connection.new

conn.connect_to_external_service(srvc)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And I’m off to the races. This is where I want to start raising exceptions if either class returns errors, and where stubbing and mocking comes to be very valuable.&lt;/p&gt;

&lt;p&gt;So, this test would pass:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ConnectionTest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Minitest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Test&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_connection_default_status_code_is_200&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;assert_equal&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_external_service_default_status_code_is_200&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;assert_equal&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;connect_to_external_service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But I want to make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;srvc.status_code&lt;/code&gt; be something besides &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;200&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Lets figure out how to make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;srvc.status_code&lt;/code&gt; be 404, and maybe in the process remove the dependency upon the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service&lt;/code&gt; class all together.&lt;/p&gt;

&lt;h1 id=&quot;stubbing-the-service-object-to-force-errors&quot;&gt;Stubbing the service object to force errors&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/josh-works/exception_practice/tree/dd54c0f14e3b8c5c8dff9bd1666fea8686ed718c&quot;&gt;Current github commit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Right now, I want to run a test like this:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_raises_error_when_service_returns_4xx_no_mocks&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;404&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;assert_raises&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ServiceNotFound&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;connect_to_external_service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This won’t work because I don’t have an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_writer&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;attr_accessor&lt;/code&gt; for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service&lt;/code&gt; instance variable of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;status_code&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is the error I get when I run the test:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;1) Error:
ConnectionTest#test_raises_error_when_service_returns_4xx_no_mocks:
NoMethodError: undefined method `status_code=&apos; for #&amp;lt;Service:0x00007f81ce3c34d8 @status_code=200&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And this makes sense, right? &lt;em&gt;I cannot assume ownership of the third party service&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Here’s how I can stub out the method as I want it, using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mocha&lt;/code&gt;’s tooling for stubbing:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem install mocha&lt;/code&gt;, and include the following front-matter in the test file:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;./lib/connection&apos;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;minitest/autorun&apos;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;mocha/minitest&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ConnectionTest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Minitest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Test&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_raise_error_when_service_returns_4xx_using_stubs&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;serv&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# instantiating a new Service object. if I call&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# serv.status_code, it would return 200&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;Service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;any_instance&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;stubs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:status_code&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;returns&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;404&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# override the method to always return 404&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;assert_raises&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ServiceNotFound&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;connect_to_external_service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;serv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The magic is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service.any_instance.stubs(:status_code).returns(404)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stubbing modifies an existing object to coerce it into giving a certain output.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is cool, but nothing revelatory to me. I’ve been working with stubs for a while. What finally clicked for me was the difference between &lt;em&gt;mocks&lt;/em&gt; and stubs.&lt;/p&gt;

&lt;p&gt;The above test still requires access to a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service&lt;/code&gt; class. If Service doesn’t exist, or requires any setup that I didn’t pass it, I’m out of luck and will need to do &lt;em&gt;even more&lt;/em&gt; test setup.&lt;/p&gt;

&lt;p&gt;Enter mocks.&lt;/p&gt;

&lt;h1 id=&quot;mocking-the-service-object&quot;&gt;Mocking the service object&lt;/h1&gt;

&lt;p&gt;I want to remove &lt;em&gt;all&lt;/em&gt; dependencies on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service&lt;/code&gt;. I want to create a service object in my test, assign it variables, and use them in my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Connection&lt;/code&gt; class, all without &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Connection&lt;/code&gt; knowing anything about &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service&lt;/code&gt;, or indeed, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service&lt;/code&gt; knowing anything about itself.&lt;/p&gt;

&lt;p&gt;We’ve got &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Connection&lt;/code&gt; under test here, remember. Not &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Here’s the commit for the following code: &lt;a href=&quot;https://github.com/josh-works/exception_practice/tree/6b7014cb0c2bdfefe5a7b0eae633e2f2499d4ffb&quot;&gt;6b7014c&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ll make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;srvc&lt;/code&gt; a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stub&lt;/code&gt;, which I can now make it do &lt;em&gt;anything I want&lt;/em&gt;:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_rais_error_when_service_returns_4xx_using_mocks&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;stub&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;srvc is now a stub.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# srvc.class == Mocha::Mock&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;stubs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:status_code&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;returns&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;404&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;assert_raises&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ServiceNotFound&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;connect_to_external_service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;so I no longer have a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service&lt;/code&gt; object. If I call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;srvc.class&lt;/code&gt; on that stubbed object, it’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Mocha::Mock&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I then assign it a method of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.status_code&lt;/code&gt;, and tell it to return &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;404&lt;/code&gt;. Boom. Done.&lt;/p&gt;

&lt;p&gt;So, I’m no longer dependent upon the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service&lt;/code&gt; model for any of my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Connection&lt;/code&gt; testing. I’d say thats a win.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/josh-works/exception_practice/blob/98850fbf764c974724fea0f280379cc07918eba9/test/connection_test.rb&quot;&gt;Here’s the commit for making full use of mocks&lt;/a&gt;&lt;/p&gt;

&lt;h4 id=&quot;youll-never-not-necessarily-see-the-word-mock-in-your-code-even-when-using-mocks&quot;&gt;You’ll &lt;strike&gt;never&lt;/strike&gt; not necessarily see the word ‘mock’ in your code, even when using mocks.&lt;/h4&gt;

&lt;p&gt;I’m not the sharpest tool in the shed, so I do a lot of pattern matching. Articles about stubbing always had the word ‘stub’ being scattered about the code. That made it easy to see when a stub was being used.&lt;/p&gt;

&lt;p&gt;Mocks, though, don’t necessarily get called in the code. Traditionally, you could do &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;obj = stub(&apos;object&apos;)&lt;/code&gt;, and get your stubbed object that way. Now (I think this is more recent) you can make it a bit more explicit and call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;obj = mock(&apos;object&apos;)&lt;/code&gt;, and you’ll be on your way.&lt;/p&gt;

&lt;p&gt;Either way, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mock()&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stub()&lt;/code&gt; are interchangeable:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;mocked_object&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;mocked_object&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;stubbed_object&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;stub&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;stubbed_object&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;gives:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; mocked_object
=&amp;gt; #&amp;lt;Mock:mocked_object&amp;gt;
&amp;gt; stubbed_object
=&amp;gt; #&amp;lt;Mock:stubbed_object&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, if you see &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;foo = mock()&lt;/code&gt;, it’s a mocked object, but if you see &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;foo = stub()&lt;/code&gt;, it’s &lt;em&gt;also&lt;/em&gt; a mocked object.&lt;/p&gt;

&lt;h1 id=&quot;exceptions&quot;&gt;Exceptions&lt;/h1&gt;

&lt;p&gt;We’ve covered mocking and stubbing, and are ready to dig into exception raising and handling.&lt;/p&gt;

&lt;p&gt;Lets say my third party service goes down (404) or times out (504). I’d like to raise these descriptive errors, and do something with it.&lt;/p&gt;

&lt;p&gt;This is the test I could create:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_raise_service_timeout_if_service_returns_504&lt;/span&gt;
  &lt;span class=&quot;vi&quot;&gt;@srv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;stubs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:status_code&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;returns&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;504&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;assert_raises&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ServiceTimeOut&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;connect_to_external_service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;vi&quot;&gt;@srv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And I can update my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Connection&lt;/code&gt; class:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;connect_to_external_service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ServiceNotFound&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;404&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ServiceTimeOut&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;504&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# do other stuff&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This won’t quite pass - for reasons I’m still exploring, we cannot raise a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ServiceTimeOut&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ServiceNotFound&lt;/code&gt; error unless these classes are included in the class:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;connect_to_external_service&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ServiceNotFound&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;404&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ServiceTimeOut&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;504&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# do other stuff&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;srvc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;status_code&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ServiceNotFound&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;StandardError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ServiceTimeOut&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;StandardError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And these tests pass.&lt;/p&gt;

&lt;p&gt;Why do we need &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ServiceNotFound&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ServiceTimeOut&lt;/code&gt; to inherit from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;StandardError&lt;/code&gt;, &lt;em&gt;and&lt;/em&gt; be included in the class?&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ServiceNotFound.ancestors
=&amp;gt; [Connection::ServiceNotFound,
 StandardError,
 Exception,
 Object,
 Kernel,
 BasicObject]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;StandardError.ancestors
=&amp;gt; [StandardError,
 Exception,
 Object,
 Kernel,
 BasicObject]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;raise&lt;/code&gt; is a Kernal method, &lt;a href=&quot;http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-raise&quot;&gt;it seems&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’m going to leave this here, for now. The whole problem that led to this blog post I am now fully ready to dig into - I wanted to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rescue&lt;/code&gt; some raised exceptions, and when I did that, the standard &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_raises&lt;/code&gt; testing stopped working, because… it seemed the raised error was caught and “squelched” by the rescue, and never bubbled back up to the test.&lt;/p&gt;

&lt;p&gt;I’ll write more on that soon.&lt;/p&gt;

&lt;h3 id=&quot;misc-resources&quot;&gt;Misc Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.ibm.com/developerworks/library/wa-mockrails/&quot;&gt;Mocking and stubbing in Ruby on Rails&lt;/a&gt;(this article is from 2007 and is the 2nd ranked result for googling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mocks stubs rails&lt;/code&gt;!!!)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.justinweiss.com/articles/testing-network-services-in-ruby/&quot;&gt;Testing Network Services in Ruby Is Easier Than You Think&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://semaphoreci.com/community/tutorials/mocking-in-ruby-with-minitest&quot;&gt;Mocking in Ruby with Minitest&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Recommended Reading</title>
   <link href="https://josh.works/recommended-reading-original-list"/>
   <updated>2018-05-17T13:00:00+00:00</updated>
   <id>https://josh.works/recommended_reading_original_list</id>
   <content type="html">&lt;p&gt;I like to read, and I often recommend books to others. I used to have a very different list of recommended books, but they come and go with time. This list is sorta ‘older’, circa 2021. &lt;sup id=&quot;fnref:books-change&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:books-change&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; A newer/different list is available &lt;a href=&quot;/recommended-reading&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are a collection of books that come up in conversation more often than others.&lt;/p&gt;

&lt;p&gt;I mention some books “pair well” with other books, just as certain wines pair well with a certain foods. The ideas contained within certain books may compliment (or contrast) the ideas listed in the “pairs with” book. I don’t do affiliate links.&lt;/p&gt;

&lt;h2 id=&quot;politics&quot;&gt;Politics&lt;/h2&gt;

&lt;p&gt;I’m a fan of the idea of shrinking the political sphere. Politics is where everyone has a rightful sense of ownership of the issue (we all pay taxes, after all) and where the outcomes can be determined &lt;em&gt;by certain people being willing to yell&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It’s embarrassing to organize ourselves entirely with/around coercion, but for now, that’s what it is. I look forward to when our dominant political institutions go the way of the medieval church.&lt;/p&gt;

&lt;p&gt;A theme through the next few book recommendations is &lt;a href=&quot;https://www.fs.blog/2018/02/unintended-consequences/&quot;&gt;unintended consequences&lt;/a&gt; and &lt;a href=&quot;https://www.fs.blog/2016/04/second-level-thinking/&quot;&gt;second order effects&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;the-problem-of-political-authority-an-examination-of-the-right-to-coerce-and-the-duty-to-obey&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This book (its technically a textbook written by a professor from Colorado University - Boulder) argues that “political” authority cannot be arrived at from first principles, and building institutions upon a foundation of one group legally exercising coercion against another might be legal (in the same way that slavery used to be “legal”) but it’s not moral.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Problem of Political Authority&lt;/em&gt; is the best book I read since at least 2016.&lt;/p&gt;

&lt;h3 id=&quot;the-origins-of-proslavery-christianity-white-and-black-evangelicals-in-colonial-and-antebellum-virginia&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve hung out with me, and heard me was poetic about any modern phenomena visible in “the church” today, you may hear me talk about “slaveholder religion”. This book is exactly as advertised. It’ll be troubling to some of you, unsurprising to others. As long as churches cling unselfconsciously to slaveholder religion, they will continue to perpetuate cycles of injustice and oppression in the lives of their members, and the communities inside of which their members operate.&lt;/p&gt;

&lt;p&gt;When some religious authority in the US makes a pronouncement of how laws should be written, in order to sustain a moral community, I will always think of this book. There was a time when many christian thinkers expended great energy to justify the existence of slavery. So, when {topic of the day} mixed with {“political” solution to said problem} involves steamrolling over some marginalized group… I’ll just think back to the sections in this book outlining the theological justifications religious leaders used for slavery.&lt;/p&gt;

&lt;p&gt;From an &lt;a href=&quot;https://www.amazon.com/gp/customer-reviews/R25XTA19VPXJA/ref=cm_cr_dp_d_rvw_ttl?ie=UTF8&amp;amp;ASIN=0807858773&quot;&gt;Amazon review&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;So here’s a book whose very title might alienate… most people. If you are not a Christian, why take the time… If you are…you don’t want to hear about it. I am still bothered by the term “Proslavery Christianity.” As a Christian and a Baptist and an American Southerner by background, it was difficult to not take some of the information presented in this book personally. I didn’t want it to be true. How can real Christians be “Proslavery?” Our American upbringing allows us to view Slavery as something separate and distinct from Religion. And our oversimplified understanding of history allows us to blame the sins of the past on long dead bad people not at all like us.&lt;/p&gt;

  &lt;p&gt;But what if the “bad” people were like us? What if they even thought they were right? What if they were… Christians.&lt;/p&gt;

  &lt;p&gt;Well, I don’t want to spoil the story, but it happened. People, Christians included, can mix right and wrong together for so long that we end up simultaneously doing both and call them both a just cause. And we still do this. We go along with others definition of evil and good in the world. And we still allow economic, political and cultural power holders to narrow our faith to non status quo threatening endeavors.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;seeing-like-a-state-how-certain-schemes-to-improve-the-human-condition-have-failed&quot;&gt;Seeing Like a State: How Certain Schemes to Improve the Human Condition Have Failed&lt;/h3&gt;

&lt;p&gt;[Goodreads]](https://www.goodreads.com/book/show/20186.Seeing_Like_a_State)&lt;/p&gt;

&lt;p&gt;The craft of statehood is hard, and the state has been remarkably consistent at sustaining itself, despite myriad harms heaped upon its citizens.
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;I’m quoting at length from &lt;a href=&quot;http://slatestarcodex.com/2017/03/16/book-review-seeing-like-a-state/&quot;&gt;Slate Star Codex’s excellent review of the book&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[The author] starts with the story of “scientific forestry” in 18th century Prussia. Enlightenment rationalists noticed that peasants were just cutting down whatever trees happened to grow in the forests, like a chump. They came up with a better idea: clear all the forests and replace them by planting identical copies of Norway spruce (the highest-lumber-yield-per-unit-time tree) in an evenly-spaced rectangular grid. Then you could just walk in with an axe one day and chop down like a zillion trees an hour and have more timber than you could possibly ever want.&lt;/p&gt;

  &lt;p&gt;This went poorly. The impoverished ecosystem couldn’t support the game animals and medicinal herbs that sustained the surrounding peasant villages, and they suffered an economic collapse. The endless rows of identical trees were a perfect breeding ground for plant diseases and forest fires. And the complex ecological processes that sustained the soil stopped working, so after a generation the Norway spruces grew stunted and malnourished. Yet for some reason, everyone involved got promoted, and “scientific forestry” spread across Europe and the world.&lt;/p&gt;

  &lt;p&gt;And this pattern repeats with suspicious regularity across history, not just in biological systems but also in social ones.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This book is exceptional.&lt;/p&gt;

&lt;h3 id=&quot;the-non-violent-atonement&quot;&gt;The Non-Violent Atonement&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/en/book/show/9945&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I could speak at length about this, just know the title, read the reviews. IYKYK.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Many Christians have begun to question the tradition view of substitutionary atonement that is a the heart of traditional doctrine. Its message of an angry God whose wrath has to be satisfied by a sacrifice of blood, is becoming increasingly difficult to accept. But to question it smacks, almost, of heresy.&lt;/p&gt;

  &lt;p&gt;Weaver explains that in fact this is a relatively recent concept, probably dating from Anselm in about 1000 CE.&lt;/p&gt;

  &lt;p&gt;He explains that it was an idea unknown to those in New Testament times and is in effect a modern idea.&lt;/p&gt;

  &lt;p&gt;He opening premise is that it is unacceptable to build a faith centred on the frightening levels of violence that accompany the traditional view.&lt;/p&gt;

  &lt;p&gt;He looks at other ideas - is the death of Jesus just to be seen as a lesson for us in sacrificial love. He also takes us back to the meaning of Christus Victor - the defeating of the powers of evil. So the atonement is seen less as a business transaction involving a payment for the sins of the world, but a sacrificial act which liberated humanity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;against-the-grain-a-deep-history-of-the-earliest-states&quot;&gt;Against the Grain: A Deep History of the Earliest States&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/34324534-against-the-grain?from_search=true&amp;amp;from_srp=true&amp;amp;qid=Q8h37t624W&amp;amp;rank=1&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read it. He talks about state formation and dissolution, in the time of early Mesopotamian societies. Given how states then flourished and reproduced endlessly, it’s useful to learn how to see the world through the eyes of a state.&lt;/p&gt;

&lt;p&gt;He argues that just as people domesticated animals, so too did states domesticate people.&lt;/p&gt;

&lt;p&gt;He argues (compellingly) it isn’t &lt;em&gt;that great&lt;/em&gt; to be domesticated, nor is it &lt;em&gt;that bad&lt;/em&gt; when states dissolve.&lt;/p&gt;

&lt;h3 id=&quot;the-slaughter-of-cities-urban-renewal-as-ethnic-cleansing&quot;&gt;The Slaughter of Cities: Urban Renewal as Ethnic Cleansing&lt;/h3&gt;

&lt;p&gt;[FidelityPress (this book wasn’t available on Amazon!!!)]](https://www.fidelitypress.org/slaughter-of-cities)&lt;/p&gt;

&lt;p&gt;Lets look at the key phrases. From wikipedia:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Ethnic_cleansing&quot;&gt;Ethnic Cleansing&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Ethnic cleansing is the systematic forced removal of ethnic, racial, and religious groups from a given area, with the intent of making a region ethnically homogeneous.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Urban_renewal&quot;&gt;Urban Renewal&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Urban renewal is a program of land redevelopment often used to address urban decay in cities. Urban renewal is the clearing out of blighted areas in inner cities to clear out slums and create opportunities for higher class housing, businesses, and more. A primary purpose of urban renewal is to restore economic viability to a given area by attracting external private and public investment and by encouraging business start-ups and survival.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ok, ok, so what does it actually look like?&lt;/p&gt;

&lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned=&quot;&quot; data-instgrm-permalink=&quot;https://www.instagram.com/p/CZuUXoMujRj/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; data-instgrm-version=&quot;14&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:16px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/CZuUXoMujRj/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&quot; target=&quot;_blank&quot;&gt; &lt;div style=&quot; display: flex; flex-direction: row; align-items: center;&quot;&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 19% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display:block; height:50px; margin:0 auto 12px; width:50px;&quot;&gt;&lt;svg width=&quot;50px&quot; height=&quot;50px&quot; viewBox=&quot;0 0 60 60&quot; version=&quot;1.1&quot; xmlns=&quot;https://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;https://www.w3.org/1999/xlink&quot;&gt;&lt;g stroke=&quot;none&quot; stroke-width=&quot;1&quot; fill=&quot;none&quot; fill-rule=&quot;evenodd&quot;&gt;&lt;g transform=&quot;translate(-511.000000, -20.000000)&quot; fill=&quot;#000000&quot;&gt;&lt;g&gt;&lt;path d=&quot;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&quot;padding-top: 8px;&quot;&gt; &lt;div style=&quot; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&quot;&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 12.5% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&quot;&gt;&lt;div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 8px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: auto;&quot;&gt; &lt;div style=&quot; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;&lt;a href=&quot;https://www.instagram.com/p/CZuUXoMujRj/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;&quot; target=&quot;_blank&quot;&gt;A post shared by Segregation by Design (@segregation_by_design)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//www.instagram.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;evicted-poverty-and-profit-in-the-american-city&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25852784-evicted&quot;&gt;Evicted: Poverty and Profit in the American City&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;This is a brutal read. It’s not &lt;em&gt;technically&lt;/em&gt; illegal to be poor in the USA, but from the perspective of many, it may as well be.&lt;/p&gt;

&lt;p&gt;From &lt;a href=&quot;https://www.goodreads.com/review/show/1596100376&quot;&gt;GoodReads&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I didn’t realize until I read the afterward that the author of this book put himself right into the middle of the people he portrays lives. He gave them rides to look for houses, he even loaned them small amounts of money at times. He admits that he misses living in the trailer park among them.&lt;/p&gt;

  &lt;p&gt;This book. I hope more people get it and read it. I’ve been on a “smart book” kick lately and I’ve starred them all pretty highly but this one is just amazing. Desmond knocks it out of the ballpark. You can tell he puts his whole heart into telling these stories.&lt;/p&gt;

  &lt;p&gt;Now the stories..they are real people: You have to keep reminding yourself of that as you read this book because no one is perfect, they all mess up and the writing is so good that you feel like you are just reading a really good work of fiction.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The whole review is worth reading.&lt;/p&gt;

&lt;h3 id=&quot;the-color-of-law-a-forgotten-history-of-how-our-government-segregated-america&quot;&gt;The Color of Law: A Forgotten History of How Our Government Segregated America&lt;/h3&gt;

&lt;p&gt;[Goodreads]](https://www.goodreads.com/book/show/32191706-the-color-of-law)&lt;/p&gt;

&lt;p&gt;The modern US implementation of zoning is a by-product of the Supreme Court making &lt;a href=&quot;https://en.wikipedia.org/wiki/Redlining&quot;&gt;redlining&lt;/a&gt; illegal. Since explicit racism was no longer legal, politically powerful racists implemented laws that were not &lt;em&gt;explicitly&lt;/em&gt; racist, but everyone understood it to be laws to keep black (and and poor) people out of their neighborhoods, accomplishing the same goals.&lt;/p&gt;

&lt;p&gt;I’ll state that again - your neighborhoods’ HOA, your single-family-home neighborhood, your mortgage interest tax-deduction - all this was put in place by racists, to further their vision of a segregated society.&lt;/p&gt;

&lt;p&gt;All of this was put in place long ago. The people living in these neighborhoods mostly ended up there by accident.&lt;/p&gt;

&lt;p&gt;Of course, these policies are harmful to minorities and poor people, &lt;em&gt;but they are also harmful to everyone else, including those who ostensibly benefit from the policies&lt;/em&gt;. The US is collectively shooting itself in the foot, every day, by allowing these policies to stand.&lt;/p&gt;

&lt;p&gt;What are the effects of this horrible regime?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Land value is 1/10th of what it could be&lt;/li&gt;
  &lt;li&gt;housing and commercial rental space is 5x what it should be&lt;/li&gt;
  &lt;li&gt;we all lose so much of our time to dealing with broken, congested mobility networks&lt;/li&gt;
  &lt;li&gt;we have to travel so much farther than we otherwise would for daily necessities&lt;/li&gt;
  &lt;li&gt;a large (and growing) fraction of our income goes to dealing with cars (one car, two car, gas, maintenance, traffic traffic traffic)&lt;/li&gt;
  &lt;li&gt;our social justice problems are almost exclusively a downstream effect of these racist, exclusionary policies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From &lt;a href=&quot;https://www.goodreads.com/review/show/1994904156?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;GoodReads&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[The Color of Law is the history] of the development of &lt;a href=&quot;https://en.wikipedia.org/wiki/De_jure&quot;&gt;de jure&lt;/a&gt; segregation in the United States - that is, the deliberate result of federal laws and local policies.&lt;/p&gt;

  &lt;p&gt;[The author] demonstrates convincingly that the problem is entrenched within multiple organizations and legal standards.&lt;/p&gt;

  &lt;p&gt;For example, the Federal Housing Administration, part of the New Deal set of domestic programs, &lt;em&gt;required segregation in order to qualify for low-interest financing&lt;/em&gt;. (emphasis added)&lt;/p&gt;

  &lt;p&gt;The government-sponsored HOLC required private real-estate agents to appraise neighborhoods and lower pricing values based on the racial composition of its inhabitants.&lt;/p&gt;

  &lt;p&gt;This of course extends beyond the federal level. State governments, city councils, neighborhoods’ associations, cooperation with non-profits or NGOs that promoted segregation, banks refusing to provide funding to black applicants, landlords charging higher fees, infrastructure projects demolishing black neighborhoods without compensation, black residents being denied access to mortgages (then forced to pay on installment plans where one missed payment meant eviction), tying public education to real estate taxes so poorer neighborhoods had worse-funded schools, and so on and so on.&lt;/p&gt;

  &lt;p&gt;The cumulative effects of discrimination over the first half of the 20th century are damning, and they have not at all been rectified.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;money-bank-credit-and-economic-cycles&quot;&gt;Money, Bank Credit, and Economic Cycles&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/54388.Money_Bank_Credit_and_Economic_Cycles&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This book is a dense read, and over 1000 pages. You could read the first 10% of the book, and be more educated than 99% of pundits blabbering away on TV.&lt;/p&gt;

&lt;p&gt;The author lays out a few bold claims, and backs them up:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;There was a time when the treatment of bank &lt;em&gt;deposits&lt;/em&gt; and bank &lt;em&gt;investments&lt;/em&gt; were very different.&lt;/li&gt;
  &lt;li&gt;A bank making use of its customers deposits, for its own interests, was once considered simple fraud, illegal, and a banker who engaged in such fraud and was unable to make its customers whole was beheaded. (Today we call this “fractional reserve banking”)&lt;/li&gt;
  &lt;li&gt;Fractional-reserve banking is a legal fiction, and is actually fraud.&lt;/li&gt;
  &lt;li&gt;Economic cycles (“booms” followed by “busts”, or “corrections”) are assumed to be the normal state of affairs right now, but they need not exist.&lt;/li&gt;
  &lt;li&gt;Most of the money churning around the global economy doesn’t &lt;em&gt;really&lt;/em&gt; exist, and once a very small people lose confidence in it, much of it will evaporate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s so good I’ve read it twice; I wish I could recommend a smaller book that gave adequate treatment to this topic, but I have not found it yet. Just read the first 10% of the book and call it a day.&lt;/p&gt;

&lt;p&gt;If the topic piques your attention, but you’re not down for 1000 dense pages, &lt;a href=&quot;https://www.goodreads.com/review/show/2028288882?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;this review on GoodReads&lt;/a&gt; is a comprehensive summary of the book.&lt;/p&gt;

&lt;h2 id=&quot;buildings-and-urbanism&quot;&gt;Buildings and Urbanism&lt;/h2&gt;

&lt;p&gt;To me, traditional architecture is irrelevant. Architects build buildings for other architects, not for people.&lt;/p&gt;

&lt;p&gt;What &lt;em&gt;is&lt;/em&gt; relevant is the buildings and environment in which we all live. We (humans) shape the environment in which we live, and we are shaped by the environment in which we live.&lt;/p&gt;

&lt;p&gt;It stands to reason that an environment more conducive to use, at a lower price point, that encourages human flourishing is superior to one that is less conducive to use, costs more, and squelches human flourishing.&lt;/p&gt;

&lt;h3 id=&quot;order-without-design-how-markets-shape-cities&quot;&gt;Order Without Design: How Markets Shape Cities&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/39644188-order-without-design?from_search=true&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everyone involved with urban planning, city planning, or large-scale construction projects should read this book, make some modest improvements to their plans, and enjoy doubling all the good things their projects accomplish, for a fraction of the cost.&lt;/p&gt;

&lt;p&gt;This is an incredible book.&lt;/p&gt;

&lt;h3 id=&quot;how-buildings-learn&quot;&gt;How Buildings Learn&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/38310.How_Buildings_Learn&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This book has beautiful and fascinating photography throughout, often capturing buildings that have lasted for hundreds of years. Buildings, if allowed, change dramatically over time.&lt;/p&gt;

&lt;p&gt;A theme throughout the book is that we should &lt;em&gt;expect&lt;/em&gt; buildings to change, and &lt;em&gt;plan&lt;/em&gt; for them to change.&lt;/p&gt;

&lt;p&gt;I’m quoting a &lt;a href=&quot;https://www.goodreads.com/review/show/44813468?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;GoodReads reviewer&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;You will love this book if, like me, you think that modern and postmodern architecture has gone terribly, terribly wrong. (Conversely, if you worship Frank Gehry, I. M. Pei, and their ilk, you will probably be offended.) Stewart Brand argues convincingly that the buildings that survive are those that can be flexible enough to adapt to the changing needs and tastes successive generations of inhabitants. He is particularly trenchant in his criticism of the overprogrammed, over-designed, sculptural architectural buildings (he calls them “magazine architecture”) that are often obsolete before they are completed, and he points out that, Frank Lloyd Wright’s opinion notwithstanding, it is not in fact a sign of architectural success if the roof leaks!&lt;/p&gt;

  &lt;p&gt;Also be sure to check out his very original comments on “low-road” buildings, those whose designs are so throwaway that successive inhabitants can and do feel utterly free to knock down walls, cut through floors, and otherwise jerry-rig them to adapt to current needs. It’s a brilliant exploration of an often neglected but probably ubiquitous subset of buildings.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;the-death-and-life-of-great-american-cities&quot;&gt;The Death and Life of Great American Cities&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/30833.The_Death_and_Life_of_Great_American_Cities&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jane Jacobs &lt;em&gt;loves&lt;/em&gt; cities. She loves the unplanned, chaotic, messy way that cities evolve. She might well make you love the same thing.&lt;/p&gt;

&lt;p&gt;She hits hard in this book, and her words are even more relevant today than they were in the 1950s.&lt;/p&gt;

&lt;p&gt;Quoting from &lt;a href=&quot;https://www.goodreads.com/review/show/747832578?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;this excellent review on GoodReads&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Jacobs’s recipe for creating a healthy neighborhood has four ingredients:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;(1) mixed uses, so that different kinds of people are drawn to the area at different times of day for different reasons;&lt;/li&gt;
    &lt;li&gt;(2) a mixture of old and new buildings, so that there is low-rent space available for small businesses and low-income residents;&lt;/li&gt;
    &lt;li&gt;(3) small blocks, so that streets are not isolated from one another; and&lt;/li&gt;
    &lt;li&gt;(4) sufficient density of residents, to create the necessary amount of economic and social activity.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;The goal is to produce a neighborhood like her own Greenwich Village: with lots of street life, with successful residents who choose to stay long-term, with local stores and restaurants and cafes, and with a steady influx of immigrants.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This book discusses the tension between “chaos” and “order” in a way that pairs very well with &lt;em&gt;Seeing like a State&lt;/em&gt;. It pairs well with &lt;em&gt;Antifragile&lt;/em&gt;, as well, as Jacobs talks about small bets, organic growth, and the dangers of “cataclysmic money” and top-down growth and planning.&lt;/p&gt;

&lt;h3 id=&quot;a-pattern-language-towns-buildings-construction&quot;&gt;A Pattern Language: Towns, Buildings, Construction&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Pattern-Language-Buildings-Construction-Environmental/dp/0195019199&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Buildings and their properties solve problems for people, and the buildings can and should be as customized as the problems they solve. This book is a good start to learning conceptual framework for physical-space problem solving, while leading to an overall “harmonious” and “right” and “beautiful” and “coherent” finished product, however you define those terms.&lt;/p&gt;

&lt;h2 id=&quot;parenting&quot;&gt;Parenting&lt;/h2&gt;

&lt;strike&gt;I&apos;m not a parent. I&apos;m sure once I have kids I&apos;ll have a different set of books to recommend.&lt;/strike&gt;

&lt;p&gt;I am now a parent. I still recommend these books, and some extras.&lt;/p&gt;

&lt;h3 id=&quot;parenting-from-the-inside-out-how-a-deeper-self-understanding-can-help-you-raise-children-who-thrive&quot;&gt;Parenting from the Inside Out: How a Deeper Self-Understanding Can Help You Raise Children Who Thrive&lt;/h3&gt;

&lt;p&gt;[on amazon]](https://www.amazon.com/Parenting-Inside-Out-Self-Understanding-Anniversary/dp/039916510X)&lt;/p&gt;

&lt;p&gt;The point of having a kid is (more or less) to raise independent adults who are friends with you. Actuarial tables agree that if you’re reading these words, you might well live into your 80s.&lt;/p&gt;

&lt;p&gt;We (millenials and beyond) are having kids later and later, unfortunately. The economy and housing and life situation is hard, so we defer kids until feeling a smidgen of stability in our lives, which is fleeting.&lt;/p&gt;

&lt;p&gt;Anyway this book is good. You’ll heal from some of your own stuff, learn some new/improved patterns, and be better equipped to care well for your own kid(s).&lt;/p&gt;

&lt;h3 id=&quot;selfish-reasons-to-have-more-kids-why-being-a-great-parent-is-less-work-and-more-fun-than-you-think&quot;&gt;Selfish Reasons to Have More Kids: Why Being a Great Parent is Less Work and More Fun Than You Think&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/10266902-selfish-reasons-to-have-more-kids&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This book gets the notable distinction of being why my partner and I finally transitioned from not wanting to have kids, to wanting to have kids in the near term. It had a profound and measurable impact on our plans and thinking. Enough said.&lt;/p&gt;

&lt;h3 id=&quot;the-art-of-roughhousing-good-old-fashioned-horseplay-and-why-every-kid-needs-it&quot;&gt;The Art of Roughhousing: Good Old-Fashioned Horseplay and Why Every Kid Needs It&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/9861067-the-art-of-roughhousing&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Physical play is deeply satisfying. I rough-housed with friends all the time when growing up. This book does make a case for the myriad benefits children, their friends, and parents can experience with roughhousing, but it’s mostly a manual for &lt;em&gt;how&lt;/em&gt; to roughhouse.&lt;/p&gt;

&lt;p&gt;It’s got a few dozen suggested (and illustrated) games that are appropriate for all ages, and all size differences.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Art of Roughhousing shows how rough-and-tumble play can nurture close connections, solve behavior problems, boost confidence, and more. Drawing inspiration from gymnastics, martial arts, ballet, traditional sports, and even animal behavior, the authors present dozens of illustrated activities for children and parents to enjoy together-everything from the “Sumo Dead Lift” to the “Rogue Dumbo.” These delightful games are fun, free, and contain many surprising health benefits for parents.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A surprisingly practical and immediately relevant read for anyone who has kids. I plan on re-reading it once I have a child of my own.&lt;/p&gt;

&lt;h3 id=&quot;how-to-raise-an-adult-break-free-of-the-overparenting-trap-and-prepare-your-kid-for-success&quot;&gt;How to Raise an Adult: Break Free of the Overparenting Trap and Prepare Your Kid for Success&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/23168823-how-to-raise-an-adult&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Self-explanatory. Worth reading.&lt;/p&gt;

&lt;h3 id=&quot;difficult-conversations-how-to-discuss-what-matters-most&quot;&gt;Difficult Conversations: How to Discuss What Matters Most&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/774088.Difficult_Conversations&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not a christian book, but &lt;em&gt;extremely&lt;/em&gt; relevant. The “value” of productive-but-difficult conversations is 100x almost any other kind of conversation.&lt;/p&gt;

&lt;p&gt;Difficult conversations are how you define relationships, work through challenges with your significant other, resolve work conflicts, and so much more.&lt;/p&gt;

&lt;p&gt;The simple act of &lt;em&gt;reading a book about difficult conversations&lt;/em&gt; changes the tone of the next hard conversation you have. Instead of wanting to run from it or avoid it, you will see it as an opportunity to apply your learning, and work for a good outcome for all parties.&lt;/p&gt;

&lt;h3 id=&quot;complex-ptsd-from-surviving-to-thriving-a-guide-and-map-for-recovering-from-childhood-trauma&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Complex-PTSD-Surviving-RECOVERING-CHILDHOOD/dp/1492871842&quot;&gt;Complex PTSD: From Surviving to Thriving: A Guide and Map for Recovering from Childhood Trauma&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Those of you out there raised in religious homes might benefit from this. Not all of you, but enough of you.&lt;/p&gt;

&lt;p&gt;There’s so much I could say about this book, I don’t have time to say it here. Surprisingly good, surprisingly accessible, surprisingly effective.&lt;/p&gt;

&lt;h2 id=&quot;money&quot;&gt;Money&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;note from a few years later:&lt;/em&gt; Meh, i’m less down than I once was with books that sorta strongly end up supporting capitalism as an american.&lt;/p&gt;

&lt;p&gt;It’s a little icky when so much of success can be tied closely to subtle interactions with banking systems ‘going well’. example reference 1: &lt;a href=&quot;https://byrnehobart.medium.com/the-30-year-mortgage-is-an-intrinsically-toxic-product-200c901746a&quot;&gt;“The 30-Year Mortgage is an Intrinsically Toxic Product” by Byrne Hobart&lt;/a&gt;, example reference 2: &lt;a href=&quot;https://escholarship.org/uc/item/7sq3f6xk&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Government Policy, Housing, and the Origins of Securitization, 1780 - 1968&lt;/code&gt; by Sarah Lehman Quinn tells the story of ‘regimes and attempted regimes of social control via housing&amp;lt;&amp;gt;financial policy`, which puts many of this century’s financial tooling developments in an interesting context&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;your-money-or-your-life-9-steps-to-transforming-your-relationship-with-money-and-achieving-financial-independence&quot;&gt;Your Money or Your Life: 9 Steps to Transforming Your Relationship with Money and Achieving Financial Independence&lt;/h3&gt;

&lt;p&gt;feels to capitalistic and ‘play along’ in 2024, but still maybe a worthwhile read.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/78428.Your_Money_or_Your_Life&quot;&gt;Goodreads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From a &lt;a href=&quot;https://www.goodreads.com/review/show/775975?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;GoodReads review&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[Your Money or Your Life] was recommended to me by a friend, who gave up her stable teaching position to run a used bookstore after reading this book.&lt;/p&gt;

  &lt;p&gt;This was my first foray into the self-help genre. The prose is laughably hokey at the most inopportune times, but the message is worth slogging through the mantras and the affirmations.&lt;/p&gt;

  &lt;p&gt;Plus, the “nine-step program” actually works, if you’re willing to commit to it. I started out, skeptical, with a step I thought I could stick to—keeping track of my spending, and became curious about the rest of my financial health from there.&lt;/p&gt;

  &lt;p&gt;By the time, a year-and-a-half later, I faced the last maudlin step (calculating how much time you have left in your life), I found it so thoroughly shocking (in my case, less than half a million hours based on average life expectancy) that I realized staying in a job that made me miserable wasn’t worth it, so I quit.&lt;/p&gt;

  &lt;p&gt;I guess, in that sense, this book delivers on its hokey promise to change your life.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;the-privatization-of-roads-and-highways&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/12720771-the-privatization-of-roads-and-highways&quot;&gt;The Privatization of Roads and Highways&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;That which we’ve grown up with, we (humans) tend to assume is not just ideal, but &lt;em&gt;morally correct&lt;/em&gt;. We’ve grown up (as a nation) with government-built roads. It’s so impossible to imagine something else that as soon as someone suggests some crazy idea, a standard retort is “but who would build the roads?” followed by “if you like anarchy, move to Somalia!”.&lt;/p&gt;

&lt;p&gt;This book addresses the first portion of that objection.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;spoiler: for most of the time that humans have been building roads, they’ve been funded and built privately. Public road building has catastrophic implications for everyone.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Regrettably, the book is poorly written, &lt;em&gt;and&lt;/em&gt; it’s just a collection of essays by the author, so the book covers much of the same territory multiple times. I have not found better treatment of this topic, so until then - this is the book I recommend.&lt;/p&gt;

&lt;h3 id=&quot;a-paradise-built-in-hell-the-extraordinary-communities-that-arise-in-disaster&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/19271055-a-paradise-built-in-hell&quot;&gt;A Paradise Built in Hell: The Extraordinary Communities That Arise in Disaster&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;We’re told that when society breaks down, we devolve into a state of anarchy and will kill each other, or be killed by each other. This happens to be a self-fulfilling prophecy. It turns out that when disaster strikes, things tend to work out pretty well.&lt;/p&gt;

&lt;p&gt;If we think bad things happen when disasters strike, bad things will happen.&lt;/p&gt;

&lt;p&gt;If we think good things will happen when disasters strike, good things will happen. (This is related to the theory in international relations known as &lt;a href=&quot;https://en.wikipedia.org/wiki/Constructivism_(international_relations)&quot;&gt;constructivism&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since your expectations will shape your reality, if you think you might ever find yourself impacted by a disaster, this  book would serve well as preparation.&lt;/p&gt;

&lt;p&gt;A &lt;a href=&quot;https://www.goodreads.com/review/show/132588792?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;GoodReads review&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In &lt;em&gt;A Paradise Built in Hell&lt;/em&gt; Solnit mounts a spirited argument that this pessimistic view of how people respond to catastrophe is fundamentally wrong. Instead, she argues, disasters are far more likely to bring out the best in people – there is a natural desire to help one another, which is actually easier to put into action, given the relaxation of social barriers that often prevails in the
wake of a disaster. You might go for years just nodding at that neighbor across the street, but after the earthquake/fire/blackout the two of you may just end up having a real conversation.&lt;/p&gt;

  &lt;p&gt;Solnit grounds her argument in five specific case studies:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;the San Francisco earthquake of 1906&lt;/li&gt;
    &lt;li&gt;the 1917 explosion of the munitions ship Mont Blanc in Halifax, Nova Scotia&lt;/li&gt;
    &lt;li&gt;Mexico City’s 1985 earthquake&lt;/li&gt;
    &lt;li&gt;the World Trade Center attacks of 2001&lt;/li&gt;
    &lt;li&gt;Hurricane Katrina and its aftermath.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;seeing-like-a-state&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/20186.Seeing_Like_a_State&quot;&gt;Seeing like a State&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I cannot do justice to this book, so I’ll quote extensively from  &lt;a href=&quot;http://slatestarcodex.com/2017/03/16/book-review-seeing-like-a-state/&quot;&gt;Slate Star Codex’s&lt;/a&gt; review. (You should really just read the review, then the book.)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Seeing Like A State&lt;/em&gt; is the book G.K. Chesterton would have written if he had gone into economic history instead of literature. Since he didn’t, James Scott had to write it a century later. The wait was worth it.&lt;/p&gt;

  &lt;p&gt;Scott starts with the story of “scientific forestry” in 18th century Prussia. Enlightenment rationalists noticed that peasants were just cutting down whatever trees happened to grow in the forests, like a chump. They came up with a better idea: clear all the forests and replace them by planting identical copies of Norway spruce (the highest-lumber-yield-per-unit-time tree) in an evenly-spaced rectangular grid. Then you could just walk in with an axe one day and chop down like a zillion trees an hour and have more timber than you could possibly ever want.&lt;/p&gt;

  &lt;p&gt;This went poorly. The impoverished ecosystem couldn’t support the game animals and medicinal herbs that sustained the surrounding peasant villages, and they suffered an economic collapse. The endless rows of identical trees were a perfect breeding ground for plant diseases and forest fires. And the complex ecological processes that sustained the soil stopped working, so after a generation the Norway spruces grew stunted and malnourished. Yet for some reason, everyone involved got promoted, and “scientific forestry” spread across Europe and the world.&lt;/p&gt;

  &lt;p&gt;And this pattern repeats with suspicious regularity across history, not just in biological systems but also in social ones.&lt;/p&gt;

  &lt;p&gt;[…]&lt;/p&gt;

  &lt;p&gt;Suppose you’re a premodern king, maybe one of the Louises who ruled France in the Middle Ages. You want to tax people to raise money for a Crusade or something. Practically everyone in your kingdom is a peasant, and all the peasants produce is grain, so you’ll tax them in grain. Shouldn’t be too hard, right? You’ll just measure how many pints of grain everyone produces, and…&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;The pint in eighteenth-century Paris was equivalent to 0.93 liters, whereas in Seine-en-Montane it was 1.99 liters and in Precy-sous-Thil, an astounding 3.33 liters. The aune, a measure of length used for cloth, varied depending on the material(the unit for silk, for instance, was smaller than that for linen) and across France there were at least seventeen different aunes.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;Okay, this is stupid. Just give everybody evenly-sized baskets, and tell them that baskets are the new unit of measurement.&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;Virtually everywhere in early modern Europe were endless micropolitics about how baskets might be adjusted through wear, bulging, tricks of weaving, moisture, the thickness of the rim, and so on. In some areas the local standards for the bushel and other units of measurement were kept in metallic form and placed in the care of a trusted official or else literally carved into the stone of a church or the town hall. Nor did it end there. How the grain was to be poured (from shoulder height, which packed it somewhat, or from waist height?), how damp it could be, whether the container could be shaken down, and finally, if and how it was to be leveled off when full were subjects of long and bitter controversy.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;Huh, this medieval king business is harder than you thought. Maybe you can just leave this problem to the feudal lords?&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;Thus far, this account of local measurement practices risks giving the impression that, although local conceptions of distance, area, volume, and so on were different from and more varied than the unitary abstract standards a state might favor, they were nevertheless aiming at objective accuracy. This impression would be false. […]&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;http://slatestarcodex.com/2017/03/16/book-review-seeing-like-a-state/&quot;&gt;Just read the review&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;a-mind-for-numbers-how-to-excel-at-math-and-science-even-if-you-flunked-algebra&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/18693655-a-mind-for-numbers&quot;&gt;A Mind for Numbers: How to Excel at Math and Science (Even If You Flunked Algebra)&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The “Right brain vs left brain” model is wrong. If you want to learn a technical topic, you can. Just like how if you wanted to cut a piece of wood, you can. If you have the right tool. A butter knife will not cut a piece of wood very well, but a buzz saw might.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A Mind for Numbers&lt;/em&gt; gives you that buzz saw. With the right tactics and motives, anyone can read anything. I read this before jumping into software development full-time, and this book delivered great value in that endeavor.&lt;/p&gt;

&lt;p&gt;From &lt;a href=&quot;https://www.goodreads.com/review/show/1080072109?book_show_action=true&amp;amp;from_review_page=1&quot;&gt;GoodReads&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The title of the book doesn’t do it justice. This is a book about how to get good at anything, not just math and science. It’s a light read because it’s full of simple advice. But the stuff it teaches is effective, and I wish it had been taught to me back in 1997 when I was starting graduate school.&lt;/p&gt;

  &lt;p&gt;If you find yourself checking your phone or screwing around on Facebook while you should be working, read this book. If you’re having trouble learning stuff you need for work at a higher rate than you’re forgetting it, read this book. Do so especially if you’re young, because the longer the time you have left to reap the benefits, the more reading this book is worth to you.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;deep-work-rules-for-focused-success-in-a-distracted-world&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25744928-deep-work&quot;&gt;Deep Work: Rules for Focused Success in a Distracted World&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Deep Work&lt;/em&gt; is profound. It was &lt;a href=&quot;/i-quit&quot;&gt;the best book I read in 2016&lt;/a&gt;, and is no small part of the reason I went to Turing and got into software development.&lt;/p&gt;

&lt;p&gt;From the author:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Deep work is the ability to focus without distraction on a cognitively demanding task. It’s a skill that allows you to quickly master complicated information and produce better results in less time. Deep work will make you better at what you do and provide the sense of true fulfillment that comes from craftsmanship. In short, deep work is like a super power in our increasingly competitive twenty-first century economy. And yet, most people have lost the ability to go deep—spending their days instead in a frantic blur of e-mail and social media, not even realizing there’s a better way.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pursuing the skill of “deep work” will have a compounding effect on the rest of your life. A little investment now makes the rest of your efforts just a little more effective, and leaves you with more room to get better at deep work, which in turn makes your efforts more effective, and on and on.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:books-change&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’ve read a few thousand books over my ~33 years on this planet. Here’s the ones that have shaped me. I created this page in 2018, and the books on that list have gone mostly out of date. &lt;a href=&quot;https://github.com/josh-works/josh-works.github.io/commits/master/_posts/2018-05-17-recommended_reading_original_list.md&quot;&gt;Here’s the git history for how this page has changed across time&lt;/a&gt;. &lt;a href=&quot;#fnref:books-change&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Pry Tips and Tricks</title>
   <link href="https://josh.works/pry-tips-and-tricks"/>
   <updated>2018-05-07T13:00:00+00:00</updated>
   <id>https://josh.works/pry_tips_tricks</id>
   <content type="html">&lt;p&gt;&lt;em&gt;the following is cross-posted from &lt;a href=&quot;http://development.wombatsecurity.com/development/2018/05/04/pry-tips-tricks/&quot;&gt;development.wombatsecurity.com&lt;/a&gt;. I wrote about some handy extra features I’ve found using Pry much of my day.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I joined the Wombat team a few months ago, and have been working on the &lt;a href=&quot;https://www.wombatsecurity.com/products/threatsim-how-it-works&quot;&gt;threatsim&lt;/a&gt; product. We had a bit of a bug backlog, and myself and others have been rapidly whipping it into shape.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.wombatsecurity.com/products/threatsim-how-it-works&quot;&gt;ThreatSim&lt;/a&gt; is a Ruby on Rails application; any developer out there who works with Rails has probably used &lt;a href=&quot;https://github.com/pry/pry&quot;&gt;Pry&lt;/a&gt; extensively in debugging their application. Pry “pauses” your application’s execution and lets you observe and manipulate state, wherever the pry happens to be.&lt;/p&gt;

&lt;p&gt;Most pry usage is pretty simple - put a pry in your code, cause that line of code to be executed, and then poke around in the session in your terminal.&lt;/p&gt;

&lt;p&gt;For me, this can feel unwieldy when I am trying to do a broad examination of the application. Pry is great at showing me the state of the variables contained within the method that the Pry was placed at, but I don’t always want to see just this code and its variables, I want to skip around the application and peek into different components.&lt;/p&gt;

&lt;h2 id=&quot;looking-at-methods&quot;&gt;Looking at methods&lt;/h2&gt;

&lt;p&gt;You can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;show-method&lt;/code&gt; to reveal pretty much any code in your application. If you use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;show-method&lt;/code&gt; with no arguments, it will show all of the code in the method that you’ve placed the pry.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;show-method&lt;/code&gt; (with no arguments, shows current class/method location, can be similar to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;whereami&lt;/code&gt; (look at prompt) (I usually append &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-l&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;show-method&lt;/code&gt;, to add line numbers&lt;/p&gt;

&lt;!--more--&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;CookiesController&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mh&quot;&gt;0x00007f9156c57670&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;show&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;method&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;l&lt;/span&gt;

&lt;span class=&quot;no&quot;&gt;From&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/full/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;rb&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;@&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;78&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Owner&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;CookiesController&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Visibility&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;private&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Number&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;lines: &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;37&lt;/span&gt;

 &lt;span class=&quot;mi&quot;&gt;78&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;load_cookie_jar&lt;/span&gt;
 &lt;span class=&quot;mi&quot;&gt;79&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;n&quot;&gt;cookies&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:tasty&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
 &lt;span class=&quot;mi&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;n&quot;&gt;count&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;count_cookies&lt;/span&gt;
 &lt;span class=&quot;mi&quot;&gt;81&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
       &lt;span class=&quot;nf&quot;&gt;.&lt;/span&gt;
       &lt;span class=&quot;n&quot;&gt;lots&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;other&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;code&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;here&lt;/span&gt;
       &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
       &lt;span class=&quot;nf&quot;&gt;.&lt;/span&gt;

&lt;span class=&quot;mi&quot;&gt;111&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;pry&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;binding&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;pry&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;112&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;113&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;no&quot;&gt;Repo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;FakeClass&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;NotActuallyAModule&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;do_something&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;114&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;See that the line about to be executed (line 113)? What if you want to see what that method is, without jumping into your code editor?&lt;/p&gt;

&lt;p&gt;If you want to see what that method is, it’s easy! Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;show-method&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;CookiesController&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mh&quot;&gt;0x00007f9156c57670&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;show&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;method&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Repo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;FakeClass&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;NotActuallyAModule&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;do_something&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;l&lt;/span&gt;

&lt;span class=&quot;no&quot;&gt;From&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;full&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;rvb&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;@&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;165&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Owner&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;#&amp;lt;Class:Repo::FakeClass::NotActuallyAModule&amp;gt;&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Visibility&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;public&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Number&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;lines: &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;22&lt;/span&gt;

&lt;span class=&quot;mi&quot;&gt;165&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;do_something&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{})&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;166&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;n&quot;&gt;cookies_type&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:cookie_type&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;167&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;n&quot;&gt;is_tasty?&lt;/span&gt;      &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:is_valid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;168&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;169&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;is_tasty?&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;170&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;n&quot;&gt;log_it&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;load_cookies&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;is_tasty&quot;&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;171&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:consumed&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;172&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:pairs_with&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;173&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;174&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;     
       &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
       &lt;span class=&quot;nf&quot;&gt;.&lt;/span&gt;
       &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;185&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;mi&quot;&gt;186&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;(I’m still adding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-l&lt;/code&gt; to force line-numbers to be printed out.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://github.com/pry/pry#code-browsing&quot;&gt;more about &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;show-source&lt;/code&gt; from Pry&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;where-was-i&quot;&gt;Where was I?&lt;/h2&gt;

&lt;p&gt;Sometimes, I go so far down a rabbit hole of digging around in Pry, I forget where the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;binding.pry&lt;/code&gt; actually is, and what I was trying to do in the first place. (Or I have a few conditional &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;binding.pry&lt;/code&gt; statements, and I don’t recall which one got hit)&lt;/p&gt;

&lt;p&gt;Enter &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;whereami&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This command simply prints out the code surrounding the current &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;binding.pry&lt;/code&gt;. It’s run by default as soon as you hit the pry, which is how you can quickly get your bearings.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://github.com/pry/pry/wiki/Runtime-invocation#Whereami&quot;&gt;from the pry docs: whereami&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;view-stack-traces&quot;&gt;View stack traces&lt;/h2&gt;

&lt;p&gt;What was that stack trace from the last exception you saw?&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wtf&lt;/code&gt; puts said stack trace:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;CookiesController:0x00007f9156c57670&amp;gt;:0&amp;gt; not_a_variable
NameError: undefined &lt;span class=&quot;nb&quot;&gt;local &lt;/span&gt;variable or method &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;not_a_variable&lt;span class=&quot;s1&quot;&gt;&apos; for #&amp;lt;CookiesController:0x00007f9156c57670&amp;gt;
from (pry):16:in `load_cookie_jar&apos;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and then, anytime later, call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wtf&lt;/code&gt; in pry:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;CookiesController:0x00007f9156c57670&amp;gt;:0&amp;gt; wtf
Exception: NameError: undefined &lt;span class=&quot;nb&quot;&gt;local &lt;/span&gt;variable or method &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;not_a_variable&lt;span class=&quot;s1&quot;&gt;&apos; for #&amp;lt;CookiesController:0x00007f9156c57670&amp;gt;
--
0: (pry):16:in `load_live_action&apos;&lt;/span&gt;
1: /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/pry-0.10.3/lib/pry/pry_instance.rb:355:in &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;
2: /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/pry-0.10.3/lib/pry/pry_instance.rb:355:in `evaluate_ruby&apos;&lt;/span&gt;
3: /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/pry-0.10.3/lib/pry/pry_instance.rb:323:in &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;handle_line&lt;span class=&quot;s1&quot;&gt;&apos;
4: /Users/joshthompson/.rvm/gems/ruby-2.3.7/gems/pry-0.10.3/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval&apos;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://github.com/pry/pry/wiki/Exceptions#wtf&quot;&gt;more about &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wtf&lt;/code&gt; in Pry&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;breakpoints-in-pry&quot;&gt;Breakpoints in Pry&lt;/h2&gt;

&lt;p&gt;What about when looking around the state of your application, you decide you want to examine in pry a different method?&lt;/p&gt;

&lt;p&gt;Using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;show-source &amp;lt;method_name&amp;gt;&lt;/code&gt; doesn’t let you interact with the method.&lt;/p&gt;

&lt;p&gt;Enter breakpoints. Just like with javascript in the browser, you can add/remove breakpoints to your code with Pry. You don’t have to exit the session, jump to the new method, and add a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;binding.pry&lt;/code&gt; to it.&lt;/p&gt;

&lt;p&gt;You’ll need to add &lt;a href=&quot;https://github.com/deivid-rodriguez/pry-byebug&quot;&gt;pry-byebug&lt;/a&gt; to your Gemfile.&lt;/p&gt;

&lt;p&gt;With Pry-byebug, breakpoint functionality is fairly straightforward:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;break&lt;/code&gt; shows all current breakpoints. (this list should be empty if you’re running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;break&lt;/code&gt; for the first time.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;break &amp;lt;Class#method&amp;gt;&lt;/code&gt; adds a breakpoint to the start of the given method.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;if you add a breakpoint, and call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;break&lt;/code&gt; you’ll see something like:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
  &lt;span class=&quot;c&quot;&gt;# Enabled At&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;-------------&lt;/span&gt;

  1 Yes     Threatsim::LandingPage::GuidLoader.find_guid
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Remove the first breakpoint with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;break --delete 1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;break --help&lt;/code&gt; is a fruitful summary of what breakpoint-related methods are available to you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://github.com/deivid-rodriguez/pry-byebug#breakpoints&quot;&gt;more about breakpoints in Pry&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;calling-all-callers&quot;&gt;Calling all callers&lt;/h2&gt;

&lt;p&gt;Ever wanted to see what called the code that hit your breakpoint?&lt;/p&gt;

&lt;p&gt;I sure have!&lt;/p&gt;

&lt;p&gt;As usual, Stack Overflow has &lt;a href=&quot;https://stackoverflow.com/a/21620257/3210178&quot;&gt;a most helpful answer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can just call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;caller&lt;/code&gt; in pry, to get a full list everything involved in the current stack.&lt;/p&gt;

&lt;p&gt;The author of the post points out that you immediately get a giant array of mostly irrelevant items, and suggests filtering by keyword, using a one-liner like so:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;caller.select {|line| line.include? &quot;current_repo_name&quot; }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or, alternatively:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;caller.reject { |l| l[&quot;.rvm/gems&quot;] }&lt;/code&gt;&lt;/p&gt;

&lt;h3 id=&quot;additional-reading-or-articles-that-helped-me-learn-more-about-pry&quot;&gt;Additional reading, or articles that helped me learn more about Pry:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://jonathan-jackson.net/2012/05/03/pry-session-102&quot;&gt;Pry 102: Advanced Features&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://gist.github.com/lfender6445/9919357&quot;&gt;Pry Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>MacOS: Keyboard Shortcut to Toggle Bookmarks Bar in Firefox</title>
   <link href="https://josh.works/firefox-toggle-bookmark-bar-keyboard-shortcut"/>
   <updated>2018-02-15T13:00:00+00:00</updated>
   <id>https://josh.works/toggle_bookmarks_bar_in_firefox</id>
   <content type="html">&lt;p&gt;A few weeks ago, after &lt;a href=&quot;https://www.mozilla.org/en-US/firefox/&quot;&gt;Firefox Quantum&lt;/a&gt; came out, I decided to try making Firefox my daily browser, instead of Chrome.&lt;/p&gt;

&lt;p&gt;Turns out, Firefox is great! It was a near-seamless transition, and Firefox has a much lower memory footprint, as well as features Chrome does not have, like &lt;a href=&quot;https://support.mozilla.org/en-US/kb/tracking-protection&quot;&gt;Tracking Protection&lt;/a&gt; and &lt;a href=&quot;https://blog.mozilla.org/firefox/reader-view/&quot;&gt;Reader View&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But something was bothering me to no end. I could &lt;em&gt;not&lt;/em&gt; find a keyboard shortcut to toggle the visibility of the bookmarks toolbar.&lt;/p&gt;

&lt;p&gt;I take a lot of screenshots throughout the day, and share them within my company. I don’t really want my bookmarks bar taking up space in the screenshot, but I do sometimes need it to find actual bookmarks.&lt;/p&gt;

&lt;p&gt;In Chrome, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Cmd-Shift-B&lt;/code&gt; toggles the bookmarks bar visibility. In Firefox, that combo shows your history.&lt;/p&gt;

&lt;!--more--&gt;
&lt;p&gt;The primary fix is to use the Mac &lt;em&gt;operating system&lt;/em&gt; to set an App-specific keyboard shortcut. This is bananas, and I’ve never done it before.&lt;/p&gt;

&lt;p&gt;Here’s how to do it:&lt;/p&gt;

&lt;p&gt;Navigate to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System Preferences &amp;gt; Keyboard&lt;/code&gt;. From the options on the top bar (Keyboard, Text, Shortcuts, etc) select &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Shortcuts&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In the left-hand sidebar, choose &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;App Shortcuts&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-02-15_01.jpg&quot; alt=&quot;find the app shortcut screen&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hit the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;+&lt;/code&gt; icon to add a new shortcut, and select &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Firefox.app&lt;/code&gt; from the list of applications.&lt;/p&gt;

&lt;p&gt;Enter this string exactly where in the Menu Title box:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;View-&amp;gt;Toolbars-&amp;gt;Bookmarks Toolbar&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-02-15_02.jpg&quot; alt=&quot;add the shortcut&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I used &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Cmd-Shift-Y&lt;/code&gt; as my shortcut - it took a few attempts to find something that didn’t conflict with existing OS/Firefox shortcuts.&lt;/p&gt;

&lt;p&gt;(And yes, I tried to unmap &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Cmd-Shift-B&lt;/code&gt;, to free it up for this shortcut, and could not. If you figure out how, please let me know.)&lt;/p&gt;

&lt;h2 id=&quot;the-result&quot;&gt;The result&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-02-15_03.gif&quot; alt=&quot;toggle away, friend&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;firefoxs-gotcha&quot;&gt;Firefox’s Gotcha&lt;/h2&gt;

&lt;p&gt;Sometimes the keyboard shortcut doesn’t work. It seems like Firefox “forgets” what it’s supposed to do.&lt;/p&gt;

&lt;p&gt;If that happens, I’m able to set things back as they should be by toggling the bookmarks bar manually, once, and then the shortcut works again.&lt;/p&gt;

&lt;p&gt;(This setting lives in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;View &amp;gt; Toolbars &amp;gt; Bookmarks Toolbar&lt;/code&gt;)&lt;/p&gt;

&lt;h3 id=&quot;additional-readinguseful-resources&quot;&gt;Additional Reading/Useful resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://osxdaily.com/2017/08/08/create-custom-keyboard-shortcut-mac/&quot;&gt;OSX Daily: How to Create Custom Keyboard Shortcuts in Mac OS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://support.mozilla.org/en-US/questions/865261&quot;&gt;Mozilla Support Forum: Is there a short/hotkey to show/hide bookmark toolbar?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Denver.rb meetup notes</title>
   <link href="https://josh.works/denverrb"/>
   <updated>2018-02-12T00:00:00+00:00</updated>
   <id>https://josh.works/denverrb</id>
   <content type="html">&lt;h2 id=&quot;move-slow-and-improve-things-performance-improvement-in-a-rails-app&quot;&gt;Move Slow and Improve Things: Performance Improvement in a Rails App&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://www.meetup.com/Denver-rb/events/rqjnpqyzdbqb/&quot;&gt;Denver.rb Monthly Meetup @WeWork&lt;/a&gt;, Feb 12, 2018&lt;/em&gt;&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/mMj395-cdDg&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;We talked about performance profiling!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.dropbox.com/s/j7v300oh52x0jb5/denver_rb.key?dl=0&quot;&gt;Here’s the slides, on Dropbox&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m working on going deeper on the topic of Rails performance. I’ve got a lot more on the topic brewing. If you wanna stay in the loop, drop your email below. (I can’t promise that &lt;em&gt;everything&lt;/em&gt; you’ll get from me will be Rails performance posts, though…)&lt;/p&gt;

&lt;h3 id=&quot;additional-reading&quot;&gt;Additional reading&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/MiniProfiler/rack-mini-profiler&quot;&gt;Rack Mini Profiler&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.speedshop.co/2019/01/10/three-activerecord-mistakes.html&quot;&gt;3 ActiveRecord Mistakes That Slow Down Rails Apps: Count, Where and Present&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Want to stay up to date on these projects? Enter your email below, and you&apos;ll get an approximately-monthly newsletter from me.&lt;/h4&gt;
&lt;form class=&quot;embeddable-buttondown-form&quot; action=&quot;https://buttondown.email/api/emails/embed-subscribe/josht&quot; method=&quot;post&quot; target=&quot;popupwindow&quot; onsubmit=&quot;window.open(&apos;https://buttondown.email/josht&apos;, &apos;popupwindow&apos;)&quot;&gt;
  &lt;label for=&quot;bd-email&quot;&gt;Enter your email&lt;/label&gt;
  &lt;input type=&quot;email&quot; name=&quot;email&quot; id=&quot;bd-email&quot; /&gt;
  
  &lt;input type=&quot;submit&quot; value=&quot;Subscribe&quot; /&gt;
  &lt;p&gt;&lt;i&gt;If you don&apos;t see the subscribe form above, &lt;a href=&quot;https://buttondown.email/josht&quot;&gt;click here&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;
  &lt;p&gt;&lt;i&gt;Readers have rated these messages from me as variations of &apos;interesting-enough&apos;, &apos;thought-provoking&apos;, and &apos;worthwhile&apos;. It&apos;s also easy to unsubscribe from.&lt;/i&gt;&lt;/p&gt;
&lt;/form&gt;

</content>
 </entry>
 
 <entry>
   <title>Boulder Ruby Group meetup notes</title>
   <link href="https://josh.works/boulder_ruby_group"/>
   <updated>2018-02-10T00:00:00+00:00</updated>
   <id>https://josh.works/boulder_ruby_group</id>
   <content type="html">&lt;h2 id=&quot;move-slow-and-improve-things-performance-improvement-in-a-rails-app&quot;&gt;Move Slow and Improve Things: Performance Improvement in a Rails App&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://www.meetup.com/boulder_ruby_group/events/fsvznqyzdbrb/&quot;&gt;Boulder Ruby Group Monthly Meetup @Recurly Offices&lt;/a&gt;, Feb 13, 2018&lt;/em&gt;&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/992Uyrheo24&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;a href=&quot;https://www.dropbox.com/s/pwsj4bqmzdqb9s7/boulder_rb_profiling.key?dl=0&quot;&gt;Slides are available here on Dropbox&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;git-push-git-paid&quot;&gt;Git Push, Git Paid&lt;/h2&gt;

&lt;p&gt;Here’s the “Git Push, Git Paid” t-shirt I mentioned:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/git_push_git_paid.jpg&quot; alt=&quot;git push git paid&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://thoughtbot.com/blog/git-push-git-paid&quot;&gt;Thoughtbot designed these&lt;/a&gt;, and it looks like they’re still &lt;a href=&quot;https://cottonbureau.com/products/git-push-git-paid#/1134672/tee-men-standard-tee-vintage-black-tri-blend-s&quot;&gt;available for purchase on CottonBureau&lt;/a&gt; for $28.&lt;/p&gt;

&lt;h2 id=&quot;slow-query-lookup&quot;&gt;Slow Query lookup:&lt;/h2&gt;

&lt;p&gt;check to see what your current values are for &lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_long_query_time&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;long_query_time&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;start_time&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;user_host&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;query_time&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sql_text&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lock_time&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rows_sent&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rows_examined&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;db&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;last_insert_id&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;insert_id&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;server_id&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;thread_id&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;slow_log&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;start_time&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DATE_ADD&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;current_timestamp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;INTERVAL&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DAY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;BY&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;query_time&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DESC&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;what-is-benchmarking-and-profiling&quot;&gt;What is Benchmarking and Profiling&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;Profiling and benchmarking are flip sides of the same coin, profiling helps you to narrow down to where optimization would be most useful, benchmarking allows you to easily isolate optimizations and cross-compare them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://blog.urth.org/2010/03/03/benchmarking-versus-profiling/&quot;&gt;Dave Rolsky&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;additional-reading&quot;&gt;Additional reading&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/MiniProfiler/rack-mini-profiler&quot;&gt;rack-mini-profiler docs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.speedshop.co/2019/01/10/three-activerecord-mistakes.html&quot;&gt;3 ActiveRecord Mistakes That Slow Down Rails Apps: Count, Where and Present (Nate Berkopec)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.railsspeed.com/&quot;&gt;Nate Berkopec’s &lt;em&gt;The Complete Guide to Rails Performance&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://idlewords.com/talks/website_obesity.htm&quot;&gt;The Website Obesity Crisis (Maciej Cegłowski)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll be working on this Rails performance piece for a while, so if you’d like to see what else I’m learning, pop your email in below.&lt;/p&gt;

&lt;p&gt;Full disclosure: sometimes I write about things other than Ruby on Rails.&lt;/p&gt;

&lt;h4&gt;Want to stay up to date on these projects? Enter your email below, and you&apos;ll get an approximately-monthly newsletter from me.&lt;/h4&gt;
&lt;form class=&quot;embeddable-buttondown-form&quot; action=&quot;https://buttondown.email/api/emails/embed-subscribe/josht&quot; method=&quot;post&quot; target=&quot;popupwindow&quot; onsubmit=&quot;window.open(&apos;https://buttondown.email/josht&apos;, &apos;popupwindow&apos;)&quot;&gt;
  &lt;label for=&quot;bd-email&quot;&gt;Enter your email&lt;/label&gt;
  &lt;input type=&quot;email&quot; name=&quot;email&quot; id=&quot;bd-email&quot; /&gt;
  
  &lt;input type=&quot;submit&quot; value=&quot;Subscribe&quot; /&gt;
  &lt;p&gt;&lt;i&gt;If you don&apos;t see the subscribe form above, &lt;a href=&quot;https://buttondown.email/josht&quot;&gt;click here&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;
  &lt;p&gt;&lt;i&gt;Readers have rated these messages from me as variations of &apos;interesting-enough&apos;, &apos;thought-provoking&apos;, and &apos;worthwhile&apos;. It&apos;s also easy to unsubscribe from.&lt;/i&gt;&lt;/p&gt;
&lt;/form&gt;

</content>
 </entry>
 
 <entry>
   <title>Testing Rake Tasks in Rails</title>
   <link href="https://josh.works/test-rake-tasks-in-rails"/>
   <updated>2018-02-08T13:00:00+00:00</updated>
   <id>https://josh.works/test_rake_tasks_rails</id>
   <content type="html">&lt;p&gt;I recently wrote a rake task to update some values we’ve got stored in the database. The rake task itself isn’t important in this post, but testing it is.&lt;/p&gt;

&lt;p&gt;We’ve got many untested rake tasks in the database, so when our senior dev suggested adding a test, I had to build ours from scratch.&lt;/p&gt;

&lt;p&gt;I did a bit more whack-a-moling with error messages than I’d hoped, so here’s a template of that test, along with some details that might save you some time, next time &lt;em&gt;you&lt;/em&gt; are writing tests for your rake tasks.&lt;/p&gt;

&lt;p&gt;We’re in a not-new version of Rails, and using Minitest. I’ve anonymized it. Hope it’s useful!&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# test/tasks/rake_task_file_test.rb&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;test_helper&apos;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;rake&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RakeTaskFileTaskTest&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveSupport&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;TestCase&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;describe&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;namespace:task_name&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;setup&lt;/span&gt;
      &lt;span class=&quot;vi&quot;&gt;@tt&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Fabricate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:object_with_attributes_i_need_to_change&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;no&quot;&gt;ApplicationName&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Application&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;load_tasks&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Rake&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Task&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;tasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;empty?&lt;/span&gt;
      &lt;span class=&quot;no&quot;&gt;Rake&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Task&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;namespace:task_name&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;invoke&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;should change &apos;thing I don&apos;t want&apos;&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
      &lt;span class=&quot;vi&quot;&gt;@tt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;reload&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;values&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@tt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;attribute_i_changed&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;refute_includes&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;values&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;thing I don&apos;t want&quot;&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;assert_includes&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;values&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;thing I do want&quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;!--more--&gt;

&lt;p&gt;Notes on the above:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require &apos;rake&apos;&lt;/code&gt; - I was getting a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NoMethodError: undefined method &apos;namespace&apos; for main:Object&lt;/code&gt; until adding this line. Found the answer in an unrelated-ish &lt;a href=&quot;https://github.com/resque/resque-scheduler/issues/472&quot;&gt;github issue&lt;/a&gt;, of course.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The rake task reads &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@tt.attribute_i_changed&lt;/code&gt;, does logic on it, and then changes the value. The object I was changing had quite a few dependencies on &lt;em&gt;other&lt;/em&gt; objects, so I just copied an existing factory, changed the values as needed, and called that factory in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;initialization&lt;/code&gt; method.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ApplicationName::Application.load_tasks if Rake::Task.tasks.empty?&lt;/code&gt; makes all the rake tasks available inside this test. Without &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.load_tasks&lt;/code&gt;, nothing else works. Without &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if Rake::Task.tasks.empty?&lt;/code&gt; makes sure it loads them only if they’re not currently loaded. (Thanks &lt;a href=&quot;https://medium.com/p/6573f7185a0a/responses/show&quot;&gt;@Ratanachai Ken Sombat&lt;/a&gt;)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rake::Task[&quot;namespace:task_name&quot;].invoke&lt;/code&gt; runs the task under test.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@tt.reload&lt;/code&gt; is very important. It’s obvious in hindsight, but since the rake task modified values of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@tt&lt;/code&gt;, I have to reload it from the database. Otherwise, the test has no idea the values changed when I call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@tt.attributes_i_changed&lt;/code&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;And a few standard &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;refute_includes&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_includes&lt;/code&gt;, and we’re on our way.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;useful-resources&quot;&gt;Useful resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://robots.thoughtbot.com/test-rake-tasks-like-a-boss&quot;&gt;Thoughtbot: Test Rake Tasks Like a BOSS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ieftimov.com/test-rake-tasks&quot;&gt;Ilija Eftimov: Why and how to test Rake tasks in your Rails application&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://content.pivotal.io/blog/test-your-rake-tasks&quot;&gt;Pivotal blog: Test your Rake tasks!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Array divergence in Ruby</title>
   <link href="https://josh.works/array-divergence"/>
   <updated>2018-02-02T13:00:00+00:00</updated>
   <id>https://josh.works/array_divergence</id>
   <content type="html">&lt;p&gt;Lets say you have a list of valid items, and you want to run another array against it, and pull out the items that don’t match.&lt;/p&gt;

&lt;p&gt;You don’t want to iterate through all of the items in one array, calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;other_array.include?(item)&lt;/code&gt;. (That’s computationally expensive)&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;valid_people&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Sarah Connor&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;John Connor&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;visitor_logs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Sarah Connor&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;John Connor&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Terminator Robot&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You want to find any item in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;visitor_logs&lt;/code&gt; that isn’t on the approved list. How to do that?&lt;/p&gt;

&lt;p&gt;in Ruby, you can just “subtract” one array from another:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;unwanted_visitors&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;visitor_logs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;valid_people&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Terminator Robot&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;!--more--&gt;

&lt;p&gt;What if you want to see what items on both lists are &lt;em&gt;not&lt;/em&gt; in common? (AKA &lt;em&gt;divergence&lt;/em&gt;)&lt;/p&gt;

&lt;p&gt;You’ll use Ruby’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uniq&lt;/code&gt; operator, which is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;|&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Lets say you’re a &lt;em&gt;really&lt;/em&gt; aggressive party host. When you invite people, they’d better show up. And if someone DOES show up who’s not invited, they’re in trouble too.&lt;/p&gt;

&lt;p&gt;So, you’ve got &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;expected_guests&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;actual_guests&lt;/code&gt;. You need to figure out who in each list isn’t on the other one. Maybe you’ll rick roll them later for their error. Here’s how you’d do that:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;expected_guests&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Sarah&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;John&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;The Hulk&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;actual_guests&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Sarah&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;John&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Dracula&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;expected_guests&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;actual_guests&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;The Hulk&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;actual_guests&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;expected_guests&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Dracula&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;expected_guests&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;actual_guests&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;actual_guests&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;expected_guests&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;The Hulk&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Dracula&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Looks like you’re &lt;a href=&quot;https://www.youtube.com/watch?v=dQw4w9WgXcQ&quot;&gt;rick rolling&lt;/a&gt; The Hulk, and Dracula. Good luck!&lt;/p&gt;

&lt;p&gt;The above operation is the same as:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;list_1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;list_2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/20205023/ruby-find-element-not-in-common-for-two-arrays&quot;&gt;Stack Overflow: Find element not in common for two arrays&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.chrisrolle.com/en/blog/array-coherences&quot;&gt;Christian Rolle: Array Coherences&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>How To Take Back Your Attention On The Internet with uBlock</title>
   <link href="https://josh.works/take-back-your-attention"/>
   <updated>2018-01-21T08:00:00+00:00</updated>
   <id>https://josh.works/take_back_your_attention</id>
   <content type="html">&lt;p&gt;&lt;em&gt;note: this page has 17Mb of gifs and images. I don’t really want to take the time to manually trim the gifs from &amp;gt;3Mb/each to &amp;lt;1Mb each, so I didn’t. If you’re on mobile, or trying to conserve data, you might want to come back to this one later.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I value my attention and focus. I resent &lt;em&gt;strongly&lt;/em&gt; when someone tries to take it away from me.&lt;/p&gt;

&lt;p&gt;Someone tries to derail my attention pretty much any time I browse the internet. Little pop-ups, auto-playing videos, click-baity headlines, etc.&lt;/p&gt;

&lt;p&gt;I’ve settled on a pretty good system for blocking annoying crap on the internet.&lt;/p&gt;

&lt;p&gt;Here’s the elements on a few different websites that &lt;em&gt;I&lt;/em&gt; visit regularly, with the elements I’m going to remove highlighted.&lt;/p&gt;

&lt;p&gt;We’re going to take this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-18-twitter-01.png&quot; alt=&quot;crappy twitter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-18-twitter-02.jpg&quot; alt=&quot;better twitter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’ve got some special “rules” for twitter at the bottom of this post. The key is to know you may have to use wildcards in your CSS rules to catch all instances of a thing you want to block, like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;twitter.com##li[id^=&quot;stream-item-who_to_follow_entry&quot;]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;!--more--&gt;

&lt;p&gt;And bad LinkedIn:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-18-linkedin-01.jpg&quot; alt=&quot;bad linkedin&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To less-bad LinkedIn:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-18-linkedin-02.jpg&quot; alt=&quot;good linkedin&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Bad Comcast email login: (which I never use)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-20-xfinity_01.jpg&quot; alt=&quot;bad xfinity&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To better:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-20-xfinity_02.jpg&quot; alt=&quot;less bad xfinity&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Inside the above email account. I’m already paying them money, why must I be assaulted with further ads?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-20-xfinity_03.jpg&quot; alt=&quot;bad comcast&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I love StackOverflow. I couldn’t do my job without it. But even StackOverflow has unwanted cruft on its pages.&lt;/p&gt;

&lt;p&gt;I didn’t get a screenshot of the worst offender - the “Hot Network Questions”, where popular questions from entirely unrelated topics are listed. Questions like&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“Why does Yoda age so slowly in the newest Star Wars”&lt;/li&gt;
  &lt;li&gt;“Short story where the protagonist is unknowingly the demon Beelzebub”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are distracting and unwelcome. With uBlock, I can remove them all, forever.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-21_so_01.jpg&quot; alt=&quot;Stack Overflow&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;install-ublock-to-permanently-delete-all-this-crap&quot;&gt;Install uBlock to permanently delete all this crap&lt;/h1&gt;

&lt;p&gt;First, you’ll need &lt;a href=&quot;https://github.com/gorhill/uBlock&quot;&gt;uBlock Origin&lt;/a&gt;. It it is basically a tool that sits between your browser and the internet, and if any scripts are calling resources that match anything in a blacklist, it keeps the resource from loading.&lt;/p&gt;

&lt;p&gt;From uBlock’s own description:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;uBlock Origin is &lt;strong&gt;NOT&lt;/strong&gt; an “ad blocker”: &lt;a href=&quot;https://github.com/gorhill/uBlock/wiki/Blocking-mode&quot;&gt;it is a wide-spectrum blocker&lt;/a&gt; – which happens to be able to function as a mere “ad blocker”. The default behavior of uBlock Origin when newly installed is to block ads, trackers and malware sites – through &lt;a href=&quot;https://easylist.github.io/#easylist&quot;&gt;&lt;em&gt;EasyList&lt;/em&gt;&lt;/a&gt;, &lt;a href=&quot;https://easylist.github.io/#easyprivacy&quot;&gt;&lt;em&gt;EasyPrivacy&lt;/em&gt;&lt;/a&gt;, &lt;a href=&quot;https://pgl.yoyo.org/adservers/policy.php&quot;&gt;&lt;em&gt;Peter Lowe’s ad/tracking/malware servers&lt;/em&gt;&lt;/a&gt;, various lists of &lt;a href=&quot;http://www.malwaredomainlist.com/&quot;&gt;malware&lt;/a&gt; &lt;a href=&quot;http://www.malwaredomains.com/&quot;&gt;sites&lt;/a&gt;, and uBlock Origin’s &lt;a href=&quot;https://github.com/uBlockOrigin/uAssets/tree/master/filters&quot;&gt;own filter lists&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s a powerful tool. Install it for:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/&quot;&gt;Firefox&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm&quot;&gt;Chrome&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/el1t/uBlock-Safari#ublock-originfor-safari&quot;&gt;Safari’s comically complicated install process (nevermind. You have to reinstall every time you restart safari. Don’t use safari. Use  Firefox instead)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.microsoft.com/en-us/store/p/app/9nblggh444l4?rtc=1&quot;&gt;Microsoft Edge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do you have it installed? You should see a little icon in your browser with a number on it now.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-21_ublock_01.jpg&quot; alt=&quot;ublock in browser&quot; /&gt;&lt;/p&gt;

&lt;p&gt;(By the way, that badge with a 50 on it is the number of scipts and resources uBlock is disabling &lt;em&gt;by default&lt;/em&gt; on this domain.)&lt;/p&gt;

&lt;h2 id=&quot;using-ublock&quot;&gt;Using uBlock&lt;/h2&gt;

&lt;p&gt;I’m on &lt;a href=&quot;https://www.denverpost.com/2018/01/21/colorado-10-lane-highway-autonomous-vehicle-lane-traffic/&quot;&gt;denverpost.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s how we choose and block page elements.&lt;/p&gt;

&lt;p&gt;Lets first pick that header-bar asking me to turn on browser notifications:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-21_ublock_02.gif&quot; alt=&quot;gif of uBlock in action&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;gif of ublock in action&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What I’m doing is:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Click the uBlock menu icon&lt;/li&gt;
  &lt;li&gt;Select the “element picker” tool. (it looks like an eye dropper)&lt;/li&gt;
  &lt;li&gt;Mouseover the page until I’ve “selected” the portion of the page I want to remove. (uBlock highlights the current page node that the rule would apply to)&lt;/li&gt;
  &lt;li&gt;Click that element of the page&lt;/li&gt;
  &lt;li&gt;When I click, a very hard-to-see menu pops up in the bottom right corner of the page. I then move my mouse over to it, and click the “create” button.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At that point, uBlock finds that element of the page and deletes it. Forever.&lt;/p&gt;

&lt;p&gt;A brief technical aside of what’s going on:&lt;/p&gt;

&lt;p&gt;The page is represented to the user as a continuous document, but the underlying structure is a “Document Object Model”, and every page element is a “node” that exists mostly-independently of any other node on the page. We’re using uBlock to highlight the nodes of the DOM, and when we select one, uBlock says “ok, this here node… I’ll just remove it from the DOM”.&lt;/p&gt;

&lt;p&gt;Lets remove more nodes. I really don’t like email/subscribe popups, so I always delete them.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-21_ublock_03.gif&quot; alt=&quot;remove the subscribe notification&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;gif of removing subscribe popup&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;“Trending” news is just a way of saying&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;you’re not here to read these articles, but other people are clicking on them and we hope you’ll do the same.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, remove it:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-21_ublock_04.gif&quot; alt=&quot;remove the sidebar&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;gif of removing the sidebar&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The final version is quite a bit more peaceful and less disruptive and attention-grabbing than the origional website.&lt;/p&gt;

&lt;p&gt;Oh, and these rules usually apply to “promoted” content that’s inserted in your “feed”. Just find the promoted node, select it, and delete it. This usually will apply to &lt;em&gt;all&lt;/em&gt; promoted posts in your feed, so it’s a great way to get spam out of whatever long list you are scrolling through. (Facebook/Instagram/Twitter).&lt;/p&gt;

&lt;h2 id=&quot;a-few-surprises-that-can-happen-with-ublock&quot;&gt;A few surprises that can happen with uBlock&lt;/h2&gt;

&lt;p&gt;Since uBlock by default disables many unwanted scripts and resources, it can introduce some unexpected behavior on websites. If a website isn’t behaving exactly as expected, turn off uBlock and see if the resource loads.&lt;/p&gt;

&lt;p&gt;For example, some websites use untrustworthy javascript redirects to track your movement to third-party websites. if those redirects rely on untrusted third-party resources, they won’t be loaded on the page. Ditto for some kinds of form submission behavior, image/video resources, etc.&lt;/p&gt;

&lt;p&gt;So, turning off uBlock is very easy:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Click the uBlock menu icon&lt;/li&gt;
  &lt;li&gt;click the blue “power” icon&lt;/li&gt;
  &lt;li&gt;Click the “refresh page” button&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;uBlock will not block anything on this page now. To turn it back on, repeat the above steps.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-21_ublock_05.gif&quot; alt=&quot;turning off ublock&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;gif of temporarily disabling uBlock&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you accidentally delete an element you didn’t intend (like, the main content of the page, for example!) you’ll have to remove the “page rule” you just created.&lt;/p&gt;

&lt;p&gt;This is very easy.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-21_ublock_06.jpg&quot; alt=&quot;deleting wrong element&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;picture of where the article is *supposed* to be&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;click uBlock menu icon&lt;/li&gt;
  &lt;li&gt;click “open the dashboard”&lt;/li&gt;
  &lt;li&gt;navigate to the “my filters” tab&lt;/li&gt;
  &lt;li&gt;delete the bottom line from that list of rules. A line beginning with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;!&lt;/code&gt; is a comment describing the next line, which is the “rule” that uBlock actually reads and applies to the page.&lt;/li&gt;
  &lt;li&gt;click “apply changes”&lt;/li&gt;
  &lt;li&gt;go back to the website (it’s tab is still open) and refresh the page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-01-21_ublock_07.gif&quot; alt=&quot;fixing a bad delete&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;gif of removing the bad page rule&lt;/em&gt;&lt;/p&gt;

&lt;h1 id=&quot;is-ublock-really-necessary&quot;&gt;Is ublock &lt;em&gt;really&lt;/em&gt; necessary?&lt;/h1&gt;

&lt;blockquote&gt;
  &lt;p&gt;OK, Josh, this is a lot of work to &lt;em&gt;individually delete page nodes&lt;/em&gt; just to “preserve” my attention? I can read articles without worrying about the rest of the sidebars. Don’t you think this is overkill?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I don’t think it’s overkill.&lt;/p&gt;

&lt;p&gt;A while back, &lt;a href=&quot;/i-quit&quot;&gt;I wrote about a book called &lt;em&gt;Deep Work&lt;/em&gt;, and the profound impact it had on me&lt;/a&gt;. I stepped off of social media completely, and made efforts to trim away other distractions in my life.&lt;/p&gt;

&lt;p&gt;Since taking these steps, I’ve become sensitive and more attuned to when I’m subjected to unwilling sources of distraction. It’s as if my “someone is trying to influence me” radar got much stronger.&lt;/p&gt;

&lt;p&gt;I suspect that if you start using uBlock to remove annoying elements from pages, you’ll start developing a stronger radar for when someone is trying to monetize your attention, and and then you’ll block those elements, but then become even more attuned to those unwanted influences, and then block them, and on and on.&lt;/p&gt;

&lt;p&gt;It is worth pointing out that &lt;em&gt;this very website&lt;/em&gt; is devoid of those sorts of elements I find annoying. No popups, no sidebar content, no click-baity headlines. If you want to share one of these posts on social media, you have to do it the old school way. Copy and paste the URL into your platform of choice.&lt;/p&gt;

&lt;p&gt;Note how clean the URL is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://josh.works/post-title&lt;/code&gt;. Positively peaceful.&lt;/p&gt;

&lt;p&gt;The only metric I pay attention to is email subscribers. Someone subscribing via email is basically the highest endorsement of trust I can imagine. I’m extremely judicious in subscribing to other people’s websites, so I value other people trusting me with their email address.&lt;/p&gt;

&lt;h1 id=&quot;detail-on-twitter&quot;&gt;Detail on Twitter&lt;/h1&gt;

&lt;p&gt;A few more thoughts on Twitter. Here’s its most recent ugly UI&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-17-before.jpg&quot; alt=&quot;before&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And after its fixed:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2019-07-17-after.jpg&quot; alt=&quot;After&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Twitter is tricky about ads/follow suggestions it injects into your stream. Because the root node ID is unique to you/the user the add wants you to follow, you need to use a little wild-carding to catch-and-delete these all.&lt;/p&gt;

&lt;p&gt;First, here’s what the rules look like for deleting individual ads. These entries are useless, as once the long string of digets at the end changes, the ad won’t be caught by uBlock.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;twitter.com###stream-item-who_to_follow_entry-955359935176437758
twitter.com###stream-item-who_to_follow_entry-953442336767381502
twitter.com###stream-item-who_to_follow_entry-955359935176437758
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here’s the rule I have in uBlock, that just catches all of these, no matter what the actual element id is:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;twitter.com##li[id^=&quot;stream-item-who_to_follow_entry&quot;]

// Here&apos;s some other twitter rules that might be helpful

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Go forth and retain more of your attention!&lt;/p&gt;

&lt;h3 id=&quot;related-resources&quot;&gt;Related Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.ghacks.net/2017/02/21/ublock-origin-how-to-remove-any-element-from-a-page-permanently/&quot;&gt;Use uBlock Origin to remove any element from a page permanently, &lt;em&gt;ghacks.net&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.vox.com/science-and-health/2018/1/15/16863374/willpower-overrated-self-control-psychology&quot;&gt;Willpower is over-rated. Build systems to ensure desired behavior, &lt;em&gt;Vox.com&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/uBlockOrigin/comments/6g4jvt/is_there_any_way_to_hide_promoted_tweets_from_the/&quot;&gt;Is there any way to hide promoted tweets from the twitter feed with uBlock Origin? (Reddit)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Recommended books from 2017</title>
   <link href="https://josh.works/recommended-books-from-2017"/>
   <updated>2018-01-15T13:00:00+00:00</updated>
   <id>https://josh.works/2017_books</id>
   <content type="html">&lt;p&gt;I read many books in 2017. I’m listing them out here, along with recommendations. Here’s the recommendation “key”:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;👍 = I recommend this book. This is intentionally fuzzy.&lt;/li&gt;
  &lt;li&gt;😔 = This book influenced my mental model of the world/reality/myself&lt;/li&gt;
  &lt;li&gt;🏢 = Book topic is architecture and/or urbanism&lt;/li&gt;
  &lt;li&gt;💵 = Book topic is finance/economics/politics&lt;/li&gt;
  &lt;li&gt;😫 = This book is hard to get through. Lengthy and/or academic (or both)&lt;/li&gt;
  &lt;li&gt;🐲 = Fiction (most of the fiction I read had fantastic(al) creatures in them, hence the dragon)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;january&quot;&gt;January&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/28595941-arcanum-unbounded&quot;&gt;Arcanum Unbounded: The Cosmere Collection&lt;/a&gt; 👍 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/885970.Patterns_of_Home&quot;&gt;Patterns of Home: The Ten Essentials of Enduring Design&lt;/a&gt; 🏢&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6611240-three-felonies-a-day&quot;&gt;Three Felonies a Day: How the Feds Target the Innocent&lt;/a&gt; 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/30137076-heal-us-emmanuel&quot;&gt;Heal Us, Emmanuel: A Call for Racial Reconciliation, Representation, and Unity in the Church&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/7292000-espresso-lessons&quot;&gt;Espresso Lessons&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6422238-makers&quot;&gt;Makers&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/18693655-a-mind-for-numbers&quot;&gt;A Mind for Numbers: How to Excel at Math and Science (Even If You Flunked Algebra)&lt;/a&gt; 😔 👍&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/13588356-daring-greatly&quot;&gt;Daring Greatly: How the Courage to Be Vulnerable Transforms the Way We Live, Love, Parent, and Lead&lt;/a&gt; 👍 😔&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/35870.Ghost_in_the_Shell&quot;&gt;Ghost in the Shell (Ghost in the Shell, #1)&lt;/a&gt; 🐲&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;h3 id=&quot;february&quot;&gt;February&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/9364729-eloquent-ruby&quot;&gt;Eloquent Ruby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/11084145-steve-jobs&quot;&gt;Steve Jobs&lt;/a&gt; 👍&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/14741290-the-secret-thoughts-of-an-unlikely-convert&quot;&gt;The Secret Thoughts of an Unlikely Convert: An English Professor’s Journey Into Christian Faith&lt;/a&gt; 😔&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25066990-living-with-a-seal&quot;&gt;Living with a SEAL: 31 Days Training with the Toughest Man on the Planet&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25852784-evicted&quot;&gt;Evicted: Poverty and Profit in the American City&lt;/a&gt; 😔 💵&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;march&quot;&gt;March&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority: An Examination of the Right to Coerce and the Duty to Obey&lt;/a&gt; 😔 👍 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/81940.Mastery&quot;&gt;Mastery: The Keys to Success and Long-Term Fulfillment&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/28259132-chaos-monkeys&quot;&gt;Chaos Monkeys: Obscene Fortune and Random Failure in Silicon Valley&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;april&quot;&gt;April&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/86154.The_Mystery_of_Capital&quot;&gt;The Mystery of Capital: Why Capitalism Triumphs in the West and Fails Everywhere Else&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/26312997-peak&quot;&gt;Peak: Secrets from the New Science of Expertise&lt;/a&gt; 👍&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/12609433-the-power-of-habit&quot;&gt;The Power of Habit: Why We Do What We Do in Life and Business&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2213661.The_Graveyard_Book&quot;&gt;The Graveyard Book&lt;/a&gt; 👍 🐲&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;may&quot;&gt;May&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/7241373-for-the-win&quot;&gt;For the Win&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/29902035-agile-web-development-with-rails-5&quot;&gt;Agile Web Development with Rails 5&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/7886338-the-lifecycle-of-software-objects&quot;&gt;The Lifecycle of Software Objects&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/33115566-arrival&quot;&gt;Arrival&lt;/a&gt; 👍 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/35111930-the-san-francisco-fallacy&quot;&gt;The San Francisco Fallacy: The Ten Fallacies That Make Founders Fail&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/7324357-last-call&quot;&gt;Last Call: The Rise and Fall of Prohibition&lt;/a&gt; 😔 👍 😫&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/30165203-american-gods&quot;&gt;American Gods&lt;/a&gt; 🐲&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;june&quot;&gt;June&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/28257707-the-subtle-art-of-not-giving-a-f-ck&quot;&gt;The Subtle Art of Not Giving a F*ck: A Counterintuitive Approach to Living a Good Life&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/13122143-unwritten-laws-of-engineering&quot;&gt;Unwritten Laws Of Engineering&lt;/a&gt; 👍 😔&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/13330588-happy-city&quot;&gt;Happy City: Transforming Our Lives Through Urban Design&lt;/a&gt; 💵 🏢&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/54388.Money_Bank_Credit_and_Economic_Cycles&quot;&gt;Money, Bank Credit, and Economic Cycles&lt;/a&gt; 💵 😫&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/35202699-your-move&quot;&gt;Your Move: The Underdog’s Guide to Building Your Business&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;july&quot;&gt;July&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/13642523-catastrophic-care&quot;&gt;Catastrophic Care: How American Health Care Killed My Father—and How We Can Fix It&lt;/a&gt; 😔 👍&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2744.Anansi_Boys&quot;&gt;Anansi Boys&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/11324722-the-righteous-mind&quot;&gt;The Righteous Mind: Why Good People are Divided by Politics and Religion&lt;/a&gt; 😔 👍&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/29491894-cherish&quot;&gt;Cherish: The One Word That Changes Everything for Your Marriage&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25451264-death-s-end&quot;&gt;Death’s End (Remembrance of Earth’s Past, #3)&lt;/a&gt; 👍 🐲 😫&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;august&quot;&gt;August&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/332583.Understanding_Marijuana&quot;&gt;Understanding Marijuana: A New Look at the Scientific Evidence&lt;/a&gt; 👍 😫&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/19411707-how-to-learn-memorize-poetry-using-a-memory-palace-specifically-de&quot;&gt;How to Learn &amp;amp; Memorize Poetry&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2122.The_Fountainhead&quot;&gt;The Fountainhead&lt;/a&gt; 😫 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2984216-tactics&quot;&gt;Tactics: A Game Plan for Discussing Your Christian Convictions&lt;/a&gt; 😔&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/4553119-practical-anarchy&quot;&gt;Practical Anarchy&lt;/a&gt; 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/3089447-denationalisation-of-money&quot;&gt;Denationalisation of Money: The Argument Refined&lt;/a&gt; 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/119322.The_Golden_Compass&quot;&gt;The Golden Compass (His Dark Materials, #1)&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/119324.The_Subtle_Knife&quot;&gt;The Subtle Knife (His Dark Materials, #2)&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/12720771-the-privatization-of-roads-and-highways&quot;&gt;The Privatization of Roads and Highways&lt;/a&gt; 💵 😔&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/45352.When_I_Don_t_Desire_God&quot;&gt;When I Don’t Desire God: How to Fight for Joy&lt;/a&gt; 😔 👍&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;september&quot;&gt;September&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/22816087-seveneves&quot;&gt;Seveneves&lt;/a&gt; 😫 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/2507760.The_Origins_of_Proslavery_Christianity&quot;&gt;The Origins of Proslavery Christianity: White and Black Evangelicals in Colonial and Antebellum Virginia&lt;/a&gt; 😔 😫&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/47212.Storm_Front&quot;&gt;Storm Front (The Dresden Files, #1)&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6604712-eating-animals&quot;&gt;Eating Animals&lt;/a&gt; 😔 👍&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;october&quot;&gt;October&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/280412.The_Run_of_His_Life_&quot;&gt;The Run of His Life: The People versus O.J. Simpson&lt;/a&gt; 👍&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/20186.Seeing_Like_a_State&quot;&gt;Seeing Like a State: How Certain Schemes to Improve the Human Condition Have Failed&lt;/a&gt; 👍 😔 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/64341.The_Metamorphosis_of_Prime_Intellect&quot;&gt;The Metamorphosis of Prime Intellect&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/91477.Fool_Moon&quot;&gt;Fool Moon (The Dresden Files, #2)&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/161744.Common_Sense&quot;&gt;Common Sense&lt;/a&gt; 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/3.Harry_Potter_and_the_Sorcerer_s_Stone&quot;&gt;Harry Potter and the Sorcerer’s Stone (Harry Potter, #1)&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/82256.The_Sovereign_Individual&quot;&gt;The Sovereign Individual: Mastering the Transition to the Information Age&lt;/a&gt; 👍 😔 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6613404-anatomy-of-the-state&quot;&gt;Anatomy of the State&lt;/a&gt;  💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/16130.Alexander_Hamilton&quot;&gt;Alexander Hamilton&lt;/a&gt; 👍 😔 😫&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;november&quot;&gt;November&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/14891877-two-cheers-for-anarchism&quot;&gt;Two Cheers for Anarchism&lt;/a&gt; 😔&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/27310522-drone&quot;&gt;Drone: Remote Control Warfare&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/91478.Summer_Knight&quot;&gt;Summer Knight (The Dresden Files, #4)&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25817279-door-to-door&quot;&gt;Door to Door: The Magnificent, Maddening, Mysterious World of Transportation&lt;/a&gt; 💵 🏢&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/81976.The_Case_Against_the_Fed&quot;&gt;The Case Against the Fed&lt;/a&gt; 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/815790.City_of_Darkness&quot;&gt;City of Darkness: Life in Kowloon Walled City&lt;/a&gt; 👍 🏢&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/20176373-home-grown&quot;&gt;Home Grown: Adventures in Parenting off the Beaten Path, Unschooling, and Reconnecting with the Natural World&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/820924.Refuge&quot;&gt;Refuge: An Unnatural History of Family and Place&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25855473-outpatients&quot;&gt;Outpatients&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;december&quot;&gt;December&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/34002132-oathbringer&quot;&gt;Oathbringer (The Stormlight Archive, #3)&lt;/a&gt; 👍 😫 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/29358.Charlie_Wilson_s_War&quot;&gt;Charlie Wilson’s War&lt;/a&gt; 👍 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/3109.The_Omnivore_s_Dilemma&quot;&gt;The Omnivore’s Dilemma: A Natural History of Four Meals&lt;/a&gt; 👍 😔&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/91479.Death_Masks&quot;&gt;Death Masks (The Dresden Files, #5)&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/81977.What_Has_Government_Done_to_Our_Money_and_The_Case_for_the_100_Percent_Gold_Dollar&quot;&gt;What Has Government Done to Our Money?&lt;/a&gt; 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/99383.Blood_Rites&quot;&gt;Blood Rites (The Dresden Files, #6)&lt;/a&gt; 🐲&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;The End of Jobs: Money, Meaning and Freedom Without the 9-to-5&quot;&gt;The End of Jobs: Money, Meaning and Freedom Without the 9-to-5&lt;/a&gt; 💵&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/31804439-12-ways-your-phone-is-changing-you&quot;&gt;12 Ways Your Phone Is Changing You&lt;/a&gt; 😔 👍&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s it. It was a good year of reading.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>MySQL concatenation and casting</title>
   <link href="https://josh.works/mysql-concat-cast"/>
   <updated>2018-01-13T13:00:00+00:00</updated>
   <id>https://josh.works/mysql-concat-cast</id>
   <content type="html">&lt;p&gt;I recently &lt;a href=&quot;/setting-up-sql-queries-for-mere-mortals&quot;&gt;set up my environment&lt;/a&gt; for working through &lt;em&gt;SQL for Mere Mortals&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I’ll record some interested tidbits here as I go.&lt;/p&gt;

&lt;h2 id=&quot;chapter-5-concatenation-without-the--operator&quot;&gt;Chapter 5: Concatenation without the || operator&lt;/h2&gt;

&lt;p&gt;I use MySQL at work, and MySQL doesn’t support the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;||&lt;/code&gt; operator for string concatenation.&lt;/p&gt;

&lt;p&gt;So, in the book, an expression like:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;ItemOne&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ItemTwo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;evaluates to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ItemOneItemTwo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In MySQL, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;||&lt;/code&gt; is a &lt;a href=&quot;https://dev.mysql.com/doc/refman/5.7/en/logical-operators.html#operator_or&quot;&gt;logical operator&lt;/a&gt;, just like in Ruby, so to get the above evaluation, you’d need to use:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;CONCAT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ItemOne&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ItemTwo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;That would give you &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ItemOneItemTwo&lt;/code&gt;. Of course, string concatenation pairs well with spaces between the strings you’re trying to concatenate, so please know that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CONCAT&lt;/code&gt; function can take any number of arguments, for example:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;CONCAT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ItemOne&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos; &apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ItemTwo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;would return &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ItemOne ItemTwo&lt;/code&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;casting&quot;&gt;CASTing&lt;/h2&gt;

&lt;p&gt;On page 147, the given SQL doesn’t work in MySQL:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;EngagementNumber&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;CAST&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;CAST&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;EndDate&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;StartDate&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INTEGER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;CHARACTER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos; day(s)&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DueToRun&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Engagements&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There’s two problems. First, the concatenation issue mentioned above, so it would look like this:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;EngagementNumber&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;CONCAT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;CAST&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;CAST&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;EndDate&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;StartDate&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INTEGER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;CHARACTER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos; day(s)&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DueToRun&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Engagements&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Secondly, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CAST&lt;/code&gt; function doesn’t play as expected.&lt;/p&gt;

&lt;p&gt;Here’s a functioning query:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;EngagementNumber&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;EndDate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;StartDate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;CONCAT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;EndDate&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;StartDate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos; Day(s)&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DaysToRun&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;engagements&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;¯\_(ツ)_/¯&lt;/p&gt;

&lt;h2 id=&quot;enable-pipes_as_concat-mode&quot;&gt;Enable &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pipes_as_concat&lt;/code&gt; mode?&lt;/h2&gt;

&lt;p&gt;I plan on just replacing any use of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;||&lt;/code&gt; in the book with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CONCAT&lt;/code&gt; function, unless someone suggests otherwise.&lt;/p&gt;

&lt;p&gt;You &lt;em&gt;can&lt;/em&gt; run MySQL in &lt;a href=&quot;https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_pipes_as_concat&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pipes_as_concat&lt;/code&gt;&lt;/a&gt; mode, according to &lt;a href=&quot;https://stackoverflow.com/a/24777235/3210178&quot;&gt;StackOverflow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To enable it in the current MySQL session, in the query interface just run&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;set sql_mode=PIPES_AS_CONCAT;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now you can try the pipes operator, and decide if you want it to be permanent or not.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;This is pretty basic stuff. Chapter 6 was just about using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WHERE&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;IS NULL&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NOT LIKE&lt;/code&gt; clauses to filter down result sets.&lt;/p&gt;

&lt;p&gt;I rushed through it to get to the more interesting portion of the book, which is &lt;em&gt;Chapter 7: Thinking In Sets&lt;/em&gt; (AKA Joins tables!)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>2017 In Review &amp; Thoughts on 2018</title>
   <link href="https://josh.works/2017-review"/>
   <updated>2018-01-01T13:00:00+00:00</updated>
   <id>https://josh.works/2017_review</id>
   <content type="html">&lt;p&gt;Note: this “annual review” covers three topics. Click on one to skip to it:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2017-review#themes-from-2017&quot;&gt;Looking back on 2017&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2017-review#2018&quot;&gt;thoughts on going into 2018&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2017-review#reading&quot;&gt;book recommendations from the 79 books I read last year&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;I’ve got mixed feelings on annual reviews. I steadfastly refuse to set New Years’ resolutions, and am even shying away from the whole idea of goals.&lt;/p&gt;

&lt;p&gt;(“not being goal oriented” is a big idea to unpack, and I’ll do so eventually. I’ve historically been &lt;em&gt;extremely&lt;/em&gt; goal oriented, but I’m changing my tune on how healthy &lt;em&gt;for me&lt;/em&gt; this is.)&lt;/p&gt;

&lt;p&gt;However, I find review, reflection, and planning to be valuable. Here we are.&lt;/p&gt;

&lt;p&gt;Step 1 of “doing an annual review” is take a look at what I’ve written in past annual reviews.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;2016 review: &lt;a href=&quot;/2016-most-dangerous-books&quot;&gt;2016 - Biggest Lesson, Most Dangerous Books&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;2015 review: &lt;a href=&quot;/2015_the_year_i_didnt_think_much&quot;&gt;2015: The year I didn’t think much?&lt;/a&gt; (bonus screenshot of an earlier iteration of this website)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I started this whole thing in 2012, but didn’t do any sort of review for 2012, 2013, or 2014. Writing that sentence confirms the value of this review - I wish I &lt;em&gt;had&lt;/em&gt; done a review those years, if for no other reason than to remind future Josh what the heck was going on in his life then.&lt;/p&gt;

&lt;p&gt;Further validation of this sentiment comes from &lt;a href=&quot;https://twitter.com/patio11&quot;&gt;Patrick McKenzie&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;If you&amp;#39;ve got two hours to kill the next few days write up &amp;quot;What I learned in 2017 doing X&amp;quot; and put it somewhere where people can read it. (Ideally publicly, but I understand that doesn&amp;#39;t work for everyone / every job / etc.)&lt;br /&gt;&lt;br /&gt;If you only have ~10 minutes, tweet it.&lt;/p&gt;&amp;mdash; Patrick McKenzie (@patio11) &lt;a href=&quot;https://twitter.com/patio11/status/946910434887471104?ref_src=twsrc%5Etfw&quot;&gt;December 30, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;Patrick McKenzie makes generally great recommendations. His recommendation pushed me over the edge.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h1 id=&quot;themes-from-2017&quot;&gt;Themes from 2017&lt;/h1&gt;

&lt;p&gt;Step two is “reflect on the last year”.&lt;/p&gt;

&lt;h4 id=&quot;tactical-silence&quot;&gt;Tactical Silence&lt;/h4&gt;

&lt;p&gt;Late in 2016, I embraced the concept of &lt;a href=&quot;https://josh.works/2016-most-dangerous-books#tactical-silence&quot;&gt;tactical silence&lt;/a&gt;. I’m glad I did, and I’ll continue. Speak less, listen more.&lt;/p&gt;

&lt;h4 id=&quot;social-media&quot;&gt;Social Media&lt;/h4&gt;

&lt;p&gt;Late 2016, I &lt;a href=&quot;https://josh.works/i-quit&quot;&gt;stepped off social media&lt;/a&gt; for quite a few months. Late 2017 I jumped back on to Twitter, and made very light use of Instagram. (I still don’t have Facebook).&lt;/p&gt;

&lt;p&gt;I preferred being off social media than on it, and I’m not sure I trust myself to moderate my usage. I might just shut the whole thing down again.&lt;/p&gt;

&lt;h4 id=&quot;turing&quot;&gt;Turing&lt;/h4&gt;

&lt;p&gt;I &lt;a href=&quot;https://josh.works/turing-retrospective&quot;&gt;started (and finished) Turing last year&lt;/a&gt;. It was a fantastic experience, and a total success. I gained friends and a new network, and achieved a long-term goal of beginning a career in software development.&lt;/p&gt;

&lt;h4 id=&quot;wombat&quot;&gt;Wombat&lt;/h4&gt;

&lt;p&gt;After Turing, I was thrilled to join a small dev team inside a larger dev team at Wombat Security. Our team oversees maintenance and development of one of the key pieces of the platform, and I’m &lt;em&gt;thrilled&lt;/em&gt; to have joined.&lt;/p&gt;

&lt;p&gt;I’m back to 100% remote work, and loving it. After commuting an hour each way in and out of Denver, every day for seven months, I was ready to stop.&lt;/p&gt;

&lt;p&gt;I’ve got tons of thoughts on being a junior developer, career development, skills acquisition, maintaining cohesion on a remote team, and much more, but… another time.&lt;/p&gt;

&lt;h4 id=&quot;climbing&quot;&gt;Climbing&lt;/h4&gt;

&lt;p&gt;I finally put down a 5.13 this year. &lt;em&gt;A&lt;/em&gt; 5.13. (Well, it depends on the guidebook. By the book, I did three, but I think two of them were not 13s). Once I’ve done a dozen or so, I’ll consider myself to have broken into the grade.&lt;/p&gt;

&lt;p&gt;I’d much prefer to break into the European 8a grade, which is 5.13b in the US. It’s generally considered to be “hard” climbing, no matter how you cut it.&lt;/p&gt;

&lt;p&gt;So, my sport climbing didn’t see much improvement; Turing interfered with my climbing a bit, but mostly I’m not sure how to improve as a climber. I’ll expand on that another time as well.&lt;/p&gt;

&lt;p&gt;I saw unexpected gains or improvement in my &lt;a href=&quot;https://en.wikipedia.org/wiki/Traditional_climbing&quot;&gt;trad climbing&lt;/a&gt;. I’ve not trad climbed in years, and went on a trip to the Gunks. Christian Haudenschild, who kindly was my climbing partner in three states over six weeks, encouraged me to get on things that would have caused me &lt;s&gt;to wet myself in fear&lt;/s&gt; some anxiety last time I was at the gunks.&lt;/p&gt;

&lt;p&gt;We walked away ticking a bunch of the classic 5.11s, and I comfortably led routes far harder than I thought I could do. It was a delight.&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;2018&quot;&gt;2018&lt;/h1&gt;

&lt;p&gt;Step three of an annual review is “look forward into the coming year”.&lt;/p&gt;

&lt;p&gt;I don’t do goals, but I do aim to cultivate good habits. If I’m not satisfied with my outcomes, I’ll examine my habits.&lt;/p&gt;

&lt;p&gt;I also tend to “plan” about three months at a time. I’m not good at predicting the future, and value flexibility and improvisation way more than sticking to anything strict.&lt;/p&gt;

&lt;p&gt;That all said, there’s a few themes that are rolling around my head, that I look forward to seeing how they’ll develop over the coming years.&lt;/p&gt;

&lt;h2 id=&quot;software-development&quot;&gt;Software development&lt;/h2&gt;

&lt;p&gt;I’m about six weeks into my first dev job, so much of my goals and thinking over the next six months will be focused on getting up to speed there, and picking the right skills to study on the side.&lt;/p&gt;

&lt;h2 id=&quot;community&quot;&gt;Community&lt;/h2&gt;

&lt;p&gt;As I’ve tried to trim down my involvement in online communities and social media, I’m trying to increase my involvement in real life communities, my family, IRL friends, etc.&lt;/p&gt;

&lt;p&gt;Books and conversations are driving this thinking. But Kristi and I have had dear friends die recently. Watching this happen has helped clarify priorities, and I want to invite into my own life a more constant awareness of my own death.&lt;/p&gt;

&lt;p&gt;When thinking on my death, the things that float to the top of my list of concerns and priorities are family, friends, and my relationship with Christ. All else melts away.&lt;/p&gt;

&lt;p&gt;I’ve got lots of thoughts on this domain floating around as well, and will address that later.&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;reading&quot;&gt;Reading&lt;/h1&gt;

&lt;p&gt;Step four of doing (this) annual review is “write about books”.&lt;/p&gt;

&lt;p&gt;I read a lot last year. (79 books!)&lt;/p&gt;

&lt;p&gt;17 of them were fiction, 62 were non-fiction. I’ve got a longer post on books coming soon, but until then, here’s a smattering of what I’d say were the best/most influential books I read in 2017:&lt;/p&gt;

&lt;h3 id=&quot;12-ways-your-phone-is-changing-you&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Ways-Your-Phone-Changing-You/dp/1433552434/ref=sr_1_1?ie=UTF8&amp;amp;qid=1514828820&amp;amp;sr=8-1&amp;amp;keywords=12+ways+your+phone+is+changing+you&quot;&gt;12 Ways Your Phone Is Changing You&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I read this one just a few days ago, but it was fantastic. It’s like &lt;em&gt;Deep Work&lt;/em&gt;, except the goal is satisfaction in Christ. &lt;em&gt;Deep Work&lt;/em&gt; resonated with me, and prompted a lot of change in my life.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;12 Ways Your Phone Is Changing You&lt;/em&gt; goes in the same bucket. I’m still working out the implications, and will write more on it soon.&lt;/p&gt;

&lt;h3 id=&quot;seeing-like-a-state&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Seeing-like-State-Certain-Condition/dp/0300078153/ref=sr_1_1?ie=UTF8&amp;amp;qid=1514829056&amp;amp;sr=8-1&amp;amp;keywords=seeing+like+a+state&quot;&gt;Seeing like a State&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I cannot do justice to this book, so I’ll quote extensively from  &lt;a href=&quot;http://slatestarcodex.com/2017/03/16/book-review-seeing-like-a-state/&quot;&gt;Slate Star Codex’s&lt;/a&gt; review. (You should really just read the review, then the book.)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Seeing Like A State&lt;/em&gt; is the book G.K. Chesterton would have written if he had gone into economic history instead of literature. Since he didn’t, James Scott had to write it a century later. The wait was worth it.&lt;/p&gt;

  &lt;p&gt;Scott starts with the story of “scientific forestry” in 18th century Prussia. Enlightenment rationalists noticed that peasants were just cutting down whatever trees happened to grow in the forests, like a chump. They came up with a better idea: clear all the forests and replace them by planting identical copies of Norway spruce (the highest-lumber-yield-per-unit-time tree) in an evenly-spaced rectangular grid. Then you could just walk in with an axe one day and chop down like a zillion trees an hour and have more timber than you could possibly ever want.&lt;/p&gt;

  &lt;p&gt;This went poorly. The impoverished ecosystem couldn’t support the game animals and medicinal herbs that sustained the surrounding peasant villages, and they suffered an economic collapse. The endless rows of identical trees were a perfect breeding ground for plant diseases and forest fires. And the complex ecological processes that sustained the soil stopped working, so after a generation the Norway spruces grew stunted and malnourished. Yet for some reason, everyone involved got promoted, and “scientific forestry” spread across Europe and the world.&lt;/p&gt;

  &lt;p&gt;And this pattern repeats with suspicious regularity across history, not just in biological systems but also in social ones.&lt;/p&gt;

  &lt;p&gt;[…]&lt;/p&gt;

  &lt;p&gt;Suppose you’re a premodern king, maybe one of the Louises who ruled France in the Middle Ages. You want to tax people to raise money for a Crusade or something. Practically everyone in your kingdom is a peasant, and all the peasants produce is grain, so you’ll tax them in grain. Shouldn’t be too hard, right? You’ll just measure how many pints of grain everyone produces, and…&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;The pint in eighteenth-century Paris was equivalent to 0.93 liters, whereas in Seine-en-Montane it was 1.99 liters and in Precy-sous-Thil, an astounding 3.33 liters. The aune, a measure of length used for cloth, varied depending on the material(the unit for silk, for instance, was smaller than that for linen) and across France there were at least seventeen different aunes.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;Okay, this is stupid. Just give everybody evenly-sized baskets, and tell them that baskets are the new unit of measurement.&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;Virtually everywhere in early modern Europe were endless micropolitics about how baskets might be adjusted through wear, bulging, tricks of weaving, moisture, the thickness of the rim, and so on. In some areas the local standards for the bushel and other units of measurement were kept in metallic form and placed in the care of a trusted official or else literally carved into the stone of a church or the town hall. Nor did it end there. How the grain was to be poured (from shoulder height, which packed it somewhat, or from waist height?), how damp it could be, whether the container could be shaken down, and finally, if and how it was to be leveled off when full were subjects of long and bitter controversy.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;Huh, this medieval king business is harder than you thought. Maybe you can just leave this problem to the feudal lords?&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;Thus far, this account of local measurement practices risks giving the impression that, although local conceptions of distance, area, volume, and so on were different from and more varied than the unitary abstract standards a state might favor, they were nevertheless aiming at objective accuracy. This impression would be false. […]&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;http://slatestarcodex.com/2017/03/16/book-review-seeing-like-a-state/&quot;&gt;Just read the review&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-problem-of-political-authority&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/15794037-the-problem-of-political-authority&quot;&gt;The Problem of Political Authority&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I cannot over-rate this book. It’s the best book I’ve read in the last two years, and the implications of reading this book will be with me for the rest of my life.&lt;/p&gt;

&lt;p&gt;As a primer - do you think the “social contract” is a valid entity? If so - read the book. This is also the book that dragged me, kicking and screaming, into a political philosophy of “voluntarism”, or “non-coercion”. (That sounds nicer than anarchism, right?)&lt;/p&gt;

&lt;p&gt;I leave it &lt;a href=&quot;https://www.amazon.com/review/RDM1A17DXD0P5/ref=cm_cr_srp_d_rdp_perm?ie=UTF8&amp;amp;ASIN=1137281650&quot;&gt;to others&lt;/a&gt; to summarize for me.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Finally something that deals with the major thorny issues of political authority, particularly the social contract. The book is incredibly well balanced and deals honestly and directly with opposing theories.&lt;/p&gt;

  &lt;p&gt;It also doesn’t pre-suppose some grand theory that anarchists and libertarians usually assert (as you’d guess by the author of Ethical Intuitionism).&lt;/p&gt;

  &lt;p&gt;For people already “sold” on anarcho-capitalism, the second half of the book (which proposes an alternative solution) is very cursory, but at the same time, the approach from the beginning of the book – of using common sense examples and intuitions to reason about moral and probable solutions and outcomes – is very enlightening.&lt;/p&gt;

  &lt;p&gt;Overall, this is a great book for on-the-fence libertarians, it’s also a great book for non-libertarians since it is so balanced (in considering opposing views), and even for anarcho-capitalists for dealing with major philosophical issues without simple flippant assumptions or remarks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;eating-animals&quot;&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/6604712-eating-animals&quot;&gt;Eating Animals&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;This was not a particularly well-written book, nor did I identify with many of the arguments the author made, but the end result was simple. Kristi and I are skewing hard into the world of vegetarianism.&lt;/p&gt;

&lt;p&gt;I went from eating meat in 100% of my meals to now less than 10%. I’d like to get that number closer to 1%, and will, with time.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;That’s it for the annual review. I’ve got a lot rolling around my head that I look forward to digging into here soon.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My terminal setup</title>
   <link href="https://josh.works/terminal-setup"/>
   <updated>2017-12-26T13:00:00+00:00</updated>
   <id>https://josh.works/setting-up-a-nice-zsh-theme</id>
   <content type="html">&lt;p&gt;&lt;em&gt;note: this is a draft. Please ping me in slack/email with questions, spots where this is unclear. I’ll answer your question, and update this post.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s some quick notes on how I have my terminal setup.&lt;/p&gt;

&lt;p&gt;First, I use Zsh. If you’re on a new Macbook Pro, you also are using Zsh.&lt;/p&gt;

&lt;h2 id=&quot;install-iterm&quot;&gt;Install iTerm&lt;/h2&gt;

&lt;p&gt;If you’re using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Terminal.app&lt;/code&gt;, head to &lt;a href=&quot;https://iterm2.com/index.html&quot;&gt;https://iterm2.com/index.html&lt;/a&gt; and click the “download” button. Install the app.&lt;/p&gt;

&lt;h2 id=&quot;install-oh-my-zsh&quot;&gt;Install &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;oh my zsh&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;Install &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;oh my zsh&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;Head to &lt;a href=&quot;https://ohmyz.sh/&quot;&gt;https://ohmyz.sh/&lt;/a&gt; and follow their installation instructions, which is&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Run the following command in your terminal:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sh -c &quot;$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;edit-zshrc&quot;&gt;Edit ~/.zshrc`&lt;/h2&gt;

&lt;p&gt;Open up &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.zshrc&lt;/code&gt; in Atom. We’ll use it a few times.&lt;/p&gt;

&lt;p&gt;Line 10 or 11, change the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;theme&lt;/code&gt; value to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agnoster&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;github.com/agnoster/agnoster-zsh-theme&quot;&gt;github.com/agnoster/agnoster-zsh-theme&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Head to the repo and follow the installation instructions, which touch on:&lt;/p&gt;

&lt;h3 id=&quot;install-the-patched-solarized-fonts&quot;&gt;Install the Patched Solarized Fonts:&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;github.com/powerline/fonts&quot;&gt;github.com/powerline/fonts&lt;/a&gt;&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# clone
git clone https://github.com/powerline/fonts.git --depth=1
# install
cd fonts
./install.sh
# clean-up a bit
cd ..
rm -rf fonts
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;update-iterm-to-use-one-of-the-new-fonts&quot;&gt;Update iTerm to use one of the new fonts&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Profiles &amp;gt; Text &amp;gt; Font (Meslo LG M DZ for Powerline)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-12 at 1.56 PM.jpg&quot; alt=&quot;iterm settings&quot; /&gt;&lt;/p&gt;

&lt;p&gt;open up this file: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.oh-my-zsh/themes/agnoster.zsh-theme&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or do &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;atom ~/.oh-my-zsh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Atom open up the themes directory, and open up &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agnoster.zsh-theme&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;comment out the existing line that says &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PROMPT&lt;/code&gt; on line 230, and paste in:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;PROMPT=&apos;$(build_prompt) 
&amp;gt; &apos;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Should look like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images_2020/2020-08-12 at 1.50 PM.jpg&quot; alt=&quot;prompt&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://gist.github.com/josh-works/22b3cd2f4cc4abc9458f50c4b47565e2&quot;&gt;Josh’s Zsh Setup instructions from ages ago&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.freecodecamp.org/news/jazz-up-your-zsh-terminal-in-seven-steps-a-visual-guide-e81a8fd59a38/&quot;&gt;Jazz Up Your “ZSH” Terminal In Seven Steps — A Visual Guide&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://duskcloudxu.github.io/2020/03/04/How-to-install-and-use-iterm-and-oh-my-zsh/&quot;&gt;How to install and use iterm and oh-my-zsh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Cultivate Curiosity, or &apos;Reasons to be More Childlike&apos;</title>
   <link href="https://josh.works/cultivate-curiosity-reasons-to-be-more-childlike"/>
   <updated>2017-12-25T13:00:00+00:00</updated>
   <id>https://josh.works/cultivate-curiosity-be-more-childlike</id>
   <content type="html">&lt;p&gt;I’ve had an idea rolling around my head.&lt;/p&gt;

&lt;p&gt;I suspect that “being curious” will correlate well with positive outcomes in my life, on pretty much any time horizon, be it days, weeks, or decades. Curiosity feels like a tolerable antidote to boredom, though boredom in and of itself is something to celebrate and embrace.&lt;/p&gt;

&lt;p&gt;The goal isn’t to &lt;em&gt;not be bored&lt;/em&gt;, it is to &lt;em&gt;not be jaded and closed&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What is “jaded and closed”? I cannot quite define it, but &lt;a href=&quot;https://en.wikipedia.org/wiki/I_know_it_when_I_see_it&quot;&gt;I know it when I see it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I enjoy spending time with people who are both older than me, and people who are just plain old. When they display traits or attitudes that I either want to emulate or want to avoid, I try to reverse engineer what led to that thing I do or don’t want.&lt;/p&gt;

&lt;p&gt;The presence/absence of curiosity has correlated well the presence/absence of other traits I want to emulate.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;This habit seems amenable to practice. I.E. the more you look for (and expect to find) objects, remarks, incidents, thoughts, comments that spark curiosity, the more you find these exact curiosity-sparking… things.&lt;/p&gt;

&lt;p&gt;I’ve encountered objects and phenomena recently that sparked my curiosity. For example:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;an old bridge: How was it constructed? What was it’s general strategy for staying up? (Was it held up by tension or compression? I couldn’t tell)&lt;/li&gt;
  &lt;li&gt;Metal tags nailed to a sidewalk: Were they marking property lines? Underground pipes?&lt;/li&gt;
  &lt;li&gt;a pipe in a basement: it was warm. Obviously it had warm water inside, but I couldn’t tell why. It &lt;em&gt;might&lt;/em&gt; have been a return for a radiant heater, but I wasn’t sure.&lt;/li&gt;
  &lt;li&gt;A phrase someone said. Of all the ways they could have expressed a similar thought, why’d they use that particular phrase?&lt;/li&gt;
  &lt;li&gt;many many more things. (The topic of programming alone could fill books with just questions. Everything from “how the heck do wifi signals not interfere with each other” to “what’s the physics of the millions and billions of calculations a computer does every second to render my favorite cat video?”)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the thing. It would be very, very easy to not find them curious.&lt;/p&gt;

&lt;p&gt;I mean, come on. This is 21st century America! We’ve got real things to worry about, plus smart phones, plus plenty of outrage to marinate in all day. Why be curious about a stupid bridge?&lt;/p&gt;

&lt;p&gt;In a small way, curiosity is a potent antidote to all the mind-numbing attention-stealing crap shoved at us from every corner of the average environment.&lt;/p&gt;

&lt;p&gt;Once I started looking for things to find curious, I found them &lt;em&gt;everywhere&lt;/em&gt;. I’m glad I started looking.&lt;/p&gt;

&lt;p&gt;This extends to people, too. I’ve been apologizing &lt;em&gt;regularly&lt;/em&gt; to people for what will feel like an interrogation, as I start grilling them. My go-to questions:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;What’s a good book you’ve read recently? Why? (If not a good book, a good piece of media. Movie, TV show, documentary, comic book, cartoon, magazine, blog)&lt;/li&gt;
  &lt;li&gt;If you could go back to {current_age - (age * .25)} and give yourself any piece of advice, knowing it was coming from current you, what would it be? Before you tell me the advice, tell me the context. What was going on in your life at the time, etc.&lt;/li&gt;
  &lt;li&gt;What’s something the world has too much of?&lt;/li&gt;
  &lt;li&gt;What’s something you look forward to about aging? What’s something you fear about aging?&lt;/li&gt;
  &lt;li&gt;Are you spiritual, or religious? Why/why not?&lt;/li&gt;
  &lt;li&gt;What’s the hardest thing you’ve faced in the last year?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve asked one or more of these questions of probably more than 100 people. I’ve learned so much from these questions, and follow-up questions. I’ll probably be asking some variation of these questions until the day I die, and that doesn’t trouble me one bit.&lt;/p&gt;

&lt;h2 id=&quot;related-resources&quot;&gt;Related resources&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://blog.robertsj.com/work-and-intellectual-curiosity/&quot;&gt;Naval Ravikant on work and intellectual curiosity&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://arxiv.org/pdf/0812.4360.pdf&quot;&gt;Driven by Compression Progress: A Simple Principle Explains Essential Aspects of Subjective Beauty, Novelty, Surprise, Interestingness, Attention, Curiosity, Creativity, Art, Science, Music, Jokes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.farnamstreetblog.com/2017/09/open-closed-minded/&quot;&gt;The Difference Between Open-Minded and Closed-Minded People&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.farnamstreetblog.com/2013/11/richard-feynman-curiosity/&quot;&gt;It has to do with curiosity&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Setting up for &apos;SQL Queries for Mere Mortals&apos;</title>
   <link href="https://josh.works/setting-up-sql-queries-for-mere-mortals"/>
   <updated>2017-12-22T13:00:00+00:00</updated>
   <id>https://josh.works/sql_queries_for_mere_mortals_setup</id>
   <content type="html">&lt;p&gt;This tweet is from… a while ago. Turns out I didn’t dig into this book, because the pace at Turing didn’t allow for a few weeks of thinking &lt;em&gt;just&lt;/em&gt; about SQL.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;yes, I&amp;#39;m digging into sql to better my AR skills, and ultimately whatever I need to use next. &lt;a href=&quot;https://t.co/UhjyGKv1FQ&quot;&gt;pic.twitter.com/UhjyGKv1FQ&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/856596417095229441?ref_src=twsrc%5Etfw&quot;&gt;April 24, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;I’ve got more time in my life now, and the company I work for makes &lt;em&gt;heavy&lt;/em&gt; use of SQL queries, so I’m spending a little time each day working through this book. The following started as a gist, and I’m putting here, so I can more easily share it with others.&lt;/p&gt;

&lt;h3 id=&quot;why-study-sql&quot;&gt;Why Study SQL&lt;/h3&gt;

&lt;p&gt;Pretty much everything on the internet lives in a database. I figure any boost to my SQL skills will provide outsized returns down the road.&lt;/p&gt;

&lt;p&gt;For example, just &lt;em&gt;today&lt;/em&gt; I used some basic SQL queries to validate an assumption I had about the frequencies of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;null&lt;/code&gt; values in certain places in our database. I wouldn’t have even thought to try that, if I didn’t know in advance what I could do with a basic SQL query.&lt;/p&gt;

&lt;p&gt;If you buy this book, and want to get set up with it’s accompanying data on your own computer, so you can practice yourself and follow along with the book… read on.&lt;/p&gt;

&lt;p&gt;The friction of getting set up kept me from getting started with this book, and I don’t want that to happen to you too. :)
&lt;!--more--&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I’m working on wrapping my head around SQL. Be it MySql, SQLite, PostgreSQL, etc - these are all relational database management tools, and (I assume) they have much in common with each other.&lt;/p&gt;

&lt;p&gt;I’ve got a copy of &lt;a href=&quot;http://www.informit.com/store/sql-queries-for-mere-mortals-a-hands-on-guide-to-data-9780321992475&quot;&gt;SQL Queries for Mere Mortals&lt;/a&gt;, and I plan on spending some time each day over the next ~month working through the lessons.&lt;/p&gt;

&lt;p&gt;Lesson 1 is “setting the damn thing up”. I struggled so much getting it set up, I wrote &lt;a href=&quot;http://www.informit.com/store/sql-queries-for-mere-mortals-a-hands-on-guide-to-data-9780321992475&quot;&gt;this gist&lt;/a&gt; and gave it to a &lt;a href=&quot;https://twitter.com/richthofen&quot;&gt;former coworker/awesome developer&lt;/a&gt; when he offered to help.&lt;/p&gt;

&lt;p&gt;Turns out, he helped me set it up! I got it working!&lt;/p&gt;

&lt;p&gt;And then Turing took over my life, and I stopped studying, then I got a job, and moved machines, and had to start the install from scratch.&lt;/p&gt;

&lt;p&gt;So, I’m writing this guide as if &lt;em&gt;you&lt;/em&gt;, dear reader, wanted to follow along through the book, and needed help getting the “dev environment” set up locally.&lt;/p&gt;

&lt;h2 id=&quot;step-1---install-mysql-on-your-machine&quot;&gt;Step 1 - install MySQL on your machine&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;note: I ended up wiping my entire MySQL local install and instead setting it on Docker. My company uses MySQL 5.6, which is a generation behind the current 5.7, and navigating between the two locally was a massive headache. The rest of this will still work, if you’re good running MySQL 5.7.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I don’t have much help for you here. I struggled hard on this. Turns out I was using Brew to manage MySQL, and that wasn’t playing nice with other tools, so I threw my hands in the air, and did a clean uninstall/re-install of MySQL on my machine.&lt;/p&gt;

&lt;p&gt;I followed &lt;a href=&quot;https://coderwall.com/p/os6woq/uninstall-all-those-broken-versions-of-mysql-and-re-install-it-with-brew-on-mac-mavericks&quot;&gt;these instructions&lt;/a&gt; to remove/reinstall.&lt;/p&gt;

&lt;p&gt;And, the last setup command in the instructions is deprecated. Where it says to use:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;mysql_install_db --verbose --user=`whoami` --basedir=&quot;$(brew --prefix mysql)&quot; --datadir=/usr/local/var/mysql --tmpdir=/tmp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;instead use:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;mysqld -initialize --verbose --user=whoami --basedir=&quot;$(brew --prefix mysql)&quot; --datadir=/usr/local/var/mysql --tmpdir=/tmp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;(The latter came from a comment in the article.)&lt;/p&gt;

&lt;p&gt;In your command line, try to run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mysql&lt;/code&gt;. If it lets you in, great! if not… read on&lt;/p&gt;

&lt;h2 id=&quot;step-11---creating-a-user-for-mysql&quot;&gt;Step 1.1 - creating a user for MySQL&lt;/h2&gt;

&lt;p&gt;I followed the instructions in &lt;a href=&quot;https://stackoverflow.com/a/25728868/3210178&quot;&gt;this StackOverflow post on creating MySQL users&lt;/a&gt; and got it working:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ mysql -u root

mysql&amp;gt; CREATE USER &apos;joshthompson&apos;@&apos;localhost&apos; IDENTIFIED BY &apos;super_secret_password&apos;;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; GRANT ALL PRIVILEGES ON * . * to &apos;joshthompson&apos;@&apos;localhost&apos;;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and now I can connect to the DB by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ mysql -p&lt;/code&gt;. It asks for my password, I enter it, and I’m good to go.&lt;/p&gt;

&lt;h2 id=&quot;step-2---import-sample-date-on-your-machine&quot;&gt;Step 2 - import sample date on your machine&lt;/h2&gt;

&lt;p&gt;I’m using &lt;a href=&quot;https://www.sequelpro.com/&quot;&gt;Sequel Pro&lt;/a&gt; at the moment. I &lt;em&gt;think&lt;/em&gt; you could do this all from the command line, but since I use Sequel Pro for my real job, I want to build familiarity with the tool. (Despite “pro” in the name, the software is free.)&lt;/p&gt;

&lt;p&gt;In Sequel Pro:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;name: Local Development
host: 127.0.0.1
username: your_username
password: your_password
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;click &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;connect&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You should now be connected to a database in Sequel Pro, and you’re ready to import some data.&lt;/p&gt;

&lt;p&gt;The book includes companion data so the reader can practice the queries mentioned in the book. &lt;a href=&quot;http://ptgmedia.pearsoncmg.com/imprint_downloads/informit/bookreg/9780321992475/9780321992475_README.html&quot;&gt;Here’s the readme for the data&lt;/a&gt;. The data itself is in a zip available under the “downloads” section &lt;a href=&quot;http://www.informit.com/store/sql-queries-for-mere-mortals-a-hands-on-guide-to-data-9780321992475#bss6773f413-100c-4ba8-a4a8-9325c9342776&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Sequel Pro, go to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;File &amp;gt; Import&lt;/code&gt;, and navigate to the data you downloaded and unzipped.&lt;/p&gt;

&lt;p&gt;I started small, and imported everything prefixed with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;00&lt;/code&gt;. As far as I can tell, all the files prefixed with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;00&lt;/code&gt; relate to the schema, but not the actual data. If you import one or all of them, you’ll see a very robust schema, with many tables and keys, but no actual content.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/sql_01.jpg&quot; alt=&quot;what the files are/do&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After importing the nine &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;structure&lt;/code&gt; files, you might see something like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/sql_2.jpg&quot; alt=&quot;structure only&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And, after importing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;data&lt;/code&gt; files:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/2C282K29371K/_MySQL_5_7_20__127_0_0_1_SalesOrdersModify_Customers02.jpg&quot; alt=&quot;now with data&quot; /&gt;&lt;/p&gt;

&lt;p&gt;OK! I’m big on getting friction out of the way, and this is helpful. I’ll not touch the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;02&lt;/code&gt; files related to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;views&lt;/code&gt; yet, because &lt;em&gt;i have no idea what those do&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Lets spot check this to make sure it works.&lt;/p&gt;

&lt;p&gt;I’ve got the Third Edition of &lt;em&gt;SQL for Mere Mortals&lt;/em&gt;, published in 2014. I can pop over to page 98, in chapter 4, and run an example query on a given database, to see if it works.&lt;/p&gt;

&lt;p&gt;Here we go…&lt;/p&gt;

&lt;p&gt;The query is (in plain english) “Show me the names of all our vendors”.&lt;/p&gt;

&lt;p&gt;In sql:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;VendName&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Vendors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Easy enough. The only thing to be mindful of seems to be selecting the right database. If the database doesn’t have the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Vendors&lt;/code&gt; table, the query comes up blank. So I jump into one of the databases with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vendors&lt;/code&gt; table, run the above query, and have results! (I ran it against both &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SalesOrdersExample&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SalesOrderModify&lt;/code&gt;, and got the same thing.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/sql_04.jpg&quot; alt=&quot;success&quot; /&gt;&lt;/p&gt;

&lt;p&gt;OK, that does it for now. I’m gonna carry on with my learnings elsewhere, and will update this gist occasionally, as needed.&lt;/p&gt;

&lt;p&gt;The rest of my thinking on MySQL will &lt;em&gt;hopefully&lt;/em&gt; just be on the actual building and executing queries, both as the relate to this book, and things I’m learning/wrestling with on the job.&lt;/p&gt;

&lt;p&gt;Just for fun, and to familiarize myself with the databases and tables, I quickly worked through everything in chapter 4. It’s super basic select stuff from single tables, no joins or groupings or anything.&lt;/p&gt;

&lt;p&gt;Onward!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>On Friction</title>
   <link href="https://josh.works/on-friction"/>
   <updated>2017-12-20T13:00:00+00:00</updated>
   <id>https://josh.works/on-friction</id>
   <content type="html">&lt;p&gt;&lt;em&gt;warning. self-indulgeant diatribe coming. I generally try to avoid these, but it’s my website, and I can write what I want.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We’re rapidly approaching the end of the year, and I’ve got a few dozen ideas rolling around my head that I want to solidify my thoughts on.&lt;/p&gt;

&lt;p&gt;One of the reasons I write these words on this little corner of the internet is simply to clarify my own thinking on a given topic. &lt;a href=&quot;/type-publish-done&quot;&gt;I try to not overthink them&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is known as &lt;a href=&quot;https://en.wikipedia.org/wiki/Rubber_duck_debugging&quot;&gt;rubber duck debugging&lt;/a&gt; and I’ve found it to be &lt;em&gt;enormously&lt;/em&gt; effective.&lt;/p&gt;

&lt;p&gt;I’ve found myself to be often giving the advice of “write more” to people. One of my favorite past-times is helping people get new/better jobs, and a common thread throughout that process is “write something” or “write more”. But in the same breath as I recommend writing as a means to a better job, I underscore that writing has endless value beyond the fairly transactional purpose of demonstrating competence.&lt;/p&gt;

&lt;p&gt;This act (of pen to paper/fingers to keyboard) clarifies your thinking. On anything.&lt;/p&gt;

&lt;p&gt;I’ve been resisting writing because much of my attention is unwillingly drawn to things that frustrate me. (Please reference: politics, marketing). The internet certainly doesn’t need another screed about the injustices of {unjust thing}, and I don’t plan to add another one.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;I’m &lt;em&gt;trying&lt;/em&gt; to choose to spend my attention entirely within the zone of things I can control. I’m trying to reduce my area of awareness down to that which I can control. When my awareness expands far beyond that which I can control, I spend my day angry and frustrated.&lt;/p&gt;

&lt;p&gt;Me being angry and upset at things happening in a realm I cannot control (like politics) wears on those those around me. (Ask my wife about the last time I launched into a monologue about racist zoning policies.)&lt;/p&gt;

&lt;p&gt;The low-friction path in life seems to be outrage, loss of attention, and consumption. (Ads, commercials, billboards, clickbait articles, etc.)&lt;/p&gt;

&lt;p&gt;I don’t want to live &lt;em&gt;that&lt;/em&gt; way, though, so I have to go to great effort to reduce the friction I face in doing more valuable things. If I’m confronted with a choice, in some ways, I’ve already lost. I don’t want to have to make decisions about important and &lt;em&gt;good&lt;/em&gt; things. If they are really important and valuable, I’ll find a way to automate them, or fit them into a system.&lt;/p&gt;

&lt;p&gt;(This is why regular automatic deductions of money from a checking account to an investment account are so powerful. If it’s important, &lt;em&gt;automate it&lt;/em&gt;)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;OK, I get it Josh. Why are you still going on and on about friction, then? Get to the point.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah, great point, provocative voice inside my own head. Good point.&lt;/p&gt;

&lt;p&gt;I’m writing here about reducing friction… to get back in the groove of writing things I want to write about. Writing (and publishing) sometimes feels similar to replying to a long-neglected email in an inbox.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://imgs.xkcd.com/comics/email_reply.png&quot; alt=&quot;I would be honored, but I know I don&apos;t belong in your network. The person you invited was someone who had not yet inflicted this two-year ordeal upon you. I&apos;m no longer that person.&quot; /&gt; &lt;em&gt;Image caption: “I would be honored, but I know I don’t belong in your network. The person you invited was someone who had not yet inflicted this two-year ordeal upon you. I’m no longer that person.”&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I think my these words have helped shepherd my brain towards my point:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I’ve recently spent great effort getting other people to think certain things about me. I was actively job hunting (but not anymore!) AND I was running for city council in Golden. I didn’t realize how much self-censure I was doing throughout that process, so I only wrote a little tiny bit, and at that, it was mostly technical posts.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’m employed, and am not on Golden’s city council, so I can go back to treating these posts as a simple indulgence.&lt;/p&gt;

&lt;p&gt;Ahhh… that feels great.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Quick Dive into React</title>
   <link href="https://josh.works/quick-dive-into-react"/>
   <updated>2017-10-29T13:00:00+00:00</updated>
   <id>https://josh.works/quick-dive-into-react</id>
   <content type="html">&lt;p&gt;&lt;em&gt;As usual, this is a work in progress. At a high level, I’m familiarizing myself with Phoenix/Elixir, and need to sharpen my React knowledge along the way.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After &lt;a href=&quot;_posts/2017-10-28-elixir-phoenix-part-deux.md&quot;&gt;working through part 1&lt;/a&gt; of a &lt;a href=&quot;https://medium.com/@benhansen/lets-build-a-slack-clone-with-elixir-phoenix-and-react-part-1-project-setup-3252ae780a1&quot;&gt;slack clone in Elixir/Phoenix tutorial&lt;/a&gt;, I ran into some errors getting the React app up and running.&lt;/p&gt;

&lt;p&gt;I expect errors, but don’t have enough familiarity with React to effectively debug, so I’m going to take a quick spin through the tool, see what I can quickly learn, and then debug the errors I saw.&lt;/p&gt;

&lt;!--more--&gt;
</content>
 </entry>
 
 <entry>
   <title>Elixir/Phoenix part deux</title>
   <link href="https://josh.works/elixir-phoenix-part-deux"/>
   <updated>2017-10-28T07:18:52+00:00</updated>
   <id>https://josh.works/elixir-phoenix-part-deux</id>
   <content type="html">&lt;p&gt;I planned on working through &lt;a href=&quot;https://medium.com/@benhansen/lets-build-a-slack-clone-with-elixir-phoenix-and-react-part-1-project-setup-3252ae780a1&quot;&gt;this&lt;/a&gt; tutorial for building a slack clone, but half-way through the set-up instructions, after I installed Elixir and Phoenix, I &lt;a href=&quot;_posts/2017-10-27-intro_elixir.md&quot;&gt;took a long detour&lt;/a&gt; through the basic set-up guide. Built some custom routes, along with controllers/views/templates, etc.&lt;/p&gt;

&lt;p&gt;I’m now a bit more comfortable with the basics of the framework and language, so I’ll now be working through the tutorial, and &lt;a href=&quot;https://www.wikiwand.com/en/Rubber_duck_debugging&quot;&gt;Rubber Duck Debugging&lt;/a&gt; by writing about it as I go.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This will be a bit of a work-in-progress. Onward.&lt;/em&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;OK. Basic setup done. Scaffolded the Phoenix and React app, made the &lt;a href=&quot;https://github.com/josh-works/sling_clone&quot;&gt;initial commit&lt;/a&gt;, and we’re cooking with gas.&lt;/p&gt;

&lt;p&gt;The setup is pretty straight forward - a quick note on the &lt;em&gt;React/Redux Boilerplate&lt;/em&gt; section: I’ve had only passing experience with React/Redux, so I might take a detour through some resources for those tools sometime during this tutorial.&lt;/p&gt;

&lt;p&gt;I don’t find much value in blindly following guides without having a good idea of what’s going on. This desire is tempered by me knowing that I cannot absorb everything my first pass, and things will become clear on my third and fourth exposure to a topic that I simply cannot pick up my first or second.&lt;/p&gt;

&lt;p&gt;OK, down to the bottom of the first tutorial section, and the React App is not working as expected. &lt;a href=&quot;https://github.com/josh-works/sling_clone/commit/43084b18f7fb8050c313bf857dc19f65f6ea3d68&quot;&gt;Here’s where I’m at right now&lt;/a&gt;, and while it’s compiling successfully, I’ve got lots of errors:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Broadcast.js:104 Uncaught TypeError: Cannot read property &apos;object&apos; of undefined
    at Object../node_modules/react-broadcast/Broadcast.js (Broadcast.js:104)
    at __webpack_require__ (bootstrap 4fb1954d0e8840de1bbc:669)
    at fn (bootstrap 4fb1954d0e8840de1bbc:87)
    at Object../node_modules/react-broadcast/index.js (index.js:6)
    at __webpack_require__ (bootstrap 4fb1954d0e8840de1bbc:669)
    at fn (bootstrap 4fb1954d0e8840de1bbc:87)
    at Object../node_modules/react-router/Broadcasts.js (Broadcasts.js:12)
    at __webpack_require__ (bootstrap 4fb1954d0e8840de1bbc:669)
    at fn (bootstrap 4fb1954d0e8840de1bbc:87)
    at Object../node_modules/react-router/Link.js (Link.js:13)
    at __webpack_require__ (bootstrap 4fb1954d0e8840de1bbc:669)
    at fn (bootstrap 4fb1954d0e8840de1bbc:87)
    at Object../node_modules/react-router/index.js (index.js:6)
    at __webpack_require__ (bootstrap 4fb1954d0e8840de1bbc:669)
    at fn (bootstrap 4fb1954d0e8840de1bbc:87)
    at Object../src/containers/App/index.js (index.js:11)
    at __webpack_require__ (bootstrap 4fb1954d0e8840de1bbc:669)
    at fn (bootstrap 4fb1954d0e8840de1bbc:87)
    at Object../src/index.js (index.js:7)
    at __webpack_require__ (bootstrap 4fb1954d0e8840de1bbc:669)
    at fn (bootstrap 4fb1954d0e8840de1bbc:87)
    at Object.0 (index.js:11)
    at __webpack_require__ (bootstrap 4fb1954d0e8840de1bbc:669)
    at bootstrap 4fb1954d0e8840de1bbc:715
    at bundle.js:719
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;As I mentioned earlier, I don’t have tons of React experience, so I’m going to go take a quick dive into the world of React. I expect, on the other end, to have a better framework for debugging and understanding the design decisions the tutorial author is making.&lt;/p&gt;

&lt;p&gt;I think part of the challenge is this guide was written in January 2017, or approaching a year ago. React changes quickly, and in Ruby/Rails, I’ve always been able to fill in the info gaps when debugging problems, but React (and Elixir) I’m not yet there.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;/quick-dive-into-react&quot;&gt;Quick pass through React&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>First pass with Elixir/Phoenix</title>
   <link href="https://josh.works/first-pass-elixir-phoenix"/>
   <updated>2017-10-27T07:18:52+00:00</updated>
   <id>https://josh.works/intro_elixir</id>
   <content type="html">&lt;p&gt;I’m digging into Elixir and Phoenix. I’m working through &lt;a href=&quot;https://medium.com/@benhansen/lets-build-a-slack-clone-with-elixir-phoenix-and-react-part-1-project-setup-3252ae780a1&quot;&gt;this tutorial to cloning Slack&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The tutorial author says&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;At the time of writing, I have ~1 week experience with Phoenix. Similar to &lt;a href=&quot;https://www.wikiwand.com/en/Rubber_duck_debugging&quot;&gt;Rubber Ducky Debugging&lt;/a&gt;, I am writing this blog post to force myself to think differently about the problems I am solving and therefore gain a better understanding of the language and framework.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Couldn’t agree more myself. This post serves as &lt;em&gt;my&lt;/em&gt; Rubber Ducky Debugging process for getting started with Elixir/Phoenix.&lt;/p&gt;

&lt;p&gt;Similar to the author, I come from a Ruby/Rails background, but undoubtedly less experienced than the author. So, this article will capture tidbits and pieces useful to me as I work through the tutorial.&lt;/p&gt;

&lt;p&gt;I’m &lt;a href=&quot;/learning-how-to-learn&quot;&gt;intentional in how I learn&lt;/a&gt;, as well as in &lt;a href=&quot;/better-questions&quot;&gt;how I ask questions&lt;/a&gt;, so this is just me, doing what I do, to learn things.&lt;/p&gt;

&lt;p&gt;Onward!&lt;/p&gt;

&lt;h1 id=&quot;installing-elixir-and-phoenix&quot;&gt;Installing Elixir and Phoenix&lt;/h1&gt;

&lt;p&gt;Installation is super easy.&lt;/p&gt;

&lt;p&gt;The recommended tutorials + some clicking around was all I needed. Brew handled most of it, and &lt;a href=&quot;https://elixir-lang.org/install.html&quot;&gt;elixir-lang’s installation guide&lt;/a&gt; pairs well with &lt;a href=&quot;https://hexdocs.pm/phoenix/installation.html&quot;&gt;the same for phoenix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I just &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd&lt;/code&gt;‘ed into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;workspace/elixir&lt;/code&gt; (where my otherwise homeless bits of code lives) and test-drove Phoenix’s equivalent of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails new&lt;/code&gt;. I’m taking a quick detour through &lt;a href=&quot;https://hexdocs.pm/phoenix/up_and_running.html&quot;&gt;this guide&lt;/a&gt; at the moment.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OK, it was more than a quick detour. The rest of this post is me familiarizing myself with the above guide. Read &lt;a href=&quot;/elixir-phoenix-part-deux&quot;&gt;Elixir/Phoenix part deux&lt;/a&gt; for more&lt;/em&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ mix phx.new hellow&lt;/code&gt; gives us a bunch of output, and eventually a new project.&lt;/p&gt;

&lt;p&gt;(I tend to intentionally misspell variables and such when following tutorials - helps me detangle the language/framework’s nomenclature from my own, and tunes me in a bit closer to ways to make errors. So, this project is named “hellow”, and any further code snippets will reflect that. Be wary, this strategy has led me into more than a little debugging as I walk through tutorials. But I come out stronger on the other end…)&lt;/p&gt;

&lt;p&gt;The directory structure looks familiar:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;.
├── README.md
├── _build
├── assets
├── config
├── deps
├── lib
├── mix.exs
├── mix.lock
├── priv
└── test
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;deps&lt;/code&gt; is foreign to me, though. Inside of that directory is a bunch of other directories, all looking greek to me.&lt;/p&gt;

&lt;p&gt;Poking around a bit, I’m seeing files with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.ex&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.exs&lt;/code&gt; extensions. &lt;a href=&quot;https://stackoverflow.com/questions/36292620/elixir-when-to-use-ex-and-when-exs-files&quot;&gt;StackOverflow&lt;/a&gt; says &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.ex&lt;/code&gt; is for “compiled” Elixir code, while &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.exs&lt;/code&gt; is “scripting” Elixir code. Elixir is my first brush with a functional programming language, which is &lt;em&gt;also&lt;/em&gt; my first exposure to compiled languages, so I’m putting a flag in this as Significant.&lt;/p&gt;

&lt;p&gt;Ah, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.eex&lt;/code&gt; is “embedded Elixir”, or in my Rails-centric background “elixir’s version of embedded ruby/.erb”. Good, because no one wants to write raw HTML.&lt;/p&gt;

&lt;p&gt;If Elixir doesn’t have some version of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pry&lt;/code&gt;, I’m going to be sad.&lt;/p&gt;

&lt;p&gt;Per the instructions, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ mix ecto.create&lt;/code&gt;, a few missing dependencies (say &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Y&lt;/code&gt;), and&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;=&amp;gt; The database for Hellow.Repo has been created
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Wahoo.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ mix phx.server&lt;/code&gt; seems to be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails server&lt;/code&gt;. So handy having a mental framework to hang new info on.&lt;/p&gt;

&lt;p&gt;A quick check of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;localhost:4000&lt;/code&gt; and we’re in business:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2017-10-27-elixir_01.jpg&quot; alt=&quot;terminal goodies + localhost&quot; /&gt;&lt;/p&gt;

&lt;p&gt;On to &lt;a href=&quot;https://hexdocs.pm/phoenix/adding_pages.html&quot;&gt;part 2&lt;/a&gt; of the intro guide:&lt;/p&gt;

&lt;p&gt;The writeup mentions that most of our work will live in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/lib&lt;/code&gt; directory&lt;/p&gt;

&lt;p&gt;Lots of interesting stuff that seems quite familiar after working with a MVC model, but we’ll dig into it all later.&lt;/p&gt;

&lt;h1 id=&quot;routes&quot;&gt;Routes&lt;/h1&gt;

&lt;p&gt;Ah, routes. Makes me nostalgic for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;config/routes.rb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Elixir’s equivalent lives in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hellow/lib/hellow_web/router.ex&lt;/code&gt;, which we know is a compiled file (I think?).&lt;/p&gt;

&lt;p&gt;By default, it looks pretty manageable:&lt;/p&gt;

&lt;div class=&quot;language-elixir highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;defmodule&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HellowWeb&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Router&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HellowWeb&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:router&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;pipeline&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:browser&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;plug&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:accepts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;html&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;plug&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:fetch_session&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;plug&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:fetch_flash&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;plug&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:protect_from_forgery&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;plug&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:put_secure_browser_headers&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;pipeline&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:api&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;plug&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:accepts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;json&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;scope&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HellowWeb&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;pipe_through&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:browser&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# Use the default browser stack&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;PageController&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:index&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;As soon as seeing the reference to PageController, I had to see if there was an associated test.&lt;/p&gt;

&lt;p&gt;Ah, software. It even reads just like RSpec. :)&lt;/p&gt;

&lt;div class=&quot;language-elixir highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# test/hellow_web/controllers/page_controller_test.exs&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;defmodule&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HellowWeb&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;PageControllerTest&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HellowWeb&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ConnCase&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;test&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;GET /&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;%{&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;conn:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/&quot;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;html_response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=~&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Welcome to Phoenix!&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;testing&quot;&gt;Testing&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;We interrupt current programming to figure out how to run tests in Elixir&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Looks like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Mix&lt;/code&gt; is an Elixir build tool. We’ll be using it a lot.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ExUnit&lt;/code&gt; seems to be Elixir’s test-unit framework. AKA RSpec/Minitest. (&lt;a href=&quot;https://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html&quot;&gt;source&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;And &lt;a href=&quot;https://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html#running-tests&quot;&gt;tests&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looks like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ mix test&lt;/code&gt; does it.&lt;/p&gt;

&lt;p&gt;Holy cow… There’s a ton of deprecation warnings and the test took ages. (Er, it passed by the way. )&lt;/p&gt;

&lt;p&gt;Looks like this is a &lt;a href=&quot;https://www.bountysource.com/issues/43427732-fix-elixir-1-5-deprecation-warnings&quot;&gt;new and fixed issue&lt;/a&gt;, so the recommended fix is to use a more recent version of &lt;a href=&quot;https://github.com/devinus/poison&quot;&gt;poison&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Jumping into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mix.exs&lt;/code&gt; (aka Rail’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Gemfile&lt;/code&gt;), adding the newest version of poison:&lt;/p&gt;

&lt;div class=&quot;language-elixir highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;defp&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;deps&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:poison&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 3.1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:phoenix&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 1.3.0&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
      &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and updating dependencies:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ mix deps.get&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and lets run the tests again:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ mix test&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Ah, lovely. No more dependency problems.&lt;/p&gt;

&lt;p&gt;Two other notable events, though - I think the first time I ran the tests, Mix had a ton of compiling to do.&lt;/p&gt;

&lt;p&gt;This is the output from the first test run:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# all of the many deprecation warnings removed&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; connection
Compiling 1 file &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated connection app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; gettext
Compiling 1 file &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.erl&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Compiling 20 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated gettext app
&lt;span class=&quot;o&quot;&gt;===&amp;gt;&lt;/span&gt; Compiling ranch
&lt;span class=&quot;o&quot;&gt;===&amp;gt;&lt;/span&gt; Compiling poolboy
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; decimal
Compiling 1 file &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated decimal app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; poison
Generated poison app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; db_connection
Compiling 23 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated db_connection app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; phoenix_pubsub
Compiling 12 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated phoenix_pubsub app
&lt;span class=&quot;o&quot;&gt;===&amp;gt;&lt;/span&gt; Compiling cowlib
&lt;span class=&quot;o&quot;&gt;===&amp;gt;&lt;/span&gt; Compiling cowboy
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; mime
Compiling 1 file &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated mime app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; plug
Compiling 1 file &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.erl&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Compiling 44 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated plug app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; phoenix_html
Compiling 8 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated phoenix_html app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; phoenix
Compiling 74 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated phoenix app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; postgrex
Compiling 62 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated postgrex app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; ecto
Compiling 70 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated ecto app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; phoenix_ecto
Compiling 6 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated phoenix_ecto app
&lt;span class=&quot;o&quot;&gt;==&amp;gt;&lt;/span&gt; hellow
Compiling 16 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated hellow app
....

Finished &lt;span class=&quot;k&quot;&gt;in &lt;/span&gt;0.1 seconds
4 tests, 0 failures

Randomized with seed 769269
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The second time I ran it, not only were there no deprecation warnings, there was basically no set-up:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;mix &lt;span class=&quot;nb&quot;&gt;test
&lt;/span&gt;Compiling 16 files &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.ex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Generated hellow app
....

Finished &lt;span class=&quot;k&quot;&gt;in &lt;/span&gt;0.06 seconds
4 tests, 0 failures

Randomized with seed 608206
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;OK, again, I feel like all the setup steps are Significant, but don’t yet know why.&lt;/p&gt;

&lt;p&gt;Onward!&lt;/p&gt;

&lt;h2 id=&quot;back-to-routesrouting&quot;&gt;Back to Routes/Routing&lt;/h2&gt;

&lt;p&gt;Lets add:&lt;/p&gt;

&lt;div class=&quot;language-elixir highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;scope&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HellowWeb&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;pipe_through&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:browser&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# Use the default browser stack&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;PageController&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:index&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/hello&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HellowController&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:index&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# Adding this bad boy&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When visiting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;localhost:4000/hello&lt;/code&gt;, we get a very Rails-esque error code, saying “I cannot find the controller you’re asking for”. Which is great, because &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HellowController&lt;/code&gt; doesn’t exist.&lt;/p&gt;

&lt;h3 id=&quot;a-new-controller&quot;&gt;A new Controller&lt;/h3&gt;

&lt;p&gt;Jumping in to make a new controller file moves us along in error-driven development (EDD):&lt;/p&gt;

&lt;div class=&quot;language-elixir highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# lib/hellow_web/controllers/hellow_controller.ex&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;defmodule&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HellowWeb&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;HellowController&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HellowWeb&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:controller&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;render&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;index.html&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And we get:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;UndefinedFunctionError at GET /hello
function HellowWeb.HellowView.render/2 is undefined (module HellowWeb.HellowView is not available)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perfect. We are (I suspect) calling a non-existent file to render stuff to the browser. Phoenix complains.&lt;/p&gt;

&lt;h3 id=&quot;a-new-view&quot;&gt;A new View&lt;/h3&gt;

&lt;p&gt;I put together a quick view, templated off an existing view, and for the first time my MVC background failed me. I assumed views would be for presentation, but it seems like Views in Phoenix are more analagous to Models in Rails.&lt;/p&gt;

&lt;p&gt;There’s a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/templates&lt;/code&gt; directory that contains presentation-related data, so I’ll just run with “view == models” for now.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Phoenix views have several important jobs. They render templates. They also act as a presentation layer for raw data from the controller, preparing it for use in a template. Functions which perform this transformation should go in a view. (&lt;a href=&quot;https://hexdocs.pm/phoenix/adding_pages.html#a-new-view&quot;&gt;hexdocks&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;templates&quot;&gt;Templates&lt;/h3&gt;

&lt;p&gt;Ah, interesting. As soon as I created &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lib/hellow_web/templates/hellow/index.html.eex&lt;/code&gt;, the errors in Mix went away, and I’m now loading an empty page.&lt;/p&gt;

&lt;p&gt;(Even though the file is empty)&lt;/p&gt;

&lt;p&gt;So, Phenix has live code-reloading (when I made the file, I saw the logs from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mix phx.server&lt;/code&gt; show compiling and rendering data. The red went away.)&lt;/p&gt;

&lt;p&gt;Also, the view is obviously embedded inside of an application layout, because the header/footer/things-that-make-HTML-work-on-the-internet kicked in and rendered my three lines of HTML.&lt;/p&gt;

&lt;p&gt;A quick peek at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lib/hellow_web/templates/layout/app.html.eex&lt;/code&gt;, and it’s almost indistinguishable from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;app/views/layouts/application.html.erb&lt;/code&gt; in Rails.&lt;/p&gt;

&lt;h3 id=&quot;a-second-new-page&quot;&gt;A second new page&lt;/h3&gt;

&lt;p&gt;The universally sound advice for education and training applies here quite well:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Do it again, faster&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, I did a quick trip through &lt;a href=&quot;https://hexdocs.pm/phoenix/adding_pages.html#another-new-page&quot;&gt;adding another page&lt;/a&gt;, to do a standard “handle a dynamic URL and present the value from the URL in the browser”. This is like the “hello world” of dynamic routing.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;That’s the end of the tiny “getting started” tutorial. I’m ending this post here, and will continue with the slack clone in &lt;a href=&quot;/elixir-phoenix-part-deux&quot;&gt;part 2&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Blocks and Closures in Ruby</title>
   <link href="https://josh.works/blocks_and_closures"/>
   <updated>2017-09-26T00:00:00+00:00</updated>
   <id>https://josh.works/blocks_and_closures_in_ruby</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Continuing on from &lt;a href=&quot;/metaprogramming-method-missing-01&quot;&gt;yesterday’s post about &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;method_missing&lt;/code&gt;&lt;/a&gt;, I’m moving on to a part of Ruby’s language that has been a bit of a mystery for me for quite some time. I’m still working through &lt;a href=&quot;https://www.amazon.com/Metaprogramming-Ruby-Program-Like-Facets/dp/1941222129&quot;&gt;Metaprogramming in Ruby&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It’s the concept of &lt;em&gt;lambdas&lt;/em&gt;, &lt;em&gt;procs&lt;/em&gt;, &lt;em&gt;blocks&lt;/em&gt;, and more. I also hope to better understand &lt;em&gt;closures&lt;/em&gt;, and perhaps even some aspects of functional programming, as I’m used to (so far) thinking in OOP approaches.&lt;/p&gt;

&lt;p&gt;I expect my first pass to be rocky, but to also lay a foundation for better understanding later. I’m writing this out because &lt;a href=&quot;/learning-how-to-learn&quot;&gt;this is how I learn&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;yield&quot;&gt;yield&lt;/h2&gt;

&lt;p&gt;First new term: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yield&lt;/code&gt;. &lt;a href=&quot;https://ruby-doc.org/core-2.4.2/Proc.html#method-i-yield&quot;&gt;(docs)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is always related to passing blocks around (to methods, or other blocks, procs, etc). I think lots of what we do with blocks interacts with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yield&lt;/code&gt; function, but it gets called behind the scenes. (Sorta how &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;initialize&lt;/code&gt; calls, among other things, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;new&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;you can call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yield&lt;/code&gt; from inside a method to see any block passed to it. You can also call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;block_given?&lt;/code&gt; to see if there’s a block floating around anywhere.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;a_method&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;yield&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;block_given?&lt;/span&gt;
  &lt;span class=&quot;s1&quot;&gt;&apos;no block&apos;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;a_method&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;no block&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;a_method&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;look at me, I&apos;m a block&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;look at me, I&apos;m a block&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;a_method&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&quot;i&apos;m inside a do..end block&quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;i&apos;m inside a do..end block&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;!--more--&gt;

&lt;p&gt;Enough on yielding.&lt;/p&gt;

&lt;h2 id=&quot;blocks-are-closures&quot;&gt;Blocks are closures&lt;/h2&gt;

&lt;p&gt;So, what is a closure? Great question…&lt;/p&gt;

&lt;p&gt;A block requires an environment to run inside of. An orphaned &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;do..end&lt;/code&gt; block doesn’t make sense.&lt;/p&gt;

&lt;p&gt;The environment the block runs inside of has local variables, instance variables, a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;self&lt;/code&gt;, etc. (I’m copying heavily from &lt;em&gt;Metaprogramming Ruby 2&lt;/em&gt; here.) These variables are sometimes referred to as &lt;em&gt;bindings&lt;/em&gt;. A block that has bindings is ready to run.&lt;/p&gt;

&lt;p&gt;A block, with it’s given bindings (which relate to its &lt;em&gt;scope&lt;/em&gt;), is known as a &lt;em&gt;closure&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I don’t yet know why&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It seems like it’s tricky for blocks to gain access to variables outside of their immediate context/scope.&lt;/p&gt;

&lt;p&gt;To pass scopes around, you have to get past “Scope Gates”, which is anything ruby method that starts with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;module&lt;/code&gt;, or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;def&lt;/code&gt;. You might think to yourself “that’s all of them.”&lt;/p&gt;

&lt;p&gt;To sneak a binding through a scope gate, you’ll have to use a block.&lt;/p&gt;

&lt;p&gt;Compare:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;my_var&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;success&quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MyClass&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;my_var&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot; from myClass&quot;&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# can we access my_var from here?&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;my_method&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;my_var&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot; from my_method&quot;&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# ... or here?&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# womp womp. run the code, and receive:&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# blocks_practice.rb:15:in `&amp;lt;class:MyClass&amp;gt;&apos;: undefined local variable or method `my_var&apos; for MyClass:Class (NameError)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;(you cannot access &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;my_var&lt;/code&gt; inside of the class or method. Those methods start with the scope-gated phrase &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;def&lt;/code&gt;)&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;my_var&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;success&quot;&lt;/span&gt;

&lt;span class=&quot;no&quot;&gt;MyClass&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Class&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# we can access my_var from here!&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;my_var&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; from myClass&quot;&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;my_method&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# ... but not from here&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;my_var&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; from my_method&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# MyClass.new.my_method&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# NameError: undefined local variable or method `my_var&apos; for #&amp;lt;MyClass:0x007f98c93f0980&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;my_var&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;success&quot;&lt;/span&gt;

&lt;span class=&quot;no&quot;&gt;MyClass&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Class&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# we can access my_var from here!&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;my_var&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; from myClass&quot;&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;define_method&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:my_method&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# ... but not from here&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;my_var&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; from my_method&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# MyClass.new.my_method&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# =&amp;gt; &quot;success from my_method&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I feel like there’s something important here, but I don’t yet know what it is. But I’m not worrying about it - this is my first trip through closures in Ruby, and I’m only half way through the chapter!&lt;/p&gt;

&lt;p&gt;Per how I &lt;a href=&quot;/learning-how-to-learn&quot;&gt;like to learn&lt;/a&gt;, I’m going to dig into some associated guides/tutorials for the concept of closures in Ruby. I know it’s tied to functional programming, and I think it’ll be useful to me to wrap my head around the idea.&lt;/p&gt;

&lt;h2 id=&quot;further-reading&quot;&gt;Further reading&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/2191632/begin-rescue-and-ensure-in-ruby&quot;&gt;Begin, Rescue and Ensure in Ruby? (StackOverflow)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://blog.newrelic.com/2014/12/10/weird-ruby-2-rescue-interrupt-ensure/&quot;&gt;Weird Ruby Part 2: Exceptional Endurance (New Relic)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.sitepoint.com/closures-ruby/&quot;&gt;Closures in Ruby (Site Point)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://scotch.io/tutorials/understanding-ruby-closures&quot;&gt;Understanding Ruby Closures (scotch.io)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Metaprogramming in Ruby: method_missing</title>
   <link href="https://josh.works/metaprogramming-method-missing-01"/>
   <updated>2017-09-24T00:00:00+00:00</updated>
   <id>https://josh.works/ruby-metaprogramming-01</id>
   <content type="html">&lt;p&gt;I’m working through &lt;a href=&quot;https://www.amazon.com/Metaprogramming-Ruby-Program-Like-Facets/dp/1941222129&quot;&gt;Metaprogramming in Ruby&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s a great read. There are examples in the books, but I wanted to take them out and apply them to some easy &lt;a href=&quot;http://exercism.io/&quot;&gt;Exercisms&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I feel some disclosure may be useful. &lt;em&gt;In no way, at all, should you ever implement any of the “solutions” I’m exploring here. I’m intentionally breaking things and doing them wrong to grow my understanding of how Ruby works.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you’re following along, I’m doing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hamming_test.rb&lt;/code&gt; Exercism. It’s got a few tests. Here’s the first one:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# hamming_test.rb&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# ...&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_identical_strands&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;assert_equal&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Hamming&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;compute&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;A&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;A&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# ...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;my working solution (in regular, non-metaprogramming ruby), is:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# hamming.rb&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# ...&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;compute&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;string1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;string2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ArgumentError&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;string1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;string2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;string1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each_with_index&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;string2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# ...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It’s a simple class method, takes two arguments, and even has an enumerable anti-pattern of using a counter outside the loop. This solution of mine is many months old, I’m not going to refactor that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#each_with_index&lt;/code&gt; method. I know it’s itching for a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#reduce&lt;/code&gt;, but let’s metaprogram it instead.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;I’m going to implement a ‘method_missing’ metaprogramming approach. I’m going to experiment with how Ruby throws “method missing” errors, and try to creatively break it.&lt;/p&gt;

&lt;h3 id=&quot;my-constraints&quot;&gt;My Constraints&lt;/h3&gt;

&lt;p&gt;I want to make all of the tests pass without using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;::compute&lt;/code&gt; anywhere, and without modifying &lt;a href=&quot;https://gist.github.com/josh-works/aaaf1a65f9d60c602f91f5b21dc38c82&quot;&gt;the test file&lt;/a&gt; at all.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# hamming.rb&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Hamming&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;method_missing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;method&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# `method` will be anything I want it to be&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# args is just an array of any given arguments&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;With the above snippet, you can jump into a Pry or IRB session and require the file (enter &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ pry -r ./hamming.rb&lt;/code&gt; in your terminal to open the file in a Pry session…) and enter the following:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hamming.compute(&apos;A&apos;, &apos;A&apos;)
=&amp;gt; :compute
=&amp;gt; [&quot;A&quot;, &quot;A&quot;]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;When you call a method on an object, Ruby looks up the “inheritance chain” all the way to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BasicObject&lt;/code&gt;. To see what the inheritance chain is for our &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Hamming&lt;/code&gt; class, try:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hamming.ancestors
=&amp;gt; [Hamming, Object, Kernel, BasicObject]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When you call a method that isn’t part of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Hamming&lt;/code&gt; class, Ruby will look to see if it exists in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Object&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Kernel&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BasicObject&lt;/code&gt;. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BasicObject&lt;/code&gt; has a private method called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;method_missing&lt;/code&gt; (&lt;a href=&quot;https://ruby-doc.org/core-2.4.2/BasicObject.html#method-i-method_missing&quot;&gt;method_missing docs&lt;/a&gt;), and will call it on whatever object started the whole fiasco. In this case, it will be called on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Hamming&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;method_missing&lt;/code&gt; yourself:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hamming.send(:method_missing, :imaginary_method)
NoMethodError: undefined method `imaginary_method&apos; for Hamming:Class
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;send&lt;/code&gt; does a few things, but one of them is lets you call private methods. Useful, since &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;method_missing&lt;/code&gt; is a private method.&lt;/p&gt;

&lt;p&gt;Now, this gets us some of the way to a solution.&lt;/p&gt;

&lt;p&gt;I can simply re-label my method, make a few changes to pluck the first and second arguments from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;args&lt;/code&gt;, and I’m in business:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Hamming&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;method_missing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ArgumentError&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each_with_index&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Since the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Hamming&lt;/code&gt; class doesn’t have a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;compute&lt;/code&gt; method, when my test file calls this non-existent method, it eventually ends up with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BasicObject&lt;/code&gt; calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;method_missing&lt;/code&gt;, which I’ve now over-ridden to give me this particular output.&lt;/p&gt;

&lt;p&gt;A very obvious problem is now &lt;em&gt;every&lt;/em&gt; method that I might call that doesn’t exist will get passed into this replacement &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;compute&lt;/code&gt; method, and will return all sorts of errors.&lt;/p&gt;

&lt;p&gt;For example, the following method calls all give the same error:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Hamming.compute()
Hamming.c
Hamming.why_wont_you_work

=&amp;gt; NoMethodError: undefined method `length&apos; for nil:NilClass
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Fortunately, we can add one more element to “scope” the kind of missing method errors we’re intercepting. That would aid future developers who won’t be quite as flummoxed by this random error code.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;method_missing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;super&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;unless&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%w[compute]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;include?&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ArgumentError&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# ...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;super&lt;/code&gt; (&lt;a href=&quot;https://ruby-doc.org/docs/keywords/1.9/files/keywords_rb.html#M000034&quot;&gt;docs&lt;/a&gt;) passes the call along to the parent object if certain conditions are/are not met. In this case, we’re passing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;method_missing&lt;/code&gt; call up the inheritance chain &lt;em&gt;unless&lt;/em&gt; the method matches a list we give it.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;This passes all the tests! It’s horrible code, but was an educational journey for me.&lt;/p&gt;

&lt;p&gt;Oh, and lets just switch to a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#reduce&lt;/code&gt; real quick. My eye is twitching:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Hamming&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;method_missing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;super&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;unless&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%w[compute]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;include?&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_s&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ArgumentError&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each_with_index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;reduce&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There. Slightly better.&lt;/p&gt;

&lt;p&gt;That’s it for now. A small journey into one metaprogramming concept. More soon!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The How and Why of BlockValue</title>
   <link href="https://josh.works/block-value"/>
   <updated>2017-09-14T00:00:00+00:00</updated>
   <id>https://josh.works/block_value_app</id>
   <content type="html">&lt;p&gt;I wrote the following post, and built the application in question, in 2017, in my “end of Turing” project, before I’d ever been hired as a software developer.&lt;/p&gt;

&lt;p&gt;I really enjoyed the app that I built, and I keep wanting to get around to cleaning it up and making it work again. Maybe sometime soon!&lt;/p&gt;

&lt;hr /&gt;

&lt;ul&gt;
  &lt;li&gt;👉 &lt;a href=&quot;https://github.com/josh-works/block_value&quot;&gt;View the github repo&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;👉 &lt;a href=&quot;https://block-value.herokuapp.com/&quot;&gt;view the app on Heroku (currently broken)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve been sketching out an app that “crowdsources” GIS data.&lt;/p&gt;

&lt;p&gt;According to &lt;a href=&quot;https://en.wikipedia.org/wiki/Geographic_information_system&quot;&gt;Wikipedia&lt;/a&gt;,&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A geographic information system (GIS) is a system designed to capture, store, manipulate, analyze, manage, and present spatial or geographic data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My inspiration is &lt;a href=&quot;https://hoodmaps.com&quot;&gt;Hoodmaps&lt;/a&gt;, which &lt;a href=&quot;https://twitter.com/levelsio&quot;&gt;@levelsio&lt;/a&gt; kindly wrote an &lt;a href=&quot;https://levels.io/hoodmaps/&quot;&gt;in-depth post about&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Armed with a solid example for something that I thought I could work with, I got to work.&lt;/p&gt;

&lt;h1 id=&quot;the-problem&quot;&gt;The problem&lt;/h1&gt;

&lt;p&gt;In general, property delivers value to people by doing &lt;em&gt;something&lt;/em&gt;. It can do all sorts of things, but my first pass was to try to figure out the relationship between buildings and parking lots. Eventually I realized I needed to be able to “tag”:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;parking lots&lt;/li&gt;
  &lt;li&gt;buildings&lt;/li&gt;
  &lt;li&gt;green space (useful)&lt;/li&gt;
  &lt;li&gt;legally required but otherwise useless green space (building setbacks)&lt;/li&gt;
  &lt;li&gt;streets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and maybe more some day.&lt;/p&gt;

&lt;p&gt;I’ve got a working hypothesis that we’ve built our cities based off of some insane rules, one of which being “lets put surface parking lots &lt;em&gt;everywhere&lt;/em&gt;.”&lt;/p&gt;

&lt;p&gt;I contend that a surface parking lot close to an economically productive stretch of property (like a walkable downtown) is a very poor use of resources.&lt;/p&gt;

&lt;p&gt;Lets look at a quick example from my home town, Golden, CO:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-09-14-not-annotated.jpg&quot; alt=&quot;Downtown golden&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hm. Doesn’t reveal too much, does it?&lt;/p&gt;

&lt;p&gt;Maybe it would be nice if we could color-code the map by land use?&lt;/p&gt;

&lt;h1 id=&quot;the-solution&quot;&gt;The solution&lt;/h1&gt;

&lt;p&gt;Lets take another look, through the lens of crowd-sourced GIS data:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-09-14-BlockValue.jpg&quot; alt=&quot;Red is parking, blue is building&quot; /&gt;
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Red is parking lots, blue is buildings. This is downtown Golden, or almost everything that everyone loves about downtown is blue, and the red stuff is (again, just my opinion) counter-productive.&lt;/p&gt;

&lt;p&gt;The concept of this app is dead-simple. Almost paint-by-numbers so.&lt;/p&gt;

&lt;p&gt;It’s still a bit clunky to use, but here’s the gist:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-09-14Screen Recording 2017-09-14 at 04.03 PM.gif&quot; alt=&quot;Painting on the map&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;the-technology&quot;&gt;The technology&lt;/h1&gt;

&lt;p&gt;It’s a pretty simple tech stack, but the devil is in the details.&lt;/p&gt;

&lt;p&gt;On the front-end, I’ve got a transparent HTML5 canvas overlaid on a Google Maps satellite layer.&lt;/p&gt;

&lt;p&gt;To draw on the map, the user is just painting on the HTML5 canvas.&lt;/p&gt;

&lt;p&gt;That was the easy point. Harder is the fact that I have to store this user data, which is coming from the HTML5 canvas as just X and Y coordinates relative to the edge of the screen.&lt;/p&gt;

&lt;p&gt;Fortunately, StackOverflow to the rescue. I got two functions to convert a Lat/Long coordinates to a point on a map, and back again.&lt;/p&gt;

&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// convert position on map to coordinates&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;latLng2Point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;latLng&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;topRight&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getProjection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fromLatLngToPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getBounds&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getNorthEast&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;bottomLeft&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getProjection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fromLatLngToPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getBounds&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getSouthWest&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;scale&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;pow&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getZoom&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;worldPoint&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getProjection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fromLatLngToPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;latLng&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;google&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;maps&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;worldPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;bottomLeft&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;worldPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;topRight&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;point2LatLng&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;topRight&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getProjection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fromLatLngToPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getBounds&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getNorthEast&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;bottomLeft&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getProjection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fromLatLngToPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getBounds&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getSouthWest&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;scale&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;pow&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getZoom&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;worldPoint&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;google&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;maps&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;scale&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;bottomLeft&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;scale&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;topRight&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getProjection&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fromPointToLatLng&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;worldPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;A bit of tweaking got those working for my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;drawUserPaths&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;drawSh*t&lt;/code&gt; functions.&lt;/p&gt;

&lt;p&gt;Every time the user draws a path, an AJAX call fires, sending&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UserPaths&lt;/code&gt; (these are the user data containing the color, size, and location of what the user is drawing) to my server.&lt;/p&gt;

&lt;p&gt;It’s hard to draw closed paths on top of HTML5 canvas. These screenshots make it look like someone is drawing a continuous line, but there’s not. Here’s what a quick mouse movement looks like:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-09-14Screen Recording 2017-09-14 at 04.26 PM.gif&quot; alt=&quot;drawing paths&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here’s my “draw stuff” function:&lt;/p&gt;

&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;drawPath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;mouseDown&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;width&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;innerWidth&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;height&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;innerHeight&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;fillStyle&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;currentColor&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;strokeStyle&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;currentColor&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;lineWidth&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;brushSize&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;offsetX&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;offsetX&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;offsetY&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;offsetY&lt;/span&gt;

  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;isDrawing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;points&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;points&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;offsetX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;offsetY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;category&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;clearRect&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

  &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;beginPath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;moveTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;points&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;points&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;for &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;points&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;lineTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;points&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;points&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;nx&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;stroke&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;point&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;offsetX&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;offsetY&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;positionOnMap&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;point2LatLng&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;category&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;.color-picker div.active&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;category&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;lat&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;positionOnMap&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;lat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;lng&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;positionOnMap&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;lng&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;sizeRatio&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;brushSize&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;zoom&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;userPaths&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;coords&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;lat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;lng&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;category&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;category&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;user_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;userId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;size_ratio&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;sizeRatio&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;line_count&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;lineCount&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The “business” is the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ctx.beginPath()&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ctx.stroke()&lt;/code&gt; portions. HTML5 seems to think well in points, not in “paths”. So, if I want to be able to draw a continuous path, there’s some very tricky business around connecting many points. I left that for a later day, so for now - everyone is drawing overlapping circles. Bleh.&lt;/p&gt;

&lt;p&gt;When the user moves the map, another AJAX calls fires, retrieving the server data.&lt;/p&gt;

&lt;p&gt;(There are some hefty problems in this process. I’ll get to the “what’s next” below)&lt;/p&gt;

&lt;p&gt;The data’s stored in a standard PostGres Database. Watching the logs when others were using it was fun:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;TFW people are using your app b/c it looks like Postgres is blowing up. 😱 &lt;a href=&quot;https://t.co/XBPV73uuim&quot;&gt;pic.twitter.com/XBPV73uuim&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/893216572747247619&quot;&gt;August 3, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;h1 id=&quot;the-challenges&quot;&gt;The challenges&lt;/h1&gt;

&lt;p&gt;I’d not done much with JavaScript or AJAX calls before this project.&lt;/p&gt;

&lt;p&gt;Most of my time was spent wrestling with the HTML5 canvas overlay, getting it to play correctly with the Google Maps layer underneath.&lt;/p&gt;

&lt;p&gt;When a user toggles the “draw” function, I’m just changing the z-index of the canvas to go “below” the google maps layer. I can’t imagine this is best practice, but it is what it is.&lt;/p&gt;

&lt;p&gt;It was hard converting x/y data from the canvas to lat/long coordinates to store in the database, and to bring it back out when I need to load up the data.&lt;/p&gt;

&lt;p&gt;There were lots of challenges, but it’s been very educational!&lt;/p&gt;

&lt;h1 id=&quot;whats-next&quot;&gt;What’s next&lt;/h1&gt;

&lt;p&gt;I desperately need to set up caching all over the place, and localize the data that I return in my database to contain only about what is visible on the screen.&lt;/p&gt;

&lt;p&gt;There’s a few UI tweaks I need to get in place, too. It’s hard to move between drawing and moving the map.&lt;/p&gt;

&lt;p&gt;Finally, I’d like to be able to “do math” against the colored portions of the screen. To say “50% of the visible region is parking lot” or something like that. Then I can start comparing it against popular urban areas in other cities, and other countries.&lt;/p&gt;

&lt;p&gt;I think this stage will be when the real value is visible.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A Retrospective on Seven Months at Turing</title>
   <link href="https://josh.works/turing-retrospective"/>
   <updated>2017-08-08T12:18:52+00:00</updated>
   <id>https://josh.works/turing-retrospective</id>
   <content type="html">&lt;h1 id=&quot;collection-of-thoughts-on-turing&quot;&gt;Collection of thoughts on Turing&lt;/h1&gt;

&lt;p&gt;It’s the last week of &lt;a href=&quot;https://www.turing.io/&quot;&gt;Turing&lt;/a&gt;. I went through the &lt;a href=&quot;https://www.turing.io/programs/back-end-engineering&quot;&gt;backend software engineering program&lt;/a&gt;, and it’s been a journey.&lt;/p&gt;

&lt;p&gt;In no particular order, I’m throwing down thoughts in three general categories:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;What went well&lt;/li&gt;
  &lt;li&gt;What didn’t go well&lt;/li&gt;
  &lt;li&gt;What I might have done differently, were I to do it again&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I believe there is a narrow window for me to capture this information well. As soon as I get a job, I’ll probably forget everything that didn’t go well, and if I were to &lt;em&gt;never&lt;/em&gt; get a job, I’d forget anything that went well.&lt;/p&gt;

&lt;h2 id=&quot;went-well&quot;&gt;Went well&lt;/h2&gt;

&lt;h3 id=&quot;learning&quot;&gt;Learning&lt;/h3&gt;

&lt;p&gt;I’ve learned a ton, and my pace of learning has steadily climbed through Turing, as I build a more and more robust mental for existing information. It’s easier to add new information when the framework for the old stuff is strong.&lt;/p&gt;

&lt;p&gt;I use Anki (a flashcard app) every day, so even on days when I don’t write any code, I’m still getting reps in of practice, and strengthening mental pathways. I’ve used Anki every day since Turing started, and have almost 1000 cards in my programming deck.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Statistics.jpg&quot; alt=&quot;review stats&quot; /&gt;&lt;/p&gt;

&lt;!--more--&gt;
&lt;h3 id=&quot;getting-in-simple-exposure-to-programming&quot;&gt;Getting in simple exposure to programming&lt;/h3&gt;

&lt;p&gt;Quality beats quantity, but at the beginning, I’m simply resigning myself to pursuing quantity.&lt;/p&gt;

&lt;p&gt;I’ve &lt;a href=&quot;https://github.com/josh-works&quot;&gt;committed a lot of code&lt;/a&gt;. It’s not &lt;em&gt;good&lt;/em&gt; code, but it’s code, so I’m making progress and learning.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/github_01.jpg&quot; alt=&quot;I&apos;ve committed a lot of code&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I filled up 1.5 large notebooks with notes and code, and many whiteboards.&lt;/p&gt;

&lt;h3 id=&quot;cohort&quot;&gt;Cohort&lt;/h3&gt;

&lt;p&gt;I bonded with the folks I went through Turing with. I think we’ll be friends for a long time, and will try to meet up every now and again. (I hear there’s a trip to a beach in the works for a year from now.)&lt;/p&gt;

&lt;h3 id=&quot;outside-of-turing&quot;&gt;Outside of Turing&lt;/h3&gt;

&lt;p&gt;While Turing dominated my time these last seven months, I enjoyed still spending lots of time with Kristi, and I managed to sneak in a surprisingly large amount of rock climbing.&lt;/p&gt;

&lt;p&gt;I’ve been improving in my climbing, but that’s a topic for a different time.&lt;/p&gt;

&lt;h2 id=&quot;didnt-go-well&quot;&gt;Didn’t go well&lt;/h2&gt;

&lt;p&gt;I’m technically not graduated yet - I’ve started this a few days before the end of Turing.&lt;/p&gt;

&lt;p&gt;I feel like the quality of my work on the last two big projects was low. I still have a lot to learn about JavaScript and DOM manipulation, and I’ve not yet gotten enough repetition in with those basics to have simple tasks be effortless and quick to achieve.&lt;/p&gt;

&lt;p&gt;So, that’s been a bit stressful. I have generally high standards for my work, and when I can’t meet it, I become convinced that I’m failing everyone else’s standards as well.&lt;/p&gt;

&lt;p&gt;Why did these last two projects go poorly?&lt;/p&gt;

&lt;h3 id=&quot;tactical-reasons-they-went-poorly&quot;&gt;Tactical reasons they went poorly&lt;/h3&gt;

&lt;p&gt;I expand on this concept below, but I have a “slow but thorough” learning style. I struggled to spend the time I needed getting in repetition and depth of learning while managing the high rate of work required at Turing.&lt;/p&gt;

&lt;p&gt;If I didn’t have the time to dig deep into something, I’d skip it, and aim to complete the projects.&lt;/p&gt;

&lt;p&gt;If I were going to re-do my module three prework, I’d work through this tutorial three times in a row:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.digitalocean.com/community/tutorials/build-a-restful-json-api-with-rails-5-part-one&quot;&gt;Build a RESTful JSON API With Rails 5 - Part One (DigitalOcean Tutorial)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d find some node/express/deep dives into JavaScript before module four started. I felt a bit behind there as well.&lt;/p&gt;

&lt;h3 id=&quot;strategic-reasons-they-went-poorly&quot;&gt;Strategic reasons they went poorly&lt;/h3&gt;

&lt;p&gt;I learn things slowly.&lt;/p&gt;

&lt;p&gt;Some folks at Turing have expressed the incorrection assumption that I learn things quickly, and I try to correct their wrong thinking. I always aim to get early exposure to a topic, and to play with it before I have to use it in any sort of production environment.&lt;/p&gt;

&lt;p&gt;I did a fair amount of work before Turing to gain exposure to the topics we covered in the first half of the program, and consequently had a good frame of reference for the things we learned.&lt;/p&gt;

&lt;p&gt;The topics in the 2nd half of the program I’d gained no prior exposure to, and felt ill-prepared by the recommended pre-work that we did over the intermission weeks.&lt;/p&gt;

&lt;p&gt;For the duration of both of the second mods, I felt behind, simply enough.&lt;/p&gt;

&lt;p&gt;The good news here, though, is given the world of difference that I experienced based soley on prior exposure to a topic… with repeated exposure, I can feel comfortable with just about anything.&lt;/p&gt;

&lt;p&gt;This is encouraging, because I have many years to gain comfort with a range of technologies.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;I’m thrilled I did Turing.&lt;/strong&gt; I’m not good at big “summarize this huge thing” write-ups, and much prefer to do small posts on bite-sized topics. So, much more to come on that, down the road.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Would I recommend Turing to someone else?&lt;/strong&gt; It depends. There are some very important non-Turing-related details that lined up nicely for me. If someone else is in the same position and has the same inclination, I’d say go for it. This was well within my range of comfortable risk, because of the following:&lt;/p&gt;

&lt;h6 id=&quot;i-had-my-wifes-enthusiastic-support&quot;&gt;I had my wife’s enthusiastic support&lt;/h6&gt;

&lt;p&gt;I cannot overstate how empowering this is. Kristi has been making all of our money this year, on top of managing most of the details of cooking, food prep, etc. Her efforts freed me up to just think about programming, which is a significant advantage. On top of that, she of course provided great emotional support&lt;/p&gt;

&lt;h6 id=&quot;id-been-planning-on-something-like-turing-for-over-a-year-before-starting-and-wed-been-saving-money-appropriately-both-for-tuition-and-for-living-expenses-while-in-school&quot;&gt;I’d been planning on something like Turing for over a year before starting, and we’d been saving money appropriately, both for Tuition, and for living expenses while in school&lt;/h6&gt;

&lt;p&gt;Kristi ended up changing jobs shortly after Turing started, and it came with a significant pay increase, so that dramatically changed (for the better) our financial situation while I was in school. Also, turns out you can defer most of your tuition for Turing until after it ends. Those two things left us with more margin in our budget than I’d expected.&lt;/p&gt;

&lt;h6 id=&quot;this-wasnt-the-first-time-i-tried-to-learn-software-development&quot;&gt;This wasn’t the first time I tried to learn software development&lt;/h6&gt;

&lt;p&gt;I’ve done the self-study thing for a while before Turing started. That made the first half of the program much smoother sailing for me than they might have been otherwise.&lt;/p&gt;

&lt;h6 id=&quot;im-not-a-total-stranger-to-the-world-of-software-development&quot;&gt;I’m not a total stranger to the world of software development&lt;/h6&gt;

&lt;p&gt;I’ve worked for two different software companies before doing Turing. I have a bit of the lay of the land, as it were, of how a “standard” software company fits together. I also spent time doing support and sales (and a bunch of other stuff) for technical software products, so I’m comfortable with the common pain points of software development, and I can speak to the value I’ll bring to a development team. This diminishes any pressure I feel around getting my first development job.&lt;/p&gt;

&lt;p&gt;The sales experience in particular was helpful - I feel no discomfort cold-emailing people and setting up virtual or in-person informational interviews. Since informational interviews are the &lt;em&gt;best&lt;/em&gt; predictor of getting jobs, this feels like a significant advantage.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;These four pieces alleviate lots of potential pressure, and make this a much less risky decision than it might be for someone who doesn’t have this same context and environment.&lt;/p&gt;

&lt;p&gt;That said, if someone is &lt;em&gt;curious&lt;/em&gt; about software development, I’d 100% recommend they &lt;a href=&quot;http://trycoding.turing.io/&quot;&gt;kick the tires&lt;/a&gt; with Turing and some online tutorials. Or shoot me an email. We can talk about it. I think it’s a great decision, provided someone knows what they’re getting into, and have set up systems and support for themselves as they move through the program.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Anki and Memorization with Spaced Repetition Software</title>
   <link href="https://josh.works/anki-spaced-repetition-system"/>
   <updated>2017-06-06T12:18:52+00:00</updated>
   <id>https://josh.works/memorizing-programming-with-anki</id>
   <content type="html">&lt;p&gt;&lt;em&gt;This is not meant to be read in isolation. Memorization is almost useless without doing work ahead of time to grasp the material. For the full context, start with &lt;a href=&quot;/learning-how-to-learn&quot;&gt;Learning how to Learn&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’ve not been able to find any comprehensive guides to using Anki to learn &lt;em&gt;programming&lt;/em&gt;, so this article is a deep-dive on just that topic, from installation and configuration to building good programming-related flashcards.&lt;/p&gt;

&lt;p&gt;We’ll cover a few pieces:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;#anki-srs&quot;&gt;What is Anki, and Spaced Repetition Software?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#two-primary-benefits&quot;&gt;Why would you use it?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#getting-started-your-first-card&quot;&gt;Getting started: Your first card&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#configure-anki-on-your-phone&quot;&gt;Configure Anki on your phone&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#markdown-and-anki&quot;&gt;Markdown and Anki&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#install-markdown-package&quot;&gt;Install Markdown Package&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#using-the-markdown-package&quot;&gt;Using the Markdown package&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#building-programming-related-flashcards&quot;&gt;Building a good first programming-related flashcard&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;anki-spaced-repetition-software&quot;&gt;Anki Spaced Repetition Software&lt;/h1&gt;

&lt;p&gt;Anki has been one of my favorite tools I’ve encountered in the last few years. I started using it initially for learning Spanish vocabulary, but as I started learning programming, it really started to shine.&lt;/p&gt;

&lt;p&gt;Anki is a flashcard application that attacks the issue of “memory decay” to retain and strengthen recall of anything you want.&lt;/p&gt;

&lt;h3 id=&quot;spaced-repetition-software&quot;&gt;Spaced Repetition Software&lt;/h3&gt;

&lt;p&gt;If you learn something today, you might remember it tomorrow, but will probably forget it in three or four days. However, if you review it before you forget it, it’ll “stick” in your head for a bit longer than it did the first time you learned it. This “forgetting curve” can be bent exponentially in your favor.&lt;/p&gt;

&lt;p&gt;Here’s how remembering (and forgetting) over time tends to play out:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/ff_wozniak_graph_f.jpg&quot; alt=&quot;the famous forgetting curve, from Wired Magazine&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The goal here is to create relevant, well-formatted bits of knowledge, and then get them in Anki and review it the minimum amount of times to ensure that we’ll remember it for a very, very long time. (I.E. so long I can never forget it, so several years, at least)&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-16-anki.jpg&quot; alt=&quot;Anki&apos;s unassuming UI&quot; title=&quot;Anki&apos;s unassuming user interface&quot; /&gt;&lt;/p&gt;

&lt;p&gt;On first blush, Anki has an unassuming user interface.&lt;/p&gt;

&lt;p&gt;Continuing the example from &lt;a href=&quot;/learning-how-to-learn&quot;&gt;learning how to learn&lt;/a&gt;, here’s the ‘front’ of one of my flashcards:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-16-anki_1.jpg&quot; alt=&quot;Anki card for using OmniAuth to manage user session&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This card looks complicated, but it’s actually easy&lt;/em&gt;. You’ll notice that I basically gave myself the answer in the question setup. I’m simply training myself to recognize how I set up the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;User&lt;/code&gt; class, and that it has a class method &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;from_omniauth&lt;/code&gt;, and building a mental model of how I use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;request.env[&quot;omniauth.auth&quot;]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;the answer is:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if user = User.from_omniauth(request.env[&quot;omniauth.auth&quot;])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And I prefer easy flashcards (more work to make, less difficult to recall) than difficult flashcards.&lt;/p&gt;

&lt;p&gt;For Anki’s basics, go check out this excellent guide: &lt;a href=&quot;https://www.fluentin3months.com/spaced-repetition/&quot;&gt;Spaced Repetition&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I put all sorts of information in Anki. At the moment I have about &lt;strike&gt;850&lt;/strike&gt; 1200+ programming-related cards, which covers &lt;em&gt;many&lt;/em&gt; topics related to software development.&lt;/p&gt;

&lt;p&gt;I’ve got cards related to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Ruby and Rails&lt;/li&gt;
  &lt;li&gt;Linux terminal commands and their options, like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grep&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xargs&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Git/Github&lt;/li&gt;
  &lt;li&gt;JavaScript&lt;/li&gt;
  &lt;li&gt;HTML/CSS&lt;/li&gt;
  &lt;li&gt;SQL&lt;/li&gt;
  &lt;li&gt;Regular Expressions&lt;/li&gt;
  &lt;li&gt;iTerm &amp;amp; Atom keyboard shortcuts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am confident that I have &lt;em&gt;not&lt;/em&gt; found the ideal workflow around creating and memorizing Anki cards. I’m still trying to improve this process, but the benefit of using Anki far outweighs for me any cost of having less-than-perfect cards.&lt;/p&gt;

&lt;p&gt;My Anki workflow has two steps:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Make the Anki cards on my laptop&lt;/li&gt;
  &lt;li&gt;Review the Anki cards on my phone&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I can review my Anki cards anywhere. In line at the grocery store, in the bathroom (yes), on a train, while I’m waiting for my food to microwave, etc.&lt;/p&gt;

&lt;p&gt;I normally hate to be the person staring at his phone all day, but since I’m usually on Anki, I now embrace it.&lt;/p&gt;

&lt;p&gt;According to &lt;a href=&quot;https://play.google.com/store/apps/details?id=pt.aguiar.phoneusage&quot;&gt;PhoneUsage&lt;/a&gt; I spend between 30 and 45 minutes on Anki review per day, and it’s all in little snippets of time grabbed here and there. (&lt;a href=&quot;/growth/2016/07/04/three-android-apps-i-use-every-day-and-maybe-youll-use-them-too/&quot;&gt;a bit about how I manage my phone usage every day here&lt;/a&gt;)&lt;/p&gt;

&lt;h2 id=&quot;two-primary-benefits&quot;&gt;Two primary benefits&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Cool, Josh, all this sounds nice, but it is a lot of work, especially to spend 30 minutes or an hour every day building and reviewing note cards. I’m busy, and if I’m learning programming, I’ll be even more busy than I am now.&lt;/p&gt;

  &lt;p&gt;Why is Anki better than just studying a topic more?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;1-the-process-of-recalling-answers-from-memory-solidifies-subtle-but-important-details&quot;&gt;1. The process of recalling answers from memory solidifies subtle-but-important details&lt;/h3&gt;

&lt;p&gt;There are lots of small-but-meaningful details we encounter when trying to make computers do our bidding.&lt;/p&gt;

&lt;p&gt;The presence of a comma in a list of arguments, or if a method is a class or instance method, or if that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git reset&lt;/code&gt; command uses &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--HARD&lt;/code&gt; as an argument - these all can introduce tiny bits of friction in our goals. I see a lot of what I am memorizing as not necessarily just learning &lt;em&gt;new&lt;/em&gt; things, but making sure that the things I &lt;em&gt;have&lt;/em&gt; learned, I know very well.&lt;/p&gt;

&lt;p&gt;For example, if you’re not sure how the params of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;post&lt;/code&gt; request are formatted, once you’ve built and memorized a few cards related to this formatting, you can better access elements in that hash because you already know the basic structure to expect.&lt;/p&gt;

&lt;p&gt;Alternatively, are you 100% sure of the format for building a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.reduce&lt;/code&gt; iterator? What’s the difference between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[].reduce() do |result, item|&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[].reduce({}) do |result, item|&lt;/code&gt;? With a few note cards on building/using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reduce&lt;/code&gt; method, you’ll spot the difference immediately, and know how to reason about it.&lt;/p&gt;

&lt;p&gt;These are &lt;em&gt;subtle but important details&lt;/em&gt;. Remember - computers are not that smart, they’re just extremely literal. Details make or break everything you build.&lt;/p&gt;

&lt;h3 id=&quot;2-this-memorization-functions-as-a-progress-capture-device-for-new-things-you-learn&quot;&gt;2. This memorization functions as a progress-capture device for new things you learn&lt;/h3&gt;

&lt;p&gt;How often do you use a new method, or try to implement a basic feature, and you are &lt;em&gt;positive&lt;/em&gt; you’ve encountered the topic before, but cannot remember what you actually did?&lt;/p&gt;

&lt;p&gt;You’re off to the docs, or looking at previous projects, until you refresh your memory.&lt;/p&gt;

&lt;p&gt;This is fine, and even with Anki you’ll be regularly referencing documentation and prior code, but you’ll do it much less, because so much of what you’ve seen before you’ve memorized. It’s just sitting in your brain, ready to be used again.&lt;/p&gt;

&lt;p&gt;Sometimes, even though I’ve memorized cards, I cannot quite reproduce the whole chunk of knowledge from scratch, so I just open up the Anki and find the card that relates to the thing I’m trying to do. It’s a bit like keeping detailed notes and always knowing exactly where to find the relevant information for what you’re looking for.&lt;/p&gt;

&lt;p&gt;Or, that one time I had to rename a branch in Git - what was the exact syntax for pushing the deleted branch? Did I actually &lt;em&gt;rename&lt;/em&gt; the branch, or did I use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git branch -m&lt;/code&gt; command to create a &lt;em&gt;new&lt;/em&gt; branch? (hint - the next step is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git push origin :old_branch_name&lt;/code&gt;, then push the new one with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git push origin --set-upstream origin new_branch&lt;/code&gt;. I just opened up Anki to check the steps. Super simple.)&lt;/p&gt;

&lt;h1 id=&quot;installing-anki&quot;&gt;Installing Anki&lt;/h1&gt;

&lt;p&gt;Download the desktop app at &lt;a href=&quot;https://apps.ankiweb.net/#download&quot;&gt;https://apps.ankiweb.net&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Download it, install it, and open it up.&lt;/p&gt;

&lt;h1 id=&quot;getting-started-your-first-card&quot;&gt;Getting started: Your first card&lt;/h1&gt;

&lt;p&gt;Make a new deck. Call it “programming” or “test deck” or whatever. Now click the “new card” button.&lt;/p&gt;

&lt;p&gt;Lets create a sample card. Don’t worry, you’re doing to delete this card in a minute, so it doesn’t matter if it’s “good” or whatever.&lt;/p&gt;

&lt;p&gt;In the box labeled “front”, put “what is my name”. On the “back” put your actual name. Or perhaps a more relevant question, like:&lt;/p&gt;

&lt;p&gt;Front:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Who writes the most long-winded and rambling blog posts in the world, and embarrassingly refers to himself in the third person every now and again?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Back:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh Thompson&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Make two or three cards. It will be easiest to see how Anki works with more than one card in the deck.&lt;/p&gt;

&lt;p&gt;Now, lets review your cards. Hit the “Study now” button, and think hard about the answer to the first card.&lt;/p&gt;

&lt;p&gt;For purposes of explanation, lets say you cannot remember either your name or my name. Admit defeat, and click the “show answer” button.&lt;/p&gt;

&lt;p&gt;Since you couldn’t remember, click the left-most button on the bottom, that says &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;10m, Again&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This button is how you signal to Anki that you didn’t know the answer, and the card will immediately be re-queued for you to study within the next ten minutes.&lt;/p&gt;

&lt;p&gt;Once you click the button, the next card will show up. Lets say you &lt;em&gt;do&lt;/em&gt; know the answer to this question. Click “show answer”, and then click the button labeled “good”.&lt;/p&gt;

&lt;p&gt;You’ve got three options when you’ve recalled the right answer. They are labeled “hard”, “good”, and “easy”. Depending on which one you click, the time that will elapse between now and when you see the card again will change.&lt;/p&gt;

&lt;p&gt;If the answer was hard for you, you want to see the card again soon. If it was easy, you’d like it to be a longer period of time before seeing it again.&lt;/p&gt;

&lt;p&gt;Depending on how many times you’ve reviewed the card, the time intervals associated with the card will change.&lt;/p&gt;

&lt;p&gt;Here’s the intervals I am seeing on some of the cards I’ve reviewed today:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-06-28_memorizing_programming_01.jpg&quot; alt=&quot;forty day range&quot; title=&quot;a range of a month&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If I click the “Hard” button, I’ll see it again in 12 days. If I click easy, I’ll see it in almost 29 days.&lt;/p&gt;

&lt;p&gt;I tend to click the default “good” button, and thats what I did with this one.&lt;/p&gt;

&lt;p&gt;Here’s another, older card, where I can decide if I want to see it again in six months, 11 months, or 14 months:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-06-27_memorizing_programming_03.jpg&quot; alt=&quot;seven month range&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You’ll get a feel for how this works, and what are the best answers for you, as you go.&lt;/p&gt;

&lt;p&gt;The next step is to hook up Anki and your phone&lt;/p&gt;

&lt;h2 id=&quot;configure-anki-on-your-phone&quot;&gt;Configure Anki on your phone&lt;/h2&gt;

&lt;p&gt;Since you’ll be &lt;em&gt;building&lt;/em&gt; cards on your computer, but most likely &lt;em&gt;reviewing&lt;/em&gt; them on your phone, we’ll go ahead and get Anki working on your phone.&lt;/p&gt;

&lt;p&gt;Download the phone app:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.ichi2.anki&amp;amp;hl=en&quot;&gt;Anki for Android&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/ankimobile-flashcards/id373493387?mt=8&amp;amp;ign-mpt=uo%3D4&quot;&gt;Anki for iPhone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The iPhone app costs $25. The Android app is free, the iPhone app is not. $25 seems like a lot. The author explains this price &lt;a href=&quot;https://anki.tenderapp.com/kb/anki-ecosystem/why-does-ankimobile-cost-more-than-a-typical-mobile-app&quot;&gt;here&lt;/a&gt;. According to my phone’s stats, I’ve spent 96 hours of active flashcard review time with Anki at the time of this writing, which boils down to $0.25/hr. I consider this to be an extremely good use of my time and money. Look for the value, not the cost.&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;createsign-in-to-your-ankiweb-account&quot;&gt;Create/sign in to your AnkiWeb account&lt;/h3&gt;

&lt;h4 id=&quot;1-sign-up-for-a-new-ankiweb-account&quot;&gt;1. &lt;a href=&quot;https://ankiweb.net/account/register&quot;&gt;Sign up for a new AnkiWeb account&lt;/a&gt;&lt;/h4&gt;

&lt;h4 id=&quot;2-sign-into-your-ankiweb-account-on-the-desktop-anki-application&quot;&gt;2. Sign into your AnkiWeb account on the desktop Anki application&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;get screenshot of what it looks like not signed in to an account&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the desktop application, hit the “sync” button:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-06-27_memorizing_programming_04.jpg&quot; alt=&quot;Sync Desktop app with AnkiWeb&quot; title=&quot;sync desktop with Anki Web&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;3-sign-in-on-the-phone-application&quot;&gt;3. Sign in on the phone application.&lt;/h4&gt;

&lt;p&gt;For Android, you’ll the following, in this order:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Tap the hamburger menu&lt;/li&gt;
  &lt;li&gt;Tap “Settings”&lt;/li&gt;
  &lt;li&gt;Tap “AnkiDroid general settings”&lt;/li&gt;
  &lt;li&gt;Tap “Sign In to account”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;lt;sign in, need pictures from different account&amp;gt;&lt;/p&gt;

&lt;p&gt;Now hit the “Sync” button on your phone:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;phone screenshot here&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And you should see the info from your desktop showing up on your phone!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Take a deep breath. This is a big accomplishment, and you’re most of the way done with getting configured on Anki!&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;markdown-and-anki&quot;&gt;Markdown and Anki&lt;/h2&gt;

&lt;p&gt;Since we’re doing &lt;em&gt;programming&lt;/em&gt; related flash cards, and one of the first rules of formulating knowledge is “specificity”, we want code snippets in Anki to look like code snippets on our computer.&lt;/p&gt;

&lt;p&gt;Lets say you want to make an Anki flashcard related to the placement of this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;begin&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rescue&lt;/code&gt; in this chunk of code:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-06-03_memorizing_programming_01.jpg&quot; alt=&quot;code snippet&quot; title=&quot;a picture of some code&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Which of these cards do you think would be more effective for learning?&lt;/p&gt;

&lt;p&gt;Option one:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-06-03_memorizing_programming_02.jpg&quot; alt=&quot;ineffective card&quot; title=&quot;a less-effective format&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Option two:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-06-03_memorizing_programming_03.jpg&quot; alt=&quot;more effective code&quot; title=&quot;a more-effective format&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The second option is much, much more readable and understandable.&lt;/p&gt;

&lt;p&gt;To format your code like this, you’ll need to install (and use) a Markdown package.&lt;/p&gt;

&lt;h2 id=&quot;install-markdown-package&quot;&gt;Install Markdown Package&lt;/h2&gt;

&lt;p&gt;We will be using the &lt;a href=&quot;https://ankiweb.net/shared/info/1030875226&quot;&gt;Auto Markdown&lt;/a&gt; package.&lt;/p&gt;

&lt;h4 id=&quot;1-add-the-markdown-package-to-anki&quot;&gt;1. Add the Markdown package to Anki&lt;/h4&gt;

&lt;p&gt;Navigate through the following menu, and entering the number &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1030875226&lt;/code&gt; when it’s requested. (The number is the end of the URL of the package we want.)&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Desktop &amp;gt; Tools &amp;gt; Add-ons &amp;gt; browse and install&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2018-06-28_memorizing_programming_02.jpg&quot; alt=&quot;How to add packages&quot; title=&quot;How to add packages&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When you click the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Browse &amp;amp; Install&lt;/code&gt; button, just enter &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1030875226&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-04-28_memorizing_programming_03.jpg&quot; alt=&quot;adding the markdown add-on&quot; title=&quot;adding the markdown add-on&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;2-restart-anki-per-the-instructions&quot;&gt;2. Restart Anki, per the instructions&lt;/h4&gt;

&lt;h4 id=&quot;3-enable-the-new-markdown-package-in-basic-card-types&quot;&gt;3. Enable the new Markdown package in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Basic&lt;/code&gt; card types&lt;/h4&gt;

&lt;p&gt;Check the “Enable Markdown” button. (It’s very buried):&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Anki &amp;gt; Tools &amp;gt; Manage Note Types &amp;gt; Basic&lt;/code&gt; and click &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Fields&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/anki_edit_fields.jpg&quot; alt=&quot;configure fields&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Next, for both the front and the back of the card, check the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Convert to/from markdown automatically&lt;/code&gt; box:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-04-28-enable_auto_markdown.jpg&quot; alt=&quot;enable automarkdown&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;4-restart-anki-again&quot;&gt;4. Restart Anki again&lt;/h4&gt;

&lt;h2 id=&quot;using-the-markdown-package&quot;&gt;Using the Markdown package&lt;/h2&gt;

&lt;p&gt;Markdown is great. I use it constantly. In fact, this entire post is composed in Markdown - all of my text formatting, code blocks, links, and images are written in Markdown.&lt;/p&gt;

&lt;p&gt;If you don’t know Markdown, &lt;em&gt;you can ease into using Anki by learning to use Markdown&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Let’s start with something basic - using fixed-width color offset to draw attention to technical language.&lt;/p&gt;

&lt;h3 id=&quot;backticks-to-make-text-formatted-and-fixed-width&quot;&gt;Backticks to make text &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;formatted and fixed-width&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;“Visual hierarchy” is a huge way to help the human eye differentiate the important from the unimportant, or between things of different types.&lt;/p&gt;

&lt;p&gt;Here’s two was to write the same question. This is a question I asked someone on my team recently:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;what value do you use for SIDEKIQ_PORT in config/application.yml?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Compare that with:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;what value do you use for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SIDEKIQ_PORT&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;config/application.yml&lt;/code&gt;?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The one with the text formatting is easier to understand. Lets extend this principle to building programming-related flashcards.&lt;/p&gt;

&lt;p&gt;Imagine an Anki card that says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;what does array.sort do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can draw a little more attention to the specifics of the question (it’s about an Array, and it’s an instance method!) by using:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;What does Array#sort do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But that doesn’t catch the eye nearly as well as:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;What does &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Array#sort&lt;/code&gt; do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, to off-set text like that, you just “wrap” it in backticks, the key to the left of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1&lt;/code&gt; on your keyboard.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This is what text that’s been &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wrapped in backticks&lt;/code&gt; looks like&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Important note: This markdown package has a super annoying bug in it. I couldn’t figure out the fix at the code level for everyone, but if you have your mac in “dark mode”, the markdown formatting will look HORRIBLE! &lt;a href=&quot;https://github.com/gregorrr/anki-auto-markdown/issues/14#issuecomment-613490187&quot;&gt;here’s an open github issue and the fix&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, make a card like this in Anki:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-04-28-anki-monospaced.gif&quot; alt=&quot;Anki card to learn some markdown&quot; /&gt;&lt;/p&gt;

&lt;p&gt;What makes text &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;monospaced&lt;/code&gt;? backticks!&lt;/p&gt;

&lt;p&gt;Make a few more cards. For example, figure out how to make a large block of pre-formatted text, or give a block of code language-specific syntax highlighting.&lt;/p&gt;

&lt;p&gt;(You can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ruby&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;javascript&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;html&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;css&lt;/code&gt;, pretty much any language name and get appropriate syntax highlighting)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2020-04-28-anki-syntax-highlighting.gif&quot; alt=&quot;language-specific syntax highlighting&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;building-programming-related-flashcards&quot;&gt;Building programming-related flashcards!&lt;/h1&gt;

&lt;p&gt;Wahoo! You’ve almost made it! The end goal is in sight!&lt;/p&gt;

&lt;p&gt;I’d recommend keeping two points in mind before proceeding:&lt;/p&gt;

&lt;h4 id=&quot;1-go-slow&quot;&gt;1. Go slow&lt;/h4&gt;

&lt;p&gt;I have a cap for ten new cards a day, even if I make twenty flashcards. Experiment with what works for you, but swamping yourself with cards makes it less likely that you’ll stick with the tool.&lt;/p&gt;

&lt;p&gt;Here’s how to set the maximum number of new cards a day. I would set it to about seven:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/anki_set_new_card_limit.gif&quot; alt=&quot;seven new cards/day&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;2-build-multiple-cards-around-each-discrete-piece-of-knowledge-you-want-to-acquire&quot;&gt;2. Build multiple cards around each discrete piece of knowledge you want to acquire.&lt;/h4&gt;

&lt;p&gt;If you want to remind yourself of how to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.map&lt;/code&gt; in Anki, make three or five different flashcards, testing it from different directions.&lt;/p&gt;

&lt;p&gt;For example, card 1 might be:&lt;/p&gt;

&lt;p&gt;Front:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;What method can I call on an array to iterate through each item, 
and it returns the mutated array?
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Back:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Array.map
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Card 2:&lt;/p&gt;

&lt;p&gt;front:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;what do I call to add 1 to each number?
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;num&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;back:&lt;/p&gt;
&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;map&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;num&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Card 3:&lt;/p&gt;

&lt;p&gt;Front:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;letters = [&apos;lkj&apos;, &apos;kwidk&apos;, &apos;wwid888&apos;]

What&apos;s a one-liner to make all above letters capitalized, so that:

big_letters = [&quot;LKJ&quot;, &quot;KWIDK&quot;, &quot;WWID888&quot;]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Back:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;big_letters&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;letters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;map&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;upcase&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;LKJ&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;KWIDK&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;WWID888&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Next, read a bunch of these articles below, and go forth and prosper!&lt;/p&gt;

&lt;p&gt;Oh, and if you’re like me and love using &lt;em&gt;screenshots&lt;/em&gt; in Anki, go for it! I use &lt;a href=&quot;https://itunes.apple.com/us/app/annotate-capture-and-share/id918207447?mt=12&quot;&gt;Annotate.app&lt;/a&gt;, but any tool will work. Make your screenshot, and drag it into Anki, and it’ll be ready to use.&lt;/p&gt;

&lt;h3 id=&quot;resources-on-memorization&quot;&gt;Resources on Memorization&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.supermemo.com/en/articles/20rules&quot;&gt;Effective learning: Twenty rules of formulating knowledge&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.fluentin3months.com/spaced-repetition/&quot;&gt;Spaced repetition: Never forget vocabulary ever again (in the context of language learning, but perfectly applicable to programming)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sivers.org/srs&quot;&gt;Memorizing a programming language using spaced repetition software&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.jackkinsella.ie/articles/janki-method&quot;&gt;JANKI METHOD: Using spaced repetition systems to learn and retain technical knowledge.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ankiweb.net/shared/info/162313389&quot;&gt;Markdown code formatting in Anki&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.gwern.net/Spaced%20repetition&quot;&gt;Spaced Repetition&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://rs.io/anki-tips/&quot;&gt;Anki tips&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.wired.com/2008/04/ff-wozniak/&quot;&gt;Wired Magazine: Want to Remember Everything You’ll Ever Learn? Surrender to This Algorithm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>On Learning</title>
   <link href="https://josh.works/learning-how-to-learn"/>
   <updated>2017-06-05T12:18:52+00:00</updated>
   <id>https://josh.works/learning-how-to-learn</id>
   <content type="html">&lt;p&gt;As a student at Turing, I’ve recently been thinking about learning how to learn, specifically in the context of software development.&lt;/p&gt;

&lt;p&gt;I am a bit hyperactive when it comes to trying to learn new things. Over the years, I’ve done plenty of ineffective learning, and at least a little bit of &lt;em&gt;effective&lt;/em&gt; learning. The good news is that even as I’ve not learned most of the topics I’ve originally set out to learn, I have learned a bit about &lt;em&gt;learning&lt;/em&gt;. (Does this make it “metalearning”?)&lt;/p&gt;

&lt;p&gt;I’m defining “learning” or “learning a topic” as &lt;em&gt;to be able to rearrange or reorganize or reuse the idea or pieces of the idea in new ways to resolve unstructured problems I face&lt;/em&gt;.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;This “rearranging/reorganizing” and “unstructured problems” explicitly &lt;em&gt;excludes&lt;/em&gt; the kind of learning most of us have done when we were young, where we just tried to have the right answer for fill-in-the-blank questions like “In _____(year) Christopher Columbus sailed the ocean blue”.&lt;/p&gt;

&lt;h2 id=&quot;overview-of-process&quot;&gt;Overview of Process&lt;/h2&gt;

&lt;p&gt;All things worth doing should fit into some sort of process. If there’s no process, I’m just shooting in the dark, hoping to hit something. That said, the right process is almost always not the first thing I try, and I’m usually skeptical of “expert advice”, for many reasons. So, I like to try to pick a reasonable starting point, and experiment with process from there.&lt;/p&gt;

&lt;p&gt;Additionally, even a loosely-defined process reduces friction to attempting the thing. If, every time I came across a difficult concept in programming, I had to decide how to approach learning it, I’d waste time and energy deciding how to learn the thing.&lt;/p&gt;

&lt;p&gt;But, since I have a process, as imperfect as it is, I can just say “ah, a hard thing. Time to attack it with my six-step process to learning difficult things”.&lt;/p&gt;

&lt;p&gt;I’ve been thinking about friction, and learning, and the relationship between the two, for quite some time. For example:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/make-hard-things-easier-by-removing-friction&quot;&gt;Make hard things easy by removing friction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s my &lt;em&gt;current&lt;/em&gt; iteration of “how to learn difficult things”&lt;/p&gt;

&lt;h2 id=&quot;steps-to-try-to-learn-something&quot;&gt;Steps to try to learn something&lt;/h2&gt;

&lt;h3 id=&quot;1-define-the-boundaries-of-the-topic&quot;&gt;1. Define the boundaries of the topic&lt;/h3&gt;

&lt;p&gt;If you want to learn &lt;strong&gt;Software development&lt;/strong&gt;, that has no boundaries.&lt;/p&gt;

&lt;p&gt;If you want to learn &lt;strong&gt;Session management in conjunction with OmniAuth&lt;/strong&gt;, you can actually figure out what you need to learn. It’s better-bounded.&lt;/p&gt;

&lt;p&gt;The more specific I can be about what I am trying to learn, the better I can approach the process. I also always try to find the smallest viable chunk of the topic, and start there. So even session management with OmniAuth is contingent upon having a notion of how session management works, so I would start with just understanding sessions, and THEN move to OAuth, and THEN move to OmniAuth, and THEN roll everything together.&lt;/p&gt;

&lt;h3 id=&quot;2-find-a-way-to-play-with-the-component-pieces&quot;&gt;2. Find a way to play with the component pieces.&lt;/h3&gt;

&lt;p&gt;One of my end goals of learning is to build an accurate mental map of the process. I need to be able to visualize how the pieces fit together, and what each piece is composed of. In a REPL session, I would spend a few minutes “playing” with the object that OmniAuth returns in the user is authenticated.&lt;/p&gt;

&lt;p&gt;For example, the core piece of OmniAuth comes back to the requesting service inside of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;request.env&lt;/code&gt;, which is a HUGE hash. So, after looking at it, I can figure out that the OmniAuth hash is at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;request.env[&quot;omniauth.auth&quot;]&lt;/code&gt;. That hash contains all the user details, a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uid&lt;/code&gt;, and more.&lt;/p&gt;

&lt;p&gt;(With the Omniauth example above, the “object” that comes back from a successfully logged in user can be accessed in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;request&lt;/code&gt;. So, I’d look at the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;request&lt;/code&gt; object, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;request.env&lt;/code&gt; object, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;request.env[&quot;omniauth.auth&quot;]&lt;/code&gt;, object, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;request.env[&quot;omniauth.auth&quot;].keys&lt;/code&gt;, and examine each of the sub-pieces.)&lt;/p&gt;

&lt;h3 id=&quot;3-write-down-on-real-dead-trees-the-component-pieces-of-the-process&quot;&gt;3. Write down, on real dead trees, the component pieces of the process.&lt;/h3&gt;

&lt;p&gt;At a low level, this is actual code blocks, and once I get the individual pieces (for example, using a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;from_omniauth(auth_params)&lt;/code&gt; method with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;first_or_create_by&lt;/code&gt; to query my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;users&lt;/code&gt; database) I’ll then write out the associated piece of code next to it. So, if I’m moving between a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;user&lt;/code&gt; model and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sessions&lt;/code&gt; controller, I’ll write both code blocks side by side. I can easily add in the related routes and views, and anything else that fits into the process along side.&lt;/p&gt;

&lt;p&gt;Something that is important to me is having pens of two colors at hand, and using one color for all my text, and the other one to draw arrows between things.&lt;/p&gt;

&lt;p&gt;The arrows are the core piece of finding and identifying &lt;em&gt;relationships&lt;/em&gt; inside my code, and accross files, so I think it’s pretty important.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-18-omniauth_1.jpg&quot; alt=&quot;Some of my OmniAuth notes&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The process of writing code out, by hand, helps me identify the many wrong assumptions I make about the code as I am reading it. It’s critical to me, but most people don’t take these sorts of paper notes, so I might be an outlier. Everyone in the class is learning the same stuff, and learning it well.&lt;/p&gt;

&lt;h3 id=&quot;4-write-down-again-at-a-higher-level-the-involved-pieces&quot;&gt;4. Write down again, at a higher level, the involved pieces.&lt;/h3&gt;

&lt;p&gt;At this point, I might just be writing down the involved object types, and their associated methods. I.E. I am for a “cheat cheet” of notes that I can look at and refresh my entire knowledge of the topic. This means instead of individual code blocks, I might list the flow or progression of the code execution through the application, noting what are the involved files and pieces.&lt;/p&gt;

&lt;p&gt;For user authentication, it will touch:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;routes&lt;/li&gt;
  &lt;li&gt;Sessions controller&lt;/li&gt;
  &lt;li&gt;User model&lt;/li&gt;
  &lt;li&gt;user database&lt;/li&gt;
  &lt;li&gt;Possibly a service&lt;/li&gt;
  &lt;li&gt;a view or twoÂ&lt;/li&gt;
  &lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I capture each of these pieces on paper. This way I’ve got a detailed and higher-level mental model of what is happening.&lt;/p&gt;

&lt;h3 id=&quot;5-get-a-few-reps-of-implementation&quot;&gt;5. Get a few “reps” of implementation.&lt;/h3&gt;

&lt;p&gt;If I was following a tutorial, I’ll delete the work I just did and implement again, without referring to anything but my paper notes. (This is a sanity check to make sure I captured the right information on paper. Often I’ve not caught enough, so I modify my notes.)&lt;/p&gt;

&lt;h3 id=&quot;6-capture-some-of-the-high-and-low-level-details-in-anki&quot;&gt;6. Capture some of the high and low level details in Anki.&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;This section was getting longer and longer, so I split it into it’s own post. &lt;a href=&quot;/anki-spaced-repetition-system&quot;&gt;Read on about memorization and spaced repetition software here –&amp;gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;After working through these steps, I can usually say I’ve attained my goal of learning the topic. If I have not learned the topic, I’ve probably bitten off more than I can chew, and should revisit my original learning goal.&lt;/p&gt;

&lt;p&gt;I’ve certainly have not learned everything about the given topic, but I have a mental framework on which I can hang further learning, &lt;em&gt;and&lt;/em&gt; I can take the low and high-level knowledge and either apply it in other similar projects, or recognize the patterns of others using it in their projects.&lt;/p&gt;

&lt;p&gt;My goal is to get the minimum effective dose of learning so I can move on, but not lose what I’ve just spent a while working on.&lt;/p&gt;

&lt;p&gt;The notes and implementation practice helps me learn the thing, and Anki keeps me from losing it, so it’s quick to bring to mind weeks and months later.&lt;/p&gt;

&lt;p&gt;Full disclosure - this is a time consuming and difficult process. I don’t do it every day, though I wish I did. To buckle down on a topic like this necessarily requires NOT attending to other topics I could be studying. Life is full of trade-offs, but in general I’d rather learn one thing well than four things poorly.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Mind-Numbers-Science-Flunked-Algebra/dp/039916524X&quot;&gt;Mind for Numbers (book)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.fullerton.edu/LearningAssistance/Review-and-Summary-of-A-Mind-for-Numbers.pdf&quot;&gt;Detailed summary of the above book&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;&quot;&gt;Deep Work (book)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;&quot;&gt;Peak: The Science of Human Achievement&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://codewithoutrules.com/2017/04/17/learning-without-a-mentor/&quot;&gt;Learning without a Mentor: how to become an expert programmer on your own&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Workflow for developers (AKA My current tools)</title>
   <link href="https://josh.works/developer-workflow"/>
   <updated>2017-05-29T12:18:52+00:00</updated>
   <id>https://josh.works/developer-workflow</id>
   <content type="html">&lt;p&gt;I’m a huge fan of “a good workflow”. Makes you think better.&lt;/p&gt;

&lt;p&gt;This is still under construction, but I’m fleshing out all the tools, tidbits, and other things that serve me well every day as I build my skills as a developer. It will always be a work in progress, but will hopefully serve others.&lt;/p&gt;

&lt;p&gt;Your workflow is more than just tools. It encompasses &lt;a href=&quot;/better-questions&quot;&gt;how you ask questions&lt;/a&gt; and &lt;a href=&quot;/learning-how-to-learn&quot;&gt;how you integrate new knowledge&lt;/a&gt;. This page will be a running list of tools and workflows that I use regularly.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;em&gt;Last updated 02/20/18. If you’re curious, version history &lt;a href=&quot;https://github.com/josh-works/josh-works.github.io/commits/master/_posts/2017-05-27-developer-workflow.md&quot;&gt;here&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;topics&quot;&gt;Topics&lt;/h2&gt;

&lt;h3 id=&quot;small-desktopos-tweaks-misc-utilities&quot;&gt;Small desktop/OS tweaks, misc utilities&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#key-repeat-speed&quot;&gt;max out “key repeat speed” and “min wait on key hold”&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#see-more-code&quot;&gt;See more code at once&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#alfred-for-clipboard-buffering&quot;&gt;Smarter copy/pasting with Alfred: Clipboard buffering&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#manage-your-windows&quot;&gt;Moom/Spectacle: Window management&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;iterm&quot;&gt;iTerm&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#split-panes&quot;&gt;Split panes: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd+d&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd+shft+d&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#optimize-for-information&quot;&gt;Optimize prompt for information&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#pulling-up-previous-commands&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;!foo&lt;/code&gt; pulls last command that started with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;foo&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#navigate-iterm-output-quickly&quot;&gt;keybindings to allow quick cursor movement&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#global-key-binding&quot;&gt;global key binding to open iTerm from anywhere&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#reuse-current-working-directory-for-new-tabspanes&quot;&gt;set new tabs/panes to open from current working directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;atom&quot;&gt;Atom&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#useful-packages&quot;&gt;Misc valuable (to me) packages&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#splitting-screens-for-fun-and-profit&quot;&gt;Split screens&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#new-lines-where-you-want-them&quot;&gt;Insert new line above/below&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#find-all-the-things&quot;&gt;Global Find&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;gitgithub&quot;&gt;Git/Github&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#use-a-staging-branch-for-group-work&quot;&gt;on group projects that need a “stable” branch at all times - set default branch to “staging”&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#pull-request-template&quot;&gt;Use a PR template for fun and for profit&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#always-merge-staging-into-your-branch-before-making-a-pull-request&quot;&gt;Avoid merge conflicts by pulling in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;staging/master&lt;/code&gt; before making a PR&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#optimize-for-information&quot;&gt;Display your current branch in terminal prompt&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;chromefirefox&quot;&gt;Chrome/Firefox&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#extensions&quot;&gt;Chrome Extensions, like The Great Suspender, Vimium, etc&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#shortcuts-for-chrome&quot;&gt;Chrome shortcuts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;applications-some-free-some-not&quot;&gt;Applications (some free, some not)&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#dash-documentation-that-doesnt-suck&quot;&gt;Dash: offline (and instant) documentation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#alfred-do-anything-on-your-computer&quot;&gt;Alfred w/Powerpack: do all the things&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#flux-save-your-eyes&quot;&gt;Flux (free)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#browsing-securely-with-a-vpn&quot;&gt;PIA (VPN)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;desktopos-tweaks&quot;&gt;Desktop/OS tweaks&lt;/h1&gt;

&lt;h3 id=&quot;key-repeat-speed&quot;&gt;Key repeat speed&lt;/h3&gt;

&lt;p&gt;Holding down the delete key should delete text &lt;em&gt;quickly&lt;/em&gt;, and you shouldn’t have to wait a long time for it to start deleting text.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System Preferences &amp;gt; Keyboard&lt;/code&gt;, max out key repeat speed, minimum delay until repeat:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-29-tools_1.jpg&quot; alt=&quot;Keyboard Settings&quot; style=&quot;width: 450px; margin: 0 auto; display: block;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;see-more-code&quot;&gt;See More Code&lt;/h3&gt;

&lt;p&gt;Most of us are on Macbooks with retina screens. The default resolution of your mac doesn’t take advantage of this high-resolution capability.&lt;/p&gt;

&lt;p&gt;There’s a few different ways of showing the difference in resolution. I’ll show one way, but ultimately, you should experiment yourself with maxing out the resolution and then bumping up the text size as needed. This allows the less-important parts of your tools take up less space (like sidebars, navigation elements, etc) while leaving you more room for what matters. (Code, text)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-29-display_1.jpg&quot; alt=&quot;Keyboard Settings&quot; style=&quot;width: 650px; margin: 0 auto; display: block;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Compare the side bar in the first image to the one in the second. There’s about 25% more visible items. This is a win, in my book. Laptop screens are small enough.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-29-display_2.jpg&quot; alt=&quot;Keyboard Settings&quot; style=&quot;width: 650px; margin: 0 auto; display: block;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Change your resolution under &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System Preferences &amp;gt; Displays &amp;gt; Built-in Retina Display&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-29-display_3.jpg&quot; alt=&quot;Keyboard Settings&quot; style=&quot;width: 400px; margin: 0 auto; display: block;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;alfred-for-clipboard-buffering&quot;&gt;Alfred for clipboard buffering&lt;/h3&gt;

&lt;p&gt;Copy-paste makes the world go around. What if you want to copy two things to your clipboard, and then paste them both?&lt;/p&gt;

&lt;p&gt;Or what if you copied a URL, and then a few minutes later (and after putting more stuff on your clipboard) you decided you wanted that URL again?&lt;/p&gt;

&lt;p&gt;Enter “Clipboard buffering”. With Alfred’s &lt;a href=&quot;https://www.alfredapp.com/help/features/clipboard/&quot;&gt;Clipboard Buffering tool&lt;/a&gt; (it’s not free), you can cycle back through items you’ve copied to your clipboard.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I use this tool many times a day&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-v&lt;/code&gt; is the system default for pasting from the clipboard, so I’ve mapped my Clipboard History toggle to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-opt-v&lt;/code&gt;.&lt;/p&gt;

&lt;h3 id=&quot;manage-your-windows&quot;&gt;Manage your windows&lt;/h3&gt;

&lt;p&gt;We spend all day moving between programs and windows. Surprise surprise, there are some great tools for customizing how your desktop looks.&lt;/p&gt;

&lt;p&gt;I use &lt;a href=&quot;https://manytricks.com/moom/&quot;&gt;Moom&lt;/a&gt;, others use &lt;a href=&quot;https://www.spectacleapp.com/&quot;&gt;Spectacle&lt;/a&gt;. I prefer Moom because it has a bit more customization, but it’s up to you. Both are free.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-31-moom.jpg&quot; alt=&quot;Moom defaults&quot; style=&quot;width: 650px; margin: 0 auto; display: block;&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;spectacle-video&quot;&gt;Spectacle video&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=uulWZVXOuxs&amp;amp;list=PLwJTr6-X6O0SX5YOVZx_c7GkZPOM-eTwN&amp;amp;index=1&quot;&gt;Regis gives a great overview of using Atom and Spectacle shortcuts (YouTube)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;iterm-1&quot;&gt;iTerm&lt;/h1&gt;

&lt;p&gt;iTerm is powerful. It can also be intimidating, because it’s your window into the command line, github, and the dark depths of your machine. The more you can make it match your workflow, the less intimidating it will seem.&lt;/p&gt;

&lt;h3 id=&quot;split-panes&quot;&gt;Split Panes&lt;/h3&gt;

&lt;p&gt;You can split your iTerm panes, similar to how you might split Atom.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-d&lt;/code&gt; splits iTerm vertically. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-shift-d&lt;/code&gt; splits it horizontally. I like to have all my windows related to a certain app under a single iTerm tab, so I might have two or three panes open, and when I want to see one pane better, I’ll hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-shift-enter&lt;/code&gt; to expand the pane to fill the entire iTerm window.&lt;/p&gt;

&lt;p&gt;This is useful if I need to see a full stack-trace, or scroll back through server error messages. Once I’m done looking, I hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-shift-enter&lt;/code&gt; again, and it shrinks back to its normal size.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;cmd+shft+d splits iTerm2 horizontally. Cmd+d splits vertically. hello, Fibonacci sequence: &lt;a href=&quot;https://t.co/StnBubNoAU&quot;&gt;pic.twitter.com/StnBubNoAU&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Thompson (@josh_works) &lt;a href=&quot;https://twitter.com/josh_works/status/853240281411584001&quot;&gt;April 15, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;(When you set this up, if you’ve not already, &lt;a href=&quot;#reuse-current-working-directory-for-new-tabs-panes&quot;&gt;configure iTerm to open new tabs to your current working directory&lt;/a&gt;)&lt;/p&gt;

&lt;h3 id=&quot;optimize-for-information&quot;&gt;Optimize for Information&lt;/h3&gt;

&lt;p&gt;Your terminal prompt is that little piece of text before your cursor that is visible pretty much all the time.&lt;/p&gt;

&lt;p&gt;You spend &lt;em&gt;all day&lt;/em&gt; looking at your terminal prompt, so it’s reasonable to ask it to work for you a bit.&lt;/p&gt;

&lt;p&gt;I have two &lt;em&gt;minimum&lt;/em&gt; recommendations:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Change the color of JUST the prompt, so is contrasted compared to the output next to it.&lt;/li&gt;
  &lt;li&gt;Set up Git tab-completion AND display the current git branch in the prompt&lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id=&quot;compare-default-prompt-with-non-default&quot;&gt;Compare default prompt with non-default&lt;/h4&gt;

&lt;p&gt;As an example, where in this block of text did I enter the next command?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-29-prompt_2.jpg&quot; alt=&quot;hard to find the prompt, eh?&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hint, it’s sorta in the middle, where it says &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bash-3.2$ curl josh.works&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Compare that to this version:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-29-prompt_1.jpg&quot; alt=&quot;easier to find the prompt now, methinks&quot; /&gt;&lt;/p&gt;

&lt;p&gt;(Oops, shouldn’t be making changes on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;master&lt;/code&gt;…)&lt;/p&gt;

&lt;h4 id=&quot;configuration&quot;&gt;Configuration&lt;/h4&gt;

&lt;p&gt;To set this all up, carefully follow Michael Hartl’s instructions on his &lt;a href=&quot;https://www.learnenough.com/git-tutorial#sec-prompt_branches_and_tab_completion&quot;&gt;Learn Enough Git&lt;/a&gt; tutorial. That will give you tab completion and the current branch in your prompt.&lt;/p&gt;

&lt;p&gt;To change the color of your prompt, that’s a bit more of a hassle.&lt;/p&gt;

&lt;p&gt;Open up your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.bashrc&lt;/code&gt;, and find the line that starts with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PS1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It should have somewhere inside of it the code you just added per Michael Hartl’s tutorial. You need to update that line to the following:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PS1=&apos;\[\e[0;32m\][\W$(__git_ps1 &quot; (%s)&quot;)]$ \[\e[m\]&apos;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This just adds color codes (and color code escapes, and a bunch of other color-related formatting) to your “Prompt String 1”. It’s voodoo, and will suck away hours of your life if you let it.&lt;/p&gt;

&lt;p&gt;I wrote about this topic in more detail here: &lt;a href=&quot;https://gist.github.com/josh-works/7f2e6c82d22dca6e9fbc029c8b17703d&quot;&gt;Gist on Prompt customization&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;pulling-up-previous-commands&quot;&gt;Pulling up previous commands&lt;/h3&gt;

&lt;p&gt;In iTerm, the up arrow cycles through previously entered commands.&lt;/p&gt;

&lt;p&gt;Just as useful, though, is filtering through this list. Imagine you ran &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rspec spec/features/sessions/guest_user_can_sign_up_spec.rb&lt;/code&gt;, all the tests passed, so you did your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git add/commit/push&lt;/code&gt; workflow, and maybe some other stuff.&lt;/p&gt;

&lt;p&gt;Now you want to run that specific RSpec command again, but it might be many commands ago.&lt;/p&gt;

&lt;p&gt;If you type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;!rsp&lt;/code&gt; and hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;enter&lt;/code&gt;, iTerm will find the last command that starts with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rsp&lt;/code&gt;, and place it under your cursor. If you want to run it, hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;enter&lt;/code&gt;. I use this &lt;em&gt;all the time&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;(There’s more complex “interactive search” tools you can use, but the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;!command&lt;/code&gt; is a great starting point.)&lt;/p&gt;

&lt;h3 id=&quot;navigate-iterm-output-quickly&quot;&gt;Navigate iTerm output quickly&lt;/h3&gt;

&lt;p&gt;Since the up arrow pulls up previous commands, to scroll back through your iTerm output one line at a time, hold down &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;shift&lt;/code&gt; and hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;up arrow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To scroll one page at a time, hold down &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;shift + command&lt;/code&gt; and hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;up arrow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To get back to the bottom, let go of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;shift/command&lt;/code&gt; and hit the up or down arrow.&lt;/p&gt;

&lt;h3 id=&quot;global-key-binding&quot;&gt;Global key binding&lt;/h3&gt;

&lt;p&gt;We use alt-tab all day long, but it’s imprecise. The order of the items that you cycle through with alt-tab depends on what you last used.&lt;/p&gt;

&lt;p&gt;I like being able to jump to important programs straight away.&lt;/p&gt;

&lt;p&gt;In &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;preferences &amp;gt; keys &amp;gt; hotkey&lt;/code&gt; you can set a “system-wide hotkey”. I’ve got mine mapped to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd+shift+i&lt;/code&gt; (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;i&lt;/code&gt; for “iTerm”), and it doesn’t conflict with any other bindings on my machine. I use it dozens of times a day.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-30-iterm_1.jpg&quot; alt=&quot;Keyboard Settings&quot; style=&quot;width: 400px; margin: 0 auto; display: block;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;reuse-current-working-directory-for-new-tabspanes&quot;&gt;Reuse current working directory for new tabs/panes&lt;/h3&gt;

&lt;p&gt;Split panes are cool, but it’s a huge pain if it always opens a new tab to your root directory. You have to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd&lt;/code&gt; around just to get to where you want to be.&lt;/p&gt;

&lt;p&gt;The fix is easy. Set iTerm to use your “Present Working Directory” for new panes. When I’m pairing with other students, this is one of the first changes I recommend they make.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/17-05-30-iterm_2.jpg&quot; alt=&quot;Keyboard Settings&quot; style=&quot;width: 400px; margin: 0 auto; display: block;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;misc&quot;&gt;Misc&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=d3gujjfzAfw&amp;amp;list=PLwJTr6-X6O0SX5YOVZx_c7GkZPOM-eTwN&amp;amp;index=3&quot;&gt;Regis’ iTerm tutorial (YouTube)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;atom-1&quot;&gt;Atom&lt;/h1&gt;

&lt;p&gt;I spend quite a bit of time in Atom every day. It’s a big piece to bite off, so I’m not going to go into too much depth, and will let others do most of the talking.&lt;/p&gt;

&lt;p&gt;Here’s some useful starting points if you’re getting up and running with Atom:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=uulWZVXOuxs&amp;amp;list=PLwJTr6-X6O0SX5YOVZx_c7GkZPOM-eTwN&amp;amp;index=1&quot;&gt;Regis’ Atom/Spectacle shortcuts video&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://readwrite.com/2014/05/20/github-atom-5-tips-getting-started-tutorial-corey-johnson/&quot;&gt;Atom getting started guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;useful-packages&quot;&gt;Useful packages&lt;/h3&gt;

&lt;p&gt;Next, a few packages I like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://atom.io/packages/advanced-open-file&quot;&gt;Advanced-open-file&lt;/a&gt;: Create new directories/files inside of Atom. No need to jump to your terminal.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://atom.io/packages/indent-guide-improved&quot;&gt;indent-guide-improved&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://atom.io/packages/minimap&quot;&gt;minimap&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://atom.io/packages/multi-cursor&quot;&gt;multi-cursor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;splitting-screens-for-fun-and-profit&quot;&gt;Splitting Screens for fun and profit&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://flight-manual.atom.io/using-atom/sections/panes/&quot;&gt;Split screens/panes and move between them&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;new-lines-where-you-want-them&quot;&gt;New lines where you want them&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-enter&lt;/code&gt; makes a new line under your cursor, and places your cursor there. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-shift-enter&lt;/code&gt; makes a new line above your cursor, also places your cursor there.&lt;/p&gt;

&lt;h3 id=&quot;find-all-the-things&quot;&gt;Find all the things&lt;/h3&gt;

&lt;p&gt;Have you ever had a spelling error, but you’re not sure where in your project it is?&lt;/p&gt;

&lt;p&gt;You’re familiar with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-f&lt;/code&gt;, or “find within document”. You should also use the related &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-shift-f&lt;/code&gt;, or “find within project”. Atom will search your entire project (everything that is in the sidebar) for whatever criteria you give it.&lt;/p&gt;

&lt;p&gt;If you misspelled a method somewhere and don’t recall where, use global find to get find it.&lt;/p&gt;

&lt;p&gt;It’s got many, many uses. You’ll find them all.&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;gitgithub-1&quot;&gt;Git/Github&lt;/h1&gt;

&lt;p&gt;Oh boy. Git. It’s the most amazing thing ever, but it can be intimidating.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://imgs.xkcd.com/comics/git.png&quot; alt=&quot;Magical incantations&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Even professional developers are not completely at home with git. (I read a study about this, but now I can’t find it…)&lt;/p&gt;

&lt;p&gt;This is good news! This means as intimidating is Git may seem, we’re in good company. Any effort expended on better understanding Git will be well-spent.&lt;/p&gt;

&lt;p&gt;Many others have written about Git and how to use it far better than I ever could, so I’ll make just a few suggestions.&lt;/p&gt;

&lt;h3 id=&quot;use-a-staging-branch-for-group-work&quot;&gt;Use a staging branch for group work&lt;/h3&gt;

&lt;p&gt;If you’ve got a group project and you need the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;master&lt;/code&gt; branch to always be stable (because Heroku is always running on it, or something) change the repo settings to make a branch besides master the default branch.&lt;/p&gt;

&lt;p&gt;Just make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;staging&lt;/code&gt; the default branch for your repo, and now all your PRs will (by default) be against this branch. This is perfect, because you might find yourself often squashing bugs when merging in other’s work, and it’s way better to hotfix bugs on something that is not &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;master&lt;/code&gt;.&lt;/p&gt;

&lt;h3 id=&quot;pull-request-template&quot;&gt;Pull Request Template&lt;/h3&gt;

&lt;p&gt;When we’re first starting, a good pull request is the last thing that is on our mind. We just wanna merge in our branch without merge conflicts.&lt;/p&gt;

&lt;p&gt;As soon as you start doing group work, though, the value of explaining to the rest of the team what you’re working on will rival the importance of the actual code that you’re writing.&lt;/p&gt;

&lt;p&gt;So, when you make a pull request, I’d strongly recommend getting in the habit of giving a summary of what the new code does, making a few other standard comments, and then also adding comments to your code, calling out interesting bits and pieces.&lt;/p&gt;

&lt;p&gt;This helps your learning, this helps their learning, and this habit will serve you well for the rest of your life.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/blog/2111-issue-and-pull-request-templates&quot;&gt;It’s very easy to setup a PR template&lt;/a&gt;, and you’re welcome to copy the &lt;a href=&quot;https://github.com/josh-works/corkboard/tree/master/.github&quot;&gt;PR template my group is using right now&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;consider-merging-staging-into-your-branch-before-making-a-pull-request&quot;&gt;Consider merging &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;staging&lt;/code&gt; into your branch before making a pull request&lt;/h3&gt;

&lt;p&gt;In group work, especially if you have a branch checked out for more than a few hours (or a day), it’s possible that the “base branch” will change between when you check out your branch, and when you want to merge it back in.&lt;/p&gt;

&lt;p&gt;It will be a great service to your team if, before making your pull request for your new feature, to fetch and merge the most recent version of staging, and then merge staging into your branch.&lt;/p&gt;

&lt;p&gt;THEN make your pull request. If you do this every time you make a PR, you should pretty much never have merge conflicts, and then you and the team don’t have to try to sort all that out when merging.&lt;/p&gt;

&lt;p&gt;Then, whenever &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;staging&lt;/code&gt; is in good shape, and you want to update &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;master&lt;/code&gt;, just merge &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;staging&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;master&lt;/code&gt;, and you’re good to go!&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;chrome&quot;&gt;Chrome&lt;/h1&gt;

&lt;p&gt;You’ll spend a lot of time in your browser.&lt;/p&gt;

&lt;p&gt;There’s some keyboard shortcuts I use all the time for Chrome. Don’t try to use all at once, but test each one once or twice, decide if you like it, and then use it for a few days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;note:&lt;/strong&gt; I’ve recently migrated to Firefox, for a few reasons. All of the extensions and shortcuts are available in, and apply to, Firefox, so I’m leaving this section otherwise untouched. &lt;del&gt;I just wish Firefox had a hide/reveal bookmarks toolbar keyboard shortcut like Chrome.&lt;/del&gt; &lt;a href=&quot;/firefox-toggle-bookmark-bar-keyboard-shortcut&quot;&gt;Here’s how to hide/reveal bookmarks by keyboard shortcut in Firefox&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;shortcuts-for-chrome&quot;&gt;Shortcuts for Chrome&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-l&lt;/code&gt; puts the “focus” on the address bar. You can copy the address, paste a different one in, etc.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-shift-[&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-shift-]&lt;/code&gt; cycles left and right through your current tabs. (This tab movement works in Atom too!)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-shift-c&lt;/code&gt; opens your “element selector” in your dev tools.&lt;/li&gt;
  &lt;li&gt;the above shortcut pairs well with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-opt-i&lt;/code&gt;, which toggles your dev tools. I often hit the element selector shortcut, click the item I want to inspect, and then toggle dev tools closed again, all in a second or two.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-w&lt;/code&gt; closes the current tab.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;extensions&quot;&gt;Extensions&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/the-great-suspender/klbibkeccnjlkjkiokjodocebajanakg?hl=en&quot;&gt;The Great Suspender&lt;/a&gt; will “put to sleep” inactive tabs. Chrome is a bit of a resource hog, and this seems to help it consume less energy.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en&quot;&gt;Vimium&lt;/a&gt; gets you Vim-like navigation around your browser. I use it mostly to move up/down a page and to “click” links with the keyboard, but it can do much more than that.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm?hl=en&quot;&gt;uBlock Origin&lt;/a&gt; is so much more than an ad-blocker. I love it. &lt;a href=&quot;/take-back-your-attention&quot;&gt;You can &lt;em&gt;delete&lt;/em&gt; unwanted elements from pages (like ads), too.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;applications&quot;&gt;Applications&lt;/h1&gt;

&lt;h3 id=&quot;dash-documentation-that-doesnt-suck&quot;&gt;Dash: Documentation that doesn’t suck&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://kapeli.com/dash&quot;&gt;Dash&lt;/a&gt; is an application that lets you download documentation for just about anything with documentation. I regularly use docs for Ruby, Rails, HTML, CSS, Sass, JavaScript, MySQL, Redis, etc. With Dash, I don’t have to hop into a browser and google for things, because it’s already installed locally, and is searchable.&lt;/p&gt;

&lt;p&gt;It’s not free, but I find it worth it. (It has a free-to-use mode that makes you wait a short period of time before using it.)&lt;/p&gt;

&lt;h3 id=&quot;alfred-do-anything-on-your-computer&quot;&gt;Alfred: Do anything on your computer&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.alfredapp.com/&quot;&gt;AlfredApp&lt;/a&gt; is my favorite program on my computer, by miles. It replaces your “omnibar”, or whatever pops up when you hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd-space&lt;/code&gt;. Alfred’s workflows are where the real power shows.&lt;/p&gt;

&lt;p&gt;I use Alfred, a lot. Since Dec 29, 2014, I’ve used Alfred 59,510 times. That actually seems a bit low.&lt;/p&gt;

&lt;p&gt;I can’t give it a fraction of the praise it deserves, so here’s some “getting started with Alfred” guides that might convince you to give it a whirl.&lt;/p&gt;

&lt;p&gt;The powerpack extension is not free, but the base application is free. It’s a big step up from the default mac omnisearch thing.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.alfredapp.com/blog/tips-and-tricks/beginners-guide-to-alfred-searching-your-mac-and-the-web/&quot;&gt;Beginners guide to Alfred&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://lifehacker.com/a-beginners-guide-to-mouseless-computing-with-alfred-1596198655&quot;&gt;Lifehacker: Beginners guide to Alfred&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.maketecheasier.com/alfred-workflows-mac/&quot;&gt;Some Starter Workflows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;my-personal-favorite-workflows&quot;&gt;My personal favorite workflows&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;First, I use Alfred to bind programs to “global hotkeys”&lt;/strong&gt;. I’ve got four global hotkeys, one each for: iTerm, Atom, Firefox, and Slack. (They’re &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd + shift + i|k|l|j&lt;/code&gt;, respectively.)&lt;/p&gt;

&lt;p&gt;This means I don’t use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd + tab&lt;/code&gt; nearly as often, as I can quickly and confidently switch to whatever application I want. No guessing required. &lt;a href=&quot;https://www.alfredapp.com/help/workflows/triggers/hotkey/creating-a-hotkey-workflow/&quot;&gt;Here’s a guide on setting up your own application-toggling workflows&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next, I use Alfred to do site-specific searches.&lt;/strong&gt; For example, at Wombat, we use Jira, and everything has a ticket number. Rather than be fumbling for bookmarks, or hand-editing URLs, I just set up a simple workflow to open a given ticket.&lt;/p&gt;

&lt;p&gt;I have at least seven site-specific search workflows. &lt;a href=&quot;https://www.alfredapp.com/help/features/web-search/#custom&quot;&gt;Here’s how to set up your own custom search&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I open Alfred, type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ts[tab]&lt;/code&gt;, enter the ticket number, and hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;return&lt;/code&gt;. Boom. Ticket opens up in browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Toggle VPN.&lt;/strong&gt; I use a VPN while working, but when I shut my computer I have to re-start the VPN when I open it back up.  &lt;a href=&quot;https://www.alfredforum.com/topic/191-workflow-for-vpn-services/&quot;&gt;I use this workflow&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;flux-save-your-eyes&quot;&gt;Flux: Save your eyes&lt;/h3&gt;

&lt;strike&gt;[Flux](https://justgetflux.com/) is a neat little utility that increases the &quot;warmth&quot; of your laptop screen at night. It will save you a bunch of eye strain.&lt;/strike&gt;
&lt;p&gt;Macs now have this built in with the &lt;a href=&quot;https://support.apple.com/en-us/HT207513&quot;&gt;Night Shift&lt;/a&gt; feature.&lt;/p&gt;

&lt;h3 id=&quot;browsing-securely-with-a-vpn&quot;&gt;Browsing securely with a VPN&lt;/h3&gt;

&lt;p&gt;Do you use coffee shop wifi? If so, especially once you’re working on someone else’s product, you should consider using a Virtual Private Network.&lt;/p&gt;

&lt;p&gt;It secures your traffic from snooping, even from others who are using the network, and the network provider itself. I’ve been using &lt;a href=&quot;https://www.privateinternetaccess.com/&quot;&gt;PIA&lt;/a&gt; for two years (it’s ~$30/year) and am quite happy with it.&lt;/p&gt;

&lt;h1 id=&quot;master-your-tools&quot;&gt;Master your tools&lt;/h1&gt;

&lt;p&gt;This list is simultaneously wide-ranging, and barely scratches the surface.&lt;/p&gt;

&lt;p&gt;I aim to always improve how I use my tools and my development environment, both out of respect for the “craft” of software development, and to minimize friction between me and the things I want to do.&lt;/p&gt;

&lt;p&gt;This list barely touches all of the tools and keyboard shortcuts and small workflow modifications I use, or anyone else uses, but I hope it might help get you on the same path to efficiency.&lt;/p&gt;

&lt;p&gt;My &lt;em&gt;opinion&lt;/em&gt; on the matter is a well-organized workspace and environment will free up cognitive resources to spend on the programming challenge at hand.&lt;/p&gt;

&lt;p&gt;I’m sensitive to friction, and anytime something seems like it’s too clunky to navigate or use, I expect that there’s a better way to do it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to Ask Questions of Experts To Gain More than Just Answers</title>
   <link href="https://josh.works/better-questions"/>
   <updated>2017-05-22T12:18:52+00:00</updated>
   <id>https://josh.works/ask-better-questions</id>
   <content type="html">&lt;blockquote&gt;
  &lt;p&gt;Recently, I co-led a session at Turing with &lt;a href=&quot;https://gitlab.com/selfup&quot;&gt;Regis Boudinot&lt;/a&gt;, a Turing grad who works at &lt;a href=&quot;https://about.gitlab.com/&quot;&gt;GitLab&lt;/a&gt;.&lt;/p&gt;

  &lt;p&gt;We discussed two things:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;asking good questions&lt;/li&gt;
    &lt;li&gt;having a good workflow&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;After the session, I promised an overview of what we discussed. Here’s that overview for “Asking good questions”. &lt;a href=&quot;/developer-workflow&quot;&gt;Get info on “having a good workflow” here&lt;/a&gt;&lt;/p&gt;

&lt;/blockquote&gt;

&lt;h2 id=&quot;why-do-questions-matter&quot;&gt;Why do questions matter?&lt;/h2&gt;

&lt;p&gt;Without getting too philosophical, the process of formulating questions and finding answers to them is a big part of what makes us human.&lt;/p&gt;

&lt;p&gt;As developers, we’re asked to solve difficult problems. If we don’t happen to have all the knowledge we need for this problem readily accessible in our head, we turn to documentation and googling.&lt;/p&gt;

&lt;p&gt;On many problems, this is sufficient. On the hard ones, this will not be sufficient.&lt;/p&gt;

&lt;p&gt;We’ll need to ask for help.&lt;/p&gt;

&lt;p&gt;Since the hardest problems are also the ones we’re most likely to need help with, if we can optimize how we get help, it’ll return outsized results at advancing our skills and helping us be useful contributors to a development team.&lt;/p&gt;

&lt;p&gt;As a counterpoint, imagine you had terrible question-asking skills. In what aspects of your day-to-day would this have the largest impact?&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The things you already know how to do&lt;/li&gt;
  &lt;li&gt;The things you &lt;em&gt;don’t already know how to do&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;!--more--&gt;

&lt;p&gt;Exactly! Questions matter.&lt;/p&gt;

&lt;h2 id=&quot;traits-of-a-bad-question&quot;&gt;Traits of a bad question&lt;/h2&gt;

&lt;p&gt;Lets rollplay a bit. If you’re a student at Turing, and you have a friend considering attending Turing, and they sent you an email with the following sentence, how would you feel?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hey there, Turing sounds cool. I’d like more information. Can you send me a link to their website, let me know the tuition, and let me know what the likelihood is that I’ll graduate with a well-paid job? Thanks!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yikes.&lt;/p&gt;

&lt;p&gt;It looks like &lt;em&gt;this person didn’t do one iota of research on their own&lt;/em&gt;. Finding the website of something is Googling 101, and they’re also asking you a very complex question that you couldn’t hope to answer without more information from them. (The likelihood that they’ll graduate with a well-paid job. How do you define well-paid? How hard will they work? Do they mean a job &lt;em&gt;on the day the graduate&lt;/em&gt; or are they willing to include a job they might find in the next two weeks?)&lt;/p&gt;

&lt;p&gt;It’s also a bit of a selfish question. We’re all selfish, but this is showing an interest only in the results, and not the process.&lt;/p&gt;

&lt;p&gt;Lets look at some other bad questions. (Some detail removed to protect the guilty, but all are pulled from Slack channels over the last few days.)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I can’t get [tool everyone uses] to work and I don’t know what I’m doing wrong&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was a real DM sent to a contemporary. No additional context, nothing. Just that one message in Slack.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Does anyone know anything about [topic]?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was a message posted in a public channel where anyone can ask questions and get help from others in the community.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Does anyone have a few minutes to pair with me on [current project]?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;All of these questions were these one-liners, dropped into a public channel, where many of those that might be reading are domain experts and it is very reasonable to assume the right person with the right knowledge would see this message.&lt;/p&gt;

&lt;p&gt;All of these questions are bad because they assume the other person (the expert) is willing to ask further clarifying questions, or get wrapped into a conversation or pairing without any additional context.&lt;/p&gt;

&lt;h2 id=&quot;traits-of-a-good-question&quot;&gt;Traits of a good question&lt;/h2&gt;

&lt;p&gt;Since we’re solving a hard problem, it’s reasonable to assume that the person helping us will also agree that it is a tricky problem. Even if it’s not “tricky”, they will need to “load up” the problem space into their head to understand what’s going on.&lt;/p&gt;

&lt;p&gt;For example - if a method isn’t doing the thing you expect it to do, someone probably needs to see the following before they can even hope to offer something useful.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;the entire class&lt;/li&gt;
  &lt;li&gt;what object is being passed into the method&lt;/li&gt;
  &lt;li&gt;what object is expected&lt;/li&gt;
  &lt;li&gt;what tests you’ve written&lt;/li&gt;
  &lt;li&gt;more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means that you probably will &lt;em&gt;not&lt;/em&gt; be so lucky as to get a silver-bullet solution.&lt;/p&gt;

&lt;p&gt;At a high level, when asking for help, aim to provide the “boundaries” of the problem space at the outset.&lt;/p&gt;

&lt;p&gt;Something like&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’m having problems running migrations on my app. It WAS working a few minutes ago, now it’s not. I’ve tried dropping/resetting my tables/db, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle&lt;/code&gt; works just fine, my PG server is running, and I can access my ActiveRecord objects via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails console&lt;/code&gt;. It’s only when I try to run RSpec that I get warnings about unfinished migrations, but their recommended fix doesn’t work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This could still contain much more information, but it’s enough that someone can figure out what you’re working on, and has some context when they try to help.&lt;/p&gt;

&lt;p&gt;Contrast that question with this alternative:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Can someone help me with my migrations? They’re not working and I don’t know why.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Lets talk about question workflow. If I have a problem that I cannot resolve, I open up a markdown file and start throwing notes into it.&lt;/p&gt;

&lt;p&gt;I am to be able to answer the following questions:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;What am I trying to do?&lt;/li&gt;
  &lt;li&gt;What have I done?&lt;/li&gt;
  &lt;li&gt;What evidence am I getting that something isn’t working? An error message? Something not calculating correctly or returning the expected results?&lt;/li&gt;
  &lt;li&gt;What different approaches have I tried?&lt;/li&gt;
  &lt;li&gt;What is all of the involved code? (Yes, I’ll copy and paste blocks of code into the document.)&lt;/li&gt;
  &lt;li&gt;If the problem is in my code, what tests do I have that are related?&lt;/li&gt;
  &lt;li&gt;What are the resources I’ve looked at in pursuit of this problem? (This is usually just a link of stack overflow posts, blog posts, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once I’ve pulled all that into a single document, I’ll add a quick summary at the top, push all the links to the bottom, and organize the code snippets a bit.&lt;/p&gt;

&lt;p&gt;At this point, I’ll throw it all into a gist and pass it along to someone who is willing and able to help.&lt;/p&gt;

&lt;p&gt;I treat the entire document almost as a letter.&lt;/p&gt;

&lt;h2 id=&quot;examples&quot;&gt;Examples&lt;/h2&gt;

&lt;h3 id=&quot;minitest-setup-questions&quot;&gt;MiniTest setup questions&lt;/h3&gt;

&lt;p&gt;In Mod 1, I was having problems with MiniTest setup methods. It was slowing our tests down. I really wanted to fix it, so I sent &lt;a href=&quot;https://gist.github.com/josh-works/9a386cd033dec833b65257af6eaa4fbc&quot;&gt;this gist&lt;/a&gt; to a mentor. &lt;a href=&quot;https://gist.github.com/jasonnoble/fe58e521502c363165c708d15035fd40&quot;&gt;His answer&lt;/a&gt; was very helpful, very focused, and exactly what I needed.&lt;/p&gt;

&lt;h3 id=&quot;mysql-usage-problems&quot;&gt;MySql usage problems&lt;/h3&gt;

&lt;p&gt;In mod 2, I was trying to practice my ActiveRecord queries, which “compile down” to just SQL queries, so I was studying SQL. I was workin through a book that included tons of sample data to play with, but couldn’t load it up.&lt;/p&gt;

&lt;p&gt;I wrote &lt;a href=&quot;https://gist.github.com/josh-works/e1e05d1f0ead1eb3402f091b3b24ab99&quot;&gt;this gist&lt;/a&gt; after Ed G kindly offered to help. I sent him the gist so he could understand the problem space, and it was helpful.&lt;/p&gt;

&lt;h3 id=&quot;rails-schema-problems-related-to-the-above-mysql-data-importing&quot;&gt;Rails Schema problems (related to the above MySql data importing!)&lt;/h3&gt;

&lt;p&gt;More recently, I was having problems with the schema in a group rails app. My schema was getting loaded up with tons of tables that were nowhere to be found in my migrations! It was baffling!&lt;/p&gt;

&lt;p&gt;I sent this to our instructor:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/josh_josh_question.jpeg&quot; alt=&quot;outline of problem&quot; /&gt;&lt;/p&gt;

&lt;p&gt;That gave us a starting point, and forced me to be very thoughtful in all of the solutions I tried.&lt;/p&gt;

&lt;h2 id=&quot;optimize-for-learning-not-just-the-answer&quot;&gt;Optimize for learning, not just the answer&lt;/h2&gt;

&lt;p&gt;We often feel like we just need the right answer, and we’ll be on our way, when the truth is, the most important thing for us is better &lt;em&gt;understanding&lt;/em&gt;. In the last question, with extra tables showing up in my schema, it turns out I had two instances of Postgres running on my machine. One showed up only as a running process, the other in the postgres app. One had a bunch of table in it, and I couldn’t see it.&lt;/p&gt;

&lt;p&gt;So, after kicking around some troubleshooting, Josh figured that out, and I uninstalled both, then reinstalled just one.&lt;/p&gt;

&lt;p&gt;My understanding of Postgres on my machine is much improved, and I now have a better idea how to troubleshoot similar problems in the future.&lt;/p&gt;

&lt;p&gt;If Josh had just given me the answer, without the understanding behind it, I’d barely be improved.&lt;/p&gt;

&lt;p&gt;You should seek to get the same sort of help from those around you. It’s tempting (especially when a student in Turing) to aim for the right answer. You might think you don’t have time to deepen your understanding when you have a project due in 12 hours, but really, you don’t have time to NOT deepen your understanding.&lt;/p&gt;

&lt;h2 id=&quot;better-questions-better-everything&quot;&gt;Better questions, better everything&lt;/h2&gt;

&lt;p&gt;I am paraphrasing a recent conversation:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A mediocre developer who asks good questions and can communicate well
can  become a bigger contributor to a team than an experienced
dev who doesn’t communicate well&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, here’s a checklist for the next time you need help. Write down the answers to these questions, and you’ll get &lt;em&gt;understanding&lt;/em&gt; instead of just an answer, and whoever helps will be much more likely to enjoy the process.&lt;/p&gt;

&lt;h2 id=&quot;checklist-for-asking-questions&quot;&gt;Checklist for asking questions&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;What you are trying to do.&lt;/li&gt;
  &lt;li&gt;What steps have you taken so far?&lt;/li&gt;
  &lt;li&gt;What errors have you seen?&lt;/li&gt;
  &lt;li&gt;What sources have you consulted in your search for these answers?&lt;/li&gt;
  &lt;li&gt;What is the TL;DR?&lt;/li&gt;
  &lt;li&gt;Have you included relevant code snippets or stack traces?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This puts the burden of asking questions on &lt;em&gt;you&lt;/em&gt;, instead of the person you’re asking for help.&lt;/p&gt;

&lt;p&gt;If you don’t provide this information, the first thing the other person will ask is&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;What are you trying to do?
What steps have you taken so far?
What errors have you seen?
What have you done to try to fix this?
Can I look at some code?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://jvns.ca/blog/good-questions/&quot;&gt;How to ask good questions&lt;/a&gt; by Julia Evans&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://jvns.ca/blog/answer-questions-well/&quot;&gt;How to answer questions in a helpful way&lt;/a&gt;, also by Julia Evans&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Switching to Jekyll</title>
   <link href="https://josh.works/switching-to-jekyll"/>
   <updated>2017-05-15T12:18:52+00:00</updated>
   <id>https://josh.works/switching-to-jekyll</id>
   <content type="html">&lt;h2 id=&quot;why-i-switched-to-jekyll&quot;&gt;Why I switched to Jekyll&lt;/h2&gt;

&lt;p&gt;A few days ago, I was &lt;em&gt;really&lt;/em&gt; feeling the urge to write a short little blog post. So, I put it in a &lt;a href=&quot;https://gist.github.com/josh-works&quot;&gt;gist&lt;/a&gt; on Github.&lt;/p&gt;

&lt;p&gt;I’m an advocate of writing publicly, and making it a habit, so why was I putting it in a gist, instead of here, on my website, where I theoretically can write and publish &lt;em&gt;anything I want&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Friction&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It’s very easy for me to sketch out a quick document with embedded screenshots in a text editor. I spend most of my day in a text editor anyway, so it’s trivially easy to write a new document.&lt;/p&gt;

&lt;p&gt;I can add code snippets, links, images, and have nicely formatted text, just the way that I like it, in a gist.&lt;/p&gt;

&lt;p&gt;SquareSpace, the service I &lt;em&gt;was&lt;/em&gt; using for my website, is not designed for people who write in Markdown. SquareSpace is very good at many things, but not the things I needed. &lt;a href=&quot;http://www.practicallyefficient.com/2016/04/03/static-and-free.html&quot;&gt;Practically Efficient&lt;/a&gt; says it better than I can.&lt;/p&gt;

&lt;p&gt;So, last week, I decided that if I didn’t make my writing and publishing easy, I would probably just stop writing.
&lt;!--more--&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-is-jekyll&quot;&gt;What is Jekyll?&lt;/h2&gt;

&lt;p&gt;Jekyll is a “blog-aware static site generator that can run on Github Pages” &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;(source)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;All of these check off the “nice-to-have” boxes I’d look for. And now that I’m spending all day writing code, and inside of a text editor, and using Github, getting to merge my Git workflow with blogging is sorta perfect.&lt;/p&gt;

&lt;p&gt;Plus, Jekyll is written in Ruby, so it has lots of pieces I’m quite familiar with by now.&lt;/p&gt;

&lt;p&gt;I pulled from lots of articles others had written, to figure out all sorts of little tweaks. Here’s the list that I drew most heavily from:&lt;/p&gt;

&lt;h2 id=&quot;initial-resources-i-used-to-start&quot;&gt;Initial Resources I used to start&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://joshualande.com/jekyll-github-pages-poole&quot;&gt;Using the Poole theme&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://rck.ms/jekyll-github-pages-custom-domain-gandi-https-ssl-cloudflare/&quot;&gt;Enabling SSL connections with Github pages and a custom domain&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://joshualande.com/short-urls-jekyll&quot;&gt;setting up reasonable post short-links&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.controlfd.com/2016/05/16/add-a-mailchimp-subscriber-form-to-your-jekyll-blog.html&quot;&gt;Add email subscription box to jekyll blog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://michaelsoolee.com/google-analytics-jekyll/&quot;&gt;Google Analytics setup for Jekyll&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://coderwall.com/p/eazb7w/easily-create-blog-post-excerpts-for-jekyll-and-github-pages&quot;&gt;Add and manage post excerpts&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://gist.github.com/spiffytech/e73777e167dc5a8b6a87&quot;&gt;Ruby script to parse SquareSpace XML archive into Jekyll-friendly posts (with images!)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://elliotekj.com/2016/12/05/jekyll-create-a-list-of-all-posts-in-the-same-category/&quot;&gt;Adding “related posts” tool&lt;/a&gt; (I’m not currently satisfied w/my current implementation)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sarathlal.com/add-meta-description-in-jekyll-posts/&quot;&gt;Add meta description in Jekyll posts&lt;/a&gt; (&lt;a href=&quot;https://github.com/josh-works/josh-works.github.io/commit/d73080031d87390e165b84fcb678760f488375df&quot;&gt;This is the commit where I added it, if the above directions caused you some confusion too&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s about it. It’s been an amazing experience, porting everything over to Jekyll.&lt;/p&gt;

&lt;p&gt;There are still some modifications I want to make, like how code snippets run off the edge of the page if the lines are long, but this is lower priority.&lt;/p&gt;

&lt;p&gt;There’s still plenty for me to learn with Jekyll, but I’m getting there.&lt;/p&gt;

&lt;p&gt;Until then, I’ll probably be posting a lot more online. Since it’s so easy.&lt;/p&gt;

&lt;h2 id=&quot;additional-resources-ive-made-use-of-since-2017&quot;&gt;Additional resources I’ve made use of since 2017&lt;/h2&gt;

&lt;p&gt;Since switching to Jekyll in 2017, I’ve made additional changes. I’ll list useful resources here as I go.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/allejo/jekyll-toc&quot;&gt;Jekyll Pure Liquid Table of Contents&lt;/a&gt; Auto-generate Table of Contents, &lt;em&gt;no javascript required&lt;/em&gt;. So nice.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/allejo/jekyll-anchor-headings&quot;&gt;Jekyll Pure Liquid Heading Anchors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;misc-other-notes&quot;&gt;Misc other notes&lt;/h2&gt;

&lt;p&gt;I recently made &lt;a href=&quot;https://gist.github.com/josh-works/a78f0f904af8b18123c2b9b48387722d&quot;&gt;this gist&lt;/a&gt; to help mod 1 backend Turing students get up and running on Jekyll. I’ll convert that gist to a proper page on my website soon.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Finding an Edge</title>
   <link href="https://josh.works/finding-an-edge"/>
   <updated>2017-05-09T12:18:52+00:00</updated>
   <id>https://josh.works/finding-an-edge</id>
   <content type="html">&lt;p&gt;These last two weeks have been the hardest, or the most frustrating, of my time at Turing so far.&lt;/p&gt;

&lt;p&gt;I’ve been put a little off-balance by this difficulty, and I think I’m close to uncovering some useful tidbit or idea that will serve me well, and might serve someone else too.&lt;/p&gt;

&lt;p&gt;Several different people warned me that&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Mod 3 is just like mod 1 in terms of difficulty&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wasn’t sure what to make of that, because Mod 1 wasn’t too bad of a struggle. I think I gave myself a bad case of the “mismatched expectations”.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;expectations&quot;&gt;Expectations&lt;/h2&gt;

&lt;p&gt;Often when something seems off, a good place to start is to check your assumptions. So, I figured I’d look through mine about how I thought the last two weeks would go. What were my assumptions?&lt;/p&gt;

&lt;h3 id=&quot;my-technical-understanding-is-sufficient-to-grasp-the-new-material-and-implement-in-a-project&quot;&gt;My technical understanding is sufficient to grasp the new material and implement in a project&lt;/h3&gt;

&lt;p&gt;This week we’ve unpacked a few sizable new topics:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;oAuth/OmniAuth for user authentication (against Twitter and Github)&lt;/li&gt;
  &lt;li&gt;Using Figaro to protect sensitive environment variables&lt;/li&gt;
  &lt;li&gt;Using Faraday to handle all the HTTP traffic&lt;/li&gt;
  &lt;li&gt;OmniAuth’s stubs/testing tools&lt;/li&gt;
  &lt;li&gt;VCR to record API responses, so every time we run our tests we’re not pounding a remote API&lt;/li&gt;
  &lt;li&gt;Stubbing out all the necessary user information so we can write detailed tests, using OmniAuth config settings, VCRs, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Turns out picking up this all, weaving it together, and applying to a project is hard.&lt;/p&gt;

&lt;p&gt;I’ve not mastered this content the same that I feel like I’ve mastered other notions in the program.&lt;/p&gt;

&lt;p&gt;This is not the end of the world, but it didn’t match my (unreasonable) expectations.&lt;/p&gt;

&lt;h3 id=&quot;id-be-the-anchor-in-any-group-work&quot;&gt;I’d be the “anchor” in any group work&lt;/h3&gt;

&lt;p&gt;I’ve tried to generally be the “strong” contributor to group projects, and so far in Turing, I have been.&lt;/p&gt;

&lt;p&gt;Then this last one around, I felt like I was dragging, holding my partner back. I learned a lot, but I’d hoped that there was less to learn along the way. To her credit (and in my defense) I think she’s one of the sharpest students in the cohort, so it’s &lt;em&gt;possible&lt;/em&gt; that if I were paired with someone else, my contributions would have seemed more significant.&lt;/p&gt;

&lt;p&gt;That whole first week I felt off. Sleep deprived (dumb!) and a bit off-kilter.&lt;/p&gt;

&lt;h2 id=&quot;learnings-from-the-weeks&quot;&gt;Learnings from the weeks&lt;/h2&gt;

&lt;h3 id=&quot;trust-the-process&quot;&gt;Trust the process&lt;/h3&gt;

&lt;p&gt;I’ve still got what seems to be a passable system for gaining new (and complex) information.&lt;/p&gt;

&lt;p&gt;I started feeling underwater when I stopped following it.&lt;/p&gt;

&lt;p&gt;I can step back, return to my colorful notes and diagrams, rely on repetition and memorization and playing with the same notion quite a bit until it clicks and I can fit it into the larger product.&lt;/p&gt;

&lt;p&gt;Feeling a few steps behind is nothing in the grand scheme of things.&lt;/p&gt;

&lt;p&gt;This week did not do irreparable damage to my employability (I don’t think) so there was no real penalty.&lt;/p&gt;

&lt;h2 id=&quot;lessons-to-retain-for-later&quot;&gt;Lessons to retain for later&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Embrace uncertainty&lt;/li&gt;
  &lt;li&gt;Expect to learn a lot&lt;/li&gt;
  &lt;li&gt;Write it all down&lt;/li&gt;
  &lt;li&gt;Repetition repetition repetition&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>On Cleaner Controllers</title>
   <link href="https://josh.works/cleaner-controllers"/>
   <updated>2017-05-09T12:18:52+00:00</updated>
   <id>https://josh.works/cleaner-controllers</id>
   <content type="html">&lt;p&gt;A few days ago, I worked on a project that was mostly about serving up basic store data (modeled after Etsy) to an API.&lt;/p&gt;

&lt;p&gt;We had a few dozen end-points, and all responses were in JSON.&lt;/p&gt;

&lt;p&gt;Most of the action happened inside of our controllers, and as you might imagine, our &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;routes.rb&lt;/code&gt; file was bananas.&lt;/p&gt;

&lt;p&gt;One of the instructors made an exceptionally simple suggestion, I was embarrassed to not have seen it.&lt;/p&gt;

&lt;p&gt;It was about nesting our controllers a bit better.&lt;/p&gt;

&lt;p&gt;For context, here’s our routes for our merchants objects, relationships, and analytics:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;Rails&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;application&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;routes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;draw&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:api&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;defaults: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;format: :json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:v1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;resources&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:merchants&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;only: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:show&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:controller&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchants&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;items&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchant_items#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchant_invoices#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;customers_with_pending_invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchant_pending_customers#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;favorite_customer&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchant_favorite_customer#show&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchant_revenue#show&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;collection&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_items&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchants_most_items#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchants_most_revenue#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchants_revenue#show&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchants_find#show&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find_all&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchants_find#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;random&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/merchants_random#show&quot;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;!--more--&gt;

&lt;p&gt;Look at all the references to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;merchant&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;merchants&lt;/code&gt;! Lets count: Twenty-Four uses of the word! Dang! And this is in JUST the endpoints related to merchants! This same replication exists in our items, customers, invoices, and more.&lt;/p&gt;

&lt;p&gt;It’s also clunky to read. Every single merchants controller in the collection starts the same. That lowers the ratio of signal to noise, as a developer. No good.&lt;/p&gt;

&lt;p&gt;Hopefully someone moving through Turing behind us will take this chance for a really easy fix.&lt;/p&gt;

&lt;p&gt;And what is the fix?&lt;/p&gt;

&lt;p&gt;Here’s the file structure of all of our merchants controllers:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;├── api
│   └── v1
│       ├── merchants
│       │   ├── merchant_favorite_customer_controller.rb
│       │   ├── merchant_invoices_controller.rb
│       │   ├── merchant_items_controller.rb
│       │   ├── merchant_pending_customers_controller.rb
│       │   ├── merchant_revenue_controller.rb
│       │   ├── merchants_controller.rb
│       │   ├── merchants_find_controller.rb
│       │   ├── merchants_most_items_controller.rb
│       │   ├── merchants_most_revenue_controller.rb
│       │   ├── merchants_random_controller.rb
│       │   └── merchants_revenue_controller.rb
│       └── .
├── application_controller.rb
└── concerns
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here’s a quick mockup of what it &lt;em&gt;should&lt;/em&gt; be:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;├── api
│   └── v1
│       ├── merchants
│       │   ├── favorite_customer_controller.rb
│       │   ├── invoices_controller.rb
│       │   ├── items_controller.rb
│       │   ├── pending_customers_controller.rb
│       │   ├── revenue_controller.rb
│       │   ├── find_controller.rb
│       │   ├── most_items_controller.rb
│       │   ├── most_revenue_controller.rb
│       │   ├── random_controller.rb
│       │   └── revenue_controller.rb
│       └── merchants_controller.rb
├── application_controller.rb
└── concerns
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I moved the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;merchants_controller&lt;/code&gt; &lt;em&gt;up&lt;/em&gt; one level, to be outside of the merchants folder, and then everywhere else, I can infer that if a controller is in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;merchants/&lt;/code&gt;, it is related to the merchants class. (Rocket science!)&lt;/p&gt;

&lt;p&gt;Lets see what this does to our routes from above:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;Rails&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;application&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;routes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;draw&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:api&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;defaults: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;format: :json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:v1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;resources&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:merchants&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;only: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:show&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:controller&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;merchants&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;items&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/items#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/invoices#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;customers_with_pending_invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/pending_customers#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;favorite_customer&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/favorite_customer#show&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/revenue#show&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;collection&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_items&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/most_items#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/most_revenue#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/revenue#show&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/find#show&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find_all&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/find#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;random&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/random#show&quot;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;.&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;That looks a lot better. Half the number of references to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;merchants&lt;/code&gt; in the routes. Now… this requires renaming all the controllers, etc, so lets make that happen and see if our tests still pass.&lt;/p&gt;

&lt;p&gt;We’ll have to update a few files for each of these changes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;routes.rb&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;the associated controller (fixing the class name of the controller)&lt;/li&gt;
  &lt;li&gt;The associated view, since the expected path is determined by the controller class name.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, swap everything around, and all the tests still pass, and our routes are way more readable:&lt;/p&gt;

&lt;h2 id=&quot;update&quot;&gt;Update&lt;/h2&gt;

&lt;p&gt;So someone suggested a way to refactor even more.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d3vv6lp55qjaqc.cloudfront.net/items/0u2z2e1g131u0z450Q0I/%EF%BC%B6%EF%BD%85%EF%BD%92%EF%BD%89%EF%BD%86%EF%BD%89%EF%BD%85%EF%BD%84_%EF%BC%A1%EF%BD%83%EF%BD%83%EF%BD%8F%EF%BD%95%EF%BD%8E%EF%BD%94_on_Twitter____josh_works__sehurlburt_Nice__Btw__to_make_it_more_DRY__you_can_omit_path_reference__Rails_will_use_the_route_name_by_default__.png?v=036b7b13&quot; alt=&quot;DRY out routes&quot; /&gt;&lt;/p&gt;

&lt;p&gt;What’s that? A chance for even &lt;em&gt;more&lt;/em&gt; refactoring?&lt;/p&gt;

&lt;p&gt;I’ll take it. Back to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;routes.rb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I immediately was able to get down to relying on Rails’ “convention over configuration”, which basically means Rails is going to look in specific places for specific things. Like in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/controllers/api/v1/merchants/&lt;/code&gt; directory for most of my merchants controllers.&lt;/p&gt;

&lt;p&gt;I was able to get down to THIS with all my tests still passing:&lt;/p&gt;
&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;Rails&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;application&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;routes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;draw&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:api&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;defaults: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;format: :json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:v1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;resources&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:merchants&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;only: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:show&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:controller&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;merchants&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;items&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;items#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;invoices#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;customers_with_pending_invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/pending_customers#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;favorite_customer&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/favorite_customer#show&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/revenue_by_merchant#show&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;collection&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_items&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/most_items#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/most_revenue#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/revenue#show&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;find#show&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find_all&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;find#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;random&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;random#show&quot;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But look at these lines:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;favorite_customer&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/favorite_customer#show&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/revenue_by_merchant#show&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;collection&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_items&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/most_items#index&quot;&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/most_revenue#index&quot;&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/revenue#show&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Tests fail when I pull out those paths.&lt;/p&gt;

&lt;p&gt;When I run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rake routes&lt;/code&gt;, this is my output:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;api_v1_merchant_items GET  /api/v1/merchants/:merchant_id/items&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                           api/v1/items#index &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                      api_v1_merchant_invoices GET  /api/v1/merchants/:merchant_id/invoices&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                        api/v1/invoices#index &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
api_v1_merchant_customers_with_pending_invoices GET  /api/v1/merchants/:merchant_id/customers_with_pending_invoices&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; api/v1/merchants/pending_customers#index &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
             api_v1_merchant_favorite_customer GET  /api/v1/merchants/:merchant_id/favorite_customer&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;               api/v1/merchants/favorite_customer#show &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                       api_v1_merchant_revenue GET  /api/v1/merchants/:merchant_id/revenue&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                         api/v1/merchants/revenue_by_merchant#show &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                   most_items_api_v1_merchants GET  /api/v1/merchants/most_items&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                                   api/v1/merchants/most_items#index &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                 most_revenue_api_v1_merchants GET  /api/v1/merchants/most_revenue&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                                 api/v1/merchants/most_revenue#index &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                      revenue_api_v1_merchants GET  /api/v1/merchants/revenue&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                                      api/v1/merchants/revenue#show &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                         find_api_v1_merchants GET  /api/v1/merchants/find&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                                         api/v1/find#show &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                     find_all_api_v1_merchants GET  /api/v1/merchants/find_all&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                                     api/v1/find#index &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                       random_api_v1_merchants GET  /api/v1/merchants/random&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                                       api/v1/random#show &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                              api_v1_merchants GET  /api/v1/merchants&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                                              api/v1/merchants#index &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                               api_v1_merchant GET  /api/v1/merchants/:id&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                                          api/v1/merchants#show &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                          api_v1_item_merchant GET  /api/v1/items/:item_id/merchant&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                                api/v1/items/items_merchants#show &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
                       api_v1_invoice_merchant GET  /api/v1/invoices/:invoice_id/merchant&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;                          api/v1/invoices/invoice_merchants#show &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Lets pick apart the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pending_customers&lt;/code&gt; path.&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;api_v1_merchant_customers_with_pending_invoices GET  /api/v1/merchants/:merchant_id/customers_with_pending_invoices&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; api/v1/merchants/pending_customers#index &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;that is generated by:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;customers_with_pending_invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/pending_customers#index&quot;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;lets see what happens with&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;customers_with_pending_invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;pending_customers#index&quot;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;api_v1_merchant_customers_with_pending_invoices GET  /api/v1/merchants/:merchant_id/customers_with_pending_invoices&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;.:format&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; api/v1/pending_customers#index &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;:format&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;:json&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Interesting. It dropped the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/merchants/&lt;/code&gt; from the endpoint path. That is not what I expected, especially because it is still nested under &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;merchants&lt;/code&gt; in my routes file. Hm.&lt;/p&gt;

&lt;p&gt;Well, on further investigation, looks like the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PendingCustomersController&lt;/code&gt; didn’t even &lt;em&gt;need&lt;/em&gt; to be nested inside of /merchants. It relies on a parameter passed into it (the merchant ID) but the routes that we told it to live at doesn’t require a merchant object in the path.&lt;/p&gt;

&lt;p&gt;Rejigger some of the folder names and locations, and everything still passes.&lt;/p&gt;

&lt;p&gt;This was a really good thing for me to learn about how Rails assumes controllers and views should be organized. It feels better to not override it’s default behavior, or to be verbose in describing where controllers should go.&lt;/p&gt;

&lt;p&gt;Here’s the current routes structure, and all tests still pass:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;no&quot;&gt;Rails&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;application&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;routes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;draw&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:api&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;defaults: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;format: :json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:v1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;resources&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:merchants&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;only: &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:show&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:controller&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;merchants&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;items&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;items#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;invoices#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;customers_with_pending_invoices&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;pending_customers#index&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;favorite_customer&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;favorite_customer#show&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/revenue_by_merchant#show&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;collection&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_items&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/most_items#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;most_revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/most_revenue#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;revenue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;merchants/revenue#show&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;find#show&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find_all&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;find#index&quot;&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;random&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;to: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;random#show&quot;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I didn’t pull out the last few references to merchants, because, well, I’m short on time. But this will be helpful going forward, next time I’m building out routes.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/2w2R2D0s2s15/1__joshthompson_Joshs-MBP-55____turing_3mod_projects_rails_engine__zsh_.jpg&quot; alt=&quot;tests pass&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Tests still pass! Wahoo&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tour of D3 for Clueless Folk Like Me</title>
   <link href="https://josh.works/tour-of-d3"/>
   <updated>2017-04-19T00:00:00+00:00</updated>
   <id>https://josh.works/tour-of-d3</id>
   <content type="html">&lt;p&gt;D3 stands for &lt;a href=&quot;https://en.wikipedia.org/wiki/D3.js&quot;&gt;Data Driven Documents&lt;/a&gt;, and it’s the coolest thing ever.&lt;/p&gt;

&lt;p&gt;Check out a few examples:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.jasondavies.com/animated-bezier/&quot;&gt;Animated, interactive curves&lt;/a&gt;(dynamic)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bl.ocks.org/mbostock/9539958&quot;&gt;OMG Particles II&lt;/a&gt;(dynamic)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bl.ocks.org/mbostock/885fffe88d72b2a25c090e0bbbef382f&quot;&gt;simple map of the us&lt;/a&gt;(static) &amp;lt;= very little code&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bl.ocks.org/mbostock/4739610f6d96aaad2fb1e78a72b385ab&quot;&gt;Radial Dendrogram&lt;/a&gt;(static)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bl.ocks.org/mbostock/2d466ec3417722e3568cd83fc35338e3&quot;&gt;circle wave&lt;/a&gt;(dynamic)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bl.ocks.org/mbostock/95aa92e2f4e8345aaa55a4a94d41ce37&quot;&gt;Force-directed tree&lt;/a&gt;(dynamic) &amp;lt;= super cool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, this is the kind of stuff you can do with D3. The Front-end track at Turing gave a short lesson on D3, and I was one of two back-end folks participating. This was actually really encouraging, because they didn’t know much about d3 either.&lt;/p&gt;

&lt;p&gt;So, lets dig into D3 a bit, and do two things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Get a running d3 map running locally (we’re gonna use &lt;a href=&quot;https://bl.ocks.org/mbostock/2d466ec3417722e3568cd83fc35338e3&quot;&gt;circle wave&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Deconstruct a simple d3 project to it’s minimum components, expecting that we’ll learn something along the way.&lt;/li&gt;
&lt;/ol&gt;

&lt;!--more--&gt;
&lt;p&gt;&lt;em&gt;Note to the reader: I know _almost nothing&lt;/em&gt; about frontend tools. If you’re comfortable on the front-end, bear with my ignorance. If you, too, know nothing about the front-end, great! This should be at your level._&lt;/p&gt;

&lt;h1 id=&quot;running-circle-wave-locally&quot;&gt;Running circle-wave locally&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;you’ll need a text editor and a browser. I’m using Chrome and Atom.&lt;/li&gt;
  &lt;li&gt;you’ll need to be able to open up various files on your computer in Chrome and your text editor. My tool of choice is the command line + iterm + zsh.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;First, have a folder you can stick this all in. I’ve got &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/d3/circle-wave/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, open up the &lt;a href=&quot;https://bl.ocks.org/mbostock/2d466ec3417722e3568cd83fc35338e3&quot;&gt;circle wave project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;See where it says “index.html” on the page, followed by the code?&lt;/p&gt;

&lt;p&gt;Copy and paste all that into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.html&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Save the file, and open it in chrome. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;open -a &quot;Google Chrome&quot; index.html&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;open index.html&lt;/code&gt;, run from the folder holding the file, should get it opened up for you. If it’s opening it in finder or something, google around to figure out what works for you.&lt;/p&gt;

&lt;p&gt;At this point, you &lt;em&gt;should&lt;/em&gt; have opened up the file on your machine. You’ll know this because the URL is something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;file:///Users/joshthompson/turing/2mod/self_study/d3/circle_wave/index.html&lt;/code&gt;, and you should see the circle-wave animation running.&lt;/p&gt;

&lt;h2 id=&quot;breaking-things&quot;&gt;Breaking things&lt;/h2&gt;

&lt;p&gt;Lets deconstruct what’s going on a bit. Open up Chrome’s Dev Tools (cmd+shift+i) and look at the code. Tab over to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;elements&lt;/code&gt;, and it should look pretty simple, pretty static.&lt;/p&gt;

&lt;p&gt;Next, lets &lt;em&gt;inspect&lt;/em&gt; just the circle wave itself. Open up the “selection tool” (it’s the mouse icon in a box on the top left side of your dev-tools toolbar. The shortcut is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd+shft+c&lt;/code&gt; and mouseover &lt;em&gt;just&lt;/em&gt; the circle itself.&lt;/p&gt;

&lt;p&gt;Now it’s a bit strange. You should get a slowly-moving box with rapidly-changing x/y values:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/3t2B3j0E450X/Screen%20Recording%202017-04-01%20at%2003.17%20PM.gif&quot; alt=&quot;box doing stuff&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When you click on it, you’ll see the values in your HTML going bananas:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/0m1p151z0u0p/index_html.png&quot; alt=&quot;crazy scrolling values&quot; /&gt;&lt;/p&gt;

&lt;p&gt;it looks like all that is happening inside of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;path stroke=&quot;cyna&quot; style=&quot;mix-blend-mode: darken;&quot; d= {crazy values here}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Lets play with these values for a bit. In the browser, double-click on the “cyan” element. (you might not be seeing cyan, but have a different color. it depends on which line you managed to click on above.)&lt;/p&gt;

&lt;p&gt;Change it to red, or green, or whatever. When I changed it (a few times) at one point the element got centered way away from everything else, and looked super crazy.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/162A1j3O3d0O/index_html.png&quot; alt=&quot;broke this line&apos;s centering&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;d3-docs-console-changing-values&quot;&gt;D3 Docs, console, changing values&lt;/h2&gt;

&lt;p&gt;Looking through the code, there’s a few things that jump out at me:&lt;/p&gt;

&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;d3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;What’s the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.now&lt;/code&gt; method on d3? The &lt;a href=&quot;https://github.com/d3/d3-timer/blob/master/README.md#now&quot;&gt;docs&lt;/a&gt; say it just picks the current time value, sorta like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Time.now&lt;/code&gt; in Ruby.&lt;/p&gt;

&lt;p&gt;Popping into the dev tools console, lets try &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;d3.now()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ah, interesting. values. And in the code, it’s calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;d3.now() / 1000;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Looks like that returns a random number between (maybe) 1..100, with many decimal points.&lt;/p&gt;

&lt;p&gt;I’m gonna try “hardcoding” the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;t&lt;/code&gt; value in the code I’ve copied into Atom.&lt;/p&gt;

&lt;p&gt;When I changed&lt;/p&gt;

&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;d3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;to&lt;/p&gt;

&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;44.328915&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;the animation is frozen. It just starts and doesn’t move. So I think d3.now is pulling an &lt;em&gt;always new&lt;/em&gt; value for time. This must be what makes the circle move at a consistent pace. (Or I’m totally wrong. who knows)&lt;/p&gt;

&lt;p&gt;That makes sense, though. Here’s where that time variable is being used:&lt;/p&gt;

&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
   &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;d3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;PI&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;pow&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;t&lt;/code&gt; is talking to both &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cos&lt;/code&gt; functions.&lt;/p&gt;

&lt;p&gt;Digging into that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cos&lt;/code&gt; function, I looked in the D3 docs, and it doesn’t have a Math module. Turns out that’s just JavaScript. &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cos&quot;&gt;JavaScript’s Math.cos()&lt;/a&gt; for the curious.&lt;/p&gt;

&lt;h2 id=&quot;d3curvelinearclosed&quot;&gt;d3.curveLinearClosed&lt;/h2&gt;

&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;d3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;radialLine&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;curve&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;d3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;curveLinearClosed&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;angle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;d3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;PI&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;pow&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;cos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;That &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curveLinearClosed&lt;/code&gt; is interesting. D3’s docs indicate that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curveLinear&lt;/code&gt; is also a valid option. Lets try it out.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/2S153W1b1N36/index_html.png&quot; alt=&quot;non-connected lines&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Makes sense. The &lt;a href=&quot;https://github.com/d3/d3-shape/blob/master/README.md#curveLinear&quot;&gt;docs&lt;/a&gt; say the difference between curveLinear and curveLinearClosed is if there’s a line drawn between the first and last element in the line.&lt;/p&gt;

&lt;p&gt;the first var block looks interesting:&lt;/p&gt;

&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;svg&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;d3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;svg&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;width&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;svg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;attr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;height&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;svg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;attr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;angles&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;d3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;PI&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;PI&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I’m curious about that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;angles&lt;/code&gt; value. d3.range(something complicated) gives… what exactly?&lt;/p&gt;

&lt;p&gt;Over to the console:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;d3.range(0, 2 * Math.PI, Math.PI / 200);
=&amp;gt; Array[400]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Well, what’s in the array?&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;x.forEach(
    console.log)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;(pardon my bad JavaScript syntax. I’ve not done much with it before today…)&lt;/p&gt;

&lt;p&gt;And that printed a &lt;em&gt;ton&lt;/em&gt; of stuff to the console.&lt;/p&gt;

&lt;p&gt;Turns out theres a better way to see what’s in an array. Just click the arrow next to it, and you can open it up.&lt;/p&gt;

&lt;p&gt;So, looks like this array is composed of four ranges: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[0...99],[100...199],[200...299],[300...399]&lt;/code&gt;. Each of those has a bunch more values inside, like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;1: 0.015707963267948967
2: 0.031415926535897934
3: 0.0471238898038469
4: 0.06283185307179587
5: 0.07853981633974483
6: 0.0942477796076938
7: 0.10995574287564278
8: 0.12566370614359174
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Crazy. There’s some mad mathing going on in here.&lt;/p&gt;

&lt;p&gt;OK, in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;svg.append(&quot;g&quot;)&lt;/code&gt;, that’s how D3 talks to (or about) SVGs. it’s “Grouping”, I believe.&lt;/p&gt;

&lt;p&gt;Lets see how much we can delete and still have something working:&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Playing with the HTTP send/response cycle in Ruby, without Faraday (&quot;HTTP Yeah You Know Me&quot; project)</title>
   <link href="https://josh.works/playing-with-http-send-response"/>
   <updated>2017-04-07T00:00:00+00:00</updated>
   <id>https://josh.works/playing-with-the-http-sendresponse-cycle-in-ruby</id>
   <content type="html">&lt;p&gt;As part of the &lt;a href=&quot;http://backend.turing.io/module1/projects/http_yeah_you_know_me&quot;&gt;HTTP Server&lt;/a&gt; project.&lt;/p&gt;

&lt;p&gt;First, I’m working through &lt;a href=&quot;http://practicingruby.com/articles/implementing-an-http-file-server&quot;&gt;Practicing Ruby’s “Implementing an HTTP File Server”&lt;/a&gt; for general practice and understanding.&lt;/p&gt;

&lt;p&gt;I’m going to use &lt;a href=&quot;https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en&quot;&gt;Postman&lt;/a&gt; to capture traffic and try to replicate some of the things the guides reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lastly, I just found Jeff Casamir’s walkthrough of almost everything I’ve discovered in the last week. Save yourself the time, and go read &lt;a href=&quot;https://github.com/turingschool/curriculum/blob/master/source/projects/http_yeah_you_know_me-addendum.markdown&quot;&gt;it here&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;finding-get-requestsresponses-in-the-wild&quot;&gt;Finding GET requests/responses in the wild&lt;/h2&gt;

&lt;p&gt;First, I need to configure postman to show request/response headers, like what the guides indicate:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# HTTP Request
GET /file.txt HTTP/1.1
User-Agent: ExampleBrowser/1.0
Host: example.com
Accept: */*

# HTTP Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 13
Connection: close

hello world
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Turns out Postman cannot do this caputuring by default.&lt;/p&gt;

&lt;p&gt;So, follow &lt;a href=&quot;http://stackoverflow.com/questions/33793629/postman-how-to-see-request-with-headers-and-body-data-with-variables-substitut&quot;&gt;these instructions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lets first look at some get requests in the wild:&lt;/p&gt;

&lt;p&gt;Using Postman, I made a get request for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;turing.io&lt;/code&gt;. I get back lots of HTML, etc. But I want to see the headers. The “Headers” tab in the Postman request isn’t really helpful.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d3vv6lp55qjaqc.cloudfront.net/items/1p0H3m1L0o3O231x0L2V/Postman.jpg&quot; alt=&quot;What does all this mean? Doesn&apos;t seem to correspond at all to the guides I&apos;m working through&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, we’ll look at “network traffic” per the following:&lt;/p&gt;

&lt;p&gt;right click inside postman &amp;gt; “inspect” &amp;gt; Network tab &amp;gt; “clear” the screen, if anything is in it, &amp;gt; switch back to postman, re-send the GET request &amp;gt; switch back to “inspect window”.&lt;/p&gt;

&lt;p&gt;Looks like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d3vv6lp55qjaqc.cloudfront.net/items/0J1a3G1d0T2E1B120H0O/Screen%20Recording%202017-02-11%20at%2008.24%20AM.gif&quot; alt=&quot;this looks much better&quot; /&gt;&lt;/p&gt;

&lt;p&gt;OK, cool. This stuff looks promising: 
&lt;img src=&quot;https://d3vv6lp55qjaqc.cloudfront.net/items/3d0E0O3s0D2H3w400N3d/Developer_Tools_-_chrome-extension___fhbjgbiflinjbdggehcddcbncdddomop_html_requester_html.jpg&quot; alt=&quot;a hah!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Everything I highlighted corresponds to items mentioned in the instructions. This is approaching “interesting”, and I feel like there might be an insight around the corner.&lt;/p&gt;

&lt;h2 id=&quot;setting-up-my-own-requests-in-ruby-seeing-headers-in-postman&quot;&gt;Setting up my own requests in Ruby, seeing headers in Postman&lt;/h2&gt;

&lt;p&gt;So, I can find the headers for any GET request I might make in the wild, so now I’m going to try to do the same setup with my own little ruby server, per &lt;a href=&quot;http://practicingruby.com/articles/implementing-an-http-file-server&quot;&gt;this guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’m following the author’s instructions to:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;To begin, let’s build the simplest thing that could possibly work: a web server that always responds “Hello World” with HTTP 200 to any request&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’m writing everything in the http_yeah_you_know_me directory. I’ll delete it before pushing a final project version to Github.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;socket&apos;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;TCPServer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;localhost&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2345&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Turns out TCPServer is a &lt;a href=&quot;http://ruby-doc.org/stdlib-2.4.0/libdoc/socket/rdoc/TCPServer.html&quot;&gt;Ruby class&lt;/a&gt;, just like an enumerable or array or hash or Fixnum or NilClass, etc. Cool.&lt;/p&gt;

&lt;p&gt;It’s got some methods that I won’t worry about right now.&lt;/p&gt;

&lt;p&gt;Moving on:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kp&quot;&gt;loop&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;accept&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;request&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;gets&lt;/span&gt;

  &lt;span class=&quot;no&quot;&gt;STDERR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Hello World!&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;HTTP/1.1 200 OK&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
               &lt;span class=&quot;s2&quot;&gt;&quot;Content-Type: text/plain&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; 
               &lt;span class=&quot;s2&quot;&gt;&quot;Content-Length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;bytesize&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; 
               &lt;span class=&quot;s2&quot;&gt;&quot;Connection: close&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The loop seems interesting. I tested the simple_server.rb file before writing this, and it seemed that the socket closed as soon as a single request was made. (I.E. I’d start the “server”, and as soon as I interacted with it in any way, it would do something and close. So I wonder if this loop will keep the server open.&lt;/p&gt;

&lt;p&gt;Please read through the commented version of what I’m writing above. It’s a good explenation, but I’ve noticed something interesting. We’re printing a HTTP Response. See the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTTP/1.1 200OK&lt;/code&gt; in the first line? Does that look familiar?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/3k3U291S0A3O/Developer_Tools_-_chrome-extension___fhbjgbiflinjbdggehcddcbncdddomop_html_requester_html.jpg&quot; alt=&quot;looks like we&apos;re writing some of this header&quot; /&gt;&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;close&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;That first line is, according to the comments, the required new-line to tell the server (or something) that the header is over and the body content is coming. The response references a previously defined variable of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;response = &quot;Hello World!\n&quot;&lt;/code&gt;, so we’re printing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hello world&lt;/code&gt; as the content.&lt;/p&gt;

&lt;p&gt;Lets try to fire this thing up. Save file, run as a program from the command line, and visit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://localhost:2345/anything&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Looks like it worked:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/1s2Y2X053e3y/localhost_2345_anything.jpg&quot; alt=&quot;printed to the browser&quot; /&gt;&lt;/p&gt;

&lt;p&gt;But it’s not very exciting. Lets get back into Postman and try to dig deeper:&lt;/p&gt;

&lt;p&gt;Now we’re getting more. I can see every parameter passed through to the server, &lt;em&gt;and it is staying open&lt;/em&gt;! (Put a flag in that. The “simple server” we made for HTTP_yeah_you_know_me can be kept open with a loop. Cool.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/291k1e3Q0740/Screen%20Recording%202017-02-11%20at%2008.51%20AM.gif&quot; alt=&quot;postman gif&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And, as the author mentioned in the tutorial, this seems to be working:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  &lt;span class=&quot;c1&quot;&gt;# Log the request to the console for debugging&lt;/span&gt;
  &lt;span class=&quot;no&quot;&gt;STDERR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://cl.ly/1c3d1V1Q0i2Q/1____turing_module1_projects_http_yeah_you_know_me_experiments__ruby_.jpg&quot; alt=&quot;STDERR printed to screen. I bet this is useful for later&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And, as recommended, open up another window and run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl --verbose -XGET http://localhost:2345/anything_you_want_to_put_here&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I like to understand shell commands when I run them, so if you look at the MAN pages for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl&lt;/code&gt;, you can find what each of those flags means.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl --verbose&lt;/code&gt; means “curl talks a lot”, and more importantly, lines beginning with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;&lt;/code&gt; is &lt;em&gt;header data sent by curl&lt;/em&gt;, and lines beginning with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt; is &lt;em&gt;header data received by curl&lt;/em&gt;. Lines beginning with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*&lt;/code&gt; is additional info added by CURL.&lt;/p&gt;

&lt;p&gt;I suspect this will be important.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-XGET&lt;/code&gt; is a flag that, according to the MAN page, “specifies custom request method”. the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-X&lt;/code&gt; lives by itself, and whatever follows is what it makes as the request method, so &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-XGET&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-XPOST&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-XDELETE&lt;/code&gt; are all probably valid uses of the flag.&lt;/p&gt;

&lt;p&gt;Here’s the output for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl --verbose -XGET htpp://localhost:23454/whatever_blah_blah_blah&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;experiments &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;setup&lt;span class=&quot;o&quot;&gt;)]&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;curl &lt;span class=&quot;nt&quot;&gt;--verbose&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-XGET&lt;/span&gt; http://localhost:2345/whatever_blah_blah_blah
Note: Unnecessary use of &lt;span class=&quot;nt&quot;&gt;-X&lt;/span&gt; or &lt;span class=&quot;nt&quot;&gt;--request&lt;/span&gt;, GET is already inferred.
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;   Trying ::1...
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; TCP_NODELAY &lt;span class=&quot;nb&quot;&gt;set&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; Connected to localhost &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;::1&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; port 2345 &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;c&quot;&gt;#0)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; GET /whatever_blah_blah_blah HTTP/1.1
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; Host: localhost:2345
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; User-Agent: curl/7.52.1
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; Accept: &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;/&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;lt; HTTP/1.1 200 OK
&amp;lt; Content-Type: text/plain
&amp;lt; Content-Length: 13
&amp;lt; Connection: close
&amp;lt;
Hello World!
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; Curl_http_done: called premature &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; 0
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; Closing connection 0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Cool. We’ve got data sent by curl (prepended with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;&lt;/code&gt;), data received (prepended with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt;), what is actually passed through (the one line without any characters at the beginning) and of course, additional data returned by CURL. (begins with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Phew. Learning some stuff, eh? I still don’t know what most of this means, but it’s building out a mental model. So, keep experimenting. You’re typing all these commands yourself, right? no copy-pasta from here. That’ll keep you from learning as much.&lt;/p&gt;

&lt;h2 id=&quot;congrats&quot;&gt;Congrats!&lt;/h2&gt;

&lt;p&gt;This is the end of the first section of the post, building a simple server. Now, moving along, gonna build a more complex one.&lt;/p&gt;

&lt;p&gt;This is where I look over my notes, take a walk, and get some coffee. This is a lot of work, so let it sink in and consolidate.&lt;/p&gt;

&lt;h1 id=&quot;serving-files-over-http&quot;&gt;Serving files over HTTP&lt;/h1&gt;

&lt;p&gt;I’m now working through the second half of &lt;a href=&quot;http://practicingruby.com/articles/implementing-an-http-file-server&quot;&gt;this tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;He says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;For each incoming request, we’ll parse the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Request-URI&lt;/code&gt; header and translate it into a path to a file within the server’s public folder.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What’s the request URI? How’s it different from a URL? I’m not sure, but I can infer some things. Mostly, looking at some of the results of poking around in different pages in Postman, and looking at the results, I think we can figure this out. (Googling around for “URI vs URL didn’t help a lot)&lt;/p&gt;

&lt;p&gt;We know that the first line of a HTTP Request looks like this: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GET / HTTP/1.1&lt;/code&gt;. This is three things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;GET is the method.&lt;/li&gt;
  &lt;li&gt;/ is the “path”&lt;/li&gt;
  &lt;li&gt;HTTP/1.1 is the protocal (or possibly called the “scheme”).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, if I go to the root of a website (like www.turing.io) the header will be: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GET / HTTP/1.1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If I go to a specific page (or &lt;em&gt;resource&lt;/em&gt;) I’ll go to www.turing.io/our-team. What do you think the GET request would look like then? Here’s my guess:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GET /our-team HTTP/1.1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Lets fire it up in POSTMAN and see:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/2s3P2z1e0J40/Developer_Tools_-_chrome-extension___fhbjgbiflinjbdggehcddcbncdddomop_html_requester_html.jpg&quot; alt=&quot;looks promising&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Cool. So the path is just &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;website.com/&amp;lt;the_path&amp;gt;&lt;/code&gt;. Or, to tie it into ruby-speak, when we &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require&lt;/code&gt; another file, we define its from the root directory. Similar idea with the URI.&lt;/p&gt;

&lt;p&gt;Onward.&lt;/p&gt;

&lt;p&gt;First bit of code in the second file. (I’d start a new file from scratch, and type every line…)&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;socket&apos;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;uri&apos;&lt;/span&gt;

&lt;span class=&quot;no&quot;&gt;WEB_ROOT&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;./public&apos;&lt;/span&gt;

&lt;span class=&quot;no&quot;&gt;CONTENT_TYPE_MAPPING&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;s1&quot;&gt;&apos;html&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;text/html&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;s1&quot;&gt;&apos;txt&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;text/plain&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;s1&quot;&gt;&apos;png&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;image/png&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;s1&quot;&gt;&apos;jpg&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;image/jpeg&apos;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;no&quot;&gt;DEFAULT_CONTENT_TYPE&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;application/octet-stream&apos;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Makes sense, except I have no idea what an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;octet-stream&lt;/code&gt; is. Don’t really care, though. This just is mapping input values to something that our HTTP server can understand, I believe.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;content_type&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;ext&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;extname&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;last&lt;/span&gt;
  &lt;span class=&quot;no&quot;&gt;CONTENT_TYPE_MAPPING&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ext&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;DEFAULT_CONTENT_TYPE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We’ve seen &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;File.extname&lt;/code&gt; before, when doing FileIO stuff. So this is taking the file extension, splitting it from the file name, and trying to match it to the hash we just wrote. If it matches, it’ll pull and do something with the matching value. I.E. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jpg&lt;/code&gt; =&amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;image/jpeg&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Onward, a bunch of other stuff that is explained in the commented out portions of the tutorial, and I barely understand it, so skipping them.&lt;/p&gt;

&lt;p&gt;We see this again:&lt;/p&gt;

&lt;p&gt;(You typed it out by hand, right?)&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kp&quot;&gt;loop&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;accept&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;request_line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;gets&lt;/span&gt;

  &lt;span class=&quot;no&quot;&gt;STDERR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;request_line&lt;/span&gt;

  &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;requested_file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request_line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;exist?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;directory?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;rb&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;HTTP/1.1 200 OK&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
                  &lt;span class=&quot;s2&quot;&gt;&quot;Content-Type: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;content_type&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
                  &lt;span class=&quot;s2&quot;&gt;&quot;Content-Length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
                  &lt;span class=&quot;s2&quot;&gt;&quot;Connection: close&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

      &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

      &lt;span class=&quot;no&quot;&gt;IO&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;copy_stream&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;message&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;File not found&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;HTTP/1.1 404 Not Found&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
                &lt;span class=&quot;s2&quot;&gt;&quot;Content-Type: text/plain&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
                &lt;span class=&quot;s2&quot;&gt;&quot;Content-Length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
                &lt;span class=&quot;s2&quot;&gt;&quot;Connection: close&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;message&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I was curious about all the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\r\n&lt;/code&gt; characters. It’s obviously something to do with a line break.&lt;/p&gt;

&lt;p&gt;On &lt;a href=&quot;http://stackoverflow.com/questions/4415654/which-line-break-in-php-mail-header-r-n-or-n&quot;&gt;stack overflow&lt;/a&gt;, I found this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The CRLF &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\r\n&lt;/code&gt;, should be used according to the php documentation. Also, to conform to the RFC 2822 spec lines must be delimited by the carriage return character, CR &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\r&lt;/code&gt; immediately followed by the line feed, LF &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\n&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Seems like it’s a &lt;em&gt;Carriage Return Line Feed&lt;/em&gt; symbol, native to PHP, that inserts a really “hard” line break. That makes since, since earlier in the guide, the author mentioned that HTTP request/responses are very sensitive to line breaks and white spaces. So, I’m flagging this as “important” for later use.&lt;/p&gt;

&lt;p&gt;And, keep following the instructions. I got it to serve up an /index.html page by default, and downloaded a few other files that I “stored” in a public directory in the same place as the server-generation script.&lt;/p&gt;

&lt;p&gt;So, I feel like I’ve got my head a little more wrapped around server stuff in Ruby. Writing it out helps me a bit, maybe will be helpful to others, too.&lt;/p&gt;

&lt;h1 id=&quot;play-around-with-building-your-own-http-response---live&quot;&gt;Play around with building your own HTTP Response - LIVE!&lt;/h1&gt;

&lt;p&gt;I’m keeping notes for myself and my own understanding - I’m not good at teaching that which I barely can wrap my head around, so… I apologize for the upcoming disconnectedness or holes in reasoning.&lt;/p&gt;

&lt;p&gt;I’ve really, realy wanted to get a tool up and running that lets me talk, as a server, to something that’s expecting a given response. This is so I can get one level of abstraction lower to understand these HTTP requests/responses.&lt;/p&gt;

&lt;p&gt;I just figured out how to do it.&lt;/p&gt;

&lt;p&gt;We’ll use two tools, both already existing in your terminal:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;nc (Stands for “Net Cat”)&lt;/li&gt;
  &lt;li&gt;CURL (stands for C-URL? “see URL”?)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I strongly recommend downloading and installing &lt;a href=&quot;https://github.com/tldr-pages/tldr&quot;&gt;tldr&lt;/a&gt;, as it will let you more quickly explore terminal commands. We’ll be using “flags” for both the above utilities. (a flag makes a program do something other than it’s default. Like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ls&lt;/code&gt; vs &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ls -l&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;You’ll need two terminal windows side by side, like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/0Y0K180V0Q3q/1____turing_module1_projects_http_yeah_you_know_me__nc_.jpg&quot; alt=&quot;side by side&quot; /&gt;&lt;/p&gt;

&lt;p&gt;On the left is netcat, on the right is CURL.&lt;/p&gt;

&lt;p&gt;I started the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nc&lt;/code&gt; command on the left with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nc -l 9090&lt;/code&gt;. If you’re reading this, please, please install the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tldr&lt;/code&gt; tool and run (in your terminal) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tldr nc&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now, look up what &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-l&lt;/code&gt; does.&lt;/p&gt;

&lt;p&gt;On the right, I’ve got CURL, running as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl -v localhost:9090&lt;/code&gt;. Look it up in TLDR, tell me what -v does. (Hint, i’ve outlines it above.)&lt;/p&gt;

&lt;p&gt;Here’s using them in tandem: 
&lt;img src=&quot;https://cl.ly/1D3x2W1G3K3n/Screen%20Recording%202017-02-14%20at%2012.57%20PM.gif&quot; alt=&quot;gif of terminal utilities&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can write, line by line, your own valid header. You’ll notice it ends whenever you add a new-line character, and when you DO try to send actual content, if you get the “content-length” figure wrong, it’ll cut you off.&lt;/p&gt;

&lt;p&gt;example:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/44011q3R0r0E/Screen%20Recording%202017-02-14%20at%2012.59%20PM.gif&quot; alt=&quot;gif of building a header and getting cut off&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;i-want-to-talk-to-my-ruby-program-now&quot;&gt;I want to talk to my ruby program now&lt;/h1&gt;

&lt;p&gt;I feel lik I can use Netcat to impersonate a client (or server? still not sure) and talk to my ruby program (which is operating as a server…) So… lets do that.&lt;/p&gt;

&lt;p&gt;Here’s the ruby I’m running:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;pry&apos;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;socket&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;HTTP&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:server&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;TCPServer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9090&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;server&apos;s up, capiTAN&quot;&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;receive_request_send_response&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;accept&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;whole_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;gets&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;empty?&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;whole_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;whole_response&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;holy what the fuck&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&quot;&lt;/span&gt;
    
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;server&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;receive_request_send_response&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;When I run the ruby program, it just hangs. Which means it’s stuck in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;while client = server.accept&lt;/code&gt;. When I run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl -v localhost:9090&lt;/code&gt; it too just sits and waits. Everyone is waiting for a response, but not even a header is sent, else &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl&lt;/code&gt; would have shown&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; header data
&amp;gt; sent by 
&amp;gt; curl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So, CURL doesn’t have anything to send to. I wonder why.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nc&lt;/code&gt; has an option. Checking out &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tldr nc&lt;/code&gt; the first option says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Connect to a certain port (you can then write to this port):
  nc ip_address port&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good enough for me.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nc localhost 9090&lt;/code&gt; doesn’t do anything in either the ruby program or NC.&lt;/p&gt;

&lt;p&gt;Lets try submitting a well-formatted HTTP request, and see what happens&lt;/p&gt;

&lt;p&gt;I tried typing in exactly what CURL had sent last time:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; GET / HTTP/1.1
&amp;gt; Host: localhost:9090
&amp;gt; User-Agent: curl/7.52.1
&amp;gt; Accept: */*
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and got nothing. but that’s OK, cuz my program (right now) isn’t showing me the captured HTTP request. Lets modify it to do that.&lt;/p&gt;

&lt;p&gt;…&lt;/p&gt;

&lt;p&gt;…&lt;/p&gt;

&lt;p&gt;still trying to get this to work. Rolling back to a “known good” state w/my ruby program that captures server data.&lt;/p&gt;

&lt;p&gt;Oh, worth noting:&lt;/p&gt;

&lt;p&gt;if you see something that has this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;GET / HTTP/1.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;What is it? A request or a response?&lt;/p&gt;

&lt;p&gt;How about this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;HTTP/1.1 200 OK
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The first one is a &lt;em&gt;request&lt;/em&gt;, the latter a &lt;em&gt;response&lt;/em&gt;. I’m starting to not confuse them.&lt;/p&gt;

&lt;p&gt;Boom, did it. First, I rolled back to the “server” we wrote as part of the tutorial I linked above.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;socket&apos;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;tcp_server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;TCPServer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9292&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tcp_server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;accept&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;ready for a request&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;request_lines&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;gets&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;empty?&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;request_lines&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;I (the server) just got this request:&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;request_lines&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;inspect&lt;/span&gt;


&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;I (the server) am sending response.&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;pre&amp;gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;request_lines&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;/pre&amp;gt;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;output&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;http/1.1 200 ok&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;date: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;%a, %e %b %Y %H:%M:%S %z&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;server: ruby&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-type: text/html; charset=iso-8859-1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Wrote this response:&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;close&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Response complete, exiting.&quot;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I started that, and then in a different tab ran &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nc localhost 9292&lt;/code&gt; (please note I’m mixing up some port numbers here, so don’t just copy/paste and expect any of this to work.)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/252a113I3B2A/1____turing_module1_projects_http_yeah_you_know_me_lib__bash_.jpg&quot; alt=&quot;it&apos;s working!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, now the server will capture correctly-formatted HTTP requests and print them. Now lets build our own HTTP request in Netcat&lt;/p&gt;

&lt;p&gt;Aww, yeah. Got it working. Check it out:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cl.ly/171O3E1b3b3u/1____turing_module1_projects_http_yeah_you_know_me_lib__bash_.jpg&quot; alt=&quot;built my own fake HTTP request&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’m slowly (very slowly) building a mental map of what’s going on behind the scenes, but this feels like a good realization.&lt;/p&gt;

&lt;h1 id=&quot;back-to-the-class-project-and-iteration-0&quot;&gt;Back to the class project and iteration 0&lt;/h1&gt;

&lt;p&gt;So we now know exactly what this is doing:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;gets&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;empty?&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;request_lines&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;It’s taking in header data from the client making the HTTP &lt;em&gt;request&lt;/em&gt;, and ONLY header data. As soon as it gets a blank line (which is the universal sign for “end of header data”) it stops adding new lines to the header data.&lt;/p&gt;

&lt;p&gt;I’m restarting at Iteration 0, but this time putting everything in a class and methods. I’m not testing yet, that’ll come later.&lt;/p&gt;

&lt;p&gt;I’ve also not touched Faraday. ¯_(ツ)_/¯&lt;/p&gt;

&lt;p&gt;OK, got Iteration working, inside of a class:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;pry&apos;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;socket&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;HTTP&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:server&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_accessor&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:client_response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:counter&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;TCPServer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9090&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@client_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;c1&quot;&gt;# note to myself in terminal when this gets hit.&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;server&apos;s up, capiTAN&quot;&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;send_message&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;accept&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;gets&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;empty?&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;client_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;c1&quot;&gt;# assign a big block of text to a string with %{text}. New lines get \n auto-added&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%{&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;
          #{client_response.join(&quot;\n&quot;)}
          this server has been (re)started #{counter} times
          &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;\n}&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;HTTP/1.1 200 OK&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;date = &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%Y-%B-%d, %l:%M %P&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;server: ruby&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-type: text/html; charset=UTF-8&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

      &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;
      &lt;span class=&quot;vi&quot;&gt;@counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;my_server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;my_server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;send_message&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I can hit it in Postman or with CURL, and everything is expected. It’s ugly, but damnit, it works.&lt;/p&gt;

&lt;h1 id=&quot;iteration-1&quot;&gt;Iteration 1&lt;/h1&gt;

&lt;p&gt;I’m thinking I just need to add the HTML &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; tags to pretty-format the returned text.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;pry&apos;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;socket&apos;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;HTTP&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_reader&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:server&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;attr_accessor&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:client_response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:counter&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;TCPServer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9090&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@client_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;c1&quot;&gt;# note to myself in terminal when this gets hit.&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;server&apos;s up, capiTAN&quot;&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;send_message&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;accept&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;gets&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;empty?&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;client_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;c1&quot;&gt;# assign a big block of text to a string with %{text}. New lines get \n auto-added&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%{&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;
          &amp;lt;pre&amp;gt;#{client_response.join(&quot;\n&quot;)}&amp;lt;/pre&amp;gt;
          this server has been (re)started #{counter} times
          &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;\n}&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;HTTP/1.1 200 OK&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;date = &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%Y-%B-%d, %l:%M %P&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;server: ruby&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-type: text/html; charset=UTF-8&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

      &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;
      &lt;span class=&quot;vi&quot;&gt;@counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;my_server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;my_server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;send_message&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;When I do this, my @client_response array gets longer… and longer… and longer. because everytime I reload the server I re-add new diagnostic info to it. So, lemme fix that.&lt;/p&gt;

&lt;p&gt;Now, I’m having trouble getting the server to recognize the end of the header and the content.&lt;/p&gt;

&lt;p&gt;The problem is with my new-line characters in my header response, I believe.&lt;/p&gt;

&lt;p&gt;Editing my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;headers&lt;/code&gt; to:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;HTTP/1.1 200 OK&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;date = &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%Y-%B-%d, %l:%M %P&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;server: ruby&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-type: text/html; charset=UTF-8&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and we’re almost back in action. Here’s the CURL output:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;http_yeah_you_know_me &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;setup&lt;span class=&quot;o&quot;&gt;)]&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;curl &lt;span class=&quot;nt&quot;&gt;-v&lt;/span&gt; localhost:9090
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; Rebuilt URL to: localhost:9090/
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;   Trying ::1...
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; TCP_NODELAY &lt;span class=&quot;nb&quot;&gt;set&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; Connection failed
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; connect to ::1 port 9090 failed: Connection refused
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;   Trying 127.0.0.1...
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; TCP_NODELAY &lt;span class=&quot;nb&quot;&gt;set&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; Connected to localhost &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;127.0.0.1&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; port 9090 &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;c&quot;&gt;#0)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; GET / HTTP/1.1
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; Host: localhost:9090
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; User-Agent: curl/7.52.1
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; Accept: &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;/&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;lt; HTTP/1.1 200 OK
&amp;lt; &lt;span class=&quot;nb&quot;&gt;date&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; 2017-February-14,  5:22 pm
&amp;lt; server: ruby
&amp;lt; content-type: text/html&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;charset&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;UTF-8content-length: 215
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; no chunk, no close, no size. Assume close to signal end
&amp;lt;

          &amp;lt;html&amp;gt;&amp;lt;&lt;span class=&quot;nb&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;
          &amp;lt;pre&amp;gt;GET / HTTP/1.1
Host: localhost:9090
User-Agent: curl/7.52.1
Accept: &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;/&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;&amp;lt;/pre&amp;gt;
          this server has been &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;re&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;started 0 &lt;span class=&quot;nb&quot;&gt;times&lt;/span&gt;
          &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;



&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It thinks the content ended before the last line. (see how &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-length: 215&lt;/code&gt; is directly following &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-type&lt;/code&gt;? lets add an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\r\n&lt;/code&gt; to the end of that line in my Header output.&lt;/p&gt;

&lt;p&gt;updated &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;headers&lt;/code&gt; to:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;HTTP/1.1 200 OK&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;date = &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%Y-%B-%d, %l:%M %P&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;server: ruby&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-type: text/html; charset=UTF-8&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;content-length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and it works! Iteration 1 done.&lt;/p&gt;

&lt;h1 id=&quot;iteration-2-supporting-paths&quot;&gt;Iteration 2: supporting paths&lt;/h1&gt;

&lt;p&gt;well eff, my existing code is so horrible path support is a major PITA.&lt;/p&gt;

&lt;p&gt;Part of the problem is I cannot easily calculate my output length, so building my response, I cannot tell the server (easily) how many characters to expect.&lt;/p&gt;

&lt;p&gt;Time for some refactoring, I guess.&lt;/p&gt;

&lt;p&gt;I’m going to try to clean up my http response block. Here’s what I’ve got:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;helloworld_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;hello world, this has been reloaded &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; times.&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

      &lt;span class=&quot;vi&quot;&gt;@counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;

      &lt;span class=&quot;n&quot;&gt;default_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;pre&amp;gt;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;client_response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;this server has been (re)started &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; times&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

      &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;HTTP/1.1 200 OK&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;date = &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%Y-%B-%d, %l:%M %P&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;server: ruby&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;content-type: text/html; charset=UTF-8&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;content-length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;helloworld_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;connection: close&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;notice I’ve hard-coded “helloworld_path”. That’s because trying to add path support revealed this little problem to me.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;It’s a PITA, but… a few hours of work after ^^, I sorted it out. There’s a few pieces in play:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Pulling data from the GET request (like path)&lt;/li&gt;
  &lt;li&gt;building the FRAME if the server response. Hardcode some pieces, use variables for the stuff that changes&lt;/li&gt;
  &lt;li&gt;Build variables that hold the variable parts of the response. (seems obvious, right? That’s why I wanna smash through my desk with my head.)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’ll add comments to the following code. This mostly handles iteration 2:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;send_message&lt;/span&gt;

    &lt;span class=&quot;c1&quot;&gt;# client_response holds all the received data, like `GET / HTTP/1.1`. The / is of particular interest.&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;client_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;accept&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;gets&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;empty?&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;client_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chomp&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
      &lt;span class=&quot;c1&quot;&gt;# ^^ end of building the client response&lt;/span&gt;
      
      &lt;span class=&quot;c1&quot;&gt;# pulling out the path, be it /, or /hello, or /datetime, etc.&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client_response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# building variables to insert into my HTTP response block later&lt;/span&gt;
      
      &lt;span class=&quot;n&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%Y %B %d, %H:%M %z&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      
      &lt;span class=&quot;c1&quot;&gt;# possible responses based on path&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;hello_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;hello world, this has been reloaded &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; times.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;default_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;pre&amp;gt;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;This is my default path&amp;lt;/pre&amp;gt;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;datetime_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;pre&amp;gt;The time is &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;/pre&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;shutdown_path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Total requests: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Exiting...&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

      &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;default_path&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;elsif&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/hello&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hello_path&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;elsif&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/datetime&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;datetime_path&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;elsif&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/shutdown&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shutdown_path&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# building the server response. It&apos;ll always get wrapped the the following HTML. the `join` method fixes the fact that the parameters are currently wrapped in brackets. example: hello_path = [&quot;some string here&quot;])&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&quot;&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# this is the fixed part of the server response. Every response will be the same, except the date changes to be Time.now, and output.length MUST be accurate, or the server will either not print the full request, or it&apos;ll hang after all the data is received, because it&apos;s expecting more.&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;http/1.1 200 ok&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;s2&quot;&gt;&quot;date: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;s2&quot;&gt;&quot;server: ruby&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;s2&quot;&gt;&quot;content-type: text/html; charset=iso-8859-1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;s2&quot;&gt;&quot;content-length: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# incrementing my counter&lt;/span&gt;
      &lt;span class=&quot;vi&quot;&gt;@counter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
      
      &lt;span class=&quot;c1&quot;&gt;# client.puts is the _sending_ actual response to the server. Headers is distinct from the output. &lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;
       
      &lt;span class=&quot;c1&quot;&gt;# this stuff is sorta ugly random shit to reset the values so when I reload the page, it&apos;ll accept different paths. I am 100% sure this is not best practice.&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;close&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# I couldn&apos;t get my shutdown method to sit neatly in one if statement. ¯\_(ツ)_/¯ &lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/shutdown&quot;&lt;/span&gt;
      &lt;span class=&quot;c1&quot;&gt;# resetting values for next connection&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;client_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;


  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;my_server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;HTTP&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;my_server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;send_message&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;iteration-3-supporting-params&quot;&gt;Iteration 3: supporting params&lt;/h2&gt;

&lt;p&gt;Given a sample paramter like&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;http://host:port/path?param=value&amp;amp;param2=value2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;how can we pull the parameters? That will be the first step to doing something with them. I don’t care how I store them for now.&lt;/p&gt;

&lt;p&gt;I think I can pull everything following the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;?&lt;/code&gt; using a REGEX match or split or something.&lt;/p&gt;

&lt;p&gt;lets play around in pry with the string.&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;http://host:port/path?param=value&amp;amp;param2=value&quot;&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# eff, so confused. &lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# ok, I used this:&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client_response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;word_search&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;=&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;here’s the output from pry:&lt;/p&gt;
&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;                 &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/word_search?word=house&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;             &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;shutdown_path&lt;/span&gt;        &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;time&lt;/span&gt;                 &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;word_search&lt;/span&gt;          &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;house&quot;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Streets in Asheville</title>
   <link href="https://josh.works/asheville-streets"/>
   <updated>2017-02-11T00:00:00+00:00</updated>
   <id>https://josh.works/streets-in-asheville</id>
   <content type="html">&lt;h2 id=&quot;quick-and-dirty-street-analysis-in-asheville-nc&quot;&gt;Quick-and-dirty street analysis in Asheville, NC&lt;/h2&gt;

&lt;p&gt;A few months ago, I visited Asheville, NC. It’s a nice town, and has a great pedestrian life, as far as I can tell.&lt;/p&gt;

&lt;p&gt;As a thought experiment, I decided to see how well I could make the case for reducing the road width of a few streets.&lt;/p&gt;

&lt;p&gt;The reasons are simple - wide roads are hard to cross by pedestrians, encourage faster driving, and are (as I’m going to try to prove) bad for cities.&lt;/p&gt;

&lt;p&gt;It’s common for “walkable” streets to have two wide lanes traffic (one each way) plus a lane for parking on each side, plus, perhaps, one or two bicycle lanes, and perhaps a small buffer between traffic going each way.&lt;/p&gt;

&lt;p&gt;This &lt;em&gt;seems&lt;/em&gt; like a tolerable idea, except it means all of a sudden your little road is difficult to cross.&lt;/p&gt;

&lt;p&gt;I’ll be examining &lt;a href=&quot;https://www.google.com/maps/dir/35.5965063,-82.5531438/35.5964338,-82.553156/@35.596531,-82.5533667,348m/data=!3m1!1e3&quot;&gt;45-61 W Walnut St, Asheville, NC&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_589664a5f7e0ab698b31c458_1486251199245__img.jpg_&quot; alt=&quot;Pictures are of these streets&quot; /&gt; Pictures are of these streets&lt;/p&gt;

&lt;p&gt;There’s a few lenses that you can evaluate these streets for:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Car-friendly&lt;/li&gt;
  &lt;li&gt;Pedestrian-friendly/bike-friendly&lt;/li&gt;
  &lt;li&gt;Financial implications for city&lt;/li&gt;
  &lt;li&gt;Financial implications for businesses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lets take a quick stab at each of these:&lt;/p&gt;

&lt;h2 id=&quot;for-cars&quot;&gt;For cars&lt;/h2&gt;

&lt;!--more--&gt;

&lt;p&gt;This street/road is very drivable. Here’s the intersection looking north:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_589664cf15d5db588fef6a14_1486251224928__img.jpg_&quot; alt=&quot;green for cars, yellow for bikes&quot; /&gt; green for cars, yellow for bikes&lt;/p&gt;

&lt;p&gt;The speed limit is, I believe, 20 MPH. It’s on a similar looking street two blocks over.&lt;/p&gt;

&lt;p&gt;Parking seems pretty easy, too. I’m going to make a case for eliminating the on-street parking, so here’s all of the off-street parking available:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_589664e41b10e38edfe14657_1486251247603__img.jpg_&quot; alt=&quot;surface lots and parking garages within about two blocks&quot; /&gt; surface lots and parking garages within about two blocks&lt;/p&gt;

&lt;p&gt;Each of those parking garages is six stories high.&lt;/p&gt;

&lt;p&gt;Now, there is tons of space allocated on the street to parked cars, but that has two problems:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Periods of low-use times, the on-street parking generates no value to anyone, and encourages high speeds.&lt;/li&gt;
  &lt;li&gt;Periods of high-use times, the on-street parking is so scarce that no one can expect it to be available, and it encourages “browsing around” in your vehicle instead of heading for the closest dedicated parking area.
    &lt;ul&gt;
      &lt;li&gt;Further, when the on-street parking is filled, it brings in almost no revenue to the city. It costs $2/hr to park, which is such a low amount it does not encourage people to be quick, or to use a more expensive parking structure.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At almost 45 feet wide, this street takes quite a while to cross.&lt;/p&gt;

&lt;p&gt;Since this is a walkable street with lots of shops, we would expect people to cross regularly.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.usroads.com/journals/p/rej/9710/re971001.htm&quot;&gt;A slow-walking person (elderly person, child, or regular person with a stroller) would take 10 seconds to cross this entire street&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The painful thing is, though, about half of the width of the street is low-value or wasted space.&lt;/p&gt;

&lt;p&gt;There’s a bike lane, which is required because the street traffic is expected to go much faster than bikes. At a twenty-mile-an-hour speed limit, this shows that the road is expected to primarily serve drivers passing through.&lt;/p&gt;

&lt;p&gt;For cyclists, a reasonable average speed is 11 mph. If all drivers actually drive the posted speed limit, it would be pretty easy to share the road with someone traveling 11 mph on a bike. At 30 mph, though, it becomes dangerous for the cyclist to have to survive in the same space as a driver.&lt;/p&gt;

&lt;p&gt;A bike lane solves the wrong problem, and in some cases makes it worse.&lt;/p&gt;

&lt;p&gt;When the bike lane is not used, that unused space encourages drivers to speed up. Further, when the on-street parking is empty, it encourages drivers to go even faster, as the space dedicated to travel in both directions is extremely wide.&lt;/p&gt;

&lt;p&gt;A speed limit sign is an inappropriate method to limit vehicle speeds. It treats the symptom, rather than the cause. Study after study has shown that traffic flows at safe speeds given road conditions. If traffic is “too fast”, the road is too wide and too straight, or is too close to pedestrians that don’t handle large chunks of metal flying around.&lt;/p&gt;

&lt;p&gt;So, if you want people to go slower, reduce the space this vehicle has to drive.&lt;/p&gt;

&lt;h2 id=&quot;pedestrianbike-friendly&quot;&gt;Pedestrian/Bike friendly&lt;/h2&gt;

&lt;p&gt;Pedestrians (or “people” as I’ll refer to them for the rest of this post) have different interests than drivers.&lt;/p&gt;

&lt;p&gt;People are best served by fractal and dense cityscapes. This means that in the course of walking a block, or a quarter mile, a person will encounter a range of services and shops. If a person has to walk 200 yards between points of interest, they’re going to visit those places less, and they are more likely to visit that place in a car.&lt;/p&gt;

&lt;p&gt;A 45 foot wide road is not pedestrian-friendly. Traffic moves quickly, and if you want to cross the street you have to either stand between parked cars as you wait for a break in traffic, or you have to travel to a crosswalk, which is a hassle.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_589665082e69cfe9328ebbf4_1486251295122__img.jpg_&quot; alt=&quot;a narrow road, fine for drivers but good for people&quot; /&gt; a narrow road, fine for drivers but good for people&lt;/p&gt;

&lt;h2 id=&quot;city-friendly&quot;&gt;City-friendly&lt;/h2&gt;

&lt;p&gt;A city (government) wants things that make itself money while also keeping it’s constituents peaceful. I suspect that the most persuasive case that could be made to a city planner is “plan A, for which I advocate, will result in a larger addition to the tax base than plan B, which I oppose.”&lt;/p&gt;

&lt;p&gt;All else being equal, the more profitable option will win. Nothing else is equal, of course, and there are many influences advocating for different plans.&lt;/p&gt;

&lt;p&gt;Most money for infrastructure comes from the federal government, so the easiest way to bring $10mm in to your city is to sign up for a big project and fund 20% of the project. The federal/state government will provide the other 80%.&lt;/p&gt;

&lt;p&gt;This dynamic is dangerous and perverse. That’s how you get city governments spending money they don’t have to build infrastructure they don’t need, without having a tax base to support the ongoing maintenance of this infrastructure.&lt;/p&gt;

&lt;h2 id=&quot;business-friendly&quot;&gt;Business friendly&lt;/h2&gt;

&lt;p&gt;If you’re building new construction (or considering buying a parcel of land), you need to consider how people are going to visit your business. Will you get foot traffic, or vehicle traffic?&lt;/p&gt;

&lt;p&gt;If you are going to get foot traffic, will there be foot traffic?&lt;/p&gt;

&lt;p&gt;If you’re aiming for vehicle traffic, do you need an on-site parking lot, or is there suitable parking near enough to your store that you can avoid building a parking lot?&lt;/p&gt;

&lt;p&gt;If I had a store on Walnut or Lexington Ave in Asheville, I’d expect walk-in traffic, and I would NOT plan on building a parking lot. Look at the available off-street parking in the area. There’s plenty available. Furthermore, I would want to maximize the space available to me to generate revenue.&lt;/p&gt;

&lt;p&gt;If I had a restaurant, I’d want space for tables. If I had a store, I’d want the biggest retail area. If I were building things, I’d want as much space for my workshop + display area.&lt;/p&gt;

&lt;p&gt;All of these desires would result in my maximizing the footprint of usable space to me.&lt;/p&gt;

&lt;p&gt;A parking lot flies in the face of this need.&lt;/p&gt;

&lt;p&gt;Here’s a better treatment of why small, dense lots will always be healthier and out-perform auto-oriented businesses: &lt;a href=&quot;https://www.strongtowns.org/journal/2017/1/29/the-cost-of-auto-orientation-rerun&quot;&gt;The Cost of Auto Orientation&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;why-this-matters-to-me&quot;&gt;Why this matters to me&lt;/h2&gt;

&lt;p&gt;I’ve been noodling on this idea for a while. A while back I read &lt;a href=&quot;https://likewise.am/2016/05/08/why-suburbia-sucks/&quot;&gt;Why Suburbia Sucks&lt;/a&gt;, and about that time I stumbled across &lt;a href=&quot;www.strongtowns.org&quot;&gt;StrongTowns&lt;/a&gt;. My wife and I spent about six months outside the USA, across the Americas and Europe, and I got to thinking why almost every environment I’ve ever lived in has been universally distasteful to me.&lt;/p&gt;

&lt;p&gt;Turns out that cities oriented for cars and not people are not pleasant places to live.&lt;/p&gt;

&lt;p&gt;I want to live in a place that is pleasing to me, and I believe cities and towns can create environments that are not hostile to this act of creation. And, of course, as one block fills with a dense and fractal mix of uses, the next one over will do the same. Ironically, &lt;a href=&quot;https://www.strongtowns.org/journal/2016/8/11/reclaiming-redneck-urbanism-what-urban-planners-can-learn-from-trailer-parks&quot;&gt;the general vibe of trailer parks has immense appeal to me&lt;/a&gt;. Most of us raise our nose at trailer parks, and go about making it even more difficult for this kind of dense urbanism to be built.&lt;/p&gt;

&lt;p&gt;I’m priced out of every market I would want to live in right now. This is because of bad policy, not supply and demand. &lt;a href=&quot;https://www.strongtowns.org/journal/2016/9/22/the-50000-san-francisco-studio-apartment&quot;&gt;Here’s how to build and buy a $50k property in San Francisco&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I feel like the thing that I want doesn’t exist in most of America, and I want it to. Further, I believe small, dense, self-sufficient urban areas can be financially self-sufficient, which will matter if the massive stream of money from the federal government ever slows down.&lt;/p&gt;

&lt;p&gt;Even more tactically, I really like Golden. But it’s succumbing to the same influences the rest of American towns are. I want to push back against that negative influence here, so that Golden can become an affordable place for normal people. (It’s not affordable to purchase property in Golden right now.)&lt;/p&gt;

&lt;p&gt;Here’s some of the parking madness that is in Golden right now:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5896652e2e69cfe9328ebd69_1486251323513__img.jpg_&quot; alt=&quot;So much available parking and streets are still 50-70 feet wide&quot; /&gt; So much available parking and streets are still 50-70 feet wide&lt;/p&gt;

&lt;p&gt;Phew. That was a brain dump. I write to help organize my own thinking, and this has moved me in that direction, despite how disorganized all the proceeding words were.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>2016 - Biggest Lesson, Most Dangerous Books</title>
   <link href="https://josh.works/2016-most-dangerous-books"/>
   <updated>2017-01-11T00:00:00+00:00</updated>
   <id>https://josh.works/2016-biggest-lesson-most-dangerous-books</id>
   <content type="html">&lt;p&gt;I don’t do New Years resolutions, but I like to think back on the last year.&lt;/p&gt;

&lt;p&gt;I’ll touch on two things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The most important thing I’ve learned this year: Tactical Silence&lt;/li&gt;
  &lt;li&gt;Most dangerous books of 2016&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;tactical-silence&quot;&gt;Tactical Silence&lt;/h1&gt;

&lt;p&gt;I suspect that a year from now, I’m going to look back and say “Man, I really dropped the ball on a lot of conversations and relationships up through 2016”.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Old Josh&lt;/em&gt; thought discussions went somewhere, and that I could change minds with words, in conversations directly about the thing I wanted to change.&lt;/p&gt;

&lt;p&gt;Hah. A helpful-but-reluctant read through &lt;a href=&quot;https://www.goodreads.com/book/show/1303.The_48_Laws_of_Power?ac=1&amp;amp;from_search=true&quot;&gt;48 Laws of Power&lt;/a&gt;, couples with reading through &lt;em&gt;Life Together&lt;/em&gt;, and a few other sources, convinced me that direct discussion about most things where I’m trying to convince someone of something is more “entertaining-though-possibly-damaging pastime” than “productive effort”. This holds true in the work and private domains.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;em&gt;New Josh&lt;/em&gt; is cynical, and in most situations much less inflammatory. I don’t stand to gain anything from debates, and neither does the person I’m debating with.&lt;/p&gt;

&lt;p&gt;What DOES matter is action. No one really cares what I &lt;em&gt;think&lt;/em&gt; about anything, but as soon as I take &lt;em&gt;action&lt;/em&gt; on something, any potential conversation is dramatically shifted.&lt;/p&gt;

&lt;p&gt;Conversations go from hypothetical:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;What if x happens&lt;/p&gt;

  &lt;p&gt;If that thing is true, than it might mean this other thing is false!”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to historical:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Well, you did X, and it seems like Y and Z happened, so I guess going forward we’ll do…&lt;/p&gt;

  &lt;p&gt;I know I said X in the past, but it looks like we’re seeing Y results, and IMPORTANT_PERSON suggests Z response.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, now, when someone says something that is (to me) catastrophically untrue, about either myself or anything else, I just smile and nod. Even if I need to do something about it, it’s rare that addressing it right then will drive any useful change.&lt;/p&gt;

&lt;p&gt;“Tactical Silence” is still new to me, so I imagine in another month I’ll have much more coherent and consistent thoughts on it, but by then I’ll probably not want to talk about it.&lt;/p&gt;

&lt;p&gt;(I don’t even know where the term came from. I feel better keeping my mouth shut when it’s a &lt;em&gt;tactical&lt;/em&gt; decision, instead of &lt;em&gt;backing down from conflict&lt;/em&gt;)&lt;/p&gt;

&lt;h1 id=&quot;dangerous-books&quot;&gt;Dangerous books&lt;/h1&gt;

&lt;p&gt;I read a lot last year. More than I plan on reading for a while, and along the way, I read many books that I wouldn’t really recommend to others, and a few that I would.&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;dangerous&lt;/em&gt; book is one that did one of two two things, against my will:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Forced behavioral change in my daily or weekly routine&lt;/li&gt;
  &lt;li&gt;Forced my thinking to change on a specific topic or domain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These books are dangerous because they’re driving changes in how I behave and/or how I think. I am able to exert precious little control over both of these things, and am therefore exceedingly wary in letting outside influences in. So, when something &lt;em&gt;forces&lt;/em&gt; me to behave or think differently, I must admit temporary defeat, even though I’m inevitably improved in the process.&lt;/p&gt;

&lt;p&gt;I don’t &lt;em&gt;endorse&lt;/em&gt; any of these, though there’s lots of potential value in all of them.&lt;/p&gt;

&lt;p&gt;Here’s the books that I label as &lt;em&gt;dangerous&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/10266902-selfish-reasons-to-have-more-kids&quot;&gt;Selfish Reasons to Have More Kids&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/998062.The_Market_for_Liberty&quot;&gt;The Market for Liberty&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/25744928-deep-work&quot;&gt;Deep Work&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/174845.Life_Together&quot;&gt;Life Together&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/33229792-80-000-hours&quot;&gt;80,000 Hours&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;If your curiosity is even remotely piqued on any of these books, check out reviews on Amazon or GoodReads.&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;selfish-reasons-to-have-more-kids&quot;&gt;Selfish Reasons to Have More Kids&lt;/h3&gt;

&lt;p&gt;This easily pushed me over the edge from “I don’t look forward at all to the burdens of parenthood” to “it’ll be hard, but I think the reward will fairly quickly outpace the effort, and the long-term gains certainly outweigh the short-term sacrifice.”&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh, that’s a terrible reason to have kids. You think the long-term gains outweigh the short-term sacrifice? What about love, and your own flesh-and-blood? Doesn’t that matter?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not to me, right now. I imagine it will eventually. Also, this is a small picture into my decision-making about many things. Imagine what it’s like for Kristi, putting up with this all day long…&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/dp/B004OA64Q6/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1&quot;&gt;Amazon: Selfish Reasons to Have More Kids&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-market-for-liberty&quot;&gt;The Market for Liberty&lt;/h3&gt;

&lt;p&gt;Sigh. Here marks my transition “Libertarian” to “certified tin-foil-hat-wearing anarchist”. I didn’t even like the book, but there was one key point in the book that I couldn’t shake.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A laissez-faire society is not a Utopia in which the initiation of violence is impossible. Rather, it is a society which does not &lt;em&gt;institutionalize&lt;/em&gt; the initiation of force and in which there are means for dealing with aggression justly when it does occur.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, what system has a monopoly on the lawful initiation of force, and which also institutionalizes bad actors inside that system?&lt;/p&gt;

&lt;p&gt;The government.&lt;/p&gt;

&lt;p&gt;This ties into some other themes that have been growing in my head for a few years. Tinkering around the edges of a system that institutionalizes the initiation of force, and is able to coerce it’s own survival on the backs of those who serve it… is a luxury, since it’s steamrolling over the lives of many others.&lt;/p&gt;

&lt;p&gt;Related: the last book that made me cry while reading it: &lt;a href=&quot;https://www.goodreads.com/book/show/17834926-negroes-and-the-gun?ac=1&amp;amp;from_search=true&quot;&gt;Negroes and the Gun: The Black Tradition of Arms&lt;/a&gt;. Spoiler: The government simultaneously claimed to act in the interests of it’s citizens as it hunted down and destroyed innocent-but-marginalized people.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Market-Liberty-Morris-Tannehill-ebook/dp/B007N7JDLA/ref=sr_1_1?s=digital-text&amp;amp;ie=UTF8&amp;amp;qid=1484174882&amp;amp;sr=1-1&amp;amp;keywords=the+market+for+liberty&quot;&gt;Amazon: The Market for Liberty&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;deep-work&quot;&gt;Deep Work&lt;/h3&gt;

&lt;p&gt;I wrote &lt;a href=&quot;https://josh.works/i-quit&quot;&gt;I quit&lt;/a&gt; after reading &lt;em&gt;Deep Work&lt;/em&gt;. I started wearing a wrist-watch, and I now work in &lt;a href=&quot;https://en.wikipedia.org/wiki/Pomodoro_Technique&quot;&gt;Pomodoros&lt;/a&gt;. As I track how much work I do, I mostly just track how many Pomororo’s I’ve accomplished in a given day.&lt;/p&gt;

&lt;p&gt;I’m still slowly remaking how I work and my daily routine in response to &lt;em&gt;Deep Work&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;No other book that I’ve read this year has impacted my day to day as &lt;em&gt;Deep Work&lt;/em&gt; by Cal Newport.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Deep-Work-Focused-Success-Distracted-ebook/dp/B00X47ZVXM/ref=sr_1_1?s=digital-text&amp;amp;ie=UTF8&amp;amp;qid=1484174924&amp;amp;sr=1-1&amp;amp;keywords=deep+work&quot;&gt;Deep Work on Amazon&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;life-together&quot;&gt;Life Together&lt;/h3&gt;

&lt;p&gt;Life Together is about Christians living in community. This exact topic has been plaguing me for the better part of two years, and &lt;em&gt;Life Together&lt;/em&gt; brought a lot of hope and clarity to me.&lt;/p&gt;

&lt;p&gt;I’ve struggled with the notion of “Christian community” because I get so frustrated by much of what happens in churches, or is done on my behalf by “the church” (as defined by old white conservatives from America).&lt;/p&gt;

&lt;p&gt;I struggle to sit under the biblical authority of people who’s politics seem decidedly anti-christ-like. The temptation is to just walk away and try to carve out some little “church of Thompson”, and pretend like that is sufficient and Christ-honoring, but it isn’t.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Life Together&lt;/em&gt; was convicting, and is driving change in my daily routines. I’m going to re-read it soon and make another “wave” of changes, but the most encouraging thing was how much Bohhoeffer celebrates the virtue of keeping one’s mouth shut:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Bonhoeffer’s Decisive Rule of Christian Fellowship: Every individual is prohibited from saying much of what occurs to him.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, I can celebrate the minor victories of keeping my mouth shut, most of the time.&lt;/p&gt;

&lt;p&gt;More on this topic another time.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Life-Together-Dietrich-Bonhoeffer-ebook/dp/B005MJ2RPK/ref=sr_1_1?s=digital-text&amp;amp;ie=UTF8&amp;amp;qid=1484175478&amp;amp;sr=1-1&amp;amp;keywords=life+together&quot;&gt;Amazon: Life Together&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;80000-hours&quot;&gt;80,000 Hours&lt;/h3&gt;

&lt;p&gt;40 hours a week, 50 weeks a year, 40 years. That’s about 80,000 hours of work. How are you going to spend it?&lt;/p&gt;

&lt;p&gt;This book &lt;em&gt;isn’t&lt;/em&gt; driving change in my life right now, but it meshes perfectly with my already-heretical notions about what it means to “do good work for others”.&lt;/p&gt;

&lt;p&gt;I.E. Do you want to have a big impact on the world? Don’t become a doctor, at least if you plan on working in America. The marginal societal return of an additional doctor is tiny compared to that same doctor in a poor country, or compared to plenty of other career paths available to someone today.&lt;/p&gt;

&lt;p&gt;Don’t go work for a non-profit, either.&lt;/p&gt;

&lt;p&gt;The theme is “effective altruism”, and they handle job/career advice better than most. FWIW, they’re big fans of Cal Newport’s &lt;em&gt;Deep Work&lt;/em&gt; philosophy.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/80-000-Hours-fulfilling-career-ebook/dp/B01M70QISP/ref=sr_1_1?s=digital-text&amp;amp;ie=UTF8&amp;amp;qid=1484175534&amp;amp;sr=1-1&amp;amp;keywords=80000+hours&quot;&gt;Amazon: 80,000 Hours&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>December Review, January Goals</title>
   <link href="https://josh.works/december-review-january-goals"/>
   <updated>2017-01-05T00:00:00+00:00</updated>
   <id>https://josh.works/december-review-january-goals</id>
   <content type="html">&lt;p&gt;This is a follow-up from &lt;a href=&quot;/monthly%20evaluation/2016/12/20/december-2016-goals/&quot;&gt;last month’s goals&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;1-deepen-knowledge-of-back-end-development&quot;&gt;1. Deepen Knowledge of Back-end Development&lt;/h2&gt;

&lt;p&gt;I finished OverTheWire’s Bandit series, except &lt;a href=&quot;http://overthewire.org/wargames/bandit/bandit26.html&quot;&gt;the last lesson&lt;/a&gt;, which didn’t make sense. (It does now! Turns out login shells and “regular” shells are different. I’ll take another spin at it some day.) A few benefits:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Way more comfortable in my terminal&lt;/li&gt;
  &lt;li&gt;Way better with Less/Vim/Man pages&lt;/li&gt;
  &lt;li&gt;Basic understanding of Linux boxes, SSHing, looking around an unfamiliar system for things of note.&lt;/li&gt;
  &lt;li&gt;Better understanding of how terminal programs and scripts work (.vimrc, .bashrc), how things relate to each other in the $PATH, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;p&gt;For example, before this, the following message wouldn’t have meant much to me:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;The test files may have the execution bit set so you may also be able to run it like this:
    ./hello_world_test.rb
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;now, without any hesitation, I know that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ chmod u+x hamming_test.rb&lt;/code&gt; fixes the problem, and I’m off to the races.&lt;/p&gt;

&lt;p&gt;I worked through the &lt;a href=&quot;https://launchschool.com/books/oo_ruby/read/the_object_model&quot;&gt;LaunchSchool Ruby “book”&lt;/a&gt;, and did lots of Anki memorization. I’m trying to absorb the basics of object oriented programing.&lt;/p&gt;

&lt;p&gt;Now I’m on &lt;a href=&quot;http://exercism.io/profiles/josh-works/6d8e0f83a1f048aeb99e46e6baf07ddf&quot;&gt;Exercism&lt;/a&gt;. I’m not sure how far through I’m going to go, but it’s really useful on many levels. Interpreting error messages, getting tests to pass, test-driven development, etc. Reinforces what I’ve learned in the LaunchSchool material.&lt;/p&gt;

&lt;h2 id=&quot;2-rehab-my-wrist&quot;&gt;2. Rehab my Wrist&lt;/h2&gt;

&lt;p&gt;I climbed hard three times last week, for the first time in almost two months. My wrist is still certainly weak, but as long as I avoid certain grip positions, I feel good. So, I can start easing back into projects, as long as I listen to it.&lt;/p&gt;

&lt;p&gt;I need to be better at climbing in a “defensive” manner anyway, if I plan on climbing in conjunction with difficult strength training, so this is fruitful experience, even though it’s sometimes a bit frustrating.&lt;/p&gt;

&lt;h2 id=&quot;3-finish-seven-more-books&quot;&gt;3. Finish seven more books&lt;/h2&gt;

&lt;p&gt;Turns out I’d not counted my books that I’ve read this year correctly. I was aiming to get to 80 books (from 74 at the time) and once I updated my &lt;a href=&quot;https://www.goodreads.com/user_challenges/5318638&quot;&gt;GoodReads profile&lt;/a&gt;, I was at 81 or so. I’ve now read 84 books this year, and don’t think I’ll finish any of my current books today. (Dec. 31)&lt;/p&gt;

&lt;h1 id=&quot;january-goals&quot;&gt;January Goals&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;Keep improving w/programming&lt;/li&gt;
  &lt;li&gt;Climb 5.13&lt;/li&gt;
  &lt;li&gt;Get a purchase page up, functioning for Climber’s Guide&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;1-programming-improvement&quot;&gt;1. Programming improvement&lt;/h2&gt;

&lt;p&gt;Turing School starts Jan 23rd. I’m trying to pack in as much prep as I can before it starts. I’m working through some Exercism exercises, and trying to wrap my head around ruby basics, like manipulating/combining arrays and hashes, and understanding Enumerators.&lt;/p&gt;

&lt;p&gt;I’ve been using &lt;a href=&quot;https://ankiweb.net/about&quot;&gt;Anki SRS&lt;/a&gt; for a long time now, in a variety of ways in my life. Mostly &lt;a href=&quot;/2-things-spanish&quot;&gt;vocabulary memorization&lt;/a&gt;, but lots of other things too. Derek Sivers &lt;a href=&quot;https://sivers.org/srs&quot;&gt;uses it to improve as a programmer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If it’s good enough for him, it’s good enough for me!&lt;/p&gt;

&lt;p&gt;Here’s the thing, though - I don’t yet have a good system for making cards. I can stick lots of information in the flashcards, but I’m not yet convinced that I’ve got the right method of quizzing myself with well-made cards.&lt;/p&gt;

&lt;p&gt;Fortunately, my Anki deck is easy to experiment with and modify!&lt;/p&gt;

&lt;p&gt;I plan on digging deeper in making programming-specific Anki flashcards later, but for now, the most useful Anki add-on is the &lt;a href=&quot;https://ankiweb.net/shared/info/162313389&quot;&gt;Power Format Pack&lt;/a&gt;. It lets you apply markdown, including syntax-specific markdown, to your cards.&lt;/p&gt;

&lt;h2 id=&quot;2-climb-513&quot;&gt;2. Climb 5.13&lt;/h2&gt;

&lt;p&gt;I hopped on a project yesterday in Earth Treks Golden, and could do all of the hard moves without much wrist discomfort. It’s certainly still weak, but it feels good to cause minor stress to it. I’m considering myself 90% healed.&lt;/p&gt;

&lt;p&gt;The two themes of the next few months for me, as far as climbing progression, will be:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;remember my beta on routes&lt;/li&gt;
  &lt;li&gt;train max-weight hangs on an 18mm edge 2x/week.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;3-get-a-purchase-page-up-on-climbers-guide&quot;&gt;3. Get a purchase page up on Climber’s Guide&lt;/h2&gt;

&lt;p&gt;I’ve got tons of copy written, tons of ideas around this, I’ve worked out pricing, but some stupid fear keeps me from actually asking for money. I’ve been working regularly with a few folks in the gym that I’ve bumped into, and they’ve all seen massive improvement in their climbing.&lt;/p&gt;

&lt;p&gt;The URL will probably be something like &lt;a href=&quot;http://www.climbersguide.co/conquer-fear-course/&quot;&gt;http://www.climbersguide.co/conquer-fear-course/&lt;/a&gt; or something. We shall see!&lt;/p&gt;

&lt;p&gt;I’ll also record and post lots of video, talking through some of the finer points. Scary!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>December 2016 Goals</title>
   <link href="https://josh.works/monthly%20evaluation/2016/12/20/december-2016-goals/"/>
   <updated>2016-12-20T00:00:00+00:00</updated>
   <id>https://josh.works/monthly%20evaluation/2016/12/20/december-2016-goals</id>
   <content type="html">&lt;p&gt;December 19th seems a bit late to write about December’s goals, huh?&lt;/p&gt;

&lt;p&gt;Nonetheless, I’ve had some, and I will still have them through the end of the month.&lt;/p&gt;

&lt;p&gt;I
did post a review of November a few days ago. This should really be rolled into that. A “monthly review/going forward” evaluation makes way more sense than splitting it into two pieces.&lt;/p&gt;

&lt;p&gt;See? There’s value to these reviews. I’m streamlining my own workflow. :)&lt;/p&gt;

&lt;p&gt;My goals for December are
mostly an extension of my
&lt;a href=&quot;/november-2016-goals&quot;&gt;goals last month&lt;/a&gt;.
&lt;a href=&quot;/growth/2016/12/14/november-2016-review/&quot;&gt;November review here&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Deepen knowledge of front-end development*&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Rehab my wrist effectively&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Read seven more books (goal for the year is 80. It’ll be a stretch…)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;1-deepen-knowledge-of-front-end-development&quot;&gt;1. Deepen Knowledge of front-end development&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;wrong terminology. I mean front-end because “back end” in my mind is WAAAY in the back-end, like you .NET and C++ guys doing things where you never touch an interface or create a button. I’ll technically be a back-end developer by mid-2017, but I’ll be comfortable in HTML/CSS/JS and all those traditional front-end parts of the internet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, I’ve been working on general comfort around simple networking
and my command line. I’m learning along through Vimtutor (open your terminal if you’re on a Mac, type in “vimtutor” to see what it is.) Also, I’m writing this post using Vim. Admittedly, free-form typing in Vim is just the same as any other text editor, but moving around without the mouse and between modes takes some getting used to.&lt;/p&gt;

&lt;p&gt;I’ve been inspired on Vim by
&lt;a href=&quot;http://overthewire.org/wargames/bandit/&quot;&gt;OverTheWire.org&lt;/a&gt;. Vim goes hand-in-hand with regular (or heavy) command line usage, and I want to get more fluid in the command line. I’m motivated by small, incremental challenges, so their “Bandit” wargame is perfect. I’m on
&lt;a href=&quot;http://overthewire.org/wargames/bandit/bandit16.html&quot;&gt;level 15&lt;/a&gt; right now, to continue right after posting this.&lt;/p&gt;

&lt;p&gt;I’ve gotten stuck twice, and you can google around to find good hints easily enough. Don’t just blindly type in commands, though. Understand them.&lt;/p&gt;

&lt;p&gt;Oh, I finished up all the Turing school pre-work, and am taking a short spin through non-Ruby/Rails topics for fun. I’ll dig back into building things shortly.&lt;/p&gt;

&lt;h1 id=&quot;2-rehab-my-wrist-safelyeffectively&quot;&gt;2. Rehab my wrist safely/effectively&lt;/h1&gt;

&lt;p&gt;I injured my wrist five weeks ago. It was minor, but for a few days I was pretty out of commission on some key every-day-things. (Grinding coffee was a bit of a challenge.)&lt;/p&gt;

&lt;p&gt;I’ve been able to climb again. For two weeks, I climbed exclusively easy problems, and over time am slowly stepping up the difficulty. I can climb hard-ish routes again without pain, but I don’t feel safe trying hard or moving dynamically. But still, it feels good. I’m out of town through January 3rd, and have just my portable hangboard with me. So, I’ll use that, and hopefully be 100% by the time I get back to Colorado.&lt;/p&gt;

&lt;h1 id=&quot;3-finish-seven-more-books-this-month&quot;&gt;3. Finish seven more books this month&lt;/h1&gt;

&lt;p&gt;I’m almost done with two books, and that will put me at 75 books for the year. I’ve got two or three more short-ish ones on deck (~150 pages) and if I can knock those out quickly, I’ll be close to reading 80 books for the year. 80 is a nice, round number, so I’d like to do it.&lt;/p&gt;

&lt;p&gt;Later this month I’ll highlight the most dangerous books I’ve read in the last year. Could be interesting.&lt;/p&gt;

&lt;p&gt;That’s it. It’s been odd writing this post in vim. So far, I don’t really like the experience. I guess I feel more at home in Atom. Also, Atom has markdown specific syntax highlighting, spell check, and even checks for “weak” words (like “really”). I’ll pop this text in there and do any last edits in Atom. Then it’s off to the internet with these words.&lt;/p&gt;

&lt;p&gt;:wq&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>November 2016 Review</title>
   <link href="https://josh.works/growth/2016/12/14/november-2016-review/"/>
   <updated>2016-12-14T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/12/14/november-2016-review</id>
   <content type="html">&lt;p&gt;Note to the reader: The words that follow are all about me. This is naval-gaze-ish. I feel I owe you this warning.&lt;/p&gt;

&lt;p&gt;My &lt;a href=&quot;/november-2016-goals&quot;&gt;November goals&lt;/a&gt; were an extension of October’s goals. I feel comfortable with long-term unchanging goals.&lt;/p&gt;

&lt;p&gt;They were:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;Deepen my knowledge of front-end web development&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Climb 5.13&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Get “Climber’s Guide” rolling.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An attentive reader might notice that these goals violate all best practices for setting good goals. They’re supposed to be “Specific, Measurable, Actionable/Attainable, Realistic, and Time-boxed”&lt;/p&gt;

&lt;p&gt;My goals are none of these, but I’ve been able to break each goal down into smaller pieces. That’s the sole way one could make progress.&lt;/p&gt;

&lt;p&gt;My other mistake is that I have too many goals. Three goals is one more goal than I’m comfortable with. I’m going to soon clear item #3 from my plate, and focus on the complimentary goals of software development and climbing hard.&lt;/p&gt;

&lt;p&gt;How am I doing, according to my own internal yardstick?&lt;/p&gt;

&lt;h2 id=&quot;front-end-web-development&quot;&gt;Front-end web development&lt;/h2&gt;

&lt;p&gt;I got the recommended pre-work from Turing School, where I’ll be starting their seven-month development program in January. It replaced all other development goals, because reasons.&lt;/p&gt;

&lt;p&gt;I’ve completed their “minimum recommended work”, their “if you have time work”, and am almost done with their “if you’re feeling adventurous” recommended work. At that point I’ll still have six weeks before classes start, so I’ll consult with current students to see what they’d recommend I do next.&lt;/p&gt;

&lt;h2 id=&quot;climb-513&quot;&gt;Climb 5.13&lt;/h2&gt;

&lt;p&gt;This has been a bit more of an emotional trip than usual.&lt;/p&gt;

&lt;p&gt;The sequence: Josh is at gym, close to sending climbs two-three grades harder than what he’s used to.&lt;/p&gt;

&lt;p&gt;Josh meets folks who are super cool, climb super hard, and want to do the same 5.13 at Clear Creek.&lt;/p&gt;

&lt;p&gt;Josh &amp;amp; co meet up the next day.&lt;/p&gt;

&lt;p&gt;Josh warms up on the easiest line at the crag. Super casual climbing. Last three moves are a smidge hard. Josh is lazy, goes for a bad low hold instead of good higher hold.&lt;/p&gt;

&lt;p&gt;Josh feels something go “pop” in his wrist.&lt;/p&gt;

&lt;p&gt;Josh gets injured. :(&lt;/p&gt;

&lt;p&gt;I strained something in my wrist. I was numb and/or tingly for five days, though my strength is returning. I didn’t climb for almost two weeks, and am now easing back into climbing.&lt;/p&gt;

&lt;p&gt;I’ve done v1-v3 bouldering circuits, and am easing back through v4 and v5. I got back on routes for the first time in a while this week, and have pushed back up into easy 5.12. I feel 70% recovered.&lt;/p&gt;

&lt;p&gt;Now, though, I don’t have a chance to send 5.13 this year, but if I keep recovering, I’ll aim for January 2017.&lt;/p&gt;

&lt;h2 id=&quot;climbers-guide&quot;&gt;Climber’s Guide&lt;/h2&gt;

&lt;p&gt;Little happened here. I got excited with Turing prework.&lt;/p&gt;

&lt;h1 id=&quot;misc&quot;&gt;Misc&lt;/h1&gt;

&lt;h3 id=&quot;reading&quot;&gt;Reading&lt;/h3&gt;

&lt;p&gt;Still doing good. I’m at ~70 for the year, should cross the 75 book mark by end of December.&lt;/p&gt;

&lt;p&gt;I just finished
&lt;a href=&quot;https://www.amazon.com/Disciplines-Execution-Achieving-Wildly-Important/dp/1491517751&quot;&gt;The 4 Disciplines of Execution&lt;/a&gt;, and want to apply some of those lessons to my own projects.&lt;/p&gt;

&lt;h3 id=&quot;phone-usage&quot;&gt;Phone Usage&lt;/h3&gt;

&lt;p&gt;Still low. (Which is good). I’m rolling Anki back into my life with gusto, which is pushing my usage back up, but memorization of programming bits of knowledge is fine with me.&lt;/p&gt;

&lt;p&gt;I’ve written about using Anki for Spanish
&lt;a href=&quot;/learning-spanish-conversation-connectors&quot;&gt;here&lt;/a&gt; and
&lt;a href=&quot;/2-things-spanish&quot;&gt;here&lt;/a&gt;, but now I’m using it for programming.&lt;/p&gt;

&lt;p&gt;I’ll expand on that soon, but here’s the best summary:
&lt;a href=&quot;https://sivers.org/srs&quot;&gt;Derek Sivers on SRS for Programmers&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Typing for Programmers</title>
   <link href="https://josh.works/typing-for-programmers"/>
   <updated>2016-12-11T00:00:00+00:00</updated>
   <id>https://josh.works/typing-for-programmers</id>
   <content type="html">&lt;p&gt;If you had to distill my ability to bring value to those around me, it would be “Josh types good”.&lt;/p&gt;

&lt;p&gt;I can press these magical little keys on this little metal box here, and make these words come out.&lt;/p&gt;

&lt;p&gt;If you’re reading these words, you don’t care how these words actually got on this page. You don’t care if I used speech-to-text, transcription, hunt-and-pecked, or if my keyboard layout is QWERTY, Dvorak , or Colemak.&lt;/p&gt;

&lt;p&gt;All that matters is that I can express reasonable ideas reasonably well. (Or, as I prefer,
unreasonable ideas, reasonably well.)&lt;/p&gt;

&lt;p&gt;You, too, probably spend a bit of your time behind a keyboard.&lt;/p&gt;

&lt;p&gt;I’ve already spent time trying to improve my typing speed. After &lt;a href=&quot;/learn-to-type-again&quot;&gt;ill-fated attempts at converting myself to using the Colemak keyboard layout&lt;/a&gt;, but I gave up, except &lt;a href=&quot;/stop-yelling-on-the-internet-or-a-better-use-for-the-caps-lock-key&quot;&gt;I kept my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CAPS LOCK&lt;/code&gt; key mapped to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DELETE&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That was a reasonable position to find myself, except now I’m getting into this whole “programming” thing. That means I have to familiarize myself with that part of my keyboard I’ve so far avoided, like:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[] {} |\\| #{&apos;word_that_means_something&apos;} &amp;amp;&amp;amp; |other| arcane.keys&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Don’t forget your symbols!&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;! @ # $ % &amp;amp; * ( ) - _ = + &amp;lt; &amp;gt; \ ~ \&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I ultimately need to be able to use every single one of those keys without thinking about it, without looking at the keyboard, and without looking at what I’m typing to verify that it’s correct.&lt;/p&gt;

&lt;p&gt;(For example, if you’re reading documentation or code on one part of your screen, typing something into some other program, you cannot be looking at what you’re typing and what you’re supposed to be typing simultaneously.)&lt;/p&gt;

&lt;h1 id=&quot;how-have-i-learned-to-type-all-these-crazy-symbols&quot;&gt;How have I learned to type all these crazy symbols?&lt;/h1&gt;

&lt;p&gt;Two methods:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Typing.io&lt;/li&gt;
  &lt;li&gt;Changed my passwords&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;typingio&quot;&gt;Typing.io&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://typing.io/&quot;&gt;typing.io&lt;/a&gt; bills itself as “Typing Practice for Programmers”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can pick a language you want to learn (like Ruby, Python, C++, etc) and then presents you with real live code, that you type along with.&lt;/p&gt;

&lt;p&gt;Typing.io doesn’t solve everything, though, because there are still common code combinations that are hard to learn without lots of repetition.&lt;/p&gt;

&lt;p&gt;An example from the Ruby track: Have you &lt;em&gt;ever&lt;/em&gt; used the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;|&lt;/code&gt; key? NO!&lt;/p&gt;

&lt;p&gt;So, that brings us to method number 2:&lt;/p&gt;

&lt;h2 id=&quot;changing-my-passwords&quot;&gt;Changing my passwords&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Change commonly used passwords to require hard-to-type code snippets.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I first got creative with changing my passwords after reading
&lt;a href=&quot;https://medium.com/@manicho/how-a-password-changed-my-life-7af5d5f28038#.c43eyodf2&quot;&gt;How a Password Changed My Life&lt;/a&gt;. I’d remind myself to get up early, (when that was hard, I reminded myself to go to bed early).&lt;/p&gt;

&lt;p&gt;I cannot say that I’ve transformed my life through creative passwords, but I stumbled across using them to improve my typing.&lt;/p&gt;

&lt;p&gt;I’ve got two passwords that I often type:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;My computer password, because I’ve got my computer set to sleep if there’s no activity for five minutes (it requires a password upon waking up)&lt;/li&gt;
  &lt;li&gt;1Password Password Manager. Any time I want to log into a system that requires a password (so, about fifteen different systems during the normal workday), I have the password saved to 1Password, and if it has been inactive for five minutes, it locks itself.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, if I change both passwords to something incorporating difficult-to-use key combinations, I am using hard-to-remember keys, over and over and over&lt;/p&gt;

&lt;p&gt;For both systems, I create unique passwords that require me to get good with different pieces of code.&lt;/p&gt;

&lt;p&gt;In the past, I’ve used it to train the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;amp;&amp;amp;&lt;/code&gt; symbols, as well as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[]&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;{}&lt;/code&gt;. I’m now comfortable with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#{}&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[&amp;amp;&amp;amp;]&lt;/code&gt;. Soon, I’ll rotate them again to incorporate more “sticky” keys that I struggle with.&lt;/p&gt;

&lt;p&gt;As I get deeper into my studies, anytime I encounter a difficult key combination (like hitting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;=&lt;/code&gt; right after my pinky is otherwise engaged with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&apos;&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;|&lt;/code&gt; key) I jot it down, to use next time I update my passwords.&lt;/p&gt;

&lt;p&gt;If you’re getting into Ruby, here’s some potential passwords to play with. Please don’t use these actual passwords, but sub in meaningful-but-random words where appropriate.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@word.map do { |c| c[0] }&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;%= variable_name_here %&amp;gt;&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index[0][1]&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/\A*regex(.|,)\z/i&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hashes = { curley_braces_everywhere }&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Best of luck to you!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>November 2016 Goals</title>
   <link href="https://josh.works/november-2016-goals"/>
   <updated>2016-11-09T00:00:00+00:00</updated>
   <id>https://josh.works/november-2016-goals</id>
   <content type="html">&lt;h1 id=&quot;november-2016-goals&quot;&gt;November 2016 Goals&lt;/h1&gt;

&lt;p&gt;Note to the reader: The words that follow are all about me. Very naval-gaze-ish. I feel I owe you this warning.&lt;/p&gt;

&lt;p&gt;My November goals are an extension of my
&lt;a href=&quot;/october-2016-review&quot;&gt;October goals&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;October was good (
&lt;a href=&quot;/october-2016-review&quot;&gt;October review&lt;/a&gt;) - I made progress on two of three projects, and one of those projects need to conclude to make space for the third. (I want to wrap up a course from
&lt;a href=&quot;http://www.climbersguide.co&quot;&gt;www.climbersguide.co&lt;/a&gt;, and once that hits a stable finish state, I’ll switch to prep for Turing School.)&lt;/p&gt;

&lt;h2 id=&quot;deepen-my-knowledge-of-front-end-web-development&quot;&gt;Deepen my knowledge of front-end web development&lt;/h2&gt;

&lt;p&gt;Same goal as last year - finish up the current tutorial, and then sketch out small next steps and start studying.
&lt;a href=&quot;http://exercism.io/&quot;&gt;exercism.io&lt;/a&gt; is a good place to work on little problems and practice a bit.&lt;/p&gt;

&lt;h2 id=&quot;climb-513&quot;&gt;Climb 5.13&lt;/h2&gt;

&lt;p&gt;Last month I sent my first 5.12d outside. A few days later I sent my first 5.13a in the gym. I can do all the moves on another 5.13a, all but one move on a 13c, and almost all of them on a 13d. Due to the inflation of indoor grades compared with outdoor grades, I’m thinking the indoor 13d might be a real 5.13a in difficulty.&lt;/p&gt;

&lt;p&gt;Basically, I’m breaking into solid indoor 5.13 territory, in part because I’m getting better at remembering my sequences.&lt;/p&gt;

&lt;p&gt;I’m still trying to figure out what my weaknesses are, in order to train my weakness instead of my strength. I’ve historically enjoyed training contact strength, but I believe I’m a bit short on movement strength, and absolutely terrible with technique. So, I am trying to train my technique.&lt;/p&gt;

&lt;h2 id=&quot;get-the-climbers-guide-rolling&quot;&gt;Get “The Climber’s Guide” rolling&lt;/h2&gt;

&lt;p&gt;I’m building out an email drip campaign that concludes with a
hard sale(after delivering amazingly valuable guides), pointing people to a sales page (er, I need to write that, too), for the course.&lt;/p&gt;

&lt;p&gt;I’ve worked with some lead climbers in person, working through the basics of the program, and I’ve gotten great feedback. Things like “ life changing” and “my climbing will not be the same”.&lt;/p&gt;

&lt;p&gt;I’m working on working with a larger group of people, and I’d like to get some video from them doing the exercises, so others can follow along on their own, but it’s
really encouraging, the kind of feedback I’m getting.&lt;/p&gt;

&lt;p&gt;I’m gonna launch with just the course + video at $67, with perhaps a more expensive offer at ~$197 including lots of my dedicated time, 1:1. (I could see doing face-time sessions or something, while the climber/belayer are doing the exercises). That will be partially to take advantage of the price anchoring effect, partially because some people will know they want the high-touch version, and $200 is nothing in comparison to what they’ll get in return.&lt;/p&gt;

&lt;h2 id=&quot;misc&quot;&gt;Misc&lt;/h2&gt;

&lt;p&gt;Random self-reflections.&lt;/p&gt;

&lt;h3 id=&quot;phone-usage&quot;&gt;Phone Usage&lt;/h3&gt;

&lt;p&gt;I’ve disabled my Twitter account. I changed the password to a random string, and then
&lt;a href=&quot;http://lettertomyfutureself.net/&quot;&gt;wrote an email to my future self&lt;/a&gt; with the password enclosed. Delivery date is sometime in August 2017. I know I could force a password reset, but knowing the password is coming, and introducing friction to the system makes me pay way less attention to the app.&lt;/p&gt;

&lt;p&gt;I deleted Instagram as well.&lt;/p&gt;

&lt;p&gt;Both of these changes have helped me spend a LOT less time on my phone every day.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_58226b35e4fcb51f79318995_1478650686507__img.png_&quot; alt=&quot;Screenshot thanks to PhoneUsage app (Android). It&apos;s gamified not spending time on my phone. (Moment for iPhone looks like a nice equivalent.)&quot; /&gt; Screenshot thanks to PhoneUsage app (Android). It’s gamified not spending time on my phone. (Moment for iPhone looks like a nice equivalent.)&lt;/p&gt;

&lt;h3 id=&quot;reading&quot;&gt;Reading&lt;/h3&gt;

&lt;p&gt;I’m building in even more reading time to my schedule every day too. It’s stupid, but I sorta-accidentally set a goal of reading 100 books this year. 
&lt;a href=&quot;https://www.goodreads.com/user/show/27372191-josh-thompson&quot;&gt;I’m at 62 books&lt;/a&gt; and no where close to hitting the goal of 100, (I had a three-month period where I read very little, for some reason) but I think I’m aiming to clear 75 books by end-of-year. I read about 50 last year, and plan on reading many fewer next year.&lt;/p&gt;

&lt;p&gt;My effort to read 100 has made me read books that I would otherwise not have read. If it’s short, and I get 30% of the way through and decide I don’t want to finish, instead of stopping reading it (like I would normally do) I sometimes find myself trying to finish it. This is a bad use of time, but… oh well.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>October 2016 Review</title>
   <link href="https://josh.works/october-2016-review"/>
   <updated>2016-11-01T00:00:00+00:00</updated>
   <id>https://josh.works/october-2016-review</id>
   <content type="html">&lt;h1 id=&quot;october-2016-review&quot;&gt;October 2016 Review&lt;/h1&gt;

&lt;p&gt;This month’s review. In another few days I’ll post the goals for November.&lt;/p&gt;

&lt;p&gt;I had
&lt;a href=&quot;/october-2016-review&quot;&gt;three goals for October&lt;/a&gt;, as of about 12 days ago:&lt;/p&gt;

&lt;h2 id=&quot;october-goals&quot;&gt;October goals:&lt;/h2&gt;

&lt;h3 id=&quot;programming&quot;&gt;Programming&lt;/h3&gt;

&lt;p&gt;I wanted to finish a certain Rails Tutorial, and move on to the next one. This project I made zero progress on. But I’m accepted into the
&lt;a href=&quot;https://www.turing.io/&quot;&gt;Turing School’s&lt;/a&gt; January 2017 cohort, and have approval from my company for a long (unpaid) sabbatical for the course.&lt;/p&gt;

&lt;p&gt;So, I’m making progress, and as importantly, I’ve got big pieces of this squared away over the next few months.&lt;/p&gt;

&lt;p&gt;I’d like to reach a point of stability and completeness on my next bullet point (the climber’s guide) before throwing myself into programming training.&lt;/p&gt;

&lt;h3 id=&quot;climbers-guide-course&quot;&gt;Climber’s Guide Course&lt;/h3&gt;

&lt;p&gt;I made good progress here. I finally got
&lt;a href=&quot;http://climbersguide.co/&quot;&gt;the website&lt;/a&gt; I’m using into a viewable form (the old theme I had was hideous).&lt;/p&gt;

&lt;p&gt;I updated some of the email collection forms (there’s now a sidebar, ready to collect someone’s email address) and I linked to a “best of” sidebar section, linking to some useful articles.&lt;/p&gt;

&lt;p&gt;I added an “about me” and “contact me” page, and then most importantly, 
stripped out everything else. There’s no footer, there’s no public meta data about every post, there’s no stupid nav bar that every theme shoves down your throat.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.climbersguide.co&quot;&gt;www.climbersguide.co&lt;/a&gt; is, from a visual perspective, 
boring. And I wouldn’t take it any other way.&lt;/p&gt;

&lt;p&gt;I started fleshing out a bunch of blog posts, either moving over things I’ve written for
this website, or other ideas I had floating around in my head.&lt;/p&gt;

&lt;p&gt;This is the requisite leg-work to get the website ready to receive traffic, and hopefully capture (in the form of email subscribers) some of those views.&lt;/p&gt;

&lt;p&gt;The email list and drip campaigns is where all the good stuff is, so I’ll turn my attention to that next month.&lt;/p&gt;

&lt;h3 id=&quot;climbing-513&quot;&gt;Climbing 5.13&lt;/h3&gt;

&lt;p&gt;Made great progress here. Just a few hours ago, I sent
&lt;a href=&quot;http://www.mountainproject.com/v/anarchitect/105750721&quot;&gt;Anarchitect (5.12d)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I got it on my seventh attempt, though I came extremely close (slipped off the last hold) to sending it on my fourth attempt.&lt;/p&gt;

&lt;p&gt;This was the most work I’ve put into a climb ever. It’s also the hardest grade I’ve sent, and I’m not sure if I ever actually climbed 5.12c. (I’ve been on plenty of them, but usually don’t give climbs more than one or two attempts…)&lt;/p&gt;

&lt;p&gt;Some of the lessons:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson One: There is an insane amount of optimization you can do in a route&lt;/strong&gt;
. My first attempt on this climb, I fell on almost every move, from the first bolt to the last.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Two: I’m horrible at remembering my own beta.&lt;/strong&gt;
 A friend of mine who has an
excellent ability to recall his own beta, and others, and adjust it on the fly, upon seeing my climbing said “It’s as if every time you climb a route, it’s your first time.”&lt;/p&gt;

&lt;p&gt;This inability to recall beta has been holding me back for a while. My on-sight ability has gone up and up, but my ability to project a route is horrific.&lt;/p&gt;

&lt;p&gt;So, this time around, I made a “beta map”. I just jotted down every move of the climb, and added some notes about my sequences. 
&lt;a href=&quot;https://www.dropbox.com/s/xwqtdmshoufjnfc/Anarchitect%2012d%2010-2016%20Beta%20map.pdf?dl=0&quot;&gt;This is what mine looked like&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The process of recalling enough of my movement to make this map, as well as playing back through every move to recall the ideal sequence, is
exactly what I need. As I climbed the route again after making it (the next day) I was comparing every move I made with what I’d outlined in the map.&lt;/p&gt;

&lt;p&gt;In almost every instance, I had recalled the correct movement. My map worked.&lt;/p&gt;

&lt;p&gt;So, I’ll keep making these maps. I hope to improve my “beta recall”, and even on climbs where I don’t make the map, I’ll become more perceptive of my own movement up the route.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Three: It’s important to try hard.&lt;/strong&gt;
 I almost sent the route my fourth attempts, but I fell off because I simply didn’t try on the last move. This is a horrible habit I’ve picked up in my climbing, and it’s sneaky. See, you can always try to be stronger, or climb more efficiently, and these are good things, but at the end of the day - if you can try really
really hard, you can make more progress than someone who doesn’t.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Four: I’ve gotten better at rock climbing in the last few years.&lt;/strong&gt;
 It’s been ages since I’ve had a solid indicator that I’ve improved as a climber. In the last five years, I’ve spent almost three of them not climbing regularly, and just trying to train a bit on my own. Due to seasons and travel, all of my “progress” has been inside, on gym routes. Gym routes have little relationship to outdoor climbs, and they’re not internally consistent
or consistent across time.&lt;/p&gt;

&lt;p&gt;So, I know I’ve been
feeling stronger, but I didn’t have proof. Now I do. I’m going to aim for a few more 5.12ds and 12cs, but I think I’m going to hop on
&lt;a href=&quot;https://www.mountainproject.com/v/sonic-youth/105749158&quot;&gt;Sonic Youth&lt;/a&gt; next. It might be a “soft” 5.13a, but supposedly some broken holds in 2010 made it solid for the grade.&lt;/p&gt;

&lt;p&gt;November goals, coming soon.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Quitting the shallow for the deep</title>
   <link href="https://josh.works/i-quit"/>
   <updated>2016-10-24T12:18:52+00:00</updated>
   <id>https://josh.works/i-quit</id>
   <content type="html">&lt;h2 id=&quot;deep-work-over-shallow&quot;&gt;Deep work over shallow&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TL;DR: I’m off social media, but want to keep a functioning Twitter URL. So, it redirects here.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This year’s “best book I’ve read” label might go to Cal Newport’s &lt;a href=&quot;https://www.amazon.com/Deep-Work-Focused-Success-Distracted/dp/1455586692&quot;&gt;Deep Work&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s the gist:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;One of the most valuable skills in our economy is becoming increasingly rare. If you master this skill, you’ll achieve extraordinary results.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Deep work is the ability to focus without distraction on a cognitively demanding task. It’s a skill that allows you to quickly master complicated information and produce better results in less time. Deep work will make you better at what you do and provide the sense of true fulfillment that comes from craftsmanship. In short, deep work is like a super power in our increasingly competitive twenty-first century economy. And yet, most people have lost the ability to go deep-spending their days instead in a frantic blur of e-mail and social media, not even realizing there’s a better way.&lt;/p&gt;

&lt;p&gt;In DEEP WORK, author and professor Cal Newport flips the narrative on impact in a connected age. Instead of arguing distraction is bad, he instead celebrates the power of its opposite. Dividing this book into two parts, he first makes the case that in almost any profession, cultivating a deep work ethic will produce massive benefits. He then presents a rigorous training regimen, presented as a series of four “rules,” for transforming your mind and habits to support this skill.&lt;/p&gt;

&lt;p&gt;I often feel terrible at owning and directing my own attention. Yet, this ability is one of the most significant factors over on-going professional success
and project-related satisfaction.&lt;/p&gt;

&lt;p&gt;(I differentiate the two because you can have professional success without much satisfaction, and probably vice versa. I want both.)&lt;/p&gt;

&lt;p&gt;I’ve a bunch of other reasons for wanting to develop these skills, but reading Deep Work helped clarify something about why a goal I accomplished a few years ago was so satisfying.&lt;/p&gt;

&lt;p&gt;The context: I was working in DC in an uninspiring and low-paid role. I was commuting about an hour each way. Kristi and I wanted to move, and I wanted a better job. I didn’t feel like I “deserved” a better job, just that I’d not yet accomplished the dual efforts of:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Being more valuable&lt;/li&gt;
  &lt;li&gt;Finding a role where I could deliver that additional value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I could accomplish these goals, I could find a great company, and do that work remotely.&lt;/p&gt;

&lt;p&gt;Put another way, if I could accomplish these goals, Kristi and I could move to Colorado with a job in hand. To someone who’s grown up in the climbing community, this is akin to dying and going to heaven.&lt;/p&gt;

&lt;p&gt;In hindsight, this powerful goal motivated me to do deep work. I spent many, many hours immersed deep in a range of projects:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Who are industry-leaders in the customer support world? I got to know them.&lt;/li&gt;
  &lt;li&gt;Could I show that I’d help improve the efforts my entire team? If not, figure out how, and then do it.&lt;/li&gt;
  &lt;li&gt;Could I add valuable skills to my “toolchest”? I think so. I went deep on Excel, so I could collect/display data better.&lt;/li&gt;
  &lt;li&gt;Can I communicate in writing better? Probably. Learn by doing, so I started writing. Lots.&lt;/li&gt;
  &lt;li&gt;I studied just about everything Ramit Sethi wrote on getting jobs. (&lt;a href=&quot;https://www.iwillteachyoutoberich.com/insiders-kit/80-20-guide/&quot;&gt;Here’s a great place to start.&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I did all of this most days between the hours of 4:45a - 7:15a. Because after I went to work and got back at 6:30p, I was exhausted.&lt;/p&gt;

&lt;p&gt;I’ve not poured myself into projects with quite that same intensity for a while, in part, because it’s easy to get distracted. And I don’t have quite the same audacious goals that I did then.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To make space for deep work, I’m removing “the shallows” from my easy reach. I’ve not used Facebook much over the last two years, but it’ll stay deleted. Instagram I’m removing from my phone, and Twitter - I’m locking myself out of it, removing it from my phone.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is all. I might update this a bit more as I go, but for now - I’ve taken all the time I’ve allotted to write this, and it’s on to the next thing.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>October 2016 Goals</title>
   <link href="https://josh.works/monthly%20evaluation/2016/10/19/october-2016-goals/"/>
   <updated>2016-10-19T00:00:00+00:00</updated>
   <id>https://josh.works/monthly%20evaluation/2016/10/19/october-2016-goals</id>
   <content type="html">&lt;p&gt;In the last year, I’ve fluctuated between writing 
every day for 30 days and 
not posting once in two months.&lt;/p&gt;

&lt;p&gt;Frankly, neither of those is good for me.&lt;/p&gt;

&lt;p&gt;I like writing because it clarifies my own thoughts. Sometimes it seems useful to others. I like to be useful (“utility” can often correspond with “market value”, which sometimes corresponds with $$$) and I like to think clearly.&lt;/p&gt;

&lt;h1 id=&quot;projects&quot;&gt;Projects&lt;/h1&gt;

&lt;p&gt;I’ve got three open projects right now:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Learn back-end web development.&lt;/strong&gt;
 (ew. a huge and complicated and ill-defined goal)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Launch a three-tiered course/offering about 
how to climb without fear over on 
&lt;a href=&quot;http://climbersguide.co/&quot;&gt;climbersguide.co&lt;/a&gt;.&lt;/strong&gt;
 (Much less complicated, much more defined, than #1)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Climb 5.13.&lt;/strong&gt;
 This has been a goal for ages. {excuse1} {excuse 2} {excuse 3}. With those excuses out of the way, 5.13 is a meaningful grade to me. Mostly, it’s quite hard climbing. 5.13 is not hard to 
really really good rock climbers, but at least it gets a shrug from them, so it’s good enough for me. (Simplest and best defined of all goals.)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;why-did-i-title-this-thing-october&quot;&gt;Why did I title this thing “October”?&lt;/h2&gt;

&lt;p&gt;I can have one meaningful goal in each of these projects, and spend the rest of the month working on it. At the end of the month, I can post an update, and then sketch out the next month of work.&lt;/p&gt;

&lt;p&gt;This cadence might be that sweet spot of “writing for clarity and understanding” without tipping into “writing for the sake of writing”.&lt;/p&gt;

&lt;p&gt;To that end, here’s my stab at what might be progress for the rest of the month in each domain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programming&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ll finish Hartle’s 
&lt;a href=&quot;https://www.railstutorial.org&quot;&gt;Rails Tutorial&lt;/a&gt;, and move on to another walk-through of a specific app. 
&lt;a href=&quot;http://www.urbandictionary.com/define.php?term=tbh&quot;&gt;TBH&lt;/a&gt;, I don’t feel like I’ve learned too much from the tutorial, because so much of what I’m doing is going way over my head.&lt;/p&gt;

&lt;p&gt;I’m punching in code in the right places, and making the tests turn green, but I’ve got a ways to go for really understanding what I’m doing.&lt;/p&gt;

&lt;p&gt;Fortunately, this is a solvable problem, so it doesn’t concern me at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Climber’s Guide course&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Oh man. Do you want to undertake a project that makes you question your value as a person, everyone’s assessment of you, and make you wonder if you’re a terrible person?&lt;/p&gt;

&lt;p&gt;Great. Launch a course that you will try to get people to pay you a lot of money for.&lt;/p&gt;

&lt;p&gt;More real-talk: The price-points I’m aiming for are roughly:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;$50 - Basic&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;$150 - Middle&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;$300 - Premium&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s right. {scream emoji}. This is 
a lot of money. I’m going to ask people to pay me it.&lt;/p&gt;

&lt;p&gt;Part of the pricing is because that’s what the product + offerings is worth. Part of it is the anchoring effect.&lt;/p&gt;

&lt;p&gt;Quick - is $50 a lot of money? You’ll probably say “no” because you just read the price of $300. So, $50 is cheap. What if I said I was offering a course for $10, $25, and $50? Now you’d say $50 is expensive. Probably.&lt;/p&gt;

&lt;p&gt;The scary thing is… I think it’ll be worth it. But again, there’s that thorny problem of “value, self-esteem, confidence” raising it’s ugly head.&lt;/p&gt;

&lt;p&gt;So, next step?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Record a bunch of videos talking people through the program, step by step.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Send more regular emails to everyone that’s on the list. I’ve got about 250 email subscribers that I’ve not emailed in a few months. Oops.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Furiously google’s “Reengagement campaign”. Fortunately, I work at a company that 
&lt;a href=&quot;https://litmus.com/blog/3-steps-to-successful-subscriber-reengagement&quot;&gt;knows how to handle this sort of situation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(I’d like to “launch” this course to a list of at least 500. I’ve got other projects in the pipe for that…)&lt;/p&gt;

&lt;p&gt;I already have most of the videos done (the videos of the actual climbing.) What I’m missing is the “Josh talks into a camera and explains what’s going on”.&lt;/p&gt;

&lt;p&gt;I need to annotate the videos, make it 
extremely clear whatever it is I’m trying to teach.&lt;/p&gt;

&lt;p&gt;It’ll so be worth the money. I can help the right person climb 2-3 grades harder almost overnight. That same person will spend $300 on a new rope and $150 on cool climbing shoes that will help them climb (maybe) one grade harder.&lt;/p&gt;

&lt;p&gt;It’s still sticky and uncomfortable. But that means it’s good for me, right?&lt;/p&gt;

&lt;p&gt;Right?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Climbing 5.13&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There’s a nice book written about 
&lt;a href=&quot;https://www.amazon.com/dp/B006YOJMSC/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1&quot;&gt;how to climb 5.12&lt;/a&gt;. (I just noticed the cover image is from 
Jesus Wept, 5.12d, Red River Gorge. Fantastic climb, though those two-finger pockets are challenging.)&lt;/p&gt;

&lt;p&gt;Climbing 5.12 is 
&lt;a href=&quot;http://www.climbing.com/skills/your-goal-climb-512a/&quot;&gt;most likely within the genetic potential of almost every person alive today&lt;/a&gt;. That doesn’t make it 
easy, it just means “your genes will not make it impossible for you to climb 5.12 with enough time, training, and at the right BMI”&lt;/p&gt;

&lt;p&gt;5.13 is four grades harder than 5.12, which is… generally considered hard. I’ve had mixed success with 5.12. I’ve 
&lt;a href=&quot;http://eveningsends.com/onsight-climbing-tips-sport-climbers/&quot;&gt;onsighted&lt;/a&gt; up to 5.12b, and projected… maybe a few 5.12cs. This is a pretty bad “spread” between the onsight grade and project grade.&lt;/p&gt;

&lt;p&gt;Traditionally, you should be projecting about four grades harder than you can onsight. I project one grade harder than I onsight. (Oh, you thought 5.14 was a reasonable goal? 
&lt;a href=&quot;http://eveningsends.com/how-to-climb-5-14-the-simple-way/&quot;&gt;hah&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;Why is this? Am I 
really really good at onsighting? Not at all. I am 
comically bad at remembering my beta. (“Beta” is just the sequence of hand and foot movements that you use to move through sections of a climb)&lt;/p&gt;

&lt;p&gt;Generally, the first time you get on a climb, you’re going to make some mistakes, as well as learn more efficient ways to climb. (“The 2nd left-hand crimp is terrible. Bump to the more incut hold, and then highstep your right foot to a hand-foot match on the right”)&lt;/p&gt;

&lt;p&gt;I cannot remember this stuff at all. If I do the same climb three times in a row, I’ll have probably climbed it three different ways. I’m basically re-onsighting climbs, over and over and over.&lt;/p&gt;

&lt;p&gt;So, if I want to climb better/harder, the obvious next step is remember my beta.&lt;/p&gt;

&lt;p&gt;I feel like this might be related to my generally horrific ability to visualize things in general. I’ve noticed when I read books with vivid landscape depictions, I gain 
nothing from reading them, because my “minds eye” doesn’t do anything.&lt;/p&gt;

&lt;p&gt;I just read books for content, plot advancement, etc. I’m bad at visualizing faces (I’m bad with names, too), and when I look hard enough, I find evidence of a severely under-trained “minds eye”.&lt;/p&gt;

&lt;p&gt;google’s “how to train your mind’s eye” Wow. That got weird quick. Nevermind.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, next steps for climbing training?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m going to start writing out a “sequence log” of the difficult parts of routes/boulder problems, and see if I can follow my intended sequences over time.&lt;/p&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional reading:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;This guy wrote 
&lt;a href=&quot;http://brayackmedia.blogspot.com/2015/08/what-it-takes-for-me-to-climb-513.html&quot;&gt;how/why he climbes 5.13&lt;/a&gt;, and he’s a local to the New River Gorge, which is near and dear to my heart. Beautiful pictures, too.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://eveningsends.com/onsight-climbing-tips-sport-climbers/&quot;&gt;Onsight Climbing Tips for Sport Climbers&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://rockclimberstrainingmanual.com/rock-climbing-performance/on-sight/&quot;&gt;Anderson Brother’s on On-sight climbing&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;There’s a TON written about climbing 5.12. Comparatively little about climbing 5.13. (Or so goes my first impression from the Googles.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://fortheloveofclimbing.com/2016/09/13/a-reason-a-season-a-lifetime/&quot;&gt;A nice climbing blog I stumbled across&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PS SquareSpace’s Markdown content block doesn’t work with real markdown. :( They don’t recognize # H1, ## H2, etc. Sigh.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Wrapping my head around local politics 001</title>
   <link href="https://josh.works/local%20government/2016/08/24/wrapping-my-head-around-local-politics-001/"/>
   <updated>2016-08-24T00:00:00+00:00</updated>
   <id>https://josh.works/local%20government/2016/08/24/wrapping-my-head-around-local-politics-001</id>
   <content type="html">&lt;p&gt;Warning: Buzzwords ahead about millennials.*&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;As a millennial, I want to “get involved” in my “local community”, and don’t know the best way to “mobilize my resources”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;vomit. I hate admitting that. But I still want to figure out 
if it is possible for me (little old me) to do something meanigful in the arena of local politics. (
&lt;a href=&quot;http://www.strongtowns.org/the-growth-ponzi-scheme/&quot;&gt;Here’s a rough overview of what I’d like accomplished&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;So, what does any resourceful person do?&lt;/p&gt;

&lt;p&gt;I headed to Google and searched for:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;“politics for millennials”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;“local politics for millennials”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;“young people involved in local politics”&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The results (or, judging by the top five hits for each search) are totally underwhelming. Here’s a few:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.theatlantic.com/politics/archive/2016/02/the-liberal-millennial-revolution/470826/&quot;&gt;The Liberal Millennial Revolution&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.huffingtonpost.com/derrick-feldmann/millennials-causes-the-el_b_10731378.html&quot;&gt;Millennials, Causes And The Election: How Millennials’ Perspectives Of Personal Impact And Activism Change In An Election Year&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.huffingtonpost.com/2013/11/22/millennials-in-congress_n_4325417.html&quot;&gt;Millennials Won’t Be In Charge Of Congress Until At Least 2035&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.theatlantic.com/sponsored/allstate/when-it-comes-to-politics-do-millennials-care-about-anything/255/&quot;&gt;When It Comes to Politics, Do Millennials Care About Anything?&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.huffingtonpost.com/brian-hanley/how-to-get-more-young-peo_b_8562196.html&quot;&gt;How to Get More Young People Involved in Politics&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;themes-from-articles-about-millennials&quot;&gt;Themes from articles about Millennials&lt;/h3&gt;

&lt;p&gt;I’m generalizing, but I noticed a few themes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Millennials get lumped together.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Millennials are still considered an outgroup. (It seems a lot of people writing 
aboutmillennials, to other people who are not part of that group.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The “departure from the norm” of voting engagement/preference of millennials is implicitly a result of their youth or liberalism, rather than a reasonable assessment of the political system.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m going to go out on a limb here, borrowing from pretty straight-forward realities behind education:&lt;/p&gt;

&lt;p&gt;People care about things that matter to them, and will go to great efforts to pursue their own interests, and are nearly impossible to motivate in any other way.&lt;/p&gt;

&lt;p&gt;Please see: school. (I steadfastly resisted learning anything that I didn’t want to learn about. Conversely, something I want to learn about, I will pour myself into learning.)&lt;/p&gt;

&lt;p&gt;In other words, a perceived disinterest in politics 
is not a reflection of millennials, it’s a reflection of “the system”.&lt;/p&gt;

&lt;h3 id=&quot;defining-politics&quot;&gt;Defining Politics?&lt;/h3&gt;

&lt;p&gt;Lets define politics:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;“Politics” is loosely correlated to organizing life around ourselves to care for the common good. (Not the official definition, just my working definition.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;“Politics” is wrangling between elites to bring about things that make them feel good, while talking down to us common folk.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Regarding “politics as a tool of the elite”, 
&lt;a href=&quot;https://twitter.com/Snowden/status/741584993009438720&quot;&gt;this&lt;/a&gt; Snowden quote seems appropriate:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Politics: the art of convincing decent people to forget the lesser of two evils is also evil.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those two interpretations of the word “politics” are irreconcilable, and when people complain that millennials are not involved in “politics”, they usually seem to be referring to #2. (Anytime someone says voting is a “duty”, that 
&lt;a href=&quot;https://www.bostonglobe.com/opinion/2012/10/27/jacoby/PiV0sbV2bXf6OQAToXalxM/story.html&quot;&gt;should be a red flag&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;I don’t care at all about “politics”, but I care a lot about how people are treated by other people.&lt;/p&gt;

&lt;p&gt;This fits into two groups:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;How people of equal power treat each other&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How people of unequal power treat each other&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;People with power can tell people without power what they can and cannot do. If those people with power are also representatives of the government, they’ve got fantastic enforcement mechanisms to drive compliance.&lt;/p&gt;

&lt;h3 id=&quot;what-i-a-lone-single-powerless-millennial-want-to-do&quot;&gt;What I (a lone, single, powerless millennial) want to do&lt;/h3&gt;

&lt;p&gt;There’s a few things that matter a lot, and can be partially/wholly implemented at a local level:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Many contributing factors to police brutality. 
&lt;a href=&quot;https://mic.com/articles/121572/15-things-your-city-can-do-right-now-to-end-police-brutality&quot;&gt;Here is 15&lt;/a&gt;, at least ten of which could be done mostly at a local level.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.epi.org/publication/making-ferguson/&quot;&gt;Racist zoning laws&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Supporting “fractal” development instead of centrally planned development. 
&lt;a href=&quot;http://www.strongtowns.org/housing&quot;&gt;Strongtowns on housing&lt;/a&gt;. I.E. let people do with their property as they see fit, be it live in it, work in it, run a business from it, or all of the above simultaneously. (This is illegal in most places)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Keep awesome 
&lt;a href=&quot;https://www.amazon.com/Everything-Want-Do-Illegal-Stories/dp/0963810952/ref=sr_1_1?ie=UTF8&amp;amp;qid=1472007422&amp;amp;sr=8-1&amp;amp;keywords=everything+i+want+to+do+is+illegal&quot;&gt;food sources legal&lt;/a&gt;, instead of running afoul of angry bureaucrats. &lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*I hate the term “millennial”, and, in fact, keep misspelling it. It implies homogeneousness, youth, and immaturity. All unfounded, besides the fact that we are, in fact, younger than people born before us, because physics.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/dp/B008UV826U/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1&quot;&gt;Startup Communities&lt;/a&gt; (I’m skeptical of the premise - we don’t need communities driven around startups, we need healthy, financially sustainable communities where people can 
do what they want as long as they don’t deprive anyone else of their rights. I’ve not read this book yet.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.strongtowns.org/the-growth-ponzi-scheme/&quot;&gt;Strong Towns: Growth Ponzi Scheme&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.strongtowns.org/housing&quot;&gt;Strongtowns on housing&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.epi.org/publication/making-ferguson/&quot;&gt;Making Ferguson&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Everything-Want-Do-Illegal-Stories/dp/0963810952/ref=sr_1_1?ie=UTF8&amp;amp;qid=1472007422&amp;amp;sr=8-1&amp;amp;keywords=everything+i+want+to+do+is+illegal&quot;&gt;Let good food be legal&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Resources for People with Jobs</title>
   <link href="https://josh.works/jobs/2016/07/21/be-better-at-your-job/"/>
   <updated>2016-07-21T00:00:00+00:00</updated>
   <id>https://josh.works/jobs/2016/07/21/be-better-at-your-job</id>
   <content type="html">&lt;h1 id=&quot;resources-for-people-with-jobs&quot;&gt;RESOURCES FOR PEOPLE WITH JOBS&lt;/h1&gt;

&lt;p&gt;You spend most of your waking hours at work. So, spend a few of those waking hours when you’re 
not at work thinking about how to improve the hours that you 
are working. Often, improving your work means you can improve your work conditions and compensation.&lt;/p&gt;

&lt;p&gt;Many people in their 20s feel stagnant in their job(s). Don’t let that be you.&lt;/p&gt;

&lt;p&gt;Here’s a list of useful resources. I’ll update this occasionally.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Why this list of books, Josh? Why not just write “the best career advice ever! #7 will amazing you!” and call it a day?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because
I don’t know things. I’ve stumbled into some things that seem to work, and along the way encountered many things that seem not to work. &lt;/p&gt;

&lt;p&gt;I’m not able to evaluate my own experience and detangle my decisions from happenstance. So I choose to not play the game of offering advice, and instead point you to people who DO have useful things to say.&lt;/p&gt;

&lt;p&gt;I promise, your time is well spent with these authors:&lt;/p&gt;

&lt;h3 id=&quot;books&quot;&gt;BOOKS&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Good-They-Cant-Ignore-You-ebook/dp/B0076DDBJ6/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469136533&amp;amp;sr=1-1&amp;amp;keywords=so+good+they+can%27t+ignore+you#nav-subnav&quot;&gt;So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Everybody-Writes-Go--Creating-Ridiculously-ebook/dp/B00LMB5P0G/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469136516&amp;amp;sr=1-1&amp;amp;keywords=everyone+writes&quot;&gt;Everybody Writes: Your Go-To Guide to Creating Ridiculously Good Content&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Difficult-Conversations-Discuss-What-Matters/dp/0143118447/ref=sr_1_1?ie=UTF8&amp;amp;qid=1469136215&amp;amp;sr=8-1&amp;amp;keywords=difficult+conversations&quot;&gt;Difficult Conversations: How to Discuss What Matters Most&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Smart-Like-How-Hidden-Success-ebook/dp/B0181C4N56/ref=sr_1_1?ie=UTF8&amp;amp;qid=1469136425&amp;amp;sr=8-1&amp;amp;keywords=smart+like+how&quot;&gt;Smart Like How: The Hidden Side of Career Success&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Mastery-Robert-Greene/dp/014312417X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1469136455&amp;amp;sr=8-1&amp;amp;keywords=mastery+robert+greene&quot;&gt;Mastery by Robert Greene&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Fearless-Salary-Negotiation-step---step-ebook/dp/B018T8VH3I/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469136488&amp;amp;sr=1-1&amp;amp;keywords=salary+negotiation#nav-subnav&quot;&gt;Fearless Salary Negotiation: A step-by-step guide to getting paid what you’re worth&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Slight-Edge-Turning-Disciplines-Happiness-ebook/dp/B00GDKN3T6/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469136559&amp;amp;sr=1-1&amp;amp;keywords=the+slight+edge#nav-subnav&quot;&gt;The Slight Edge: Turning Simple Disciplines into Massive Success and Happiness&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;blogs&quot;&gt;BLOGS&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.smartlikehow.com/&quot;&gt;Smart Like How&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://calnewport.com/blog/&quot;&gt;Study Hacks Blog: Decoding Patterns of Success&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.iwillteachyoutoberich.com/&quot;&gt;Ramit Sethi: I Will Teach&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>How Can You Buy Happiness?</title>
   <link href="https://josh.works/money/2016/07/07/can-you-buy-happiness/"/>
   <updated>2016-07-07T00:00:00+00:00</updated>
   <id>https://josh.works/money/2016/07/07/can-you-buy-happiness</id>
   <content type="html">&lt;p&gt; You can’t, but that won’t stop you and me from trying, at least a little.&lt;/p&gt;

&lt;p&gt;We (Humans, americans, at least “other people like me”) like to buy 
things. But we should do more than just buy 
things.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Experiences can have a much bigger impact on people’s happiness than things, and a big part of that happiness lies in looking forward to the experience that you are going to have.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This article is long,
&lt;a href=&quot;http://www.newrepublic.com/article/114031/money-happiness-and-new-science-smarter-spending#&quot;&gt;but it is worth a read.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have $100 to spend on something, schedule something you will look forward to for a week or a month. Looking forward to something 
is as important as enjoying the thing itself. &lt;/p&gt;

&lt;p&gt;If you want to have 4x the fun, invite someone along. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Write Less Say More</title>
   <link href="https://josh.works/growth/2016/07/06/write-less-say-more/"/>
   <updated>2016-07-06T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/07/06/write-less-say-more</id>
   <content type="html">&lt;p&gt;I recently read a short piece about 
&lt;a href=&quot;http://rs.io/software-writers-tools-improve-writing/&quot;&gt;using software to improve your own writing&lt;/a&gt;. To paraphrase one of the suggestions: “do away with weasel words, the passive voice, adverbs, cliches.” &lt;/p&gt;

&lt;p&gt;I’m adding “complex sentences” to the list.&lt;/p&gt;

&lt;p&gt;Out of curiosity, I looked through things that I’ve written. I am not pleased.&lt;/p&gt;

&lt;p&gt;I am wordy. I create complex sentences, then interrupt myself in the middle.&lt;/p&gt;

&lt;p&gt;(The last sentence started out as “I tend to be verbose and wordy, with many complex sentences filled with interruptions.” Anyone who can write “verbose and wordy” without immediately cringing ought to be kept far from a keyboard.)&lt;/p&gt;

&lt;p&gt;I face a new challenge: 
write less, say more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are two approaches I can take to be successful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Edit as I go.&lt;/strong&gt;
 Never finish a sentence without hitting the backspace key at least a dozen times. (I need a keystroke counter to see how often I type either CTRL Z or Backspace. It is constant.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Write unencumbered by an attempt to write well&lt;/strong&gt;
. Once finished, go back and edit.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Option two is superior.&lt;/p&gt;

&lt;p&gt;I have taken the first approach so far in this little piece. Now that I am paying attention to my propensity to write long, complex sentences, I am constantly trying to re-write the sentence before I’ve even figured out what I’m trying to say.&lt;/p&gt;

&lt;p&gt;It would be better to just get the 
idea down on paper, and go back and fix it after the fact, than constantly interrupt the flow of the idea coming out of my head.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Five Lessons Learned in Buenos Aires</title>
   <link href="https://josh.works/travel/2016/07/05/five-lessons-learned-in-buenos-aires/"/>
   <updated>2016-07-05T00:00:00+00:00</updated>
   <id>https://josh.works/travel/2016/07/05/five-lessons-learned-in-buenos-aires</id>
   <content type="html">&lt;p&gt;Note: This is an unedited draft of a post from July 5, 2015. Almost exactly one year ago, written after a week in Buenos Aires. Since writing this post, Kristi and I have continued on to more than a year of non-stop travel, though we’re settling down back in Golden, CO in about two months. &lt;/p&gt;

&lt;p&gt;Kristi and I arrived here in Buenos Aires less than a week ago. We’ve quickly found a routine in some ways, and in others, are still very out of our routine.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;No matter where you go, you are still you.&lt;/strong&gt;
 If you want to escape from all your insecurities, disappointments, and challenges, you have to figure out how to not take yourself along. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Being outside of your comfort zone grows you. &lt;/strong&gt;
 If you want to escape from all your insecurities, disappointments, and challenges, doing hard things may help turn you into someone who is less insecure, less disappointed, and not as challenged by things that were once challenging. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In many ways we feel like children here. We struggle to communicate, don’t recognize much, and don’t know where things are. In an absolute sense, our accomplishments are small (I.E. we’ve managed to feed ourselves) and our need is large (We’re staying in a grandparent’s empty apartment, many people here in Buenos Aires have gone out of their way to help us in small and large ways). &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Perspective matters&lt;/strong&gt;
. The first time I walked back from the 
&lt;a href=&quot;http://www.areatresworkplace.com/ubicaciones.html#soho&quot;&gt;coworking space&lt;/a&gt; to our apartment without wondering if I took a wrong turn, I felt a sense of accomplishment. It’s been so long since I’ve felt a sense of accomplishment for such a mundane thing. I am rediscovering the joys succeeding in very boring ways every day. (Exchanged pleasantries and asked questions to a fruit vendor? WIN! Found lunch, paid for it? WIN!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Doing hard stuff with a friend is better than doing it alone. &lt;/strong&gt;
 Kristi is my best friend. Lots of people travel to other countries by themselves. It’s 1000% better doing it with your best friend. (And being married to your best friend? Whoa.) I spent a semester abroad in college, and often felt quite discouraged. I’ve not felt discouraged at all here, and it’s because of Kristi. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, after butchering my way through a conversation with a taxi driver in terrible, broken Spanish, I was frustrated at how bad I was at it. I was thinking of all the reasons I 
&lt;strong&gt;should&lt;/strong&gt;
 be better at Spanish. I was thinking of all the people I know who are fluent in both English and Spanish, and how dumb I am compared to them.&lt;/p&gt;

&lt;p&gt;Kristi just said “Good job. You did great.” &lt;/p&gt;

&lt;p&gt;And I was at peace again.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;An unstable currency is a disaster.&lt;/strong&gt;
The Argentinian Peso is inflating very, very quickly. There are government controls on bringing money into the country. The official exchange rate is about 25% less than the real exchange rate. This causes great harm to everyone on the peso (except, I suppose, the government who doesn’t have to pay debts yet). Everyone inside and outside of Argentina knows the economy is a disaster. But they got there via one small public policy at a time. &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Three Android Apps I Use Every Day (and maybe you&apos;ll use them too)</title>
   <link href="https://josh.works/growth/2016/07/04/three-android-apps-i-use-every-day-and-maybe-youll-use-them-too/"/>
   <updated>2016-07-04T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/07/04/three-android-apps-i-use-every-day-and-maybe-youll-use-them-too</id>
   <content type="html">&lt;p&gt;I’m not here to talk about Twitter and Instagram, which… I use too much. Lets talk about things that make my life better, and might do the same for you.&lt;/p&gt;

&lt;p&gt;(If you’re an iPhone user, just Google for the iOS version of the following tools. They’re all out there)&lt;/p&gt;

&lt;h2 id=&quot;rewire-app-recurring-behavior-tracking&quot;&gt;Rewire App: “Recurring behavior” tracking&lt;/h2&gt;

&lt;p&gt;I wrote “Habit tracking” originally, but I don’t like that phrasing. I’m all for good habits, or eliminating bad ones, but I don’t think you should try to form a new habit until you’ve figured out
&lt;a href=&quot;/intentional-habit-building&quot;&gt;how to make it really, really easy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So, I use &lt;a href=&quot;http://www.rewireapp.io/&quot;&gt;Rewire&lt;/a&gt; to simply track the status of things I’d like to pay attention too.&lt;/p&gt;

&lt;p&gt;I’m not trying to make new habits. I just want to see how often I do something on its own.&lt;/p&gt;

&lt;p&gt;When I do the thing I want to do, I mark that day’s habit as “complete”. If I don’t, I don’t mark it as “failed”, I just mark it as “skipped”.&lt;/p&gt;

&lt;p&gt;This is a tiny way I can
&lt;a href=&quot;/be-gentle-to-you&quot;&gt;be gentle to myself&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;journey-app-daily-gratitude&quot;&gt;Journey App: Daily gratitude&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;edit: as of December 2017, I don’t use Journey anymore. Sometimes I use a physical notebook, sometimes I use keep, sometimes I don’t do any specific thinking around daily gratitude. I wish I did, but I don’t.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I write a little  bit every day. Three things every day, and never with the intention of publishing them.&lt;/p&gt;

&lt;p&gt;Between &lt;a href=&quot;https://www.amazon.com/Slight-Edge-Turning-Disciplines-Massive/dp/193594486X&quot;&gt;The Slight Edge&lt;/a&gt; and &lt;a href=&quot;https://www.amazon.com/Miracle-Morning-Not-So-Obvious-Guaranteed-Transform-ebook/dp/B00AKKS278/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1467616556&amp;amp;sr=1-1&amp;amp;keywords=micracle+morning&quot;&gt;The Miracle Morning&lt;/a&gt;_ and many other books, and endless articles, I’ve finally been convinced about the benefit of finding a few things every day to be thankful for. Three things, specifically.&lt;/p&gt;

&lt;p&gt;For a long time I used &lt;a href=&quot;https://chrome.google.com/webstore/detail/google-keep-notes-and-lis/hmjkmjkepdijhoojdojkdfohbdgmmhki?hl=en&quot;&gt;Google Keep&lt;/a&gt; to track all my items, but it became laggy once I had a few hundred lines of text in it. So, I hunted around, and found &lt;a href=&quot;http://2appstudio.com/journey/&quot;&gt;Journey&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://2appstudio.com/journey/&quot;&gt;Journey&lt;/a&gt; is an Android (and windows) app + Chrome extension for “daily journaling”. I just open it up (usually on my phone, as I go to sleep, other times on the Chrome extension) and I jot down three things I’m thankful for.&lt;/p&gt;

&lt;p&gt;The only rules are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Always three things&lt;/li&gt;
  &lt;li&gt;No repeats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I enjoy having to be a little creative to make sure I don’t repeat things, and it’s really encouraging to scroll down through hundreds of little tiny (and sometimes big) things I was (and am) thankful for.&lt;/p&gt;

&lt;h2 id=&quot;phone-usage-dont-waste-your-life&quot;&gt;Phone Usage: Don’t waste your life&lt;/h2&gt;

&lt;p&gt;Apparently, no one has heard of this app. Lifehacker, CNET, Gizmodo, and others all have pretty terrible recommendations for apps that tell you how much you use your phone. I’d know - I tried what they recommended, was frustrated, and then finally found
&lt;a href=&quot;https://play.google.com/store/apps/details?id=pt.aguiar.phoneusage&quot;&gt;PhoneUsage&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=pt.aguiar.phoneusage&quot;&gt;PhoneUsage&lt;/a&gt; does exactly what you’d expect:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Tells you how much total time you spend with your phone “on”. (I use quotes because talking on the phone counts, even though the screen is off.)&lt;/li&gt;
  &lt;li&gt;Tells you how many times you turned your screen on (total #sessions, and also the number of “quick checks”. I don’t know how it qualifies one from the other.)&lt;/li&gt;
  &lt;li&gt;How much you use each app&lt;/li&gt;
  &lt;li&gt;Lots more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I love it. I look at it at least once a day, sometimes more. I think it helps me subtly move towards less frivolous time spent on my phone.&lt;/p&gt;

&lt;h3 id=&quot;resources-used-while-writing-this-post&quot;&gt;Resources used while writing this post:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/spadgos/sublime-DefaultFileType&quot;&gt;Set default new file type to Markdown in Sublime Text 3&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://coderwall.com/p/j3tjtq/spell-check-for-markdown-in-sublime-text&quot;&gt;Enable spell check in Markdown documents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I didn’t say the resources list is ever related to the content of the post. ¯\_(ツ)_/¯&lt;/p&gt;

&lt;p&gt;PS: To write the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;¯\_(ツ)_/¯&lt;/code&gt; figure in Markdown, you actually need to write:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;¯\\\_(ツ)\_/¯&lt;/code&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The Millionaire Next Door</title>
   <link href="https://josh.works/books/2016/07/04/the-millionaire-next-door/"/>
   <updated>2016-07-04T00:00:00+00:00</updated>
   <id>https://josh.works/books/2016/07/04/the-millionaire-next-door</id>
   <content type="html">&lt;p&gt;I’m struggling to know what to write about 
The Millionaire Next Door.&lt;/p&gt;

&lt;p&gt;It’s got many wonderful traits, and I strongly recommend that you read it (I wouldn’t mention it otherwise) but it’s got some flaws. I’m afraid if I focus on the flaws, I’ll turn people off from it that might otherwise read it, but if I don’t, I’ll do readers a disservice.&lt;/p&gt;

&lt;p&gt;So, here we go:&lt;/p&gt;

&lt;h3 id=&quot;read&quot;&gt;Read&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Millionaire-Next-Door-Surprising-Americas/dp/1589795474/ref=sr_1_1&quot;&gt;The Millionaire Next Door&lt;/a&gt; because:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Most of us have an incorrect perception of what it looks like to be a millionaire, and that colors our thinking about wealth. (Hint: the “average” millionaire looks pretty unremarkable.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The book will hopefully inspire some self-evaluation in new ways. (It did for me)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You might finish the book with a new appreciation for financial independence, rather than making a certain amount of money. (Hint: financial independence requires a lot of money, but not nearly as much as most people might think.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It’s an engaging read&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;if-you-read-it-be-careful-because&quot;&gt;If you read it, be careful because:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Survivorship bias is all over this book. They interview millionaires, and then look for common threads. There may be a large group of people out there who did most of the same things and are not millionaires. This group will never be counted.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The book seems a bit too trusting in some ways. Easy example is it’s way easier to be a millionaire today than it was in 2000, because the value of the dollar has sunk considerably. So the bar is getting lower and lower, and understates the significance of the achievements of a self-made millionaire in the 1980s.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the link again: 
&lt;a href=&quot;http://www.amazon.com/Millionaire-Next-Door-Surprising-Americas/dp/1589795474/ref=sr_1_1&quot;&gt;The Millionaire Next Door: The Surprising Secrets of America’s Wealthy&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Avoid a car accident with a $3 tool</title>
   <link href="https://josh.works/cars/2016/07/04/avoid-a-car-accident-with-a-3-tool/"/>
   <updated>2016-07-04T00:00:00+00:00</updated>
   <id>https://josh.works/cars/2016/07/04/avoid-a-car-accident-with-a-3-tool</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;TL;DR: Buy a 
&lt;a href=&quot;https://www.amazon.com/Fit-System-C0400-Passenger-Adjustable/dp/B001DKT0DO/ref=sr_1_3?s=automotive&amp;amp;ie=UTF8&amp;amp;qid=1467648316&amp;amp;sr=1-3&amp;amp;keywords=blind+spot+mirror&quot;&gt;blind spot mirror&lt;/a&gt; for your car. They are $2, and can keep you from getting in an accident. Not a lot of people have them, though they’re awesome.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I spend an inordinate amount of time thinking about how to make driving safer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 to making driving safer is “don’t drive”.&lt;/strong&gt;
 (See also “increasing safety while wrestling with alligators” and “increasing safety with home-made parachutes”).&lt;/p&gt;

&lt;p&gt;Assuming you’ll drive, the next advice is “don’t be human”. The most common cause of car accidents is 
&lt;a href=&quot;https://cyberlaw.stanford.edu/blog/2013/12/human-error-cause-vehicle-crashes&quot;&gt;human error&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since Tesla has not taken over the world yet, we’ll still be in charge of our own vehicles for at least a little while longer.&lt;/p&gt;

&lt;p&gt;A significant sub-set of human-error accidents is “Unsafe Lane Changes”. Of these accidents, many are related to 
&lt;a href=&quot;http://papers.sae.org/2012-01-0261/&quot;&gt;not using a turn signal&lt;/a&gt;. (I couldn’t find a free version of the study, but everyone and their mother has cited this SAE report.)&lt;/p&gt;

&lt;p&gt;So, it’s estimated that failure to use turn signals contributes to about 2 million roadway collisions every year.&lt;/p&gt;

&lt;p&gt;The most obvious place where a turn signal can cause a problem is changing lanes on a highway, where a car might be in your blind spot. Even if you use your turn signal, the other driver might not see you there, or, worse, you and the other driver might try to change into the same lane, from opposite sides.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blind spot mirrors are an embarrassingly cheap partial solution.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve used these 
&lt;a href=&quot;https://www.amazon.com/Fit-System-C0400-Passenger-Adjustable/dp/B001DKT0DO/ref=sr_1_3?s=automotive&amp;amp;ie=UTF8&amp;amp;qid=1467648316&amp;amp;sr=1-3&amp;amp;keywords=blind+spot+mirror&quot;&gt;$2.11 blind spot mirrors&lt;/a&gt; for years.&lt;/p&gt;

&lt;p&gt;These 
&lt;a href=&quot;https://www.amazon.com/Cardeco-Moving-Circle-Universal-Vehicles/dp/B00EVMT6A8/ref=sr_1_4?s=automotive&amp;amp;ie=UTF8&amp;amp;qid=1467648316&amp;amp;sr=1-4&amp;amp;keywords=blind+spot+mirror&quot;&gt;rimless mirrors&lt;/a&gt; look even nicer, but cost MORE THAN TWICE AS MUCH at $7.16.&lt;/p&gt;

&lt;p&gt;Order one or the other. The price is insignificant, peace of mind and not getting in an expensive and/or dangerous and/or time-consuming car accident is worth it.&lt;/p&gt;

&lt;p&gt;BTW, I don’t do affiliate links. I just thought of this as I drove from Denver to Seattle, and started trying to find cars with blind spot mirrors. There are not as many out there as there should be.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://business.nbcnews.com/_news/2012/05/01/11486051-turn-signal-neglect-a-real-danger-study-shows&quot;&gt;Turn signal neglect a real danger, study shows&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://papers.sae.org/2012-01-0261/&quot;&gt;Turn Signal Usage Rate Results: A Comprehensive Field Study of 12,000 Observed Turning Vehicles&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://cyberlaw.stanford.edu/blog/2013/12/human-error-cause-vehicle-crashes&quot;&gt;Human Error as a Cause of Vehicle Crashes&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.quora.com/What-are-the-best-ways-to-avoid-a-car-accident&quot;&gt;Quora: What are the best ways to avoid a car accident?&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.quora.com/What-are-some-parallel-parking-tips&quot;&gt;Quora: What are some parallel parking tips?&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Ruby Tutorial 001</title>
   <link href="https://josh.works/programming/2016/06/23/ruby-tutorial-001/"/>
   <updated>2016-06-23T00:00:00+00:00</updated>
   <id>https://josh.works/programming/2016/06/23/ruby-tutorial-001</id>
   <content type="html">&lt;p&gt;I’m playing with 
&lt;a href=&quot;http://www.michaelhartl.com/&quot;&gt;Michael Hartl’s&lt;/a&gt; 
&lt;a href=&quot;https://www.railstutorial.org/book/beginning#sec-installing_rails&quot;&gt;Learn Enough Ruby&lt;/a&gt; book.&lt;/p&gt;

&lt;p&gt;I’ll throw basic things I learn along the way on here.&lt;/p&gt;

&lt;p&gt;A good starting point is using your command line. I use 
&lt;a href=&quot;https://www.iterm2.com/&quot;&gt;iTerm2&lt;/a&gt; for my terminal instead of the default Terminal installation.&lt;/p&gt;

&lt;p&gt;To get up and running in your terminal, you 
might start using 
&lt;a href=&quot;http://brew.sh/&quot;&gt;Homebrew&lt;/a&gt;. It’ll install programs you will want/need easily, and keep them up to date. Lots of tools you need have installation instructions that says&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;To install:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;brew install wget&lt;/p&gt;

&lt;p&gt;Which means, in your terminal, type 
brew wget and Homebrew will install the application, all dependencies, 
and will keep it up to date.&lt;/p&gt;

&lt;p&gt;How do you install Homebrew? Per their instructions, copy-paste the following to your terminal:&lt;/p&gt;

&lt;p&gt;/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&lt;/p&gt;

&lt;p&gt;So, your first program to download can be iTerm2. Once brew is installed, type this into your terminal:&lt;/p&gt;

&lt;p&gt;brew install iterm2&lt;/p&gt;

&lt;p&gt;And you’ve got it installed!&lt;/p&gt;

&lt;h3 id=&quot;additional-resources&quot;&gt;Additional resources:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.howtogeek.com/211541/homebrew-for-os-x-easily-installs-desktop-apps-and-terminal-utilities/&quot;&gt;http://www.howtogeek.com/211541/homebrew-for-os-x-easily-installs-desktop-apps-and-terminal-utilities/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>A message for high schoolers</title>
   <link href="https://josh.works/college/2016/06/05/a-message-for-high-schoolers/"/>
   <updated>2016-06-05T00:00:00+00:00</updated>
   <id>https://josh.works/college/2016/06/05/a-message-for-high-schoolers</id>
   <content type="html">&lt;p&gt;tl;dr: Before you start looking at colleges, be able to discuss coherently the following three topics:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Credentialism&lt;/li&gt;
  &lt;li&gt;Signaling&lt;/li&gt;
  &lt;li&gt;Opportunity cost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can wrap your head around that, you’ll be ahead of most of your peers. I’ve got a few links for you farther down in this article.&lt;/p&gt;
&lt;h3 id=&quot;what-you-should-learn-in-college-or-at-least-know-by-the-time-you-graduate&quot;&gt;What you should learn in college, or at least know by the time you graduate:&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;time management&lt;/li&gt;
  &lt;li&gt;how to interact with peers as you might in a professional environment&lt;/li&gt;
  &lt;li&gt;research skills&lt;/li&gt;
  &lt;li&gt;problem solving&lt;/li&gt;
  &lt;li&gt;How to write a paper&lt;/li&gt;
  &lt;li&gt;How to get along with roommates&lt;/li&gt;
  &lt;li&gt;How to manage money &lt;/li&gt;
  &lt;li&gt;How to party&lt;/li&gt;
  &lt;li&gt;How to shirk the minimum age drinking limit&lt;/li&gt;
  &lt;li&gt;“How to think” (or so says the New York Times)&lt;/li&gt;
  &lt;li&gt;How to deal with people you don’t like&lt;/li&gt;
  &lt;li&gt;How to put up with arbitrary rules&lt;/li&gt;
  &lt;li&gt;How to deal with often arcane syllubi &lt;/li&gt;
  &lt;li&gt;How to prepare for tests&lt;/li&gt;
  &lt;li&gt;How to identify the expectations of people of influence, and then meet those expectations&lt;/li&gt;
  &lt;li&gt;How to live within your means&lt;/li&gt;
  &lt;li&gt;How to file your taxes&lt;/li&gt;
  &lt;li&gt;How to conduct a job search&lt;/li&gt;
  &lt;li&gt;How to perform well at work&lt;/li&gt;
  &lt;li&gt;How to cook simple, easy, healthy, cost-effective meals&lt;/li&gt;
  &lt;li&gt;How to budget (and stick to it)&lt;/li&gt;
  &lt;li&gt;How to set up and contribute to retirement accounts&lt;/li&gt;
  &lt;li&gt;How to change a tire&lt;/li&gt;
  &lt;li&gt;How to identify knowledgeable people who are not compelled by their job to help you, and solicit their help&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;items-from-the-above-list-you-can-learn-without-going-to-college&quot;&gt;Items from the above list you can learn without going to college:&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;time management&lt;/li&gt;
  &lt;li&gt;how to interact with peers as you might in a professional environment&lt;/li&gt;
  &lt;li&gt;research skills&lt;/li&gt;
  &lt;li&gt;problem solving&lt;/li&gt;
  &lt;li&gt;How to write a paper&lt;/li&gt;
  &lt;li&gt;How to get along with roommates&lt;/li&gt;
  &lt;li&gt;How to manage money &lt;/li&gt;
  &lt;li&gt;How to party&lt;/li&gt;
  &lt;li&gt;How to shirk the minimum age drinking limit&lt;/li&gt;
  &lt;li&gt;“How to think” (or so says the New York Times)&lt;/li&gt;
  &lt;li&gt;How to deal with people you don’t like&lt;/li&gt;
  &lt;li&gt;How to put up with arbitrary rules&lt;/li&gt;
  &lt;li&gt;How to deal with often arcane syllubi &lt;/li&gt;
  &lt;li&gt;How to prepare for tests&lt;/li&gt;
  &lt;li&gt;How to identify the expectations of people of influence, and then meet those expectations&lt;/li&gt;
  &lt;li&gt;How to live within your means&lt;/li&gt;
  &lt;li&gt;How to file your taxes&lt;/li&gt;
  &lt;li&gt;How to conduct a job search&lt;/li&gt;
  &lt;li&gt;How to perform well at work&lt;/li&gt;
  &lt;li&gt;How to cook simple, easy, healthy, cost-effective meals&lt;/li&gt;
  &lt;li&gt;How to budget (and stick to it)&lt;/li&gt;
  &lt;li&gt;How to set up and contribute to retirement accounts&lt;/li&gt;
  &lt;li&gt;How to change a tire&lt;/li&gt;
  &lt;li&gt;How to identify knowledgeable people who are not compelled by their job to help you, and solicit their help&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;items-from-list-one-not-on-list-two&quot;&gt;Items from list one not on list two:&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;n/a&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;OK, Josh, are you arguing that no one should go to college?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not at all, anonymous internet person.&lt;/p&gt;

&lt;p&gt;I think college is a good fit for lots of people, as long as they are looking for something that’s not on the above list. If they are looking for something that can be had
only by going to college, they should do two things:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Evaluate if the thing is really worth having&lt;/li&gt;
  &lt;li&gt;Determine if it can be had in any other way&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, so many people
still stay the degree matters. “Oh, you can’t get a certain job without having a degree” or “you can’t get promoted beyond a certain level without a degree.”&lt;/p&gt;

&lt;p&gt;This may be true, in which case you’ve got research to do. Interview people who have done well for themselves, and find out how much of it could have happened without a degree. &lt;/p&gt;

&lt;p&gt;Decide if it’s possible that
you don’t want to work for a company that requires a degree.&lt;/p&gt;

&lt;p&gt;Just because a job requires a degree doesn’t mean that it requires a degree. A company that publishes this requirement often doesn’t actually put it in practice, which means
you don’t need a degree to work at that company. (See “signaling, qualifying applicants”)&lt;/p&gt;

&lt;p&gt;Conversely, you should not aspire to work at a company that
enforces this requirement. College is mostly
&lt;a href=&quot;http://econlog.econlib.org/archives/2011/11/the_magic_of_ed.html&quot;&gt;signaling&lt;/a&gt; and
&lt;a href=&quot;http://www.theatlantic.com/magazine/archive/1985/12/the-case-against-credentialism/308286/&quot;&gt;credentialism&lt;/a&gt;. From
&lt;a href=&quot;http://econlog.econlib.org/archives/2011/11/the_magic_of_ed.html&quot;&gt;EconLib&lt;/a&gt;: &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;According to the signaling model, employers reward educational success because of what it shows (“signals”) about the student.  Good students tend to be smart, hard-working, and conformist - three crucial traits for almost any job.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, if the value of college is because of the degree-as-signal component, do it as cheaply and quickly as possible. There is no other reasonable way to go.&lt;/p&gt;

&lt;p&gt;If the value of college is in credentialism, go to the best college you can. (Harvard, Yale, MIT, or as close to those as you can get.)&lt;/p&gt;

&lt;p&gt;If the value of college is in preparing you for a job by giving you practical skills that directly relate to future employment, take off the rose-colored glasses and think outside the box. &lt;/p&gt;

&lt;p&gt;As I mentioned, there are plenty of good reasons to go to college, but it’s too expensive and time consuming to not evaluate with a critical eye.&lt;/p&gt;

&lt;p&gt;And yet, this year, millions of students are taking out billions of dollars in loans to fund four years of mediocre education to provide a degree that no one will care about, to get a job that allows them to pay off that loan sometime in the next fifteen years.&lt;/p&gt;

&lt;p&gt;Full disclosure: I went to college. I was a poor student. I think I had a low B average, (I failed a class my last semester. oops). Besides meeting Kristi and some good friends, I’m hard pressed to find the value of my education. When I consider the opportunity cost, besides my wife and my friends, it was a huge net loss. &lt;/p&gt;

&lt;p&gt;¯\_(ツ)_/¯ &lt;/p&gt;

&lt;p&gt;PPS Forward this to your favorite high schooler. Might save them a couple ten thousand dollars.&lt;/p&gt;
&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.doityourselfdegree.com/faqs/&quot;&gt;DIY Degree&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Massive_open_online_course&quot;&gt;MOOCs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.scotthyoung.com/blog/myprojects/mit-challenge-2/&quot;&gt;Scott Young’s “MIT CompSci in a Year” challenge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>12 Lessons Learned While Publishing Something Every Day for a Month</title>
   <link href="https://josh.works/growth/2016/06/05/12-lessons-learned-while-publishing-someone-every-day-for-a-month/"/>
   <updated>2016-06-05T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/06/05/12-lessons-learned-while-publishing-someone-every-day-for-a-month</id>
   <content type="html">&lt;p&gt;A month ago, I decided to publish something every day for at least thirty days.&lt;/p&gt;

&lt;p&gt;I read a few others who did something similar, and discussed all the benefits. I’ve found myself struggling with creating something and then making it public. (Public here, on another project, or at work.)&lt;/p&gt;

&lt;p&gt;I also had a bit of a backlog of ideas or a scattered few paragraphs on a topic. In my head, these would all turn into comprehensive tomes that would be the end-all resource on a subject. With those expectations, I would never, ever write them.&lt;/p&gt;

&lt;p&gt;So, here we are, thirty one published posts later (this is #32), and in no specific order, is what I’ve learned:&lt;/p&gt;

&lt;h2 id=&quot;writing-every-day-is-time-consuming&quot;&gt;Writing every day is time consuming.&lt;/h2&gt;

&lt;p&gt;I didn’t pre-write anything, though I did regularly add ideas to a running list of potential posts, so every day I’d sit down and write, format, edit (sometimes) and publish in one sitting. I rarely finished anything in less than 30 minutes.&lt;/p&gt;

&lt;h2 id=&quot;much-of-what-i-wrote-felt-self-indulgent-or-low-value&quot;&gt;Much of what I wrote felt self-indulgent, or low-value.&lt;/h2&gt;

&lt;p&gt;Since I was just firing off whatever popped into my head (more or less), I wasn’t using any external indicators of what would be useful to readers.&lt;/p&gt;

&lt;h2 id=&quot;writing-begets-writing&quot;&gt;Writing begets writing&lt;/h2&gt;

&lt;p&gt;I started this project with ten ideas I wanted to “clear off my plate”. Thirty posts later, my list of things to write about is now thirty items long. Oops.&lt;/p&gt;

&lt;h2 id=&quot;i-care-a-lot-about-metrics-but-have-very-little-to-show-for-it&quot;&gt;I care a lot about metrics, but have very little to show for it&lt;/h2&gt;

&lt;p&gt;I got 20-50 unique visitors a day. Here’s my good-sounding reason for wanting visitors:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I want to create something useful and valuable, and if something is useful and valuable, then I can be more useful in the world by reaching more people.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here’s the more selfish and accurate reason:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I want to think of myself as someone who creates useful and valuable things, and look to the external validation of high numbers of readers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There’s a bunch of other benefits to me of “traffic”, so I’ll unashamedly say I want to grow my audience.&lt;/p&gt;

&lt;p&gt;(I put “traffic” in quotes because it’s not traffic, it’s people giving a minute or two of their day to me. This is a pretty big deal.)&lt;/p&gt;

&lt;h2 id=&quot;i-dont-want-to-rely-on-any-external-sourceplatform-for-traffic&quot;&gt;I don’t want to rely on any external source/platform for traffic&lt;/h2&gt;

&lt;p&gt;For now, the only metric I care about is email subscribers. That means that until that person unsubscribes, that person is willing to have me in their inbox, and my ability to talk to them is not linked to the search algorithems of any ofther tool. Facebook is notorious at showing things you post to only a few other people, and Twitter is moving in the same direction.&lt;/p&gt;

&lt;h2 id=&quot;specialization-will-allow-me-to-help-more-people&quot;&gt;Specialization will allow me to help more people.&lt;/h2&gt;

&lt;p&gt;If I want to grow an audience, I can, they just need to know why the heck I’m writing, and if they want that, they’ll subscribe, and if they don’t, they won’t.&lt;/p&gt;

&lt;p&gt;That’s not possible right now, as I’m not focused on any particular thing in my writing. This might change down the road, but for now, I don’t plan on niching down into a specific domain.&lt;/p&gt;

&lt;p&gt;I’ve already got a platform for writing about climbing (and can generate thousands of page views a day linking out useful things (like &lt;a href=&quot;http://www.climbersguide.co/the-only-core-exercises-youll-ever-need-upgrade/&quot;&gt;a video about core strength&lt;/a&gt;) to reddit.)&lt;/p&gt;

&lt;p&gt;Honestly, writing every day distracted me from work I was doing for The Climber’s Guide. I began working again on TCG after I started writing on here every day, though, so I still strongly believe that creating begets creating. I was struggling to write regularly, so I started writing every day, and all of a sudden had a bunch more things to write about.&lt;/p&gt;

&lt;p&gt;It was only after I was writing regularly that I got the idea to film a video course of dealing with fear while rock climbing. I’m officialy transitioning from writing here every day to writing more for &lt;a href=&quot;http://climbersguide.co/conquer-fear-course&quot;&gt;TGC Fear Course&lt;/a&gt; (not the finished title.) Punch in your email address there (or here, in the top-right corner) for updates as we go.&lt;/p&gt;

&lt;h2 id=&quot;lists-get-views-or-at-least-good-article-titles-do&quot;&gt;Lists get views, or at least good article titles do&lt;/h2&gt;

&lt;p&gt;The top-performing posts of the month were:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/what-ive-learned-from-cooking-in-36-kitchens-in-the-last-year&quot;&gt;Lessons Learned from cooking in 36 Kitches in the last year&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/62-lessons-learned-after-year-of-full-time-travel&quot;&gt;62 Lessons Learned after one year of full time travel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only two data points, but something made it click a bit more. I think they are far the most interesting things I posted in the last month, but they also had good subject lines. And had numbers in the titles.&lt;/p&gt;

&lt;p&gt;As a counterpoint &lt;a href=&quot;/ok-some-new-books&quot;&gt;OK, Some New Books&lt;/a&gt; is not exactly a riveting and enticing subject line.&lt;/p&gt;

&lt;h2 id=&quot;doing-anything-challenging-for-a-period-of-time-is-a-rewarding-challenge&quot;&gt;Doing anything challenging for a period of time is a rewarding challenge&lt;/h2&gt;

&lt;p&gt;I’m quite pleased to have completed this 30 days of writing. When I look at my
&lt;a href=&quot;/blog&quot;&gt;archives page&lt;/a&gt;, I’m pleased to see a lot of items for this year. I wrote that. It’s a little flag planted on my tiny corner of the internet, and every single post was at least loosly aimed to be helpful to others.&lt;/p&gt;

&lt;p&gt;So, this wasn’t complaining about things that annoy me (though &lt;a href=&quot;/customer-success-american-airlines-case-study&quot;&gt;I talked about American Airline’s poor UX&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’m reasonably pleased with putting words down.&lt;/p&gt;

&lt;h3 id=&quot;i-dont-know-what-it-looks-like-to-find-your-voice-but-i-dont-think-i-need-it&quot;&gt;I don’t know what it looks like to find “your voice”, but I don’t think I need it&lt;/h3&gt;

&lt;p&gt;Lots of people talk about needing to find “your voice” as a critical step to… something.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://goinswriter.com/you-have-a-voice/&quot;&gt;This might be true&lt;/a&gt;, but &lt;a href=&quot;http://www.theatlantic.com/entertainment/archive/2014/11/finding-your-voice-as-a-writer-overrated/382946/&quot;&gt;I don’t believe it to matter much&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I write for fun (on this website) and sometimes for what will some day be for profit (Climber’s Guide) and I write plenty for work (to coworkers and to customers, both in email and much more durable, lasting ways). None of this has been held back by me not knowing what “my voice” is.&lt;/p&gt;

&lt;p&gt;Maybe some day I’ll look back and say “ah, I found my voice right there!” and stab a date on the calendar. I think what that really will mean is “I became comfortable with the written word, and others found value in what I created.”&lt;/p&gt;

&lt;p&gt;For example, I’ve made a few videos to help climbers in a few different ways. I’ve gotten quite a bit of positive feedback from it. I wanted to say “ah, that there, was written in my voice, and that’s why it was so popular.”&lt;/p&gt;

&lt;p&gt;Except that’s not true. Things that are valuable are valuable because they convey useful information.&lt;/p&gt;

&lt;p&gt;My skills with the written word are incidental. (Copywriting is enormously valuable, but that’s not “finding your voice”, that’s “the psychology of persuasion”).&lt;/p&gt;

&lt;h3 id=&quot;distractions-are-everywhere-and-i-get-crushed-when-its-just-a-few-keystrokes-away&quot;&gt;Distractions are everywhere, and I get crushed when it’s just a few keystrokes away.&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://selfcontrolapp.com/&quot;&gt;Self-control&lt;/a&gt; (the app) is awesome. As is &lt;a href=&quot;http://www.focusapp.io/#focus-ios&quot;&gt;focus.io&lt;/a&gt;. Coupled with &lt;a href=&quot;https://www.alfredapp.com/&quot;&gt;Alfred&lt;/a&gt; and the right &lt;a href=&quot;https://heyfocus.com/scripting-focus-with-os-x-url-handlers/&quot;&gt;workflow&lt;/a&gt;, you can lock yourself out of distraction with just six keystrokes. (for me it’s cmd-space, then “f-o-c [return]” to enable Focus).&lt;/p&gt;

&lt;h3 id=&quot;someday-ill-embrace-editing-but-its-not-yet&quot;&gt;Someday I’ll embrace editing, but it’s not yet.&lt;/h3&gt;

&lt;p&gt;This is probably obvious. I write things filled with errors, poorly-worded sentances, exessive use of the passive voice (see what I did there) and lots of other mistakes that would cut it in a professional setting. This isn’t professional, so here we are.&lt;/p&gt;

&lt;h3 id=&quot;make-more-asks&quot;&gt;Make more asks&lt;/h3&gt;

&lt;p&gt;I’m going to ask things more often, or make more requests.
Here’s my first request:&lt;/p&gt;

&lt;p&gt;Will you give me your email address? In the top right corner of this page is a box for your email. Put it in there, and next time you get an email, send me a reply. I’ll put more instructions in the email then.&lt;/p&gt;

&lt;p&gt;Until next time (but not tomorrow, because I’m done writing every day),&lt;/p&gt;

&lt;p&gt;-Josh&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Customer Success: American Airlines Case Study</title>
   <link href="https://josh.works/customer-success-american-airlines-case-study"/>
   <updated>2016-06-04T00:00:00+00:00</updated>
   <id>https://josh.works/customer-success-american-airlines</id>
   <content type="html">&lt;p&gt;Continuing the theme of “what the heck do I do for work”,
&lt;a href=&quot;http://josh.works/?category=Customer%20Success&quot;&gt;I’m writing about Customer Success&lt;/a&gt; as I see it. My words are my own, I don’t speak for the industry as a whole, or even for Litmus. I’m just trying to sharpen my own thinking.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Last time, I argued that &lt;a href=&quot;/customer%20success/2016/06/03/success-is-not-support/&quot;&gt;customer success is not customer support&lt;/a&gt;. I acknowledged that in general, customer support is seen as a cost center, and therefore is a necessary evil for most organizations.&lt;/p&gt;

&lt;p&gt;I talked about why I disagree about the cost center assessment, and how someone in customer support could convince their executive team to view the support team as a profit center. That’s a long and arduous road, and
most organizations won’t make the switch.&lt;/p&gt;

&lt;p&gt;An enterprising individual can capitalize on this reluctance an organization has to view the support team in a better light, because that means theres tons of room to shine, get good experience under their belt, and leverage that data, knowledge, and perspective into a much better job for a new company.&lt;/p&gt;

&lt;h2 id=&quot;so-what-the-heck-is-customer-success&quot;&gt;So what the heck is customer success?&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Update: I had an imaginary support interaction sketched out, but then I had a little kerfuffle with American Airlines today, so using that as my example story.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Think of everything your customer support team does. Now change the direction and timing of communication from customer &amp;gt; support to support &amp;gt; customer.&lt;/p&gt;

&lt;p&gt;Here’s a story that must happen a few hundred times a day with American Airlines:&lt;/p&gt;

&lt;p&gt;I tried to check into a flight tomorrow. It was booked with miles, over the phone, and I modified it a few times (over the phone) since the original booking. It’s from Barcelona&amp;gt;Madrid&amp;gt;Miami&amp;gt;Philadelphia (oof).&lt;/p&gt;

&lt;p&gt;I clicked the link in my email saying “Check in to your flight 24 hours before departure”&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_575210f02eeb81f8db2685ab_1464996211200__img.png_&quot; alt=&quot;Email prompting me to check into my flight. Almost illegible because the text is so small.&quot; /&gt; Email prompting me to check into my flight. Almost illegible because the text is so small.&lt;/p&gt;

&lt;p&gt;I got the following error code:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_57521180859fd0e77d6a42d9_1464996272969__img.png_&quot; alt=&quot;Do I actually have a flight tomorrow?&quot; /&gt; Do I actually have a flight tomorrow?&lt;/p&gt;

&lt;p&gt;This was this morning, on my phone, sitting in a different airport.&lt;/p&gt;

&lt;p&gt;I became worried that there were problems with the flight, since I’d booked it and rebooked it and made modifications and cancelled the original itinerary. I didn’t have time to sort it out then (sitting in an airport) so planned on fixing it later. (“Sort it out” invariably means having my laptop out, and 40 minutes to spend on the phone.)&lt;/p&gt;

&lt;p&gt;Later, Kristi and I arrive to our apartment in Barcelona. We’re eager to get out the door to explore the city (it was 5p already!) but I tell Kristi I need to try to sort out the check-in problem.&lt;/p&gt;

&lt;p&gt;I try checking in on my computer, get this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_575212251bbee04c3d4bc9db_1464996405039__img.png_&quot; alt=&quot;This error message tells me *nothing* about what the problem is. (Spoiler alert, everything was fine, but this message doesn&apos;t exactly put you at ease, does it?)&quot; /&gt; This error message tells me &lt;em&gt;nothing&lt;/em&gt; about what the problem is. (Spoiler alert, everything was fine, but this message doesn’t exactly put you at ease, does it?)&lt;/p&gt;

&lt;p&gt;OK, it said something about the partner airline in the email, so I head over to the Iberian checkin page:&lt;/p&gt;

&lt;p&gt;Aaaand I get an uninspiring error message:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_57521272044262fce00bbcfc_1464996479634__img.png_&quot; alt=&quot;&quot; /&gt; “It’s not our fault this didn’t work. Please talk to American” - Iberian Air&lt;/p&gt;

&lt;p&gt;Not good. I’m hoping my wife and I are going to get back to the US tomorrow. Per the instructions provided on the AA error page, I called
AA.com Web Services.&lt;/p&gt;

&lt;p&gt;To AA’s credit, they answered fairly quickly. The first woman I spoke to hunted around for a few minutes on her computer, could not resolve the issue.&lt;/p&gt;

&lt;p&gt;I was handed off to a reservation agent, who explained the problem.&lt;/p&gt;

&lt;p&gt;She said (I’m roughly paraphrasing here):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;For award tickets booked through partner airlines, you have to check in at the airport. You’re not able to check in online, because the systems don’t talk to each other very well in the backend&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is great news, and I can totally sympathize with data problems.&lt;/p&gt;

&lt;p&gt;In short &lt;strong&gt;The system is functioning as expected, I simply cannot check in online. This has happened to me before, it will happen again. I’m happy to check in at the airport, 
as long as I feel confident that I’ll have a flight to check in TO!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She offers to pass me through to Iberian air, just so I can talk with them. She gave me my
Iberian record locator, though at this point, I was satisfied with the answer.&lt;/p&gt;

&lt;p&gt;I took her up on the offer, and was passed along to Iberian. The woman from Iberian conveyed the same message, and I now feel at peace about flying back to the USA tomorrow.&lt;/p&gt;

&lt;h2 id=&quot;this-is-an-expensive-process-for-myself-and-american-airlines&quot;&gt;This is an expensive process for myself and American Airlines&lt;/h2&gt;

&lt;p&gt;Lets summarize the cost:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Three failed checkin attempts on different systems/devices (I tried at least 3x each time, so really, nine or ten failed checkin attempts)&lt;/li&gt;
  &lt;li&gt;Spoke to three different airline reps, over about fifteen minutes&lt;/li&gt;
  &lt;li&gt;Five hours of low-level stress on my behalf&lt;/li&gt;
  &lt;li&gt;Delayed our sightseeing in Barcelona by about thirty minutes.&lt;/li&gt;
  &lt;li&gt;Left a decidedly poor taste in my mouth about the airline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the kicker: All of this could have been avoided.&lt;/p&gt;

&lt;p&gt;In the email containing my record locator, instead of the primary CTA being “Check in now” (in a poorly formatted, almost illegible email, by the way) they should have said:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_57521338f850829dde1a16e2_1464996684818__img.png_&quot; alt=&quot;In the original email, that 2nd bullet was wasted by warning that the TSA is terrible.&quot; /&gt; In the original email, that 2nd bullet was wasted by warning that the TSA is terrible.&lt;/p&gt;

&lt;p&gt;That little line of text alone would have made me feel 10x better about what was coming.&lt;/p&gt;

&lt;p&gt;Alternatively, they could have done a little work when I tried to check in online, too:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5752136d40261d407f36d2d9_1464996725469__img.png_&quot; alt=&quot;This is a *simulated* error message. The real one didn&apos;t say anything helpful.&quot; /&gt; This is a &lt;em&gt;simulated&lt;/em&gt; error message. The real one didn’t say anything helpful.&lt;/p&gt;

&lt;p&gt;So, that was my poor experience, but does that mean American should actually do anything about this? After all, they’ve got limited resources, and many things to do. They cannot, and should not, try to fix every single little problem a customer has.&lt;/p&gt;

&lt;h2 id=&quot;is-this-really-a-problem&quot;&gt;IS THIS REALLY A PROBLEM?&lt;/h2&gt;

&lt;p&gt;American &lt;a href=&quot;https://www.aa.com/i18n/aboutUs/corporateInformation/facts/americanairlinesgroup.jsp&quot;&gt;says&lt;/a&gt; it flies ~6700 flights/day. &lt;a href=&quot;https://www.quora.com/What-is-the-average-amount-of-passengers-on-a-plane&quot;&gt;Quora&lt;/a&gt; guesses 150 people per plane, on average, so that works out to about a million people PER DAY flying on American or an affiliated airline. &lt;/p&gt;

&lt;p&gt;I don’t know the percentage of customers who experience the exact same work flow I experience. Lets assume it’s 2%.&lt;/p&gt;

&lt;p&gt;2% of a million people/day is 20,000. Lets assume 1/5 of them have a minor freakout and call American for help. That’s 4000 people/day spending at least 15 minutes of a rep’s time, figuring out what is going on. That is the equivalent of 1000 man hours/day spent on just this problem, or 30,000 man hours/month.&lt;/p&gt;

&lt;p&gt;This 30,000 man hours/month is the the equivalent annual hours of over four full-time employees. Assuming their staff cost $15/hr to employ, this particular problem is burning about $500k/month in support hours alone. &lt;/p&gt;

&lt;p&gt;Now, that’s just the cost side of things. A half-million dollar/month problem seems big to you and I, but to a company bringing in $4 billion/year in profit, it’s not a big deal.&lt;/p&gt;

&lt;p&gt;The higher cost of this problem is to the customers who find it easy to move their spending to a different airline. Going back to those 20,000 people/day who experience this problem. Only 1/5 of them contacted American, which accounted for the $6m/year in staff payroll expense. That larger group spends, &lt;a href=&quot;http://airlines.org/data/annual-round-trip-fares-and-fees-domestic/&quot;&gt;on average&lt;/a&gt;, $400/round trip ticket. &lt;/p&gt;

&lt;p&gt;$400/ticket * 20,000 people/day * 365 days/year means this problem is “touching” about $2.9B a YEAR in spending. You should care deeply that they have a good experience with your airline.&lt;/p&gt;

&lt;p&gt;So, by my math, yes, this is a problem and it should get development/marketing/support/billing resources to fix. Even if my math is all wrong, it’s a starting point for the folks at American to decide how to fix this. &lt;/p&gt;

&lt;h2 id=&quot;barriers-to-fixing-this&quot;&gt;Barriers to fixing this&lt;/h2&gt;

&lt;p&gt;As you might assume, no fix is simple. Complexity plus “not my problem” plus “don’t mess with my group” makes this a thorny problem. Here’s a few reasons a fix would be hard to implement:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who owns the problem?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If someone from American said “hm, yes, I agree, lets fix that” and implemented a fix, the fix would touch on much more than just a single team. You’d need:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Developer work to redo the email templates to insert language about why online checkin is not available&lt;/li&gt;
  &lt;li&gt;Marketing/copywriting to decide on what language needs to be inserted&lt;/li&gt;
  &lt;li&gt;Marketing automation work to (perhaps) send a timely reminder email that says “in a few days, you might try to check in for your flight online, but you don’t need to, because…”&lt;/li&gt;
  &lt;li&gt;Before/after analytics to track if this new method of handling the topic results in a decrease in support calls or an increase in “customer loyalty”, however you choose to track it.
So far, all of this is pretty straight forward, and anyone reading this should say “yeah, why wouldn’t American do all of this?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great question. Here’s the barriers to pushing something like this through:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who’s problem is it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Who, in American, feels the pain from this problem?&lt;/p&gt;

&lt;p&gt;Not support - they’ve got a long list of problems their customers face every day, that range from bugs, to feature requests, to confusing workflows.&lt;/p&gt;

&lt;p&gt;This isn’t a concern to the average product manager. It’s a billing question, not something related to product.&lt;/p&gt;

&lt;p&gt;Not the dev team. The error messages are populating as expected, and they built the checkin workflows to spec.&lt;/p&gt;

&lt;p&gt;The customer will end up paying the invoice, so this problem isn’t even costing the company any money.&lt;/p&gt;

&lt;p&gt;It’s not a problem for the marketing team. They have their own metrics to hit, and reducing numbers of calls to the service center is not on their radar.&lt;/p&gt;

&lt;h2 id=&quot;the-success-team-makes-the-financial-case-for-this&quot;&gt;The success team makes the financial case for this&lt;/h2&gt;

&lt;p&gt;This would be a problem that could be owned by the customer success team.&lt;/p&gt;

&lt;p&gt;They’d discover it because they work closely with the support team. They’d figure out what the problem is (unmet expectations), and identify what pain it is causing for the company, and what pain it’s causing for the customers.&lt;/p&gt;

&lt;p&gt;They would track as a primary metric customer loyalty, and churn. They would be intimately aware that every time someone has to contact support and doesn’t want to, that “costs” customer loyalty. It is much more painful for the customer than it is for the company. (This was fixed with 15 minutes spread out over three different reps. No big deal, but it cost me maybe 40 minutes of time, and five hours of stress.)&lt;/p&gt;

&lt;p&gt;So, the customer success team can own the complicated fix. They’ll figure out the spec of what needs to go in the dev pipeline, they’ll get the copy approval from the marketing team, and they’ll gather metrics from the support team about how often they hear from customers that might have this question.&lt;/p&gt;

&lt;p&gt;They’ll put open/click tracking in the notification emails that goes to the customers, to see if customers are opening the email, reading it, and clicking the call-to-action to gather more information.&lt;/p&gt;

&lt;p&gt;They’ll roll it out, and see if it results in a decrease in a number of calls to the support team.&lt;/p&gt;

&lt;p&gt;Overall, they can advocate for the customer to all teams. This is how they get past the “nothing is broken” response from the dev team, or the “this isn’t related to marketing” response from the marketing team. The support team will be onboard from the get-go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hold on, Josh, you just painted the marketing and dev teams in a negative light. Of course they’ll want to be responsive to pain the customers feel. You’re being unfair.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They’re responsive to customer pain, and they’re on the hook to do way more work than they can actually do. The dev team ALWAYS has an enormous to-do list, and they would be foolish to let just anyone stick more items into their list.&lt;/p&gt;

&lt;p&gt;Same with the marketing team. They’re busy, and don’t have time to implement “good ideas” without knowing they will get a good ROI for their effort.&lt;/p&gt;

&lt;p&gt;So the Success team can own the reasons, and will have an ongoing, trusting relationship with the dev and marketing teams. If the success team makes it a priority and owns most of the implementation, the other teams are happy to help.&lt;/p&gt;

&lt;h2 id=&quot;who-decides-if-this-was-a-productive-use-of-time&quot;&gt;Who decides if this was a productive use of time?&lt;/h2&gt;

&lt;p&gt;The marketing team looks at funnels. The dev team looks at features. The sales team looks at leads. The support team looks at tickets. The success team looks at the customers who have done nothing to warrant special attention, besides
paying you money.&lt;/p&gt;

&lt;p&gt;The goal of the customer success team is to ensure that the customer achieves his/her
&lt;a href=&quot;http://sixteenventures.com/customer-success-desired-outcome&quot;&gt;Desired Outcome&lt;/a&gt; with the minimum effort. This goal, if executed well, leads to many happy customers who pay you money and tell their friends/coworkers to do the same. I’ve already made the case that the worst-case impact of this problem is $2.9B/year. Even if I’m WAY off, this problem could still be impacting hundreds of millions in revenue. It needs to be fixed.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;Traditionally, this general theme might fit under a User Experience role, but I think in a small-to-medium sized company, before they have a dedicated UX team, a fix like this could be owned by the success team, since they can advocate on behalf of the customers.&lt;/p&gt;

&lt;p&gt;The Customer Success team can follow the needs of the customer wherever they might go, drawing on resources from anywhere in the company to deliver these solutions. Throughout, they are backed by the most important metric to a company: revenue.&lt;/p&gt;

&lt;p&gt;It’s a pretty exciting field to be in. Where else do you get to spend all day solving big problems for large numbers of people?&lt;/p&gt;

&lt;h4 id=&quot;resources&quot;&gt;Resources&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://sixteenventures.com/customer-success-desired-outcome&quot;&gt;Understanding Your Customer’s Desired Outcome&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Success is not support</title>
   <link href="https://josh.works/customer%20success/2016/06/03/success-is-not-support/"/>
   <updated>2016-06-03T00:00:00+00:00</updated>
   <id>https://josh.works/customer%20success/2016/06/03/success-is-not-support</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;/an-intro-to-customer-success&quot;&gt;We did a high-level “Customer Success” overview yesterday&lt;/a&gt;. Today, lets contrast customer support and customer success.&lt;/p&gt;

&lt;h2 id=&quot;support-vs-success&quot;&gt;Support vs. Success&lt;/h2&gt;

&lt;p&gt;First, what’s the difference between “customer support” and “customer success”?&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://sixteenventures.com/customer-success-definition#support&quot;&gt;Lincoln Murphey says&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Customer Success is proactively working our customers toward their Desired Outcome whereas Customer Support is reactive to customer’s break/fix issues.&lt;/p&gt;

  &lt;p&gt;Customer Support – specifically the number of interactions with the customer and how quickly those interactions are resolved – is a critical input into an overall Customer Health score (a key Customer Success metric). It’s pretty obvious that if customers can’t use the product, they can’t achieve their Desired Outcome.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, support is reactive, and success is proactive. This distinction is quick to cause frustration for support teams, because they feel like they’re being taken down a notch.&lt;/p&gt;

&lt;p&gt;In some companies, this is absolutely the case. Support is the low man on the totem poll, and it’s not good for anyone.&lt;/p&gt;

&lt;h2 id=&quot;cost-center-or-profit-center&quot;&gt;Cost Center or Profit Center?&lt;/h2&gt;

&lt;p&gt;Support usually is tolerated, not celebrated. This difference has to do with the difference between a
cost center and a profit center. (Being annoyed at this won’t help you change the situation.)&lt;/p&gt;

&lt;p&gt;A cost center is something that you have to have, and relucantly pay for it. Think “insurance” and “taxes”. You pay for them because not paying for them is worse, but you don’t actually enjoy it.&lt;/p&gt;

&lt;p&gt;A profit center is a little machine that makes money. You put $X in, and it gives you $X+N. If you can double your input, theoretically you can double your output.&lt;/p&gt;

&lt;p&gt;Companies live off of money. Money can beget more money, if spent in the right way. Money wasted means the company might go under.&lt;/p&gt;

&lt;p&gt;Most companies view their support teams as a necessary evil. This is unfortunate, but this is also an
enormous opportunity for a sufficiently motivated person on a support team to aim for driving massive change in their company.&lt;/p&gt;

&lt;h2 id=&quot;turn-the-cost-center-into-a-profit-center&quot;&gt;Turn the cost center into a profit center&lt;/h2&gt;

&lt;p&gt;This will be a path of blood, sweat, and tears. I think its worth it, because whatever brave, enterprising soul masters this feat will be able to write his or her own ticket for the rest of their career. Forbes says
&lt;a href=&quot;http://www.forbes.com/sites/larrymyler/2013/02/14/be-a-hero-turn-a-cost-center-into-a-profit-center/#d3e869c6811e&quot;&gt;you’ll be a hero&lt;/a&gt; if you can do this.&lt;/p&gt;

&lt;p&gt;Forbes’ take on it is limited, though.
&lt;a href=&quot;http://blog.asmartbear.com/tech-support-is-sales.html&quot;&gt;Your support team is really your sales team&lt;/a&gt;. So, build the metrics around this.&lt;/p&gt;

&lt;p&gt;Support plays a huge roll in churn. If you can drive churn down, you’re helping your company make money.
&lt;a href=&quot;https://www.amazon.com/Effortless-Experience-Conquering-Battleground-Customer-ebook/dp/B00C5R73I8?ie=UTF8&amp;amp;btkr=1&amp;amp;ref_=dp-kindle-redirect&quot;&gt;The Effortless Experience&lt;/a&gt; covers this quite well.&lt;/p&gt;

&lt;p&gt;If you decide to undertake this initiatve, you’ll need to make a strong business case to the right people. This work will be good for your career, and very good for your company. If the last sentance didn’t inspire you, go read
&lt;a href=&quot;https://www.amazon.com/Smart-Like-How-Hidden-Success-ebook/dp/B0181C4N56&quot;&gt;Smart Like How&lt;/a&gt;, to learn to think really creatively on your career, and how you can shape it.&lt;/p&gt;

&lt;p&gt;Whereever you can run against prevailing thought, you have a chance to carve out a big, valuable ownership of a topic. So, at your company, drive home the idea that support is a profit center, not a cost center.&lt;/p&gt;

&lt;p&gt;If you can prove the following relationship, backed up by data, you’ll be ahead of 95% of most support teams out there:&lt;/p&gt;

&lt;p&gt;Customer support interactions correlate to increased LTV of a customer&lt;/p&gt;

&lt;p&gt;There might be more, but that’s it for now. It’ll be hard to convince the entire team of this, but it’s your job. You cannot throw your hands up and say “they don’t believe the same things I do.” &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Extreme-Ownership-U-S-Navy-SEALs-ebook/dp/B00VE4Y0Z2&quot;&gt;Extreme Ownership&lt;/a&gt; touches on this, but unless you like books about war, don’t read it.&lt;/p&gt;

&lt;h4 id=&quot;resources&quot;&gt;Resources&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Smart-Like-How-Hidden-Success-ebook/dp/B0181C4N56&quot;&gt;Smart Like How&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Effortless-Experience-Conquering-Battleground-Customer-ebook/dp/B00C5R73I8?ie=UTF8&amp;amp;btkr=1&amp;amp;ref_=dp-kindle-redirect&quot;&gt;The Effortless Experience&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://blog.asmartbear.com/tech-support-is-sales.html&quot;&gt;A Smart Bear&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Extreme-Ownership-U-S-Navy-SEALs-ebook/dp/B00VE4Y0Z2&quot;&gt;Extreme Ownership&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Gratitude 3x/day</title>
   <link href="https://josh.works/growth/2016/06/01/gratitude-3xday/"/>
   <updated>2016-06-01T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/06/01/gratitude-3xday</id>
   <content type="html">&lt;p&gt;Earlier this year, I read 
&lt;a href=&quot;https://www.amazon.com/dp/B00AKKS278/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1&quot;&gt;The Miracle Morning&lt;/a&gt;, which promises (paraphrasing here):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you do these seven things every morning you’ll be the most amazing person you’ve ever met.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;OK, it’s not exactly that bold, but it’s not far off. It wasn’t a terrible book, it had lots of good things, but the author made sure you knew he was awesome. (The author was at one point the top Cutco salesmen in the world…)&lt;/p&gt;

&lt;p&gt;To be honest, I reluctantly enjoyed the book. I didn’t want to, and wanted to be able to mentally tune out, but it was compelling. Here’s 
&lt;a href=&quot;http://lifehacker.com/start-your-day-off-right-with-the-savers-morning-routin-1716241117&quot;&gt;Lifehacker&lt;/a&gt; on it, and 
&lt;a href=&quot;http://www.jamesaltucher.com/2015/07/how-to-win-the-day/&quot;&gt;James Altucher interviewing Hal Elrod&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Read those summaries before deciding to read the book.&lt;/p&gt;

&lt;p&gt;Anyway - the ONE practice from this book that still impacts me today almost every day is that of “daily gratitude”. 
The Miracle Morning certainly wasn’t the first to discuss this, but it finally made it stick.&lt;/p&gt;

&lt;p&gt;Every day, or almost every day, for much of the last five months, I’ve written down three things that I’m thankful for every day.&lt;/p&gt;

&lt;p&gt;I started keeping them on a really long text document on my phone, but the size of the list was making it buggy. (Sidebar- 
&lt;a href=&quot;http://9to5google.com/2016/06/01/google-keep-web-redesign/&quot;&gt;Google Keep&lt;/a&gt; is a delightful app. Android, Mac, iPhone - it works everywhere.)&lt;/p&gt;

&lt;p&gt;Every few months, I like to look back through what I’ve written and remember what caused me to write it. Since the only rule is “no repeating”, I’ve had to become attentive to the things I can be thankful for every day, since I need to find something 
new every day. (Three things every day, actually.)&lt;/p&gt;

&lt;p&gt;If someone said “Hey, sit down and write 360 things you are thankful for”, it would take you a long time. You might not be able to. But write down three things a day for four months… there’s your list of 360 things.&lt;/p&gt;

&lt;p&gt;Oh, I stopped using Google Keep, as I mentioned. Now I’m using 
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.journey.app&amp;amp;hl=en&quot;&gt;Journey&lt;/a&gt; on Android and Chrome. So far so good. (It’s free)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/dp/B00AKKS278/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1&quot;&gt;The Miracle Morning&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.journey.app&amp;amp;hl=en&quot;&gt;Journey Android App&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/journey-diary-journal/jlncjaehedpdoinepaejmlpbmdkgmpog&quot;&gt;Journey Chrome Extension&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://dayoneapp.com/&quot;&gt;Day One App iPhone/Mac&lt;/a&gt; (I’ve not used this, but seems popular)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>An Intro to Customer Success</title>
   <link href="https://josh.works/an-intro-to-customer-success"/>
   <updated>2016-05-31T00:00:00+00:00</updated>
   <id>https://josh.works/an-intro-to-customer-success</id>
   <content type="html">&lt;h2 id=&quot;customer-success---what-is-it&quot;&gt;Customer Success - what is it?&lt;/h2&gt;

&lt;p&gt;When I tell people I work in “Customer Success”, they immediately think I do either Customer Support, or sales&lt;em&gt;. In a way, they are correct. I do both. Today, and more in the future, I’ll dig deep into this particular industry&lt;/em&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;A traditional &lt;a href=&quot;https://en.wikipedia.org/wiki/Purchase_funnel&quot;&gt;marketing funnel&lt;/a&gt; narrows as it draws people from the top “creating awareness” pool, down through prospects &amp;gt; leads &amp;gt; trials &amp;gt; and eventually (hopefully!) customers.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_574e14d34c2f850c8f5f4c91_1464734935461__img.jpg_&quot; alt=&quot;Notice that the funnel gets smaller with each step, and ends when the customer pays you. Source: beintheknow.co &quot; /&gt; Notice that the funnel gets smaller with each step, and ends when the customer pays you. Source: beintheknow.co &lt;/p&gt;

&lt;p&gt;There’s different kinds of funnels, or different labels for each stage, but the goal is to identify and speak to a target audience, convince them you can do something valuable for them, and then have them become a customer. (I.E. pay you money)&lt;/p&gt;

&lt;p&gt;A “customer” can be a one-time purchase, recurring purchase, subscription, etc. Anything where they pay you money. Litmus is a business-to-business software-as-a-service company. All of our customers are subscribers. We don’t have any one-off purchase options.&lt;/p&gt;

&lt;p&gt;There’s very few barriers to becoming a customer of Litmus. No disks to have delivered in the mail, no software to install, no hardware to buy and techs to pay to install it, no contracts, no sales team, and quite inexpensive prices. A few visits to Chipotle/month is the same cost as a basic Litmus account.&lt;/p&gt;

&lt;p&gt;Low friction is good! This means we can have many, many customers and don’t have to spend lots of time and effort getting each customer. This is good for them, too, as they can kick the tires of Litmus via a trial, and don’t have to talk to a sales rep or anything else.&lt;/p&gt;

&lt;p&gt;This ease of becoming a customer has an edge, though. It means it’s just as easy to
stop being a customer. Click a few buttons (A max of three mouse clicks from any page in your Litmus account) and your account will be closed, and you’ll never be billed again.&lt;/p&gt;

&lt;p&gt;In the marketing funnel, your goal is to increase conversions through each stage of the funnel, ultimately boosting your numbers of new customers. A Customer Success team looks at a different kind of funnel.*&lt;/p&gt;

&lt;h2 id=&quot;difference-between-customer-success-and-marketing&quot;&gt;Difference between customer success and marketing&lt;/h2&gt;

&lt;p&gt;If you invert the marketing funnel, and start with your customers (and ignore everyone who is not yet a customer) you’ll have what you HOPE is a path of growth for your customers.&lt;/p&gt;

&lt;p&gt;Here’s a quick example. I’ve inverted a traditional marketing funnel, and now the TOP of the funnel is when someone becomes a customer. (Ideally, funnel width is proportional to growing revenue from your customers)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_574e181c22482e1124317534_1464735782316_Conversion_Rate_Optimization_-_Learn_SEO_-_Moz1.png_&quot; alt=&quot;What some Customer Success teams think about. (Thanks to Moz for the original graphic.)&quot; /&gt; What some Customer Success teams think about. (Thanks to Moz for the original graphic.)&lt;/p&gt;

&lt;p&gt;To a SaaS company, marketing is only half the battle. Once you get customers in, you need to keep them.&lt;/p&gt;

&lt;p&gt;With low costs to start using a tool, there are low costs to leaving it. There are no multi-year contracts you need to sign, no six-figure hardware installs and ongoing maintenance agreements. You just click the “cancel” button in your account, and you’re done.&lt;/p&gt;

&lt;p&gt;So, a customer success team deals with the time in a customer’s life between when they become a customer, and when they stop being a customer.* &lt;/p&gt;

&lt;p&gt;From the customer’s perspective, this is the most important time. Indeed, this is the only time that matters. This is certainly the only time the customer is thinking about you. Many companies, however, they’re not quite sure how to focus on their existing customers.&lt;/p&gt;

&lt;p&gt;If you want a hint - go talk to your customer support team. They’ll have more than enough feedback to get you moving in the right direction. &lt;/p&gt;

&lt;p&gt;I’ll dig more into this soon.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;* &lt;em&gt;“Customer Success” can be defined in many ways. Some companies label their outbound sales team “customer success”. Sometimes a strict support team goes by that title. Rather than calling out these companies for appropriating the wrong title - I’d say it’s aspirational and encouraging. If a company is reorienting itself around MY success, as a customer, I’m quite pleased.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Furthermore, there are many different angles by which you could get at “customer success”. If you’re a software company, everyone who works on the core product is technically serving the customer. If you’re in the X team, you’re serving the customer, so aren’t we all in the “customer success” business?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Yes, but for the sake of roles, lets keep it simple and assume divisions. Phew.&lt;/em&gt;&lt;/p&gt;

&lt;h4 id=&quot;additional-reading&quot;&gt;Additional Reading:&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://sixteenventures.com/&quot;&gt;Sixteen Ventures&lt;/a&gt; - Lincoln Murphy is THE go-to expert on this.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Customer-Success-Innovative-Companies-Recurring/dp/1119167965&quot;&gt;Customer Success: How Innovative Companies Are Reducing Churn and Growing Recurring Revenue&lt;/a&gt; (By Lincoln and others)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://josh.works/tags#customer+success&quot;&gt;More that I’ve written on Customer Success&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>62 lessons learned after one year of full-time travel</title>
   <link href="https://josh.works/62-lessons-learned-after-year-of-full-time-travel"/>
   <updated>2016-05-30T00:00:00+00:00</updated>
   <id>https://josh.works/62-lessons-learned-after-year-of-full-time-travel</id>
   <content type="html">&lt;p&gt;Kristi and I
&lt;a href=&quot;http://teamthompsontravels.tumblr.com/post/145144220613/1-year-travelversary-exactly-one-year-ago-on-may&quot;&gt;put together a non-comprehensive list of things we’ve learned while traveling full-time last year&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Samples:&lt;/p&gt;

&lt;h2 id=&quot;kristi&quot;&gt;&lt;strong&gt;Kristi&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Josh and I are such a good team, and we balance each other.&lt;/strong&gt;
 We’ve figured out our strengths and how to contribute to our successes together. It’s very difficult to imagine doing the work and planning this lifestyle requires alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Basic tasks are so hard in a new place. &lt;/strong&gt;
Finding a grocery store? Checking out at the grocery store? Buying a bus ticket? Filling up the gas tank? (Okay, that’s hard for this Jersey girl just about everywhere.) All such little, simple tasks at home. All can be completely overwhelming in a foreign country.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. It is important and polite to speak enough of a language to be able to ask a local if they speak English in their native language.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Traveling light makes everything so much simpler.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_574cb2731bbee0675b539653_1464644218553__img.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2 id=&quot;josh&quot;&gt;&lt;strong&gt;Josh&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;41. Try to write down one nice thing per day on your travels.&lt;/strong&gt;
 Easy to forget the minutia otherwise. For example, in Austria I didn’t write anything down for a whole month. But in Costa Rica, I wrote something down every day. I can remember so much more from Costa Rica than from Austria.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;42. If you want to learn a language, it’s best to get the basics down BEFORE you arrive in-country&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;43. Learn to cook a basic, simple meal with ingredients you can get anywhere.&lt;/strong&gt;
That way, you can always have something that is familiar, and you don’t have to eat out as much as you might otherwise. We make tacos, spaghetti, chili, and chicken or pork chops with rice everywhere we go.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>On Boldness In Climbing</title>
   <link href="https://josh.works/climbing/2016/05/29/on-boldness-in-climbing/"/>
   <updated>2016-05-29T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2016/05/29/on-boldness-in-climbing</id>
   <content type="html">&lt;p&gt;Climb boldly. I’ve tried to write about this many times, and have &lt;em&gt;thousands&lt;/em&gt; of words scattered across my computer about this topic. I always felt like I wasn’t communicating it quite right. I wasn’t happy with it.&lt;/p&gt;

&lt;p&gt;So I said “screw it, I’ll explain it like I would if I were teaching it in a class.”&lt;/p&gt;

&lt;p&gt;That’s the video below. Well, part of it.&lt;/p&gt;

&lt;p&gt;If you’re a rock climber, and fear is on your mind, this is for you:&lt;/p&gt;

&lt;p&gt;Get more info and sign up to get updates on this ongoing project over at 
&lt;a href=&quot;http://www.climbersguide.co/conquer-fear-course/&quot;&gt;The Climber’s Guide.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>An announcement, and a teaser (for you rock climbers)</title>
   <link href="https://josh.works/climbing/2016/05/28/an-announcement-and-a-teaser-for-you-rock-climbers/"/>
   <updated>2016-05-28T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2016/05/28/an-announcement-and-a-teaser-for-you-rock-climbers</id>
   <content type="html">&lt;p&gt;Here’s a clip from a video I shot today. &lt;/p&gt;

&lt;p&gt;Can you guess what’s coming?&lt;/p&gt;

&lt;p&gt;(This is all going to happen on 
&lt;a href=&quot;http://www.climbersguide.co/conquer-fear-course/&quot;&gt;The Climber’s Guide&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;(Warning to mobile users: big gif)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_574a25b08259b5de672f71fd_1464477149516__img.gif_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In case you didn’t guess, or you guessed wrong…&lt;/p&gt;

&lt;p&gt;I’m shooting tons of video for a course. It’s going to be awesome. It’s a work-in-progress, so read along 
&lt;a href=&quot;http://www.climbersguide.co/conquer-fear-course/&quot;&gt;HERE&lt;/a&gt; to follow along.&lt;/p&gt;

&lt;p&gt;If you rock climb, and you ever feel anxious while leading, 
you can resolve this anxiety completely, and unleash your inner crusher. This will make both of us really happy.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Social skills are like any other skills</title>
   <link href="https://josh.works/growth/2016/05/27/social-skills-are-like-any-other-skills/"/>
   <updated>2016-05-27T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/05/27/social-skills-are-like-any-other-skills</id>
   <content type="html">&lt;p&gt;Learning social 
skills are no different from learning cooking 
skills, or handstand 
skills. It helps to have exposure at a young age, but with time and effort, you can learn, and even master, cooking, handstands, and social skills.&lt;/p&gt;

&lt;h2 id=&quot;why-do-social-skills-matter&quot;&gt;Why do social skills matter?&lt;/h2&gt;

&lt;p&gt;Most people get along fine with their friends, and don’t particularly enjoy the “go out and meet new people and make small talk until you each promise to stay in touch and never actually talk again” game.&lt;/p&gt;

&lt;p&gt;That game is dumb. Social skills are important.&lt;/p&gt;

&lt;p&gt;Here’s the reconciliation:&lt;/p&gt;

&lt;p&gt;Social skills can be defined in many different ways, from pick-up artists (ugh) to boiler-room sales guys.&lt;/p&gt;

&lt;p&gt;No one wants to be either of those two types, and no one is telling you to do that. Here’s my take on social skills:&lt;/p&gt;

&lt;p&gt;They can help you increase your impact on the world around you by meeting new people (and building stronger relationships with existing acquintances) and giving them something nice.&lt;/p&gt;

&lt;p&gt;That’s right. You can 
serve others with social skills. If you’re trying to have a positive impact on the world around you, a great start is by:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Putting others at ease&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Finding out meaningful things about people&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Being able to help them&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Usually, the “help” you can offer is just information. Sort of like I’m doing right now.&lt;/p&gt;

&lt;p&gt;“Oh, you have a problem with X? I read a thing about that who had some good advice. I’ll email you a link to the article.”&lt;/p&gt;

&lt;p&gt;Boom. You’ve helped that person. Easy as that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I’m shy, and don’t like stupid small talk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A harsh read of shyness is “shy people are selfish”. Here’s why:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;If talking to someone, you force the other person to carry the conversation. (This is draining and not much fun)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If not talking to someone, you’ll never start, so you miss an opportunity to care for them, encourage them, or make them laugh, feel joy, etc.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If in the same area as another shy person, 
you’ll both be miserable because neither will break the ice.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Like I said - that’s a “harsh” read of being shy.&lt;/p&gt;

&lt;p&gt;As far as small talk - if you don’t like small talk, 
don’t participate in small talk. Guide the conversation elsewhere. You and whoever you are talking to will appreciate it. Once you own the relationship trajectory, you can’t complain about small talk, because you’re facilitating it.&lt;/p&gt;

&lt;h2 id=&quot;social-skills-will-help-you-grow-as-a-person-more-than-most-other-skills&quot;&gt;Social skills will help you grow as a person more than most other skills&lt;/h2&gt;

&lt;p&gt;We learn from people, either by observation or interaction. You’ll get more from both if you are comfortable talking with others in a range of situations and about a range of topics.&lt;/p&gt;

&lt;p&gt;If you want to grow as a person, start with how you interact with others. It’s a gift that keeps on giving.&lt;/p&gt;

&lt;h2 id=&quot;if-youre-still-with-me-read-these&quot;&gt;If you’re still with me, read these:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Never-Eat-Alone-Expanded-Updated-ebook/dp/B00H6JBFOS?ie=UTF8&amp;amp;btkr=1&amp;amp;redirect=true&amp;amp;ref_=dp-kindle-redirect&quot;&gt;Never Eat Alone&lt;/a&gt; (book)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.scotthyoung.com/blog/2008/12/22/how-to-be-more-social/&quot;&gt;How To Be More Social&lt;/a&gt; (article by Scott Young)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.scotthyoung.com/blog/2008/06/05/social-skills-and-dancing-for-dummies/&quot;&gt;Social Skills and Dancing for Dummies&lt;/a&gt; (article by Scott Young)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Career advice for Millenials. (ugh. I hate this title)</title>
   <link href="https://josh.works/growth/2016/05/25/career-advice-for-millenials-ugh-i-hate-this-title/"/>
   <updated>2016-05-25T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/05/25/career-advice-for-millenials-ugh-i-hate-this-title</id>
   <content type="html">&lt;p&gt;Hah! You thought 
I had career advice?&lt;/p&gt;

&lt;p&gt;Not quite.&lt;/p&gt;

&lt;p&gt;Christian Bonilla writes one of the best blogs I’ve ever read at 
&lt;a href=&quot;http://www.smartlikehow.com/&quot;&gt;Smart Like How&lt;/a&gt;. Please click over there, and read a few of his posts.&lt;/p&gt;

&lt;p&gt;He talks about being 
&lt;a href=&quot;http://www.smartlikehow.com/blog-native/2015/12/1/not-a-data-scientist-no-problem-you-can-still-be-data-savvy-than-most&quot;&gt;data savy&lt;/a&gt; even if you’re not a data scientist. He covers 
&lt;a href=&quot;http://www.smartlikehow.com/blog-native/2015/9/14/want-to-succeed-in-your-new-job-build-a-strong-mental-model&quot;&gt;how to suceed in a new job&lt;/a&gt;, and many other things.&lt;/p&gt;

&lt;p&gt;I finished his book 
&lt;a href=&quot;https://www.amazon.com/Smart-Like-How-Hidden-Success-ebook/dp/B0181C4N56?ie=UTF8&amp;amp;keywords=smart%20like%20how&amp;amp;qid=1464215741&amp;amp;ref_=sr_1_1&amp;amp;sr=8-1&quot;&gt;Smart Like How: The Hidden Side of Career Success&lt;/a&gt; today, and highlighted many portions of it, because they contained 
specific and actionable suggestions.&lt;/p&gt;

&lt;p&gt;I’ll expand on these in a later post.&lt;/p&gt;

&lt;p&gt;In some ways, I’m not at the very beginning of my career. I’m 27, and there are plenty of people way farther along than I. But I didn’t get into my current line of work until two years ago, and have only recently been feeling like I’ve got my head wrapped around the work that I do.&lt;/p&gt;

&lt;p&gt;No matter what kind of job you have, his book is desperately useful. If you don’t like your job, you should read it. If you’re ambivilant about your job, you should read it. If you love your job, you should read it.&lt;/p&gt;

&lt;p&gt;And as much as we all will agree that work isn’t everything, it sure is significant enough to devote a bit of time to reading it.&lt;/p&gt;

&lt;p&gt;Yesterday, I mentioned Patrick McKenzie’s “
&lt;a href=&quot;https://news.ycombinator.com/item?id=11743920&quot;&gt;Daenerys Targaryen test&lt;/a&gt;”:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I propose the Daenerys Targaryen test.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you know who Daenerys Targaryen is, you do not have “no time.” You have priorities which included “I wish to know who Daenerys Targaryen is.” No judgement! I do, too! But if you know who Daenerys Targaryen is and you’re dissatisfied with your career growth, you should attempt to consciously be aware of the fact that you can choose different things in the future.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, if you watch GoT, or any other show, with any regularity, you have enough time and money to pick up 
&lt;a href=&quot;https://www.amazon.com/Smart-Like-How-Hidden-Success-ebook/dp/B0181C4N56?ie=UTF8&amp;amp;keywords=smart%20like%20how&amp;amp;qid=1464215741&amp;amp;ref_=sr_1_1&amp;amp;sr=8-1&quot;&gt;this book&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go forth and prosper.&lt;/p&gt;

&lt;p&gt;PS Do you know someone who might benefit from that book, or the Smart Like How blog? I bet you do. Why don’t you send them a link to his articles, or to this post, so they’ll be inspired to soak up his wisdom. &lt;/p&gt;

&lt;p&gt;Sharing useful things with people is one of the best ways to add value to the world. Do it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Who inspires you, and is still alive?</title>
   <link href="https://josh.works/growth/2016/05/24/who-inspires-you-and-is-still-alive/"/>
   <updated>2016-05-24T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/05/24/who-inspires-you-and-is-still-alive</id>
   <content type="html">&lt;p&gt;There are lots of dead people that we look up to. But people that are alive, and not world-wide famous are a bit more knowable. Some of them will even reply to tweets you send them!&lt;/p&gt;

&lt;p&gt;So, here are a few people that I follow and have received TONS of amazing wisdom from. (I recommend getting on all of their email lists.)&lt;/p&gt;

&lt;p&gt;They deal with money, jobs, and doing good work:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://twitter.com/ramit&quot;&gt;Ramit Sethi&lt;/a&gt;, 
&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/&quot;&gt;I Will Teach&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://twitter.com/brennandunn&quot;&gt;Brennan Dunn&lt;/a&gt;, 
&lt;a href=&quot;https://doubleyourfreelancing.com/&quot;&gt;Double Your Freelancing&lt;/a&gt;, which applies not just to freelancers but anyone trying to do good work.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://twitter.com/amyhoy&quot;&gt;Amy Hoy&lt;/a&gt;, who’s “
&lt;a href=&quot;http://yearofhustle.com/&quot;&gt;year of hustle&lt;/a&gt;” calendar is a great place to start.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://twitter.com/patio11&quot;&gt;Patrick McKenzie&lt;/a&gt;, famous around the world for tons of 
&lt;a href=&quot;https://news.ycombinator.com/threads?id=patio11&quot;&gt;Hacker News&lt;/a&gt; comments. A great recent starting point is 
&lt;a href=&quot;https://news.ycombinator.com/item?id=11743920&quot;&gt;the Daenerys Targaryen test&lt;/a&gt;. After that, read 
&lt;a href=&quot;http://www.kalzumeus.com/greatest-hits/&quot;&gt;his blog&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These have been the people I share with anyone when job-related discussions pop up. Jobs 
technically don’t define us, but that’s sure hard to tell. If you don’t like your job, read the above resources. If you like your job, read the above resources.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>OK, some new books</title>
   <link href="https://josh.works/ok-some-new-books"/>
   <updated>2016-05-23T00:00:00+00:00</updated>
   <id>https://josh.works/ok-some-new-books</id>
   <content type="html">&lt;p&gt;Yesterday, I proclaimed “
&lt;a href=&quot;/no-new-books&quot;&gt;No new books&lt;/a&gt;”. I spent a lot of time today thinking about that proclamation.&lt;/p&gt;

&lt;p&gt;Do I really want to limit myself to just the books that I’ve already picked for myself?&lt;/p&gt;

&lt;p&gt;Yes. Maybe.&lt;/p&gt;

&lt;p&gt;There’s a kind of book I don’t want to read any more of. That’s the “get started with a project” kind of book, or the general productivity stuff that’s floating around.&lt;/p&gt;

&lt;p&gt;Nate Eliason wrote
&lt;a href=&quot;http://www.nateliason.com/infomania/&quot;&gt;Fighting Infomania: Why 80% of Your Reading is a Waste of Time&lt;/a&gt;, and I wholeheartedly agree.&lt;/p&gt;

&lt;p&gt;So, I’m trying to reduce the consumption of tactical knowledge when it’s not helpful, or when I cannot act on it. I want to dwell on substantial, helpful literature, and maybe even find a few books I’d like to read twice.&lt;/p&gt;

&lt;p&gt;I don’t read TONS of fiction, so I don’t see that as a habit I should try to give up.&lt;/p&gt;

&lt;p&gt;So, in short, I’m trying to reduce books that are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;written recently&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;non-fiction&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;business related&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nate
&lt;a href=&quot;http://www.nateliason.com/infomania/&quot;&gt;summarized&lt;/a&gt; better than I can:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[Don’t read it…] if it doesn’t answer a specific question you’re currently asking, cover philosophical knowledge, or entertain you, then don’t read it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Words to live by.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;PS This was prompted by my friend Alex making a sci-fi book recommendation. His recommendations are always excellent, so I felt like my priorities had to be wrong if I banned myself from following up on his suggestions.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>No New Books</title>
   <link href="https://josh.works/no-new-books"/>
   <updated>2016-05-22T00:00:00+00:00</updated>
   <id>https://josh.works/no-new-books</id>
   <content type="html">&lt;p&gt;I’ve promised myself that I won’t add any more books to my Kindle, either by purchasing them from Amazon, or downloading them online, or renting them from a Library.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;I’ve let reading about doing things stand in the way of doing the things. No amount of educational literature is as good as a few days or weeks struggling with a task.&lt;/p&gt;

&lt;p&gt;I’m letting myself finish what I’ve already got on my Kindle, though. I’ve got 46 unread books, so this should last me through the end of 2016.&lt;/p&gt;

&lt;p&gt;Some of them are quite short (anything by Seth Godin) and others are quite long (John Keegan, First World War, Second World War). &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;For right now, no more book purchases or downloads. That’s my rule. &lt;/p&gt;

&lt;p&gt;Want to read along, or at least know what I’ve finished reading most recently?&lt;/p&gt;

&lt;p&gt;I keep my
&lt;a href=&quot;https://www.goodreads.com/review/list/27372191?shelf=read&amp;amp;sort=date_added&quot;&gt;Goodreads profile&lt;/a&gt; current-ish with what I’ve finished reading, and at least right now, what I’m currently reading.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Constraints</title>
   <link href="https://josh.works/growth/2016/05/21/constraints/"/>
   <updated>2016-05-21T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/05/21/constraints</id>
   <content type="html">&lt;p&gt;Constraints are USUALLY seen in a negative light.&lt;/p&gt;

&lt;p&gt;Google defines it as:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;a limitation or restriction&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here’s some example constraints that we find in the world around us, which we often view as an annoyance or frustration:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I have to be to work by 9a&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I have to get up at 7a&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I have $50 to spend on entertainment this month&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;This paper must be at least 8 pages long&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I have only 30 minutes of time to myself every day between work and family and sleep&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;And many, many more. Some trivial, some not.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Obviously, no one pops out of bed in the morning thrilled that they have a limited amount of money to spend on something.&lt;/p&gt;

&lt;p&gt;Constraints relate to prioritization, which means you don’t actually 
have to follow them, you just have to care if the item producing the constraint matters to you.&lt;/p&gt;

&lt;p&gt;Easy example: I don’t follow many rules of writing, or anything really, when writing on my own website, because… I can do whatever I want. I have goals and ideals with my writing, but they’re more like aspirations than constraints.&lt;/p&gt;

&lt;p&gt;I can stick in unrelated images and comics wherever I want, if I so choose.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5740234659827e2ef740b0cc_1463821128698_floor_tiles.png_&quot; alt=&quot;XKCD Alt text: The worst part is when the sidewalk cracks are out of sync with your natural stride&quot; /&gt; XKCD Alt text: The worst part is when the sidewalk cracks are out of sync with your natural stride&lt;/p&gt;

&lt;h2 id=&quot;embrace-as-many-constraints-as-you-can&quot;&gt;Embrace as many constraints as you can&lt;/h2&gt;

&lt;p&gt;So what about embracing constraints?&lt;/p&gt;

&lt;p&gt;I decided to pick the first two words that popped out of a random word generator, and see if I could make something useful from it.&lt;/p&gt;

&lt;p&gt;I think I’m off to a strong start:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_574022b6e321400346093758_1463820985781_Random_Word_Generator_-_Creative_online_tool_to_generating_randomized_words_for_brainstorming_.png_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;On to Wikipedia, to find something useful. &lt;/p&gt;

&lt;p&gt;Searching “rodent actor” didn’t turn up anything good.&lt;/p&gt;

&lt;p&gt;The “Rodent” wikipedia page came up blank when I ctrl+F’d for “movie”.&lt;/p&gt;

&lt;p&gt;So, I turned back to Google, and found this gem: 
&lt;a href=&quot;http://www.imdb.com/list/ls000471351/&quot;&gt;Top 10 films featuring rats&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Interestingly, the #2 listing is Ratatouille, which I both watched and ate in the last few weeks. It’s delicious, and an enjoyable movie. Turns out 
&lt;a href=&quot;http://www.imdb.com/name/nm0652663/?ref_=tt_cl_t1&quot;&gt;Patton Oswalt&lt;/a&gt; is the voice behind Remy, the movie’s protagonist rat.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://vignette4.wikia.nocookie.net/pixar/images/a/a9/Ratatouille-remy3.jpg/revision/latest/scale-to-width-down/235?cb=20150214191242&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_574022f6d51cd44d18680e91_1463821048085_Ratatouille-remy3.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://pixar.wikia.com/wiki/File:Ratatouille-remy3.jpg&quot;&gt;Pixar.wikia.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;He was also in 
Blade:Trinity and 
The Secret Life of Walter Mitty.&lt;/p&gt;

&lt;p&gt;And boom. There’s something to write about off of two random words.&lt;/p&gt;

&lt;p&gt;PS Why is embracing constraints on my mind? I’m trying to get better at doing just a few things, not all the things.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Lay a foundation</title>
   <link href="https://josh.works/growth/2016/05/20/lay-a-foundation/"/>
   <updated>2016-05-20T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/05/20/lay-a-foundation</id>
   <content type="html">&lt;p&gt;Yesterday I mentioned that
&lt;a href=&quot;/advantage-of-low-friction-goals&quot;&gt;low friction goals are an advantage&lt;/a&gt; over “high friction” goals.&lt;/p&gt;

&lt;p&gt;This is just another way of saying “easy things are easier to do than harder things”. Revelatory, I know.&lt;/p&gt;

&lt;p&gt;Similarly,
&lt;a href=&quot;/intentional-habit-building&quot;&gt;I wrote a long time ago that&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;We tell ourselves we can’t accomplish goals because we don’t have enough motivation, but this is far too simple of an explanation… it must be useful to fail during your attempt, and you must not try very hard.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words, big grand goals are great, but expect that you will not successfully execute on them all. Plan to fail the primary task, and in doing so, you’ll gain information that will make your second attempt that much better.&lt;/p&gt;

&lt;p&gt;I don’t know that I’ve learned a lot from the things I’ve failed to execute on. I certainly have not reduced the size and scope of my projects, but I’m getting a bit more thoughtful about them. For example, I’m working now in 30 day chunks. A project (like budgeting) is much more approachable when you’re doing it for just 29 or 30 days.&lt;/p&gt;

&lt;p&gt;Anyway, that’s part of what this writing has been about. I had a lot in my head I wanted to get out, so I said “I’ll publish something every day, and I won’t queue anything in advance.”&lt;/p&gt;

&lt;p&gt;I’m writing, my idea-muscles are getting some exercise, and I’m laying a foundation for my next projects. Hopefully, throughout it all, I’ll be able to share useful things.&lt;/p&gt;

&lt;p&gt;All in all, a good use of a few minutes every day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Further Reading:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://sethgodin.typepad.com/seths_blog/2011/09/talkers-block.html&quot;&gt;Seth Godin on writing every day&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.jamesaltucher.com/2014/05/the-ultimate-guide-for-becoming-an-idea-machine/&quot;&gt;James Altucher, How to become an idea machine&lt;/a&gt; (Very long post)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.jamesaltucher.com/2012/05/10-rules-about-blogging/&quot;&gt;James Altucher, 10 rules&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>The advantage of low friction goals</title>
   <link href="https://josh.works/advantage-of-low-friction-goals"/>
   <updated>2016-05-19T00:00:00+00:00</updated>
   <id>https://josh.works/advantage-of-low-friction-goals</id>
   <content type="html">&lt;p&gt;If you have a project, make it easy to take small steps.&lt;/p&gt;

&lt;p&gt;I’m trying to publish something every day for a month.&lt;/p&gt;

&lt;p&gt;Normally, I would sit down at my computer, open a text editor, write
something, the copy it into Squarespace, and customize the post from there.&lt;/p&gt;

&lt;p&gt;“Customization” means:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;create a reasonable URL&lt;/li&gt;
  &lt;li&gt;create a post excerpt&lt;/li&gt;
  &lt;li&gt;instruct squarespace to post a link to Twitter and Facebook&lt;/li&gt;
  &lt;li&gt;hit publish&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, today, I wrote this on my phone, in an email to a “email to post”
email address.&lt;/p&gt;

&lt;p&gt;It’s low friction, and I’ll fix the url later.&lt;/p&gt;

&lt;p&gt;Easy things are more likely to get done than hard things.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Travel somewhere fun. But first get on Scott&apos;s email list</title>
   <link href="https://josh.works/misc/2016/05/18/scotts-cheap-flights/"/>
   <updated>2016-05-18T00:00:00+00:00</updated>
   <id>https://josh.works/misc/2016/05/18/scotts-cheap-flights</id>
   <content type="html">&lt;p&gt;Most of us have a bucket list item of “travel abroad”, right?&lt;/p&gt;

&lt;p&gt;It gets harder to realize once you start looking through flight prices, though. If you and your significant other want to head to Europe or Asia, you might be dropping $2500, minimum, for the both of you.&lt;/p&gt;

&lt;p&gt;That’s expensive, especially because you will need to spend more money once you arrive.&lt;/p&gt;

&lt;p&gt;So, lets get your flights way cheaper, OK?&lt;/p&gt;

&lt;h2 id=&quot;scotts-cheap-flights-list&quot;&gt;Scotts Cheap Flights List&lt;/h2&gt;

&lt;p&gt;This guy 
&lt;a href=&quot;https://scottscheapflights.com/&quot;&gt;Scott&lt;/a&gt; sends out emails when he finds “mistake fares” from the USA to other parts of the world. There’s lots of these, but when one pops up, the offer is usually gone in a few hours or a few days.&lt;/p&gt;

&lt;p&gt;For example, here’s round-trip to Asia, from all over the USA, for $400-600 USD. That’s a great price.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_573cd733ab48de9ba0ab73f7_1463605048167_mistake_fare__all_over_US_Canada_to_Asia_for__446__roundtrip__-_thompsonjoshd_gmail_com_-_Gmail.jpg_&quot; alt=&quot;Scotts Cheap Flights, a deal from USA&amp;gt;Asia&amp;gt;USA&quot; /&gt; Scotts Cheap Flights, a deal from USA&amp;gt;Asia&amp;gt;USA&lt;/p&gt;

&lt;p&gt;Here’s the full email: 
&lt;a href=&quot;https://litmus.com/scope/knykygpttrg0&quot;&gt;https://litmus.com/scope/knykygpttrg0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;His “premium” list is $30/year, but he’s got a free list that you should sign up at. (When you first punch in your email, you get the free stuff. You can upgrade later if you want.)&lt;/p&gt;

&lt;p&gt;A quick example of how popular this is: I shared this around Litmus, and in the last two weeks or so, a total of ten people have purchased a flight thanks to Scotts list.&lt;/p&gt;

&lt;p&gt;If you want to travel, get on his list: 
&lt;a href=&quot;https://scottscheapflights.com/&quot;&gt;https://scottscheapflights.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;
 Flights and travel take money. You need to have money to travel. Here we touch on the delicate third rail of the world: finances. I strongly recommend browsing around 
&lt;a href=&quot;http://www.youneedabudget.com/blog/category/popular&quot;&gt;YNAB&lt;/a&gt; and getting inspired to own your finances. (Otherwise, they might own you.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PPS&lt;/strong&gt;
 I don’t do affiliate links.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://scottscheapflights.com/&quot;&gt;Scotts Cheap Flights&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.youneedabudget.com/blog/category/popular&quot;&gt;You Need a Budget&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Input metrics vs. Output metrics</title>
   <link href="https://josh.works/growth/2016/05/17/input-metrics-vs-output-metrics/"/>
   <updated>2016-05-17T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/05/17/input-metrics-vs-output-metrics</id>
   <content type="html">&lt;p&gt;It’s tempting to track results, when trying to accomplish something.&lt;/p&gt;

&lt;p&gt;If you’re working on any project of sufficient size, the results will come
slowly, fitfully, and sometimes not at all.&lt;/p&gt;

&lt;p&gt;So, don’t track results, track your efforts. (Yes, how very American of me.
I don’t believe in participation awards, or helicopter parenting, etc. Bear
with me.)&lt;/p&gt;

&lt;p&gt;Time box your efforts (one month is a nice period of time) and then do your
“input” for one month. At the end of the month, step back and look for the
results.&lt;/p&gt;

&lt;p&gt;But don’t do the thing a few times, and expect results quickly. That’s an
easy way to get frustrated.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Give it 30 days</title>
   <link href="https://josh.works/growth/2016/05/16/give-it-30-days/"/>
   <updated>2016-05-16T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/05/16/give-it-30-days</id>
   <content type="html">&lt;p&gt;Do you have any big audacious goal you want to accomplish?&lt;/p&gt;

&lt;p&gt;If you think back to Jan 1, 2016, what were your goals?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Lose weight/get in shape&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Make more money/start budgeting&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Learn a language&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Learn a skill&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Read more&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Stop doing something (smoking, drinking)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Statistically, all of these efforts failed within the first few weeks of 2016.&lt;/p&gt;

&lt;p&gt;I believe that May 16th, 2016, is a far better day for a SHORT exploratory period of a goal.&lt;/p&gt;

&lt;h2 id=&quot;you-wont-complete-bad-goals&quot;&gt;You won’t complete bad goals&lt;/h2&gt;

&lt;p&gt;None of the items in the above list meet the
&lt;a href=&quot;https://en.wikipedia.org/wiki/SMART_criteria&quot;&gt;criteria of a good goal&lt;/a&gt;. A good goal needs to be:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Specific&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Measurable&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Assignable&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Realistic&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Time-related&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(See the acronym those words make? SMART. heh)&lt;/p&gt;

&lt;p&gt;A nice time-period for me is a month.&lt;/p&gt;

&lt;p&gt;I can do something regularly for a month, and I am
way more motivated to give it a good go than think to myself “well, today’s the first day of a new thing that I want to do, and I’m going to do it
every day for the rest of my life.&lt;/p&gt;

&lt;p&gt;(Easy example is right now I’m publishing something every day. For a month. I’m about half way through. No way I would be motivated to stick with this for a year, or the rest of my life)&lt;/p&gt;

&lt;h2 id=&quot;failure-to-keep-a-goal-provides-valuable-insight&quot;&gt;Failure to keep a goal provides valuable insight&lt;/h2&gt;

&lt;p&gt;If most Americans have a New Years resolution, you can be sure that most of
those Americans then guilt themselves some time later about not actually completing the resolutions.&lt;/p&gt;

&lt;p&gt;They shouldn’t. We have a powerful sense of inertia in our life, and this keeps us powering through the day-to-day without any major problems. It’s a
good thing that we can’t rewrite our habits quickly or easily. It’s just also a frustrating thing.&lt;/p&gt;

&lt;p&gt;Don’t be frustrated that your habit didn’t stick. Press into that frustration and dig into “why did the habit not stick?”.
&lt;a href=&quot;/intentional-habit-building&quot;&gt;I’m of the opinion that habits only work if you make it really really easy to keep the habit&lt;/a&gt;, but this front-loads the effort of making a new habit, which is hard.&lt;/p&gt;

&lt;p&gt;Plan on failing. Since failure provides information, don’t beat yourself up over it, just regroup, re-evaluate, and give it another go.&lt;/p&gt;

&lt;h2 id=&quot;time-boxing-lets-you-makes-you-decide-where-you-want-to-be-in-a-month&quot;&gt;Time-boxing lets you (makes you?) decide where you want to be in a month&lt;/h2&gt;

&lt;p&gt;I’ve been trying to learn French recently, and trying to improve my Spanish. It’s not plausible to do these simultaneously, and “improve my {language}” is a
terrible goal.&lt;/p&gt;

&lt;p&gt;So, today, I told my French-speaking language buddy I needed to postpone our next session by a month, so I could spend time on Spanish. Then, in a month, I’ll take a few days of a “break”, and move back into French mode.&lt;/p&gt;

&lt;p&gt;This makes me feel
very motivated to make progress in Spanish, because I’m “time boxed”, and once this month is through, it’ll be at least another six weeks before I practice my Spanish again.&lt;/p&gt;

&lt;p&gt;So, I’m going to work on Spanish for 30 days. Coming soon is “How I find native Spanish speakers to practice with.” (It has nothing to do with being in a Spanish speaking country)&lt;/p&gt;

&lt;h3 id=&quot;related&quot;&gt;Related&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/intentional-habit-building&quot;&gt;Intentional Habit Building&lt;/a&gt; (By me)&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Cheap fix to night-time teeth grinding</title>
   <link href="https://josh.works/misc/2016/05/15/fix-night-time-teeth-grinding/"/>
   <updated>2016-05-15T00:00:00+00:00</updated>
   <id>https://josh.works/misc/2016/05/15/fix-night-time-teeth-grinding</id>
   <content type="html">&lt;p&gt;A few years ago, I found out I grind me teeth at night.&lt;/p&gt;

&lt;p&gt;Kristi says it sounds like I’m chewing marbles.&lt;/p&gt;

&lt;p&gt;Others who grind their teeth give themselves headaches, or wake themselves up at night.&lt;/p&gt;

&lt;p&gt;You can’t really stop yourself from grinding your teeth, since you’re asleep.&lt;/p&gt;

&lt;p&gt;You 
can stop chewing gum, and try to be less stressed, but the go-too solution for teeth-grinders is a mouth guard.&lt;/p&gt;

&lt;p&gt;Custom mouth guards are expensive and uncomfortable.&lt;/p&gt;

&lt;p&gt;Over the counter mouth guards fall into two categories:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Bulky mouth guards that you soak in boiling water and then fit to your teeth. I tried two of these, and found them to not be that comfortable, AND I bit through BOTH of them after a week or two. Whoa.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Low profile mouth guards that are basically like magic. I use the 
&lt;a href=&quot;http://www.amazon.com/Plackers-Mouth-Guard-Grind-Night/dp/B004TD23W2/ref=cm_cr_arp_d_product_top?ie=UTF8&quot;&gt;Plackers Mouth Guard Grind No More&lt;/a&gt;* exclusively now. Supposedly they are disposable, but I use them for a few months at a time. They have very little texture, so they’re easy to clean/don’t get smelly, and they’re small and flexible, so they take up very little space in a toiletry kit. &lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And, as a bonus, they are comfortable, and don’t impede my talking.&lt;/p&gt;

&lt;p&gt;They’re cheap as dirt (you can buy them one-at-a-time in a pharmacy, for $1.20 or so), and if you try them and 
don’t like them, you’ve lost nothing.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Plackers-Mouth-Guard-Grind-Night/dp/B004TD23W2/ref=cm_cr_arp_d_product_top?ie=UTF8&quot;&gt;Give ‘em a shot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*I don’t do affiliate links. Just trying to share useful things.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My all-time favorite question to ask people (and why you should ask it too)</title>
   <link href="https://josh.works/growth/2016/05/14/my-favorite-question/"/>
   <updated>2016-05-14T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/05/14/my-favorite-question</id>
   <content type="html">&lt;p&gt;I met two people yesterday from Colorado, while in Spain. We climbed together yesterday and today, and Kristi and I had dinner with them.&lt;/p&gt;

&lt;p&gt;Half way through the meal, I asked my all-time favorite question:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you could go back to twenty five year old you, and tell yourself anything, knowing it was coming from future you, what would you say? (And where were you living/what were you doing as a twenty five year old.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ve asked this of probably a hundred people, and 
always get an interesting answer.&lt;/p&gt;

&lt;p&gt;Want to know why I’m asking?&lt;/p&gt;

&lt;p&gt;I’m 27. Having 100 people reflect on what they’d tell a younger version of themselves is a pretty good way to learn things.&lt;/p&gt;

&lt;p&gt;Now, I don’t recall many specific answers. Usually it segways into a larger conversation. Few people have concise, ready answers.&lt;/p&gt;

&lt;p&gt;But if I did have a ready-made list of answers that were really insightful and a little irrelevant, I think it would look a lot like this list: 
&lt;a href=&quot;https://medium.com/life-learning/40-things-about-life-i-wish-i-could-travel-back-in-time-and-tell-myself-e52f2effa3ab#.vm6s6w33h&quot;&gt;40 things about life I wish I could travel back in time and tell myself&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How about you?&lt;/p&gt;

&lt;p&gt;If you could tell your twenty five year old self anything, what would it be? (If you’re younger than twenty eight, the question changes to “if you could tell your twenty 
one year old self anything…”)&lt;/p&gt;

&lt;h2 id=&quot;you-should-ask-this-question-of-those-around-you&quot;&gt;You should ask this question of those around you&lt;/h2&gt;

&lt;p&gt;This is a weighty question. Usually, when I ask someone, they say “hm. That’s a good question…” and then they’re quiet for a moment. They think, a lot. And their answer paves the way to great conversation, in addition to being useful in its own right.&lt;/p&gt;

&lt;p&gt;Sometimes they thank me for the question. It’s a good way to show someone that you’re listening to them, and interested in them. These are good things.&lt;/p&gt;

&lt;h2 id=&quot;related&quot;&gt;Related&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Never-Eat-Alone-Expanded-Updated-ebook/dp/B00H6JBFOS?ie=UTF8&amp;amp;btkr=1&amp;amp;redirect=true&amp;amp;ref_=dp-kindle-redirect&quot;&gt;Never Eat Alone&lt;/a&gt; by Keith Ferrazzi. People are good, you should learn from them and enjoy yourself around them. This book will teach you how. It taught me how.&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>How to never accidentally click Twitter&apos;s &quot;Moments&quot; again (and to block anything else on the internet you don&apos;t want to deal with) - with uBlock</title>
   <link href="https://josh.works/misc/2016/05/13/how-to-never-accidentally-click-twitters-moments-again-and-to-block-anything-else-on-the-internet-you-dont-want-to-deal-with/"/>
   <updated>2016-05-13T00:00:00+00:00</updated>
   <id>https://josh.works/misc/2016/05/13/how-to-never-accidentally-click-twitters-moments-again-and-to-block-anything-else-on-the-internet-you-dont-want-to-deal-with</id>
   <content type="html">&lt;p&gt;Do you use Twitter’s “Moments” tool, or do you just find it really annoying?&lt;/p&gt;

&lt;p&gt;Most people find it annoying. Here’s how to get rid of Twitter’s “Moments” forever:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;0. Be won over to using an ad blocker on the internet.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They don’t block just ads, but malicious scripts and bandwidth-hogging junk. I’m a huge fan, 
&lt;a href=&quot;http://lifehacker.com/5649025/why-you-should-use-adblock-plus-even-if-you-dont-block-ads&quot;&gt;so is Lifehacker&lt;/a&gt;. 
&lt;a href=&quot;http://thisinterestsme.com/adblock-bad-thing-people-use-selfish/&quot;&gt;Others are not&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Install uBlock Origin.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s links for 
&lt;a href=&quot;https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm/reviews?hl=en&quot;&gt;Chrome&lt;/a&gt;, 
&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/&quot;&gt;Firefox&lt;/a&gt;, and… the jury is still out for a good ad blocker for Safari.&lt;/p&gt;

&lt;p&gt;Already using AdBlock Plus? “uBlock is lighter/quicker than ABP” - 
&lt;a href=&quot;http://lifehacker.com/ublock-is-a-fast-and-lightweight-alternative-to-adblock-1625246461&quot;&gt;Lifehacker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(There’s a big kerfuffle about uBlock vs. uBlock Origin. I just 
&lt;a href=&quot;https://www.reddit.com/r/ublock/comments/32mos6/ublock_vs_ublock_origin/&quot;&gt;trust the internet&lt;/a&gt; and went with uBlock Origin.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Click the uBlock icon, and click the eye dropper tool.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The tool label is “Enter Element picker mode”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt;
&lt;strong&gt;Move the element picker to the 
entire “Moments” section.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(Not just the text or the icon)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Click it (or any section of the page you want to hide)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You know you want to. You won’t break anything. Once you click it - the thing you clicked? It’s GONE!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. On the tooltip that pops up in the bottom right of your screen, mouse over it, and click “create”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s a gif of using uBlock:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_573650c320c6471cf05bf50c_1463177445503_gif1.gif_&quot; alt=&quot;A gif of using uBlock&quot; /&gt; A gif of using uBlock&lt;/p&gt;

&lt;p&gt;If you make a mistake, no sweat. Right click on the uBlock icon&amp;gt;options&amp;gt;my filters&amp;gt;delete the rule you don’t want&amp;gt;apply changes&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5736511b4d088e9a0cbe36a8_1463177533310__img.gif_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Done! Never get frustrated clicking into “Moments” again!&lt;/p&gt;

&lt;p&gt;You can use it elsewhere, too.&lt;/p&gt;

&lt;p&gt;For example, email “subscribe now” popups can get annoying.&lt;/p&gt;

&lt;p&gt;I’ve subscribed to a newsletter (
&lt;a href=&quot;http://kopywritingkourse.com/blog/&quot;&gt;Kopywriting Kourse&lt;/a&gt;, if you must know), and when I click a link in the emails I receive, I get more popups asking me to join the newsletter! So, I use uBlock to permanently hide the popup:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_573652bd07eaa0bc96fe9b65_1463177931340_How_to_write_an_app_store_description__lessons_learned_from_scraping_the_Top_100_FREE_and_PAID_iOS_app_descriptions______Kopywriting_Kourse.jpg_&quot; alt=&quot;Bock annoying &quot; /&gt; Bock annoying “subscribe now” popups. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;That’s all. Hopefully this is useful!&lt;/p&gt;

&lt;p&gt;PS: The controversy about ad blockers makes me think about advertising as a huge mis-allocation of resources for modern man. I’ll expand on this some day.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Find out how much money you&apos;ve made (in your entire life)</title>
   <link href="https://josh.works/find-out-how-much-money-youve-made"/>
   <updated>2016-05-12T00:00:00+00:00</updated>
   <id>https://josh.works/find-out-how-much-money-youve-made-in-your-entire-life</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://www.reddit.com/r/personalfinance/comments/4iwo4v/us_find_out_how_much_you_have_earned_in_your/&quot;&gt;This post&lt;/a&gt; went by on the Personal Finance subreddit today:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;https://www.ssa.gov/myaccount/&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;After creating an account / logging in, click on Earnings, then add the columns. If you have been working for many years, try copying/pasting the column in excel and using the sum function.&lt;/p&gt;

  &lt;p&gt;The numbers don’t list money not reported to the government, obviously. I don’t know if the numbers are before or after taxes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You’ll come up with a number of how much you’ve earned in your lifetime. Reduce that by 25% to account for taxes.&lt;/p&gt;

&lt;p&gt;This is your lifetime earnings, as reported to the Feds.&lt;/p&gt;

&lt;p&gt;You might feel many emotions rolling through you as you see this number.&lt;/p&gt;

&lt;p&gt;In response to these many emotions, read
&lt;a href=&quot;http://www.amazon.com/Your-Money-Life-Transforming-Relationship/dp/0143115766/ref=sr_1_1?ie=UTF8&amp;amp;qid=1463059751&amp;amp;sr=8-1&amp;amp;keywords=your+money+or+your+life&quot;&gt;Your Money Or Your Life&lt;/a&gt;. This book will help you process those emotions.&lt;/p&gt;

&lt;p&gt;(Also, with this number in hand, you’ll have done the hardest bit of homework in that book, which is “calculate life-time earnings”.)&lt;/p&gt;

&lt;p&gt;Here’s the book again:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Your-Money-Life-Transforming-Relationship/dp/0143115766/ref=sr_1_1?ie=UTF8&amp;amp;qid=1463059751&amp;amp;sr=8-1&amp;amp;keywords=your+money+or+your+life&quot;&gt;Your Money Or Your Life&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The Slight Edge, and why you should read it</title>
   <link href="https://josh.works/growth/2016/05/11/the-slight-edge-and-why-you-should-read-it/"/>
   <updated>2016-05-11T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2016/05/11/the-slight-edge-and-why-you-should-read-it</id>
   <content type="html">&lt;p&gt;I read
&lt;a href=&quot;http://www.amazon.com/Slight-Edge-Turning-Disciplines-Massive/dp/193594486X&quot;&gt;The Slight Edge&lt;/a&gt; a few months ago.&lt;/p&gt;

&lt;p&gt;Since then, it’s been the book I recommend most often to most people. (I don’t make book recommendations willy-nilly, but if something seems relevant to what the person I’m speaking to is experiencing/thinking about, I make a recommendation.)&lt;/p&gt;

&lt;p&gt;I joyfully recommend other books about career advice, money management, exercise, and I love fiction, so I’ve always got a bunch of those ready to recommend too, but usually
The Slight Edge is the most appropriate recommendation.&lt;/p&gt;

&lt;p&gt;I wish I could recommend the Kindle version of the book, but… I can’t. :(&lt;/p&gt;

&lt;p&gt;Jeff Olson wrote the first version maybe ten years ago. It was a massive success. So, recently, he wrote an “updated” version, that basically spends half the book explaining how good the ideas in the first version are, and all the spin-off books, conferences, etc that have come from it.&lt;/p&gt;

&lt;p&gt;The content of the most recent version is still
good, it’s just filled with tons of fluff that doesn’t need to be there.&lt;/p&gt;

&lt;p&gt;Go compare the Amazon reviews of the
&lt;a href=&quot;http://www.amazon.com/Slight-Edge-Turning-Disciplines-Massive/dp/193594486X&quot;&gt;first version&lt;/a&gt; to those of the
&lt;a href=&quot;https://www.amazon.com/Slight-Edge-Turning-Disciplines-Happiness-ebook/dp/B00GDKN3T6?ie=UTF8&amp;amp;keywords=the%20slight%20edge&amp;amp;qid=1462964407&amp;amp;ref_=sr_1_1_ha&amp;amp;s=digital-text&amp;amp;sr=1-1&quot;&gt;second version&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even the 2nd version has an 88% rate of five stars, out of about 1000 reviews, so not too shabby, but feel free, if you read it, to skip the bits that you don’t want to read.&lt;/p&gt;

&lt;p&gt;Here’s the premise of the book:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Small actions, taken every day, compound. They compound in a way that hurts you, or in a way that helps you. Progress may seem nonexistent, but take joy in the small beneficial “slight edge” actions you can take, and over time, you’ll have something great. Conversely, if you take the slightly easier option of many small harmful (or neutral) decisions every day, over time these compound against you and your health, relationships, finances, etc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Go read the book. The original edition costs $7 + shipping
&lt;a href=&quot;http://www.amazon.com/Slight-Edge-Turning-Disciplines-Massive/dp/193594486X&quot;&gt;via Amazon&lt;/a&gt; (I don’t do affiliate links, by the way.) and you can read it over the next month. That’s about 10 minutes of reading a day.&lt;/p&gt;

&lt;p&gt;I referenced this book when I wrote that &lt;a href=&quot;/everything-i-do-and-think-ive-read-in-a-book&quot;&gt;Everything I do and think I’ve read in a book&lt;/a&gt;, and how the mentality outlined in this book trickle down through every part of your life, 
whether you are aware of it or not.&lt;/p&gt;

&lt;p&gt;Read it.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Slight-Edge-Turning-Disciplines-Massive/dp/193594486X&quot;&gt;Here’s the link again&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Overcome (some) barriers in work with this magic phrase</title>
   <link href="https://josh.works/overcome-barriers-in-work-with-this-magic-phrase"/>
   <updated>2016-05-10T00:00:00+00:00</updated>
   <id>https://josh.works/overcome-some-barriers-in-work-with-this-magic-phrase</id>
   <content type="html">&lt;p&gt;You’re sending an email to your boss about some decision point you’re facing. How should you word it?&lt;/p&gt;

&lt;p&gt;Compare this wording:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Let me know if my criteria are sound, or if you have any concerns. I’d like to get started as soon as possible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To this wording:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Unless I hear otherwise, I’m going to start reaching out to the clients that meet my criteria for this research.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you sent the first option out in an email, you might be waiting a few days to get the go-ahead. The second option, and you can begin immediately, because &lt;em&gt;a non-response from your boss is an implicit and meaningful approval of your plan&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The difference is night and day.&lt;/p&gt;

&lt;p&gt;I first heard of this phrase through this lovely one-page website &lt;a href=&quot;http://unlessiheardifferently.com/&quot;&gt;unlessiheardifferently.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I use this phrase all the time, and &lt;em&gt;have gotten nothing but positive feedback.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Give it a whirl yourself, next time you want to get something rolling and don’t want to wait for the explicit permission of those around you. They’ll thank you for it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>What I&apos;ve learned from cooking in 36 kitchens in the last year</title>
   <link href="https://josh.works/what-ive-learned-from-cooking-in-36-kitchens-in-the-last-year"/>
   <updated>2016-05-09T00:00:00+00:00</updated>
   <id>https://josh.works/what-ive-learned-from-cooking-in-36-kitchens-in-the-last-year</id>
   <content type="html">&lt;p&gt;Since we’ve been on the road full-time for the last year, Kristi and I have prepared meals for (usually) ourselves and (sometimes) others in 36 (!!!) kitchens.&lt;/p&gt;

&lt;p&gt;Sometimes we’ve used a kitchen for just one night, sometimes it’s every night for two months.&lt;/p&gt;

&lt;p&gt;Needless to say, we’ve seen many things we like, and many things we don’t like, about kitchens.&lt;/p&gt;

&lt;p&gt;Part of me says “Josh, this is the dumbest thing ever to write about. Kitchens don’t matter”&lt;/p&gt;

&lt;p&gt;Then I think “well, we all spend a lot of time in a kitchen, and depending on how you interact with one, a kitchen can make you both healthy and rich.”&lt;/p&gt;

&lt;p&gt;(Eating at home is cheap and healthy, which is generally better than the expensive and unhealthy alternative.)&lt;/p&gt;

&lt;p&gt;So, a kitchen is where you apply your skills to your ingredients to fuel your body, and hopefully do all of this in a frustration-free way.&lt;/p&gt;

&lt;h2 id=&quot;skills&quot;&gt;Skills&lt;/h2&gt;

&lt;p&gt;Go read &lt;a href=&quot;http://www.amazon.com/4-Hour-Chef-Cooking-Learning-Anything/dp/0547884591&quot;&gt;The Four Hour Chef&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Great! Now you’ve got skills, and if you followed along with his recommendations, you’ve also got a functional kitchen.&lt;/p&gt;

&lt;h2 id=&quot;ingredients&quot;&gt;Ingredients&lt;/h2&gt;

&lt;p&gt;I can’t help you with. I still find grocery shopping for new meals to be quite challenging. So, I generally cook the same few things over and over. ~Breakfast and lunch is always the exact same, every day. Omelet with a meat and veggies.~ I’m vegetarian-ish (since 2017), and do the “intermittent fasting” thing (since 2016).&lt;/p&gt;

&lt;p&gt;Dinner varies through four meals or so.&lt;/p&gt;

&lt;h2 id=&quot;kitchen-organization-and-layout&quot;&gt;Kitchen Organization and Layout&lt;/h2&gt;

&lt;p&gt;This I can talk about!&lt;/p&gt;

&lt;p&gt;Kristi and I have a running list of things we do and don’t like in kitchens, so when we get to put our own kitchen together again, we can have something that we really like.&lt;/p&gt;

&lt;p&gt;Most of the items on our list (and there are many items on that list) fall under just a few general themes:&lt;/p&gt;

&lt;h3 id=&quot;hang-as-much-from-walls-as-possible&quot;&gt;Hang as much from walls as possible.&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Pots and pans take up space in cabinets, and you are always nesting the one you use most often under the other two you don’t use as much, so you move the same items 2x/day for no good reason. So, hang them from a wall, like with one of &lt;a href=&quot;http://www.ikea.com/us/en/catalog/products/30202092/&quot;&gt;these&lt;/a&gt; or ideas from &lt;a href=&quot;http://www.thekitchn.com/hang-pots-on-the-wall-week-2-choosing-the-best-hanging-system-spring-projects-from-the-kitchn-202229&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;A magnetic knife rack saves your knives from banging against each other in a drawer, and from bacteria in a knife block. Plus they look cool. Here’s &lt;a href=&quot;http://www.thekitchn.com/10-places-to-hang-your-magnetic-knife-rack-200833&quot;&gt;The Kitchn&lt;/a&gt; on knife racks.&lt;/li&gt;
  &lt;li&gt;Mount a paper towel dispenser on the wall, or under a counter, but
mount it securely or you’ll rip it out of the wall/counter some day. I used &lt;a href=&quot;http://www.amazon.com/Simplehuman-Mount-Paper-Holder-Stainless/dp/B002YI653C&quot;&gt;this one&lt;/a&gt; for ages, and loved it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If these three things are mounted on a wall (and extra rack space given to spatulas, spoons, etc) you’ve made HUGE progress in creating more space in your cabinets,
and you can easily get to the pots and pans you use the most without struggling to free them from under other pans.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Josh, this is all well and good, but I’m in an apartment, I can’t be putting big holes in walls.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;They don’t need to be big. Everything that was really heavy I mounted with either &lt;a href=&quot;http://www.homedepot.com/p/E-Z-Ancor-Stud-Solver-7-x-1-1-4-in-Alloy-Flat-Head-Self-Drilling-Drywall-Anchors-with-Screws-4-Pack-29503/100234590&quot;&gt;this&lt;/a&gt; or &lt;a href=&quot;http://www.homedepot.com/p/Crown-Bolt-1-8-in-x-2-in-Zinc-Plated-Mushroom-Head-Toggle-Bolt-Anchor-10242/100349321&quot;&gt;some of these&lt;/a&gt;. You can repair the holes yourself, if you want, after you move out.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://www.naturalhandyman.com/iip/inffastener/infanchor/infanchor.html&quot;&gt;Here’s a good guide to hanging stuff&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Worse case, the company/landlord withholds some (or all of) your security deposit. One apartment I left a bunch of holes in the wall, I think I lost $100 of my security deposit. That averaged out to $4/month for the privilege of my kitchen being a pleasant space to work. What’s life without breaking some rules now and again? I guarantee you’re a better tenant that most landlords are used to, so they won’t be too upset.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;have-as-little-on-your-countertops-as-possible&quot;&gt;Have as little on your countertops as possible&lt;/h3&gt;

&lt;p&gt;When you’re cooking, you need cutting boards, or space for jars, or bags of various things. You can always use more space. So, don’t cause yourself frustration by leaving non-essential items on your countertops. Common offenders are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Knife blocks&lt;/li&gt;
  &lt;li&gt;Jars full of infrequently-used ingredients, like flour, salt, and sugar, rice, pasta, assorted teas&lt;/li&gt;
  &lt;li&gt;Infrequently used appliances&lt;/li&gt;
  &lt;li&gt;Spice rack&lt;/li&gt;
  &lt;li&gt;paper towel holder&lt;/li&gt;
  &lt;li&gt;Soap dispensers (i’ll address this in a moment)&lt;/li&gt;
  &lt;li&gt;Drying rack&lt;/li&gt;
  &lt;li&gt;Potted plants&lt;/li&gt;
  &lt;li&gt;More appliances&lt;/li&gt;
  &lt;li&gt;boom boxes/radios (not kidding at all here)&lt;/li&gt;
  &lt;li&gt;cup racks&lt;/li&gt;
  &lt;li&gt;misc. junk spillover that should be elsewhere. (Mail, pill containers, etc)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All this stuff complicates your kitchen for several reasons:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;You can’t use your space as well as you want, when it’s most important. (while cooking!)&lt;/li&gt;
  &lt;li&gt;It’s much harder to clean after cooking, because you have to move a dozen things or so to wipe down a countertop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates friction between you and cooking, which is bad, because cooking makes you health and rich, remember?&lt;/p&gt;

&lt;h3 id=&quot;make-cleanup-as-easy-as-possible&quot;&gt;Make cleanup as easy as possible&lt;/h3&gt;

&lt;p&gt;Cooking is not easy, but doing a huge pile of dishes in a space that is not conducive to cleaning dishes makes it 10x worse.&lt;/p&gt;

&lt;p&gt;The first offender here is a split sink. I don’t know why split sinks are so common. It seems to be that people like using the 2nd side as a drying rack, but I think that’s sacrificing a huge amount of valuable space for something that can be had on the counter next to the sink. If you’re remodeling a kitchen, just buy a $20 drying mat (I used &lt;a href=&quot;http://www.amazon.com/OXO-Grips-Silicone-Drying-Square/dp/B002UTG7WY&quot;&gt;this one&lt;/a&gt; for years, loved it) and get an extra large, extra deep sink.&lt;/p&gt;

&lt;p&gt;It doesn’t matter. No one is going to change their sink because they read an article, so lets just do the best with whatever kind of sink you’ve got. There’s plenty of room to optimize.&lt;/p&gt;

&lt;h4 id=&quot;have-a-good-sponge&quot;&gt;Have a good sponge&lt;/h4&gt;
&lt;p&gt;They cost almost nothing, but are the thing that does all the work of cleaning. Buy in bulk, and liberally throw them out as they get old and smelly. Get something that has an abrasive pad on one side. They’re yellow and green, and cheap.&lt;/p&gt;
&lt;h4 id=&quot;dont-scorn-rubber-gloves&quot;&gt;Don’t scorn rubber gloves&lt;/h4&gt;
&lt;p&gt;When I can, I use dishwashing gloves. The ones I own are usually yellow or pink. Some people laugh, and then I explain: I like hot water, and all the soap and water and grease is rough on my hands. I rock climb, a lot, and spend an unusual amount of time working about skin quality.&lt;/p&gt;

&lt;p&gt;Once I started doing dishes with rubber gloves, I never wanted to go back. They cost a dollar or three, last ages.&lt;/p&gt;

&lt;h4 id=&quot;have-one-handed-soap-dispensers&quot;&gt;Have one-handed soap dispensers&lt;/h4&gt;
&lt;p&gt;Imagine you’ve got one hand on a dish, and the other hand is holding a sponge. You need more soap on the sponge. What do you do?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Put dish down, use still-dirty/wet/soapy hand to grab soap container, invert said container over sponge, squeeze out some soap, replace container on counter, pick up dish again, and resume cleaning&lt;/li&gt;
  &lt;li&gt;With one hand, press down on a soap dispenser into your sponge, and resume cleaning.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=&quot;http://www.ebay.com/itm/Umbra-Joey-Ceramic-Soap-Pump-Dispenser-Scrubby-Kitchen-Holder-Bathroom-Liquid-/221806220590&quot;&gt;Something like this&lt;/a&gt; will help doing dishes be less unfun.&lt;/p&gt;

&lt;h4 id=&quot;have-a-good-place-to-dry-dishes&quot;&gt;Have a good place to dry dishes&lt;/h4&gt;

&lt;p&gt;I’ve mentioned &lt;a href=&quot;http://www.amazon.com/OXO-Grips-Silicone-Drying-Square/dp/B002UTG7WY&quot;&gt;this drying mat&lt;/a&gt; before, I’ll mention it again. I’ve found drying rack preferences to be deeply personal and contentious, so… you do you. &lt;/p&gt;

&lt;h4 id=&quot;wipe-down-your-counters-with-one-hand&quot;&gt;Wipe down your counters with one hand&lt;/h4&gt;

&lt;p&gt;Cleanup is way more than just dishes, you need to clean work surfaces. &lt;a href=&quot;http://www.amazon.com/Windex-Antibacterial-Cleaner-Kitchen-Glistening/dp/B00AJLYILM/ref=pd_bxgy_121_img_2?ie=UTF8&amp;amp;refRID=0AARTN3B53KCFHCECE1S&quot;&gt;This soap dispenser&lt;/a&gt; allows you to press a folded paper towel into the top of it, and it dispenses lysol. This was one of two things we kept on our counters full-time, and it made wiping down the counters SO EASY.&lt;/p&gt;

&lt;h4 id=&quot;put-your-trashcan-close-to-your-sink&quot;&gt;Put your trashcan close to your sink&lt;/h4&gt;

&lt;p&gt;Generally, any time you move stuff from your sink to your trash, it’s gross. It’s food stuck in a strainer, or something covered in raw meat juice, or something else. The last thing you want to do is cross your kitchen dripping gross liquid across your floor. So, if you have a “mobile” trash can, make it easy to put next to the sink, and make sure it’s something you can operate with one foot.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;note: most pedal-operated trashcans don’t work. They either slide out of the way, or don’t open all the way, and you have to help the lid open the rest of the way. This is not ideal.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;If your kitchen is easy to use, you’ll use it. Make things accessible, empty your counters, and set yourself up for success with your dishes.&lt;/p&gt;

&lt;p&gt;If you do these three things, you’ll have a kitchen better configured than almost everyone out there.&lt;/p&gt;

&lt;p&gt;Good luck.&lt;/p&gt;

&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Ikea’s &lt;a href=&quot;http://www.ikea.com/gb/en/catalog/categories/departments/kitchen/roomset/&quot;&gt;kitchen guide&lt;/a&gt; is a great place for ideas&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.thekitchn.com/categories/setting_up_a_kitchen&quot;&gt;The Kitchn&lt;/a&gt; has a nice collection of ideas. (Yes, I’ve spent hours browsing “kitchen organization ideas” and “cute ways to organize a small kitchen”. What about it?)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.simplehuman.com/&quot;&gt;Simple Human&lt;/a&gt; makes lovely things&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Twenties vs. Thirties (from a feeling-behind-the-curve 27 year old.)</title>
   <link href="https://josh.works/twenties-vs-thirties"/>
   <updated>2016-05-08T00:00:00+00:00</updated>
   <id>https://josh.works/twenties-vs-thirties-from-a-feeling-behind-the-curve-27-year-old</id>
   <content type="html">&lt;p&gt;Some months ago I found a very encouraging article, comparing one’s twenties to one’s thirties. I’ve scoured everywhere that I stick notes and interesting reads, and cannot, for the life of me, find the article.&lt;/p&gt;

&lt;p&gt;The internet is littered with &lt;a href=&quot;https://thebolditalic.com/turning-30-described-in-charts-and-graphs-the-bold-italic-san-francisco-4aa5104b9ab0#.ppn5zux9p&quot;&gt;tons&lt;/a&gt; of
&lt;a href=&quot;http://www.huffingtonpost.com/jacqui-zadik/10-differences-between-our-20s-vs-our-30s_b_6276860.html&quot;&gt;fluff pieces&lt;/a&gt; talking about sex and drinking, and comparing those in your twenties to those in your thirties, but I couldn’t find much of substance.&lt;/p&gt;

&lt;p&gt;The one piece I found &lt;a href=&quot;http://thecooperreview.com/money-20s-vs-30s/&quot;&gt;on money&lt;/a&gt; was dismal.&lt;/p&gt;

&lt;p&gt;Now, to be fair, what I’m finding is what’s foisted upon me by HuffPo’s SEO, and these fluff pieces get lots of links and shares, so they ride to the top of Google’s rankings.&lt;/p&gt;

&lt;p&gt;I still can’t stand it. Not because it’s wrong, but because there is this pervasive notion that the twenties are supposed to be the highlight of our lives, and after that, it’s just work and misery, and trying to coast through life while still scraping together some fun weekends drunk.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;But Josh, we all know that’s not true. I’m in my twenties, and I know this isn’t the peak of my existence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yes. I know this too. But I find myself slipping into this sense of “time is running out” to accomplish all that I’ve ever wanted to accomplish… by the time I’m 30. (I’m 27, by the way.)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://elitedaily.com/life/savings-20s-something-wrong/1214445/&quot;&gt;This article on “If you’re saving in your 20’s, you’re doing it wrong”&lt;/a&gt; made the rounds a few months ago. The author argues:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Your 20s are not the time to save; they’re the time to gamble. $200 a month isn’t going to make the dent that a $60,000 pay raise will after spending all those nights out networking.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;When you have something to bank on, you have nothing to reach for. When you have nothing to lose, you have everything to gain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;She’s right that $200/month won’t immediately make you rich, and that a $60k pay raise might. But the two are connected. Mr. Money Mustache wrote a delightful response,
&lt;a href=&quot;http://www.mrmoneymustache.com/2015/09/29/if-youre-not-getting-rich-in-your-20s-youre-doing-it-wrong/&quot;&gt;If You’re Not Getting Rich in your 20s, You’re Doing it Wrong&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Here’s the thing about your 20s. They are the time to work. The very, very best time in your life to work your ass off and create an exponential snowball of money, skills, and friendships.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, we’re moving somewhere. We can discard the crap BuzzFeed pieces about alcohol tolerance in your thirties, and we know that we should be doing something in our twenties (besides spending all the money we make), and we’ve got people like Mr. Money Mustache and The Financial Diet (rebuttal title: &lt;a href=&quot;http://thefinancialdiet.com/if-you-dont-have-savings-in-your-20s-youre-a-fucking-idiot/&quot;&gt;If You Don’t Have Savings In Your 20s, You’re A Fucking Idiot&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The idea of “investment” threads through all these pieces. The “don’t save anything” piece thinks that by saving, you’re unable to invest in things that will provide a greater return down the road. The authors of the rebuttals argue that you can simultaneously save and invest, and that maybe even by saving more, you’re better equipped to invest more.&lt;/p&gt;

&lt;p&gt;I’m “sold” on the idea on investing right now.&lt;/p&gt;

&lt;p&gt;I will gladly invest my time, money, and effort into things that will build capacity down the road. Heck, the words you’re reading right now count as an investment - I want to be a better communicator, so here I am communicating. The first piece won’t be good, but maybe once I’ve written a thousand things I’ll be bit better.&lt;/p&gt;

&lt;p&gt;But this is a time of investment. I keep finding myself concerned that because I’ve done done one thing or another, I’ll probably never do it. I’ve got plenty of goals, and if I accomplished them all by the time I was 30, who knows what else I’d work on. So, my recommendation to myself (and to you, if we’re in the same boat):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Be consistent in making small, regular investments across many domains today. Don’t worry about what will come of it just yet. You’ve got time to let things grow.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>Save hundreds by being willing to spend $20</title>
   <link href="https://josh.works/misc/2016/05/07/save-hundreds-by-being-willing-to-spend-20/"/>
   <updated>2016-05-07T00:00:00+00:00</updated>
   <id>https://josh.works/misc/2016/05/07/save-hundreds-by-being-willing-to-spend-20</id>
   <content type="html">&lt;p&gt;When you pack for a trip, you pack “just in case” items, right? Things that in a certain situation would be priceless. Think “umbrella” or “underpants”.&lt;/p&gt;

&lt;p&gt;But then you think of all the possible situations you might encounter, and you’ll find your “just in case” items quickly outnumber (and outweigh) your “essentials” list.&lt;/p&gt;

&lt;p&gt;(This applies equally to packing for travel, and just living in your house/apartment.)&lt;/p&gt;

&lt;p&gt;I want to convince you to switch your thinking from “I 
might need this thing” to “Statistically, I will not need 
this thing, but I will need 
a thing, so I’ve planned accordingly.”&lt;/p&gt;

&lt;p&gt;There’s a final, unexpected benefit to this thinking, too. I’ll expand on that at the end.&lt;/p&gt;

&lt;h2 id=&quot;you-cannot-anticipate-what-youll-need-just-that-you-will-need-something&quot;&gt;You cannot anticipate what you’ll need, just that you will need something&lt;/h2&gt;

&lt;p&gt;The problem is, of 20 items you’ll need some day, you have no idea when that will be, and you’re stuck caring for them, and storing them, and moving them, until that day.&lt;/p&gt;

&lt;p&gt;Here’s how to sidestep the problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Give yourself permission to get rid of anything that you’re on the fence about, if it can be replaced for $20 or less.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You might choose to leave behind twenty items, and save yourself tons of time and frustration by getting rid of it, and then at the end, replace one or two items.&lt;/p&gt;

&lt;p&gt;Now, what items should you apply this rule to? Well, obviously start with just that $20 price limit, and then apply it to anywhere you see an excess of items. It seems the top offenders here are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Closets with clothing acquired for free or cheap (get rid of that shirt you got from that 5k you ran a few years back, and that thing you bought because it was on sale.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Kitchen utensils. It’s hard rummaging around for that thing you use almost every day, when it’s buried in with things you’ve not used for six months. Get rid of the stuff you don’t use. Tape a $20 to your fridge, if you’d like, to symbolize your new line of thinking. &lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Tool chests/buckets/storage areas/garages/basements. We put things here that we don’t need, and we know we don’t need, we just think we &lt;em&gt;might&lt;/em&gt; want them later. &lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I can provide two examples:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Kristi and I are traveling, and went to see an orchestra. We’ve been living out of small backpacks for two months, and had no formal attire. The orchestra was formal-ish, but Kristi didn’t have any dresses. So she went to a thrift store and bought a dress that she liked for about €4.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It was cold and wet in Austria, and Kristi did not have an umbrella or waterproof later. So she bought a water-resistant layer at a department store for €15. She could have packed more clothing at the beginning of the trip , but packed light, and acquired what she needed as she went. It was only after eight weeks on the road that this particular layer became critical.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, it may seem obvious that if you need something, and you’re in a city, you can probably buy it. But by PLANNING for this, you can adjust your trip packing ahead of time.&lt;/p&gt;

&lt;p&gt;For example, in a trip, it’s possible that you’ll need to be able to swim, go to a formal event, exercise/work out, endure rain/snow, spill something on yourself, be comfortable in hot weather, and much more.&lt;/p&gt;

&lt;p&gt;Right now, the minimum list of items to pack to cover those contingencies would be:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Swimsuit&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Formal clothing&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;shorts/socks/shoes/shirt appropriate for exercise&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;rain clothing/insulated layers&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;replacement clothing for whatever you could spill a drink/food on&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;shorts/t-shirt&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You would have to pack all of this clothing in addition to whatever you planned to pack and wear normally.&lt;/p&gt;

&lt;p&gt;So, say to yourself “I’ll pack for none of these activities, but will give myself permission to spend $20 to equip myself for any of these situations.”&lt;/p&gt;

&lt;p&gt;Now you’ve saved yourself TONS of space in your bag (maybe you won’t even need to check a bag on your trip. This saves you more time and money, and you’re more mobile just walking around.)&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Now, remember that “final, unexpected benefit” I mentioned earlier?&lt;/p&gt;

&lt;p&gt;The benefit of this kind of thinking is it forces you to rely a bit more on yourself, and a bit less on stuff. You have to be prepared to think a bit outside the box, and think dispassionately about your things. You’ll start thinking not just “I own these things” but also “Am I content being owned by these things?”&lt;/p&gt;

&lt;p&gt;I was listening to a podcast by 
&lt;a href=&quot;http://fourhourworkweek.com/2016/01/22/the-tao-of-seneca/&quot;&gt;Tim Ferriss&lt;/a&gt;, who quoted 
&lt;a href=&quot;https://en.wikipedia.org/wiki/Seneca_the_Younger&quot;&gt;Seneca&lt;/a&gt; to this effect:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A person’s degree of self-ownership is inversely related to their dependence on things around them for security and provision.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ll close with a little… aspirational dreaming? food for thought?&lt;/p&gt;

&lt;p&gt;Much of the decisions we’re encouraged to make by the world around us is rooted in fear. Fear of loss, fear of impoverishment, fear of other people, fear of financial ruin, fear of someone not liking us, fear of the wrong person having power, fear of doing something and it not working out perfectly, fear of embarrassment, fear of criticism, fear of missing out, fear of being unlikable, fear of being uncool, etc.&lt;/p&gt;

&lt;p&gt;Obviously, we don’t want to be fearful. It’s stressful, expensive, and greatly reduces your quality of life. So, treat your relationship with your stuff as a means of facing fear, and stepping a little beyond your comfort zone.&lt;/p&gt;

&lt;h3 id=&quot;additional-reading&quot;&gt;Additional Reading:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://fourhourworkweek.com/2016/01/22/the-tao-of-seneca/&quot;&gt;Seneca Audio Book from Tim Ferriss&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.theminimalists.com/jic/&quot;&gt;The Minimalists on getting rid of “Just In Case” items&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Be a little better at personal email</title>
   <link href="https://josh.works/2016/05/06/be-a-little-better-at-personal-email/"/>
   <updated>2016-05-06T00:00:00+00:00</updated>
   <id>https://josh.works/2016/05/06/be-a-little-better-at-personal-email</id>
   <content type="html">&lt;p&gt;The next bunch of posts will be me “clearing out the drawers” of notes I have scattered across my phone, computer, and brain. There is no unifying theme to what will be written here.&lt;/p&gt;

&lt;h1 id=&quot;three-recommendations-to-email-better&quot;&gt;Three recommendations to email better&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://www.urbandictionary.com/define.php?term=tl%3Bdr&quot;&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/a&gt; Email should usually be as short as possible. More of a text message than a letter. If an email isn’t going to be one line (like a text) make it easy to skim, by using many line breaks.&lt;/p&gt;

&lt;p&gt;If you need input from someone else to proceed, present a list of their options, and say “unless I hear otherwise, I’ll do {option}.” (source: 
&lt;a href=&quot;http://unlessiheardifferently.com/&quot;&gt;unlessiheardifferently.com&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Longer Version, AKA Don’t read this paragraph&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I had a discussion with a friend a few months ago about “rules for email”, or “email best practices”. These “best practices” are all generally in the context of 1:1 email, or at most, one email to a small group. We all send and receive emails, and it may seem like it doesn’t matter if you write good email. I used to think it didn’t matter. Then I started emailing around when I was trying to get a job. Then I realized my email skills were EXACTLY what got me to a first interview at a company, or got a “thanks for your inquiry, but no thanks”, or no reply at all. A short email I sent is exactly why I have the job I have today. I’ll include some screenshots of early emails I sent in a later message. They are horrendous, extremely long tomes. I’d never send anything like that to a stranger these days. BUT! They were not complete wastes. I was trying to demonstrate my ability to deliver value to the person I was emailing, in regards to the job I wanted to do. This is a good goal to have, I just executed it poorly. Good email respects the reader, even if it is entirely devoid of pleasantries and flowery language. It is short and concise because important and busy people have a lot to do, and you want a sliver of their attention. A long email causes them to skip your email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You didn’t even try to read that last paragraph, did you?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I sure wouldn’t have. Walls of text are terrible.&lt;/p&gt;

&lt;p&gt;Here’s the same paragraph, but with line breaks and unnecessary words removed:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I had a discussion with a friend a few months ago about “rules for email”, or “best practices for emails between individuals”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I never thought about my own email etiquette until I started emailing around when I was trying to get a job a few years ago. My email skills (or lack thereof) were EXACTLY what got me to a an interview at a company, or got a “thanks for your inquiry, but no thanks”, or no reply at all.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;My job today at Litmus is a direct result of a short email I sent, but I would have never gotten the job if I’d ignored the following “rules of email”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Good email respects the reader, even if it is entirely devoid of pleasantries and flowery language. A long email causes them to skip your message.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Does that look a little better? Maybe you actually read it, huh?&lt;/p&gt;

&lt;p&gt;Here’s the best list of rules I can think of. Some of this applies more to emailing a peer, some of it fits more for emailing a “Very Important Person”.&lt;/p&gt;

&lt;h3 id=&quot;rule-1-be-concise&quot;&gt;Rule 1: Be concise&lt;/h3&gt;

&lt;p&gt;Relentlessly strip away words, sentences, and paragraphs that are not critical. If you can’t decide if it matters or not, it doesn’t matter.&lt;/p&gt;

&lt;h3 id=&quot;rule-2-respect-the-time-and-attention-of-the-reader&quot;&gt;Rule 2: Respect the time and attention of the reader.&lt;/h3&gt;

&lt;p&gt;This can be done by:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Doing your research before emailing them&lt;/strong&gt;
. Have a question? Show that you’ve tried to find the answer on your own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lead with the most important part of the email, provide additional context below.&lt;/strong&gt;
 (This is known as a TL;DR, or “Too Long; Didn’t Read)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create information hierarchy.&lt;/strong&gt;
 Bold the important parts, assume the rest will be skimmed at best.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it easy for them to give a one-word answer, or at most, a one-sentence answer.&lt;/strong&gt;
It’s hard to write a question like this, but it’s putting the burden on the person you’re emailing to do it any other way.&lt;/p&gt;

&lt;p&gt;Here’s an example of a poorly phrased question (Imagine you’re emailing a sponsored athlete, trying to learn how to become sponsored like them.)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hey {athlete}, I’m trying to come up with same ways to get a sponsorship from {company}, and it seems like you’ve figured this out. What would you recommend I do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How would you even begin to respond to this question? If I were the athlete, I’d be annoyed that they didn’t just 
&lt;a href=&quot;http://lmgtfy.com/?q=how+do+I+become+a+sponsored+athlete%3F+&quot;&gt;google it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s a much better way to ask the same question:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hi {athlete},&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’ve been following you for a while, and have been impressed with how you’ve done {thing1} and {thing2}.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;It looks like your path to sponsorship started with {beginning}, then on your blog 2 years ago {link_to_post}, you said you started sponsorship with {desired company}. I’m working towards a similar arrangement, and have a few options to proceed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Which of the following makes the most sense to you?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Option 1:&lt;/strong&gt;
Focus on growing my social media followers, while tagging the brands I want to get the attention by.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Option 2:&lt;/strong&gt;
 Ignore social media for now, and focus on building relationships within the companies by attending trade shows, writing posts for their blog, etc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Option 3:&lt;/strong&gt;
 {some third option that you’ve discovered in your quest for a good answer}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even if none of the options are what the person recommends, he or she will probably say something like “A mix of option 1 and 3, but make sure you do {thing}.”&lt;/p&gt;

&lt;p&gt;When you’ve implemented their advice, you can reach out and tell them what you’ve done. They’ll be thrilled to see that they helped you.&lt;/p&gt;

&lt;h3 id=&quot;rule-3-write-short-sentences-and-short-paragraphs&quot;&gt;Rule 3: Write short sentences, and short paragraphs.&lt;/h3&gt;

&lt;p&gt;The enter key is your best friend.&lt;/p&gt;

&lt;p&gt;When is the last time you were reading something, and were annoyed by all the white space?&lt;/p&gt;

&lt;p&gt;Probably never.&lt;/p&gt;

&lt;p&gt;Look, that was a two-word paragraph.&lt;/p&gt;

&lt;p&gt;I’m breaking every. single. rule. of. writing. (At least, according to what I was taught in school.)&lt;/p&gt;

&lt;p&gt;But only the person who bothered reading this far sees this, and you’re probably not annoyed, huh?&lt;/p&gt;

&lt;h3 id=&quot;further-reading&quot;&gt;Further reading:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Ramit Sethi, 
&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/ramits-definitive-guide-to-building-your-network-with-scripts/?utm_referrer=https%3A%2F%2Fwww.google.es%2F&quot;&gt;Natural Networking&lt;/a&gt; article&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://fourhourworkweek.com/2014/10/09/ramit-sethi-on-persuasion-and-turning-a-blog-into-a-multi-million-dollar-business/&quot;&gt;Tim Ferriss/Ramit Sethi podcast&lt;/a&gt;. (The last 20 minutes of the podcast they talk about email etiquette.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://unlessiheardifferently.com/&quot;&gt;Unless I hear differently&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PS I’m aware that I broke many of my own rules in this very write-up. :( &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Why schedule something that doesn&apos;t exist?</title>
   <link href="https://josh.works/2016/05/05/3da2b566-310c-49c9-83dc-c000d7372a85/"/>
   <updated>2016-05-05T00:00:00+00:00</updated>
   <id>https://josh.works/2016/05/05/3da2b566-310c-49c9-83dc-c000d7372a85</id>
   <content type="html">&lt;p&gt;The first thing I did when making this post is I set it to be published tomorrow.&lt;/p&gt;

&lt;p&gt;Then, I left the room for a bit. I didn’t have anything to say. Or, I didn’t think I did.&lt;/p&gt;

&lt;p&gt;Yet, all over my computer, and in various list trackers and note-taking apps, I’ve got dozens of ideas to write about stashed away. I’ve got 25 potential posts in various states of done-ness.&lt;/p&gt;

&lt;p&gt;All these words, with little pressure to write, but endless reason to refine a little longer.&lt;/p&gt;

&lt;p&gt;In other words, a perfect recipe for procrastination.&lt;/p&gt;

&lt;p&gt;I miss the habit of the mind of writing. Once I’ve “cleared the deck” of past things I 
have written, I’ve got to come up with new things to write. Which means I need to be cognizant of ideas that pass through my head, and I need to flesh them out to something that can be expressed.&lt;/p&gt;

&lt;p&gt;Heck, I don’t even need to just 
notice ideas, I need to 
have ideas, and then execute on them.&lt;/p&gt;

&lt;p&gt;So, here we are, a little after setting this post to be published, with nothing to say.&lt;/p&gt;

&lt;p&gt;To my pleasant surprise, it seems I may have said something.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Everything I Do and Think I&apos;ve Read in a Book (or, exploring the relationship between books and money)</title>
   <link href="https://josh.works/everything-i-do-and-think-ive-read-in-a-book"/>
   <updated>2016-03-31T00:00:00+00:00</updated>
   <id>https://josh.works/everything-i-do-and-think-ive-read-in-a-book-or-exploring-the-relationship-between-books-and-money</id>
   <content type="html">&lt;p&gt;Here’s yet another big post on money and income and saving and reading. I tried to write everything on my mind in one massive letter, so I could write a really detailed answer once, rather than a less-useful but less-thoughtful email that I can never reuse.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Hey there,&lt;/p&gt;

&lt;p&gt;I’m enjoying our slowly-evolving conversation-by-text. Since we’re many time zones apart, and I like to think and digest between texts, it’s been a slow conversation.&lt;/p&gt;

&lt;p&gt;We’ve “uncorked” two topics so far:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Am I living on 50% of my income, per my stated goal last year?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;“I read really slow” which I repackaged as “what’s the ‘break-even point’ on reading to justify prioritizing it above other items in my life.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 50% of my income thing is a whole long thought on it’s own, but I’ll take a quick stab.&lt;/p&gt;

&lt;h2 id=&quot;am-i-josh-living-on-50-of-my-income&quot;&gt;Am I (Josh) living on 50% of my income?&lt;/h2&gt;

&lt;p&gt;No. For two reasons.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I don’t have
my income.
We have
our income.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It’s hard to track that exact percentage, so I don’t know
what percentage we’re living on. I think it’s about 65% of our income.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;my-income-doesnt-exist&quot;&gt;“My income” doesn’t exist&lt;/h3&gt;

&lt;p&gt;Kristi and I have 100% combined finances
, so it’sour* money. Not my money. For a few months last year Kristi was not working, and at no point did the thought pass through my head that she was not pulling her weight.&lt;/p&gt;

&lt;p&gt;*For our sanity, we both have “fun money” budgets of about $100/month. We can spend it however we want, but it’s to remove any guilt or justification around small purchases. I want to buy {frivolous thing}? Great. I’ve got fun money. Kristi wants to withdraw five $20 bills and light them on fire? No problem. It’s her fun money.&lt;/p&gt;

&lt;p&gt;It started as $50/month, and we’ve bumped it up a bit over the last two years.&lt;/p&gt;

&lt;p&gt;The tool I use to track all of this is called “
&lt;a href=&quot;http://www.youneedabudget.com/learn&quot;&gt;You Need A Budget&lt;/a&gt;”, and is worth every penny.&lt;/p&gt;

&lt;h3 id=&quot;i-dont-know-the-exact-percentage-that-were-living-on&quot;&gt;I don’t know the exact percentage that we’re living on&lt;/h3&gt;

&lt;p&gt;I’ve got 30% of my paycheck going to retirement funds, and have a 4% match from my employer, so before a paycheck lands in our checking account, 34% of that money has gone to savings. I earn about 2/3s of our household income, so that accounts for the first 17% household savings rate.&lt;/p&gt;

&lt;p&gt;Beyond that, we’ve been putting money aside in our checking account, with the plan of investing it. The reason we have a lump sum of money sitting there is because of
friction. I’ve not set up an automatic investment strategy yet with Vanguard, and it’s a pain in the butt to do, so I’ve just not done that. This is bad, and writing these words makes me want to fix that.&lt;/p&gt;

&lt;p&gt;What I do know, doing back of the envelope calculations, once you throw in all income/expenses and close one eye and squint the other, I think we’re saving ~30% of our income every month. Maybe more&lt;/p&gt;

&lt;p&gt;I still want to get to 50% saved, at least a few months this year.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Cool, so you save a lot of money. What’s that have to do with reading?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;the-relationship-between-money-and-reading&quot;&gt;The relationship between money and reading&lt;/h2&gt;

&lt;p&gt;Just about everything I think in the world I’ve gained from a book.
I don’t have original ideas. At best I might combine an idea about one thing with a new topic, and poof, it seems new. (To me, a coworker, a friend, et.) But it’s really not new. It’s the same old idea applied to a new thing.&lt;/p&gt;

&lt;p&gt;Books are where you get the ideas to apply to new things.&lt;/p&gt;

&lt;p&gt;The two big things that have helped us save a lot of money is “earn more” and “spend less”.&lt;/p&gt;

&lt;p&gt;I just spent a long time googling around for a good list of reasons to prioritize reading, and couldn’t find any lists that I really liked.&lt;/p&gt;

&lt;p&gt;I do not like the lists because the lists were all about reading books. I don’t read books because I like to read, though I do enjoy it.
I read books because it’s a small investment in my life. Reading is the quickest, most effective way to grow my knowledge, and who I am as a person.&lt;/p&gt;

&lt;p&gt;Every book, fiction or non-fiction, is a tiny little addition to who I am as a person. Over time, those additions add up. Some books contribute more than others.&lt;/p&gt;

&lt;p&gt;Reading feels like a delightful obligation I have to myself, my family, and those around me. Every bit of knowledge I glean or idea I have from a book can benefit me and Kristi, directly.&lt;/p&gt;

&lt;p&gt;Here’s a list of topics I’ve read about in the last year or so:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Marriage&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Relationships (with my wife, with God, with others)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Finances&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Physical fitness&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Happiness&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Solitude&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Mental fortitude/independence/self-control&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Lots and lots of fiction. (I love sic-fi and fantasy, but read plenty of other fiction too)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Economics&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Habit building/morning routines&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Thankfulness&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Money (again)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Autobiographies of accomplished people (the
&lt;a href=&quot;http://www.amazon.com/gp/product/B000FBFMHU/ref=x_gr_w_bb?ie=UTF8&amp;amp;tag=x_gr_w_bb-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B000FBFMHU&amp;amp;SubscriptionId=1MGPYB6YW3HWK55XCGG2&quot;&gt;two&lt;/a&gt;
&lt;a href=&quot;http://www.amazon.com/gp/product/0316037702/ref=x_gr_w_bb?ie=UTF8&amp;amp;tag=x_gr_w_bb-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0316037702&amp;amp;SubscriptionId=1MGPYB6YW3HWK55XCGG2&quot;&gt;best&lt;/a&gt; autobiographies I’ve read were written by felons-turned-consultants)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Relationship building (social skills, ways to add value, etc.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How to build an audience&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How to set healthy boundaries in your life&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How to identify and pursue the “essentials”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How to roughhouse with kids&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How to grow your career by doing better and better work&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Happiness (again)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How to become an authority on a topic&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How to charge more as a freelancer&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How the food we eat impacts the world around us&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;More books about money&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;etc.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I said a moment ago that reading feels like a delightful obligation? Why did I say
obligation? Easy. If you boiled the themes of the above list down to just the basics, you could say that these books cover:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;ways I relate to others&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;ways I relate to myself&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Ways I can deliver the most value possible for anyone who hires me, and in return can ask for a larger and larger piece of compensation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Ways I can manage my resources (time, money)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these themes are so important that anyone alive today would be well-justified to study these topics to learn more about them. By reading, you do just that.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I get it. Reading is cool. You’ve STILL not tied this back to making phat stacks of cash&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Lets imagine Joe makes $40,000/year. Lets imagine that Joe gets a raise tomorrow and doubles his annual income. Good for him! What does he do now?&lt;/p&gt;

&lt;p&gt;If Joe is average, his lifestyle inflates. He was living on $40k, but in six months, he’ll be living on that full $80k. If he loses his job and has to go back to $40k/year, he’ll quickly rack up big debt, because he’s used to spending more.&lt;/p&gt;

&lt;p&gt;On the other hand, if Joe makes $40k, but lives as if he makes $35k, and gets a raise to $80k,
and does not increase his spending, he can start putting away $45k a year in the bank. Whoa.&lt;/p&gt;

&lt;p&gt;Now, there’s three things going on with this story:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Joe starts earning more money&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Joe keeps his life style from in flaring&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Joe saves the extra money&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these three topics is the subject of many books. Sometimes one book touches on all three, but usually not.&lt;/p&gt;

&lt;p&gt;If “make more money”, “don’t spend it all”, and “save the difference” is an appealing plan, the only option is to read. Online articles are not sufficient, though they are a great place to start.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Blah blah blah, books books books. Fine, I’ll read one. Can you make some recommendations?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sure. We’ll start high level and go down from there:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Will-Teach-You-Be-Rich/dp/0761147489/ref=sr_1_1?&quot;&gt;I Will Teach You To Be Rich&lt;/a&gt; Super sketchy title, but at the end, you’ll angrily say “How has no one told me this before?” before overhauling your financial life.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Slight-Edge-Turning-Disciplines-Happiness/dp/1626340463/ref=sr_1_1?ie=UTF8&amp;amp;qid=1459404389&amp;amp;sr=8-1&amp;amp;keywords=the+slight+edge&quot;&gt;The Slight Edge&lt;/a&gt; (about the long-term impact that trivial daily decisions can have. I.E. things that are
easy to do, but just as easy not to do.) It’s not specifically about money, but offers a very valuable framework for that kind of decision-making. Unfortunately, it does come across as self-helpy quite a bit, talking about how “readers of this book have changed their lives”. I don’t like that kind of stuff, but the content is quite good.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Your-Money-Life-Transforming-Relationship/dp/0143115766/ref=sr_1_1?ie=UTF8&amp;amp;qid=1459404423&amp;amp;sr=8-1&amp;amp;keywords=your+money+or+your+life&quot;&gt;Your Money or Your Life&lt;/a&gt; This book is sort of the bible of the “financial independence” crowd, and explains how it’s possible to become financially independent without making millions. This gets into the “why”
and the “how” of “make more money, avoid lifestyle inflation, save the rest.”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Fearless-Salary-Negotiation-step---step/dp/0692568689/ref=sr_1_1?ie=UTF8&amp;amp;qid=1459404460&amp;amp;sr=8-1&amp;amp;keywords=fearless+salary+negotiation&quot;&gt;Fearless Salary Negotiation&lt;/a&gt; Self-explanatory title. This is the “how to make more money” step in a very practical way.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Millionaire-Next-Door-Surprising-Americas/dp/1589795474/ref=sr_1_1?ie=UTF8&amp;amp;qid=1459404512&amp;amp;sr=8-1&amp;amp;keywords=the+millionaire+next+door&quot;&gt;The Millionaire Next Door&lt;/a&gt; A encouraging reality check - most millionaires in America don’t look like millionaires. They drive used vehicles, they live modest lifestyles. This is exactly
how they have become millionaires, and nothing changes when they cross that seven-figure line. Of course, a million dollars in 1980 is worth $2.8MM today (
&lt;a href=&quot;http://www.bls.gov/data/inflation_calculator.htm&quot;&gt;Bureau of Labor and Statistics&lt;/a&gt;), but it’s still a nice round number to aim for.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s a starting point. I would argue that one could not read these five books and be unchanged by them. If you read ten minutes a day, you will finish, on average, one book a month. This is an excellent pace.&lt;/p&gt;

&lt;p&gt;Pick the most interesting looking title, go order it from Amazon. (And, none of these are affiliate links. I don’t do that, never will)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;/thoughts-on-money-from-2013&quot;&gt;Thoughts On Money from 2013&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;/on-money-again&quot;&gt;On Money Again&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>About working remotely at Litmus with Pajamas.io</title>
   <link href="https://josh.works/my-interview-with-pajamasio"/>
   <updated>2016-03-16T00:00:00+00:00</updated>
   <id>https://josh.works/my-interview-with-pajamasio</id>
   <content type="html">&lt;p&gt;&lt;em&gt;A while back, I wrote a long interview for
&lt;a href=&quot;http://pajamas.io/josh-thompson-litmus/&quot;&gt;Pajamas.io&lt;/a&gt;, a publication around remote work. I’ve pasted the entire article here below.&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;When Josh Thompson wanted to move out to rural Colorado with his family to be closer to the mountains he loves to climb, he knew finding a company that allowed him to work remotely would best suit his desired lifestyle. Luckily, Thompson found
&lt;a href=&quot;https://litmus.com/&quot;&gt;Litmus&lt;/a&gt;, a Cambridge, MA-based email marketing tools company that operates at least 50% distributed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thompson talks about the advantages of remote work for Litmus, how the company keeps everyone in sync, and why remote work works so well for him in the interview below.&lt;/em&gt;&lt;/p&gt;

&lt;h4 id=&quot;what-does-litmus-do-and-what-is-your-role-there&quot;&gt;What does Litmus do and what is your role there?&lt;/h4&gt;

&lt;p&gt;Litmus is a software company and we build tools to help our customers build, test, and track emails so our that person can spend less time building emails (it’s a surprisingly difficult thing to do well) and build better, more effective emails and campaigns. Our platform and analytics are used (via API) by notable companies like MailChimp, Campaign Monitor, Return Path, and many more.&lt;/p&gt;

&lt;p&gt;I’m on the customer success team, so I handle inbound sales for our API, and handle all the renewals related to our annual accounts. Stuff moves fast at Litmus, so my job has (and will continue to) evolve, but that’s the simplest definition.&lt;/p&gt;

&lt;h4 id=&quot;how-many-people-are-at-the-company-now-and-how-spread-out-are-you&quot;&gt;How many people are at the company now and how spread out are you?&lt;/h4&gt;

&lt;p&gt;About 42. Maybe 44? We hired four people in the last week, I think. &lt;a href=&quot;https://litmus.com/careers&quot;&gt;And we’re still hiring&lt;/a&gt; - ping me if you’re interested in applying. We’re always on the hunt for great people, even if there is not currently an open role. Oh, and we’re a
&lt;a href=&quot;https://litmus.com/blog/were-a-2014-best-places-to-work-winner&quot;&gt;2014 Best Place to Work winner&lt;/a&gt;. ;)&lt;/p&gt;

&lt;p&gt;Most of the remote employees are spread across the US, with another group spread across the UK, and individuals also in Canada, Ecuador, and Pakistan (one of our designers - he’s top notch).&lt;/p&gt;

&lt;h4 id=&quot;what-initially-drew-you-to-remote-work&quot;&gt;What initially drew you to remote work?&lt;/h4&gt;

&lt;p&gt;Location independence. I started looking while living inside the DC beltway with an hour commute each way. I wanted to move to Colorado, and knew that remote work was the best way to make that happen. So I started looking for any and all remote job opportunities, and am thrilled to have found Litmus.&lt;/p&gt;

&lt;h4 id=&quot;how-does-litmus-keep-the-50-of-the-company-thats-remote-feeling-connected&quot;&gt;How does Litmus keep the ~50% of the company that’s remote feeling connected?&lt;/h4&gt;

&lt;p&gt;Many things, but here are a few of the big ones:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;All company communication is in &lt;a href=&quot;https://slack.com/&quot;&gt;Slack&lt;/a&gt;, &lt;a href=&quot;https://basecamp.com/&quot;&gt;Basecamp&lt;/a&gt;, &lt;a href=&quot;https://trello.com/&quot;&gt;Trello&lt;/a&gt;, &lt;a href=&quot;http://bluejeans.com/&quot;&gt;Bluejeans&lt;/a&gt;, etc. Even the Boston office is often mostly empty, because so many staff work from home, so the default communication style assumes everyone is remote.&lt;/li&gt;
  &lt;li&gt;At least twice-a-year company meet-ups. We host an annual “Email Design Conference” in August, and an annual company meetup/retreat in March. Occasional smaller get-togethers sprinkled in, and I usually see at least a few people that I work with every three months.&lt;/li&gt;
  &lt;li&gt;Big company events often take place in giant video calls. Every potential hire does a “meet the team” call, where we bring them into the Boston office for a day (even if they’re flying in from quite far away) and then the entire company can jump on a video call with them. Our twice-a-month company meetings usually take place with everyone in front of their computer, even for the folks in the Boston office.&lt;/li&gt;
  &lt;li&gt;The company was founded with remote work in it’s blood. Two of the three cofounders moved from London to Boston ten years ago to grow the business, so before they’d hired even two people, half the company was remote.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;the-office-in-cambridge-ma-sounds-like-an-awesome-place--catered-lunch-and-free-snacks-weekly-happy-hour-regular-parties-and-outings-is-there-anything-that-litmus-does-to-make-the-remote-members-of-the-team-feel-more-included-how-do-you-avoid-creating-a-two-tiered-culture-on-the-team-where-remote-folks-feel-separate-from-their-in-office-colleagues&quot;&gt;The office in Cambridge, MA sounds like an awesome place – catered lunch and free snacks, weekly happy hour, regular parties and outings, is there anything that Litmus does to make the remote members of the team feel more included? How do you avoid creating a “two-tiered” culture on the team where remote folks feel separate from their in-office colleagues?&lt;/h4&gt;

&lt;p&gt;The office is pretty sweet, but even the staff in Boston often work from home. As you can imagine, traffic (even in good weather) is terrible, so there is a blanket “work from home whenever you want, but try to make it in every other thursday for company meetings if you can” policy. I.e., even us remote staff are usually in the exact same bucket as the non-remote staff.&lt;/p&gt;

&lt;p&gt;Also, we don’t have an open-office floor plan. Most employees have their own office, or share it with one other person. This further ingrains the text-based communication.&lt;/p&gt;

&lt;p&gt;Litmus goes all-out to make sure the remote staff have the same tools as in-office. Every employee gets top-of-line hardware, external monitors, and a good desk chair (if they don’t already have one.)&lt;/p&gt;

&lt;p&gt;I’ll admit, sometimes I wish I could participate in some of the parties they throw in the office, but after I take my five-second commute to the other side of my living room, and grab my gear to head out rock climbing in Colorado, I don’t miss being in Boston too bad.&lt;/p&gt;

&lt;h4 id=&quot;how-would-describe-the-company-culture-at-litmus-is-it-harder-to-build-cohesive-culture-when-half-the-company-is-spread-out-and-the-other-half-is-in-one-place&quot;&gt;How would describe the company culture at Litmus? Is it harder to build cohesive culture when half the company is spread out and the other half is in one place?&lt;/h4&gt;

&lt;p&gt;Culture is extremely inclusive. We’re growing quickly, so those questions will inevitably stay top of mind, but again, because the remote work policy is so ingrained even in the home office, we are all functionally working remotely. (Some days there are only two or three people in the office. Last winter, there would be weeks where NO one made it into the office!)&lt;/p&gt;

&lt;p&gt;As far as cohesive culture, I think the average age at Litmus skews a bit older than what may be assumed for a software company (plenty of our employees have kids) so there’s not much of a “go-out-for-drinks-after-work” attitude, anyway. (Except when the whole company is together in Boston for our conference. That week has much more drinking than normal.)&lt;/p&gt;

&lt;p&gt;We all live balanced lives, so when we’re at work we work hard to get shit done, but then we go home and do other stuff. It’s very professional, and very friendly.&lt;/p&gt;

&lt;h4 id=&quot;do-you-ever-feel-like-you-lose-something-because-youre-not-working-in-the-office-every-day&quot;&gt;Do you ever feel like you lose something because you’re not working in the office every day?&lt;/h4&gt;

&lt;p&gt;I’ve lost my commute, and I do really enjoy the casual conversation that happens around lunch or when walking around the office, but I don’t think I’m missing anything irreplaceable, or that cannot be had in a remote work situation.&lt;/p&gt;

&lt;h4 id=&quot;personally-what-are-the-biggest-challenges-you-face-working-remotely-and-how-do-you-overcome-them&quot;&gt;Personally, what are the biggest challenges you face working remotely and how do you overcome them?&lt;/h4&gt;

&lt;p&gt;There are certainly challenges.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I thrive off of external affirmation, and I love being able to show how hard I work. In an office you can be the first one in and last one out, but, besides not being healthy, that doesn’t actually correlate with getting work done. So, because I can’t telegraph how hard I work, I have to show how much I get done, but sometimes (often!) I don’t feel like I’ve gotten as much done as I had hoped. Projects grow in complexity, or I’ll have spent half the day on the phone. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, I’ve had to set up fairly regular official performance evaluations with my manager, just so I convince myself that I’m actually doing good work. So far, all those reviews have been extremely positive, but I always have a sneaking suspicion that I’m failing somehow. This is specific to me and my disposition, so everyone reading this is either nodding along in understanding, or cannot understand this at all.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I don’t have external signals/environments that signify “work time.” I have to rigorously control my work environment so I can get in the zone and work well. I use a mix of writing down my projects for the day (and the things I’ve accomplished) to keep me on task, using a Pomodoro app to work in chunks, and sometimes
&lt;a href=&quot;http://selfcontrolapp.com/&quot;&gt;SelfControl&lt;/a&gt; to kill Reddit/Hacker News/Twitter to help avoid those distractions.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I don’t have those signals that signify “not working.” I don’t have a commute home to think about work or other things. I just type in Slack “heading out, have a good night.” and… work is done. Sometimes I’ll take a walk, but sometimes I just try to jump right into prepping dinner or doing non-work stuff. If work was stressful, this stress carries over to home. My wife is really good at identifying if I’m a little off and helping me decompress.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;on-the-other-hand-what-are-the-biggest-benefits-to-working-remotely&quot;&gt;On the other hand, what are the biggest benefits to working remotely?&lt;/h4&gt;

&lt;p&gt;Phew. So many.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I don’t commute anymore. There’s two hours a day back. (And a lot of gas and money in maintenance.) I was stuck in traffic earlier today (on a weekend) and was so frustrated by it. I don’t ever have to deal with rush hour.&lt;/li&gt;
  &lt;li&gt;My wife and I now own only one car. That saves a lot of money.&lt;/li&gt;
  &lt;li&gt;We moved to Colorado. I loved every minute in Colorado.&lt;/li&gt;
  &lt;li&gt;Our landlord wanted to move into our apartment, so we had to leave, and my wife stopped teaching, so we headed to Buenos Aires for two months, then have been traveling around the east coast, following the climbing, and spending time with dear friends. &lt;/li&gt;
  &lt;li&gt;We spent three weeks working in rural West Virginia, and I’d enjoy world-class climbing after work and on the weekends. I’m about to drive to Kentucky for more world-class climbing for three weeks. I used to drive between six and eight hours on the weekend to do this. Now I just drive 3 minutes to the rock. Rent is cheap out in the boonies, too.&lt;/li&gt;
  &lt;li&gt;My work is made more effective. Without all the office politics and micromanaging that infects most offices, I have tons of responsibility and freedom to do the best job I know how to do, and to experiment
a lot with how to make things even better. This speaks as much of working remotely as it does of the specific culture of the leadership team at Litmus, but they go hand-in-hand. If you cannot trust your staff to work remotely, you won’t trust them in an office either. If you can trust them to work remotely, you’ll trust them to do good work without you breathing down their neck.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;what-do-you-think-is-the-most-important-thing-a-distributed-team-can-do-to-ensure-successful-collaboration&quot;&gt;What do you think is the most important thing a distributed team can do to ensure successful collaboration?&lt;/h4&gt;

&lt;p&gt;I love meeting the team in person (or, when we add someone to the team, I’ll catch them on a video call for 20 or 30 mins just to talk and get to know each other). Knowing the personality and lives behind that little profile picture on Slack makes the communication so much richer. We all have inside jokes, memes, and a rich history of communication that makes the more context-free text-based communication work.&lt;/p&gt;

&lt;p&gt;So, time in person is even more important when you work remotely. I think. But I’m not wise enough to know The One Thing (TM) that matters.&lt;/p&gt;

&lt;h4 id=&quot;what-are-some-of-the-benchmarks-litmus-uses-to-make-sure-the-team-is-in-a-good-place-both-mentally-and-operationally&quot;&gt;What are some of the benchmarks Litmus uses to make sure the team is in a good place, both mentally and operationally?&lt;/h4&gt;

&lt;p&gt;I meet weekly with my manager to make sure I’ve got all the tools and resources I need for whatever projects I’m working on.&lt;/p&gt;

&lt;p&gt;We have flexible work hours, and generous paid time off policies. (If we went with “unlimited” vacation time, no one would take enough time off, so instead we get about six weeks paid vacation off a year, and it doesn’t roll over, so you have to use it.)&lt;/p&gt;

&lt;p&gt;Every new employee gets new top-of-line hardware, monitor, peripherals, and anything else we might need. We all have company cards that we’re encouraged to use as needed. I’m not hampered by a lack of tools or equipment or rest at all.&lt;/p&gt;

&lt;h4 id=&quot;are-there-any-specific-qualities-that-make-someone-more-successful-at-working-remotely&quot;&gt;Are there any specific qualities that make someone more successful at working remotely?&lt;/h4&gt;

&lt;p&gt;The same qualities that make someone successful in an office apply to working remotely. You’ll need to be a “self-starter,” and have a lot of initiative. I think a good proxy for both of these traits is side-projects, or side-hustles. If two people are equally qualified for a role, but one of them has a good side project/hobby that they’re passionate about, they will get the job. The primary reason I got my current job was because I had side projects (aka “public proof”) that demonstrated my drive and initiative.&lt;/p&gt;

&lt;p&gt;I don’t have someone breathing down my neck to get work done, so for better or worse, I alone am responsible for the work that I do.&lt;/p&gt;

&lt;p&gt;PS: I know it can be discouraging to read something like that, so if you just said to yourself “well, of course its easy to get a job with a cool side project” here are two “words of encouragement:”&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Your side projects do not need to be beautiful and graceful. Some of my side projects are ugly as sin:
&lt;a href=&quot;http://joshworks.site44.com/&quot;&gt;http://joshworks.site44.com/&lt;/a&gt;, others less so: 
&lt;a href=&quot;http://climbingweekly.co/&quot;&gt;http://climbingweekly.co/&lt;/a&gt;, 
&lt;a href=&quot;http://josh.works/&quot;&gt;http://josh.works/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You don’t have to have a side project to have a side project. Just say “My hobby is finding a hobby” and start documenting your search for something worthy of your time and energy. For example, mine could be: &lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Josh’s Quest for a Side Project: How I found something interesting to work on&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Or&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Josh’s Epic Quest&lt;/em&gt; 
See &lt;a href=&quot;http://www.nerdfitness.com/epic-quest/&quot;&gt;Steve’s Epic Quest&lt;/a&gt; or Jia Jiang’s &lt;a href=&quot;http://fearbuster.com/100-days-of-rejection-therapy/&quot;&gt;100 Days of Rejection&lt;/a&gt; for inspiration.&lt;/p&gt;

&lt;h4 id=&quot;describe-your-personal-work-environment&quot;&gt;Describe your personal work environment.&lt;/h4&gt;

&lt;p&gt;In flux lately. For most of my time at Litmus I worked from a standing desk in my living room. I had an Apple Monitor, laptop stand, comfortable chair, etc. My wife and I have been “nomadding” these last few months, living out of our car, a few weeks at a time in a different place. So currently I’m down to just my laptop, no mouse, no external display, etc. I was on an ultra-minimalist kick for a while, but I think I’m ready to reintroduce a mouse and external keyboard into my life.&lt;/p&gt;

&lt;p&gt;That’s the physical environment. Anytime I open my computer, I feel very at home. I have my machine quite configured to my liking, and I work well on it.&lt;/p&gt;

&lt;p&gt;Here’s some key tools that make MY machine feel like home, and allow me to work in really any environment.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://supportops.co/starting-with-text-expander/&quot;&gt;TextExpander&lt;/a&gt; (Stop typing the same thing over and over. I’ve used it over 30,000 times in the last 18 months.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.maketecheasier.com/alfred-workflows-mac/&quot;&gt;Alfred&lt;/a&gt; (Workflows are addicting. My dashboard tells my I use it on average 50 times a day!)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://chrisltd.com/blog/2015/03/caps-lock-to-backspace-mac/&quot;&gt;Seil&lt;/a&gt; (To remap CAPS LOCK KEY to delete.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://justgetflux.com/&quot;&gt;Flux&lt;/a&gt; (Save your eyes when in a dark room/late at night/early in AM.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://lifehacker.com/pomodoro-one-is-a-free-lightweight-pomodoro-timer-for-1626504270&quot;&gt;PomodoroOne&lt;/a&gt; (Do more in bursts.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://toggl.com/&quot;&gt;Toggl&lt;/a&gt; (Figure out how you spend your day.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.rescuetime.com/&quot;&gt;RescueTime&lt;/a&gt; (Track how much time you spend on “productive” parts of the web vs. unproductive.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://agilebits.com/onepassword&quot;&gt;1Password&lt;/a&gt; (Save time, be more secure online.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.macbartender.com/&quot;&gt;Bartender&lt;/a&gt; (Have a clean menu bar.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.getcloudapp.com/&quot;&gt;CloudApp&lt;/a&gt; (Share stuff easily.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://evernote.com/skitch/&quot;&gt;Skitch&lt;/a&gt; (Take and annotate screenshots.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.privateinternetaccess.com/&quot;&gt;PIA&lt;/a&gt; (VPN, quite cheap for a year. Make you/your company safe when using public wifi.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;how-do-you-manage-worklife-balance-when-working-from-your-home&quot;&gt;How do you manage work/life balance when working from your home?&lt;/h4&gt;

&lt;p&gt;Sometimes I manage it poorly. It’s easy to spend all day working, but when you do that, your efficiency goes way down. It’s hard for me to sometimes keep work to JUST those “normal” work hours, but it’s important for my own health and recovery to do so. My wife is really good at helping me see when I’m working too much.&lt;/p&gt;

&lt;p&gt;I am a very active rock climber, and usually climbing helps me balance my work. If I have told a friend I’ll meet him at a certain time at a certain place, I have a hard stop on my work, so it forces me to be extra efficient so I can stop at the appropriate time.&lt;/p&gt;

&lt;h4 id=&quot;how-do-you-keep-distractions-to-a-minimum-how-do-you-personally-measure-efficiency&quot;&gt;How do you keep distractions to a minimum? How do you personally measure efficiency?&lt;/h4&gt;

&lt;p&gt;I do a few things to stay focused. The easiest is to work in blocks. I love the Pomodoro technique, and try to fit my work into those 25 mins work/5 mins rest cycles. Invariably, something “breaks” the cycle, but a lot of work gets done in a few of those.&lt;/p&gt;

&lt;p&gt;If I’m finding myself procrastinating, that’s usually an indicator that I need to break the work into smaller pieces. Large tasks are overwhelming, but less so when broken into small pieces.&lt;/p&gt;

&lt;p&gt;I usually start my day with a notebook and a few minutes of thinking about what I want to accomplish for the day. I’ll then gear the pomodoros towards accomplishing those goals.&lt;/p&gt;

&lt;h4 id=&quot;what-are-some-of-the-tools-you-couldnt-live-without-as-a-remote-company&quot;&gt;What are some of the tools you couldn’t live without as a remote company?&lt;/h4&gt;

&lt;p&gt;Slack. Bluejeans/some sort of video calling tool. Basecamp, Trello, &lt;a href=&quot;https://www.google.com/&quot;&gt;Google&lt;/a&gt;, &lt;a href=&quot;https://github.com/&quot;&gt;Github&lt;/a&gt;. Two factor authentication.&lt;/p&gt;

&lt;h4 id=&quot;what-advice-would-you-give-to-a-company-heading-down-the-remote-working-path&quot;&gt;What advice would you give to a company heading down the remote working path?&lt;/h4&gt;

&lt;p&gt;If you’re thinking about “testing the waters”, you need to give it a fair shake. “Test” for a long time, and with all your employees. At least a month or two to iron out kinks, and plan on spending money.&lt;/p&gt;

&lt;p&gt;When Litmus officially tested remote work for even the in-office folks, the company had to buy laptops for some employees, and a bunch of external monitors. We use the Apple Monitor, so that was probably at least $10-15k invested in the “experiment.”&lt;/p&gt;

&lt;p&gt;The experiment worked out great, and this last winter when Boston (home office) was crushed by 120 inches of snow, work continued uninterrupted, even though roads and public transportation was almost completely unusable.&lt;/p&gt;

&lt;p&gt;That $10-15k equipment expense resulted in three months of the entire company moving at full efficiency, rather than grinding to a halt in a really busy time of the year. Maybe the best investment we ever made!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>On Minimalism</title>
   <link href="https://josh.works/home/misc/2016/03/14/on-minimalism/"/>
   <updated>2016-03-14T00:00:00+00:00</updated>
   <id>https://josh.works/home/misc/2016/03/14/on-minimalism</id>
   <content type="html">&lt;p&gt;I reluctantly call myself a minimalist. I’d prefer to call myself an “enoughalist”.&lt;/p&gt;

&lt;p&gt;This reluctance is because I think the label brings in a bunch of connotations that I don’t like.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_56e68f7e37013b50c08fc161_1457950648743__img.jpg_&quot; alt=&quot;Our apartment never looked like this. Source: home-designing.com&quot; /&gt; Our apartment never looked like this. Source: home-designing.com&lt;/p&gt;

&lt;h2 id=&quot;what-is-minimalism&quot;&gt;What is Minimalism?&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;a removal or decluttering of one’s lifestyle in order to focus on that which is most essential&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is about reducing some things, like consumption, time at work, and possessions and increasing other things, like self-sufficiency, wealth, and {insert thing you want here}.&lt;/p&gt;

&lt;p&gt;With the goal of… what?&lt;/p&gt;

&lt;p&gt;Lets say you’ve got lots of things you 
don’t want in your life, and not a lot of things you 
do want. This is a 
bad place. So, you adapt changes that reduce the things you don’t want, and allow you to add some things you do want.&lt;/p&gt;

&lt;p&gt;This is a 
better place.&lt;/p&gt;

&lt;p&gt;There may still be a gap. If you’ve reduced things and added the things you wanted to add, but still feel discontent, you’re in a spot that many others find themselves. This is a 
good place, because you have to own your discontentment. You can’t play the “what if” game and say “if my boss wasn’t so bad, and I had a little more money, and a little more time, I’d be happy.”&lt;/p&gt;

&lt;h2 id=&quot;minimalism-is-a-tool-not-the-goal&quot;&gt;Minimalism is a Tool, not the Goal&lt;/h2&gt;

&lt;p&gt;Some internet-people make minimalism the goal of their lives. I respect them, but don’t want to emulate them. People like 
&lt;a href=&quot;http://tynan.com/&quot;&gt;Tynan&lt;/a&gt;, 
&lt;a href=&quot;http://www.theminimalists.com/archives/#popular&quot;&gt;The Minimalists&lt;/a&gt;, and others.&lt;/p&gt;

&lt;p&gt;Share good tools and tricks. (This is the premise of 
&lt;a href=&quot;http://lifehacker.com&quot;&gt;Lifehacker&lt;/a&gt;, after all), but don’t forget that the tips and tricks are to move you in the direction of a goal. (Speaking of useful tools, if you’re a Mac user, check out 
&lt;a href=&quot;http://jumpcut.sourceforge.net/&quot;&gt;Jumpcut&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;If minimalism is not the goal, why should anyone pay attention to it, or consider it?&lt;/p&gt;

&lt;p&gt;Clearing out trivialities gives you space to evaluate your own life and decisions. The way you work, relax, spend money each involve a decision. If you don’t make them consciously, you’re probably having them made for you. So, adapt the basic tenants of minimalism (or “enoughism”) and you can regain control of the decision making.&lt;/p&gt;

&lt;h2 id=&quot;whats-the-goal&quot;&gt;What’s the Goal?&lt;/h2&gt;

&lt;p&gt;The good news: here’s nothing in this world that is fully satisfying.&lt;/p&gt;

&lt;p&gt;The bad news: we are slow to believe this.&lt;/p&gt;

&lt;p&gt;Others have said it better:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“Vanity of vanities”, says the Preacher, “vanity of vanities! All is vanity. What does man gain by all the toil at which he toils under the sun?” (Ecclesiastes 1:2-3)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;p&gt;Read more on minimalism here:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://zenhabits.net/about/&quot;&gt;http://zenhabits.net/about/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.theatlantic.com/business/archive/2014/07/living-with-less/374544/&quot;&gt;http://www.theatlantic.com/business/archive/2014/07/living-with-less/374544/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.becomingminimalist.com/&quot;&gt;http://www.becomingminimalist.com/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.theminimalists.com/minimalism/&quot;&gt;http://www.theminimalists.com/minimalism/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.charlesspecht.com/jonathan-edwards-and-his-pursuit-of-minimalism/&quot;&gt;http://www.charlesspecht.com/jonathan-edwards-and-his-pursuit-of-minimalism/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://fourhourworkweek.com/2010/02/25/rolf-potts-vagabonding-travel/&quot;&gt;http://fourhourworkweek.com/2010/02/25/rolf-potts-vagabonding-travel/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Circles of Influence</title>
   <link href="https://josh.works/misc/2016/03/05/circles-of-influence/"/>
   <updated>2016-03-05T00:00:00+00:00</updated>
   <id>https://josh.works/misc/2016/03/05/circles-of-influence</id>
   <content type="html">&lt;p&gt;I was listening to a podcast today, where they said if you have problems knowing what to write about, or you’ve hit a block, write about something that angers you.&lt;/p&gt;

&lt;p&gt;This is easy. I could write about any number of things that we’ve all read in a newspaper, and get good and angry about that. &lt;/p&gt;

&lt;p&gt;But I can’t do anything about it. If there is an event that we read about in a newspaper, it is, by definition, out of my circle of influence.&lt;/p&gt;

&lt;p&gt;My circle of influence is pretty small. I live inside of it, as does my wife. Everyone else can pretty much choose if they want to be influenced by me. &lt;/p&gt;

&lt;p&gt;By reading this, you’re becoming part of my circle of influence. You may choose to not be influenced by me, but you have to make that decision, you have to respond. So I’m influencing you.&lt;/p&gt;

&lt;p&gt;The words on my screen are the extent of my circle of influence. I have thoughts, I jot them down on my computer, and hit publish. And you can then read them. &lt;/p&gt;

&lt;p&gt;So, if you are inside of my circle of influence, how is it even remotely helpful for me to get angry about something and share it with you? That’s wasting both of our time. &lt;/p&gt;

&lt;p&gt;I’d much rather use this opportunity to impart something of value to you.&lt;/p&gt;

&lt;p&gt;So here’s a value-adding article for you: 
&lt;a href=&quot;https://sivers.org/hsu&quot;&gt;https://sivers.org/hsu&lt;/a&gt; (He makes a case that you should aim to be happy, smart, and useful. Not just one or two of those things.)&lt;/p&gt;

&lt;p&gt;-Josh&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>On Money (again)</title>
   <link href="https://josh.works/on-money-again"/>
   <updated>2016-02-18T00:00:00+00:00</updated>
   <id>https://josh.works/on-money-again</id>
   <content type="html">&lt;p&gt;Recently I posted
&lt;a href=&quot;/thoughts-on-money-from-2013&quot;&gt;thoughts about money&lt;/a&gt; I’d written from back in 2013. &lt;/p&gt;

&lt;p&gt;Money is hard to write about, because there are many different ways we can approach it. It’s easy to feel judged when someone does something with their money that I don’t do with mine.&lt;/p&gt;

&lt;p&gt;That all said, there have been some books, articles, and ways of thinking that represent an internally consistent approach to earning and spending money, 
andhave aided me tremendously in my own thinking on money.&lt;/p&gt;

&lt;p&gt;I want to explain this approach, and share these resources. Hopefully they’ll spark some thought, and you can read more deeply as you see fit.&lt;/p&gt;

&lt;h2 id=&quot;money-is-a-function-of-time&quot;&gt;Money is a function of time&lt;/h2&gt;

&lt;p&gt;In a normal “go to work, earn money, and spend it on things” world (which is the world we all live in) money is a concrete representation of time.&lt;/p&gt;

&lt;p&gt;If you get paid $20/hr at work, and you buy a $20 t-shirt, that t-shirt cost you one hour of work. If you earn $40/hr, that t-shirt now costs you 30 minutes of work. &lt;/p&gt;

&lt;p&gt;Its easy to convert between an annual wage and hourly wage. Assuming someone works about 40 hours a week, for 50 weeks a year (two weeks vacation) if you earn $xx,000/year, to get to your hourly wage, remove the “thousands”, and cut the first number in half.&lt;/p&gt;

&lt;p&gt;$30,000/yr &amp;gt; remove thousands &amp;gt; $30 &amp;gt; cut the first number in half &amp;gt; 15. $30,000/yr = $15/hr.&lt;/p&gt;

&lt;p&gt;$100,000/yr = $50/hr&lt;/p&gt;

&lt;p&gt;$24.50/hr = $48,000/yr.&lt;/p&gt;

&lt;p&gt;If you earn $25,000/year, a $8 burrito from Chipotle costs 40 minutes of your time. &lt;/p&gt;

&lt;h3 id=&quot;the-good-news-is-this-math-is-quite-easy-the-bad-news-is-this-method-overstates-your-earnings&quot;&gt;The good news is, this math is quite easy. The bad news is, this method overstates your earnings. &lt;/h3&gt;

&lt;p&gt;Your hourly wage includes not just your income divided by hours that you work - it equals (your income - work related expenses) divided by (hours worked + hours spent preparing for/ recovering from work.)&lt;/p&gt;

&lt;p&gt;So an effective hourly wage of $30/hr (or $60k/year) drops quickly once you take out taxes, monthly gas/metro fare costs, business-casual clothing budget, food purchased while at work, retirement contributions, and more. &lt;/p&gt;

&lt;p&gt;The hours that you spend working are probably more than 40. You have to count your time traveling to and from work, prep time in the mornings, rest time in the evening, and the drinking you do on weekends to recover from the stress of work. Oh, and you don’t work JUST 40 hours, anyway. &lt;/p&gt;

&lt;p&gt;All this works together to drop your effective hourly wage from what’s listed on paper to something lower than that. My first out-of-college job, when I did this math when I had a particularly bad commute, I was earning not much more than minimum wage. Oof. &lt;/p&gt;

&lt;p&gt;It’s miserable math to do, because your current effective hourly wage may be really, really low. The good news is you can quickly improve your effective hourly wage in two ways:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Spend less time doing work-things (less prep in the morning, or leaving every day after 8 hrs instead of 9)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Spend less money on work-things. &lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m paraphrasing
&lt;a href=&quot;http://www.amazon.com/gp/product/B0052MD8VO/ref=dp-kindle-redirect?ie=UTF8&amp;amp;btkr=1&quot;&gt;Your Money or your Life&lt;/a&gt;, which you should read. Here’s a
&lt;a href=&quot;http://www.amazon.com/review/RKC0S5T9HHK36/ref=cm_cr_dp_title?ie=UTF8&amp;amp;ASIN=B0052MD8VO&amp;amp;channel=detail-glance&amp;amp;nodeID=133140011&amp;amp;store=digital-text&quot;&gt;good Amazon review&lt;/a&gt; to whet your appetite. &lt;/p&gt;

&lt;h2 id=&quot;money-is-not-the-goal-options-is-are-the-goal&quot;&gt;Money is not the goal. Options is (are?) the goal.&lt;/h2&gt;

&lt;p&gt;Why spend all this time and effort on money? Doesn’t that make me seem really materialistic, scared, and untrustworthy of my job, God, my family, etc?  &lt;/p&gt;

&lt;p&gt;Off the top of my head, my goal with money is “create margin”. &lt;/p&gt;

&lt;p&gt;What is margin?&lt;/p&gt;

&lt;p&gt;Margin is the space between our load and our limits. It is the amount allowed beyond that which is needed. It is something held in reserve for contingencies or unanticipated situations. Margin is the gap between rest and exhaustion, the space between breathing freely and suffocating.&lt;/p&gt;

&lt;p&gt;-
&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/1576836827/fwis-20&quot;&gt;Richard Swenson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Margin is the thing that allows us to absorb surprises, enjoy rest, and basically do the things that make us happy. &lt;/p&gt;

&lt;h2 id=&quot;you-want-to-be-rich-but-getting-there-is-slow-boring-and-un-sexy&quot;&gt;You want to be rich, but getting there is slow, boring, and un-sexy&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B00CLT31D6/ref=dp-kindle-redirect?ie=UTF8&amp;amp;btkr=1&quot;&gt;The Millionaire Next Door&lt;/a&gt; looks at many, many millionaires in the United States. Guess what? Most of them are indistinguishable from non-millionaires. They drive inexpensive used cars, live in modest houses, and work normal jobs.&lt;/p&gt;

&lt;p&gt;They start by saving a certain percentage of their income, and over time, never save less, and try to save more. Since income generally rises with age, if you’re saving 10% of your income at 25, if you avoid lifestyle inflation, by 35, you could be saving 30% or 40% of your income, without feeling like you’re living like a pauper. &lt;/p&gt;

&lt;p&gt;Lets say you’re earning $40,000/year at 25 years old. 10% of that is $4,000/year saved. Over the next ten years, you get raises to $75,000. If you let yourself spend $52,000 (that’s $1400/month more than you spent at $40k/year-10% savings) you would be saving $23,000/year. This is why avoiding lifestyle inflation is a BIG DEAL!&lt;/p&gt;

&lt;h2 id=&quot;friction-will-dictate-most-of-your-spendingsaving-habits-dont-fight-it-use-it&quot;&gt;Friction will dictate most of your spending/saving habits. Don’t fight it, use it.&lt;/h2&gt;

&lt;p&gt;Money in your wallet wants to get spent, just as food in your refrigerator wants to be eaten. You know the rule “don’t shop for groceries on an empty stomach”? This is because your willpower is affected by your emotional state. &lt;/p&gt;

&lt;p&gt;I’ve got a “rule of thumb” that I follow, both in money and in food. &lt;/p&gt;

&lt;p&gt;Food: If I think I shouldn’t eat an item of food, but it’s easily available to me, I will eat it, and not spend willpower to resist it.&lt;/p&gt;

&lt;p&gt;Money: If I want to buy something impulsively, as long as I’ve budgeted for it, I’ll buy it, and not spend willpower to resist it.&lt;/p&gt;

&lt;p&gt;These rules may look insane, so here’s the background:&lt;/p&gt;

&lt;p&gt;When getting groceries, Kristi and I almost never buy cookies/crackers/processed foods, and we don’t drink soda. There are 21 meals in a week, and in a normal week, 20 of these meals are healthy, filling, and don’t have much sugar. I “fight” for my diet in the grocery store. If I’m at a friends house and they have brownies, I’m loading up, because I know that the vast majority of the food I consume is healthy and good. There is
friction to us eating poorly at home, because
unhealthy food doesn’t exist in our house. If it does, I gladly eat it, and feel no guilt. I follow the path of least resistance, and I’m fine with that.&lt;/p&gt;

&lt;p&gt;Similarly, most of our finances are automated. Every time I get paid, a percentage of that money goes straight to retirement accounts. Every time I get a raise, that percentage goes up. It’s difficult and time consuming to change that percentage, so unless we fell on very hard times financially, I will not ever decrease how much of my income goes to savings. There is friction between me and saving
less money, so I follow the path of least resistance.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B004WL4BW6/ref=dp-kindle-redirect?ie=UTF8&amp;amp;btkr=1&quot;&gt;I Will Teach You To Be Rich&lt;/a&gt; opened my eyes to a whole new world. I read it right after I got married, and it heavily impacted me. (4.5 stars, 761 reviews.) I recommend you give it a read, and start thinking about how to apply that wisdom. &lt;/p&gt;

&lt;p&gt; Friction cuts both ways. I’ve got some pending issues with our finances related to rolling over old retirement accounts that Kristi had in a prior job. I need to roll them into accounts that we manage, and then I need to get those accounts put under Vanguard. This all requires paperwork, and things that seem quite complex to me. So I’ve not done it. Remember - friction. I follow the path of least resistance. &lt;/p&gt;

&lt;p&gt;But, once I get this done and the money in Vanguard, it will sit untouched for many years. And will grow. And this is good. &lt;/p&gt;

&lt;h2 id=&quot;money-is-time-create-margin-learn-to-love-friction-why-does-it-matter&quot;&gt;Money is time, create margin, learn to love friction. Why does it matter?&lt;/h2&gt;

&lt;p&gt;Why does this matter? Why save money? &lt;/p&gt;

&lt;p&gt;Phew. Good questions. Others have said this better than me (I’ll link out to the folks that inspire me below) but here is my perspective:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The difference between your income and your spending is related to how fragile you are to life changes. One who spends 100% of their income as soon as the paycheck clears is in a different spot from someone who has been saving 40% of their income for two years.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Spending less than you earn
 is a rejection of a lot of the unappealing part of our (USA) consumption-driven way of life&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Saving money allows you to be generous to others when the opportunity arises. &lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Money isn’t the point. Manage it well and with responsibility, and you can move on to other, more significant parts of life, like living. &lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The
&lt;a href=&quot;https://en.wikipedia.org/wiki/Hedonic_treadmill&quot;&gt;Hedonic Treadmill&lt;/a&gt; will suck all sense of happiness out of your life. Don’t play that game.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.mrmoneymustache.com/2013/02/22/getting-rich-from-zero-to-hero-in-one-blog-post/&quot;&gt;Mr. Money Moustache&lt;/a&gt;. Endlessly entertaining, a bit contrarian.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.reddit.com/r/financialindependence/&quot;&gt;r/financialindependence&lt;/a&gt;. Lots of smart, motiviated people there will make this seem less crazy.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.reddit.com/r/personalfinance/&quot;&gt;r/personalfinance&lt;/a&gt;. Ditto.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.youneedabudget.com/learn&quot;&gt;You Need A Budget&lt;/a&gt;. This tool is a game changer. I actually
enjoy managing money now. Whoa. &lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This should get you a pretty comprehensive approach to a very non-traditional approach to money.&lt;/p&gt;

&lt;p&gt;Good luck! &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Thoughts on Money from 2013</title>
   <link href="https://josh.works/thoughts-on-money-from-2013"/>
   <updated>2016-01-29T00:00:00+00:00</updated>
   <id>https://josh.works/thoughts-on-money-from-2013</id>
   <content type="html">&lt;p&gt;I was looking through some draft posts I have lying around, and found one from the middle of 2013. That’s 2.5 years ago. Reading over it, I feel satisfaction for a few reasons:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Old Josh (from July 2013) wasn’t a train wreck. As soon as I think about myself in highschool and college, I usually cringe thinking about the way I acted/thought. I don’t feel complete shame thinking about 2013 Josh.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The goals I had in 2013 have pretty much all happened. We didn’t have much knowledge over our finances then, but we do now. (I discovered
&lt;a href=&quot;http://www.youneedabudget.com/learn/guide/learn-to-prioritize&quot;&gt;YNAB&lt;/a&gt;, which completely transformed our relationship with our money)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;This affirms my suspicion that
lots of small steps taken over a long time can make good things happen. &lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve been reading and thinking a lot about money over the last two years. I’ll compile a recommended reading list here soon, but the cool thing is this: I
enjoymanaging our finances. I’m no longer embarrassed or shamed by them. &lt;/p&gt;

&lt;p&gt;And if we got to that place in 2.5 years, I think most people can. Here’s what I wrote then:&lt;/p&gt;

&lt;h2 id=&quot;joshs-thoughts-on-finances&quot;&gt;Josh’s thoughts on finances&lt;/h2&gt;
&lt;p&gt;circa July 2013&lt;/p&gt;

&lt;dl&gt;
  &lt;dt&gt;[&lt;/dt&gt;
  &lt;dt&gt;&lt;strong&gt;2016 Josh notes&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;I’ve included commentary in-line with what I wrote then.  It is all called out like this.]&lt;/dd&gt;
  &lt;dt&gt;I write this July 27th, 2013, and I don’t know when I will publish it.&lt;/dt&gt;
  &lt;dt&gt;&lt;strong&gt;[2016 Josh notes&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;Perhaps in January, 2016]&lt;/dd&gt;
  &lt;dt&gt;Currently, I have no plans of publishing this within six months, but eventually I hope this post meets the internet. Money scares me. Having it is scary, but losing it is even worse. Kristi and I have been married for 13 months, and we have alternated between me being the sole income-earner (on less than $30,000 a year, in one of the most expensive cities in America) to us&lt;/dt&gt;
  &lt;dt&gt;both working (she’s a kindergarten teacher in PG county - not lucrative, but way more money than zero dollars) to&lt;/dt&gt;
  &lt;dt&gt;Kristi being the sole income-earner (I got fired). [&lt;/dt&gt;
  &lt;dt&gt;&lt;strong&gt;2016 Josh notes&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;I could write extensively about being fired, but right now I’ll summarize it as
the best work-thing that has ever happened to me. It was an opportunity for enormous growth.]&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;I was able to get unemployment (through the business, not the government) but it was still stressful. It was almost six months before I got another full-time job, earning about $34,000 a year.)&lt;/p&gt;

&lt;dl&gt;
  &lt;dt&gt;Then, we both were working, and it was great! I could know exactly how much was deposited in our bank account every two weeks. Our lifestyle inflated, and we found ourselves spending more. Or, rather, &lt;/dt&gt;
  &lt;dt&gt;Ifound us spending more. I’m in charge of managing our finances, and sometimes it sucks. [&lt;/dt&gt;
  &lt;dt&gt;&lt;strong&gt;2016 Josh notes&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;It sucked because I did not know how much we spent, and was not able to know if we were generally improving our financial position, treading water, or losing ground.]&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;During the summer, Kristi’s not receiving a paycheck, so we’re temporarily back down to one income. But we’re used to spending like we had two incomes. A few large expenses have come through (a few plane tickets, an
awesome family vacation with 15 extended family members, but it was a half-block from Rehoboth Beach, and cost what you would expect - a lot)&lt;/p&gt;

&lt;dl&gt;
  &lt;dt&gt;So, right now, I’ve dipped into our savings to cover our expenses. There’s nothing wrong here - we knew she was not going to be earning money over the summer. [&lt;/dt&gt;
  &lt;dt&gt;&lt;strong&gt;2016 Josh notes&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;Partial lie. We
thoughtshe was going to be paid over the summer, but turns out PGCO bobbled the paperwork. We “knew” this when her paychecks stopped in April.] &lt;/dd&gt;
  &lt;dt&gt;I still have this inexplicable sense of discomfort, because I don’t know some pretty basic details of our own spending. I’m embarrassed even as I write this. Income in per month (easy to know) compared to spending per month - also fairly easy, but the afore-mentioned big-ticket items have drastically skewed our “average spending”. [&lt;/dt&gt;
  &lt;dt&gt;&lt;strong&gt;2016 Josh notes&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;We knew our expenses
retroactively, I.E I could look at a credit card statement, but we never had
planned our expenses, or managed our spending based on goals or expenses. Yikes.]&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;I’m looking forward to living on just one income, and saving half of our take-home. This is a huge milestone. The steps, as they look right now, are these:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Identify current income/expense ratio&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Identify low-hanging fruit to reduce expenses&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Reduce said expenses&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Repeat step two, until we’re unwilling to further reduce expenses&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Boost income without inflating lifestyle, so all extra income can go into savings.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And, well, that’s my plan.&lt;/p&gt;

&lt;p&gt;[
&lt;strong&gt;2016 Josh notes:&lt;/strong&gt;
 For the most part, we’ve done all this. A significant portion of our income goes into savings, and I know our income/expense ratio, and can PLAN our spending well in advance. We’ve boosted our income but reduced our lifestyle from 2013 levels, so more money goes into savings/investments.]&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Learning Spanish: Conversation connectors</title>
   <link href="https://josh.works/learning-spanish-conversation-connectors"/>
   <updated>2016-01-25T00:00:00+00:00</updated>
   <id>https://josh.works/learning-spanish-conversation-connectors</id>
   <content type="html">&lt;p&gt;I’m learning Spanish right now, 
&lt;a href=&quot;/2-things-spanish&quot;&gt;as I’ve mentioned&lt;/a&gt;. The bad news is I’ve been in some state of
learning spanish for the better part of the last 15 years. My mom’s parents came here from Paraguay, and so she and her siblings are all native Spanish speakers, plus their spouses. Family get togethers are usually conducted in Spanish.&lt;/p&gt;

&lt;p&gt;So, I’ve heard it and have passing familiarity with it, though never owned the process of improvement until a few months ago. I also tend to feel tremendous guilt and embarrassment that I don’t speak it well. So that’s caused me to steer well clear of it. (Why face what’s uncomfortable, amiright?)&lt;/p&gt;

&lt;p&gt;Benny Lewis is my go-to inspiration for language learning. He argues that he has no special skill at language learning, but thanks to &lt;a href=&quot;http://www.fluentin3months.com/goldilocks/&quot;&gt;wise studying&lt;/a&gt;, &lt;a href=&quot;http://www.fluentin3months.com/skype-language-exchange/&quot;&gt;speaking the language&lt;/a&gt; as quickly as possible, being &lt;a href=&quot;http://www.fluentin3months.com/mistakes-matter/&quot;&gt;fearless about making mistakes&lt;/a&gt;, and a bunch of other things, he’s picked up seven or eight languages quite well. He has written
&lt;a href=&quot;http://www.fluentin3months.com/author/benny/&quot;&gt;so much&lt;/a&gt; about language learning.&lt;/p&gt;

&lt;p&gt;If he can do it for ten languages, surely I can muddle my way through to comfort in one language. And if I can do that once, I can do it again with another language. Right?&lt;/p&gt;

&lt;p&gt;So, for the last two weeks or so, I’ve been learning spanish &lt;a href=&quot;http://www.fluentin3months.com/shakira/&quot;&gt;via Shakira&lt;/a&gt;, using
&lt;a href=&quot;http://www.fluentin3months.com/spaced-repetition/&quot;&gt;Anki SRS&lt;/a&gt; to master vocabulary and rules once I understand them. (I don’t spend much total time in Anki every day, but I can snag a few minutes here and there, or as a break from other projects/work, and rack up quite a lot of time spent effectively memorizing)&lt;/p&gt;

&lt;h2 id=&quot;the-newest-addition-to-the-toolkit-conversation-connectors&quot;&gt;The newest addition to the toolkit: Conversation connectors&lt;/h2&gt;

&lt;p&gt;Since I want to be able to speak the language, and not just have a collection of rules and vocab, I’ve been learning
conversational connectors. I was inspired to do this after reading &lt;a href=&quot;https://sites.google.com/site/fluentczech/conversationalintimacy&quot;&gt;this post about a guy learning Czech&lt;/a&gt;, so I’ve added &lt;a href=&quot;http://www.memrise.com/course/396749/spanish-conversational-connectors/&quot;&gt;this list of conversational connectors&lt;/a&gt; to my Spanish vocab.&lt;/p&gt;

&lt;p&gt;Already, I feel significantly more comfortable in Spanish. It’s going well.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>2015: The year I didn&apos;t think much?</title>
   <link href="https://josh.works/2015_the_year_i_didnt_think_much"/>
   <updated>2016-01-23T00:00:00+00:00</updated>
   <id>https://josh.works/2015-the-year-i-didnt-think-much</id>
   <content type="html">&lt;p&gt;I generally think that if I write what I am thinking about, I can think about it a lot better. Writing has a clarifying effect (or is it affect?) on thought. &lt;/p&gt;

&lt;p&gt;If that’s the case, I just didn’t think much in 2015:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_56a3bbd4e0327c99cb1cd1cd_1453571035621_things_josh_wrote_2013_2015.pngthings_josh_wrote_2013_2015_&quot; alt=&quot;I wrote about 45 things in 2013 and 2014. I wrote 8 in 2015.&quot; /&gt; I wrote about 45 things in 2013 and 2014. I wrote 8 in 2015.&lt;/p&gt;

&lt;p&gt;I’m not sure why I wrote so much less in 2015. Much of what was on my mind I was reluctant to publish, because most of my extra brain power revolved around travel. Kristi and I have been traveling full-time for the last six months, and I didn’t feel like I wanted to be a travel blogger, or run around tooting my own horn. (Prior to beginning full-time travel, we were thinking and planning a lot.)&lt;/p&gt;

&lt;p&gt;So, 2015 was a wash for writing, but we did a ton of cool stuff, so I’m quite content with it.&lt;/p&gt;

&lt;p&gt;Now, even though I’m still traveling (hello from Costa Rica) I’ve got extra “brain cycles” to spend thinking about stuff again. I’m hoping that writing begets more writing, as I’ve started working on another project (
&lt;a href=&quot;http://climbersguide.co/&quot;&gt;The Climber’s Guide&lt;/a&gt;) and picking up occasional freelance writing projects. &lt;/p&gt;

&lt;p&gt;I’m also dialing back whatever imaginary standards I had in my head about what I should and should not write. It doesn’t matter. This is my corner of the website, I can put whatever I want on it. My theme is still
deliver value via my words, but that doesn’t limit me exclusively to guides about how to do stuff. &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Two Things That Are Helping Me (Finally) Learn Spanish</title>
   <link href="https://josh.works/2-things-spanish"/>
   <updated>2016-01-20T00:00:00+00:00</updated>
   <id>https://josh.works/2-things-spanish</id>
   <content type="html">&lt;p&gt;Kristi and I are in Costa Rica for the month of January. We spent two months in Buenos Aires this summer. That means in the space of six months, I’ll have spent three months in a Spanish-speaking country, yet
I’ve not made significant progress on my spanish.&lt;/p&gt;

&lt;p&gt;That’s not to say I’ve made
no progress, just that I have not made as much progress as I’d have liked. I’ve got a big list of excuses ready to go for why I didn’t improve, but those are meaningless to you and I.&lt;/p&gt;

&lt;p&gt;Two things made a difference for me slowly making progress in the language:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Anki.app’s Spaced Repition Software&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Memorizing only what I understood, but then
memorizing it well.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;ankiapp&quot;&gt;Anki.app&lt;/h4&gt;

&lt;p&gt;&lt;a href=&quot;https://ankiweb.net&quot;&gt;Anki.app&lt;/a&gt; is “Spaced Repition Software”. It just works. Here’s others arguing it more persuaviely than I:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.fluentin3months.com/shakira/&quot;&gt;Benny Lewis (using Shakira to learn spanish)&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://sivers.org/srs&quot;&gt;Derek Sivers (using SRS for programming)&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://medium.com/life-tips/how-to-never-forget-anything-ever-again-5481606b087a#.gtp7ymytw&quot;&gt;Mattan Griffel: How to never forget anything ever again&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I accepted the premise that SRS works, but I made a stupid mistake. I downloaded someone elses spanish deck, and started memorizing it.&lt;/p&gt;

&lt;p&gt;This was a mistake because I was trying to memorize a collection of disperate words not connected to my life. Hard to drum up motivation for that, and then I never had occasion to practice the words.&lt;/p&gt;

&lt;p&gt;After a month in Buenos Aires, I threw away the downloaded deck and started building my own. It was tedious, and slow. Not because creating cards is tedious and slow (it is. Anki’s User Interface leaves LOTS to be desired) but because I had to figure out a few things for every card:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;What was I trying to understand?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;What didn’t I understand about it?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How can I now understand this thing that I didn’t understand before?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How can I distill this new understanding into a short card?&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d then create a “card”, and add it to my deck. I know I’m doing it right when most of the cards feel easy, if I stop and think about it. As I see the same card again and again, I can recall the information quicker each time.&lt;/p&gt;

&lt;h4 id=&quot;memorize-only-what-i-understand-and-a-note-on-circular-reasoning&quot;&gt;Memorize only what I understand (and a note on circular reasoning)&lt;/h4&gt;

&lt;p&gt;So, when I came across a word I wanted to learn, like “dispertarse”, I had to make sure I knew several things about this word:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The meaning of the infinitive. (Dispertar = to wake up)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;all the conjugations in the present tense (five conjugations)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;meaning of the ending “-se” (reflexive singular, but I need to know all the reflexive conjugations, so that introduces another six individual verb endings,
at least)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, “dispertarse” means “to wake oneself up” but to really understand it, I chose to build a web of understanding that touches on at least twenty individual data points.&lt;/p&gt;

&lt;p&gt;The good news is once you’ve built a small web, it’s way easier to expand it piecemeal. It’s a heck of a lot of work building it the first time, but thats what I did, and it helped enormously.&lt;/p&gt;

&lt;p&gt;This all felt a bit circular at first (and still does). I want to memorize only what I understand, but since I don’t understand much, I’m doing rote memorization. I’m not discouraged, though. I know I’m attacking the problem from two directions, and I’ll get it eventually.&lt;/p&gt;

&lt;p&gt;A small win under “memorize only what I can understand” is that I feel happy to
&lt;a href=&quot;http://www.hackingchinese.com/is-your-flashcard-deck-too-big-for-your-own-good/&quot;&gt;delete cards as I see fit&lt;/a&gt;. If I have not learned the card, am not learning it well, and don’t want to learn it,
why should I learn it?&lt;/p&gt;

&lt;h5 id=&quot;misc-resources&quot;&gt;Misc resources:&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.supermemo.com/en/articles/20rules&quot;&gt;Effective Learning: 20 rules of formulating knowledge&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.jackkinsella.ie/2011/12/05/janki-method.html&quot;&gt;SRS for programming: The Janki Method&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>On Fables: Finishing up Antifragile</title>
   <link href="https://josh.works/misc/2016/01/09/on-fables-finishing-up-antifragile/"/>
   <updated>2016-01-09T00:00:00+00:00</updated>
   <id>https://josh.works/misc/2016/01/09/on-fables-finishing-up-antifragile</id>
   <content type="html">&lt;p&gt;I’m cleaning up some notes I wanted to jot down over the last few weeks&lt;/p&gt;

&lt;p&gt;Nassim Taleb, in 
&lt;a href=&quot;http://www.amazon.com/gp/product/B0083DJWGO/ref=dp-kindle-redirect?ie=UTF8&amp;amp;btkr=1&quot;&gt;Antifragile&lt;/a&gt;, says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The great economist Ariel Rubinstein gets the green lumber fallacy - it requires a great deal of intellect and honesty to see things that way.
  Rubinstein refuses to claim that his knowledge of theoretical matters can be transalted - by him - into anything directly practical. To him, economics is like a fable - a fable writer is there to stimulate ideas, indirectly inspire practice perhaps, but certainly not to direct or determine practice.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Theory should stay independent from practice and vice versa.&lt;/p&gt;

&lt;p&gt;Rubinstein’s injunction that 
theory should stay independent from practice has two implications:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;It is easy to confuse theory 
about an outcome and the 
practice that led to that outcome. We’re all guilty of building narratives around events in our lives, both good and bad. Sometimes our narratives match reality, and sometime they don’t.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s important to realize that it is difficult to distinguish the two. Nassim referenced 
&lt;a href=&quot;https://en.wikipedia.org/wiki/Antifragile#Green_Lumber_Fallacy&quot;&gt;the green lumber fallacy&lt;/a&gt; in which a very successful commodity trader 
didn’t understand what the commodity was that he was trading. (The trader thought that “green lumber” was lumber painted green, when it is actually just freshly cut lumber)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;When we dispense feedback, advice, or judgement, we should be acutely aware that 
we probably don’t understand events nearly as well as we think we do.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If someone asks me how to rock climb better, I’ll tell them things that I think have helped me climb better. I could be entirely wrong about what matters. For example, I have tiny little legs. Barely any meat on them. I’ve got an ideal strength to weight ratio right off the couch. Does it really matter how much time I spend hangboarding? Sure, but probably not as much as I think it does.&lt;/p&gt;

&lt;p&gt;If I never displayed an aptitude for rock climbing, I probably would not be a rock climber. The aptitude was helped along by a genetic predisposition to have small legs. I never chose this, and am barely aware of it, so my advice to others should never be blindly trusted. This goes for anything related to jobs, money, hobbies, relationships, etc. I can’t imagine how many important components of each of those I’m entirely ignorant of.&lt;/p&gt;

&lt;p&gt;What I say is at best a story, a fable. I want to stimulate ideas, and perhapse indirectly inspire practice, but not direct or determine anyone’s decisions.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Limitations of My Own Thinking</title>
   <link href="https://josh.works/limitations-of-my-own-thinking"/>
   <updated>2015-11-05T00:00:00+00:00</updated>
   <id>https://josh.works/limitations-of-my-own-thinking</id>
   <content type="html">&lt;p&gt;I sometimes make recommendations, or at least recount a story that has “actionable insights”. Anytime this happens, I start tripping over myself with warnings and qualifying statements.&lt;/p&gt;

&lt;p&gt;Here’s what would happen:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I would make a recommendation (“start a side project to help get a better job”).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I would immediately follow it with a paragraph of qualifying statements. (“It’s not the side project itself that gets you the job, it’s the skills that you get while pursuing it. Well, not even the skills, but the “stick-to-itiveness” that you gain. But even if you’re naturally tenacious, you have to telegraph that to a potential employer, so really the side project is a way of showing traits that you already have.  It helps you gain traits you might not have too. And helps you showcase both.” and on and on and on.)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s a rough way to write, and makes it hard to get a coherent thought down. So, now, whenever I make an assertion and want to qualify my statements, I’ll just link here. Every time I link to this page, hear my voice in your head saying:&lt;/p&gt;

&lt;p&gt;“Please be aware that I’m only human and have limited knowledge. Important differences are invisible to both of us. These differences may cause your experience to differ wildly from mine”&lt;/p&gt;

&lt;h1 id=&quot;on-the-limitation-of-my-knowledge&quot;&gt;On the limitation of my knowledge&lt;/h1&gt;

&lt;p&gt;We’re all suspicious of people who
say but do not
do. We’re also eager to hear from people that
do, so we can learn from them and improve our own situation.&lt;/p&gt;

&lt;p&gt;We should be wary of people who have done great things and then talk about it. We (humans) are unable to recall events and discern cause-and-effect with skill or accuracy.&lt;/p&gt;

&lt;p&gt;When imparting advice, the advice giver
andthe audience face three dangers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Modify the advice or story to make yourself look better.&lt;/strong&gt;
 This modification usually is not intentional.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Mistaking the relationship between
what happened and
what was observed.  &lt;/strong&gt;
Have you noticed that “plain facts” get interpreted in opposite ways? &lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Misattribute cause and effect. &lt;/strong&gt;
“I started calling customers and changing the marketing to use the words and phrases they used, 
and our company grew 20% month over month!” Possible, but keep in mind that
&lt;a href=&quot;http://www.tylervigen.com/spurious-correlations&quot;&gt;the number of people who drowned by falling into pools correlates with the number of films featuring Nicolas Cage. &lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even with the best of intentions, it is impossible to view oneself and the events that ones has experienced with perfect clarity. I like to think well of myself, so with enough time (or wine) I’ll revise past events to make myself look better.
 This revision is to better protect my ego, and is insideous. I do this, and chances are good that you do too. &lt;/p&gt;

&lt;p&gt;The change is subtle. Sometimes I’ll make a chance good thing seem a little more like something I chose. Or I’ll “misremember” my reaction to some bad thing as less immature and selfish than it really was. &lt;/p&gt;

&lt;p&gt;This “misremembering” isn’t the end of the world. It just taints my ability to make generalizations and recommendations to other people. I’m not going to stop making recommendations.  I am just leaving it up to you to be appropriately apprehensive and suspicious of everything that I write. &lt;/p&gt;

&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;

&lt;p&gt;Don’t trust most of what most people say.&lt;/p&gt;

&lt;p&gt;If you want a good starting point for trusting some people and distrusting others, I cannot recommend
&lt;a href=&quot;http://www.amazon.com/Antifragile-Things-That-Disorder-Incerto/dp/0812979680&quot;&gt;Antifragile&lt;/a&gt; highly enough. Go read it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Upgrade your job</title>
   <link href="https://josh.works/jobs/2015/10/30/upgrade-your-job/"/>
   <updated>2015-10-30T00:00:00+00:00</updated>
   <id>https://josh.works/jobs/2015/10/30/upgrade-your-job</id>
   <content type="html">&lt;p&gt;So, apparently I send a lot of email about people trying to get cool jobs. Here’s yet 
another email I sent to a friend, recorded here. &lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Hi [redacted],&lt;/p&gt;

&lt;p&gt;First I want to highlight is that flexible/remote jobs are 
just like normal jobs, but more people want them, so the companies can be 
highly selective in their hiring.&lt;/p&gt;

&lt;p&gt;So, it is quite possible that your 
next job will be (and should be) a “normal” 9-5, where you’re in the same office as everyone else. &lt;/p&gt;

&lt;p&gt;This company may not be particularly progressive or innovative (however you’d define those) but it could be a perfect playground to build your own personal portfolio of incredible work. You could spend a year at a company, do great things, and then take those things to 
another company that allows all the travel and flexible work.&lt;/p&gt;

&lt;p&gt;A really good book (
&lt;a href=&quot;http://calnewport.com/books/so-good/&quot;&gt;So Good They Can’t Ignore You&lt;/a&gt;, I recommend reading this ASAP) explains this as “career capital”. You have to gain career capital to “turn it in” for a good job. Most people want a good job, but most people don’t have any career capital.&lt;/p&gt;

&lt;p&gt;At your next job, whatever it is, you should relentlessly pursue this career capital. You’ll then be in a position to do exactly what you want to do next.&lt;/p&gt;

&lt;p&gt;I forgot to tell you the most significant part of what I learned when trying to pick up a kick-ass job.&lt;/p&gt;

&lt;p&gt;It all started clicking when I stumbled across a guy named Ramit Sethi. &lt;/p&gt;

&lt;p&gt;Far and away, he’s the most influential person on me and the work that I do. Everything that I say that companies like I’ve basically lifted from him. &lt;/p&gt;

&lt;p&gt;He talks about many things, but the relevant bits that I started with were “Natural Networking” and “Interviewing”&lt;/p&gt;

&lt;p&gt;Here’s a long list of links. I’d set aside 30 mins and look over stuff, then dig deeper into what he has to say. Seriously. Everything is gold. Your “this guy is scammy” radar should be going off because of the URL and titles he uses, but read/watch. &lt;/p&gt;

&lt;h3 id=&quot;natural-networking&quot;&gt;Natural networking: &lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/video-how-to-use-natural-networking-to-connect-with-people/&quot;&gt;http://www.iwillteachyoutoberich.com/blog/video-how-to-use-natural-networking-to-connect-with-people/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/ramits-definitive-guide-to-building-your-network-with-scripts/&quot;&gt;http://www.iwillteachyoutoberich.com/blog/ramits-definitive-guide-to-building-your-network-with-scripts/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/2-common-traps-to-avoid-when-choosing-a-career/&quot;&gt;http://www.iwillteachyoutoberich.com/blog/2-common-traps-to-avoid-when-choosing-a-career/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/interview-tips-art-of-storytelling/&quot;&gt;http://www.iwillteachyoutoberich.com/blog/interview-tips-art-of-storytelling/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/best-of-iwt-word-for-word-scripts/&quot;&gt;http://www.iwillteachyoutoberich.com/blog/best-of-iwt-word-for-word-scripts/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=Yb03mTqI2Io&quot;&gt;https://www.youtube.com/watch?v=Yb03mTqI2Io&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;interviewing&quot;&gt;Interviewing: &lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/3-tips-to-dominate-your-job-interview-and-give-the-perfect-answers/&quot;&gt;http://www.iwillteachyoutoberich.com/blog/3-tips-to-dominate-your-job-interview-and-give-the-perfect-answers/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/how-to-stand-out-and-get-hired-video/&quot;&gt;http://www.iwillteachyoutoberich.com/blog/how-to-stand-out-and-get-hired-video/&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=taOo0Rexo8s&quot;&gt;https://www.youtube.com/watch?v=taOo0Rexo8s&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you could do only one thing, I’d dig deep into the “natural networking” side of stuff, and study how he uses/recommends “scripts” and having some go-to and practiced concise stories. &lt;/p&gt;

&lt;p&gt;-Josh&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>So you want to work remotely...</title>
   <link href="https://josh.works/so-you-want-to-work-remotely"/>
   <updated>2015-09-21T00:00:00+00:00</updated>
   <id>https://josh.works/so-you-want-to-work-remotely</id>
   <content type="html">&lt;h2 id=&quot;joshs-rules-for-getting-a-sweet-remote-job&quot;&gt;Josh’s “rules” for getting a sweet remote job&lt;/h2&gt;

&lt;p&gt;A few weeks ago, I met a fantastic guy who is contemplating next steps for work. He is great at what he does, and is thinking about what direction to go in his life. He’s young, and thought working remotely sounded pretty cool. I agreed, and then spent the next week or two thinking about what’s required to work remotely. &lt;/p&gt;

&lt;p&gt;Here’s the email I sent trying to explain all of this.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Hi {redacted},&lt;/p&gt;

&lt;p&gt;Prepare yourself for a long email. I’ve had a lot of thoughts rolling around my head related to this, and you’re getting them all. I’m going to work on cleaning this up and maybe sticking it online as a blog post for later. I’ve talked with many people about working remotely, so… here are some thoughts:&lt;/p&gt;

&lt;p&gt;Glad you got the bug for remote working!&lt;/p&gt;

&lt;p&gt;There’s lots of good things that come with working remotely, but there are lots of real and perceived barriers.&lt;/p&gt;

&lt;p&gt;So, let me offer some more encouragement and advice. &lt;/p&gt;

&lt;p&gt;First, there’s the matter of framing how you go about working remotely. Obviously you want to work remotely, but put yourself in the shoes of a prospective employer. They don’t care if you work remotely or not - they want you to do great work for them and make them an effective, profitable organization. &lt;/p&gt;

&lt;p&gt;So, if I can make up the imaginary &lt;strong&gt;Josh’s Rules of Getting a Remote Job&lt;/strong&gt;, this is what they’d be:&lt;/p&gt;

&lt;h3 id=&quot;rule-1-getting-a-remote-job-is-exactly-the-same-as-getting-a-regular-job-but-a-little-harder&quot;&gt;Rule 1: Getting a remote job is exactly the same as getting a regular job, but a little harder&lt;/h3&gt;

&lt;p&gt;Companies that hire remotely tend to be younger, agile-er, and smaller. So every employee matters. Making a bad hire can be catastrophic in terms of
&lt;a href=&quot;http://resources.dice.com/report/the-cost-of-bad-hiring-decisions/&quot;&gt;money&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Opportunity_cost&quot;&gt;opportunity cost&lt;/a&gt;. Your job is to make it very, very obvious that hiring YOU is a great decision. In fact, you want to be so good at what you do that passing up on you is a terrible decision. &lt;/p&gt;

&lt;p&gt;This right here is the difference in mental approaches from an “average” job hunter and a high-performing job hunter. &lt;/p&gt;

&lt;p&gt;The average person talks about all the reasons that they’re qualified to do the work, how quick they are to learn, how happy they are for the opportunity, etc. None of this puts a CEO/hiring manager/team lead at ease. They think:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Of course this person wants to work at my company. I have a kick-ass, quickly growing company and pay my employees well. &lt;strong&gt;I am looking for more than “just” a willing person.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;rule-2-a-top-performing-employee-approaches-a-job-opportunity-the-same-way-a-consultant-approaches-a-possible-gig&quot;&gt;Rule 2: A top-performing employee approaches a job opportunity the same way a consultant approaches a possible gig.&lt;/h3&gt;

&lt;p&gt;First, qualify the opportunity. Is this something that you could do well?&lt;/p&gt;

&lt;p&gt;Next, assuming it’s a job they could do well, get into “proposal” stage. &lt;/p&gt;

&lt;p&gt;Tell them (in as many words)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If I were hired to do this job, these are the things that I would do, these are the projects I would work on, and here’s the impact it would have on the company’s bottom line.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When you can walk someone down the path from “Hire me” to “I’ll help you make \($,\)$/year more than you would otherwise”, if the the amount you’ll make them is 3x your annual salary, you’re in a pretty good place.&lt;/p&gt;

&lt;p&gt;All of a sudden, rather than the risk being:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;hire this person and it might not work out&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The risk becomes becomes:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;If I don’t hire this person, I might miss this opportunity to make $$$&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By framing the conversation like this, you’re showing that you are aware of their needs as a business, and that you’ll hit the ground running. You don’t need your hand held, you’re able to execute ideas as appropriate. &lt;/p&gt;

&lt;p&gt;By the way - none of this should be construed as a suggestion to “make up BS”. There are plenty of ways you can make contributions to a company and help them retain users, get new users, save money, earn more money, grow accounts, bring in new business, hire better people, keep existing employees longer, etc.&lt;/p&gt;

&lt;p&gt;This is another topic for another time, though. Just know that &lt;em&gt;you need to focus on the value you provide to a company.&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;rule-3-a-top-performing-employee-has-concrete-numbers-and-stories-showing-their-skill&quot;&gt;Rule 3: A top-performing employee has concrete numbers and stories showing their skill. &lt;/h3&gt;

&lt;p&gt;You’ll be asked about your prior experience at your current job. Don’t just say “I did {job} at {company}”. That’s boring. That makes you a risky hire. &lt;/p&gt;

&lt;p&gt;You’ll say something like&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;When I was a {position} at {company}, I was tasked with {responsibility}. Not only did I do that task well, but I took on a few side projects to increase the effectiveness of the team, and decrease the friction of some processes. For example… {story showing how you made improvements that impacted the business, with figures to back it up}.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;rule-4-your-online-persona-is-the-primary-thing-that-will-get-you-hired-craft-a-good-one&quot;&gt;Rule 4: Your online persona is the primary thing that will get you hired. Craft a good one. &lt;/h3&gt;

&lt;p&gt;When you see a job opportunity go by, you don’t just submit a resume and let it go. You find the person in charge of hiring, or someone on the team, or the company CEO, and you send them a short email. In that email, you make it easy for them to discover how competent and skilled you are. &lt;/p&gt;

&lt;p&gt;That could be as simple as a link to your personal website in your signature. A personal website is extremely useful for showing a lot of things at once:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Tech savvy&lt;/strong&gt; (it is simultaneously extremely complicated and unbelievably easy to set up a personal website. Try to get &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firstNameLastName.com&lt;/code&gt;. If not, look for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firstName.com&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firstNameLastName.io&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firstName.io&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firstNameLastName.is&lt;/code&gt;, etc. Look around. Find people that have strong personal brands, see what their URL is, and try to get that. (If Jekyll interests you, I wrote this guide to building a personal website in Jekyll: &lt;a href=&quot;/build-a-personal-site-with-jekyll&quot;&gt;Build a Personal Website in Jekyll - A Detailed Guide For First-Timers&lt;/a&gt;)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Room to show that you can communicate effectively.&lt;/strong&gt; Remote companies live and die on the written word. Can you communicate something interesting via text? What do you write about? It doesn’t matter, as long as you might be helping someone. Before you publish anything, answer this question: “Does what I’m about to publish have the potential to help someone?”&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the answer is yes, publish.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Showcase your non-writing skills&lt;/strong&gt;. Do you put cool stuff on Instagram and Twitter? Well, put those on your personal website. Do you read a lot? Make book recommendations and include a reason or two for why someone should read the book. Are you athletic? There’s ways to show that too. &lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;The skills required to work remotely tend to overlap heavily with the skills required to create a website.&lt;/strong&gt; 
&lt;a href=&quot;http://www.wsj.com/articles/SB10001424053111903480904576512250915629460&quot;&gt;Software is eating the world&lt;/a&gt;, so get conversant in the technology.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;You don’t have to go full web-developer to put a website online, just as you don’t need to be a software engineer to work at a software company&lt;/strong&gt;. But know the tools available to you that allow you to be effective at technical tasks. The idea behind using &lt;a href=&quot;https://webflow.com/&quot;&gt;Webflow&lt;/a&gt; or &lt;a href=&quot;https://www.squarespace.com/&quot;&gt;Squarespace&lt;/a&gt; to publish a website is the same as using &lt;a href=&quot;https://www.kissmetrics.com/&quot;&gt;KissMetrics&lt;/a&gt; or &lt;a href=&quot;https://www.fullstory.com&quot;&gt;FullStory&lt;/a&gt; to gather customer data.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Phew. That’s it for now.&lt;/p&gt;

&lt;p&gt;-Josh&lt;/p&gt;

&lt;p&gt;PS All of this is general advice. You’ll need to become a specialist. That’s hard work. Holy crap, it’s hard. That is a whole other topic. But this is maybe a helpful starting point.&lt;/p&gt;

&lt;p&gt;Want to soak in the wisdom of experts? Use &lt;a href=&quot;https://feedly.com/&quot;&gt;https://feedly.com&lt;/a&gt; to subscribe to the websites of people that seem to know what they’re talking about. &lt;/p&gt;

&lt;p&gt;Read what they think about things, and you’ll be wiser for it. :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Trip Report: New River Gorge</title>
   <link href="https://josh.works/climbing/2015/09/13/2015-9-13-trip-report-new-river-gorge/"/>
   <updated>2015-09-13T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2015/09/13/2015-9-13-trip-report-new-river-gorge</id>
   <content type="html">&lt;p&gt;Kristi and I are spending a few weeks in Fayetteville, WV, home of the New River Gorge. There’s fantastic climbing here. I climbed with good friends, and was absolutely humbled by how strong they all are. (My defense, at least for the next few weeks, is that I’ve not climbed consistently for 4.5 months)&lt;/p&gt;

&lt;p&gt;I’ve been climbing regularly this last week, trying to recondition my skin and muscles. I’ve got a long list of projects to work on (thanks Brian and Christian) so the next few weeks should be productive.&lt;/p&gt;

&lt;p&gt;I got on a lot of hard climbs, and made it to the actual tops of few of them. Sent nothing. Lots of room for improvement.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_56036951e4b0b3ab8e420c8d_1443064146553__img.jpg_&quot; alt=&quot;Walking through the rainy woods to climb.&quot; /&gt; Walking through the rainy woods to climb.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Piece by Piece</title>
   <link href="https://josh.works/growth/2015/07/25/2015-7-25-piece-by-piece/"/>
   <updated>2015-07-25T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2015/07/25/2015-7-25-piece-by-piece</id>
   <content type="html">&lt;p&gt;The following is inspired by 
&lt;a href=&quot;https://unicornfree.com/&quot;&gt;Amy Hoy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve got a secret to share: I’m working on building a product (of the digital variety) that will be 
so damn goodpeople will pay me $100 or more to get it. &lt;/p&gt;

&lt;p&gt;I’ve got a lot of bits and pieces of it littered around the internet, my computer, and my head. If you want a sneak peak at an earlier (unsuccessful) stab at this, click over to 
&lt;a href=&quot;http://www.belaybetter.com/&quot;&gt;www.belaybetter.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There you can buy a PDF for about $20, if you wanted to, to read about 25 pages of my thoughts and ideas on dealing with fear while lead climbing. I’ve sold a few copies (maybe eight?) over the last eighteen months
.So, the ROI on the time invested in that particular product is hovering not much over $1/hr. &lt;/p&gt;

&lt;p&gt;The path to get from here to there is daunting:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;What is “there”? I’ve got it loosely defined, but need to tighten that up)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I need a way better 
product.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Do I need to add “services” to the product?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If so, what are those? Videos, an hour or two of my time via Skype&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How do I know when I’ve reached a product that is good enough&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Assuming I’ve got something good enough, I still need to build a much better landing page.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;And I probably need an email drip campaign to build trust with subscribers.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Subscribers. Where do I get them? Reddit? Guest posts?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Guest posts. I need to write to the owners of well-trafficked and run some of the stuff I’ve made by them to see what they thing/ways I can make it better.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I need a list of potential authors to reach out to. &lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But guess what? Every one of those steps is doable. By 
me. I just need to sit down and start chewing through them. Some of it involves thinking, some of it involves writing, and some of it involves emailing. There’s nothing more complicated than that. &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Type. Publish. Done.</title>
   <link href="https://josh.works/type-publish-done"/>
   <updated>2015-07-22T00:00:00+00:00</updated>
   <id>https://josh.works/type-publish-done</id>
   <content type="html">&lt;p&gt;Yesterday I read &lt;a href=&quot;http://www.bothsidesofthetable.com/2015/07/14/how-the-hell-do-i-prioritize-work-blog-find-balance/&quot;&gt;How the Hell do I Prioritize Work, Blog &amp;amp; Find Balance.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The author of the letter is a busy, accomplished guy and still manages to write regularly. &lt;/p&gt;

&lt;p&gt;He said, in short:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I sit down, and I write. I’ve done it a lot, so I’m not bad at it. I don’t often proof read my stuff, I make grammar and spelling errors, and what I publish is not polished, refined.&lt;/p&gt;

  &lt;p&gt;I’ve been doing it for long enough that I can crank out posts quickly. I don’t worry about typos. I don’t worry about sounding too smart. I don’t worry about every post becoming part of the national treasures. I just write. Usually single sitting. No editing. Hit publish. Sayonara&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I like that style. “Single Take”. Spill what’s on your mind and hit publish.&lt;/p&gt;

&lt;p&gt;I get caught up in editing, making things be just right, putting out “amazing content” that I just write literally nothing. Nothing at all.&lt;/p&gt;

&lt;p&gt;There are times and places for great content, but this is not it. I don’t need a great banner image. (Cropped to look great full-width, of course, and something with text over it to look good for social media sites…)&lt;/p&gt;

&lt;p&gt;Is money changing hands? (Or are you hoping to convince someone to buy something?) Great, do a round of editing. Make sure that what you are talking about is resonating. But this is not that.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Maybe &quot;Now&quot; Is Not the Right Time</title>
   <link href="https://josh.works/2015/07/19/2015-7-19-maybe-now-is-not-the-right-time/"/>
   <updated>2015-07-19T00:00:00+00:00</updated>
   <id>https://josh.works/2015/07/19/2015-7-19-maybe-now-is-not-the-right-time</id>
   <content type="html">&lt;p&gt;Recently I deleted a bunch of old notes I had in
&lt;a href=&quot;https://evernote.com&quot;&gt;Evernote&lt;/a&gt;. Some of the notes were almost immediately unneeded, like old receipts and confirmations. &lt;/p&gt;

&lt;p&gt;Much of the rest was notes related to goals (“Checklist to move out of MD Apartment”, “Planning trip to Buenos Aires”) or to projects I had. (“Set up personal website”, “Outline book on overcoming fear of lead climbing”, etc). &lt;/p&gt;

&lt;p&gt;Some of the things I’ve been working on in the last few weeks I’ve been thinking about for over a year. Whoa. Why did I wait until now to do something that I’d obviously wanted to do over a year ago?&lt;/p&gt;

&lt;h2 id=&quot;now-is-a-good-time-to-do-something-but-later-isnt-always-bad&quot;&gt;“Now” is a good time to do something, but “later” isn’t always bad. &lt;/h2&gt;

&lt;p&gt;I’ve tried to find a different way of saying this, but anything else isn’t honest. I’ve felt tremendous guilt lately at not accomplishing some of the projects I’ve laid out for myself.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I’ve not studied any Spanish, even though I’ve been living in Buenos Aires, fumbling around with my terrible Spanish skills.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I’ve not taken measurable steps on either of two side projects I’ve been meaning to accomplish (and have been wanting to do them for years.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I’ve spent time reading mostly pointless fiction rather than more meaty non-fiction/histories/biographies, even though I’d much rather spend time in the latter.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I’ve only in the last few days feel like I’ve made significant progress with projects at work. &lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I’ve not done a single physically challenging act in two months. No climbing, no exercise. &lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these things will be accomplished in time. While I shouldn’t sit around until I magically feel motivated to do all of the undone things in my life, I can respect the ebb and flow of motivation, and peg the right projects to the right time. &lt;/p&gt;

&lt;p&gt;I do this at a daily and weekly level (I.E. certain kinds of work when I’m feeling high/low energy, and I keep work limited to mostly-normal working hours), so it is no stretch to extend the principle to a monthly/yearly schedule. (Except for the exercise bit - I feel way better with exercise in my life, and allowed the current inaccessibility of climbing to derail that habit.)&lt;/p&gt;

&lt;p&gt;It’s hard for me to not succumb to the Instagram/Hacker News effect. (I just made that up. It’s the endless viewing of other people’s beautiful lives/successful products makes me think that I am a dismal failure, just because I’m not currently launching something elegent/successful/lucrative/world-changing or having a fabulous time in a beautiful place.) &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does this matter to you?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The same way that it matters to me. Do things that matter. But don’t lose sleep over not doing everything as quickly as you originally thought you might, and don’t be beholden to doing things that you no longer need to do.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/a-little-bit-of-slope-makes-up-for-a-lot-of-y-intercept&quot;&gt;It’s the slope, not the Y-intercept. &lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A little bit of slope makes up for a lot of y-intercept</title>
   <link href="https://josh.works/a-little-bit-of-slope-makes-up-for-a-lot-of-y-intercept"/>
   <updated>2015-06-26T00:00:00+00:00</updated>
   <id>https://josh.works/2015-6-25-a-little-bit-of-slope-makes-up-for-a-lot-of-y-intercept</id>
   <content type="html">&lt;p&gt;The following is &lt;a href=&quot;https://www.quora.com/What-are-the-most-profound-life-lessons-from-Stanford-Professor-John-Ousterhout/answer/Charles-Chen-8?share=6cdcb4fb&amp;amp;srid=8LAe&quot;&gt;recounted on 
Quora&lt;/a&gt;, from a lecture by Stanford
professor &lt;a href=&quot;http://web.stanford.edu/~ouster/cgi-bin/home.php&quot;&gt;John Ousterhout&lt;/a&gt; (he’s in the Computer Science department):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Here’s today’s thought for the weekend.  A little bit of slope makes up for a lot of Y-intercept.  &lt;/p&gt;

  &lt;p&gt;[Laughter]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_558ca9b4e4b0391692169928_1435281858196_y-intercept.pngy-intercept_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;So at a mathematical level this is an obvious truism.  You know if you have two lines, the red line and the blue line and the red line has a lower Y-intercept but a greater slope then eventually the red line will cross the blue line.&lt;/p&gt;

  &lt;p&gt;And if the Y-axis is something good, depending on your definition of something good, then I think most people would pick the red trajectory over the blue trajectory (..unless you think you’re going to die before you get to the crossing point).&lt;/p&gt;

  &lt;p&gt;[Laughter]
&lt;!-- more --&gt;&lt;/p&gt;

  &lt;p&gt;So in a mathematical sense it’s kind of obvious.  But I didn’t really mean in a mathematical sense, I think this is a pretty good guideline for life also.  What I mean is that how fast you learn is a lot more important than how much you know to begin with.  So in general I say that people emphasize too much how much they know and not how fast they’re learning.&lt;/p&gt;

  &lt;p&gt;That’s good news for all of you people because you’re in Stanford and that means you learn really, really fast.  This is a great advantage for you.  Now let me give you some examples.  The first example is: you shouldn’t be afraid to try new things even if you’re completely clueless about the area you’re going into.  No need to be afraid about that.  As long as you learn fast you’ll catch up and you’ll be fine.&lt;/p&gt;

  &lt;p&gt;For example I often hear conversations the first week of class where somebody will be bemoaning, “Oh so-and-so knows blah-blah-blah, how am I ever going to catch up to them?”  Well, if you’re one of the people who knows blah-blah-blah it’s bad news for you because honestly everyone is going to catch up really quickly.  Before you know it that advantage is going to be gone and if you aren’t learning too you’re going to be behind.&lt;/p&gt;

  &lt;p&gt;Another example is that a lot of people get stuck in ruts in their lives.  They realize they’re in the wrong job for them.  I have the wrong job or the wrong spouse or whatever…&lt;/p&gt;

  &lt;p&gt;[Laughter]&lt;/p&gt;

  &lt;p&gt;And they’re afraid to go off and try something new.  Often they’re worried, I’m going to really look bad if I go..&lt;/p&gt;

  &lt;p&gt;[Laughter]&lt;/p&gt;

  &lt;p&gt;I’m kidding about the spouse.  But, seriously people will be afraid to try some new thing because they’re worried they’ll look bad or will make a lot of rookie mistakes.  But, I say, just go do it and focus on learning.  &lt;/p&gt;

  &lt;p&gt;[Laughter]&lt;/p&gt;

  &lt;p&gt;Let me take the spouse out of the equation for now.&lt;/p&gt;

  &lt;p&gt;[Laughter]&lt;/p&gt;

  &lt;p&gt;Focus on the job.&lt;/p&gt;

  &lt;p&gt;Another example is hiring.  Before I came back to academia a couple of years ago I was out doing startups.  What I noticed is that when people hire they are almost always hire based on experience.  They’re looking for somebody’s resume trying to find the person who has already done the job they want them to do three times over.  That’s basically hiring based on Y-intercept.&lt;/p&gt;

  &lt;p&gt;Personally I don’t think that’s a very good way to hire.  The people who are doing the same thing over and over again often get burnt out and typically the reason they’re doing the same thing over and over again is they’ve maxed out.  They can’t do anything more than that.  And, in fact, typically what happens when you level off is you level off slightly above your level of competence.  So in fact you’re not actually doing the current job all that well.&lt;/p&gt;

  &lt;p&gt;So what I would always hire on is based on aptitude, not on experience.  You know, is this person ready to do the job?  They may never have done it before and have no experience in this area, but are they a smart person who can figure things out?  Are they a quick learner?  And I’ve found that’s a much better way to get really effective people.&lt;/p&gt;

  &lt;p&gt;So I think this is a really interesting concept you can apply in a lot of different ways.  And the key thing here I think is that slow and steady is great.  You don’t have to do anything heroic.  You know the difference in slopes doesn’t have to be that great if you just every day think about learning a little bit more and getting a little bit better, lots of small steps, its amazing how quickly you can catch up and become a real expert in the field.&lt;/p&gt;

  &lt;p&gt;I often ask myself: have I learned one new thing today?  Now you guys are younger and, you know, your slope is a little bit higher than mine and so you can learn 2 or 3 or 4 new things a day.  But if you just think about your slope and don’t worry about where you start out you’ll end up some place nice.&lt;/p&gt;

  &lt;p&gt;Ok, that’s my weekend thought.&lt;/p&gt;

  &lt;p&gt;[Applause]&lt;/p&gt;
&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>&quot;A delicate mix of chess... and bear wrestling&quot;</title>
   <link href="https://josh.works/climbing/2014/11/02/a-delicate-mix-of-chess-and-bear-wrestling/"/>
   <updated>2014-11-02T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2014/11/02/a-delicate-mix-of-chess-and-bear-wrestling</id>
   <content type="html">&lt;p&gt;Over the last few weeks I’ve found myself needing to break down “why” of sport climbing (I’ll refer to sport as “lead” climbing from here on out. Sorry, trad climbers).
If someone is enjoying top roping, (or bouldering) why should they take on the work of learning to lead climb, lead belay, and then deal with all the mental baggage that accompanies said switch.&lt;/p&gt;

&lt;p&gt;Could you come up with more than ten reasons for someone to do start leading?&lt;/p&gt;

&lt;p&gt;Here’s my list:
more&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Increase the challenge of climbing&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Climb overhanging lines&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Improve your overall abilities (resting, pacing, “flow”)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Your friends lead climb, and you want to be like them.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You want to be a better climber, and good climbers seem to all lead climb&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You don’t want to have to walk to the top of the cliff again to set up a TR!&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You want to avoid feeling like you’re “holding back” friends that lead climb.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You think (for some reason) that big falls look exciting (and intimidating)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Every picture/video of any top climber (if they’re using a rope) shows leading. Alex Honnold doesn’t count.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, what may be the most compelling reason:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Leading is a logical and necessary next step to improving your climbing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Honestly, I’m still struggling to build a case for leading. I’ll just leave it at this - a segment of the general population climbs rocks (it’s hard to say why). A segment of that population of climbers lead. They (you) don’t need any convincing, they just do.&lt;/p&gt;

&lt;p&gt;Isn’t this line of reasoning similar to why we climb anyway? Explaining rock climbing to a non-climber is not as easy as you might think.&lt;/p&gt;

&lt;p&gt;The academic “I enjoy the mental and physical challenges associated with this sport” both 1) applies to almost anything (golf, beach combing, unicycling) and 2) doesn’t quite explain why you’ll drive 12 hours to scare the living snot out of yourself just to get to the top of a piece of rock via one method rather than another.&lt;/p&gt;

&lt;p&gt;Why do we rock climb and not hike, or run, or ride a bike? Why do we spend the money and time and blood, sweat, and tears, on this pursuit?&lt;/p&gt;

&lt;p&gt;These are compelling reasons to me:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;We have pretty poor hand-eye coordination, and rock moves slow enough for most of us to catch it (Applies to just me? ok, then.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Some of us are too short/small for football and basketball.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We usually enjoy the thrill of difficult moves high in the air&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Climbers like being able to be delicate and graceful, without having to get into ballet or dance (but there is plenty of overlap between those activities and climbing)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We enjoy the overlap between thinking hard and trying hard. (A friend calls climbing “a delicate mix of chess… and bear wrestling”)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We get to see things that we wouldn’t otherwise see, and from perspectives we wouldn’t otherwise get.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It’s 
extremely motivating to see a return on investment of all the work and time spent climbing&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;The community (as a whole) is encouraging, warm, and friendly.&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Our small group of climbing friends shares a bond we wouldn’t otherwise have.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Be it an “easy” top rope or surviving a multi-pitch epic in freezing rain - climbing brings us together in a way that our day-to-day would 
never do. Similar to how boot camp builds bonds in soldiers, suffering together, working together, encouraging each other, and keeping each other alive (you do that when you belay - did you know that?) builds bonds.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Participating in a sport where you would die if you made a serious mistake sort of makes you feel alive. (Nor sure what this says more about: climbing, or the people who identify with this as a reason for climbing.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Climbing is “easy” in terms of participation. The gear takes up minimal space (all my climbing gear fits in a single medium-sized plastic bin) and is easy to transport. (Kayaks, anyone?) Anyone can put up a hangboard and have an effective training tool. “Practicing” skiing away from a mountain, in the off season, seems a bit harder.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Climbing gyms. Lets be honest - as much as our community “discusses” proper gym-climbing ethics, grades, what people should/should not wear in the gym, setting, reachy and dynamic and “unfair” moves, sexism, tape vs. colored routes, and all that other stuff - we all care so much because we love our local climbing gym. The people there represent so much to us. I would not be a happy camper if I lost that community.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We love being able to get stronger, more technically proficient, or more mentally “strong”, and all of those can improve our climbing.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We love being able to all participate in the same event, even if we climb at different levels. If I go for a run with my much stronger running friend, he’ll leave me in the dust well before he finishes his 40 mile run. (Not kidding about the distance.) When we climb, no matter how big or small a difference in our climbing abilities, we can each find good routes.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Phew. That’s a lot of reasons, but I 
still think this is missing the point.&lt;/p&gt;

&lt;p&gt;I turned to Google to solve this existential question. Here’s the best I could find.&lt;/p&gt;

&lt;p&gt;Question: Why climb?&lt;/p&gt;

&lt;p&gt;Answers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Because it’s there&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Because I can&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Because it’s good for me&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Because it is “real” (raw, primal, etc.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;For the mental challenges&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;For the sense of accomplishment&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;To get exhausted&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Because I must&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above answers apply to many sports. Not just climbing. So, I’ll close with this quote from George Mallory:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you have to ask the reason why…you won’t understand the answer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There you have it - a completely non-conclusive reason for lead climbing, and climbing in general.&lt;/p&gt;

&lt;p&gt;Why do you climb?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Do Not Work in Isolation</title>
   <link href="https://josh.works/growth/2014/10/29/do-not-work-in-isolation/"/>
   <updated>2014-10-29T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2014/10/29/do-not-work-in-isolation</id>
   <content type="html">&lt;p&gt;I fear criticism. I don’t have nightmares about it, and I’m not (too) crippled by a desire to avoid it, but I absolutely don’t like criticism, or being disappointing, or any of those things.
If my ego were making all decisions, I would move even slower than I do today into “new” territory. I probably wouldn’t read much, or try new things, or meet people. I’d play a lot of video games. (Actually… it’s embarrassing to be pwnd by 13 year old boys when playing online - maybe I’ve left video games to protect my ego.)&lt;/p&gt;

&lt;p&gt;I go to great, sneaky lengths to avoid criticism. I’ll even do things like this (talk about fearing criticism) to avoid doing other things 
that will expose me to criticism and rejection. Seriously. I’m avoiding criticism right now by writing this.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you are not embarrassed by the first version of your product, you’ve launched too late.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;more&lt;/p&gt;

&lt;p&gt;Reid Hoffman said that. He built LinkedIn. Regardless of how much you dislike LinkedIn, it’s an impressive accomplishment.&lt;/p&gt;

&lt;p&gt;To this end, I’m working on a small project over at www.belaybetter.com. The task I am avoiding right now is reaching out through my network to get in touch with people I’ve never met, to talk to them about lead climbing, falling, and fear. This would be my second “pilot group” to discuss the material with. This will also be the first group that I don’t personally know.&lt;/p&gt;

&lt;p&gt;My biggest fear is that I’ll reach out and no one will write back. I fear rejection. It’s easier to “work” on this project in isolation. It’s not scary to do that. But I know getting feedback from real people (silence is feedback) is far, far more helpful to me right now than additional isolated work. (If you lead climb, I’d love to talk to you - shoot me an email (joshthompson@hey.com) or 
&lt;a href=&quot;https://twitter.com/josh-works&quot;&gt;tweet at me&lt;/a&gt; or something.)&lt;/p&gt;

&lt;p&gt;Every time I’ve ever reached out to anyone to get help on a given project, it’s been intimidating, scary, and 100x more helpful than any other single action I could have taken. (Side note - the best money you can ever spend is to treat a wise old(er) person to coffee/lunch/dinner to pick their brain about what they’ve done. Do they have a good marriage? Ask about it. Are they accomplished at work? Ask why. Do they have skills? Ask how they built them. Do they seem to enjoy life? Ask about it.)&lt;/p&gt;

&lt;p&gt;I guess I should stop avoiding criticism now…&lt;/p&gt;

&lt;p&gt;-Josh&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A Small Goal is Better than a Grand Plan</title>
   <link href="https://josh.works/growth/2014/10/21/a-small-goal-is-better-than-a-grand-plan/"/>
   <updated>2014-10-21T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2014/10/21/a-small-goal-is-better-than-a-grand-plan</id>
   <content type="html">&lt;p&gt;We all have grand plans. Who’s future projection of themselves goes something like this: “One day, when I’m rich (goal one), location independent (goal two), and married to a fabulous woman (goal three), I will travel the world (goal four) while exploring my hobby of &lt;strong&gt;__&lt;/strong&gt;_ (goal five).”
Sounds nice, but this narrative assume so much, and is so ill-defined. With such a disconnect between 
here and 
there , why wouldn’t you just go play video games all evening. Again. We’ll work on that stuff later.&lt;/p&gt;

&lt;p&gt;I suspect many of us struggle with the above problem. Great big grand goals completely disconnected from reality. No clue where to begin, and it’s all daunting anyway. So lets go do something else.&lt;/p&gt;

&lt;p&gt;Over the last few years, I’ve grown less-bad at breaking big problems into little problems, and dealing with those small things. I’ve made progress towards some big life goals (I married a fabulous woman!) and have plenty of progress to make towards other goals. (I don’t yet own a jet/boat/villa.)
more&lt;/p&gt;

&lt;h3 id=&quot;motionis-easy-can-be-pointless&quot;&gt;Motion is Easy, Can be Pointless&lt;/h3&gt;

&lt;p&gt;The last two years have been marked by completely disconnected, insignificant bits of progress towards over a dozen different goals. I’ve learned a little Excel, basic HTML and CSS, Python, Ruby, database management, SEO optimization, amateur-at-best handstands, a little bit of business consulting skills, public speaking skills, amateur-at-best running skills, intermediate-at-best Krav Maga skills, too many hours of Call of Duty, a bunch of books, a brief foray into meditation/mindfulness, “mental math”, learned a few chords on the Ukulele, spent far too many hours on Reddit, wrote (and than abandoned) a small book, filmed (but never edited) climbing instructional videos, own (and have ideas for) a half-dozen domains, read a few books on stock investing, then real estate investing, spent a ton of time on work-related side projects, and who knows what else.&lt;/p&gt;

&lt;p&gt;The above represents a tremendous amount of activity, but zero progress. I can carry on a half-intelligent conversation on a few different subjects, but in none of the above areas have I had a significant impact on anyone’s life, except for my own.&lt;/p&gt;

&lt;p&gt;There are two items on the list that belong in a category of their own. I’ve undertaken only two things with consistency and intentionality, and I (if no one else) have derived significant benefit from these things… and I just spent twenty minutes on Twitter. Where was I?&lt;/p&gt;

&lt;p&gt;Oh, right. Important things, consistency, impacting lives. Climbing and writing. Climbing is, well… it’s climbing. Writing does, occasionally, bring a clarity to my own thinking. I sincerely hope to be helpful/useful to others, but writing is without peer for solidifying my own thinking. So I write. About one in three times I hit the “publish” button.&lt;/p&gt;

&lt;p&gt;So what’s the solution? How does any of us resolve the tension between the 
what is and the 
what could be.&lt;/p&gt;

&lt;h3 id=&quot;think-of-the-slope-not-the-y-intercept&quot;&gt;Think of the Slope, not the Y-Intercept&lt;/h3&gt;

&lt;p&gt;Stanford Professor John Ousterhout had a reputation for lectures categorized as “thoughts for the weekend”. One of his most memorable was titled 
&lt;a href=&quot;http://www.quora.com/What-are-the-most-profound-life-lessons-from-Stanford-Professor-John-Ousterhout&quot;&gt;A little bit of slope makes up for a lot of y-intercept&lt;/a&gt;. Please, read his lecture. It’s very short. His summary paragraph:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I often ask myself: have I learned one new thing today?  Now you guys are younger and, you know, your slope is a little bit higher than mine and so you can learn 2 or 3 or 4 new things a day.  But if you just think about your slope and don’t worry about where you start out you’ll end up some place nice.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This quote, this idea, is the resolution between what is and what can be. Try to learn two or three new things a day, and you’ll end up some place nice.*&lt;/p&gt;

&lt;p&gt;-Josh&lt;/p&gt;

&lt;p&gt;*The required qualifying statements is a whole other article.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Can You Recover From Months (YEARS!) of Not Climbing?</title>
   <link href="https://josh.works/climbing/2014/10/20/can-you-recover-from-months-years-of-not-climbing/"/>
   <updated>2014-10-20T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2014/10/20/can-you-recover-from-months-years-of-not-climbing</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5fe4b0278244cea1e3_1434910448785_2014-10-11-09-44-17.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A few weeks ago, I headed into the gym thinking that I felt a little off-kilter. I’d not climbed in a week, I though, and maybe I was getting weaker or something. Turns out that wasn’t the problem - I had actually been climbing too much, and was feeling it.
This is an odd mistake, because I’ve recently had the opportunity to end a 
twenty month hiatus from climbing, and I’ve felt nothing but good as I ease back into the sport.&lt;/p&gt;

&lt;p&gt;I had felt strong when I stopped climbing in 2012, and I felt comparatively weak when I got back into a regular routine two months ago. For perspective, my max onsight dropped a full number grade, and my bouldering fell four grades. As you would expect, my “endurance” was more wishful thinking than anything else. This was all a 
substantial decrease in ability. That’s the bad news, and it’s just as bad for you, whenever you take a break.
more&lt;/p&gt;

&lt;p&gt;Here’s the good news - everything else I had learned while climbing I could still use (though it needed a little brushing up.) I had the footwork I had when I had climbed much stronger. I still remembered how to use dynamic movement, and pace myself while climbing. You still have these things too.&lt;/p&gt;

&lt;p&gt;Here’s the best news - your body “remembers” what it could once do. As long as you still weigh what you once did, you should be able to re-train yourself to that level of fitness fairly quickly.&lt;/p&gt;

&lt;p&gt;So, if you’re getting back on the horse from a long break - please don’t feel discouraged. Get after it. Be excited to be climbing again, rather than disappointed you are not climbing what you used to. You’ll be there soon enough.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Letter to Two Climbers (Part 2)</title>
   <link href="https://josh.works/growth/climbing/2014/10/18/letter-to-two-climbers-part-2/"/>
   <updated>2014-10-18T00:00:00+00:00</updated>
   <id>https://josh.works/growth/climbing/2014/10/18/letter-to-two-climbers-part-2</id>
   <content type="html">&lt;p&gt;Hello again, it’s me! We met climbing a few days ago.
&lt;a href=&quot;/blog/2014/10/12/letter-to-two-climbers-part-1&quot;&gt;I wrote you a letter&lt;/a&gt;, but didn’t want to leave it on such a pessimistic note.
First, I commend you both for getting out there. You both invested a lot in making that weekend happen. You acquired the correct tools, and spent money to do so. You spent time learning how to use your gear, and building the skills you needed to climb outside. You spent a lot of 
time driving to the crag, spending a night or two out there, and climbing for a few days. (Oh, and gas money, food, and all that.)&lt;/p&gt;

&lt;p&gt;Now - not only did you do all those things, but you 
limited your other options. You could have spent that money on anything else. (Literally. That’s what’s cool about money! You can spend it for just about anything. Even weed!) You could have spent your 
time doing anything
 else. You truly had a universe of options to spend your time and your money, and you spent it on climbing.
more&lt;/p&gt;

&lt;p&gt;A lot of climbers get pretty uppity and exclusive, and I’m just as often an offender, but I sincerely thank you. Climbing’s pretty rad, and I’m 
thrilled to see others getting after it! (And who am I to claim exclusive rights to the sport? I’ve not done anything amazing. If all I’ve got on someone is being 
older or having done it 
longer, that’s a pretty weak case.)&lt;/p&gt;

&lt;p&gt;I’m also quite glad you are both safe. No one wants to get injured, or watch someone get injured.&lt;/p&gt;

&lt;p&gt;I’ve been around the block a few times, made plenty of dumb (and not so dumb) mistakes, and learned from some pretty smart people, so, please, carefully consider what I share.&lt;/p&gt;

&lt;p&gt;If we keep a few principles in mind, we will stay safe. And, we’ll have fun. And we’ll get better at climbing.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Fear can keep you alive. &lt;/strong&gt;
Fear is a little (or big) alarm going off saying “Danger! Danger! Something bad can happen!” Last I checked, just about everything we do while climbing has the potential for disaster. We spend minutes or hours at a height where an unrestrained fall would be 100% fatal. I’d say if you 
don’t have an alarm bell going off, you’ve got something wrong with you. So, pay close attention to your fear. It monitors much more than your conscious attention can, and consequently picks up a lot more from your environment than you could ever consciously identify. Don’t poo poo the universe’s most impressive bit of biology giving you a warning. This would be arrogance, not bravery.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Never go too far beyond your comfort zone. &lt;/strong&gt;
Want to know what happens when you go too far beyond your comfort zone? 
&lt;a href=&quot;https://www.youtube.com/results?search_query=fail+videos&quot;&gt;Best case, you end up on YouTube&lt;/a&gt;, and everyone laughs. Worst case, you are dead. (Or very close to dead.) Public speaking can be scary, but it’s unlikely you’ll end up dead. Screwing up a technical ascent of K2 will leave you dead nine times out of ten. Sport climbing is closer to climbing K2 than it is to public speaking.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Always go beyond your comfort zone. &lt;/strong&gt;
You know what happens when you don’t go beyond your comfort zone? Nothing. And that should scare you just as much as going too far beyond your comfort zone.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s it for now. Soon, I’ll cover how to stay in that sweet spot of a comfort zone. Stay tuned.&lt;/p&gt;

&lt;p&gt;Affectionally yours,&lt;/p&gt;

&lt;p&gt;-Josh&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Letter to Two Climbers (Part 1)</title>
   <link href="https://josh.works/growth/climbing/2014/10/12/letter-to-two-climbers-part-1/"/>
   <updated>2014-10-12T00:00:00+00:00</updated>
   <id>https://josh.works/growth/climbing/2014/10/12/letter-to-two-climbers-part-1</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5ee4b0278244cea1dc_1434910458486_2014-10-11-15-41-17.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hello!
We met recently. (I gave Justin tape after he cut his toe and didn’t have a bandaid.)&lt;/p&gt;

&lt;p&gt;You and your partner were climbing a route near me and my partner. One of you (I’ll call Charles, because he had a British accent) was trying 
so hard to figure out some moves high above his last bolt. He was scared to fall. Very scared. Yet he kept trying. I was impressed with Charles’ tenacity.&lt;/p&gt;

&lt;p&gt;The other one (I’ll call you Justin) sort of screwed over Charles. You sent him up a climb that was too hard for him to do, and you didn’t let him back off the climb. You made it 
sound like if he didn’t finish, you were not going to be able to get your quickdraws back.&lt;/p&gt;

&lt;p&gt;Charles was scared, and you offered no consolation.&lt;/p&gt;

&lt;p&gt;The above is excusable. What happened next is not.
more&lt;/p&gt;

&lt;p&gt;Charles fell. And you, Justin, almost dropped him. My partner and I watched in horror as Charles fell from 50 feet up to about fifteen feet. You lost control of the break strand and got it back just before Charles decked.&lt;/p&gt;

&lt;p&gt;I don’t think Charles even realized he’d been dropped. You must have not told him anything about how falling on lead works. If you had, he would have known something terribly wrong happened.&lt;/p&gt;

&lt;p&gt;I know why you dropped Charles. You were distracted. You hurt yourself when you hit the wall last time he fell, so you were paying more attention to not crashing into the wall than anything else. You were trying to keep track of a lot of moving pieces. But it’s inexcusable to drop your climber.&lt;/p&gt;

&lt;p&gt;Why this letter? I want this to be a learning experience. I’m sure you’ve both learned a lot, but I’m afraid Charles is learning that climbing is difficult, scary, and dangerous. You are learning disdain for those who are not as strong as you.&lt;/p&gt;

&lt;p&gt;There’s a better way.&lt;/p&gt;

&lt;p&gt;You obviously don’t want to hurt anyone while lead climbing (and belaying) but you also want to have fun, right? It did not look like either of you were having much fun.&lt;/p&gt;

&lt;p&gt;I want you to have fun climbing. I want you to climb as hard as you can. And I want you to do this all safely. We’ll cover how to make this happen soon, but for now - please know it is possible for 
 of you, both Charles and Justin, to have so much more fun climbing, and to climb so much harder. Even if you can’t imagine climbing without fear right now, stick with me, and we’ll get you there.&lt;/p&gt;

&lt;p&gt;Until next time,&lt;/p&gt;

&lt;p&gt;-Josh&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/blog/2014/10/18/letter-to-two-climbers-part-2&quot;&gt;Read Part Two&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Your &quot;Community&quot; Should Not Be Local</title>
   <link href="https://josh.works/growth/home/2014/10/06/your-community-should-not-be-local/"/>
   <updated>2014-10-06T00:00:00+00:00</updated>
   <id>https://josh.works/growth/home/2014/10/06/your-community-should-not-be-local</id>
   <content type="html">&lt;p&gt;When Kristi and I were planning our move from Maryland to Colorado, the biggest challenge we anticipated was no longer being a short drive away from my sister, 
&lt;a href=&quot;http://jenniferdthompson.com/&quot;&gt;Jen&lt;/a&gt;, and Kristi’s brother, 
&lt;a href=&quot;https://twitter.com/busterkeaton&quot;&gt;Richard&lt;/a&gt;. There are a few reasons, however, that we decided the benefits of moving outweighed the costs.&lt;/p&gt;

&lt;h2 id=&quot;your-community-is-critical-even-if-you-dont-think-it-is&quot;&gt;Your Community is Critical (Even if you don’t think it is)&lt;/h2&gt;

&lt;p&gt;First, it is not an option for us to be without these relationships. (There are a few other dear friends in our lives, but I’ll get to that in a minute.) Even when we were in Maryland, we had to be intentional to spend quality time with Jen, Richard, and others. Why be intentional? We want to surround ourselves with people that encourage us to strive, in all areas of our lives, for more. I firmly believe that 
&lt;a href=&quot;http://lifehacker.com/5926309/how-the-people-around-you-affect-personal-success&quot;&gt;we will be the average of our five closest friends&lt;/a&gt;, so it’s important to choose wisely.&lt;/p&gt;

&lt;p&gt;These relationships are critical to Kristi and I not because they’re fun (they are) but because we can be vulnerable and open within these relationships. It takes work, and trust, to build that vulnerability into a relationship, and once it’s there, we’re not about to let it go.
more&lt;/p&gt;

&lt;h2 id=&quot;your-community-does-not-need-to-be-local&quot;&gt;Your Community Does NOT Need to be Local&lt;/h2&gt;

&lt;p&gt;The very thing that makes these relationships significant is the thing that allows them to be relatively unaffected by distance and time zones. The vast majority of the time I spoke with Jen or her new husband Andrew was on the phone. It doesn’t matter if I’m ten minutes away or 22 hours away - they are all just a phone call away.&lt;/p&gt;

&lt;p&gt;The intentionality is still there, but now, instead of someone driving to someone else’s house for dinner, we call them on Skype. If anything, we’re even more intentional in our friendship with this distance. We’ve found a few good friends, and to us, it doesn’t really matter where in the world they are. If they moved or we do, the relationship continues unchanged.&lt;/p&gt;

&lt;h2 id=&quot;who-is-your-community&quot;&gt;Who is Your Community?&lt;/h2&gt;

&lt;p&gt;If you could fast-forward to the end of your life, and knew that you’d be the average of your five closest friends, who would you choose to be those friends? Would you be happy with that average, or disappointed?&lt;/p&gt;

&lt;p&gt;Of my closest friends, if I were to end up as the average of them, I’d be thrilled. I’ve been blessed with a small group of smart, hard-working, vulnerable men who invest in me regularly. To me, this group of friends is worth more than any job or accomplishment.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Why Your Belayer is Keeping You from Climbing Hard(er)</title>
   <link href="https://josh.works/climbing/2014/10/01/why-your-belayer-is-keeping-you-from-climbing-harder/"/>
   <updated>2014-10-01T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2014/10/01/why-your-belayer-is-keeping-you-from-climbing-harder</id>
   <content type="html">&lt;p&gt;Since climbing regularly again (!!!), I’ve observed lots of belaying in the gym. I can’t walk up to a stranger and say “Excuse me, sir, I noticed that your poor belaying is totally crippling your climber’s ability to try hard, and actively eliminating any hope you had of improvement in this sport.”
In fact, I don’t even want to. When I see bad belaying, it doesn’t bother me, unless it’s actively courting grave injury. It does make me feel sorry for the climbers, though, because it’s really hard to improve at climbing with a bad belayer.&lt;/p&gt;

&lt;p&gt;There’s a number of issues surrounding poor belaying, but they all tie back to either 
trust or 
competence.
more&lt;/p&gt;

&lt;p&gt;The two 
can operate independent of each other. You can have a competent belayer that you don’t trust, or you can trust an incompetent belayer (whoops). Or, of course, you can not trust an incompetent belayer (good idea) or, finally, trust a competent belayer. (Nirvana!).&lt;/p&gt;

&lt;p&gt;While you can easily spot signs of an incompetent belayer, it’s much harder to determine if they are competent. Then, even if you’ve established their competence, it takes time to build trust in them.&lt;/p&gt;

&lt;p&gt;Here’s why bad belaying keeps you from improving - even if you don’t actively consider the skill of your belayer, your subconscious knows if they are competent and trustworthy. And if you’ve not actively considered their skill, you probably don’t trust them, and they may be incompetent.&lt;/p&gt;

&lt;p&gt;Here are some indicators of unskilled (and untrustworthy) belaying:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Lets the rope hang between the climber’s legs when climber is lower than the third bolt.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Short ropes climber 
and doesn’t know it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Spikes the climber 
and doesn’t know it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Keeps rope too tight or too loose.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now - all of these are easily fixed. So - this is where 
trust comes in. If your belayer is making these mistakes, and is either unaware or unwilling to fix them, why would you trust them? None of these mistakes puts the climber in grave danger, but all can make climbing 
 less fun.&lt;/p&gt;

&lt;p&gt;If your belayer is competent, and makes none of the above errors, that’s enough to make you think they’re not only competent, but trustworthy as well. Without 
trusting your belayer, you cannot push yourself hard enough to improve at climbing.&lt;/p&gt;

&lt;p&gt;There’s a whole other list related to trustworthy belaying.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Three Levels of Competence</title>
   <link href="https://josh.works/climbing/2014/09/29/three-levels-of-competence/"/>
   <updated>2014-09-29T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2014/09/29/three-levels-of-competence</id>
   <content type="html">&lt;p&gt;Raise your hand if you’d like to be better at climbing.
Yeah. Me too.&lt;/p&gt;

&lt;p&gt;I’ve spent an unusual amount of time working with beginners, to help them improve at climbing. I’ve also worked a lot with (what I would consider to be) intermediate climbers, so 
can get better. I’ve certainly watched 
advanced climbers do their thing, but I’m not sure how much I have to offer to them.&lt;/p&gt;

&lt;p&gt;My quick observation about climbing, existing skill levels, and improvement is this:&lt;/p&gt;

&lt;p&gt;At a most basic level, a climber needs to build movement skills, and needs to learn to belay. Strength is not a big part of this equation, because most “easy” climbing is not a function of strength, but technique. Fortunately, just by building this base of movement skills, the climber will get stronger.&lt;/p&gt;

&lt;p&gt;I would expect a beginner climber to learn the basics of hip rotation, flagging/smearing, and climbing with straight arms. Everything else is icing on the cake.&lt;/p&gt;

&lt;p&gt;As far as technical skills, a beginner should be able to top rope belay.&lt;/p&gt;

&lt;p&gt;Once the climber has mastered the above skills, they’re a solid candidate for being an intermediate climber. Movement skills will be refined, especially as climbs take the feet farther and farther out from under the climber. (Not necessarily due to steepness, but due to large horizontal movements.) This will place more stress on the upper body, so the climber will keep getting stronger. The climber will get comfortable with side pulls, gastons, heel hooks, and all those fun things. (Including all the movements we have to do that defy categorization. The beached whale, anyone?)&lt;/p&gt;

&lt;p&gt;Our climber will also be picking up additional technical skills. The climber will learn to lead belay and lead climb, and starts getting into the mental game that permeates this strange sport.&lt;/p&gt;

&lt;p&gt;So far, I’ve not mentioned anything about grade. How hard does our climber need to climb to be considered intermediate?&lt;/p&gt;

&lt;p&gt;I don’t know. I am of the opinion that if they can handle the above technical skills, they’ll find themselves climbing harder grades. I’m hesitant to put a grade on any stage for many reasons, but mostly because focusing on technique will carry us all farther than focusing on grades.&lt;/p&gt;

&lt;p&gt;An easy example is the mythical grade of 5.12. Most people don’t think they are STRONG enough to climb 5.12, but I think most people just are not good enough at climbing to climb 5.12. The strength comes as they improve their technique. If someone just tries to get really really strong, without focusing on their technique, they’ll never get anywhere.&lt;/p&gt;

&lt;p&gt;Phew. Brain dump. All done.&lt;/p&gt;

&lt;p&gt;Oh yeah - that third level? That’s advanced climbers. Not sure what their defining characteristics are, but I’ll let you know when I get there. :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Don&apos;t Focus on the Present</title>
   <link href="https://josh.works/climbing/2014/09/27/dont-focus-on-the-present/"/>
   <updated>2014-09-27T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2014/09/27/dont-focus-on-the-present</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5ee4b0278244cea1d9_1434910446537_2014-09-23-11-40-39.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If you accept the premise that training 
cycles are the method by which you will improve your climbing, you 
should be able to focus less on the day-by-day fluctuation in your performance.
At least, I should be able to, since I accept that premise. Yet I still struggle to not be moderately disappointed if I don’t perform as I hope. The antidote is thus:&lt;/p&gt;

&lt;p&gt;Build a plan. Evaluate success on how hard that plan pushes you, while still being possible. Then follow that plan.&lt;/p&gt;

&lt;p&gt;I missed the mark in a recent session because I couldn’t put together a plan that was challenging 
and possible. One or the other was easy, but I couldn’t get both.&lt;/p&gt;

&lt;p&gt;My goal was a ten-move sequence on a systems board that was very challenging, but could be barely be done repeatedly with 60 seconds of rest between attempts.&lt;/p&gt;

&lt;p&gt;Next time.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Injury Impedes Improvement</title>
   <link href="https://josh.works/climbing/2014/09/24/injury-impedes-improvement/"/>
   <updated>2014-09-24T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2014/09/24/injury-impedes-improvement</id>
   <content type="html">&lt;p&gt;Kristi and I have been in Colorado for three months, I’ve been climbing regularly for two, I am back in shape and it feels good.&lt;/p&gt;

&lt;p&gt;I am tempted to throw myself into climbing again. To climb every day, or maybe every other day, and finish every session with training. But here’s the thing… I want to take the “long view” of climbing. I want to be climbing way harder in ten years than I am right now. I have every reason to think that this is totally possible, as long as I stay injury-free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Injury Impedes Improvement&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest barrier to continual improvement is injury. We all actively avoid injury, but other than trying to not hit the ground too hard, I’ve never been systematic in this pursuit.&lt;/p&gt;

&lt;p&gt;In taking the “long view”, I’m trying to think more in training 
cycles rather than just 
training.&lt;/p&gt;

&lt;p&gt;Previously, I would climb every other day, or sometimes every day, and try to work hard (and haphazard) training into every session. I’d spend time on the campus boards until I felt elbow tendonitis creeping in. Next, I’d spend a few weeks on the finger board, and then back to campusing, and I’d always just move to the next thing when I had pain in one area of my body or another.&lt;/p&gt;

&lt;p&gt;This method of training is a great way to get full-blown elbow tendonitis, or damage a tendon, or pull a muscle. Assuming we are all humans, we could get injured in two ways:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Overuse injury&lt;/strong&gt;
. Your shoulders, fingers, and especially elbows seem sensitive to tendonitis. We’ve all felt the onset of elbow tendonitis (some more often than others).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Too strong injury&lt;/strong&gt;
. As humans, we are quite adaptive to our environment. This adaptivity is 
usually great (Thanks, great great great great grandpa for living long enough to have some kids!) but if our muscles get stronger faster than our tendons get stronger, we expose our tendons to unsafe forces. (Our muscles have a lot of blood flow. Tendons have almost none. That should tell you that one can develop faster than the other.)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cycles are your Friend&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your muscles can grow strong faster than your tendons, this allows you to plot out what your improvement could look like. Rather than being a smooth up-and-to-the-right line, your strength should look more like stair steps. Get stronger in a short period of time, and then remain at that level for a period of time, to give your body time to catch up. If you skip this “waiting” period”, you’ll just outpace your tendon’s capabilities by a larger and larger margin. Inevitably, you’ll be psyched on some move you can do that you couldn’t do before, give it 100% effort, and POP, something’s strained, at best, or, at worst, ruptured/torn.&lt;/p&gt;

&lt;p&gt;I don’t want to do this. So I’m thinking a lot about what these cycles will look like. More to come.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5ee4b0278244cea1d6/1434910449964/2014-09-01-16-08-14.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5ee4b0278244cea1d6_1434910449964_2014-09-01-16-08-14.jpg_&quot; alt=&quot;Post-climb snack with Alex King at Eldo.&quot; /&gt;&lt;/a&gt; Post-climb snack with Alex King at Eldo.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>$150 Custom-Made Standing Desk</title>
   <link href="https://josh.works/home/2014/07/30/150-custom-made-standing-desk/"/>
   <updated>2014-07-30T00:00:00+00:00</updated>
   <id>https://josh.works/home/2014/07/30/150-custom-made-standing-desk</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5de4b0278244cea1b8/1434910449380/2014-04-07-13-31-39.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5de4b0278244cea1b8_1434910449380_2014-04-07-13-31-39.jpg_&quot; alt=&quot;My desk/our kitchen table&quot; /&gt;&lt;/a&gt; My desk/our kitchen table&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Standing_desk&quot;&gt;Standing desks&lt;/a&gt; are 
&lt;a href=&quot;http://www.forbes.com/sites/houzz/2012/08/01/a-healthier-way-to-work-stand-up-desks/&quot;&gt;all&lt;/a&gt; the 
&lt;a href=&quot;http://lifehacker.com/5879536/how-sitting-all-day-is-damaging-your-body-and-how-you-can-counteract-it&quot;&gt;rage&lt;/a&gt;. (I’m still waiting for 
&lt;a href=&quot;http://techcrunch.com/2013/03/03/why-every-office-should-switch-to-walking-desks/&quot;&gt;walking desks to catch up&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;Kristi and I outfitted our space with reclaimed furniture from Craigslist (also known as “cheap”), so we wanted to keep it going with a desk. My setup at our kitchen table was less than ideal, and we’d been wanting a desk for me for a while. We saw that 
&lt;a href=&quot;http://www.ourfreakingbudget.com/150-dollar-custom-made-desk/&quot;&gt;others have commissioned desks&lt;/a&gt; with great success, so we gave it a shot.&lt;/p&gt;

&lt;p&gt;A few emails and $150 later, I’ve got a standing desk. There are 
&lt;a href=&quot;http://lifehacker.com/5919778/build-your-own-sturdy-good-looking-standing-desk-for-less-than-25&quot;&gt;guides for building $25 standing desks,&lt;/a&gt; but since my work station is a part of our living room, we wanted something that looked OK.&lt;/p&gt;

&lt;p&gt;One Craigslist add later, we had a desk. We paid Drew Morris $150 for the desk, and are thrilled. (If you’re in the Denver area, and want a standing desk, reach out to Drew.Morris82( )yahoo.&lt;/p&gt;

&lt;p&gt;I’ve been using the desk for only half a day, so I don’t have much to say, other than I really like it so far. More information to come soon!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5ee4b0278244cea1bf/1434910447469/img_20140728_202954358.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5ee4b0278244cea1bf_1434910447469_img_20140728_202954358.jpg_&quot; alt=&quot;No longer on the kitchen table!&quot; /&gt;&lt;/a&gt; No longer on the kitchen table!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tiny Habits take 2</title>
   <link href="https://josh.works/growth/2014/07/27/tiny-habits-take-2/"/>
   <updated>2014-07-27T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2014/07/27/tiny-habits-take-2</id>
   <content type="html">&lt;p&gt;Dr. BJ Fogg runs 
&lt;a href=&quot;http://tinyhabits.com/&quot;&gt;Tiny Habits&lt;/a&gt;, a one-week course on building new habits.
Since most of what we do is governed by habits, it is reasonable to study how to build new ones, or replace bad ones.&lt;/p&gt;

&lt;p&gt;I 
&lt;a href=&quot;/blog/2013/01/21/tiny-habits&quot;&gt;have done his course before&lt;/a&gt;, and had success. I have been reading 
&lt;a href=&quot;http://www.amazon.com/Free-Spending-Your-Money-Matters/dp/0830836497&quot;&gt;Free&lt;/a&gt;with Kristi and some good friends of ours, and want to work more small but substantive things into my life. I am starting small, with the recommended item of flossing being Tiny Habit #1. I want to learn the methodology before trying too many habits of my own.&lt;/p&gt;

&lt;p&gt;Habit #2 is “Mindful Breathing”, a la Google Employee Chade Meng Tan’s book 
&lt;a href=&quot;http://www.amazon.com/Search-Inside-Yourself-Unexpected-Achieving/dp/0062116924&quot;&gt;Search Inside Yourself&lt;/a&gt;. He writes about 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Emotional_intelligence&quot;&gt;Emotional Intelligence&lt;/a&gt;. Worth the read.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Taking the Plunge with Colemak</title>
   <link href="https://josh.works/jobs/growth/2014/07/25/taking-the-plunge-with-colemak/"/>
   <updated>2014-07-25T00:00:00+00:00</updated>
   <id>https://josh.works/jobs/growth/2014/07/25/taking-the-plunge-with-colemak</id>
   <content type="html">&lt;p&gt;This entire post is written in 
&lt;a href=&quot;http://colemak.com/&quot;&gt;Colemak&lt;/a&gt;.
I am aiming to write at least 100 words, and this is certainly harder than copying someone else’s words.&lt;/p&gt;

&lt;p&gt;I have completed a few hours of dedicated practice, and it is quite possible that I am jumping the gun, and will quickly revert to QWERTY. I intend to finish work tomorrow in QWERTY, and then spend the weekend practicing hard, and stay in Colemak all next week.&lt;/p&gt;

&lt;p&gt;I will be honest. This seems like I am biting off more than I can chew. Don’t laugh, but from when I started typing to now, almost ten minutes have elapsed. I need to double my speed (and accuracy) by Monday if I want to have any hope of doing this.&lt;/p&gt;

&lt;p&gt;Protip: If changing keyboard layouts, change your password to just numbers and symbols. It is hard to get passwords right when you cannot rely on muscle memory 
orsight. And embarrassing when you just can’t get it…&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5de4b0278244cea1ae/1434910444242/2014-07-23-20-33-22.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5de4b0278244cea1ae_1434910444242_2014-07-23-20-33-22.jpg_&quot; alt=&quot;This chicken was delicious!&quot; /&gt;&lt;/a&gt; This chicken was delicious!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Focus: One Thing at a Time</title>
   <link href="https://josh.works/growth/2014/07/25/focus-one-thing-at-a-time/"/>
   <updated>2014-07-25T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2014/07/25/focus-one-thing-at-a-time</id>
   <content type="html">&lt;p&gt;The pressure to be working on more than one thing at a time is enormous. This pressure comes from no one but me. And before I dismiss this tendency as “proof that I work too hard”, I must take another tact. It comes from a need to satisfy my ego. It is much easier to say “I did not finish that because I got distracted by another project” than “I did not finish because I gave up” or “it was too hard.”
My enthusiasm carries me through the opening stages of any project, but quickly wanes. Now is what separates the men from the boys.&lt;/p&gt;

&lt;p&gt;There is a lot on 
&lt;a href=&quot;https://josh-thompson-f385.squarespace.com/epic-quest&quot;&gt;The List&lt;/a&gt;. Nothing of substance will be accomplished without focus.&lt;/p&gt;

&lt;p&gt;Along the lines of focus: this post was written in Colemak. I did not time it, but it was much less frustrating than yesterday.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5de4b0278244cea1b5/1434910446757/2014-07-25-15-21-28.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5de4b0278244cea1b5_1434910446757_2014-07-25-15-21-28.jpg_&quot; alt=&quot;Today&apos;s Afternoon Workstation&quot; /&gt;&lt;/a&gt; Today’s Afternoon Workstation&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Winter on Two Pairs of Socks</title>
   <link href="https://josh.works/home/2014/07/23/winter-on-two-pairs-of-socks/"/>
   <updated>2014-07-23T00:00:00+00:00</updated>
   <id>https://josh.works/home/2014/07/23/winter-on-two-pairs-of-socks</id>
   <content type="html">&lt;p&gt;We’re 
&lt;a href=&quot;http://www.theminimalists.com/minimalism/&quot;&gt;minimalists&lt;/a&gt;, mostly. We try to not have a bunch of stuff. This naturally extends to the wardrobe.
I’ll cover more about what we wear another time, but for now, I want to give you an idea. With the right socks, you can go an entire winter with just two pairs of socks. You wear one, and the other sits in your drawer. When one pair is dirty (which can take some time, with the right socks) you wash ‘em and switch.&lt;/p&gt;

&lt;p&gt;Packing is easy. You wear on pair. To cover all sock-wearing needs, you put your other pair in your bag. Done.&lt;/p&gt;

&lt;p&gt;These are not normal socks, of course. I have been wearing 
&lt;a href=&quot;http://us.icebreaker.com/en/mens-socks/lifestyle-ultra-lite-crew-stripey/100113K90L.html?prefn1=activity&amp;amp;start=18&amp;amp;cgid=mens-socks&amp;amp;prefv1=Travel%20%26%20Lifestyle&quot;&gt;Icebreaker Stripey&lt;/a&gt; socks for about a year, now. When not wearing those, I wore some old wool socks until my Icebreaker socks dried. (I didn’t wear them only when they smelled foul, which took usually at least four days of daily use).
I’ve not been extremely thrilled with the Icebreaker socks, and recently wore a hole through them. (Daily use for a year could seem excessive, but I have high standards.) Icebreaker Customer Support kindly sent me a replacement pair, and it seems the problem I had with the first pair will not be a problem with the second.That said, I’m still interested in trying a pair of 
&lt;a href=&quot;http://darntough.com/men/mens-lifestyle&quot;&gt;Darn Tough&lt;/a&gt;socks as my “other” pair. Two good pairs of socks cover all my cold-weather 
anddress-sock needs. (I wear these in formal occasions, too. Anytime I wear long pants, one of these pairs of socks is on my feet.So - washing. What’s up with that. How I do it?Yes. In a sink. Or in the shower. Or in a washing machine. (But do 
not put them through the drier). The wool used by Icebreaker or Darn Tough is not like cotton. It doesn’t pick up odor, it dries quickly, and it easily releases any stink it does pick up. So, when in the shower, soak the socks, maybe add a little soap, get them wet, rinse them out, hang them up, and they’ll be dry and stink-free in the morning.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Benefits of helplessness</title>
   <link href="https://josh.works/home/2014/07/23/benefits-of-helplessness/"/>
   <updated>2014-07-23T00:00:00+00:00</updated>
   <id>https://josh.works/home/2014/07/23/benefits-of-helplessness</id>
   <content type="html">&lt;p&gt;The last few days were rough, strangely enough. I live in beautiful Golden, Colorado with my best friend (who I happen to be married to), and I’ve got a pretty cool job to boot. That’s the “big three”, right? (Relationships, work, location.)
Yep. Except from Thursday through Monday, I was more or less sick as a dog. I could barely talk, slept extremely poorly, and had a fever that was usually north of 101. I spent a lot of time sleeping, and the rest of the time wishing I was asleep.&lt;/p&gt;

&lt;p&gt;We spent a lot more at Rite Aid than we normally would, I watched a lot of movies, and played a fair amount of video games. (More accurately, I existed in the same physical spaces as a movie that was turned on. My attention wandered, as did my consciousness.) I read about six paragraphs, over those six days, and worked at least a few hours of them.&lt;/p&gt;

&lt;p&gt;So - what good came from these five days?&lt;/p&gt;

&lt;p&gt;Plenty. I just have to look for it.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I was loved by my wife. I didn’t have to lift a finger in my own aid. It’s rare that I’m totally bedridden, and it was good let myself be served, free of guilt and trying to serve back. Marriage isn’t 50/50. These last few days it was 100/0.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I was forced to do nothing. &lt;Insert rant=&quot;&quot; about=&quot;&quot; American-style=&quot;&quot; business.=&quot;&quot;&gt; It was harder than I first expected, mostly because a lot of the things I normally would do I was unable to do.&lt;/Insert&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am blessed. These last few days helped that really sink in.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Hidden Damages of the Introvert vs. Extrovert &quot;debate&quot;</title>
   <link href="https://josh.works/growth/home/2014/07/22/hidden-damages-of-the-intovert-vs-extrovert-debate/"/>
   <updated>2014-07-22T00:00:00+00:00</updated>
   <id>https://josh.works/growth/home/2014/07/22/hidden-damages-of-the-intovert-vs-extrovert-debate</id>
   <content type="html">&lt;p&gt;Are you an introvert or an extrovert?&lt;/p&gt;

&lt;p&gt;Chances are good an answer pops to your mind. Of course you’re right! You’ve taken &lt;a href=&quot;https://www.google.com/search?q=extrovert+introvert+test&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a&amp;amp;channel=fflb&quot;&gt;internet tests&lt;/a&gt;! You’ve read Buzzfeed articles describing &lt;a href=&quot;http://www.buzzfeed.com/erinlarosa/problems-only-introverts-will-understand&quot;&gt;one aptitude&lt;/a&gt; or &lt;a href=&quot;http://www.buzzfeed.com/jessicamisener/frustrating-things-about-being-an-extrovert&quot;&gt;the other&lt;/a&gt;, and you feel like they speak to you!&lt;/p&gt;

&lt;p&gt;Stop. Right now. You’re speaking lies to yourself.&lt;/p&gt;

&lt;p&gt;How about another question:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Are you fit, or are you intelligent?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah. You respond:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;You can obviously be both intelligent and fit, or one, or the other, or neither. They are not dependent upon each other at all.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can train one or the other. Yet don’t we usually guide people towards one or the other?&lt;/p&gt;

&lt;p&gt;Here’s another “dichotomy” that doesn’t hold up in the real world - “right brained/left brained”. Creative vs. concrete thinkers. But I digress…&lt;/p&gt;

&lt;p&gt;Josh Spodek blew my mind when he wrote that &lt;a href=&quot;http://joshuaspodek.com/introversion-opposite-extroversion&quot;&gt;introversion is not the opposite of extroversion&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Believing that you are one or the other allows folks to slack of in areas of their life that are difficult. This is a shame, because usually that thing that’s the hardest for you is the best way for you to grow in a short period of time.&lt;/p&gt;

&lt;p&gt;If you never exercise, you can realize incredible gains in a short period of time. Your percentage of growth in a month could be ten times that of a professional athlete continuing to train.&lt;/p&gt;

&lt;p&gt;Along those same lines, if you are all jock, and never do “brainy stuff”, you can learn and grow a lot just by finishing a few books.&lt;/p&gt;

&lt;p&gt;This holds true for interpersonal skills. If you can’t talk to people IRL, two hours of (difficult but rewarding) effort could mark a turning point in your life.&lt;/p&gt;

&lt;p&gt;If you don’t like being alone by yourself, the best thing for you may be sitting alone by yourself.&lt;/p&gt;

&lt;p&gt;Please don’t sell yourself, or anyone else, short by believing lies about introversion and extroversion.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5de4b0278244cea1aa/1434910447335/2014-07-17-10-59-50.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5de4b0278244cea1aa_1434910447335_2014-07-17-10-59-50.jpg_&quot; alt=&quot;Feels introverted-y, right? Sure. Doesn&apos;t mean I can&apos;t be extroverted, too.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Feels introverted-y, right? Sure. Doesn’t mean I can’t be extroverted, too&lt;/em&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Be Gentle to You</title>
   <link href="https://josh.works/be-gentle-to-you"/>
   <updated>2014-07-20T00:00:00+00:00</updated>
   <id>https://josh.works/be-gentle-to-you</id>
   <content type="html">&lt;p&gt;There are many types of people in the world, all with different approaches to “getting stuff done”. My approach to doing stuff is different from my wife’s approach. (Who’da thunk?)&lt;/p&gt;

&lt;p&gt;These two years of marriage have revealed much. One of these “revelations” was this: my sense of worth is closely tied to how well I think I’m accomplishing tasks and goals, across a broad spectrum. In some ways, this is good. I set goals, plan how to accomplish them, and even manage to compete a few percentage points of these goals.&lt;/p&gt;

&lt;p&gt;The downsides were subtle, and two-fold:&lt;/p&gt;

&lt;h2 id=&quot;1-since-my-sense-of-worth-is-tied-to-accomplishments-i-evaluate-others-in-the-same-way&quot;&gt;1. Since my sense of worth is tied to accomplishments, I evaluate others in the same way&lt;/h2&gt;

&lt;p&gt;Imagine being married to someone who only acts like they love (and like) you &lt;em&gt;only&lt;/em&gt; if you’re industrious and productive. Yikes!&lt;/p&gt;

&lt;h2 id=&quot;2-since-my-sense-of-self-worth-is-tied-to-accomplishments-i-feel-guilt-and-shame-when-i-fail-to-meet-whatever-standards-i-imagine-for-myself&quot;&gt;2. Since my sense of self-worth is tied to accomplishments, I feel guilt and shame when I fail to meet whatever standards I imagine for myself&lt;/h2&gt;

&lt;p&gt;This cycle feeds itself, so I’ll either work harder, sort of like penance, or I’ll fall deeper into guilt and shame.&lt;/p&gt;

&lt;p&gt;I said these downsides were subtle, because until about a year ago, I was blind to this thinking. This led to strife in my marriage, as Kristi would feel like I didn’t delight in her unless she was working on some side project. I couldn’t figure out why I wasn’t delighting in her.&lt;/p&gt;

&lt;p&gt;Pro tip: If your loved one says&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I know you love me but it feels like you don’t &lt;em&gt;like&lt;/em&gt; me&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Don’t argue back. That brilliant rebuttle you have? When you say it, in an angry tone of voice, it’ll sound &lt;em&gt;completely self-delusional&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;You’re wrong! I really really LIKE YOU!!!!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Are you comfortable paying a mechanic for their services? I’d suggest you engage a counselor to help you with tricky “mechanical issues” in your marriage. Kristi and I have spent thousands of dollars on counseling, &lt;em&gt;and it’s the best money we’ve ever spent, and it’s a bargain at 5x the price&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s where I would normally want to put next action steps for fixing these problems. The first step to dealing with this was realizing I couldn’t “self-help” my way out of it.
The Gospel speaks to these issues in a far deeper way than anything else can.&lt;/p&gt;

&lt;p&gt;In sum: I am deeply broken. So is Kristi. And we can rejoice in this truth.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5ce4b0278244cea18b/1434910443726/2014-07-06-11-03-11.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5ce4b0278244cea18b_1434910443726_2014-07-06-11-03-11.jpg_&quot; alt=&quot;My lovely wife. Two years in! (2014)&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My lovely wife. Two years in! (2014)&lt;/em&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A 40 Hour Work Week</title>
   <link href="https://josh.works/jobs/growth/2014/07/17/a-40-hour-work-week/"/>
   <updated>2014-07-17T00:00:00+00:00</updated>
   <id>https://josh.works/jobs/growth/2014/07/17/a-40-hour-work-week</id>
   <content type="html">&lt;p&gt;Business Insider posted an article on why we have a 
&lt;a href=&quot;http://www.businessinsider.com/the-real-reason-for-the-40-hour-workweek-2014-6&quot;&gt;40 hour work week&lt;/a&gt;.
The author blames big business for why we’ve not dropped below 40 hours per week. He thinks that if America became less consumer-driven, our economy would collapse.&lt;/p&gt;

&lt;p&gt;He’s got the wrong starting assumptions about what is good and bad for an economy, but he’s right that a 40 hour work week is unnecessarily strict, and counter-productive. Many full-time office workers would love to work “only” 40 hours, and once you tack in the occasional nine hours of work, plus lunch, plus commuting, most of us spend 11 hours a day getting ready for, traveling to and from, or existing at, work.&lt;/p&gt;

&lt;p&gt;One way to gain control over your life is to reduce commuting time. I’m obviously a fan of working remotely, at least part of your work week.&lt;/p&gt;

&lt;p&gt;Beyond this, though, is the idea that work only gets done in forty hours a week, and between the hours of nine and five. Jason Fried, founder of a very successful, privately held, fully remote company argues that 
&lt;a href=&quot;http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work&quot;&gt;work doesn’t happen at work&lt;/a&gt;. I agree. Work also doesn’t happen in the intervals we think it does.&lt;/p&gt;

&lt;p&gt;Time and time again it has been found that constraints improve workflow. 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Timeboxing&quot;&gt;Timeboxing&lt;/a&gt; is enormously effective when trying to complete specific, well-defined bits of work. 
&lt;a href=&quot;http://www.redguava.com.au/jobs/&quot;&gt;RedGuava&lt;/a&gt;, a 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Software_as_a_service&quot;&gt;SaaS&lt;/a&gt; company in New Zealand works just 30 hours a week. We could call them lazy, but isn’t that confusing effort with result?&lt;/p&gt;

&lt;p&gt;They’ve built a fantastic product, and do so while living their life, rather than deferring 
everythinguntil retirement.&lt;/p&gt;

&lt;p&gt;I would love to see more experiments with shorter work weeks, to see how it affects work that gets done. You could do half-day Fridays, or seven-hour days. Both of these would trim a workweek from 40 hours to 35. What an experiment!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>STOP YELLING ON THE INTERNET, or, A Better Use for the Caps Lock Key</title>
   <link href="https://josh.works/stop-yelling-on-the-internet-or-a-better-use-for-the-caps-lock-key"/>
   <updated>2014-07-16T00:00:00+00:00</updated>
   <id>https://josh.works/stop-yelling-on-the-internet-or-a-better-use-for-the-caps-lock-key</id>
   <content type="html">&lt;p&gt;My current project is to learn to type using an alternative keyboard layout called Colemak.
QWERTY has problems. Here are a few, shamelessly borrowed from
&lt;a href=&quot;http://colemak.com/FAQ&quot;&gt;Colemak.com&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;It places very rare letters in the best positions, so your fingers have to move a lot more.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It suffers from a high same finger ratio that slows down typing and increases strain.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It allows for very long sequences of letters with the same hand (e.g. “sweaterdresses”)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It was designed to prevent the keys from sticking, without any consideration to ergonomic or efficiency aspects.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It was designed so the word “typewriter” could be typed on the top row to ease demonstrations.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It suffers from an extremely high ratio of home-row-jumping sequences (e.g. “minimum”)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Devorak is the most commonly known alternative keyboard layout (citation needed) but, for a number of reasons, Colemak wins the race. Mostly because Colemak keeps common keyboard shortcuts, like CTRL+V, C, B, X, Z, Q, and others. Less letters move around in Colemak, so it’s less of a hassle to learn.&lt;/p&gt;

&lt;p&gt;That said, it’s still quite difficult! I never realized how powerful muscle memory was until I remapped the caps lock key to delete.&lt;/p&gt;

&lt;p&gt;I strongly recommend making this modification on your keyboard, even if you never plan on switching away from QWERTY. It makes such a difference. Here are a few of the benefits:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Faster use of backspace&lt;/strong&gt;
. The delete key is ten times as far from your hands as the caps lock key. This takes time.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Less finger strain&lt;/strong&gt;
. Since you’re not stretching, it’s easier on your hands.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Use the mouse while deleting&lt;/strong&gt;
. This is a big one. Without this modification, if you want to click&amp;gt;delete, click&amp;gt;delete you need one hand on the mouse, and the other reaches across the keyboard. It’s annoying. It’s even worse on a laptop, where you have to move your right hand from mouse pad to delete and back, every time.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, how do you make the switch? I will give Mac users instructions. PC users, you are more or less
&lt;a href=&quot;http://bit.ly/1t1nCS0&quot;&gt;on your own&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Download and install
&lt;a href=&quot;https://pqrs.org/osx/karabiner/seil.html.en&quot;&gt;Seil&lt;/a&gt;. Run it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Under “Caps Lock” check the “Change Caps Lock” option. Set the new behavior to “Delete”.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Open up your System Preferences. Navigate to Keyboard Settings.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;On the “Keyboard” tab, open “Modifier Keys”. Under “Caps Lock Key” choose “No Action”. If you don’t do this, your new Delete key won’t repeat. It would just delete one character per keystroke.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OK. Now your caps lock key deletes. This was the easy part. Now you have to train your brain to use it. The only way I was successful was by remapping
another key. I changed the normal delete key to “Left Shift” This way,
I could not use it any more. I HAD to use the caps lock key if I wanted to delete anything.&lt;/p&gt;

&lt;p&gt;Let me warn you - this is is frustrating for the first few days. You’ll think hard about using caps lock, you’ll be successful, but as soon as you start thinking about something else, you’ll start using the normal delete key.&lt;/p&gt;

&lt;p&gt;So - Set this up. Give it a shot. I’m thrilled that I did, and I use both delete keys interchangeably. I also YELL LESS ON THE INTERNET!&lt;/p&gt;

&lt;p&gt;Next, I’ll cover what I’ve learned about typing while learning Colemak!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0152/0433/products/Ultimate_hero_1024x1024.jpg?v=1371673491&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Learn to Type - Again</title>
   <link href="https://josh.works/learn-to-type-again"/>
   <updated>2014-07-16T00:00:00+00:00</updated>
   <id>https://josh.works/learn-to-type-again</id>
   <content type="html">&lt;p&gt;Yesterday, we talked about why the
&lt;a href=&quot;/blog/2014/07/16/stop-yelling-on-the-internet-or-a-better-use-for-the-caps-lock-key&quot;&gt;Caps Lock key should be converted into a delete key&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;what-ive-learned-from-learning-colemak&quot;&gt;What I’ve learned from learning Colemak&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Short, focused practice yields great results.&lt;/strong&gt;
 When I start a timer for twenty minutes, I feel a sense of urgency, rather than defeat. Time boxing practice seems to be fantastic.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;I get mentally drained very quickly.&lt;/strong&gt;
It’s difficult to fight my muscle memory so much. It’s frustrating to be constantly hitting the wrong key. I find myself fading and becoming apathetic sometimes in less than twenty minutes. My accuracy and speed go down dramatically when I’m tired.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Immediate feedback is crucial.&lt;/strong&gt;
All the programs I’ve used give immediate visual and audible feedback when I hit the wrong key. This means I don’t have to watch what I’m typing, and am able to focus just on what I want to type.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;I need to focus far less on speed, and far more on accuracy.&lt;/strong&gt;
 When I’m “lazy”, I type “quickly” (30-40 wpm) but have an accuracy rate of only 90%. That would be great if it were a test, but that means I’m making an error every ten characters. When I slow down, and get closer to 20 wpm, my accuracy goes up, and I’ll start hitting 98%. One error every ten characters is very different from one error every 48 characters.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;the-process&quot;&gt;The Process&lt;/h4&gt;

&lt;p&gt;Started with
&lt;a href=&quot;http://first20hours.github.io/keyzen-colemak/&quot;&gt;KeyZen&lt;/a&gt;, to learn the finger positions. I struggled (and still do) to get R and S straightened out. I keep hitting the wrong one. I finished the KeyZen stage after about 45 minutes of practice, or two sessions. (I just went through the whole lower-case alphabet.&lt;/p&gt;

&lt;p&gt;Next, I went on to
&lt;a href=&quot;http://type-fu.com/&quot;&gt;TypeFu&lt;/a&gt;. I started with words for one session, and went to proverbs the next. I was feeling like I was not making much progress, since I kept making the same mistakes, over and over, and was typing slowly.&lt;/p&gt;

&lt;p&gt;So I went to
&lt;a href=&quot;https://code.google.com/p/amphetype/&quot;&gt;Amphetype&lt;/a&gt;, to focus on the most common words in the English language. This was my first lesson:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;the of and the of and the of and the of the of and the of and the of and the of the of and the of and the of and the of&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pretty basic, but quite effective. I stayed on each lesson until I could type it with 98% accuracy, and above 20 words per minute. This has been, by far, the most effective way of learning Colemak. I’ve stayed with Amphetype for the last four sessions, and am not planning on stopping for a while. The process to populate the lessons took a bit of researching, because it’s a now-defunct side project of a Python programer.&lt;/p&gt;

&lt;p&gt;The interface is ugly, but it works.&lt;/p&gt;

&lt;p&gt;As a side note, I think the above process would work splendidly for anyone that is hunting-and-pecking. You already know where the keys are, you just need to train yourself to stop looking at the keyboard. Also, you wouldn’t have to be un-training yourself from using the wrong keys.&lt;/p&gt;

&lt;p&gt;Does anyone here hunt and peck, or know anyone who does who wants to learn to type? I bet that with a total of two hours of practice, spread out in small chunks over a few days, anyone can be typing above 60 wpm without looking at the keyboard.&lt;/p&gt;

&lt;p&gt;Anyone who already touch types and wants to get better - the above method should work! The difference between typing 50-60 words per minute (or less) and typing mostly at the speed at which you can think is astounding. Typing at around 20 words per minute is frustrating.&lt;/p&gt;

&lt;p&gt;As you can probably guess, I’ve typed this in QWERTY. But I’m off to practice Colemak!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5ce4b0278244cea182/1434910441851/2014-07-10-14-31-56.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5ce4b0278244cea182_1434910441851_2014-07-10-14-31-56.jpg_&quot; alt=&quot;I got an AeroPress Coffee Press. Still learning to use it well, but I really like it.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The Present You</title>
   <link href="https://josh.works/growth/2014/07/12/the-present-you/"/>
   <updated>2014-07-12T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2014/07/12/the-present-you</id>
   <content type="html">&lt;p&gt;It seems most of the decisions in life are made in favor of the 
present you, or the 
future you. I wish the future me could sit beside the present me, and discuss how I was going about my day. Instead, it’s a rather one-sided conversation.
There are obvious choices, like food, spending money vs. saving, going to bed early - these are all clear calls, and would be even more clear if the future me was here to advocate on his behalf.&lt;/p&gt;

&lt;p&gt;There are subtle choices, too. Things like how to engage in relationships with others, how to invest in myself and others. These would benefit the most from a pocket-sized future me.&lt;/p&gt;

&lt;p&gt;If anyone invents this, I’ll buy.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5be4b0278244cea15d/1434910452370/2014-05-04-20-53-18.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5be4b0278244cea15d_1434910452370_2014-05-04-20-53-18.jpg_&quot; alt=&quot;Two sisters and a wife. Making a joke about spending quality time together... on the phone.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>&quot;Cooking&quot; is so much more</title>
   <link href="https://josh.works/home/2014/07/12/cooking-is-so-much-more/"/>
   <updated>2014-07-12T00:00:00+00:00</updated>
   <id>https://josh.works/home/2014/07/12/cooking-is-so-much-more</id>
   <content type="html">&lt;p&gt;I’ve long wanted to get better at cooking. I eat a lot of food, and would like to enjoy it. I’ve gotten to a point where I am comfortable following a recipe, and I bet you normally are fine following a recipe too.
To follow a recipe, you must have two things. These two things have always surprised me in their difficulty.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Decide what recipe to follow&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Have the proper ingredients on hand&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s a lot of planning that goes into eating. I don’t love running to the grocery store. We go once a week. This means we have to plan out what meals we will eat, in advance. If I want to eat better, 
andcook outside my comfort zone, this means we have to figure out what meals we want to eat, which hopefully uses the items we have on hand. For example, if a meal requires a tablespoon of molasses, and you don’t have any, you need a whole jar of molasses. BUT! Once you have that jar, you can use it in many meals before going to the store again.&lt;/p&gt;

&lt;p&gt;This grows complex when you have a bunch of partially used ingredients lying around. I’m still trying to figure out what a “core” list of ingredients and supplies we need. It’s this list of background knowledge that will make cooking easier. Right now, when I see a list of fifteen required ingredients, I barely know if we have any on hand, or if we don’t, if we have any substitutions. This means fifteen ingredients presents fifteen little puzzles.&lt;/p&gt;

&lt;p&gt;With time, and skill, fifteen ingredients will present only two or three unfamiliar ingredients, and picking recipes will be easy. Then, grocery shopping won’t be so stressful.&lt;/p&gt;

&lt;p&gt;In summary - if you want to be a better cook, know your pantry better.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5ce4b0278244cea161/1434910443673/img_20140326_075707.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5ce4b0278244cea161_1434910443673_img_20140326_075707.jpg_&quot; alt=&quot;A few key ingredients. I know this &amp;quot;meal&amp;quot; so well, I enjoy shopping for it, and cooking it. The opposite of how I normally feel.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Typing in Colemac 2.0</title>
   <link href="https://josh.works/growth/2014/07/11/typing-in-colemac-2-0/"/>
   <updated>2014-07-11T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2014/07/11/typing-in-colemac-2-0</id>
   <content type="html">&lt;p&gt;I want to learn to type in Colemak, but I’m afraid to try to invest twenty hours in it. That’s a long commitment, and I’m afraid I would not follow through, and feel like it was a failure, because I didn’t allot enough time, nor reach a desired level of skill.
My hope is that as I outline this approach, it could be helpful to others (or to a future me) who are trying to add to their skillset. Obviously few people are going to learn an alternative keyboard layout. But learning how to learn… the audience is wide for that one.&lt;/p&gt;

&lt;p&gt;Here’s my rethought out approach:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://joshkaufman.net/&quot;&gt;Josh Kaufman&lt;/a&gt; suggests ten principles of Rapid Skills Acquisition, and I’m 
&lt;a href=&quot;http://www.first20hours.com/typing/&quot;&gt;copying him shamelessly&lt;/a&gt;. Here they are below:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Choose a loveable project&lt;/strong&gt;
&lt;strong&gt;.&lt;/strong&gt;
I’ve tried before to learn. I was excited then, am excited now. It’s perfectly nerdy, and has the potential to boost my typing speed while reducing finger strain. I work behind a desk for a living - carpal tunnel would be a bummer.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Focus your energy on one skill at a time.&lt;/strong&gt;
Let it be known - I will spend five hours practicing, and will finish less than a week after the first session. I’ll be focused.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Define target performance level&lt;/strong&gt;
&lt;strong&gt;.&lt;/strong&gt;
 In five hours I would like to be up to 20 wpm according to 
&lt;a href=&quot;http://type-fu.com/&quot;&gt;Type Fu&lt;/a&gt;, one of the programs I’ll be using.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Deconstruct the skill into subskills.&lt;/strong&gt;
 Set up new keyboard. Learn new letters. Learn words. Learn sentences. Learn common bigrams and trigrams.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Obtain Critical tools.&lt;/strong&gt;
&lt;a href=&quot;http://colemak.com/Mac&quot;&gt;Change layout&lt;/a&gt;. Change CAPS LOCK to Backspace. Start with 
&lt;a href=&quot;http://first20hours.github.io/keyzen-colemak/&quot;&gt;this tool&lt;/a&gt;to learn the letters. Move to 
&lt;a href=&quot;http://type-fu.com/&quot;&gt;Type Fu&lt;/a&gt; once I have letters down at 98% accuracy. Move 
&lt;a href=&quot;https://code.google.com/p/amphetype/&quot;&gt;here&lt;/a&gt; for 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Bigram&quot;&gt;bigrams&lt;/a&gt; and 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Trigram&quot;&gt;trigrams&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Eliminate barriers to practice.&lt;/strong&gt;
I will start 
&lt;a href=&quot;http://selfcontrolapp.com/&quot;&gt;SelfControl&lt;/a&gt; for one hour whenever I start training. I have blacklist of all social media sites, Reddit, Hacker News, and a number of news aggregates. All the things I am distracted by on the internet. I will turn my phone off and put it in another room.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Make dedicated time for practice.&lt;/strong&gt;
 I will practice twice a day, for twenty minutes each session. Once when I finish working, and again in the late evening, before bed.
&lt;em&gt;**&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Create fast feedback loops.&lt;/strong&gt;
 Every tool provides accuracy and speed metrics. Very fast feedback loops.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Practice by the clock in short bursts.&lt;/strong&gt;
 Like I said - twenty minutes minimum, thirty minutes max. Short, focused bursts.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Emphasize quantity and speed.&lt;/strong&gt;
 Done.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is my “setup”, ready for practice. I’ll outline the modifications I made to my system in later posts. (Remapping your CAPS LOCK key to backspace is fantastic. I did it about six months ago, and will never go back.)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5be4b0278244cea15a/1434910449327/screenshot_7_10_14__10_07_pm.png&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5be4b0278244cea15a_1434910449327_screenshot_7_10_14__10_07_pm.png_&quot; alt=&quot;My Desktop - training, with a reminder right there.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A Five-Hour Experiment</title>
   <link href="https://josh.works/growth/home/2014/07/09/a-five-hour-experiment/"/>
   <updated>2014-07-09T00:00:00+00:00</updated>
   <id>https://josh.works/growth/home/2014/07/09/a-five-hour-experiment</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://joshkaufman.net/&quot;&gt;Josh Kaufman&lt;/a&gt; wrote an excellent book called 
&lt;a href=&quot;http://www.amazon.com/gp/product/1591845556/&quot;&gt;The First 20 Hours&lt;/a&gt;.
In it, he carefully plots out a handful of experiments to acquire a reasonable amount of skill in a new thing in twenty hours.&lt;/p&gt;

&lt;p&gt;He studied yoga, windsurfing, programming, 
&lt;a href=&quot;http://colemak.com/&quot;&gt;Colemak&lt;/a&gt; typing, 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Go_%28game%29&quot;&gt;a form of Chinese chess called Go&lt;/a&gt;, and the ukulele. He spent just twenty hours on each of these subjects, and got to a reasonable level of proficiency.&lt;/p&gt;

&lt;p&gt;I was inspired to try this method, and attempted to learn to type in 
&lt;a href=&quot;http://colemak.com/&quot;&gt;Colemak&lt;/a&gt;. (It’s an alternative keyboard layout). I got in a few hours of practice, got my words-per-minute to just above ten (yes. Ten words per minute) and then got distracted and gave up.&lt;/p&gt;

&lt;p&gt;So - I’m going to try again, but I’m going to see how much I can accomplish in five hours of practice. These hours will certainly not be consecutive. I will practice in short intervals spread over a few days, and I’ll report back my practice.&lt;/p&gt;

&lt;p&gt;Before I start I’ll define success, very carefully. More on that later. One of my metrics of success will be to write a 100-word post using Colemac in less than five minutes. Phew.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5be4b0278244cea151/1434910444311/2014-04-09-07-21-36.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5be4b0278244cea151_1434910444311_2014-04-09-07-21-36.jpg_&quot; alt=&quot;I&apos;ve spent a lot more than five hours preparing eggs, bacon, omelets, and other sorts of breakfast foods. Practice makes better!&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Use an Alarm to Go to Bed</title>
   <link href="https://josh.works/growth/climbing/misc/2014/07/08/use-an-alarm-to-go-to-bed/"/>
   <updated>2014-07-08T00:00:00+00:00</updated>
   <id>https://josh.works/growth/climbing/misc/2014/07/08/use-an-alarm-to-go-to-bed</id>
   <content type="html">&lt;p&gt;Ironically, this is about going to bed early. See, it’s 10:40p, and I’m getting up tomorrow at 6:00. So I’m looking at about 7 hours of sleep. This is perfect. But, that is only if I’m asleep in the next twenty minutes.
I know how long it takes to get ready to leave in the morning. If I want bacon and eggs, a shower, and coffee, I need a little over thirty minutes, but its rushed. An hour is better, and relaxing.&lt;/p&gt;

&lt;p&gt;But I don’t know how long it takes to get ready for bed. If I plan to wake up early, I need to get to bed at the right time. If I set a bed time, I need a “start getting ready for bed” time. And THAT magic time currently escapes me. But if I set a time to wake up in the morning, I should set a time to go to sleep, as well.&lt;/p&gt;

&lt;p&gt;If you can track it, you can change it. I’ve got the means to record this information - all that is left is for me to use it. Isn’t this true in so many areas of life? We have the tools to accomplish incredible things at our finger tips, yet we use none of them.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Illdefined Success is Unattainable</title>
   <link href="https://josh.works/growth/2014/07/08/illdefined-success-is-unattainable/"/>
   <updated>2014-07-08T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2014/07/08/illdefined-success-is-unattainable</id>
   <content type="html">&lt;p&gt;We all probably have a few projects floating around our head, but they seem daunting.
If it doesn’t seem daunting, it’s not much of a project, and you should either ramp it up until it’s daunting, or discard it.&lt;/p&gt;

&lt;p&gt;So - we have a daunting project. Now what? If you’re like me, you’ll fart around on the internet for a little while, doing “research”. You may take a few, or even many, steps in a certain direction. You’ll possibly feel good about it for a little while.&lt;/p&gt;

&lt;p&gt;But when the enthusiasm fades, you stop the work.&lt;/p&gt;

&lt;p&gt;There are many reasons to stop work on a project. Some of them are good ones. It seems like a waste of time doing work on something you don’t want to do! But if you do want to do it, and can’t, what’s going on?&lt;/p&gt;

&lt;p&gt;I submit this: Without a clear definition of success, it is 
impossible to actually succeed.&lt;/p&gt;

&lt;p&gt;Half the battle is defining success. So, step one of a project should be: Define success.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/5586fe4be4b0278244ce9f01/5586fe5ae4b0278244cea13f/1404840689000/2014-07-06-10-31-29.jpg?format=original&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_5586fe4be4b0278244ce9f01_5586fe5ae4b0278244cea13f_1404840689000_2014-07-06-10-31-29.jpg_&quot; alt=&quot;Utah is Beautiful. And Hot.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>What Do You Do?</title>
   <link href="https://josh.works/jobs/growth/home/2014/07/07/what-do-you-do/"/>
   <updated>2014-07-07T00:00:00+00:00</updated>
   <id>https://josh.works/jobs/growth/home/2014/07/07/what-do-you-do</id>
   <content type="html">&lt;p&gt;I enjoy meeting new people. Usually, one of the first questions I’ll ask them is “What to you do?”
They usually respond with their occupation, or their status in school. My follow-up question is “When you’re not doing that, what do you do?”&lt;/p&gt;

&lt;p&gt;Sometimes this is a conversational dead-end. Sometimes they really light up. This is always exciting. We’re not our jobs, but we are some component of what we do. So do something that’s exciting, and be excited about it. Do you like knitting? Then knit up a storm. If you like video games, well… maybe that’s exciting. Some folks have monetized their video-game playing. That’s exciting. Do exciting things. Then come tell me about ‘em. I want to hear.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The Power of an Audacious Goal</title>
   <link href="https://josh.works/growth/home/2014/07/06/the-power-of-an-audacious-goal/"/>
   <updated>2014-07-06T00:00:00+00:00</updated>
   <id>https://josh.works/growth/home/2014/07/06/the-power-of-an-audacious-goal</id>
   <content type="html">&lt;p&gt;I generally try to hedge the risks I face. I’m no daredevil, nor do I love danger, but I do love pursuing opportunities that take me beyond my comfort zone. The funny thing about going beyond your comfort zone is that once you’ve done it once or twice, you redefine your comfort zone to encompass that thing.&lt;/p&gt;

&lt;p&gt;Public speaking is an easy example. Many people are terrified of it, but once they’ve done it a few times, it is no big deal. They would have to speak in front of a larger audience to feel nervous, but once they have done that, they now find that comfortable.&lt;/p&gt;

&lt;p&gt;For this reason, I recommend you start building an audacious goal. Who knows what it is? You probably don’t even know what it is yet. Kristi and I had one, and just knocked it off the list. We moved to Colorado. Last night we were sketching out our next one. It’s invigorating, to be working towards a goal.&lt;/p&gt;

&lt;p&gt;Anxious and overwhelmed? That means you’re doing it right. Here’s a way to move forward: http://chrisguillebeau.com/what-to-do-when-you-feel-overwhelmed/&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe5ae4b0278244cea11b/1434910448937/2014-07-05-18-00-27.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe5ae4b0278244cea11b_1434910448937_2014-07-05-18-00-27.jpg_&quot; alt=&quot;We&apos;re not planning on converting.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Corollas and U-Hauls</title>
   <link href="https://josh.works/jobs/growth/home/2014/07/05/corollas-and-u-hauls/"/>
   <updated>2014-07-05T00:00:00+00:00</updated>
   <id>https://josh.works/jobs/growth/home/2014/07/05/corollas-and-u-hauls</id>
   <content type="html">&lt;p&gt;These last few posts have a theme. We moved. I’m writing about it a lot because I thought about it a lot, and a lot of work went into it.
When moving across the country, you have a few options. You could higher a moving company, who comes and boxes up your house, packs a truck, drives the truck, and unpacks it when you arrive. This is expensive.&lt;/p&gt;

&lt;p&gt;You can also get a movable storage container, like a POD. This is expensive.&lt;/p&gt;

&lt;p&gt;You can rent a truck that fits all your things, and tow your car behind it. This is expensive. It would have been about $2300 for us to go this route.&lt;/p&gt;

&lt;p&gt;So, we towed a U-haul behind our Corolla.&lt;/p&gt;

&lt;p&gt;The total price, including getting a hitch installed, was about $500. It was 4x8x4. 128 cubic feet.&lt;/p&gt;

&lt;p&gt;Because of the weight, we didn’t go much faster than 60 mph the entire drive out. Nineteen hours of driving the first day, sixteen the second.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe59e4b0278244cea115/1434910452740/2014-06-28-11-30-43.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe59e4b0278244cea115_1434910452740_2014-06-28-11-30-43.jpg_&quot; alt=&quot;I took this picture as I was dropping the trailer off. Didn&apos;t take a picture of the trailer on my car, for some reason.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Habits Take Preparation</title>
   <link href="https://josh.works/growth/home/2014/07/03/habits-take-preparation/"/>
   <updated>2014-07-03T00:00:00+00:00</updated>
   <id>https://josh.works/growth/home/2014/07/03/habits-take-preparation</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe59e4b0278244cea111/1434910449017/2014-07-03-10-39-29.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe59e4b0278244cea111_1434910449017_2014-07-03-10-39-29.jpg_&quot; alt=&quot;There are about twenty geese that live next to my apartment. The wander around all morning eating. I get to watch.&quot; /&gt;&lt;/a&gt;
Kristi and I moved to Golden, Colorado. We’ve been in our new apartment for five days. I’m trying to quickly settle into a routine that makes sense for both of us.&lt;/p&gt;

&lt;p&gt;For example - I work for a company in Boston. While I could keep local working hours (Mountain Time) I prefer to free up my afternoons and evenings by keeping Eastern time. So my work day starts at 6:30am. I don’t want to be rushed in the morning, so I’d like to be getting up by about 5:30.&lt;/p&gt;

&lt;p&gt;So far, I’ve been getting up when I want, but I’m getting very tired by the early evening. I’m not going to bed early enough.&lt;/p&gt;

&lt;p&gt;My priority right now is to figure out 1) How to go to bed early and 2) how to incorporate naps into my day.&lt;/p&gt;

&lt;p&gt;Both of these take thought, and are not something I’ll just throw myself into.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Accomplishments and Achievements</title>
   <link href="https://josh.works/growth/home/2014/07/02/accomplishments-and-achievements/"/>
   <updated>2014-07-02T00:00:00+00:00</updated>
   <id>https://josh.works/growth/home/2014/07/02/accomplishments-and-achievements</id>
   <content type="html">&lt;p&gt;We’re encouraged to accomplish and achieve, yes? From birth, we pass milestones. Generally these milestones grow in complexity as we add to our abilities - it’s been a while since I’ve been rewarded for not wetting myself - but they are usually on par with our abilities.&lt;/p&gt;

&lt;p&gt;For example, we expect high school graduation of high schoolers, college graduation of college students, etc. Most (most) middle-schoolers are not forced into college prep. I pity those that are.&lt;/p&gt;

&lt;p&gt;Maybe it’s my imagination, but there is a subtle tension between 
accomplishments and achievements.&lt;/p&gt;

&lt;p&gt;Accomplishments seem to be external. Achievements seem to be more internal. Graduation, a job - this is an accomplishment. But would you say “Graduating college is an achievement”? Maybe.&lt;/p&gt;

&lt;p&gt;How about feeling peace, or joy?&lt;/p&gt;

&lt;p&gt;Achieve seems more tied to a state of being. An accomplishment is related to a task, or a state of doing.&lt;/p&gt;

&lt;p&gt;Here’s my question - we strive for accomplishments, and encourage others to do the same. But does this happen at the expense of achieving a state of joy, or peace, or contentedness?&lt;/p&gt;

&lt;p&gt;Here’s some definitions of these words. They didn’t clear it up for me:&lt;/p&gt;

&lt;h2 id=&quot;accomplishment&quot;&gt;accomplishment&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;|əˈkämpliSHmənt|
noun
something that has been achieved successfully: the reduction of inflation was a remarkable accomplishment.
• the successful achievement of a task: the accomplishment of planned objectives.
• an activity that a person can do well, typically as a result of study or practice: long-distance running was another of her accomplishments.
• skill or ability in an activity: a poet of considerable accomplishment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;achievement&quot;&gt;achievement&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;|əˈCHēvmənt|
noun
1 a thing done successfully, typically by effort, courage, or skill: to reach this stage is a great achievement.
2 the process or fact of achieving something: the achievement of professional recognition | assessing ability in terms of academic achievement | a sense of achievement.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe59e4b0278244cea10e/1434910446386/2014-06-08-13-44-06.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe59e4b0278244cea10e_1434910446386_2014-06-08-13-44-06.jpg_&quot; alt=&quot;So green.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Change</title>
   <link href="https://josh.works/growth/2014/06/30/change/"/>
   <updated>2014-06-30T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2014/06/30/change</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe59e4b0278244cea0f1_1434910444982_2014-04-11-12-58-21.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The more things change, the more they stay the same.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or something like that. Sometimes change is for the better, and sometimes its for the worse. I don’t know if there’s always a difference.&lt;/p&gt;

&lt;p&gt;Recently, Kristi and I have seen lots of change; I’d say its for the better, but it’s not without difficulties. We’ve both gotten new jobs, and moved to Colorado. Each of those could take up a few thousand words a piece, but I consider it sufficient to say “things have changed”.&lt;/p&gt;

&lt;p&gt;And in other ways, things have not changed. We are part of a wonderful community that is not tied to a specific location. We have our family, and good friends. The Gospel continues to be true.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe59e4b0278244cea0f1/1434910444982/2014-04-11-12-58-21.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe59e4b0278244cea0f1_1434910444982_2014-04-11-12-58-21.jpg_&quot; alt=&quot;A beautiful lunch spot&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Why I Eat Bacon Every Day (And You Should Too)</title>
   <link href="https://josh.works/why-i-eat-bacon-every-day-and-you-should-too"/>
   <updated>2014-04-08T00:00:00+00:00</updated>
   <id>https://josh.works/why-i-eat-bacon-every-day-and-you-should-too</id>
   <content type="html">&lt;p&gt;&lt;em&gt;note: as of late 2017, I’ve rolled over to a mostly vegetarian diet. I still love meat, but don’t feel comfortable eating it, for ethical reasons. I still believe that, on a whole, bacon is good for you, and I still eat veggies and many eggs every day. I just don’t eat bacon or other kinds of meat, except very occasionally. I’m leaving the rest of this post unedited for posterity’s sake.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I love breakfast.&lt;/p&gt;

&lt;p&gt;Almost every morning for the last three years &lt;strong&gt;I have had a frying pan full of bacon, and three eggs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There are plenty of reasons I do this. Every one knows protein is good for you. But that fat… that grease. That cholesterol. I’m going to die young, right?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I don’t think so.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before you dismiss me out of hand, just look through two articles.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.nerdfitness.com/blog/2013/02/19/the-definitive-guide-to-bacon/&quot;&gt;The Definitive Guide to Bacon&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.artofmanliness.com/2013/01/18/how-to-increase-testosterone-naturally/&quot;&gt;Art of Manliness “Boost Your Testosterone - Naturally”&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I won’t go into it all here, but know this: &lt;strong&gt;There is a group of intelligent, scientifically literate people who believe it is good for you to eat bacon and eggs every day.&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Fry Your Pizza</title>
   <link href="https://josh.works/home/2014/04/04/fry-your-pizza/"/>
   <updated>2014-04-04T00:00:00+00:00</updated>
   <id>https://josh.works/home/2014/04/04/fry-your-pizza</id>
   <content type="html">&lt;p&gt;Here’s a problem many of us first-worlders have: cold pizza.&lt;/p&gt;

&lt;p&gt;There are two options. Microwave it, or throw it in the toaster oven or regular oven. A microwave makes it soggy, and a regular oven takes forever to heat it up.&lt;/p&gt;

&lt;p&gt;(If you’re willing to eat it cold, may god have mercy on your soul.)&lt;/p&gt;

&lt;p&gt;Well, there’s a solution to this problem. Here’s how it works.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Before you get your pizza out of the microwave, throw your skillet on the burner, medium heat.&lt;/li&gt;
  &lt;li&gt;Microwave your pizza for 45 seconds or so, until it’s warm.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;this-is-the-important-part&quot;&gt;This is the important part&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Place your pizza on the skillet&lt;/li&gt;
  &lt;li&gt;Cook it until it’s crispy on the bottom&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This process is very quick. If you’re lucky enough to have a gas range, it will add about two minutes to your 45 seconds of microwave time. If you’re forced to work with a regular electric oven, it’ll take a while to get the skillet hot. Sorry.&lt;/p&gt;

&lt;p&gt;Guess what I had for dinner?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Playing Pranks</title>
   <link href="https://josh.works/2014/04/01/playing-pranks/"/>
   <updated>2014-04-01T00:00:00+00:00</updated>
   <id>https://josh.works/2014/04/01/playing-pranks</id>
   <content type="html">&lt;p&gt;My wife played a brilliant prank on me today, as she does every year. Here’s a partial list:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Convincing me that I was about to eat a slice of carrot cake; it was a sponge covered with toothpaste. I bit into it.&lt;/li&gt;
  &lt;li&gt;Convincing me that she had, in anger and frustration, cut off almost all of her hair, and had pictures to prove it; unflattering camera angles + bobby pins = confused Josh&lt;/li&gt;
  &lt;li&gt;Feeding me soapy water&lt;/li&gt;
  &lt;li&gt;Convincing me she had a 
very forward suitor who wouldn’t take no for an answer; she and I were engaged, and it fell to me to do something about it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;She has gotten me many other times. I love April fools day, but I’m not sure why. I don’t generally enjoy being tricked, but I love seeing the many things Kristi thinks up, and how she tricks me.&lt;/p&gt;

&lt;p&gt;It requires trust. I won’t be so easily tricked by most people, but my guard is down (obviously) when I’m with my wife. And this is healthy. I think part of the reason I love April Fools Day is because she couldn’t trick me if I didn’t trust her. That vulnerability is freeing.&lt;/p&gt;

&lt;p&gt;It takes work, though, building a relationship in which you can be vulnerable. I (and I think the rest of humanity) instinctually recoils from vulnerability. And this cheapens our relationships, robs us of opportunities for joy.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to Move</title>
   <link href="https://josh.works/how-to-move"/>
   <updated>2014-03-27T00:00:00+00:00</updated>
   <id>https://josh.works/how-to-move</id>
   <content type="html">&lt;p&gt;Kristi and I are moving to Colorado in July. We’ve taken three broad steps to make this move happen:&lt;/p&gt;

&lt;h2 id=&quot;we-both-are-in-process-with-new-jobs&quot;&gt;We both are in process with new jobs&lt;/h2&gt;

&lt;p&gt;I just started working remotely for &lt;a href=&quot;http://www.litmus.com&quot;&gt;Litmus&lt;/a&gt;, which means I can seamlessly transition to Colorado this summer. Kristi spent a few days last week interviewing with public schools and attending a teachers fair in Colorado.&lt;/p&gt;

&lt;p&gt;We’re moving, and we may even be gainfully employed!&lt;/p&gt;

&lt;h2 id=&quot;were-shedding-as-many-of-our-possessions-as-we-can&quot;&gt;We’re shedding as many of our possessions as we can&lt;/h2&gt;

&lt;p&gt;We’re moving to Colorado and don’t want to drop $2k for a u-haul truck. We’ll be towing the smallest enclosed u-haul trailer available behind our Toyota Corolla. This means limited cargo space. We’re both excited about this, because as mentioned before, &lt;a href=&quot;/simplify-simplify-simplify&quot;&gt;we’re moving in the direction of minimalism&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We have a sofa bed that we love, and I really love our kitchen knives and one cast-iron skillet. Everything else is replaceable, so we’re trimming down our wardrobes, getting rid of kick-knacks, ditching almost all of our physical books, and &lt;a href=&quot;http://www.becomingminimalist.com/sample-living-with-less/&quot;&gt;experimenting with less&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;were-putting-our-money-where-our-mouth-is&quot;&gt;We’re putting our money where our mouth is&lt;/h3&gt;

&lt;p&gt;Moving is not cheap, but it certainly doesn’t have to be expensive. Beyond that, we’re moving to Colorado for the lifestyle benefits, so we’re putting our money in that direction as well. We have a few financial benchmarks that we’re working on. We’re almost done paying off our car, which we were unexpectedly forced into buying late last year. When we get to Colorado, we’ll be able to enjoy the opportunities it offers to the fullest.&lt;/p&gt;

&lt;h3 id=&quot;why-move&quot;&gt;Why Move?&lt;/h3&gt;

&lt;p&gt;Almost every time we mention we’re moving to Colorado, we hear two things:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“That is AMAZING! Colorado is great. “&lt;/li&gt;
  &lt;li&gt;“I wish I could do that.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Well - you can. If you accept certain sacrifices, and hustle to line up your cards right, you can do it. There is the spectrum of what it takes to move across the country:&lt;/p&gt;

&lt;p&gt;On one end of the spectrum, you could quit your job tomorrow, load up your car, and move.&lt;/p&gt;

&lt;p&gt;This would probably leave a few loose ends, and would be better if you just committed a crime and had to hustle out of town. Maybe you should just drive to Mexico if you’re in this situation.&lt;/p&gt;

&lt;p&gt;On the other end of the spectrum, you may never move until someone offers you a job, a place to live, a relocation bonus, pays for your things and your time, and finds you a friend-group to plug into without any work on your behalf.&lt;/p&gt;

&lt;p&gt;This bar is pretty high, and I wouldn’t hold my breath.&lt;/p&gt;

&lt;p&gt;So - we picked something in the middle. Kristi worked on getting a teaching job, and I worked on getting a remote job. These are both working out, and now we’re figuring out what to do with our things and our money. That’s it. We’re leaving behind friends and family, but these relationships are important enough to invest time and money in maintaining. The rest (casual friendships) can be rebuilt in our new location.&lt;/p&gt;

&lt;p&gt;Boom. It’s that easy. And so much more complex.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Falling into Place</title>
   <link href="https://josh.works/remote_work/2014/03/25/falling-into-place/"/>
   <updated>2014-03-25T00:00:00+00:00</updated>
   <id>https://josh.works/remote_work/2014/03/25/falling-into-place</id>
   <content type="html">&lt;p&gt;I recently started a job with 
&lt;a href=&quot;www.litmus.com&quot;&gt;Litmus&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A key component of this job search for me was that it be 100% remote.&lt;/p&gt;

&lt;p&gt;At my last job, I worked remote regularly, at least one day a week, but the rest of the week, I was in the office.&lt;/p&gt;

&lt;p&gt;Remote work is becoming established around the world, but not without some hiccups. In a recent notable hiccup, the CEO of Yahoo &lt;a href=&quot;http://money.cnn.com/2013/02/25/technology/yahoo-work-from-home/&quot;&gt;ended their remote work policy.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://automattic.com/&quot;&gt;team&lt;/a&gt; behind Wordpress (you know, one of the most trafficked site on the internet) works remotely. Matt Mullenweg &lt;a href=&quot;http://ma.tt/2012/09/future-of-work/&quot;&gt;writes&lt;/a&gt; about remote work not just being a “perk”, like any other company perk, but gives employees an opportunity they could not otherwise have:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;We give people the perk and the luxury of being part of an internet-changing company from anywhere in the world.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;why-work-remotely&quot;&gt;Why Work Remotely?&lt;/h2&gt;

&lt;p&gt;When working remote a certain percentage of my time (as I did at Razoo) there were two distinct perks to the arrangements.&lt;/p&gt;

&lt;h3 id=&quot;zero-commuting-time&quot;&gt;Zero commuting time&lt;/h3&gt;

&lt;p&gt;It takes me an hour, door-to-door, to get to and from work.&lt;/p&gt;

&lt;p&gt;That’s two hours of my day, and 12% of my non-sleeping (conscious) hours. Every day I worked from home, it’s like I got an extra two hours just handed to me. Since I count commuting time as work time, even though my job doesn’t, that brings my percentage of billable hours per day from 80% to 100%.&lt;/p&gt;

&lt;p&gt;In other words, not having to commute is an instant pay-raise of 20%, and its tax-free.&lt;/p&gt;

&lt;p&gt;Admittedly, I think about these things in a strange way. But why shouldn’t you count commuting time as part of your work day? You’re not doing it for fun, that’s for sure.&lt;/p&gt;

&lt;h3 id=&quot;much-more-effective-work-time&quot;&gt;Much more effective work time&lt;/h3&gt;

&lt;p&gt;Remote work gets a bad rap because of distractions. Sure, you could watch a movie in your bunny slippers and unbrushed teeth, but if that’s how you engage with your work, being in an office won’t help.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/jasonfried&quot;&gt;Jason Fried&lt;/a&gt; contends that “&lt;a href=&quot;http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work&quot;&gt;work doesn’t happen at work&lt;/a&gt;”, because of the factors surrounding them at the office. The “distractions” that managers fear will bog you down at home are actually unavoidable and pervasive only in the office.&lt;/p&gt;

&lt;p&gt;In short, when I work from home, and had control over distractions, I can dig into projects and move them forward.&lt;/p&gt;

&lt;p&gt;When I’m constantly interrupted, I struggle to get meaningful work done. I get plenty of busywork done, but nothing substantive.&lt;/p&gt;

&lt;h3 id=&quot;luxuries-a-business-cannot-provide&quot;&gt;Luxuries A Business Cannot Provide&lt;/h3&gt;

&lt;p&gt;Here’s why I’m most excited about remote work. I can live almost anywhere in the planet without impacting my job. There are only two constraints: Internet access, and time zone. Since it’s 2014, all of America is wired up with broadband. Same with (to the best of my knowledge) many other urban areas around the world. So - internet access is easy.&lt;/p&gt;

&lt;p&gt;Second - time zones. America spans only three, and that’s plenty for healthy overlap with your co-workers shifts. So, with remote work, you can easily live anywhere in the USA. Add a time zone, and you can live any where in the Americas. Whoa.&lt;/p&gt;

&lt;p&gt;These are luxuries businesses cannot provide at an office, or with extra pay.&lt;/p&gt;

&lt;p&gt;And, for at least some people, these are the kinds of opportunities that make an employee want to stick around.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Back in the Saddle</title>
   <link href="https://josh.works/jobs/growth/2014/03/20/back-in-the-saddle/"/>
   <updated>2014-03-20T00:00:00+00:00</updated>
   <id>https://josh.works/jobs/growth/2014/03/20/back-in-the-saddle</id>
   <content type="html">&lt;p&gt;There’s a point in time when after spending a few weeks or months working on one project/goal, your ability to switch tasks to another project diminishes.&lt;/p&gt;

&lt;p&gt;There’s plenty of evidence that humans can’t multi-task, and those who try just end up doing a lot of things poorly.&lt;/p&gt;

&lt;p&gt;On the flip side, if you’re working on a project, being familiar with it allows you to hold the whole thing in your head. If you put it down for two months, when you come back you have to refamiliarize yourself with the project.&lt;/p&gt;

&lt;p&gt;Over the last few months, I’ve been on a low-level job hunt. A job hunt (if your me) is mentally draining. Not exhausting, but it took enough of my energy that I put my active side projects on the back burner. Writing regularly being one of those side projects.&lt;/p&gt;

&lt;h3 id=&quot;big-news&quot;&gt;Big News&lt;/h3&gt;

&lt;p&gt;This low-level job hunt has ended. I am happy to announce that I’m joining 
&lt;a href=&quot;https://litmus.com/&quot;&gt;Litmus&lt;/a&gt; as a customer success advocate. This opportunity is really exciting because:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I get to work with really talented people&lt;/li&gt;
  &lt;li&gt;The specifics of my role is 
exactly how I’ve been developing my skills at my last job with 
&lt;a href=&quot;http://razoo.com&quot;&gt;Razoo&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;This allows me to refocus energy on doing really good work (at Litmus) and building out my side projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This new role allows a number of key pieces to fall into place in other areas of my life.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Act a Fool, or: Motion vs. Action</title>
   <link href="https://josh.works/growth/2014/03/16/act-a-fool-or-motion-vs-action/"/>
   <updated>2014-03-16T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2014/03/16/act-a-fool-or-motion-vs-action</id>
   <content type="html">&lt;p&gt;If you’ve started reading this article, but have only two minutes, don’t read what I’m writing. Go read 
&lt;a href=&quot;http://jamesclear.com/taking-action&quot;&gt;this article&lt;/a&gt; by James clear. It’s called “
&lt;a href=&quot;http://jamesclear.com/taking-action&quot;&gt;The Mistake Smart People Make: Being In Motion vs. Taking Action&lt;/a&gt;”. I’ve linked it a third time 
&lt;a href=&quot;http://jamesclear.com/taking-action&quot;&gt;here&lt;/a&gt;. Go read it.
James starts with a simple definition:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Motion&lt;/strong&gt;
 is when you’re busy doing something, but that task will never produce an outcome by itself. 
&lt;strong&gt;Action&lt;/strong&gt;
, on the other hand, is the type of behavior that will get you a result.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Motion, as defined, obviously won’t get you to your goals. It is, be definition, those things that you do that don’t produce.&lt;/p&gt;

&lt;p&gt;Action, as defined, gets you where you’re going. The difference between the two is that you don’t get criticized for motion. You can get a ton of criticism for action.&lt;/p&gt;

&lt;p&gt;We humans are a cautious bunch - we’re more likely to do small things that return small but predictable benefits. Those large things we may do can fail nine times out of ten, and that failure 
can be devastating.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applied&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We all speak to each other, and the quality of our speech matters. When I think “public speaking”, I don’t imagine giving a speech to hundreds, I imagine how I carry myself in front of groups of people I don’t know well. Incidentally, this is most of the people I interact with.&lt;/p&gt;

&lt;p&gt;I wanted to get better at public speaking. So, I read a few articles and watched a few videos. This was all 
&lt;strong&gt;motion&lt;/strong&gt;
. I quickly realized this, and thought “the one thing I really don’t want to do is give a speech to strangers”. So… using that fear as an arrow towards the path of greatest growth, I gave a speech.&lt;/p&gt;

&lt;p&gt;[youtube=http://youtu.be/LXbIO3QSeAc]&lt;/p&gt;

&lt;p&gt;I read about two paragraphs from “
&lt;a href=&quot;http://www.artofmanliness.com/2009/07/11/manvotional-self-made-men-by-frederick-douglass/&quot;&gt;The Self-Made Man&lt;/a&gt;”, a speech by Frederick Douglass and, if you watch the video, you can see that absolutely no one even noticed me. This was an extremely short way to get a little closer to fearlessness in these situations.&lt;/p&gt;

&lt;p&gt;Not only does this short exercise exemplify the difference between motion and action, but if you want to get more confident in public, this is a ridiculous but effective method.&lt;/p&gt;

&lt;p&gt;I’m trying to keep my eye out for other equally effective short cuts to obtain real-world experience doing difficult/uncomfortable things. If you have ideas, send ‘em my way. I won’t commit to anything, but I’m open to just about everything.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Five Days to Inbox Zero: How to Get Control of your Email</title>
   <link href="https://josh.works/2014/02/07/five-days-to-inbox-zero-how-to-get-control-of-your-email/"/>
   <updated>2014-02-07T00:00:00+00:00</updated>
   <id>https://josh.works/2014/02/07/five-days-to-inbox-zero-how-to-get-control-of-your-email</id>
   <content type="html">&lt;p&gt;Email is a constant in our lives, yet it can be so overwhelming that it becomes almost 100% ineffective.
I discussed with a friend the other day why they should switch from Yahoo to Gmail, and how to reduce the useless emails they receive. Below is how I suggested they move from one account to another, and how to leave all their crappy emails behind, and how to get to 
&lt;a href=&quot;http://inboxzero.com/video/&quot;&gt;Inbox Zero&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you already use Gmail, save yourself some effort, and sign up for 
&lt;a href=&quot;http://unroll.me&quot;&gt;unroll.me&lt;/a&gt;, then read 
&lt;a href=&quot;http://klinger.io/post/71640845938/dont-drown-in-email-how-to-use-gmail-more&quot;&gt;this article&lt;/a&gt; on managing important emails.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you don’t already use Gmail, why should you make the switch?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;You can 
&lt;a href=&quot;https://support.google.com/mail/answer/6576?hl=en&quot;&gt;archive&lt;/a&gt; any email, and it will be gone from your inbox, but still searchable. (For example, my inbox has four emails in it, but if I look at ALL the email in my account, I’ve got almost 9000 emails. I can archive it, forget about it, and then use Google’s amazing search tools to find it later.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Google calendar is extremely versatile. Y’all can each plan things, share calendars, and stay on the same page.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Google Drive is a nice way to keep all your files in one place - you can use it on your phone, and do plenty of other things with it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can sign into websites using your google accounts.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://klinger.io/post/71640845938/dont-drown-in-email-how-to-use-gmail-more&quot;&gt;You can set up a simple system to keep your email inbox to ZERO!&lt;/a&gt; (It is life changing. Seriously. That little article has changed everything about how I manage email.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I’ve convinced you, here is how to take the plunge: (Substitute “yahoo” with your own service provider.)&lt;/p&gt;

&lt;p&gt;Day one: Sign up for 
&lt;a href=&quot;http://unroll.me&quot;&gt;unroll.me&lt;/a&gt;. You’ll unsubscribe from everything in your Yahoo account. Could be hundreds of subscriptions. It is life changing.&lt;/p&gt;

&lt;p&gt;Day two:Head over to 
&lt;a href=&quot;http://gmail.com&quot;&gt;gmail.com&lt;/a&gt; and sign up for an email account. Some variation of 
&lt;a href=&quot;mailto:firstname.lastname@gmail.com&quot;&gt;firstname.lastname@gmail.com&lt;/a&gt; is ideal, but I couldn’t get anything close to 
&lt;a href=&quot;mailto:josh.thompson@gmail.com&quot;&gt;josh.thompson@gmail.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Day three: Time to clean out your Yahoo inbox. Gmail will automatically import all email in your inbox, so get rid of everything in your inbox that you don’t want to keep.I would temporarily move the last three weeks of emails in your inbox to a separate folder, then delete EVERYTHING else in your inbox.&lt;/p&gt;

&lt;p&gt;Day four:Follow 
&lt;a href=&quot;http://www.wikihow.com/Switch-from-Yahoo%21-Mail-to-Gmail&quot;&gt;these steps&lt;/a&gt; to import contacts to your gmail account, forward all new email, and get your basic settings tweaked in gmail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day five:&lt;/strong&gt;
Sign up 
&lt;a href=&quot;http://unroll.me&quot;&gt;unroll.me&lt;/a&gt; for your new Gmail account. Email me when you’re done.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;What you’ve accomplished so far:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Signed up for gmail.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Deleted thousands of emails, and unsubscribed from dozens of news letters.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Started fresh with a new email account.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using the above tools, this is my inbox today: (The things on the right are “to do” “waiting for reply” and “to reference in the next week”, respectively. Nothing in the inbox. It’s all been processed.)&lt;/p&gt;

&lt;p&gt;[&lt;img src=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe58e4b0278244cea0e1/1434910436190/inbox_-_thompsonjoshd_gmail_com_-_gmail-10.jpg&quot; alt=&quot;Inbox-thompsonjoshd_gmail_com_-_Gmail-10](/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe58e4b0278244cea0e1_1434910436190_inbox_-_thompsonjoshd_gmail_com_-_gmail-10.jpg_)&quot; /&gt;If you’re not controlling your inbox, it is controlling you.
&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe58e4b0278244cea0e1/1434910436190/inbox_-_thompsonjoshd_gmail_com_-_gmail-10.jpg&quot;&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Talent is Overrated</title>
   <link href="https://josh.works/2014/01/09/if-you-can-learn-anything-should-you/"/>
   <updated>2014-01-09T00:00:00+00:00</updated>
   <id>https://josh.works/2014/01/09/if-you-can-learn-anything-should-you</id>
   <content type="html">&lt;h2 id=&quot;talent-is-overrated&quot;&gt;Talent is Overrated&lt;/h2&gt;

&lt;p&gt;In &lt;a href=&quot;http://www.amazon.com/Talent-Overrated-Separates-World-Class-Performers/dp/1591842948&quot;&gt;Talent is Overrated&lt;/a&gt;, the author argues that world-class performers are not genetically gifted. The difference between world-class performers and the rest of us? Lots of &lt;a href=&quot;http://lifehacker.com/what-mozart-and-kobe-bryant-can-teach-us-about-delibera-1442488267&quot;&gt;deliberate practice&lt;/a&gt;. (Read the article.)&lt;/p&gt;

&lt;p&gt;I have no interest in becoming Mozart, or Tiger Woods (oh, and that ship has sailed long ago) but it’s not to late for anyone to do one of two things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Achieve proficiency in a current skill&lt;/li&gt;
  &lt;li&gt;Learn something completely new&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since no one attempts to master or dominate most things that they do, there is tremendous opportunity for you to separate yourself from your peers. Or make big improvements in something because you want to.&lt;/p&gt;

&lt;p&gt;The key to either of this is learning how to apply the concept of deliberate practice to the field.&lt;/p&gt;

&lt;h2 id=&quot;the-first-20-hours&quot;&gt;The First 20 Hours&lt;/h2&gt;

&lt;p&gt;In &lt;a href=&quot;http://www.amazon.com/The-First-20-Hours-Anything/dp/1591845556&quot;&gt;The First 20 Hours&lt;/a&gt;, the author lays out a framework for achieving proficiency in a new field in twenty hours of deliberate practice.&lt;/p&gt;

&lt;p&gt;He lays out a reusable approach to any skill.&lt;/p&gt;

&lt;p&gt;Learning a skill &lt;em&gt;with skill&lt;/em&gt; is extremely appealing to me.&lt;/p&gt;

&lt;h3 id=&quot;ten-practices-of-rapid-skills-acquisition&quot;&gt;Ten practices of rapid skills acquisition:&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Choose a lovable project&lt;/li&gt;
  &lt;li&gt;Focus your energy on one skill at a time&lt;/li&gt;
  &lt;li&gt;Define your target performance level&lt;/li&gt;
  &lt;li&gt;Deconstruct the skill into subskills&lt;/li&gt;
  &lt;li&gt;Obtain critical tools&lt;/li&gt;
  &lt;li&gt;Eliminate barriers to practice&lt;/li&gt;
  &lt;li&gt;Make dedicated time for practice&lt;/li&gt;
  &lt;li&gt;Create fast feedback loops&lt;/li&gt;
  &lt;li&gt;Practice by the clock in short bursts&lt;/li&gt;
  &lt;li&gt;Emphasize quality and speed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;He covers a lot in the book, but it is a quick read.&lt;/p&gt;

&lt;p&gt;I’m eager to apply these methods to some projects soon. My first project? Programming. I’ve been messing around with programming for a while, but I’d like to make a small but dedicated push on it.&lt;/p&gt;

&lt;p&gt;My first task is getting an environment set up on my computer where I can do the things required to create and publish anything I create, no matter how simple. It’s &lt;a href=&quot;http://www.ruby-lang.org/en/downloads/&quot;&gt;not the easiest to install&lt;/a&gt;.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>How to complete a project</title>
   <link href="https://josh.works/2014/01/01/how-to-complete-a-project/"/>
   <updated>2014-01-01T00:00:00+00:00</updated>
   <id>https://josh.works/2014/01/01/how-to-complete-a-project</id>
   <content type="html">&lt;p&gt;Most of us have goals. And we usually don’t reach any of them.
The 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Minimum_viable_product&quot;&gt;Minimum Viable Product&lt;/a&gt; “concept” has helped me with some goals, and it could be helpful to you.&lt;/p&gt;

&lt;p&gt;It’s a simple concept: When starting something new, figure out what the minimum investment would get you the required return.&lt;/p&gt;

&lt;p&gt;Here’s how it played out for me in the last few weeks:&lt;/p&gt;

&lt;p&gt;I’ve wanted to write a book about lead climbing, and how to deal with fear. It was so daunting of a project, I put off any progress for a long time, and then once I 
did start making progress, I easily sidetracked myself down a thousand different rabbit trails.&lt;/p&gt;

&lt;p&gt;The only time I have made progress was when focusing on the 
minimum required investment, and what next step would get me there.&lt;/p&gt;

&lt;p&gt;I am far from done, but it’s gotten me this far.&lt;/p&gt;

&lt;p&gt;Check out www.belaybetter.com to see the results of this particular project. You can download a sample chapter for free, and of course, buy the book if you’re interested.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Make Hard Things Easier by Removing Friction</title>
   <link href="https://josh.works/make-hard-things-easier-by-removing-friction"/>
   <updated>2013-12-07T00:00:00+00:00</updated>
   <id>https://josh.works/make-hard-things-easy-removing-friction</id>
   <content type="html">&lt;p&gt;Friction resists movement.
Lots of things count as (negative) friction.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Anything that consumes resources (time, energy, money, physical goods.)&lt;/li&gt;
  &lt;li&gt;Anything that causes negative feelings (shame, doubt, guilt, fear.)&lt;/li&gt;
  &lt;li&gt;Anything that could have a downside (losing money, respect, your job.)&lt;/li&gt;
  &lt;li&gt;Anything that may have no benefit. (Joy, money, respect, a better job.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to make something happen in your life, chances are good that you’re not doing it already because of friction.&lt;/p&gt;

&lt;p&gt;Think about it - if you wanted to do something, the benefits were obvious, and the barriers non-existent… wouldn’t you already be doing it?&lt;/p&gt;

&lt;p&gt;So - if you are not content with where you are now, and you have an idea of where you want to be, examine hard the possible sources of friction. If you can eliminate most of that friction, you’ll suddenly find it much, much easier to make that thing happen.&lt;/p&gt;

&lt;p&gt;I have two examples of changes I wanted to make that were impeded by lots of friction.&lt;/p&gt;

&lt;h3 id=&quot;creating-a-digital-product&quot;&gt;Creating a digital product&lt;/h3&gt;
&lt;p&gt;I’ve wanted to create a digital product that sells itself for a long time. Sounds perfect, right? People give me their money and, after initially setting everything up, it doesn’t take any additional work on my behalf.&lt;/p&gt;

&lt;p&gt;Here’s all the friction I’ve run into:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;I’ve never done this before. Everyone out there who
hasdone it, has, by definition, done it. So I am quantifiably different from those folks that have done this thing.&lt;/li&gt;
  &lt;li&gt;I don’t have any customers. What if I put all this work out, and can’t get anyone to buy it?&lt;/li&gt;
  &lt;li&gt;I’ve never built a website, or earned money outside of “normal” jobs.&lt;/li&gt;
  &lt;li&gt;There are 1000 different things I could spent my time on related to this project. How do I know I’m spending my time effectively?&lt;/li&gt;
  &lt;li&gt;Most people want to do this, and most people never try. Those that do… most of them fail, right? Why would I do anything different.&lt;/li&gt;
  &lt;li&gt;I already have a full-time job. Why should I spend my limited time finding even
more work?&lt;/li&gt;
  &lt;li&gt;I don’t know anything that unique about anything.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s how I got over all of this friction:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Every single action I take is a learning experience. If something doesn’t work, I’ve learned. (Along those lines - there is no good way to do cold calling.)&lt;/li&gt;
  &lt;li&gt;If I hit a barrier, I figure out a way to either not need it, or get around it. (Call people, get email addresses, email them,
then call again. It’s no longer a cold call.)&lt;/li&gt;
  &lt;li&gt;If I feel out of my element and outside of my comfort zone, I’m doing it right. That stress is now encouragement.&lt;/li&gt;
  &lt;li&gt;My wife is encouraging, That helps a lot.&lt;/li&gt;
  &lt;li&gt;All great products and entrepreneurs have sucked or been unsuccessful at one time (or many times!). I’m just running with it - it’s OK to feel like I’m making it up as I go.&lt;/li&gt;
  &lt;li&gt;I’m not done, and I don’t think I ever will be. But it is all a learning experience.&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Monthly Review: November</title>
   <link href="https://josh.works/growth/home/2013/12/01/monthly-review-november/"/>
   <updated>2013-12-01T00:00:00+00:00</updated>
   <id>https://josh.works/growth/home/2013/12/01/monthly-review-november</id>
   <content type="html">&lt;p&gt;This is my second monthly review, and I’m hooked.
I’ve thought this coming review frequently, but I thought about that as I was conducting my month. This proactive review is in line with 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Viktor_Frankl&quot;&gt;Viktor Frankl’s&lt;/a&gt; admonition to “live every day as if it were your second chance to live it.” This simple piece of advice, and another one, are packaged for free and available in the 
&lt;a href=&quot;http://storylineblog.com/sps/&quot;&gt;Storyline Productivity Schedule&lt;/a&gt; (it’s free, and worth reading).&lt;/p&gt;

&lt;h2 id=&quot;november-review&quot;&gt;November Review&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My marriage&lt;/strong&gt;
 Kristi and I are growing, and as any relationship does, go through ups and downs. The trend is up, and as I have thought and prayed about our relationship, we have both been able to identify a few specifics that we want to work on and improve. We can (usually) converse easily about the health of our relationship, and work together to love each other better. This month we have both gotten to spend time with our respective families, and we have enjoyed ourselves. There had sometimes been friction with each others families, so this is a big win.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Significant relationships&lt;/strong&gt;
 I write this from my parents house in TN, where more of my family has assembled then has been together in at least three years. I called each of my grand parents once last month, which is one time more than I’d called them in months. Positive progress.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Side projects&lt;/strong&gt;
 I’ve been so excited about two side projects I’ve sometimes been unable to fall asleep at night. One is still under wraps, but the other is one I need help with (from all you climbers). I’m writing an e-book about dealing with fear while lead climbing. Last month I said I had to have my edits done by this coming month, and so it’s done. I want to get out and get more feedback, then release it to the world.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This side project has quickly morphed into a complicated beast, but I’ve allowed the total complexity to hinder progress in the small but important ways, like… you know… writing the book. I’m done with the first draft. This is a big deal.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My job&lt;/strong&gt;
 At work we had some of our busiest days of the hear, and in some important ways, at least one day was an almost total failure. It wasn’t my fault at all, but it’s frustrating. I’ve found that working in short bursts with a little break is good (when I’m in the office, a sprint up and down the ten flights of stairs is a life changer). I’ve struggled with hopelessness there, so… I’m still wrestling with that in my head.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Physical goals&lt;/strong&gt;
 My current project is 
handstands. I can hold myself in the handstand position against a door for about 90 seconds, and I can “hold” a freestanding handstand for, at best, five seconds. But that’s five seconds longer than last month. I started with 
&lt;a href=&quot;http://chrissalvato.com/&quot;&gt;this blog&lt;/a&gt;, and have branched out from there. I’ve never spent more than five minutes a day practicing. You should give it a shot too.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve encountered another interesting issue - I fear the opinions of others when practicing this kind of stuff. Seriously. Even practicing at home around my wife, I feel like I had to prove I wasn’t insane. She stopped me and said “Josh. You can practice what every you want. You’re not in trouble.”&lt;/p&gt;

&lt;p&gt;Practicing outside is even harder. I’ve also noticed I don’t want to do sprint training in a field by myself, because it will look weird. It’s strange, having all this fear, but it’s nice recognizing it. Onward!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Finances&lt;/strong&gt;
Still an important factor to us. Kristi and I had fun conversation when it turned out our credit card was not automatically synching with our money tracking tool, so all of our non-debit spending was not being accounted for. We’ve fixed that, but we’re still nailing these details down.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Debt reduction (student loans, car loan)&lt;/strong&gt;
Debt reduction ration of 1.0. Sufficient, but far from ideal.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My monthly reviews&lt;/strong&gt;
 On my second monthly review, I’ve felt that this is extremely good for me. I don’t like waiting for a full month, though, so I may toy with a bi-monthly review. Every two weeks. Or maybe a bi-monthly review on some select topics (side projects, finances, and habits being the top candidates). Either way, this reflectivity is extremely helpful. I’d encourage y’all out there to try it. Blogging can be free (I pay $18/yr for the domain, and that’s my only cost. So… we’ll call it $1.50/mo. Pretty cheap) but can encourage a lot of good things.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Habits&lt;/strong&gt;
 I’ve struggled to 
&lt;a href=&quot;/blog/2013/04/22/becoming-an-early-riser&quot;&gt;get up early&lt;/a&gt;, because I’m struggling to go to bed early. My evening routine is not a routine at all, and I think this is part of the problem. I also lose control of my early-rising habit when traveling. I think it’ll help me to lay my clothes out in the morning, and have a clear reason for why I am trying to get up early. That will help get me out of bed. (This all ties back to the PM routine.)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes I get up at 5:30, feeling great. Sometimes I can’t get out of bed before 8:00. Not consistent at all.&lt;/p&gt;

&lt;p&gt;For my entire adult life, I’ve been convinced I don’t have dreams, because I never have been aware of any. Then I read 
&lt;a href=&quot;http://www.fourhourworkweek.com/blog/2009/09/21/how-to-lucid-dream/&quot;&gt;Tim Ferris’s article on lucid dreaming&lt;/a&gt;, and I decided to give it a shot. I’m still in the “write down what you can remember when you wake up” phase, but I’m now aware that I dream, and have vague memories of them.&lt;/p&gt;

&lt;p&gt;I’ve picked up 
&lt;a href=&quot;/blog/2013/05/09/daily-exercise-russian-kettlebells&quot;&gt;kettlebell swings&lt;/a&gt; again. I feel like I’m not challenging myself physically, so I’m back at them. I need more weight - I want to get to 100lb swings, but only have 60lbs of weight to work with. I’ll check out local gyms for discarded plates to see if I can get any more weight.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Significant events&lt;/strong&gt;
Nothing life changing happened in the last few weeks, but there have been lots of little shaping experiences. Serendipitous conversations with important people, or feeling on-the-spot when I didn’t have time to prepare. Opportunities to surprise my wife, or be kind to a stranger. These incidents are the stuff of life, and I don’t want them to pass me by.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This concludes my monthly review. Stay tuned for updates on side projects. If you climb, I will need your help!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Processes Vs. Goals (or, Systems vs. Accomplishments)</title>
   <link href="https://josh.works/2013/11/14/processes-vs-goals-or-systems-vs-accomplishments/"/>
   <updated>2013-11-14T00:00:00+00:00</updated>
   <id>https://josh.works/2013/11/14/processes-vs-goals-or-systems-vs-accomplishments</id>
   <content type="html">&lt;p&gt;In this
&lt;a href=&quot;http://blog.bufferapp.com/why-having-no-goals-in-our-lives-might-make-us-happier-and-more-successful&quot;&gt;excellent article on systems vs. goals&lt;/a&gt;, James argues that even if you did not pursue any specific goals, with the right
system, you will still go a long way.
This idea has been floating around my head for over a year, now, and I think it’s slowly coalescing into something useful.&lt;/p&gt;

&lt;h2 id=&quot;ten-lessons-about-systems&quot;&gt;Ten Lessons About Systems&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Systems are awfully close to habits.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If you can modify, create, and eliminate habits, you can build any sort of system you’d like. (Start this process here: http://tinyhabits.com/)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Reading about things is
completely different than doing things. They don’t even belong on the same continuum.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Reading about things is still a great way to learn and shape your character.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;A goal of “habit change” fails to meet
&lt;a href=&quot;http://en.wikipedia.org/wiki/SMART_criteria&quot;&gt;the criteria for setting a good goal.&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Failure is not absolute. Extract the useful, discard the rest.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Create, don’t just consume. This will sharpen you in many ways.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Personal observation: I am most defensive when others do not carefully consider my points of view. I’ve grown to see this better in recent months. Don’t know what to do with it, but I’m happy to have noticed!&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;A good system, even without a goal, is powerful.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;/intentional-habit-building&quot;&gt;Create a space where the desired habit/system is the easy route&lt;/a&gt;, and you’ll be successful. Struggling to build a habit = failure.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I struggle with systems. I am writing this blog post as an excuse to avoid working on a project. Ironic, yes?&lt;/p&gt;

&lt;p&gt;Rather than beating myself over the head for failing to work on a goal that I want to work on, I’m stepping back. What makes this project so distasteful to me? I pursued on my own accord, and still want to go through with it. I think I’m fearful of the undefined, which this thing is. I don’t know an obvious next step. Which means the next step is obvious:&lt;/p&gt;

&lt;p&gt;Determine the next step. Or the next five steps. Then break each one down into little tiny goals. I’ve been using
&lt;a href=&quot;https://trello.com/&quot;&gt;Trello&lt;/a&gt; for this, and it’s been helpful.&lt;/p&gt;

&lt;p&gt;Phew.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Monthly Review: October</title>
   <link href="https://josh.works/growth/home/2013/11/08/monthly-review-october/"/>
   <updated>2013-11-08T00:00:00+00:00</updated>
   <id>https://josh.works/growth/home/2013/11/08/monthly-review-october</id>
   <content type="html">&lt;p&gt;This is my first monthly review. I’ll spend some time fleshing out the why and the how, and then get right to it. If you don’t want to read a lot of introspective Josh, stop reading. I use the word “I” dozens of times. Consider yourself warned.
For a long time I have feared life passing me by, and after years have passed, I will be largely the same person that I was years ago. I know my temptation is to be passive, so these reviews are an experiment to encourage me to be proactive.
more&lt;/p&gt;

&lt;h2 id=&quot;categories-for-monthly-review-and-why-they-made-the-list&quot;&gt;Categories for Monthly Review (and why they made the list)&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My marriage&lt;/strong&gt;
 (Kristi is more important to me than everything else on this list, and as my marriage is strong, these other projects go well. If my marriage saps my energy, nothing else moves forward. My marriage brings joy. Everything else can make me happy, but not joyful.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Significant relationships&lt;/strong&gt;
 “Josh, there are two kinds of people in the world. Those who pick up the phone and call people, and those who don’t have long-term relationships with their family.” - Paraphrase of my uncle, who called me every Thursday while I was in college. I want to build that sort of intentionality into important relationships in my life.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Side projects&lt;/strong&gt;
 Side projects are the most significant method of personal development a person can do, without making it their full-time gig. It is a “safe” way to test ideas, and if any pan out, they can turn into extra forms of income. Money is not, however, the primary goal. This blog is a side project.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My job&lt;/strong&gt;
 My job provides my primary income, and I need to do well at it. I also should figure out how to develop myself as much as possible within the role, but my job is hardly the most important thing in my life. That would be bad for me 
and my employer.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Physical goals&lt;/strong&gt;
 I enjoy being physically active, and I like improving/learning, so I’m going to always try to have a tangible goal on the horizon. (Right now I’m working on learning handstands, for example.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Finances&lt;/strong&gt;
Money is sort of like oxygen. You notice when it’s gone, but more than a certain amount and it doesn’t do much for you. Kristi and I want to be wise stewards of our resources, and be generous. It is obvious that finances (no matter how much or how little we earn) are important.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Debt reduction (student loans, car loan)&lt;/strong&gt;
A sub-component of finances. I want to be debt-free, and I want it badly. Since I don’t want to reveal tons of details of our finances (I’m not sure why) I will talk about debt reduction as a decimal based off of payments made:minimum payments. If we 
have to make a $100 payment, and do so, we are 1:1 on debt for the month. If we make a $200 payment on a $100 minimum payment, we’re 2:1 on debt, or 2.0. The higher the number the better. As we reduce our debt, we should be able to sustain higher and higher numbers.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;My monthly reviews&lt;/strong&gt;
 I’ve never done a monthly review before. I need to make them effective, so I’ll always reflect on the quality and utility of the review.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Habits&lt;/strong&gt;
 Habits are the way we live at least 95% of our life. It’s foolishness to try to make big changes to your life without looking at your habits. I want to make big changes, so I’m monitoring my habits.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Significant events&lt;/strong&gt;
Sometimes big things happen. I don’t want to live my life from big event to big event, but I’m not going to skip over it either.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;how-do-i-remember-my-month&quot;&gt;How do I remember my month?&lt;/h2&gt;

&lt;p&gt;Since I don’t remember my day-to-day very well, I will rely upon pretty regular entries in 
&lt;a href=&quot;http://750words.com/&quot;&gt;750words.com&lt;/a&gt;. It’s a tool that simply encourages you to write 750 words a day. I don’t always write every day, but for the last two weeks, I’ve missed only a few days. It’s an accurate snapshot of my day.&lt;/p&gt;

&lt;p&gt;I plan projects (sometimes) in a physical journal, and will refer to that as well.&lt;/p&gt;

&lt;h2 id=&quot;october-review&quot;&gt;October Review&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;My marriage&lt;/strong&gt;
 Kristi and I did well. Few memorable disagreements, and we handled those while still being loving to each other. (
&lt;a href=&quot;/blog/2013/07/18/rules-for-fighting-fair&quot;&gt;Conflict management is a key quality indicator&lt;/a&gt;, remember?)&lt;/p&gt;

&lt;p&gt;Our relationship is so much more than just not arguing, though. She felt like I delighted in her, and we did a lot of things together. Kristi’s picked up running, as she’s training for a five mile race in a few weeks. We went to Krav Maga together at least once a week. We went on dates. All-in-all, we have enjoyed each other and are growing together. I am blessed to be married to her.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Side Projects&lt;/strong&gt;
 Lots of progress here, but I have too many, which allows me to follow one side project until it gets hard, then I’ll jump to another project until THAT gets hard, then move to another one. I “consulted” a few times with the Krav Maga DC Training Center (it’s ongoing) and I’m working on tools to help people learn to belay, and deal with fear in lead belaying. I want to keep my projects to just those.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Significant relationships&lt;/strong&gt;
I made almost zero attempts to reach out to those important to me. There is infinite room for improvement here. Stay tuned for November’s review, where I will have progress to report.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;My job&lt;/strong&gt;
 I have learned my roll just fine, and I’ve been able to teach a lot of what we do to two newly-hired staff. I had lunch with one of them, and really enjoyed building that relationship. There’s room for improvement, though. I struggle with feeling content when it feels like key elements of my job are completely out of my control. Stay tuned.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Physical goals&lt;/strong&gt;
I went to the New River Gorge for a weekend, and while I have lost a lot of strength, I managed to send Toxic Hueco (11d), and was pretty happy about that, since I’ve not trained or done a pull-up almost since June.&lt;/p&gt;

&lt;p&gt;I have started learning handstands. I can hold a handstand against a wall for a minute and a half, and I can do little mini-pushups. I want to do a free-standing handstand pushup. So far, I have to build a lot of strength, but I’m ready to take the next steps. I need to learn how to fall out of a handstand, so I can get away from the wall.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Finances&lt;/strong&gt;
More money went out this month than came in, because I put a fair chunk of change into paying off our car loan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;**Debt reduction (student loans, car loan)&lt;/strong&gt;**
 3.5 (ratio of debt paid off:minimum payment) This is a great number. Definitely not going to happen this month.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;My monthly reviews&lt;/strong&gt;
This is my first review. It’s been helpful so far. Probably tons of room for improvement, but I’m not concerned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Habits&lt;/strong&gt;
I’ve been using 750words regularly. It’s helpful in me planning my day. I’ve done ~5 minutes of hand-stand training every day. I have been in Krav Maga twice a week, but I’d like to get that up to three times most weeks.&lt;/p&gt;

&lt;p&gt;I am trying to get back into using my “hangboard” door frame, but have not systematized that yet. This coming month we’ll see improvement, I hope.&lt;/p&gt;

&lt;p&gt;I’ve not been able to reliably wake up early (before 6:00), especially after Krav Maga in the evenings. I’m still experimenting with how to firm up my morning routine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Significant events&lt;/strong&gt;
Nothing major here. A few minor things that caused me great elation followed by disappointment, so the lesson learned is either 1) be wary of false expectations or 2) don’t get so excited and disappointed. I don’t like squashing my emotions, though, so this is not a good option.&lt;/p&gt;

&lt;h3 id=&quot;summary-and-going-forward&quot;&gt;Summary, and going forward&lt;/h3&gt;

&lt;p&gt;October was a good month, but not very intentional. Everything I did just sort of happened. I really want to make progress with building intentional relationships with my family (by calling them. Hi Mom!) and I want to drill down my focus on building the climbing-related tools. More on that later.&lt;/p&gt;

&lt;p&gt;And here ends my first monthly review, only a week after the end of the month. This has been a useful tool, just writing and categorizing and thinking hard about my month. This makes it easier to make good choices going forward, knowing that I’ll be analyzing my decisions in three weeks. If any of you are thinking about doing a similar review, I strongly recommend it!&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Redefining Success</title>
   <link href="https://josh.works/growth/2013/11/06/redefining-success/"/>
   <updated>2013-11-06T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2013/11/06/redefining-success</id>
   <content type="html">&lt;p&gt;It’s been pretty quiet around here lately. It’s been almost a month since my last entry. I thought about writing something here almost every day, but here is why I didn’t:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I want to produce “content” that is helpful and relevant to those who might read it.&lt;/strong&gt;
I felt like nothing I had done or experienced in the last few weeks, even if expertly documented, could help anyone. I have a few big projects that will be 
awesome when they are done, but that requires that 1) I finish them, and 2) they are awesome.&lt;/p&gt;

&lt;p&gt;Here’s why this is still worth reading: 
&lt;strong&gt;No one can be a failure for failing to meet a few specific goals, because failing is a necessary component of success. &lt;/strong&gt;
I have often felt like I have failed. Failures don’t have anything interesting to say, right?&lt;/p&gt;

&lt;p&gt;I had that attitude that I should pipe up only when I’ve figured out some cool way to make money on the side, or when I’ve created this really cool website. (I can’t code worth crap, by the way. “Creating a really cool website” is 
not around the corner.)&lt;/p&gt;

&lt;p&gt;I am human, but I want to create this persona that looks like me, 
but has no weaknesses and makes no mistakes.Fortunately, everyone that knows that this is not true.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to fly… like a boss</title>
   <link href="https://josh.works/growth/2013/10/07/how-to-fly-like-a-boss/"/>
   <updated>2013-10-07T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2013/10/07/how-to-fly-like-a-boss</id>
   <content type="html">&lt;p&gt;I am in a quest to 
&lt;a href=&quot;/epic-quest&quot;&gt;level up my life&lt;/a&gt;. Free flights is a big part of this. I’ve not gotten too many of those yet, but the next best thing is free seat upgrades. I’m not talking about first class - that’s beyond me, at the moment. I’m talking about getting stuck in the back of the plane, jammed against someone else, with zero space.
There’s plenty of room for improvement.
more&lt;/p&gt;

&lt;p&gt;Short of being moved to first class and getting a personal waiter to attend to every creature comfort, you’re best option is getting bumped up to an exit row. After seven hours of your knees bumping into the seat in front of you, an extra six inches of leg room would be better than a four course meal.&lt;/p&gt;

&lt;p&gt;When you buy your ticket, you can usually choose what seat you want. Except exit row seats. Those cost extra. No one wants to shell out an extra $40 or $100 for that, so you accept the back-seat-middle option, and head to the airport.&lt;/p&gt;

&lt;p&gt;Here’s how I’ve managed to upgrade, for free to the exit row (with it’s extra leg room, and often no one sitting beside you) on six of the last seven flights I’ve taken.&lt;/p&gt;

&lt;dl&gt;
  &lt;dt&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;Inquire at the ticket counter, if there is one. (The ticket counter will be near your gate, but is 
 the kiosk sitting beside the gate.)&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;Be polite. Put yourself in their shoes. Then act like a decent human being. It’s not hard.&lt;/p&gt;

&lt;p&gt;Here’s the script:&lt;/p&gt;

&lt;p&gt;You: “Hello - is this the right place to ask about a seat upgrade?”&lt;/p&gt;

&lt;p&gt;Them: “Yes.”&lt;/p&gt;

&lt;p&gt;You: “Awesome. I was wondering if there are any exit row seats available on 1107 to Dallas.”&lt;/p&gt;

&lt;p&gt;Them: “Let me check”… typing… “Yes, there are. You may upgrade for $40 dollars.”&lt;/p&gt;

&lt;p&gt;You: “OK - thanks for checking. I’m trying to spend as little as possible on this flight, so I’ll pass on the upgrade right now, but thanks again for checking.”&lt;/p&gt;

&lt;p&gt;OK - no luck at the ticket counter. This isn’t a surprise, because the ticket counter is sort of like upgrading via the website - if they’d charge you on the website, they’ll charge you at the ticket counter.&lt;/p&gt;

&lt;dl&gt;
  &lt;dt&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;Inquire at the gate-side kiosk. Again, be friendly. Even if the answer is no, you should have still brightened their day a bit.&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;There are three options here:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;No seats available. Walk away. The seats are all full, so no dice today.&lt;/li&gt;
  &lt;li&gt;Seats available, but you have to pay. Walk away - there’s still hope.&lt;/li&gt;
  &lt;li&gt;Seats available, but the agent has to either let everyone else board, or needs to finalize the roster before giving you the upgrade. Let them know you’re interested, give them your ticket if needed, and wait until they call you back up or everyone has boarded.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This last option has been the most common for me. I have to wait a few minutes, or let everyone board, and the ticket agent hands me a new ticket for the exit row. Success!&lt;/p&gt;

&lt;dl&gt;
  &lt;dt&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;/dt&gt;
  &lt;dd&gt;Make the switch once you’re on the plane. By this point, you should know for sure if there is an exit row seat, and if you asked, you’ll know which one. (If it’s the middle seat between two people, and you’re assigned an isle seat elsewhere on the plane, it may not be worth making the switch.&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;But if it’s a desirable seat, here’s what you do…&lt;/p&gt;

&lt;p&gt;Take your assigned seat, and wait for everyone to get on the plane. As soon as flight attendants start shutting the overhead compartments, locate one and say “I noticed an open exit row seat. Would you mind if I swapped into that one real quick?”&lt;/p&gt;

&lt;p&gt;They will 
 say “go for it.”&lt;/p&gt;

&lt;p&gt;Success! Sitting in an exit row seat, possibly with no one besides you. I’m writing this right now in an exit row seat with an empty seat beside me. It’s great, and quite worth while.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Bother?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are two reasons why this is something worth doing:&lt;/p&gt;

&lt;p&gt;First, flying is uncomfortable. Any extra room for comfort increases the quality of the hours you’ll spend sitting there. This upgrade hurts no one, so why not try for it?&lt;/p&gt;

&lt;p&gt;Second, you will start learning to ask for things in a polite but reasonable manner. 
&lt;a href=&quot;http://www.entresting.com/blog/100-days-of-rejection-therapy/&quot;&gt;I have suspicions that a 
 of things can be had by just asking kindly&lt;/a&gt;, so why not start learning to do so?&lt;/p&gt;

&lt;p&gt;Please give this a shot next time you take a flight. Let me know how it goes!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Persistence</title>
   <link href="https://josh.works/persistence"/>
   <updated>2013-09-18T00:00:00+00:00</updated>
   <id>https://josh.works/persistence</id>
   <content type="html">&lt;p&gt;Persistence. It’s worth far more than any finite sum of money. Actually, it’s worth more than an unlimited amount of money, because an unlimited amount of money would complicate my life (and probably yours) far more than we can possibly imagine.
Persistence. I keep trying to think some people are born with it, and others (me) didn’t. Or I prefer to think that it can be had only if it were shaped properly by my parents from a young age. If that didn’t work, it’s sure not through lack of trying. (Thanks for not disowning me at 17, mom and dad!).&lt;/p&gt;

&lt;p&gt;I can easily start fifteen different projects. Statistically, thirteen of them are crap. Two of them may have weight. I’ll make motions to work on both for a little while, and then I give up. I just drop it. I’ve done it a lot of times. It’s not going to stop until I make it stop.&lt;/p&gt;

&lt;p&gt;I’ve spent at least a few hours learning over a dozen different things in the last few months, but have not stuck with many of them. This may be good or it may be bad. I certainly can’t tell which of my fifteen ideas are crap, and it would behoove me to drop the bad ones, or I could be demonstrating a lack of persistence and stick-to-it-iveness.&lt;/p&gt;

&lt;p&gt;It’s refreshing to not be required to all this sorted out. I thought once I graduated college I’d not be wrestling with this stuff.&lt;/p&gt;

&lt;p&gt;Hah.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Train Hard</title>
   <link href="https://josh.works/growth/climbing/2013/09/10/train-hard/"/>
   <updated>2013-09-10T00:00:00+00:00</updated>
   <id>https://josh.works/growth/climbing/2013/09/10/train-hard</id>
   <content type="html">&lt;p&gt;When’s the last time you participated in a sporting event? (Football, Ultimate Frisbee, rock climbing, running biking, wrestling, whatever)
When’s the last time you 
trained for that activity?&lt;/p&gt;

&lt;p&gt;Finally:&lt;/p&gt;

&lt;p&gt;When is the last time you trained for that activity 
with someone else? 
more&lt;/p&gt;

&lt;p&gt;There are a few levels of engaging in an activity. You can observe, you can participate, and you can make investments to improve in that pursuit. (Think watching YouTube videos of sky diving, paying to skydive, but doing it tandem, and finally pursuing your skydiving license.)&lt;/p&gt;

&lt;p&gt;I am learning 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Krav_Maga&quot;&gt;Krav Maga&lt;/a&gt; right now. Every week we cover a new topic, and every few months, you have the opportunity to take a test to advance to the next level, or belt. I am right now in level one (watch out, world…) and am looking forward to the test at the end of the month.&lt;/p&gt;

&lt;p&gt;I’ve been getting bored in the classes of late, because I felt like the material was not pushing me from a technical perspective, and I just wasn’t working as hard as I wanted to be during the class. I’m a big fan of pushing myself hard and trying hard, but I was often working with partners who did not inspire me to really push myself.&lt;/p&gt;

&lt;p&gt;I recently had the chance to train with another level one student who pushed me very, very hard. Inspired by how hard he was making me train, I made him train just as hard. We both acknowledged at the end of class (after I managed to not throw up) that the perceived quality of the class dramatically improved when being paired with a dedicated training partner.&lt;/p&gt;

&lt;p&gt;He and I will not always be able to train together, but I have been reminded of the power of 
being the guy that pushes you to train hard. He pushed me hard, and I had an opportunity to get a lot out of that hour because of it.&lt;/p&gt;

&lt;p&gt;This makes me think of training for climbing - I’ve climbed with a lot of people, and the instances where we have decided to spend the session training hard always feels vastly more productive than a relaxed climbing session. Sometimes I’ve been the guy that surprised my partner by pushing them way harder than they expected, sometimes my partner forced me to dig deep and train harder than I thought I could.&lt;/p&gt;

&lt;p&gt;The take away, however, is this: 
&lt;strong&gt;don’t settle for simple participation&lt;/strong&gt;
. Drive improvement and change. Most of that improvement and change comes from wanting it. If you are hungry for improvement, that will rub off on your training partner. If it doesn’t wear off, get another partner.&lt;/p&gt;

&lt;p&gt;Be the guy (or girl) that inspires others to train hard.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Content but Restless</title>
   <link href="https://josh.works/growth/2013/09/03/content-but-restless/"/>
   <updated>2013-09-03T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2013/09/03/content-but-restless</id>
   <content type="html">&lt;p&gt;There is tension between being content with what you have, and striving for more.
We have all heard the “serenity prayer”:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;God, grant me the serenity to accept the things I cannot change,
The courage to change the things I can,
And wisdom to know the difference.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This prayer is supposedly common in Alcohol Anonymous and other 12 Step programs. A little farther down in the 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Serenity_Prayer&quot;&gt;Wikipedia article&lt;/a&gt;, however, the whole prayer (attributed to American theologian 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Reinhold_Niebuhr&quot;&gt;Reinhold Niebuhr&lt;/a&gt;) is printed, and it is different:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;God, give me grace to accept with serenity
The things that cannot be changed,
Courage to change the things
Which 
&lt;strong&gt;should&lt;/strong&gt;
 be changed,
And the Wisdom to distinguish
The one from the other.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Living one day at a time,
Enjoying one moment at a time,
Accepting hardship as a pathway to peace,
Taking, as Jesus did,
This sinful world as it is,
Not as I would have it,
Trusting that You will make all things right,
If I surrender to Your will,
So that I may be reasonably happy in this life,
And supremely happy with You forever in the next.&lt;/p&gt;

&lt;p&gt;So there is the original. The difference between the original and the shortened version is 
&lt;strong&gt;deciding what to change&lt;/strong&gt;
.&lt;/p&gt;

&lt;p&gt;If you sat around and changed 
only the things you could, you’d change easy things, and insignificant things, because changing hard things and meaningful things is hard. It is hard to change things that 
should be changed, but those are the only changes worth making. And, the original prayer says nothing about changing what you 
&lt;em&gt;**&lt;/em&gt;
can. It talks about changing what you 
should.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Action is empowering, and it leads to taking more action.&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Action implies making things happen.&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Making things happen will eventually lead to failure.&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is great hope in taking action, and there are great lessons to be found in failure. You know how every motivational poster ever to be seen in a school talks about how “You have what it takes” and “You are a beautiful and unique snowflake”?&lt;/p&gt;

&lt;p&gt;In addition to being so stupid it hurts, these are wrong. They 
should say:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;“Get Shit Done – it will make you feel better about yourself.”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;“You are not unique. Millions before you have wrestled with your problems. Some have surpassed you, some have fallen far behind. Until you are dead, there is hope for you.”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Take action. Keep going until you fail. Then try again.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m not sure where I am going with all this. But please, go do something meaningful. It is the 
only thing that matters. Money, your job, your hobby, your friends – none of these matter without something meaningful being done with it or through it.&lt;/p&gt;

&lt;p&gt;The good news is you can define what is meaningful. Then you have to do it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Mentors and Attitude</title>
   <link href="https://josh.works/2013/08/28/mentors-and-attitude/"/>
   <updated>2013-08-28T00:00:00+00:00</updated>
   <id>https://josh.works/2013/08/28/mentors-and-attitude</id>
   <content type="html">&lt;p&gt;Having a mentor is equal parts “having a mentor” and “being one who can be mentored”. If I am too thick-headed to evaluate things that someone tells me and figure out how to apply that to my life, both of us are wasting our time.
Having a mentor is life-changing because you have intentionally adopted a teachable disposition. It is a commitment to growth. If you have a conversation with your mentor, and that conversation is live-streamed to a friend who is not interested in getting mentored, but wants to hear what nuggets of wisdom come from that conversation, you will get far more out of the conversation than he, even though you both heard the exact same thing.&lt;/p&gt;

&lt;p&gt;I don’t have any formal mentoring relationships but there are a few people in my life who consistently share wisdom, insight, and sometimes tell me “That would be a bad way to go about X - how about this other way?”&lt;/p&gt;

&lt;p&gt;I am thankful for these relationships, and I have been deeply impacted by them.&lt;/p&gt;

&lt;p&gt;Do you have any mentors? If not, why not?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Feedback pt. 2</title>
   <link href="https://josh.works/2013/08/23/feedback-pt-2/"/>
   <updated>2013-08-23T00:00:00+00:00</updated>
   <id>https://josh.works/2013/08/23/feedback-pt-2</id>
   <content type="html">&lt;h3 id=&quot;traditional-feedback-is-explicit&quot;&gt;Traditional Feedback is Explicit&lt;/h3&gt;

&lt;p&gt;Feedback is the means by which any system makes changes. From the gene pool to the swimming pool, feedback works to eliminate the insufficient and improve the sufficient. (See what I did with the “pool” thing?)&lt;/p&gt;

&lt;p&gt;Your car gives you feedback if the oil is running low - this allows you to take corrective action before ruining your action. Your computer gives you feedback if its running hot - this allows you to save your work before your computer automatically shuts down, to cool off. Just about any system that can break has feedback mechanisms built in, so the user can evaluate the individual components of that system 
before the effect of poor performance ruins the whole thing.&lt;/p&gt;

&lt;p&gt;Coaches and teachers give feedback, too. If your not throwing the ball right, or moving in exactly the right way, a good coach will give you feedback so you can improve. If your paper is not shaping up as it should, your teacher will give you feedback.&lt;/p&gt;

&lt;p&gt;Here’s the problem - in each of these examples, there is a 
built-in system for feedback. If your car says the oil is low, or your gas is running out, you don’t get angry and stomp off. If your coach tells you how to do a specific move better, you (hopefully) don’t take it as a personal dig.&lt;/p&gt;

&lt;h3 id=&quot;when-it-is-not-explicit&quot;&gt;When It Is Not Explicit&lt;/h3&gt;

&lt;p&gt;In most areas of life, however, feedback is not 
built it. It just happens, if you happen to be looking for it or not. Users complaining about a problem (real or perceived) constitute feedback, even though they didn’t fill out a survey. If everyone you are talking to ends up leaving the conversation, they are giving you feedback, even though they’ll never tell you why they’re leaving.&lt;/p&gt;

&lt;p&gt;These subtle forms of feedback are extremely valuable, and if you are attentive, you can learn a lot about how people relate to you, your product, and your ideas. 
I am not advocating reshaping yourself based on the subtle indicators ofothers, but you would be wise to be aware of the messages that are being sent. You can then pick and choose which to be attentive to.&lt;/p&gt;

&lt;p&gt;Here are three areas where I’m trying to wrap my head around explicit vs. implicit feedback:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;At my job, I talk with the users of our product regularly. They usually get in touch with us only when they are confused or their expectations have not been met. I could pass this off as user “confusion” or “user being disconnected from reality”, or I can think “their reaction is because 
something is not being communicated as it should be. Let me figure out what that is.”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I am intentional about trying to meet with people that I respect, so I can learn from them. Sometimes these attempts do not pan out - I could either dismiss the unsuccessful attempts as “he’s being a jerk” or “he must be really really busy”, or, I can think “Someone could figure out how to get in touch with this guy - what does that person know that I do not? How can I learn that too?’&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Here is a reversal of implicit vs. explicit feedback: My wife is a source of tremendous joy to me. Her favorite things are different than my favorite things, however. She feels very loved if, as we’re driving somewhere far away, I pull over and make a spontaneous date out of a meal, rather than eating in the car. Whenever we’ve done this, she tells me in very plain words “This makes me feel loved. Thank you.” No matter how well I know this, I still regularly try to trick myself into thinking she doesn’t care that much, so we’ll just grab food while driving.
In this last instance, I try to make explicit feedback (“This makes me feel loved”) into implicit feedback (“That was fun”) and then dismiss it. Not something I’m proud of, but its what I do, in order to get my way.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is my thoughts on feedback. There is a lot of growth that can happen quickly if you pay attention to how things are received, and adjust accordingly.&lt;/p&gt;

&lt;p&gt;Get at it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Things You Can&apos;t Do from Behind a Computer, pt. 1</title>
   <link href="https://josh.works/growth/2013/08/20/things-you-cant-do-from-behind-a-computer-pt-1/"/>
   <updated>2013-08-20T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2013/08/20/things-you-cant-do-from-behind-a-computer-pt-1</id>
   <content type="html">&lt;h2 id=&quot;meet-people&quot;&gt;Meet people.&lt;/h2&gt;

&lt;p&gt;Over the last nine or ten months, I can clearly remember a handful of conversations I had. I initiated each conversation with someone that I wanted to learn from. Most I had some prior relationship with (I.E. I had met them, or I knew someone who knew them). This was all precipitated by a 
&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/video-how-to-use-natural-networking-to-connect-with-anyone/&quot;&gt;useful and provoking post by Ramit Sethi.
more&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These conversations were not social events, although in each conversation I have enjoyed myself. Each meeting was an opportunity for me to learn more about how these people have done what they have done. I framed them in my mind as “informational interviews”. In other words
, I interviewed them.&lt;/p&gt;

&lt;p&gt;I’ve met with a company-leading salesman, two business consultants employed by one of the “big three” consultancies, a freelancer who runs a very successful production studio, a CEO, a CMO/Marketing Director, a UX designer, another UX designer/web developer, a senior project manager in the banking industry, and a lawyer. In every instance I asked similar questions:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;What challenges have you faced, first in your career, and second on your job, in the last few months.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How has your career developed, and led you to this place.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How did you achieve X (x=prior mentioned achievement, or something on their LinkedIn profile - yeah, I stalk.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;What is the most enjoyable part of your day/job?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Where do you see your self in two or three years?&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ask more questions. I always ask for just fifteen or twenty minutes, and I stick to whatever time limit I’ve set, unless they want to go longer. Half of these conversations have been over the phone, the other half face-to-face. I have derived so much value from these conversations. They have contained plenty of career advice, actionable suggestions, and encouragement.&lt;/p&gt;

&lt;p&gt;Here’s a few gems that have been consistent across all of these “informational interviews”:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Career growth is not sexy - spend time cultivating useful skills, and then spend time figuring out 
how to use those skills in a way that can benefit your company or your career.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Get out and meet people and learn from them.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Learn to solve problems for others, 
but be sure to communicate this in a way that makes sense to them.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Sometimes the best option is to quit a specific job ASAP.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal of these informational interviews is 
not self-promotion or trying to get hired. I think this is the quickest way to ruin a conversation, and, oh yeah - COMPLETELY MISSES THE POINT OF AN INFORMATIONAL INTERVIEW!&lt;/p&gt;

&lt;p&gt;Finally, here is how I benefited, and why you can never possibly achieve the same benefit until you get out there and do the same:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Now, when meeting with 
anyone (stranger at a BBQ, long-lost family members, friends) I try to guide the conversation with two ideas in mind: How can I learn more about them, and what wisdom might they have to share. Believe me - this makes more a much more interesting conversation than weather and football.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I am getting better and better at engaging in mature conversation with competent people. 
This is a skill that can compensate for lack of technical depth, and can open up doors that otherwise would not be open.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I am able to hear very specific bits of advice and wisdom, consider how to apply it to my own life, then immediately ask if my interpretation is correct.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I am getting better at reading subtle indicators of how a conversation is going. (Hint - you should know when to end a conversation, and it should be 
before the other person is thinking about ending the conversation.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I’ve had a number of job offers/offers to connect me with people who are hiring.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I still sometimes get indescribably nervous, and can feel my chest tighten and it feels like my voice must be shaking and I’m about to fall over. Insane, and embarrassing. I’m working on it. This happens sometimes in other situations and is intriguing. The more time I spend “there”, the more I’ll be able to handle it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I have decided very concretely a few career options that I certainly do 
not want to pursue. (Consultant with Deloitte? What was once a dream now sounds like hell. No thanks.) The time savings 
alone of not wasting hours or days (or months, years, and thousands of dollars) are incalculable.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don’t need impressive networking skills to set up a meeting. Here is the FIRST email I sent out, asking to meet up with someone:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hey R, &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is Josh, from [company where I had met R]. N, a friend there, recently gave me your contact information and said I should get in touch with you. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;I would love to take advantage of your offer to get in touch with you by chatting with you for fifteen or twenty minutes about the work that you do with [company], what led you to work with them, and what has led you to stick with them. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;I will, of course, work around your schedule for a time to meet. If it is convenient  I would love to buy you a cup of coffee at a location and time of your choosing. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Are you willing to set up a short meeting?&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Thanks for your time!&lt;/p&gt;

&lt;p&gt;Short, sweet, and it was so scary to send. This was what I sent, redundancies and all. I guess I should get a copy editor. The conversation I had with R was extremely helpful, encouraging, and still impacts me today. That was the first.&lt;/p&gt;

&lt;p&gt;If you’re not sure what you want to do with your life, go start talking to people. I did not even know that User Experience and Design was a thing. I found out about it after some informational interviews and reading some books.&lt;/p&gt;

&lt;p&gt;This is all I have for now, but please - take a step. Write down a list of three people you’d like to learn from. Make it happen. They’ll be flattered. Wouldn’t you be?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>On Feedback</title>
   <link href="https://josh.works/growth/2013/08/15/on-feedback/"/>
   <updated>2013-08-15T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2013/08/15/on-feedback</id>
   <content type="html">&lt;p&gt;Most of what makes us who we are is based on some sort of feedback obtained earlier in our life.
By my best estimation, there are two types of feedback:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Explicit feedback&lt;/strong&gt;
, which comes in a little box labeled “this is feedback”, and is hard to miss.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Implicit feedback&lt;/strong&gt;
, which is unlabeled, and but for your attention to it, goes unnoticed.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By my age (mid-20s) most of my life has been guided by explicit feedback. As a baby, I was rewarded for doing things like crawling and disciplined when I tried to lick power outlets; as a young child I was rewarded for doing what I was told to do, and disciplined when I didn’t. As a student, I was rewarded with good grades when I did what I was told (“Learn this material in such a fashion that you can regurgitate it on a test with unique but similarly structured questions.”) or when I synthesized old ideas in old ways (“Make an assertion, defend it using intelligible thought and a passing understanding of the English language. No less than twelve pages.”)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jobs come laden with explicit feedback.&lt;/strong&gt;
 Being given a job usually comes with explicit feedback: “we are happy to bring you on board because of X, Y, and Z, and we think you’re a good fit for the role.” Ditto with raises, promotions, and “employee of the month” awards. More explicit feedback is available in the form of reprimands, and of course, being fired.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationships have explicit feedback.&lt;/strong&gt;
 Someone verbally agreeing to be your friend or (in the case of my wife) agreeing to marry me is providing explicit. When they say “I hate it when [x]” or “I love [Y]”, this is explicit feedback. They are verbalizing their feelings.&lt;/p&gt;

&lt;p&gt;The interesting thing about all this, though, is
&lt;strong&gt;**
this: 
**implicit feedback can lead to so much growth. &lt;/strong&gt;
So much more growth than explicit feedback. If you are sensitive to others around you and have a sincere desire to learn, you can figure out how to kick butt at work, or in a relationship, or a lot of other things. Implicit feedback allows you to 
infer what is going on under the surface.&lt;/p&gt;

&lt;p&gt;There are a lot of areas this applies to. Relationships, jobs, friendships, self-monitoring… I’ve hardly thought of them all.&lt;/p&gt;

&lt;p&gt;If you apply this method to all areas of your life, I think the results could be quite interesting. This is an idea that has been rolling around in my head for a few days, and I want to keep fleshing out. There are some specific situations that this applies to me, and I’ll talk more about that soon.&lt;/p&gt;

&lt;p&gt;Your feedback is welcome! (pah. of course it is.): In what areas do you wish you had more feedback in? In those areas, could you possibly be more attuned to implicit feedback?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>20 Things 20-Year-Olds Don&apos;t Get</title>
   <link href="https://josh.works/growth/2013/08/12/20-things-20-year-olds-dont-get/"/>
   <updated>2013-08-12T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2013/08/12/20-things-20-year-olds-dont-get</id>
   <content type="html">&lt;p&gt;Jason Nazar recently wrote an article titled 
&lt;a href=&quot;http://www.huffingtonpost.com/2013/07/29/20-year-olds-dont-get-anything_n_3670651.html&quot;&gt;20 Things 20-Year-Olds Don’t Get.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please read it, but with a big grain of salt.&lt;/p&gt;

&lt;p&gt;Nazar opens with the statement “I made a lot of mistakes along the way, and I see this generation making their own.”&lt;/p&gt;

&lt;p&gt;This seems to be an aspirational list, rather than scolding, but it sure does feel like scolding.&lt;/p&gt;

&lt;p&gt;I thought I’d give my own feedback, as a member of the “20-somthings club” for four years.&lt;/p&gt;

&lt;p&gt;In Nazar’s defense, he has two challenging constraints - brevity and clicks. He covers a lot of ground in just a few words, and his article is posted to generate clicks, not necessarily to deliver nuanced perspective to the reader.&lt;/p&gt;

&lt;p&gt;Here we go. 
Italicized words are mine:
more&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Time is Not a Limitless Commodity – I so rarely find young professionals that have a 
&lt;a href=&quot;http://premium.docstoc.com/c/46/ch/236/l/1163/Urgency-and-Momentum&quot;&gt;heightened sense of urgency&lt;/a&gt; to get to the next level. In our 20s we think we have all the time in the world to A) figure it out and B) get what we want. Time is the only treasure we start off with in abundance, and can never get back. Make the most of the opportunities you have today, because there will be a time when you have no more of it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Partially right - time is the most important resource, and can be easily wasted or squandered on dumb things, like obsessing over achieving “the next level” in your career. No one has said on their death bed “I wish I spent more time at work.” Time is valuable, and must not be wasted, but all your time should not be spent on your career; you’ll be worse at your job, bad at relationships, and have nothing to remember about your life but disliking your commute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. You’re Talented, But Talent is Overrated&lt;/strong&gt;
 - Congratulations, you may be the most capable, creative, knowledgeable &amp;amp; multi-tasking generation yet. As my father says, “I’ll Give You a Sh-t Medal.” Unrefined raw materials (no matter how valuable) are simply wasted potential. There’s no prize for talent, just results. Even the most seemingly gifted folks methodically and painfully worked their way to success. (Tip: read “
&lt;a href=&quot;http://www.amazon.com/Talent-Overrated-World-Class-Performers-EverybodyElse/dp/1591842948&quot;&gt;Talent is Overrated&lt;/a&gt;”)&lt;/p&gt;

&lt;p&gt;Nazar is 100% right - but for most people, they’ve grown up in a school system that relentlessly rewards existence, not results. It is not fulfilling to be rewarded for existing - people are fulfilled when doing meaningful work, and a lot of young folks have been kneecapped by being told (usually be an older generation) that “they have what it takes” and “everyone is unique”. This disconnect from producing hurts everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. We’re More Productive in the Morning&lt;/strong&gt;
 – During my first 2 years at Docstoc (while I was still in my 20’s) I prided myself on staying at the office until 3am on a regular basis. I thought I got so much work done in those hours long after everyone else was gone. But in retrospect I got more menial, task-based items done, not the more complicated strategic planning, phone calls or meetings that needed to happen during business hours. Now I stress an office-wide early start time because I know, for the most part, 
&lt;a href=&quot;http://www.businessinsider.com/successful-early-risers-2012-1?op=1&quot;&gt;we’re more productive&lt;/a&gt; as a team in those early hours of the day.&lt;/p&gt;

&lt;p&gt;Again, 100% right, but he belies his priorities - what’s the problem with working until 3am? It’s not just a 
&lt;strong&gt;productivity&lt;/strong&gt;
 issue, it is a 
&lt;strong&gt;priority&lt;/strong&gt;
 issue. I love mornings, and usually get up before 6am to do the “complicated strategic planning” things I need to do for my life. I once worked 90 hours a week for a business - not only did my work quality suffer, I abdicated all sense of priority in my life to my employer. I will never do this again - I have a wife, and a life.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Social Media is Not a Career&lt;/strong&gt;
 – These job titles won’t exist in 5 years. Social media is simply a function of marketing; it helps support branding, ROI or both. Social media is a means to get more awareness, more users or more revenue. It’s not an end in itself. I’d strongly caution against pegging your career trajectory solely to a 
&lt;a href=&quot;http://memeburn.com/2013/05/21-ridiculous-social-media-job-titles/&quot;&gt;social media job title&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;20-somethings are not the only ones guilty of this. Also, since we were just talking about delivering results (and therefore value) if you can deliver value to a business via social media, get to it. I’ve come across dozens of small businesses that have no Facebook page, or any other web presence. You’ll never get paid to just tweet for a company, but if you can help them enter the arena in which most of their potential customers do business, you’re growing their bottom line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Pick Up the Phone&lt;/strong&gt;
 – Stop hiding behind your computer. Business gets done on the phone and in person. It should be your first instinct, not last, to talk to a real person and source business opportunities. And when the Internet goes down… stop looking so befuddled and don’t ask to go home. Don’t be a pansy, pick up the phone.&lt;/p&gt;

&lt;p&gt;I have nothing to add to this. He hits it on the head. You can connect with people over the phone in a way you cannot in an email. Since business is about relationships, you should figure out how to build relationships. Relationships can be built over the phone. They are hard to build over email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Be the First In &amp;amp; Last to Leave&lt;/strong&gt;
 ­– I give this advice to everyone starting a new job or still in the formative stages of their professional career. You have more ground to make up than everyone else around you, and you do have something to prove. There’s only one sure-fire way to get ahead, and that’s to work harder than all of your peers.&lt;/p&gt;

&lt;p&gt;This is wrong, and it is t
&lt;strong&gt;he most damaging item on the list&lt;/strong&gt;
. Again, we have been talking about adding 
&lt;strong&gt;value&lt;/strong&gt;
 to a business. If you can add 3 units of value/hour to a company for 10 hours a day, or add 6 units of value/hour for 8 hours a day, which is better for your company? That is 30 units of value vs. 48 units of value. Excuse my arbitrary measuring, but the emphasis is not”work longer”, it’s work smarter. Obviously, don’t slack off, but don’t hand your soul over to your business. Work hard at meaningful work. Simple as that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Don’t Wait to Be Told What to Do&lt;/strong&gt;
 – You can’t have a sense of entitlement without a sense of responsibility. You’ll never get ahead by waiting for someone to tell you what to do. Saying “nobody asked me to do this” is a guaranteed recipe for failure. Err on the side of doing too much, not too little. (Watch: 
&lt;a href=&quot;http://www.youtube.com/watch?v=Sz0o9clVQu8&quot;&gt;Millennials in the Workplace Training Video&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;You should never have a sense of entitlement, even if you have a sense of responsibility. Yes, do too much rather than too little. If you watch that video and find it anything but condescending and not that funny, you can probably stop reading now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Take Responsibility for Your Mistakes&lt;/strong&gt;
 – You should be 
&lt;a href=&quot;http://premium.docstoc.com/c/38/ch/191/l/1015/Repeat-Own-then-Make-New-Mistakes&quot;&gt;making lots of mistakes&lt;/a&gt;when you’re early on in your career. But you shouldn’t be defensive about errors in judgment or execution. Stop trying to justify your F-ups. You’re only going to grow by embracing the lessons learned from your mistakes, and committing to learn from those experiences.&lt;/p&gt;

&lt;p&gt;Agreed. This holds true for all ages, and 
&lt;strong&gt;not taking responsibility for mistakes&lt;/strong&gt;
 afflicts everyone, regardless of age. Be someone who takes responsibility, not someone who avoids it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. You Should Be Getting Your Butt Kicked&lt;/strong&gt;
 – Meryl Streep in “The Devil Wears Prada” would be the most valuable boss you could possibly have. This is the most impressionable, malleable and formative stage of your professional career. Working for someone that demands excellence and 
&lt;a href=&quot;http://premium.docstoc.com/c/38/ch/191/l/1019/Kaizen---Improve-Everyday&quot;&gt;pushes your limits every day&lt;/a&gt; will build the most solid foundation for your ongoing professional success.&lt;/p&gt;

&lt;p&gt;He’s wrong. You should be growing, but Streep would be a terrible boss. If her direct reports (terrible word) manage her staff the same way she manages them, it’ll turn the entire company into picking on everyone one rung down the ladder. That’s toxic to the success of a company. If Nazar is down with this management style, I feel sorry for his staff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. A New Job a Year Isn’t a Good Thing&lt;/strong&gt;
 ­­– 1-year stints don’t tell me that you’re so talented that you keep outgrowing your company. It tells me that you don’t have the discipline to see your own learning curve through to completion. It takes about 2-3 years to master any new critical skill, give yourself at least that much time before you jump ship. Otherwise your resume reads as a series of 
&lt;a href=&quot;http://premium.docstoc.com/c/23/ch/80/l/328/Red-Flags-to-Look-Out-For&quot;&gt;red flags on why not to be hired&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I am confident that Nazar hires the best employees he can, and I bet even he has broken this implicit rule when hiring. Since a business is (or should be) interested in delivering value, if a candidate has moved around every year or so, but delivers value and understands the implications of that rapid movement, there shouldn’t be any concerns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11. People Matter More Than Perks&lt;/strong&gt;
 – It’s so trendy to pick the company that offers the most flex time, unlimited meals, company massages, game rooms and team outings. Those should all matter, but not as much as the character of your founders and managers. Great leaders will mentor you and will be a loyal source of employment long after you’ve left. 
&lt;a href=&quot;http://scottberkun.com/2013/pick-your-own-boss/&quot;&gt;Make a conscious bet&lt;/a&gt; on the folks you’re going to work for and your commitment to them will pay off much more than those fluffy perks.&lt;/p&gt;

&lt;p&gt;Good people will take care of their staff, and provide appropriate “fluffy perks” when it matters to staff. Staff deliver value, happy staff deliver more value. Take care of your staff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12. Map Effort to Your Professional Gain&lt;/strong&gt;
 – You’re going to be asked to do things you don’t like to do. Keep your eye on the prize. Connect what you’re doing today, with where you want to be tomorrow. That should be all the incentive you need. If you can’t map your future success to your current responsibilities, then it’s time to 
&lt;a href=&quot;http://lifehacker.com/5948908/how-to-know-when-its-time-to-quit&quot;&gt;find a new opportunity&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Yes. But don’t be a pushover. Don’t do 90 hour weeks. Work harder than your coworkers, and deliver more value, but don’t be a pushover. Life is too short to spend three years sucking up s&lt;strong&gt;t work for a jerk of a manager - and doing this will change who you are. You will 
**become&lt;/strong&gt;
 one who does that which you do not want to do. Draw the line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;13. Speak Up, Not Out&lt;/strong&gt;
 – We’re raising a generation of sh-t talkers. In your workplace this is a cancer. If you have issues with management, culture or your role &amp;amp; responsibilities, SPEAK UP. Don’t take those complaints and trash-talk the company or co-workers on lunch breaks and anonymous chat boards. If you can 
&lt;a href=&quot;http://premium.docstoc.com/video/102271314/How-to-Address-Problems-in-the-Workplace&quot;&gt;effectively communicate what needs to be improved&lt;/a&gt;, you have the ability to shape your surroundings and professional destiny.&lt;/p&gt;

&lt;p&gt;Conflict is inherent in relationships, and conflict management/resolution/however you want to label it is possibly the most valuable skill you can have. As you learn to get stuff done and deliver value, you will inevitably run the risk of stepping on toes. You can either complain about the stick-in-the-mud that can’t handle your amazing money-making ideas, or you can figure out how to work within the framework of your business to make change happen. There are people that do this all day for the government, so if you work in the private sector, it’s totally possible. If it’s still not possible to make change happen, leave your job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14. You HAVE to Build Your Technical Chops&lt;/strong&gt;
 – Adding “Proficient in Microsoft Office” at the bottom of your resume under Skills, is not going to cut it anymore. I immediately give preference to candidates who are ninjas in: Photoshop, HTML/CSS, iOS, WordPress, Adwords, MySQL, Balsamiq, advanced Excel, Final Cut Pro – regardless of their job position. If you plan to stay gainfully employed, you better complement that humanities degree with some applicable 
&lt;a href=&quot;http://premium.docstoc.com/article/154782656/Online-Courses-for-Small-Businesses&quot;&gt;technical chops&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;True. Learn to 
&lt;a href=&quot;http://www.codecademy.com/&quot;&gt;code&lt;/a&gt;, 
&lt;a href=&quot;https://www.khanacademy.org/&quot;&gt;design&lt;/a&gt;, or 
&lt;a href=&quot;https://www.coursera.org/&quot;&gt;whatever&lt;/a&gt;.Learn things. If you don’t have time to learn things, make time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;15. Both the Size and Quality of Your Network Matter&lt;/strong&gt;
 – It’s who you know more than what you know, that gets you ahead in business. Knowing a small group of folks very well, or a huge smattering of contacts superficially, just won’t cut it. Meet and stay connected to lots of folks, and invest your time developing as many of those relationships as possible. (TIP: Here is my 
&lt;a href=&quot;http://www.jasonnazar.com/2010/06/29/networking-tips-for-entrepreneurs/&quot;&gt;Networking Advice&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;It’s not just “networking”, but it’s “relationship building”. Unless you know everything there is to know about anything you’d like to know about, you stand to benefit from building relationships. As you build these relationships, deliver value. Sometimes (especially if you’re young) the experience and knowledge ratio is so one-sided the only thing you can deliver is a heart-felt “thank you for your wisdom, and your time.” This counts as delivering value, so get out there and meet people. Learn from them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;16. You Need At Least 3 Professional Mentors&lt;/strong&gt;
 – The most guaranteed path to success is to emulate those who’ve achieved what you seek. You should always have at least 3 people you call mentors who are where you want to be. Their free guidance and counsel will be the most priceless gift you can receive. (TIP: “
&lt;a href=&quot;http://blogs.wsj.com/accelerators/2013/05/24/jason-nazar-the-secret-to-getting-and-keeping-mentors/&quot;&gt;The Secret to Finding and Keeping Mentors&lt;/a&gt;”)&lt;/p&gt;

&lt;p&gt;If you don’t yet have mentors, just go meet professionals and experts. Even a mortician (if they are really good at what they do) has a lot to tell you about building a business, empathizing with customers, and mastering a craft. If you can’t see past the dead people, you probably are not ready for a professional mentor anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;17. Pick an Idol &amp;amp; Act “As If”&lt;/strong&gt;
 – You may not know what to do, but your professional idol does. I often coach my employees to pick the businessperson they most admire, and act “as if.” If you were (fill in the blank) how would he or she carry themselves, make decisions, organize his/her day, accomplish goals? You’ve got to fake it until you make it, so it’s better to fake it as the most accomplished person you could imagine. (Shout out to 
&lt;a href=&quot;https://twitter.com/tonyrobbins&quot;&gt;Tony Robbins&lt;/a&gt; for the tip)&lt;/p&gt;

&lt;p&gt;Again, yes. 
&lt;a href=&quot;/blog/2013/07/25/my-good-friends-who-dont-know-me&quot;&gt;Have mentors, friends, and role models&lt;/a&gt;. It’s OK if they are imaginary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;18. Read More Books, Fewer Tweets/Texts&lt;/strong&gt;
 – Your generation consumes information in headlines and 140 characters: all breadth and no depth. Creativity, thoughtfulness and thinking skills are freed when you’re forced to read a full book cover to cover. All the keys to your future success, lay in the past experience of others. Make sure to 
&lt;a href=&quot;http://www.goodreads.com/&quot;&gt;read a book a month&lt;/a&gt; (fiction or non-fiction) and your career will blossom.&lt;/p&gt;

&lt;p&gt;He speaks truth. If you like what you read here, 
&lt;a href=&quot;/read-along-with-josh&quot;&gt;you may enjoy these books.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;19. Spend 25% Less Than You Make&lt;/strong&gt;
 – When your material needs meet or exceed your income, you’re sabotaging your ability to really make it big. Don’t shackle yourself with golden handcuffs (a fancy car or an expensive apartment). Be willing and able to take 20% less in the short term, if it could mean 200% more earning potential. You’re nothing more than penny wise and pound-foolish if you pass up an amazing new career opportunity to keep an extra little bit of income. No matter how much money you make, spend 25% less to support your life. It’s a guaranteed formula to be less stressed and to always have the flexibility to pursue your dreams.&lt;/p&gt;

&lt;p&gt;The last four points are worth this entire article. Even the dumb stuff is far outweighed by these items. Please apply these to your life, starting today. Read 
&lt;a href=&quot;http://www.amazon.com/Will-Teach-You-To-Rich/dp/0761147489&quot;&gt;I Will Teach You To Be Rich&lt;/a&gt; to get started.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;20. Your Reputation is Priceless, Don’t Damage It&lt;/strong&gt;
 – Over time, your reputation is the most valuable currency you have in business. It’s the invisible key that either opens or closes doors of professional opportunity. Especially in an age where everything is forever recorded and accessible, 
&lt;a href=&quot;http://www.brainyquote.com/quotes/quotes/w/warrenbuff108887.html&quot;&gt;your reputation has to be guarded&lt;/a&gt; like the most sacred treasure. It’s the one item that, once lost, you can never get back.&lt;/p&gt;

&lt;p&gt;Rather than treating your reputation as a finite, delicate item like fine china, get out there and make honorable choices with courage. If you always try to do the right thing, care for others (especially if they are “below” you), and focus on serving customers and staff, you will not be damaging your reputation, you’ll be improving it. If you are one to cheat, steal, and beg, maybe you should keep that on the DL, but it’s not exactly a sustainable lifestyle.&lt;/p&gt;

&lt;p&gt;There was useful stuff in this article, but I wanted to add my two cents. Thanks for reading, and let me know if you agree or disagree. I’m open to it all!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Cancel Your Cable. Seriously.</title>
   <link href="https://josh.works/home/2013/08/06/cancel-your-cable-seriously/"/>
   <updated>2013-08-06T00:00:00+00:00</updated>
   <id>https://josh.works/home/2013/08/06/cancel-your-cable-seriously</id>
   <content type="html">&lt;p&gt;No one likes to waste money, right?
There are two things that are even worse to waste.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Time&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Energy&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Money can be earned, and if more is needed, you can spend less or earn more. Energy is what you need to bring ideas to fruition. Unlimited time with no energy gets you nowhere, as does unlimited energy with no time.
more&lt;/p&gt;

&lt;p&gt;Cable TV tricks you into making the wrong evaluation of the value proposition. If companies can get you to think that either 
100 channels at $30 a month or
700 HD channels at $100 a month is a better deal than the other option, they’ve won.&lt;/p&gt;

&lt;p&gt;The real calculus is this: five to fifteen hours of my week wasted vs. spent intentionally. Really, you should be willing to pay your cable company the price of your bill if they could simply deliver to you additional time.&lt;/p&gt;

&lt;p&gt;If the small cost of $100 month was all it took to get an extra five hours a week, I’d do immediately. I value my own time above $5 an hour, and you should to (This is why I’ve been trying to 
&lt;a href=&quot;/blog/2013/04/22/becoming-an-early-riser&quot;&gt;wake up earlier every day&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If not cable, then what?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Watching stuff is a lot of fun. I enjoy my fair share of movies, but I get them when I want them, and I don’t have to watch commercials. Between Redbox, Netflix, and all the free options for watching 
&lt;a href=&quot;http://www.cbs.com/shows/elementary&quot;&gt;good shows&lt;/a&gt;online, there’s no reason that by cutting your cable you’re missing out on entertainment opportunities.&lt;/p&gt;

&lt;p&gt;Oh - and all commercials do is try to sell you stuff. We already know that 
&lt;a href=&quot;http://www.newrepublic.com/article/114031/money-happiness-and-new-science-smarter-spending#&quot;&gt;things cannot buy happiness&lt;/a&gt;. Experiences and relationships are what matter. So reject passive entertainment, spend less time exposing yourself to ads for cleaning supplies, cars, hair products, clothing, insurance, fast food, soft drinks, and all the rest of that crap. You will not go wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.theminimalists.com/tv/&quot;&gt;This article&lt;/a&gt; provides an excellent write-up of how to go about dropping the TV.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Waking Up Early, Part 3</title>
   <link href="https://josh.works/misc/2013/08/02/waking-up-early-part-3/"/>
   <updated>2013-08-02T00:00:00+00:00</updated>
   <id>https://josh.works/misc/2013/08/02/waking-up-early-part-3</id>
   <content type="html">&lt;p&gt;I’ve written about my attempts to 
&lt;a href=&quot;/blog/2013/05/07/how-to-wake-up-early&quot;&gt;wake up early before&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Most recently, I 
&lt;a href=&quot;/blog/2013/07/15/waking-up-early-2-0&quot;&gt;promised&lt;/a&gt; to take a sleep log, to track trends. Fortunately, I did not intend to try to wake up early, because I didn’t.&lt;/p&gt;

&lt;p&gt;Here’s what I learned in the last three weeks:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Benadryl messes with your ability to wake up.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;moreI got poison ivy all over my leg a few weeks ago, and have been taking antihistamines pretty regularly. I’m not sure the Benadryl directly contributed to making it hard to wake up at 5:30, but I can’t imagine that it helped.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;It is 
extremely hard to go to bed early.&lt;/strong&gt;
 I spent a week on a family vacation in Rehobeth Beach, Delaware, and I had a great time. I also rarely made it to bed before 12:30a. I would try to get out of bed at 6:30 or 7:00, but couldn’t get up until about 8:00, most days. (This is still early in terms of early-20s vacation standards - I did not once sleep in until 9, let alone noon, so I’m counting this as a win. But I’m far from my goal.) Even after my vacation, I still really struggle to get to bed at a good hour.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, I am typing this at 10:00 pm. Ideally, by 10:00 pm, I would have not looked at my computer for two hours. Yet here I am. I hope to be in bed in less than an hour, but that still has me not falling asleep until after 11:00 pm. Not good enough.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;I don’t need to focus on getting up early anymore. I need to master my bedtime.&lt;/strong&gt;
I have very real minimum sleep requirements, and it is foolishness to skimp on sleep, and 
then being my day at 5:00am. I may be getting only six hours of sleep, and by the time the end of my work day rolls around, I would have been going for twelve hours. That math, while not terrible, is not sustainable.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;I am a level two sleeper.&lt;/strong&gt;
 I can get up early if I have properly rested. 
&lt;a href=&quot;http://couloircreative.com/&quot;&gt;Jeff Chrisler&lt;/a&gt; sent me 
&lt;a href=&quot;http://www.npr.org/blogs/health/2013/07/31/207319883/want-to-be-a-morning-person-take-a-few-tips-from-campers&quot;&gt;this article&lt;/a&gt;. It covers how backpackers naturally adapt to being early risers, synching their circadian rhythm with the sun. It’s not rocket science, but it helped me realize that 
there are some who believe it is physically impossible to wake up early, feeling rested, without being a “morning person”.Well, I can stand here and confidently say, in the words of the great entrepreneur 
&lt;a href=&quot;http://www.guykawasaki.com/&quot;&gt;Guy Kawasaki:&lt;/a&gt; “Bull shiitake. It’s possible. I did it.”&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A level one sleeper is one who, in the words of 
&lt;a href=&quot;/&quot;&gt;Josh Thompson&lt;/a&gt; is “a ‘night owl’ and cannot comprehend the 
possibility of being an early riser.” This is, to him, not a lack of will power. It’s a lack of imagination. Note that there is nothing inherently wrong with being a level one sleeper.&lt;/p&gt;

&lt;p&gt;So, I didn’t move much in the direction I had hoped, these last two weeks, but I did come to some important realizations, and more importantly, I didn’t completely waste my time. I’m going to spend the next two weeks recording my time up and my time asleep, and I’ll present my findings here to you, my kind, generous, and supremely intelligent readers.&lt;/p&gt;

&lt;p&gt;I have a two-part call to action:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;If you want to be an early(er)-riser, track when you go to bed and when you get up every night for the next two weeks.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If you plan on doing step one, tell me. I’ll pester you in a few days to see how you’re doing.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Dream Big, and Build Optionality</title>
   <link href="https://josh.works/growth/2013/07/31/dream-big-and-build-optionality/"/>
   <updated>2013-07-31T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2013/07/31/dream-big-and-build-optionality</id>
   <content type="html">&lt;p&gt;We all can dream big. I have dreams, and you probably do to.
For example: Travel, location independent living, being wealthy/choosing to do work that interests you, enjoying “simple” things. The list could go on, and on, and on.&lt;/p&gt;

&lt;p&gt;But then we go right along doing all the normal things, wishing and wishing, but never taking any action.&lt;/p&gt;

&lt;p&gt;I don’t want to spend the next ten years of my life wishing for lots and doing nothing - that is one of the reasons I started this blog. I want to do epic stuff, and writing about my progress helps me do that.
more&lt;/p&gt;

&lt;p&gt;And then I came across another phenomenon. I wrote down a 
&lt;a href=&quot;/epic-quest&quot;&gt;huge list of things I want to do&lt;/a&gt; and learn, and I have made progress on many of them. I’ve experimented with a Dvorak keyboard layout, I’m learning to write in italics, I set aside enough time to 
&lt;a href=&quot;/read-along-with-josh&quot;&gt;read at least two books a week&lt;/a&gt;, I’m learning Krav Maga, and my wife and I are slowly sorting out how to cook.&lt;/p&gt;

&lt;p&gt;But here’s the problem: None of these things will produce disproportionate rewards. Even if I could type at 150 wpm, write at 55 wpm, read four books a week, cook amazing meals, and was amazing at Krav Maga, I’m no closer to my really big goals. (Travel hacking, having an awesome job, eventual location independence/self-employment, etc.)&lt;/p&gt;

&lt;p&gt;I derive significant value from the things I’m learning, and I’d rather invest my time in something that produces returns, rather than spend another hour a day commuting, or watching TV, but right now, my  efforts at self-improvement lack direction.&lt;/p&gt;

&lt;p&gt;My attitude has changed as I’ve read and integrated information from 
&lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/the-tripod-of-stability/&quot;&gt;two&lt;/a&gt; 
&lt;a href=&quot;http://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CC8QFjAA&amp;amp;url=http%3A%2F%2Fwww.amazon.com%2FAntifragile-Things-That-Gain-Disorder%2Fdp%2F1400067820&amp;amp;ei=LE_5Ub6UN8zE4AON04GoCw&amp;amp;usg=AFQjCNE4XmEtQRlZGKiCKv4qdJTY2uDylg&amp;amp;sig2=KT6p_4Tj9TN3u7jgeJAo7g&amp;amp;bvm=bv.49967636,d.dmg&quot;&gt;sources&lt;/a&gt;. I am not currently working on specific plans to achieve my strategic goals, because there are so many different ways to those ends, and its pretty foolish to predict what may be happening in six months.&lt;/p&gt;

&lt;p&gt;I am currently working on building stability in a few important areas of my life, so I can expose myself to limited risk that could have tremendous payoff.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;If I can achieve significant financial security, I can experiment more with self-employment, if a good opportunity comes along.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If we can reduce our monthly expenses to just a few hundred dollars (not including rent), Kristi and I can experiment with extended international travel.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If I can build a strong network of professional relationships, I can learn from experts and expose myself to really cool job opportunities.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If I can achieve a fairly high level of fitness, I can enjoy opportunities to by physical, as they arise. (Have you ever run all the way up the 
&lt;a href=&quot;http://www.google.com/url?sa=i&amp;amp;source=images&amp;amp;cd=&amp;amp;cad=rja&amp;amp;docid=872fAOzMkt0TrM&amp;amp;tbnid=7kH6HH-1NrxcVM:&amp;amp;ved=&amp;amp;url=http%3A%2F%2Fcommons.wikimedia.org%2Fwiki%2FFile%3A2008_04_21_-_Bethesda_-_Medical_Center_Metro_Station_2.JPG&amp;amp;ei=JVD5UcjZJLXk4APWsICgDQ&amp;amp;psig=AFQjCNEoza2nDjWsL18oS0PPf-BlYyug3A&amp;amp;ust=1375379877670791&quot;&gt;Medical Center metro escalator&lt;/a&gt;? I’ve tried a few times, and last time I went up it, I ran the whole way. It was awesome.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If I can build a strong, trusting relationship with my wife, we can do hard things without experiencing as much 
&lt;a href=&quot;/blog/2013/07/18/rules-for-fighting-fair&quot;&gt;relationship stress&lt;/a&gt; as we would if it were a weak relationship.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where on this list does 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard&quot;&gt;Dvorak typing&lt;/a&gt; fit in?&lt;/p&gt;

&lt;p&gt;It doesn’t.&lt;/p&gt;

&lt;p&gt;How about 
&lt;a href=&quot;http://lifehacker.com/how-i-taught-myself-to-code-in-eight-weeks-511615189&quot;&gt;learning to code&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;Not yet.&lt;/p&gt;

&lt;p&gt;I want to build
&lt;a href=&quot;http://www.investopedia.com/terms/a/anti-fragility.asp&quot;&gt;antifragility&lt;/a&gt;into our lifestyle. We’re getting there, but have a ways to go yet.&lt;/p&gt;

&lt;p&gt;I don’t yet know exactly how to make my big goals happen, but I do know I can take steps to be prepared. I cannot let my uncertainty prevent preparation, so right now, we are figuring out how to reduce our possessions, reduce our living expenses, possibly grow our income, and expose ourselves to cool opportunities and relationships. Then, when something amazing comes up, we will be able to jump on it.&lt;/p&gt;

&lt;p&gt;How about you? What big dreams do you have? Are you putting yourself in a position to be exposed to these opportunities, and take advantage of them when you encounter one?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My Good Friends (Who Don&apos;t Know Me)</title>
   <link href="https://josh.works/home/2013/07/25/my-good-friends-who-dont-know-me/"/>
   <updated>2013-07-25T00:00:00+00:00</updated>
   <id>https://josh.works/home/2013/07/25/my-good-friends-who-dont-know-me</id>
   <content type="html">&lt;p&gt;Rumor has it you become like those you spend time with. Or “birds of a feather flock together”, or “you are what you eat”. Maybe that last one was Hannibal Lector, 
&lt;a href=&quot;http://youtu.be/09TAIcCqFpg?t=27s&quot;&gt;having an old friend for dinner.&lt;/a&gt;
Anyway, the person that 
you are is influenced by the people you spend time with. Ditto for me. There are three kinds of people you can spend time with: 
real people who know you just as you know them, 
real people who do not know you, but you know them, and
imaginary/fictitious people who have never existed.&lt;/p&gt;

&lt;p&gt;We’ll come back around to that last category in a minute. I am not insane.
more&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mentors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are people who I know, who know me, that I seek out to spend time with. I call them 
mentors. Some of these relationships have popped up out of nowhere (thanks, Wayne), while others have been more formal. (Think 
paid counseling.) You should seek these people out, because the value you can derive from these relationships is nearly endless. Life changing. Seriously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role Models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Real people who I know but don’t know me, I’ll call 
role models. They are people that, for some reason or another, I want to emulate. It is important to specify the 
way I want to emulate these people. An easy example is Chris Sharma - an amazing rock climber, but sort of 
&lt;a href=&quot;http://youtu.be/McWaEZPMfag?t=3s&quot;&gt;looks like he’s stoned all the time&lt;/a&gt;&lt;a href=&quot;http://youtu.be/McWaEZPMfag?t=3s&quot;&gt;.&lt;/a&gt; I want to climb like him, not communicate like him.&lt;/p&gt;

&lt;p&gt;Other examples: books and blogs by or about noteworthy figures (
why they are noteworthy is entirely up to you) make up the bulk of this category.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Literary Role Models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In high school and college, we all had to read high quality literature. If you were like me, you didn’t much care to read this stuff, for a 
&lt;a href=&quot;http://online.wsj.com/article/SB10001424127887323823004578595803296798048&quot;&gt;variety of reasons.&lt;/a&gt; Since I’ve finished college, I’ve dug back into books (and learned more for less than I ever did in college - that’s another discussion all together.) but I’ve enjoyed both non-fiction 
and fiction.&lt;/p&gt;

&lt;p&gt;When I read fiction, some times it’s classy (think of a famous dead author - he’s classy) and sometimes it’s not as classy, 
&lt;a href=&quot;http://www.amazon.com/The-Returners-Season-Part-ebook/dp/B00810TW6Y&quot;&gt;but still interesting.&lt;/a&gt;No matter how classy or non it is, when you spend a few hours immersed in a world of the author’s creation, you’re spending time with the individuals in that book. If you “spend time” with people who wrestle with hard problems and make good decisions and generally conduct themselves in an honorable, respectable way, you are surrounding yourself with people who make good decisions and conduct themselves in an honorable and respectable way.&lt;/p&gt;

&lt;p&gt;Another title for “literary role models” is “imaginary friends”. Don’t judge. They influence you, they’ve just never had a physical existence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Friends Matter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I am now going to lump all three categories above into a bucket named “friends”. These categories differ from your normal, every day friends in at least one specific way: 
You must seek them out. Only one of these groups of people (physical people who know you) can influence you 
without your permission. Think of a text from a friend - you didn’t ask for it, but you’re being influenced by its content. In the other two categories, you must seek out that person (or literary figure), and intentionally expose yourself to their influence.&lt;/p&gt;

&lt;p&gt;Much of your family life you don’t have much control over. Nor do you have control over where you 
went to school, or the friends you 
once had. Your past cannot be changed. Your 
present is mostly a 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Function_%28mathematics%29&quot;&gt;function&lt;/a&gt; of your past. Your future, on the other hand, is up for grabs. If you are not intentional about influencing your future, you won’t do much about influencing your present context, and, therefore, your future will largely be determined by your past.&lt;/p&gt;

&lt;p&gt;Bear with me.&lt;/p&gt;

&lt;p&gt;If you want to influence your future, but you’re not sure how you want to do so, consider spending time with those you want to emulate. You can emulate a professional painter not because he’s a painter, but because he’s a 
professional. You can emulate an amazing teacher not because he’s a teacher, but because he’s 
amazing. You can emulate a real estate investor not because they know real estate, but because they have figured out how to turn one dollar into two dollars. You can emulate a Buddhist monk not because they’re a monk, or a Buddhist, but because they are 
content. You can emulate a passionate computer programmer not because they are a computer programmer but because they are… 
passionate.&lt;/p&gt;

&lt;p&gt;You can choose who you spend time with, who you emulate. If you’re not ready to follow around a physical person to be more like them, you can follow around a digital one or an imaginary one. Find out who’s influenced them, and go be influenced by them.&lt;/p&gt;

&lt;p&gt;Whatever you do, please
,find some quality in some person to emulate. Expose yourself to that quality, to that person (without exposing yourself in the criminal sense) and you’ll find yourself slowly gaining more and more influence over your future.&lt;/p&gt;

&lt;p&gt;I will soon discuss 
my mentors, role models, and imaginary friends. I have dozens, if not hundreds. Literally 
nothing that comes out of my mouth or rattles around in my head is original, and I’d be a fool to pretend otherwise.&lt;/p&gt;

&lt;p&gt;Do 
you have mentors, role models, or imaginary friends?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Why I use a Kindle</title>
   <link href="https://josh.works/why-i-use-a-kindle"/>
   <updated>2013-07-22T00:00:00+00:00</updated>
   <id>https://josh.works/why-i-use-a-kindle</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Kindle-Ereader-ebook-reader/dp/B007HCCNJU&quot;&gt;Amazon’s e-reader&lt;/a&gt; is extremely functional. Most reasons to
not use one focus either on practical issues (depending on something with a battery) or on aesthetic reasons. These are valid issues, of course, but these pale in comparison to the many, many reasons
to use a Kindle.
more&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Extremely portable&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt; Quite compact&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Can hold near-infinite number of books&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Instantly acquire new books.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Purchased books are cheaper on Kindle than physical books (usually)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can “rent” books on your Kindle from a library - without ever going to the library.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Easy to use one-handed, either lying down (in bed) or standing up (metro).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Built-in dictionary for all those words you don’t know how to use. (Oh, and you can have dictionaries in just about any language.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;No page-turning - just tap a convenient button that is ambidextrous.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can read while eating without your book falling shut.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can hold it with one hand
and turn pages. Simultaneously. Difficult to do with a regular book.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;When not in use, fold the cover shut, and drop it in the thinnest pocket of whatever bag you’re carrying with you. (You
do have a cover for it, right?)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It weighs less than just about any book you could buy.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It takes up less space than just about any book you could buy.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;While it does require charging, I find myself charging it less than once a month. (And I use it a lot.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can play games on it, if you’re so inclined.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can have it for $69.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It uses the Amazon bookstore. Amazon is awesome.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It makes reading fun, so you read more than you would otherwise.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It can hold over a thousand books simultaneously, so you can start slimming down your library.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a short list of how I do most of my reading. If you don’t have a Kindle yet, look into it. It could change your life.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Rules for Fighting Fair</title>
   <link href="https://josh.works/rules-for-fighting-fair"/>
   <updated>2013-07-18T00:00:00+00:00</updated>
   <id>https://josh.works/rules-for-fighting-fair</id>
   <content type="html">&lt;p&gt;When a friend tells me they want to date someone, I ask them why. They always say “she’s pretty, funny, and kind”, or “he is handsome, funny, and cares for me”. Obviously. Have you ever wanted to date someone because they are ugly, boring, and mean?&lt;/p&gt;

&lt;p&gt;So, rather than asking more questions where they will wax poetic about the wonderful qualities of their prospective partner, I ask one simple question:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;How do they fight?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Anyone can be nice to someone when they are “in love”, or when they feel it is good for them. It takes skill and character to argue fairly, and it will tell you a lot about a person in a very short amount of time. For the same reason you should pay attention to how someone treats waiters, janitors, and others who they don’t have to be nice to.&lt;/p&gt;

&lt;p&gt;It reveals a depth of character that you can’t otherwise see.&lt;/p&gt;

&lt;p&gt;This list I put down is the rules Kristi and I try to abide by. We don’t always follow this list; but we do try. It dramatically improves the quality of our disagreements, helps us grow to love each other even more, and avoids causing damage to the relationship.&lt;/p&gt;

&lt;h2 id=&quot;rules-for-fighting-fair&quot;&gt;Rules for Fighting Fair:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Don’t yell. If you start yelling, call off the discussion and come back later.&lt;/li&gt;
  &lt;li&gt;Don’t yell. If you yell, they will dig in and fight harder.&lt;/li&gt;
  &lt;li&gt;Don’t yell. If you yell, you are causing far more damage in one minute than can be undone in twenty.&lt;/li&gt;
  &lt;li&gt;Stop fighting and start discussing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;People can discuss things with angry tones and mean looks. Tell the person you were arguing with that you don’t want to fight, you want to figure out what’s going on and make it right. A discussion can be productive, a fight cannot be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t be so blinded by the topic at hand that you cannot listen for what heart issues are operating beneath the surface.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example 1: Her reaction to your feedback on her driving is not about driving, it’s about a sense of control, and a desire to not feel out of control. She knows how to drive, but feels like her life is out of control, and your feedback makes it feel like one more thing - driving - is out of her control.&lt;/p&gt;

&lt;p&gt;Example 2: His procrastination is not about being lazy, but a deep, deep fear of rejection and a sense of perfectionism, which is motivated by a fear of rejection. You can nag about doing something, or you can help him understand why he is equipped to go forth and
&lt;a href=&quot;http://www.bothsidesofthetable.com/2009/11/19/what-makes-an-entrepreneur-four-lettersjfdi/&quot;&gt;JFDI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You cannot talk about “heart issues” if you are yelling and arguing. So stop yelling and arguing. You are now talking in normal voices, and discussing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reaffirm long-term goals. (Also known as “keep your eye on the prize”.)&lt;/p&gt;

&lt;p&gt;Are you trying to score rhetorical points and tear them down? If so, you are the problem, not them.&lt;/p&gt;

&lt;p&gt;Are you trying to love them and you want good things for them? Let them know.&lt;/p&gt;

&lt;p&gt;When you’re fighting, it’s easy to think they hate you, and that they are a miserable excuse for a person. Inform them that they are wrong. You do, in fact, love them and are committed to them. (That’s true, right?)&lt;/p&gt;

&lt;p&gt;Don’t call them names, or ascribe negative character traits.&lt;/p&gt;

&lt;p&gt;They are not stupid, they did something that you need help understanding.&lt;/p&gt;

&lt;p&gt;They are not disrespectful, they did something that seemed disrespectful.&lt;/p&gt;

&lt;p&gt;Encourage them even in the way you bring up “problems”. Give them the benefit of the doubt.&lt;/p&gt;

&lt;p&gt;You bring just as many warped perspectives and screwed up ideas to the table that they do. Don’t put the blame all on them.&lt;/p&gt;

&lt;p&gt;Arguments are frustrating. Verbally “pause” the argument, and ask for a hug. Then keep talking. Or shelve the discussion and come back later.&lt;/p&gt;

&lt;p&gt;These are Kristi’s additions to the above list:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Don’t interrupt&lt;/li&gt;
  &lt;li&gt;Don’t yell (Do you see a theme here?)&lt;/li&gt;
  &lt;li&gt;Don’t make sweeping statements like “never” and “always”&lt;/li&gt;
  &lt;li&gt;Phrase things like “this is what I’m seeing” or “this is how I feel” instead of “this is what you did”&lt;/li&gt;
  &lt;li&gt;Don’t say “why did you do that” say “can you help me understand where you’re coming from”&lt;/li&gt;
  &lt;li&gt;Listen!&lt;/li&gt;
  &lt;li&gt;Genuinely try to put yourself in their shoes&lt;/li&gt;
  &lt;li&gt;Give each other the benefit of the doubt&lt;/li&gt;
  &lt;li&gt;Never hang up on each other&lt;/li&gt;
  &lt;li&gt;Pause - remind each other that you love each other.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This entire list can be summarized in one rule: &lt;strong&gt;When fighting, be respectful and loving.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a tall order, for the record. We certainly don’t have it figured out, but we’re working on improving the quality of our fights. Already they are pretty good, and we want them to be better. I would recommend you talk with your significant other
regularly about the quality of your arguments. It is time well spent.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Waking Up Early 2.0</title>
   <link href="https://josh.works/growth/misc/2013/07/15/waking-up-early-2-0/"/>
   <updated>2013-07-15T00:00:00+00:00</updated>
   <id>https://josh.works/growth/misc/2013/07/15/waking-up-early-2-0</id>
   <content type="html">&lt;p&gt;A few months ago, I wrote about 
&lt;a href=&quot;/blog/2013/05/07/how-to-wake-up-early&quot;&gt;waking up early.&lt;/a&gt;
I tracked my progress for almost a month, and most of the days I woke up between 4:45 and 6:00. My “must be up by” time is 7:30a, so waking up more than an hour and a half early counts as a huge win.&lt;/p&gt;

&lt;p&gt;From mid-may until June 7, I woke up consistently 
very early. I had excellent success. The reason, however, was not controlled by me. I woke up early because 
I went to bed early. My wife teaches kindergarten in Prince George’s County, and had two classes of 25 kids. Her assistant principal, who’s been doing what he does for about 30 years, told Kristi that her kindergarten class had some of the worst-behaved kids he’d ever seen.
more&lt;/p&gt;

&lt;p&gt;These rough kids (several emotionally disturbed kids, more than a few suspensions for violence, etc.) are why Kristi is teaching where she is teaching, but 
it is exhausting. This means that my wife would usually go to bed by 10:00 pm. We always go to bed at the same time, so this meant 
I was going to bed at 10:00. When I’m in bed that early, it is so easy to get up at 5:something.&lt;/p&gt;

&lt;p&gt;I’ve figured out how to not hate getting up early; I actually enjoy it. So now the challenge is getting enough sleep so I 
can get up early.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t 
wake up early&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I was thinking about waking up early, I lived in a context where the default was going to bed early. Since Kristi’s finished teaching for the summer, our schedules (and bedtime) have developed a lot more flexibility. For the last few weeks, my bedtime has drifted towards midnight or later. I would wake up at 7:00 or so, or if I woke up early, I’d be tired throughout the day. 
Being tired during the day sucks.&lt;/p&gt;

&lt;p&gt;I am shifting my attitude from being one who 
wakes up early (when it’s easy) to one who 
goes to bed early. I love getting up early, but until now, I’d not considered my evening ritual. I just coasted through the day until I decided it was time to start getting ready for bed, which takes an undetermined amount of time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Going to bed early&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My action steps for the next two weeks are pretty easy, and it’s pure monitoring. 
I am not yet trying to change my behavior. I want to set myself up for success (what a trite saying, huh?) but this means having accurate expectations.&lt;/p&gt;

&lt;p&gt;Without an accurate understanding of where I am now, my attempt to set correct goals hinges more on luck than good planning. To facilitate this good planning, I’m keeping track of when I go to bed. Self-monitoring generally leads to low-level improvement by itself, so I’m hoping to move in a good direction simply by paying attention to that which I want to change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action Steps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I will pay attention to two things every evening.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;What time I 
start going to bed.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;What time I 
actually lay down in bed.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am tracking what time I 
start going to bed so I know how long it takes, for the same reason we all know how much time we need to get ready before we leave in the morning. If you have to leave the house at 8:00, you know your alarm has to go off at 7:15, or something like that.&lt;/p&gt;

&lt;p&gt;I’m tracking what time I 
actually lay down in bed first so I can actually quantify the first metric (If I know I start going to bed at 11:15, and wake up at 6:30, that doesn’t really tell me anything) but so I can know how much sleep I’m getting every night, and how I feel in the morning. Different people have different sleep needs, supposedly between seven and eight hours. I would like to better know my own sleep needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your turn&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re interested in waking up earlier, do this with me. I’ll post your results along with mine, and you’ll be (mildly) internet famous! You don’t actually need to wake up at any different time than you already do, you just need to chart when you 
start going to bed, and when you 
actually go to bed. (It takes a sticky note and a pen.)&lt;/p&gt;

&lt;p&gt;Leave a comment here, or shoot me an email. You don’t have to start today (Monday) just sometime this week.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Crock Pots are Foolproof, Right?</title>
   <link href="https://josh.works/home/2013/07/10/crock-pots-are-foolproof-right/"/>
   <updated>2013-07-10T00:00:00+00:00</updated>
   <id>https://josh.works/home/2013/07/10/crock-pots-are-foolproof-right</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe54e4b0278244cea040/1434910435144/pic-04192013-001.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe54e4b0278244cea040_1434910435144_pic-04192013-001.jpg_&quot; alt=&quot;The internal temperature was 175 degrees. Whoops. &quot; /&gt;&lt;/a&gt;
A while back I got together with my good friend 
&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/5586fe4be4b0278244ce9f01/5586fe9ee4b0278244ceab71/1434910366219/?format=original&quot;&gt;Dustin&lt;/a&gt;. I had an evening free, wanted to cook, AND hang out with good friends. I wanted to try a 
&lt;a href=&quot;http://www.sixsistersstuff.com/2013/01/slow-cooker-maple-and-brown-sugar-pork.html&quot;&gt;really good looking recipe&lt;/a&gt;, and watch Django Unchained.&lt;/p&gt;

&lt;p&gt;The cooking instructions for the recipe was “cook on low for 7-9 hours”. I did some mental math. If I turn it on as I’m walking out the door to work, at 8:15, and get back by 5:30, that could work. I’ll have to run some errands on my way home, but if I had 10% to the cook time, it can’t be terrible, right?”
more&lt;/p&gt;

&lt;p&gt;Well… it turns out I was gone more like 10.5 hours, and my crock pot’s 
low temperature setting is a little higher than
 expected.&lt;/p&gt;

&lt;p&gt;I got home about 40 minutes before Dustin was to arrive, and something didn’t smell quite right. I popped open the crock pot, and saw some 
very dry, 
very warm meat. It was 175 degrees. So much for not overdoing it.&lt;/p&gt;

&lt;p&gt;We got take-out from Tara Thai. Zero harm, zero disappointment, and we had a great time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest take away for me had nothing to do with cooking. (I already knew that cooking a piece of meat for almost 11 hours is usually a bad idea.)&lt;/p&gt;

&lt;p&gt;I could have freaked out when I got home and immediately learned that my dinner plans were ruined. I would have been stressed, and probably a little angry. I wasn’t. This was a learning experience, and I love Thai food, so I learned, and we ate Thai.&lt;/p&gt;

&lt;p&gt;My learned lesson was this: 
A good backup plan allows for one to try hard, and even fail, with very few repercussions. There was nothing to freak out about, because dinner was not ruined. It was simply modified. We went from pot roast to cashew chicken with a phone call.&lt;/p&gt;

&lt;p&gt;A few days later I tried the roast again. After it was rescued from the crock pot at an appropriate time, it was delicious.&lt;/p&gt;

&lt;p&gt;Failure can be made safe, and therefore stripped of all those annoying negative associations.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>First five meals from The 4-Hour Chef</title>
   <link href="https://josh.works/home/2013/07/08/first-five-meals-from-the-4-hour-chef/"/>
   <updated>2013-07-08T00:00:00+00:00</updated>
   <id>https://josh.works/home/2013/07/08/first-five-meals-from-the-4-hour-chef</id>
   <content type="html">&lt;p&gt;I don’t know how to cook. Period. My most impressive culinary creations were, until recently, spaghetti and beans-n-rice.
I got married about a year ago, and had hoped that I would become inspired to become a world-class chef. After a long time eating Rice-A-Roni, spaghetti, sloppy joes, burgers, and anything that can be prepared in a crock pot, I was looking for a change, and 
&lt;a href=&quot;/epic-quest&quot;&gt;this has been a priority for a while.&lt;/a&gt;more&lt;/p&gt;

&lt;p&gt;Enter Tim Ferriss’s 
&lt;a href=&quot;http://www.amazon.com/The-4-Hour-Chef-Learning-Anything/dp/0547884591/ref=sr_1_1?ie=UTF8&amp;amp;qid=1358001534&amp;amp;sr=8-1&amp;amp;keywords=the+four+hour+chef&quot;&gt;The 4-Hour Chef.&lt;/a&gt; Among many other things in the book, he has a prescribed set of recipes to follow. In each recipe, he builds on skills, tools, and ingredients used in the prior recipe. His aim with each meal is maximum impact in taste and appearance, but minimum effort and cleanup. This resonates with me, because he speaks in terms of 
Return on Investment (in terms of money, time, and effort.)&lt;/p&gt;

&lt;p&gt;Most importantly, once you have the book, you don’t need any other resources. You’ll need some basic tools, but he spells out all the processes the first time he introduces them.&lt;/p&gt;

&lt;h4 id=&quot;i-will-record-my-trip-through-his-book-and-identify-anyhiccupsalong-the-way-i-hope-in-addition-to-cataloging-my-own-successes-and-failures-i-can-inspire-one-or-two-of&quot;&gt;I will record my trip through his book, and identify any hiccups along the way. I hope, in addition to cataloging my own successes and failures, I can inspire one or two of&lt;/h4&gt;
&lt;p&gt;you to give this a shot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson One: Osso Buko&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first lesson is braised lamb. What is a 
braised anything?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Braising&quot;&gt;Braising&lt;/a&gt;is a combination cooking method using both moist and dry heat; typically the food is first seared at a high temperature and then finished in a covered pot with a variable amount of liquid, resulting in a particular flavor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For this lesson, we (Tim and I, of course.) skipped the searing. It’s easier this way, and still comes out great.&lt;/p&gt;

&lt;p&gt;There are two critical ingredients to Osso Buko. First, the meat. I was supposed to have lamb shanks. Where the heck do you get lamb shanks? I went to a local Giant and poked around their meat department for a while, and could find nothing that looked like what Tim had in his book.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe52e4b0278244ce9fed/1434910432729/lamb-chops_300.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe52e4b0278244ce9fed_1434910432729_lamb-chops_300.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe52e4b0278244ce9fe9/1434910432146/raw-shank.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe52e4b0278244ce9fe9_1434910432146_raw-shank.jpg_&quot; alt=&quot;The lamb chops that I WANTED.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since I was cooking for three later that evening, I just grabbed meat that said “lamb” on it, and also had visible bone. Turns out I had gotten lamb chops. Oh well.&lt;/p&gt;

&lt;p&gt;I had my meat. What was the other critical ingredient? Not an ingredient, per se, but a tool. I had to use a cast-iron dutch oven. I’ve never owned anything cast iron, and there was no cast iron cook wear in my house growing up. My uncle introduced me to it when I lived in his basement after I finished college; he is an excellent cook, and he swears by the stuff. Since he is a trustworthy source, I did not protest much to the idea of getting a cast iron dutch oven. Especially since 
&lt;a href=&quot;http://www.amazon.com/Lodge-Logic-Pre-Seasoned-Combo-Cooker/dp/B0009JKG9M/ref=sr_1_1?s=home-garden&amp;amp;ie=UTF8&amp;amp;qid=1358005155&amp;amp;sr=1-1&amp;amp;keywords=dutch+oven+combo&quot;&gt;this dutch oven by Lodge&lt;/a&gt; is both a pot and a skillet.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe53e4b0278244ce9fff/1434910433374/pic-01142013-004.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe53e4b0278244ce9fff_1434910433374_pic-01142013-004.jpg_&quot; alt=&quot;About to be cooked.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that I had my meat and my pot, I put everything in the pot (carrots, lamb, canned whole tomatoes, a little garlic, extra-virgin olive oil, and some white wine) and I stuck it in the oven for two hours. It came out delicious, and tender. Everything was edible, including the carrots and the tomatoes.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Lessons learned: While meals may be simple, it can be a real pain finding the correct ingredients. The chops I got were not at all what I was looking for, but it was the only lamb I could find. If you know where to get good lamb shanks, let me know.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe54e4b0278244cea01f/1434910433999/pic-01142013-011.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe54e4b0278244cea01f_1434910433999_pic-01142013-011.jpg_&quot; alt=&quot;I substituted lamb shanks with turkey legs. It was OK. &quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I eventually ended up getting turkey thighs instead of lamb shanks, just so I could have a better idea of how it is supposed to go. It worked out, but I’m not a huge turkey fan, so… I’m going to keep looking for lamb shanks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson One and a Half: Chuck Roast&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The very next page, after the Ossu Buko, was a variation of braising using just a chuck roast, and three different cans of broth. Put everything together in the pot, and bake for 2.5 hours. Seriously. That easy. It was delicious. And there was 
lots of left overs.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe55e4b0278244cea052/1434910435306/pic-05112013-002.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe55e4b0278244cea052_1434910435306_pic-05112013-002.jpg_&quot; alt=&quot;Breakfast of champions.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Two: Scrambled Eggs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve been eating three eggs and bacon for breakfast every day for at least two years. Repetitive, yes, but healthy (in some circles. Unhealthy in others. Guess which camp I am in?) and easy. I don’t scramble them, I just put ‘em sunny side up and mop the yolks with the bacon.&lt;/p&gt;

&lt;p&gt;It was easy to transfer to scrambled eggs. Tim outlines three different ways to make scrambled eggs, and they all three have to do with the ratio of egg whites to egg yolks. He recommends a 2:1 ratio of yolks to whites. This would leave me with a ton of whites, so I’ve been using a 1:1. (In his defense, he has a paragraph labeled “What the hell do I do with these extra egg whites?” The answer is either flip the ratio next time around, make crab cakes, or hair conditioner. Yes, hair conditioner…)&lt;/p&gt;

&lt;p&gt;I’m stuck in the rut of sunny-side up eggs and bacon, though, so after a few days of playing around with scrambled eggs, I settled back into my old habits.&lt;/p&gt;

&lt;p&gt;Tim lists 
around the world in 44 flavor combinations as suggestions to get a feel for different cuisines  With just a few basic spices, you can get from Mexico to India to the Middle East to Greece to Hungary and more.&lt;/p&gt;

&lt;p&gt;I experimented with scrambled eggs for a few days, but I just love my sunny-side-up eggs cooked in a little bacon grease. It’s quick and easy, and oh-so-filling.&lt;/p&gt;

&lt;p&gt;(My last trip to Giant, they had eggs for the cheap. I bought four-and-a-half DOZEN eggs. It lasted about three weeks. Mm, protein.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Three: Coconut Cauliflower Curry Mash&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was my first total failure. I screwed up the ingredient ratios, and found out I didn’t have curry (I thought I did) so I unintentionally steamed a bunch of cauliflower that was too hard to mash, yet still soft enough to eat plain; I had cauliflower leftovers for a few days. The upside is cauliflower steamed with coconut milk is delicious, even if it can’t be mashed up like mashed potatoes. For “total failure”, it was no big loss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Four: Union Square Zucchini&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe54e4b0278244cea038/1434910434726/pic-02032013-002.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe54e4b0278244cea038_1434910434726_pic-02032013-002.jpg_&quot; alt=&quot;Very tasty. Highly recommended.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This stuff was delicious!&lt;/p&gt;

&lt;p&gt;My biggest challenge for this lesson was finding zucchini! The two local Giants that I visited didn’t have ‘em. Once I found out that zucchini is basically a squash, I had better luck finding it. (Cucumbers, on the other hand, are not interchangeable!) I also did not have the 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Ghee&quot;&gt;Ghee&lt;/a&gt; (clarified butter) or chilli pepper. I used red pepper flakes, instead, and some regular butter.&lt;/p&gt;

&lt;p&gt;I peeled the outside of the zucchini before slicing it into thin strips- turns out I didn’t have to do it. Skipping that step will save time, and the peeler I was using wasn’t working so well; I got a better peeler. Between not peeling the outside, and having a good peeler, the prep took about 1/3 as long.&lt;/p&gt;

&lt;p&gt;Lessons learned: Zucchini are also called squash. After scouring the world looking for some stinking zucchini, I realized I had found it. Several times. And never even knew it. Again, shopping has proven to be the biggest frustration. The good news is, one can get better at shopping for food. Everything else is easy. This was seriously delicious.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson Five: Bittman Chinese Chicken with Bok Choy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I could not find the necessary baby 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Chinese_cabbage&quot;&gt;bok choy&lt;/a&gt;, so this was actually just Chinese chicken. I had never steamed meat before, but it’s pretty easy. I started with boneless skinless chicken breasts, cut them in half the long way, and lay them on top of a wire rack above steaming water. Put a lid on top, and pull them off fifteen minutes later.&lt;/p&gt;

&lt;p&gt;This is easy, in theory, except I didn’t have a wire rack (I commandeered the wire rack from my toaster oven), and I didn’t know when to start the fifteen minute timer. I decided that the water should be boiling before you put the chicken on top of the wire rack, and 
that is when you start the fifteen minutes.&lt;/p&gt;

&lt;p&gt;Take two:&lt;/p&gt;

&lt;p&gt;I was able to get the Bok Choy, and made the sauce more than 20 minutes in advance. It still tasted very good, and it presents very well. (If you want to look like a kick-butt chef, talk about “presenting”. It distracts the guests from the
taste of the food, and focuses the attention on the 
look of the food. This can be a good thing.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lessons I learned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This post represents many, many hours of work. Between reading and trying to figure out what I needed to do and buy, to actually trying to buy the stuff, to cooking and cleaning, a lot of work happened here. But it was worth it. I’m learning my way around a kitchen.&lt;/p&gt;

&lt;p&gt;Since eating is a pretty regular part of my life, it is worth it to me to get good at it.&lt;/p&gt;

&lt;p&gt;Even when everything seems perfectly clear, there is still plenty of room for questions. Most questions related to ingredient substitution; I don’t have curry powder, so I’ll try red pepper flakes. No ghee? I’ll go without.&lt;/p&gt;

&lt;p&gt;I questioned plenty of the cooking processes. Fifteen minutes of cooking over boiling water. Should the water be boiling when I put the meat on, or do I count heating the water as part of the fifteen minutes? (Thank you, probe thermometers…)&lt;/p&gt;

&lt;p&gt;I had issues finding all the food that I needed for the meals. I never shopped for more than one meal at a time, even though this meant lots of trips to the store. At the time, I had plenty of time to go to Giant, so my struggle with batching grocery runs was not overly problematic.&lt;/p&gt;

&lt;p&gt;Fear of failure can be overpowering. I didn’t want to mess these up. It helped that my wife, Kristi, would often make a side, like mashed potatoes or microwaved corn. That took some of the pressure of failure off me. All the fear of failure was entirely self-generated. And 
&lt;a href=&quot;http://www.tarathai.com/&quot;&gt;Tara Thai&lt;/a&gt; is right down the street. And they deliver. If it all 
does totally hit the fan, just order some take out. Consider it an inexpensive and very local cooking class, and you learned something that does not work. 
&lt;a href=&quot;/blog/2013/07/10/crock-pots-are-foolproof-right&quot;&gt;Failure is not so bad.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shopping is an important part of cooking. I never expected shopping to be so hard. I now realize that I must mentally equip myself to go into the store and come out with what I need. There are thousands of choices, and it’s painful walking the entire store looking for one stupid item that you 
know they have.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Simplify, simplify, simplify</title>
   <link href="https://josh.works/simplify-simplify-simplify"/>
   <updated>2013-07-04T00:00:00+00:00</updated>
   <id>https://josh.works/simplify-simplify-simplify</id>
   <content type="html">&lt;p&gt;Kristi and I stumbled upon the realization that we’ve become minimalists. And it is exciting.&lt;/p&gt;

&lt;p&gt;We live in a one-bedroom apartment. It is spacious, for a one-bedroom, but compared to anything larger than a one-bedroom apartment, it is small. We managed to pack it full of stuff in no time.
more&lt;/p&gt;

&lt;p&gt;Then, an unexpected blessing came about. Our neighbors don’t clean their apartment, or put much food away, so they had problems with bugs. We share a wall with them, so we got to share their problem with bugs. The landlord sprayed both of our apartments, and in preparing for that spraying, we had to pile
almost all of our possessions in the middle of our living room.&lt;/p&gt;

&lt;p&gt;We realized, quickly, that we had a lot of stuff. So we got rid of stuff that we obviously did not need. Then,once we started putting things away, we got rid of more stuff. Then, we stumbled across
&lt;a href=&quot;http://www.amazon.com/Clutters-Last-Stand-Time--junk/dp/1593373295/ref=sr_1_10?s=books&amp;amp;ie=UTF8&amp;amp;qid=1372721044&amp;amp;sr=1-10&amp;amp;keywords=clutter&quot;&gt;books&lt;/a&gt; and
&lt;a href=&quot;http://zenhabits.net/start/&quot;&gt;blogs&lt;/a&gt; that talk about having even less stuff, in order to free up mental and physical space.&lt;/p&gt;

&lt;p&gt;I don’t like putting things away, but I also dislike the apartment being messy. An obvious solution is to have less things to have to keep orderly. If you don’t have things that can be messy, the apartment is less messy. So, for the last few months, we’ve been casually getting rid of things that we don’t use. Here’s a short list:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Cleats that I’ve not used in two years.&lt;/li&gt;
  &lt;li&gt;Climbing shoes that have holes in the toes.&lt;/li&gt;
  &lt;li&gt;Ditto with another pair.&lt;/li&gt;
  &lt;li&gt;An old harness that has a well loved belay loop, that I really shouldn’t use anymore.&lt;/li&gt;
  &lt;li&gt;Shirts that I don’t like, but don’t hate, so I wear ‘em only when I’m out of everything else.&lt;/li&gt;
  &lt;li&gt;Shorts that don’t fit right.&lt;/li&gt;
  &lt;li&gt;Pants that I’ve not worn in a year.&lt;/li&gt;
  &lt;li&gt;A blazer I bought for $2 at a thrift store and wore once.&lt;/li&gt;
  &lt;li&gt;Uncomfortable dress shoes.&lt;/li&gt;
  &lt;li&gt;Another pair of uncomfortable dress shoes.&lt;/li&gt;
  &lt;li&gt;My old laptop.&lt;/li&gt;
  &lt;li&gt;Belts that I don’t wear.&lt;/li&gt;
  &lt;li&gt;My second pair of pajama pants.&lt;/li&gt;
  &lt;li&gt;All non-skinny ties.&lt;/li&gt;
  &lt;li&gt;Cups we’ve not used in a year.&lt;/li&gt;
  &lt;li&gt;A cup-cake baking sheet we’ve never used.&lt;/li&gt;
  &lt;li&gt;Little nesting bowls we’ve never used.&lt;/li&gt;
  &lt;li&gt;A spare set of plates someone gave us, but we never use.&lt;/li&gt;
  &lt;li&gt;Tools that are made redundant by smaller and more compact tools.&lt;/li&gt;
  &lt;li&gt;Extra power cables.&lt;/li&gt;
  &lt;li&gt;Little trinkets of crap I never use.&lt;/li&gt;
  &lt;li&gt;Random pens we never use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe50e4b0278244ce9f9c/1434910433809/pic-06242013-001.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe50e4b0278244ce9f9c_1434910433809_pic-06242013-001.jpg_&quot; alt=&quot;The &amp;quot;get rid of&amp;quot; pile, after ten minutes of work.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Climbing gear that is either old and heavy, or new(er) and dangerously worn.&lt;/p&gt;

&lt;p&gt;Books. So many books.
My book collection had become an altar to the intelligence of Josh. If you visit our apartment, you’ll look through our books. (At least I hope you will.) You’ll think “man. He’s smart, if he reads this stuff.” When I look at my books, I think of what a towering intellect I am, because of my books. In reality, I’m probably not going to read most of ‘em. The idea of reading them is way more fun than actually reading them.&lt;/p&gt;

&lt;p&gt;I ditched the altar to myself, and cleared out two shelves worth of books. I ditched cook books, books about business, philosophy, economics. All of that. I’m a real person, I’m not going to read 600 pages about Immanuel Kant. Why kid myself?&lt;/p&gt;

&lt;p&gt;Do you see the trend?&lt;/p&gt;

&lt;p&gt;I got rid of all of them. We went from three crowded bookshelves to three sparse book shelves. We’re going to get rid of more.&lt;/p&gt;

&lt;p&gt;I don’t want to be burdened down by things. Every item you own takes up space, both in your home, and in your brain. If you move, so to do your things. They are anchors.&lt;/p&gt;

&lt;p&gt;I’ve slowly transitioned from thinking “I will keep this unless I can justify getting rid of it” to “I will get rid of this unless I can justify keeping it”.&lt;/p&gt;

&lt;p&gt;This trend is dangerous. I’ve grown to enjoy very much the process of getting rid of things. I view items around the house in a new light. If I could talk with them, I would say “You, there. What do you do for me? Why should I give you space, regular cleaning, and attention? How is my life made better by you? Why are you better than empty space, or the alternative uses for the money and space you require?”&lt;/p&gt;

&lt;p&gt;As I’ve de-cluttered, I have been able to check off a number of items from
&lt;a href=&quot;/epic-quest&quot;&gt;My Epic Quest of Awesome.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m another few levels along.&lt;/p&gt;

&lt;p&gt;If you could get rid of three things, what would they be? What’s stopping you?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>June trip to the New River Gorge</title>
   <link href="https://josh.works/june-trip-new-river-gorge"/>
   <updated>2013-07-03T00:00:00+00:00</updated>
   <id>https://josh.works/june-trip-to-the-new-river-gorge</id>
   <content type="html">&lt;p&gt;The New River Gorge had beautiful weather this weekend. The forecast for the weekend was, until Friday, near-certain thunderstorms.&lt;/p&gt;

&lt;p&gt;Typical of the New, the weather proved unpredictable, and we had glorious sun the entire trip.&lt;/p&gt;

&lt;p&gt;I was eager to get out to the New, since my last attempt to get out there was delayed by rather catastrophic car failure. I’ve been out of my already very limited training regimen, so I did not know how I would stack up against the rock, and against the other guys I was climbing with.&lt;/p&gt;

&lt;p&gt;It turns out I can still climb, but not nearly as hard as I had hoped. I was fortunate to be climbing with guys who are far stronger than me.&lt;/p&gt;

&lt;p&gt;Brian sent Puppy Chow, 12c, and Christian repeated Lactic Acid Bath 12d, and almost onsighted Puppy Chow. Preston onsighted Yowza, 5.12a (for his warmup) and Sean sent a 12a that was way harder than the 12b right next to it. There were many other displays of excellent climbing, but in summary - it was a pretty strong group. I brought up the rear by making at least the first bolt of everything I tried.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was an awesome trip, despite me not climbing that hard, for two reasons:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;I’m motivated to keep training. Motivation is a valuable thing to have, and I’d lost it after almost three weeks of
not training, and close to two months of no outdoor trips.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I’m motivated to train smarter. My endurance was terrible - this is not a surprise, given the one-dimensional nature of my training, but I’m not taking it as an excuse. I want to train endurance, just as I train power. A standard route in the new probably has about sixty moves on it, so I will figure out how to approximate sixty moves on my metal door frame.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I had a few other enjoyable learning experiences during my trip. For example, I had never thought about the best way to pack for a climbing trip. I just threw a bunch of stuff in a bag, and spent the rest of my trip rummaging around for items that fell to the bottom of my bag. Next trip I’ll spend less time rummaging, and more time… not rummaging, all thanks to Sean’s good ideas.&lt;/p&gt;

&lt;p&gt;I’m launching into a new training “regimen”, and I’m toying with training five days on, two days off.&lt;/p&gt;

&lt;p&gt;I’m going to spend the next week fine-tuning my training. These are my tools: Door frame. Chair. Up to 30lbs on a weight belt. Space to campus up, full extension, but nothing to grab and hold that high.&lt;/p&gt;

&lt;p&gt;If you guys have any suggestions, let me know. I’ll publish all the suggestions I get soon!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Krav Maga, or &quot;Crush Balls, Gouge Eyes, and Break Bones&quot;</title>
   <link href="https://josh.works/growth/2013/06/17/krav-maga-or-crush-balls-gouge-eyes-and-break-bones/"/>
   <updated>2013-06-17T00:00:00+00:00</updated>
   <id>https://josh.works/growth/2013/06/17/krav-maga-or-crush-balls-gouge-eyes-and-break-bones</id>
   <content type="html">&lt;p&gt;In the last few weeks, I have been physically attacked dozens of times. Usually the attacker was just trying to choke me, but sometimes he was trying to throw me to the ground. After a few minutes of fighting, I would attack him. Then we’d both shake hands, say “thank you”, and walk to the metro.
more
My wife and I have always recognized a need (or a strong desire) for some sort of self-defense training. I’ve always wanted some, because I don’t like the idea that my only option to protect myself is “run away”. That would not always an option, nor does it help anyone other than me.&lt;/p&gt;

&lt;p&gt;Kristi often felt uncomfortable walking many places in DC by herself, especially at night. Metro platforms, parking garages, gas stations, or any place where you’re not alone can be scary places.&lt;/p&gt;

&lt;p&gt;The way I saw it was this: We’re not training to protect ourselves against a low-probability incident, but rather we’re training to provide peace and comfort in situations where before we may have been nervous or on edge, because ITSHTF, we have options that, if executed correctly, leave us safe.&lt;/p&gt;

&lt;p&gt;The top of my 
&lt;a href=&quot;/blog/2013/06/14/the-list&quot;&gt;Epic List&lt;/a&gt; is Krav Maga. My wife and I are taking lessons at Krav Maga DC, in China Town. We go between two and four times a week, for an hour each lesson.&lt;/p&gt;

&lt;p&gt;We signed up for a year of classes, which usually gets students to a solid level of proficiency. The classes are structured in week-long “blocks”, where a single new element is focused on, for the week. Recent topics have been learning to use “hammer fists”, elbow strikes, and defenses from chokes and head locks. I feel far from proficient, but we’ve been going for just a few weeks. (By the way, every defense includes usually a “crush the groin” step, and “gouge the eyeball” or “collapse the windpipe”.)&lt;/p&gt;

&lt;p&gt;Krav focuses on real-life situations and instinctual offensive reactions to attacks. The goal is to, if attacked, not just respond and be safe, but leave the other guy unable to get off the ground to prosecute the attack any farther. (This is called “ending the fight”, and is brutal. Yes, you are expected to kick ‘em when they’re down.) Anything goes, because if attacked, you’re probably smaller than your attacker, weaker, and much less prepared for what’s going on. (If I were attacking someone, I’d make sure to be bigger, stronger, and mentally prepared for the attack. Wouldn’t you?)&lt;/p&gt;

&lt;p&gt;We’re having a blast, and this is a solid step towards checking off an item on my list. If anyone wants to join with us, it’s 
&lt;a href=&quot;http://www.kravmagadc.com/www/index.php?p=home&quot;&gt;Krav Maga DC,&lt;/a&gt;by the Gallery Place/Chinatown metro. There are a lot of training centers in the area, though, so if you’re interested, make time in your schedule, your budget, and make it happen. You’ll always have other things to do with your time and money, but if this is something important to you, it’ll happen.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Climbing in &quot;decking range&quot;</title>
   <link href="https://josh.works/climbing-in-decking-range"/>
   <updated>2013-06-07T00:00:00+00:00</updated>
   <id>https://josh.works/climbing-in-decking-range</id>
   <content type="html">&lt;p&gt;In indoor sport climbing, as your climber progresses from the ground to the first three bolts, you need to be ready for any situation. Here’s how to give a kick-ass lead belay when your climber is close enough to the ground they could &lt;strong&gt;potentially&lt;/strong&gt; deck.&lt;/p&gt;

&lt;p&gt;This is part of a &lt;a href=&quot;https://josh.works/how-to-be-an-awesome-belayer&quot;&gt;series on lead belaying&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Have you ever encountered hard moves right off the ground? If you can’t make it to the first bolt, you know you’ll land on the ground if you fall. No big deal. If you make the first bolt, and get to the second one and can’t clip, or if you have to make a committing move past the second bolt in order to clip, all of a sudden, hitting the ground is a real possibility, and you don’t really want to do that, right?&lt;/p&gt;

&lt;p&gt;If you’re like me, and you don’t completely trust your belayer, climbing becomes  scary, because I’m now focused on not hitting the ground. Heady stuff, for something you do for fun.&lt;/p&gt;

&lt;p&gt;This situation is why &lt;strong&gt;you&lt;/strong&gt; need to be an awesome belayer when your climber is between the first and second bolts. You should never expect (or demand) that your belayer be better than you.&lt;/p&gt;

&lt;p&gt;I’ll address a few common situations, and explain what to do in each. Hopefully I’ll help you sketch out a mental picture of what to do, then you can get in the gym and practice a bit. I’ll close with how you can build all these skills in the comfort of your local climbing gym.&lt;/p&gt;

&lt;p&gt;Disclaimer: Climbing is dangerous. Falling from before the third bolt can result in you hitting the ground. So can falling from after the third bolt. Don’t hurt yourself - start with small and safe, and work into big and safe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All that follows is in the context of INDOOR SPORT CLIMBING. If you’re outside, you need to evaluate the landing zone, and decide how risky it is to let your climber come anywhere close to the ground.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OK - from the ground up, with equally sized climbers:&lt;/p&gt;

&lt;h2 id=&quot;climber-is-below-the-first-bolt&quot;&gt;Climber is below the first bolt&lt;/h2&gt;

&lt;p&gt;You’re spotting right now, because they can’t be on belay. Have enough slack out that the climber can clip the first bolt without getting short roped, but not so much that you have to take in a bunch before they proper slack is in the system. Pro tip: estimate before they clip how much slack they need, and adjust accordingly, rather than estimating and adjusting after they clip.&lt;/p&gt;

&lt;h2 id=&quot;climber-is-between-the-first-and-second-bolt&quot;&gt;Climber is between the first and second bolt&lt;/h2&gt;

&lt;p&gt;Belay should be very snug, with zero extra slack, and the belayer should be out from under the climber with the bolt between the climber and belayer. (I.E. Not directly underneath the climber.)&lt;/p&gt;

&lt;p&gt;If the climber falls, you need to remove as much slack as possible from the system while 
still giving a soft catch. If you remove slack from the system and don’t give them a soft catch, you’ve spiked your climber, which is dangerous. And rude.&lt;/p&gt;

&lt;p&gt;To “spike” your climber means you have short-roped them while they fall. The best-case scenario is they fall into free space and are stopped very suddenly. Worst case, as they fall, they may get pulled into the wall without being able to get their feet out, or they can “pendulum” into the wall with enough force to sprain an ankle, or break a bone.&lt;/p&gt;

&lt;p&gt;The most common way to unintentionally spike your climber is to be afraid that they will fall too far, and as they fall, you take in slack and/or move backwards and sit in the rope. (Imagine your climber was on top-rope and said “take”. That action taken on top rope belay is EXACTLY what leads to a devastating “spike” on lead belay.)&lt;/p&gt;

&lt;p&gt;Getting spiked is mentally and physically jarring, and uncomfortable, and, if repeated, and really damage the lead climber’s confidence in themselves, their belayer, and hard climbing in general.&lt;/p&gt;

&lt;p&gt;To remove slack and still give a soft catch, you’ve got to be alert. As the climber is falling, you remove slack from the system, quickly, and get in the brake position. As their weight hits, you jump, hard, off the ground, into the air. It’s possible that the climber will end up  standing on the ground, with the belayer up in the air.&lt;/p&gt;

&lt;p&gt;This is not a ground fall - the climber, while maybe a bit startled, will have landed on the ground very softly. If the belayer is also standing on the ground, this means the climber was dropped. If the belayer is five or six or seven feet in the air, it was an awesome catch.&lt;/p&gt;

&lt;p&gt;It’s also common for the climber and belayer to bump into each other like pool balls. This is physics, and not to be feared. The reason the starting stance of the belayer matters is so that they don’t hit each other on the way up. This would be uncomfortable for all involved.&lt;/p&gt;

&lt;h2 id=&quot;climber-is-clipping-the-second-bolt&quot;&gt;Climber is clipping the second bolt:&lt;/h2&gt;

&lt;p&gt;The belayer has zero extra slack, has not short roped the climber, and is standing beneath the first bolt ready to take in slack and step backwards if the climber blows it before clipping. If the climber does fall, the belayer should take in slack while stepping backwards but still give a soft catch.&lt;/p&gt;

&lt;p&gt;If you spike your climber in this scenario, you’re really putting the hurt on. Broken ankles and severely bruised knees are in your (or their) future.&lt;/p&gt;

&lt;h2 id=&quot;for-moving-between-the-second-and-the-third-bolt&quot;&gt;For moving between the second and the third bolt:&lt;/h2&gt;

&lt;p&gt;Repeat the above steps, but leave a little more slack in the system. This makes it less likely that you’ll accidentally short rope or spike them, without exposing them to any additional risk. (I would contend that it’s much safer to have a little more rope out. Zero downside.)&lt;/p&gt;

&lt;h3 id=&quot;weight-differences&quot;&gt;Weight Differences:&lt;/h3&gt;

&lt;p&gt;If there is a weight difference between the climber and the belayer, the belayer needs to adjust accordingly. I use the following rule of thumb: If the climber outweighs me by  more than 25 lbs, I don’t have to try very hard to give a soft catch - it’ll just happen.&lt;/p&gt;

&lt;p&gt;If he falls between the first and second bolt, I may try to spike him, in order to keep him off the ground. (Since he outweighs me, I cannot cause a dangerous spike - it will just be a bit harder of a catch than normal.)&lt;/p&gt;

&lt;p&gt;If I outweigh the climber by 25lbs or more, I have to try very hard to give a soft catch. There are two ways to do this:&lt;/p&gt;

&lt;h4 id=&quot;use-a-tube-style-belay-device&quot;&gt;Use a tube-style belay device&lt;/h4&gt;

&lt;p&gt;(I know it’s more work. You’ll be OK) and let slack go through it as you arrest the fall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not let rope run through your hand!&lt;/strong&gt; You will burn yourself, and be tempted to let go of the break strand.&lt;/p&gt;

&lt;p&gt;What you can do is, as the climber is falling, but before their weight has hit the rope, slide your hand a few inches down the rope, and then just naturally let your hand end up in the break position just below the belay device. Eighteen to twenty four inches of rope will have run through the device as the fall is arrested, and it will be much more comfortable for the climber.&lt;/p&gt;

&lt;h4 id=&quot;belay-kneeling-on-one-knee-and-stand-up-into-the-fall&quot;&gt;Belay kneeling on one knee and “stand up” into the fall&lt;/h4&gt;

&lt;p&gt;If your climber is lighter than you, and especially if there is any rope drag, you won’t be able to give a soft catch by just jumping up the wall. You’ll jump, and end up right where you started. It isn’t dangerous, but it’s just not as comfortable to your climber as it could be. (You want them to be comfortable falling, right?) To do this, as they’re moving between bolts, belay from a knee from where you would normally stand. As they fall, still try to jump, but you’ll give a much softer catch since you’ll be assisting them pulling you off the ground with the muscles in your legs.&lt;/p&gt;

&lt;p&gt;In sum: Belaying is a big responsibility. It’s easy to get psyched out if you’re doing hard moves between the first and second bolt, or while clipping. You’ll get a great return on investment if you spend a few minutes over your next few sessions practicing these skills. If you are more relaxed while climbing, you’ll climb better. Practice these skills in order to grow relaxed. It won’t come any other way.&lt;/p&gt;

&lt;p&gt;In another post, I’ll talk about considerations for climbing outdoors. Everything covered above is applicable, but outside you come across hazards that are not often encountered inside. (Ledges, dangerous landing zones, etc.)&lt;/p&gt;

&lt;h2 id=&quot;practice-makes-perfect&quot;&gt;Practice makes perfect&lt;/h2&gt;

&lt;p&gt;So, you slogged through these thousand words, and you’re ready to practice. (Bless you, for reading this far)&lt;/p&gt;

&lt;p&gt;Should you just head out, grab an unsuspecting friend, and then ask them to whip before clipping the second bolt?&lt;/p&gt;

&lt;p&gt;Um. No.&lt;/p&gt;

&lt;p&gt;Here’s why:&lt;/p&gt;

&lt;p&gt;Your brain is a much more powerful beast than you think it is. It is constantly tuned in to the environment and evaluating new sights, sounds, and situations, even when you’re not paying attention to any of this. This is why music is so important to movies - when the ominous music cues up, you get a tight feeling in your chest, even if everything on the screen is hunky-dorey. Your brain knows that in all the past experiences, ominous music means bad things. Bad things make you feel anxious. Therefore, ominous music makes you feel anxious.&lt;/p&gt;

&lt;p&gt;Your brain evaluates new experiences in light of past experiences. Heuristicsis a cool word that means “mental shortcut”. When you encounter a new situation, your brain says “does this in any way, shape, or form, resemble anything I’ve encountered before? If so, repeat reaction.”&lt;/p&gt;

&lt;p&gt;The implication of this thought process is stunning, and wide-spread. We’re talking about climbing, today, so I’ll keep it to that. When you fall, ever, do you experience stress, anxiety, or discomfort? If so, you are teaching your subconscious to link negative emotions with falling. Every time you experience stress while falling, you’re strengthening the connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Falling, for the sake of falling, if at all associated with discomfort or stress, reinforces negative mental attitudes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The only way to get better at falling, to make it easier, is to make it pain free. Discomfort free. Easy. Rewarding.&lt;/p&gt;

&lt;p&gt;You need to start small, and just barely outside your comfort zone, and not progress to more challenging material until your comfort zone has expanded to include the area that was once outside your comfort zone.&lt;/p&gt;

&lt;p&gt;Here’s a recommended progression:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Climb to the third bolt. Clip it, and move down one move. Confirm your belayer is ready, and then let go of the wall. You’re on top rope, so this is easy. Do it a few times so your belayer can practice timing the jump up the wall, so he can give you a soft catch. You both will be able to feel when he figures it out.&lt;/li&gt;
  &lt;li&gt;Repeat the above step, but this time, have your belayer feed out a foot or two of slack before you let go of the wall. You’ll be moving a little faster, and will solidify to you both what a soft catch feels like. (Your belayer should be good at giving softer catches as this point.&lt;/li&gt;
  &lt;li&gt;Climb to the bolt, where it’s level with your chest, and fall a few times. Soft catches. This should be easy. Feel free to call it a day whenever you’re ready. At this point you probably have taught your subconscious that the last fifteen falls were actually pretty low key, and you should feel a sense of reward and pride. Revel in this feeling.&lt;/li&gt;
  &lt;li&gt;Climb so the bolt is at your waist. Make sure your belayer doesn’t have you tight - you don’t want to be short roped or spiked, remember? Fall a few times. Are you both growing comfortable with the idea behind soft catches?&lt;/li&gt;
  &lt;li&gt;Switch out with your belayer. Why should you have all the fun? Repeat the above steps, then switch back.&lt;/li&gt;
  &lt;li&gt;Climb a move or two above the bolt, take a fall. Now you’re really falling. Your belayer should be giving you soft catches.&lt;/li&gt;
  &lt;li&gt;Climb another move or two, do it again. Take a fall here a few times, but not in the exact same situation. Don’t get in the mindset that you have to perfectly prepare for falling - that does not transfer well to real-world climbing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you’ve completed these seven steps, you’re well on your way to de-linking discomfort and falling. The work is not done, but a full progression is a whole blog post in it’s own. That’s coming soon.&lt;/p&gt;

&lt;p&gt;Updated 09/12/16 (&lt;a href=&quot;https://www.reddit.com/r/climbing/comments/52fcvd/found_this_article_about_climbing_in_the_decking/d7juloj?context=10000&quot;&gt;Thanks /u/notcrushingV16&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Feedback? Shoot an email to joshthompson@hey.com&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Training for climbing (progress update)</title>
   <link href="https://josh.works/growth/climbing/2013/06/03/training-for-climbing-progress-update/"/>
   <updated>2013-06-03T00:00:00+00:00</updated>
   <id>https://josh.works/growth/climbing/2013/06/03/training-for-climbing-progress-update</id>
   <content type="html">&lt;p&gt;I am at the end of my second iteration of climbing training, and this is how it went and what I learned:
I completed the workout twelve times, but I took a twelve-day break between workout eleven and twelve. I first skipped a workout because I had ripped skin open on one of my fingers, and I did not want to attempt the workout with that damage, even though I could have taped it. I skipped the next one because I didn’t really want to do it, and was short on time for the day. Next I felt sick, and then I was on a work-related trip for a week.
more&lt;/p&gt;

&lt;p&gt;So, without even trying, I took almost two weeks off from training. And I am glad I did so; Friday and Saturday I experienced occasional throbbing pain in my elbow. I’ve felt it before, and it’s early-stage elbow tendonitis. It did not show up until I had 
 climbed for almost two weeks, so I am glad I took it easy recently. In the future I will continue to take breaks from training, so my tendons can recover.&lt;/p&gt;

&lt;p&gt;This last weekend I 
was going to climb in the New River Gorge, and I was going to see if my training had netted any improvement. As myself and a few others were driving there Saturday morning, my car decided to overheat and vent coolant all over the inside of the hood. Thanks to kind and knowledgeable West Virginians, we were able to temporarily repair what is probably catastrophic damage (supposedly a blown head gasket) and drive my car back to DC. I’m not positive what caused the problem but it certainly ended the trip. The down side is we didn’t climb for the weekend; the upside is the car is still drivable. (For a while I was afraid I would have to have to get it towed 150 miles back to DC. Expensive.)&lt;/p&gt;

&lt;p&gt;I trained hard but didn’t see the improvement I’d hoped with my heavy pulls. I would saddle myself with up to 20 pounds of weight and do my dynamic touches. There was not a lot of change in that area, although I am still glad I did them. My largest improvement came from my static hangs – I would have ten pounds on me and hang from three fingers for as long as I could. I certainly got stronger in this area.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4fe4b0278244ce9f80/1434910431653/screenshot_6_2_13_4_02_pm-e1370203593168.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f80_1434910431653_screenshot_6_2_13_4_02_pm-e1370203593168.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I feel better at my two finger hang as well. I was initially barely able to get my weight off the ground, and now I have hit ten or twelve seconds a few times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next Steps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I am now thinking about how to change my workout. I don’t want to focus on weighted touches as much, for the time being – I want to work on my finger strength. Specifically, I want to work toward one-hand dead hangs. I have some ideas, but I know that it will take a while to get there. It’s critical that I implement good progress tracking, and reward myself for hitting mini-milestones along the way. It’s too big a goal to just aim for one-handed hangs. I would grow discouraged well before I ever got there.&lt;/p&gt;

&lt;p&gt;I am enjoying this training. I enjoyed my break, but I am excited to get back into the training. I feel like I’m in a good place, when it comes to motivation.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Friends Don&apos;t Let Friends Shortrope</title>
   <link href="https://josh.works/friends-dont-let-friends-shortrope"/>
   <updated>2013-05-17T00:00:00+00:00</updated>
   <id>https://josh.works/friends-dont-let-friends-shortrope</id>
   <content type="html">&lt;p&gt;The first in a series about how to &lt;a href=&quot;https://josh.works/how-to-be-an-awesome-belayer&quot;&gt;be a better belayer.&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;short-rope&quot;&gt;Short rope&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;[shawrt-rohp] 
verb
The act of not giving sufficient rope to your climber.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Getting short roped is bad.&lt;/p&gt;

&lt;p&gt;It’s not necessarily dangerous, nor does it cause you to take a whip (it can, of course) but the real reason it’s bad is because it convinces your subconscious that you’re climbing with an untrustworthy belayer.&lt;/p&gt;

&lt;p&gt;The reasoning is simple - if you’re getting short roped, your belayer is either not paying attention, or not technically proficient. It’s not just annoying, it’s counter-productive.&lt;/p&gt;

&lt;p&gt;It would be unwise to push yourself when climbing with an inattentive or unskilled belayer.&lt;/p&gt;

&lt;p&gt;The good news is this: if your belayer actually wants to stop short roping you, there is an easy fix. (If your belayer doesn’t care about short roping you, stop climbing with them. Seriously.)&lt;/p&gt;

&lt;p&gt;First, when the climber is clipping, &lt;strong&gt;the belayer should step in towards the first bolt as they feed out slack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This simple action resolves most instances of short roping.&lt;/p&gt;

&lt;p&gt;Second, when the climber is clipping, &lt;strong&gt;the belayer needs to feed out a full arm length of slack without coming out of the break position.&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to be an awesome belayer</title>
   <link href="https://josh.works/climbing/2013/05/12/how-to-be-an-awesome-belayer/"/>
   <updated>2013-05-12T00:00:00+00:00</updated>
   <id>https://josh.works/climbing/2013/05/12/how-to-be-an-awesome-belayer</id>
   <content type="html">&lt;p&gt;For the next few posts I am going to geek out on sport climbing. If you’re not a climber (or a sport climber), these are not for you. All of this information is in the context of sport climbing on trustworthy protection - not trad climbing!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://josh.works/climbing-in-decking-range&quot;&gt;How to belay when your climber is in decking range&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://josh.works/friends-dont-let-friends-shortrope&quot;&gt;Don’t shortrope your climber&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;how-to-be-an-awesome-belayer&quot;&gt;How to be an awesome belayer&lt;/h1&gt;

&lt;p&gt;There are two reasons to be a good belayer - first, it takes one to know one. Second - you’ll understand how safe (or unsafe) it can be for you when you are climbing, because you will learn what to expect when climbing.&lt;/p&gt;

&lt;h2 id=&quot;have-the-right-amount-of-rope-out&quot;&gt;Have the right amount of rope out&lt;/h2&gt;

&lt;p&gt;As a general rule, the “right amount of rope” means having a small droop of slack between you and the first bolt on the climb. Additionally, you want to be standing within one large step of the spot on the ground that is directly beneath the first bolt.&lt;/p&gt;

&lt;p&gt;Do not walk way off to the side. One large step. No farther.&lt;/p&gt;

&lt;h2 id=&quot;stay-in-the-break-position&quot;&gt;Stay in the break position&lt;/h2&gt;

&lt;p&gt;Next, no matter what sort of device you’re using, keep the belay device in the brake position. If you are using a Gri-Gri, use it the &lt;a href=&quot;http://www.petzl.com/us/outdoor/grigri-experience&quot;&gt;way it was intended&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Do not hold it in your hand the whole time you’re belaying! It’s a hard habit to break (I held it in my hand for years… and finally stopped after getting a good demonstration from a Petzl rep. Just do it right.)&lt;/p&gt;

&lt;p&gt;If you’re using a tube-style belay device, keep it in the brake position at all times unless you are taking in slack. It is possible to feed slack quickly, without ever coming out of the brake position.&lt;/p&gt;

&lt;h2 id=&quot;be-good-at-feeding-and-taking-in-slack&quot;&gt;Be good at feeding and taking in slack&lt;/h2&gt;

&lt;p&gt;When you feed slack while your climber is clipping, step in towards the wall, to get an extra few inches out. Immediately return to the brake position. &lt;a href=&quot;https://josh.works/friends-dont-let-friends-shortrope&quot;&gt;Do not short rope your climber.&lt;/a&gt; It makes him wonder if you’re paying attention, or, if you are paying attention, it makes him wonder if you know what you’re doing.&lt;/p&gt;

&lt;h2 id=&quot;when-your-climber-falls-give-a-soft-catch&quot;&gt;When your climber falls, give a soft catch&lt;/h2&gt;

&lt;p&gt;To give a soft catch, step in towards the wall and give a hop up the wall, just as their weight hits the rope. If you do it right, you will float a few feet up the wall. This makes all the difference for the comfort of your climber.&lt;/p&gt;

&lt;p&gt;There will be situations where your climber will feel run out. He may be trying to clip having problems getting the rope through the draw, or maybe there is no good clipping position, or the clipping position is very high relative to the bolt. In all of these situations, your climber is aware of how far he will fall if he comes off the wall. Your job is to understand what to do if this happens so you can minimize the distance that he falls while still giving a very soft catch.&lt;/p&gt;

&lt;p&gt;The solution is simple - if your climber falls with a lot of rope out, while they’re falling, pull in a full arm-length of slack, lock off the belay device, and then as their weight hits the rope, jump up the wall.&lt;/p&gt;

&lt;p&gt;This is a big topic, however. Belaying, and learning to trust a good belayer, is a long topic. All of these steps can be taught, and refined. It takes practice, however, in an environment where it is safe to fail (but don’t drop your climber, obviously) and where the odds are stacked in your favor to quickly learn and perfect each of these elements.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Daily Exercise - Russian Kettlebells</title>
   <link href="https://josh.works/daily-exercise-russian-kettlebells"/>
   <updated>2013-05-09T00:00:00+00:00</updated>
   <id>https://josh.works/daily-exercise-russian-kettlebells</id>
   <content type="html">&lt;p&gt;“Exercise”.&lt;/p&gt;

&lt;p&gt;It makes most people either cringe or salivate.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;note: 12 years after writing this post, &lt;a href=&quot;/kettlebell-swings-and-sprints&quot;&gt;I wrote another big update about kettlebells&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Those of you who love exercising for the sake of exercising - you can stop reading now. This information is probably not relevant to you.&lt;/p&gt;

&lt;p&gt;Those of you who don’t like to exercise, but know you really should exercise regularly - keep reading!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;In general, I don’t like exercise for the sake of exercise.&lt;/p&gt;

&lt;p&gt;For most of the last six years any time I exercised, it was to get better at climbing. I used to run regularly, too, until after one particularly long run (I took some wrong turns) I quit running. Cold turkey.&lt;/p&gt;

&lt;p&gt;I hated being miserable, even though the feeling that comes after running (and sometimes during) is not so bad. Besides, I climbed. I did not need any more life-consuming sports.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f71_1434910432064_pic-05062013-005.jpg_&quot; alt=&quot;my kettlebell setup&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is 55 lbs, though it might look a lot heavier.&lt;/p&gt;

&lt;p&gt;Well, I still climb, but now my training is broken down between occasional weekends spent climbing, and the rest of the time training about ten minutes every other day for either climbing or “general exercise”.&lt;/p&gt;

&lt;p&gt;It sounds pretty relaxing, and it is. I love it.&lt;/p&gt;

&lt;p&gt;I am getting stronger on an extremely modest time investment. When I climbed indoors, I usually wouldn’t even have my climbing shoes on within the first ten minutes, and once I did get them on, it would take two hours to get in a good session, and I was never confident that I was getting stronger.&lt;/p&gt;

&lt;p&gt;I did many different things in a gym, most of them probably useless, and a few things (which ones? I don’t know) helped me get better at climbing.&lt;/p&gt;

&lt;p&gt;As I was planning my climbing training, another exercise came to my attention. It’s called “The Swing”, referring to Russian Kettlebells. I first read about it in &lt;em&gt;The Four Hour Body&lt;/em&gt;, and on &lt;a href=&quot;http://fourhourworkweek.com/2011/01/08/kettlebell-swing/&quot;&gt;Tim Ferriss’ blog&lt;/a&gt;, and then I learned about the huge (cult-ish) following kettlebells have.&lt;/p&gt;

&lt;p&gt;I read long &lt;a href=&quot;http://www.riversidekettlebells.com/2009/03/top-10-benefits-of-kettlebell-training.html&quot;&gt;lists of reasons&lt;/a&gt; why they were great, and then I learned how to make one myself.&lt;/p&gt;

&lt;p&gt;I swung by Home Depot, and bought the necessary pipe fittings.&lt;/p&gt;

&lt;p&gt;There are plenty of &lt;a href=&quot;http://www.youtube.com/watch?v=Zq9Yxn5a9D8&quot;&gt;good tutorials&lt;/a&gt; on how to build your own kettlebell, so I won’t go through it here. One note, however, is this: I originally used 4” pipe nipples, but the handle was so large I was hitting my legs when I was doing the swings, so as you can see, I used 3” pipe nipples. (Stop giggling)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f74_1434910432154_pic-05062013-010.jpg_&quot; alt=&quot;pipe nipples&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I had weight plates from high school, so I didn’t have to try to scrounge those up, but I’m sure that with a little checking around Facebook or Craigslist, you could find someone willing to give you (or sell you for very cheap) the weight plates. I have 55lb on mine, and I don’t have any desire to make it any heavier, yet.&lt;/p&gt;

&lt;h2 id=&quot;the-workout&quot;&gt;The Workout&lt;/h2&gt;

&lt;p&gt;I begin my workout by carrying the apparatus from the bedroom to the living room (eight steps) and then I do a few squats and some light stretching.&lt;/p&gt;

&lt;p&gt;I get a timer set up, and then I begin. I complete 100 swings in as short a time as possible.&lt;/p&gt;

&lt;p&gt;The first time or two I did the exercise, I had to take breaks every fifteen or twenty swings, now I’m up to being able to do up to 65 in a row. When I get too tired to keep doing the swings, I rest for about 30 seconds, then I get back at it, until I’ve completed all 100.&lt;/p&gt;

&lt;p&gt;I have 55lbs on the kettlebell, which is the higher of the “recommended weights” for men. Women are supposed to start in the 22-35lb range, I think. I just experimented with a weight that was too hard to swing more than twenty times or so my first attempt - that’s the general suggestion for figuring out how much weight to use for this exercise.&lt;/p&gt;

&lt;h2 id=&quot;why-all-the-work&quot;&gt;Why all the work?&lt;/h2&gt;

&lt;p&gt;There were two primary reasons I decided to pursue this single exercise using this single tool.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;It is convenient - I keep the kettlebell in our apartment, sitting out of the way next to our dresser. I can exercise barefoot, in my boxers, any time of the day, with zero prep time or drive time. Total time spent on this exercise, including travel time: seven minutes.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It is effective (and moderately interesting) - the return on time invested is huge, and the exercise is interesting enough to keep my brain engaged.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some of the most exciting strength benefits from this exercise has to do with my lower back - I’ve often had lower back pain, like most Americans, and couldn’t ever do anything about it. Once, a long time ago, I started doing
&lt;a href=&quot;http://en.wikipedia.org/wiki/Deadlift&quot;&gt;deadlifts&lt;/a&gt;(wearing a onesie, just like that guy) and found that my lower back pain disappeared. I was thrilled. When the pain came back, I had looked into exercises that were similar to the deadlift, so I could eliminate that pain. I then stumbled onto Kettlebells.&lt;/p&gt;

&lt;p&gt;Much ink has been spilled writing about kettlebells, and crossfitters love them. I won’t regurgitate all that I’ve read about Kettlebells, because I wouldn’t be able to do so well anyway.&lt;/p&gt;

&lt;h2 id=&quot;results-and-progress-tracking&quot;&gt;Results and progress tracking&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f7a_1434910431074_screenshot_5_9_13_7_51_am.jpg_&quot; alt=&quot;results graph&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As I mentioned with my climbing workout, progress tracking is very, very important. It’s the only way to track incremental improvement, because you sure won’t remember many details about your improvement, especially a few days after the fact.&lt;/p&gt;

&lt;p&gt;This graph on the right shows my time, from the first attempt, to the most recent, which was twelve sessions. It’s improvement indeed. Even if I did not rest, it would still take me almost three minutes, so I’m close to “maxing out” my time on this exercise. When I do that, I’ll move to heavier weights.&lt;/p&gt;

&lt;p&gt;As you can see, I barely spend any time at all on this particular exercise. The first session took six minutes. That’s all the exercise I do on my Kettlebell days.&lt;/p&gt;

&lt;p&gt;The time savings alone should intrigue anyone who’s interested in daily exercise but does not love the idea of carving out an hour to do so. If you have questions about how to build one, or start on your own, please let me know!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to Wake Up Early</title>
   <link href="https://josh.works/misc/2013/05/07/how-to-wake-up-early/"/>
   <updated>2013-05-07T00:00:00+00:00</updated>
   <id>https://josh.works/misc/2013/05/07/how-to-wake-up-early</id>
   <content type="html">&lt;p&gt;&lt;em&gt;An understanding of sleep, and attempts to wake up early&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href=&quot;https://josh.works/waking-up-early-2-0&quot;&gt;Read Part Two&lt;/a&gt;, and &lt;a href=&quot;https://josh.works/waking-up-early-part-3&quot;&gt;Part Three)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My understanding of sleep has evolved. When I was born, I spent most of my time asleep (if I recall correctly…) and gradually spent less and less time sleeping, until I was down to about eight hours of sleep a night. That was my ideal amount, and if I got much less, I would be tired during the day.&lt;/p&gt;

&lt;p&gt;Except sometimes I’d get less than eight hours and not be tired during the day, and sometimes I would would get more than eight hours and still be quite tired. So I ignored most of those abnormalities, tried to get as much sleep as I could, and absolutely dreaded getting up in the mornings - my alarm would go off and I would hit snooze at least three times until absolutely had to get up to get to work. If I didn’t have work, I’d just sleep until it was too sunny and warm to keep sleeping.
more&lt;/p&gt;

&lt;p&gt;I certainly would try to get up early sometimes, and usually end up wrestling with the snooze button for an hour and a half. I would then feel even worse about trying to get up early because not only did I 
not get up, but I lost an hour and a half of quality sleep by waking myself up every fifteen minutes just to hit the alarm again. It was pretty miserable.&lt;/p&gt;

&lt;p&gt;The rare instances where I did drag myself out of bed in the morning, earlier than I had to, I would usually just sit down at my computer and, in a fog of sleepiness, waste the entire time period I had earned on Facebook, or reading blogs, or doing other insignificant work. This pattern led to me feeling guilty about how I spent my time, since I had tried so hard to get up early, and then wasted the whole thing.&lt;/p&gt;

&lt;p&gt;I had many instances of failure to wake up early, and felt guilt about them. The few instances where I did take up, I still felt guilt about my poor time management. I never enjoyed the process, and basically “gave up” on getting up early. I resigned my mornings to a perpetual struggle with my alarm clock.&lt;/p&gt;

&lt;h2 id=&quot;the-long-and-slow-process-from-up-by-noon-to-sometimes-up-by-five-if-i-feel-like-it&quot;&gt;The long and slow process from “up by noon” to “sometimes up by five… if I feel like it”.&lt;/h2&gt;

&lt;p&gt;I spent months thinking about waking up early, but it was never well-defined, nor did I have a good reason to do so, other than people who were more skilled and productive than I seemed to get up early. I wanted to be like them, so I wanted to get up early too. This is all sound reasoning, right?&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;I started tracking my energy levels throughout the day, after reading 
The Personal MBA by Josh Kaufman (Highly recommended) I’ve got records from as far back as August 2012 (nine months ago) about my energy levels, and my sleep patterns - even then I was trying to wake up early, and was very bad at it.&lt;/p&gt;

&lt;p&gt;I eventually reworked my understanding of waking up early because of two changes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I was forced to modify my understanding of how sleep works.&lt;/li&gt;
  &lt;li&gt;I learned about how finite a resource willpower can be.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I first read about alternative sleep cycles in The Four Hour Body by Timothy Ferris. That led me to a very interesting &lt;a href=&quot;http://dcurt.is/&quot;&gt;blog&lt;/a&gt; by Dustin Curtis, and then &lt;a href=&quot;http://everything2.com/index.pl?node=Everyman%20Sleep%20Schedule&quot;&gt;here&lt;/a&gt;, and &lt;a href=&quot;http://www.stevepavlina.com/forums/health-fitness/1638-switching-biphasic-sleeping-start-here.html&quot;&gt;here, &lt;/a&gt;and somewhere in all that I read &lt;a href=&quot;http://www.stevepavlina.com/blog/2005/10/polyphasic-sleep/&quot;&gt;Steve Pavlina’s sleep (b)log.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The inescapable conclusion is this: there are a lot of people out there who try some really insane sleep patterns, and they have success. If that works for them, how much easier must it be to try a much less-insane sleep hack? I decided to start the whole process by experimenting with just being awake and content with life at an early hour. If I could do that, I could decide where to go from there.&lt;/p&gt;

&lt;p&gt;I removed (or began removing) my mental barrier to being up when it was still dark out. I saw early rising as a goal to achieve rather than a burden to bear.&lt;/p&gt;

&lt;p&gt;The other change related to willpower - as I’ve touched on before, and will do so again, willpower is just like a muscle. It can be worn out and depleted. I want to preserve my willpower as much as possible to use on things that need it. If I use all my willpower dragging myself out of bed, I’ve ruined the rest of my day, because I used up all my willpower.&lt;/p&gt;

&lt;p&gt;I will up early in the morning only if I want to - if my alarm goes off and I don’t want to get out of bed, I don’t.There was a period where my alarm would go off when I wanted to get up, and I would not. I would repeat this pattern daily, waking up at 5:00 AM, silencing the alarm, and waking up again at 6:30-7:00 AM to begin my day. I did not guilt myself for not getting up the first time, I just used it as an indicator that I had not created the right context in which I would wake up early.&lt;/p&gt;

&lt;h2 id=&quot;the-necessary-third-component-integrating-the-new-understanding-with-my-rules-for-building-habits&quot;&gt;The necessary third component (Integrating the new understanding with my rules for building habits)&lt;/h2&gt;

&lt;p&gt;I had reworked my understanding of sleep, and given myself permission to get up only if I 
really wanted to, but there was still a problem. I did not want to get up early! I am not particularly busy, nor committed to social activities, so most of what I wanted to do during the day got done, and everything else wasn’t exciting enough to make me want to get up at 5:00 AM to do it. (Paying bills! Opening mail! Reading books!)&lt;/p&gt;

&lt;p&gt;The necessary third component presented itself on Lynda.com. It was a training program to teach the viewer how to better use Microsoft Excel, and better exercise.&lt;/p&gt;

&lt;p&gt;That’s right. I got out of bed at 5:00 AM to learn Excel.&lt;/p&gt;

&lt;p&gt;What that learning represented, however, was truly exciting. There are projects I am excited to pursue at my work that require a lot of data manipulation - since I’ve taken ownership of some of those ideas, I need to learn how to make them happen. A deep understanding of how to use Excel will allow me to complete some open projects of mine that are not work-related. Studying on Lynda.com represented was an opportunity for me to make a potentially large impact at work, and in my “on-the-side” work that I am pursuing on my own.&lt;/p&gt;

&lt;p&gt;Exercise “hacking” was motivating because I was confident that I could get good returns on less than ten minutes of exercise a day - I was very excited to test myself in this way. I alternated between my 
&lt;a href=&quot;/blog/2013/05/01/habits-milestones-and-climbing&quot;&gt;climbing workout&lt;/a&gt; and Russian Kettlebell Swings.&lt;/p&gt;

&lt;p&gt;I don’t spend every morning learning Excel, or exercising, but I do spend that time developing skills that will allow me to exert much greater control over my career and life.&lt;/p&gt;

&lt;p&gt;This makes me excited to get up early every morning.&lt;/p&gt;

&lt;p&gt;I use my desire to wake up in the morning as a useful indicator for if I think I can move myself in a positive direction with various bits of training or learning. I’m generally pretty excited to learn new things or read good books - thus far, this general enthusiasm has been very effective at motivating my early rising.&lt;/p&gt;

&lt;p&gt;When I wake up early and I don’t want to actually get out of bed, I have to re-examine the way that I would spend my morning. What am I doing that is so unmotivating that I don’t want to get up and do it? If I am not enthused about whatever voluntary project is before me, I modify/discard/replace that project. 
It is not worth expending all my will power to drag myself out of bed when I don’t want to get up to work on a project that is not interesting to me.&lt;/p&gt;

&lt;p&gt;Remember - it is safe to fail often, and it should be easy. Both of these help provide valuable feedback.&lt;/p&gt;

&lt;h2 id=&quot;current-sleep-patterns&quot;&gt;Current sleep patterns&lt;/h2&gt;

&lt;p&gt;I have not yet made this “early rising” thing a habit - I still  want to fail, when needed, so I can keep refining my process.&lt;/p&gt;

&lt;p&gt;If it’s not easy, I don’t get up.&lt;/p&gt;

&lt;p&gt;Adhering to my “get up only if it’s easy” standard, however, has given me pretty good results - for thirteen of the last twenty seven days, I’ve gotten up before 6:00 AM. Nine of those days I’ve been up by 5:15 AM. With one exception, the latest I have slept is 8:15 AM. Of those mornings, I felt tired for just five of them. I consider this process to be highly successful, and I look forward to improving many aspects of how I sleep.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4fe4b0278244ce9f6b/1434910431076/screenshot_5_6_13_5_04_pm.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f6b_1434910431076_screenshot_5_6_13_5_04_pm.jpg_&quot; alt=&quot;Wake time for the last 25 days or so.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A key point is this: going forward, I am not considering myself an early riser - if I don’t want to wake up early on any given day, I will not expend the will power to force myself up. If I don’t want to wake up, I need to figure out how to improve the tasks I am choosing to spend my time on, so I want to wake up early. For example, on weekends, I still set my alarm early, but I usually don’t really feel like getting up early, so I don’t. This last weekend I had grand plans of getting things done, and when my alarm went off, I had grand plans of extra sleep. I kept it easy.&lt;/p&gt;

&lt;h2 id=&quot;so-what-should-you-do&quot;&gt;So what should you do?&lt;/h2&gt;

&lt;p&gt;Don’t try to wake up early tomorrow morning. Or any time this week. Read the sources above, and start paying attention to your energy levels.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4fe4b0278244ce9f65/1434910430454/photo-on-5-5-13-at-1-35-pm.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4fe4b0278244ce9f65_1434910430454_photo-on-5-5-13-at-1-35-pm.jpg_&quot; alt=&quot;Libby: Proof Reader and Professional Baby&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recommend that you spend a week or two recording when you wake up, and how you feel when you wake up. I just write the day, when I woke up, and a check or an X by it, if I felt good or bad when I woke up.&lt;/p&gt;

&lt;p&gt;Read the articles I mentioned earlier - don’t read so that you can jump into the Uberman sleep schedule, but so you can familiarize yourself with being alert and comfortable at strange hours. Read them so you can learn to ignore that voice that wants to scream bloody murder when you wake up early.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Lifestyle Design (AKA Intentional Habit Building)</title>
   <link href="https://josh.works/intentional-habit-building"/>
   <updated>2013-05-03T00:00:00+00:00</updated>
   <id>https://josh.works/intentional-habit-building</id>
   <content type="html">&lt;p&gt;The top New Years resolutions indicate that Americans know they need to make changes. The top three resolutions always relate to getting in shape, eating better, spending time better, and spending money better.&lt;/p&gt;

&lt;p&gt;Everyone is aware that change is good, even necessary, but given the rate of failed attempts to implement new habits, it’s harder to implement than to plan. I’ve spent the last few months slowly learning about how to get better at the implementation side of things - thus far, I’m not too good at it, but I’ve been learning a lot along the way, and I have very high hopes for the future. I’m going to try to explain how I see the relationship between habit building, will-power/motivation, and self-evaluation. This could be lengthy - it’s probably not for everyone - but I hope it will be helpful to some.&lt;/p&gt;

&lt;h2 id=&quot;trying-hard-doesnt-cut-it-anymore&quot;&gt;“Trying hard” doesn’t cut it anymore&lt;/h2&gt;

&lt;p&gt;A traditional understanding of habit building is thus: “If you can do it for 30 days, it’s a habit, so just push through that month, and you’re good to go.”&lt;/p&gt;

&lt;p&gt;I have no idea if this is true - I’ve tried to reach that magical 30 day mark a number of times and have never been able to do it. I’ve tried with various forms of exercise, waking up early (that attempt was a joke. I woke up early zero times), modifying spending habits, writing, flossing, cooking, reading, and probably a dozen other attempts.&lt;/p&gt;

&lt;p&gt;Not only did I not reach the 30 day mark, but my attempts were comically short-lived, but not for lack of effort or desire. From my attempts to wake up early (didn’t happen once, and I’ve tried a lot of times) to my attempts to floss (it worked great, until I forgot completely to even try to make it a habit), I’ve had almost zero success at intentionally creating habits.&lt;/p&gt;

&lt;p&gt;Now, how much success have I had unintentionally creating habits? I’ve achieved a 100% success rate,
without even trying! Some habits are good, and others are bad, but just about every habit I have has spontaneously arisen. And I run my life by habit - far more than I like to consider.&lt;/p&gt;

&lt;p&gt;Habits are a lot like instincts - it’s what we do without thinking about it. If someone raises their hand to slap you, you cringe, or put your hands up, or fall in a heap on the floor. All without thinking. Instincts can save your life or kill you, just like habits. By examining how our
current habits have arisen, we can learn how to take control of that process for our own benefit.&lt;/p&gt;

&lt;h2 id=&quot;willpower---never-there-when-you-really-want-it&quot;&gt;Willpower - Never there when you really want it&lt;/h2&gt;

&lt;p&gt;Forget natural gas, coal, water, or cute baby seals - willpower is man’s most important resource, and it is in awful short supply. We (mankind) used to think that those who got a lot done had more self-control, or willpower, or discipline, or motivation, or whatever. That seems to be the inescapable conclusion of  &lt;a href=&quot;http://www.youtube.com/watch?v=lsSC2vx7zFQ&quot;&gt;this video.&lt;/a&gt; Or, if you’re into climbing, &lt;a href=&quot;https://www.youtube.com/watch?v=H0vOH_XGWFU&quot;&gt;this video&lt;/a&gt; may be motivating.&lt;/p&gt;

&lt;p&gt;Here’s the point of both videos: When the video finishes, don’t you feel like you want to go out and work really, really hard? The path seems clear, and it’s marked by blood, sweat, and tears - it fits with out perspective of how this sort of success is achieved.&lt;/p&gt;

&lt;p&gt;These stories makes sense, right? If we want something, we’ll work hard for it. If we’re motivated, we’ll push through. If we psych ourselves up enough, and get angry, we’ll ignore our weaker self who’s begging for rest, food, and socialization - you know, all that useless stuff.&lt;/p&gt;

&lt;p&gt;It all makes sense, except it is dangerously wrong.&lt;/p&gt;

&lt;p&gt;(To help communicate these ideas, I’ve created very advanced graphics, for your educational enjoyment)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4ee4b0278244ce9f37/1434910429232/pic-05022013-0011.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4ee4b0278244ce9f37_1434910429232_pic-05022013-0011.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most people start a new project starry-eyed and excited. No shame there, of course. We humans usually don’t try to do things without some sort of good reason.&lt;/p&gt;

&lt;p&gt;Unfortunately, if your motivation is very, very high, there is only one direction it can go. Down. Way down. Please note how that line in the graph (X-axis is time. Y-axis is motivation) plunges, then ceases to exist.&lt;/p&gt;

&lt;p&gt;Humans are meaning-makers. This means we find meaning  everywhere, and we often make our next choices based on what’s recently happened. If your motivation evaporated, you want to stop trying. Trying is now making you miserable instead of motivated. You don’t want to be miserable, right? The whole reason for trying this new thing was to be in a better place than you are now. So, you rightfully stop trying.&lt;/p&gt;

&lt;p&gt;After repeating this frustrating cycle a few more times, you have decided that you are simply not a person who can make new habits/do hard things/change your own course in life/ignore the status quo. There are those who can do that, and they have innate abilities to do amazing things effortlessly. It must be effortless, after all, because their life seem joyful and your life becomes miserable whenever you try the same things.&lt;/p&gt;

&lt;p&gt;For proof that the thing that makes one person feel amazing makes another one miserable, please refer to: “professional” students, marathon runners, readers, and healthy-diet-eaters.&lt;/p&gt;

&lt;p&gt;We tell ourselves we can’t accomplish goals because we don’t have enough motivation, but this is far too simple of an explanation.&lt;/p&gt;

&lt;h2 id=&quot;context-matters-and-its-subtle&quot;&gt;Context matters, and it’s subtle&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4ee4b0278244ce9f3d/1434910429743/pic-05032013-002.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4ee4b0278244ce9f3d_1434910429743_pic-05032013-002.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I propose an alternate method to building habits, and there are two important elements.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;It must be &lt;em&gt;useful to fail&lt;/em&gt; during your attempt.&lt;/li&gt;
  &lt;li&gt;You must not try very hard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These criteria are so frustrating. It’s like saying&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;you have to run a marathon, but don’t try that hard.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Make sure to do well in this difficult class, but whatever you do, don’t spend a lot of hours studying.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Following these rules takes careful thought and (yes) work.&lt;/p&gt;

&lt;p&gt;The reason failure must be useful is this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If your failure is an opportunity to feel shame and belittle yourself, you’re learning, very quickly, that attempts to change lead to you feeling like s**t. It also means that all expended effort is wasted, and you’re not only back where you started, but you’re worse off. (Because of the shame and self-deprecating feedback.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The reason you cannot try very hard is this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Motivation is limited. If you’re expending it all to make some change in your life, you have nothing left over to make other necessary choices and you get very unhappy very quickly.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Science has proven (and everyone knows intuitively) that willpower/motivation/discipline is a finite resource. It’s like your muscles - when you exercise, you get more and more tired, until you just can’t perform like you wish you could. Then you go home, eat some food and rest, and you’re ready to do it again.&lt;/p&gt;

&lt;p&gt;If I try to undertake a new task, using my two rules, I must create a context in which I am more likely to succeed than not, and if I don’t succeed, my instinct is to examine my context, not my willpower. An easy example is this: I try to get up early, but if I’m going to bed at midnight, I’m not setting myself up for success, huh?&lt;/p&gt;

&lt;p&gt;If I start going to bed at ten I can create a context where I am more likely to succeed at my goal. If I go to bed at midnight, I don’t try to get up early - why take the hit to my motivation when the context is already unfavorable?&lt;/p&gt;

&lt;h2 id=&quot;what-did-you-expect&quot;&gt;What did you expect?&lt;/h2&gt;

&lt;p&gt;When you are trying a new habit, there are huge ups and downs. It is foolishness to not expect this. Most people DO expect fluctuation, but if the expectation does not lead to preparation, it’s useless. I’ll talk more about preparation soon.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4ee4b0278244ce9f31/1434910429845/pic-05022013-0041.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4ee4b0278244ce9f31_1434910429845_pic-05022013-0041.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the last few months, I’ve been working towards building healthy habits in three areas. I will devote at least the next three posts to detailing my successes and failures in these areas.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Waking up early&lt;/li&gt;
  &lt;li&gt;Exercising daily (climbing related)&lt;/li&gt;
  &lt;li&gt;Getting my finances together&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Habits, Milestones, and Climbing</title>
   <link href="https://josh.works/habits-milestones-climbing"/>
   <updated>2013-05-01T00:00:00+00:00</updated>
   <id>https://josh.works/habits-milestones-and-climbing</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4de4b0278244ce9f1c/1434910429845/pic-04292013-003.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4de4b0278244ce9f1c_1434910429845_pic-04292013-003.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
Since April 9th, I have spent exactly 70 minutes training for climbing. Prior to April 27th, I have climbed exactly seven times in the last five months.&lt;/p&gt;

&lt;p&gt;I just spent two days at the New River Gorge and exceeded my expectations, considering my almost half-year hiatus from regular climbing.&lt;/p&gt;

&lt;h2 id=&quot;return-on-investment&quot;&gt;Return on Investment&lt;/h2&gt;

&lt;p&gt;I’ve been training my climbing-specific strength every other day using a metal door frame in my apartment - it takes exactly ten minutes, and I record exactly how much of each task I accomplish, so I can see trends (hopefully upward) over time.
more&lt;/p&gt;

&lt;p&gt;For those of you who are interested in the details, I’ll explain that below. If you are interested in principles and not in climbing, skip this part:&lt;/p&gt;

&lt;p&gt;The Training Regimen:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4de4b0278244ce9f23_1434910429539_pic-04292013-007.jpg_&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Through a totally non-scientific process, I came up with the following ten-minute workout. Each minute I begin the task, and if I finish it before the minute is up, I can rest. If I can’t complete the task, I record how many reps I did. The first three minutes are an abbreviated warm-up.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Ten pullups, then a 15 second L-sit with arms at 90 degrees&lt;/li&gt;
  &lt;li&gt;One frenchie in an L-sit position, holding each position for five seconds.&lt;/li&gt;
  &lt;li&gt;Three pullups using three fingers (on each hand, obviously - no one-armed pullups for me, yet.)&lt;/li&gt;
  &lt;li&gt;Sixteen “touches”. (A “touch” is where I hang from the frame, and pop up and touch a wooden beam that is conveniently placed directly above the door. It allows me to determine if I’ve actually reached it, or just swung and missed. It’s like campusing, but I always return to the starting position, then go up with the other hand.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4de4b0278244ce9f1f_1434910428370_pic-05012013-002.jpg_&quot; alt=&quot;This is sort of like campusing, but without really going anywhere.&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Rest.&lt;/li&gt;
  &lt;li&gt;Twelve “touches”&lt;/li&gt;
  &lt;li&gt;Rest.&lt;/li&gt;
  &lt;li&gt;Ten “touches”&lt;/li&gt;
  &lt;li&gt;Rest&lt;/li&gt;
  &lt;li&gt;Lock off at 90 degrees till failure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using this workout, I could make a very limited time investment and track my returns. My initial gain was huge: 33-50% improvement in most areas over two weeks. I suspect, however, that
all of that improvement was just getting back to my prior levels of strength.&lt;/p&gt;

&lt;h2 id=&quot;the-importance-of-goals&quot;&gt;The Importance of Goals&lt;/h2&gt;

&lt;p&gt;I completed my first “iteration” seven times over two weeks. I had significant improvement from the first workout to the last. Two things kept me motivated to keep trying hard at this workout:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;I wanted to improve at least one number every single time I exercised. I had seven different exercises to try, and plenty of opportunity to push one just a little higher. Since I was recording my progress and could see exactly how many reps I could do my last workout, it took zero mental effort to know how much I was aiming for time time around.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I knew I was going to the New River Gorge soon. This trip happened over the weekend, and while I did not climb as well as I did when I was able to climb ten hours a week at the gym, I climbed much better than I should have for not being able to train on a wall for five months. I was motivated to train because I would be able to compare my strength against the real world of outdoor climbing. It wouldn’t be me vs. a door frame any more, but me vs. well-established routes at one of the best crags in America.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;my-benchmark&quot;&gt;My Benchmark&lt;/h2&gt;

&lt;p&gt;I am now updating the climbing portion of my exercising. (Every other day I alternate training for climbing and Kettle Bell Swings) I will focus on more dynamic movement, and I’ll start adding weight. I am heading back to the NRG in a month or so, so I will get to give my “benchmark route” another attempt.&lt;/p&gt;

&lt;p&gt;The route is called Lactic Acid Bath, and it’s a steep route that, as the name suggests, easily generates tremendous amounts of lactic acid. I’ve tried it a half-dozen times over the years, always to be amazed at the sheer power and endurance required to send such a route. Late 2011 was the first time I was strong enough to do all the individual moves, and I was able to finish it. Mid 2012, when I was in very good climbing shape, I did it with one fall. That is the best I’ve done on LAB.&lt;/p&gt;

&lt;p&gt;This weekend, after five months of barely any real climbing, I was able to get to within three moves of my prior high point. (For those of you that know the route, I barely got to the knee-bar rest a few feet above the crux undercling section.) I was too tired to go any farther, but I was still tremendously pleased.&lt;/p&gt;

&lt;p&gt;The biggest breakthrough I have had recently is not specifically the training, but this method of training - building a workout and meticulously recording my progress. Without those meticulous records, I would not be able to see much improvement at all, and I would quickly grow demotivated and bored. I am now excited every time I get to work out, to try to push one or two numbers on rep farther.&lt;/p&gt;

&lt;p&gt;How about you? Do you record your progress with great detail when you train? If you’re at all like me, you don’t record that stuff - you’d rather just climb.&lt;/p&gt;

&lt;p&gt;Do you think you should start tracking (in detail) your training?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Becoming an Early Riser</title>
   <link href="https://josh.works/growth/misc/2013/04/22/becoming-an-early-riser/"/>
   <updated>2013-04-22T00:00:00+00:00</updated>
   <id>https://josh.works/growth/misc/2013/04/22/becoming-an-early-riser</id>
   <content type="html">&lt;blockquote&gt;
  &lt;p&gt;Early to bed and early to rise makes a man healthy, wealthy, and wise. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;-The man no child likes to hear about when being awoken by their parents&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Getting out of bed is a struggle. I’ve spent the better part of twenty four years setting my alarm as late as possible so I could have a few more minutes of sleep.&lt;/p&gt;

&lt;p&gt;I fight myself with tenacity. My first tactic is to subconsciously turn off my alarm, so I don’t even get to think about getting up early until two hours later.&lt;/p&gt;

&lt;p&gt;Next, the fog of sleepiness is heavy upon me, and I’ll try to hit snooze a few times.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Did I set a two minute snooze, or a fifteen minute snooze?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ll hit it three or four times either way.&lt;/p&gt;

&lt;p&gt;Next, I talk myself out of the very need to get up early.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Do I need a shower in the morning?&lt;/p&gt;

  &lt;p&gt;Nope, I took one the day before yesterday. Breakfast? Overrated. I’ll get some Dunkin Doughnuts on my way to work. I don’t need to wake up early just to read a book. I’ll do that while I eat breakfast. It’s mean for my alarm to go off when my wife doesn’t even need to get up yet. I’ll just turn it off, for her…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I have gone through those steps above so many times. I’ll dutifully set my alarm for 6:30 or 7:00 on a weekend, and earlier during the week. I’d plan my whole productive morning out. I’d go to sleep, and next thing I know, it’s time for me to go to work, or each lunch (on a weekend) and I have a vague recollection of hitting the snooze button a half-dozen times before my alarm just stopped going off. Whoops&lt;/p&gt;

&lt;p&gt;I couldn’t even think about the alarm in the morning. I couldn’t create enough mental alertness to even begin the struggle to wake up early. My subconscious was waving a white flag without me being awake enough to notice.&lt;/p&gt;

&lt;p&gt;And then I had a few realizations…&lt;/p&gt;

&lt;h2 id=&quot;unnecessary-early-morning-decision-making&quot;&gt;Unnecessary early morning decision-making&lt;/h2&gt;

&lt;p&gt;My approach to sleep and waking up has been shifting the last few months. Here are the reasons why:&lt;/p&gt;

&lt;h4 id=&quot;polyphasic-sleep&quot;&gt;Polyphasic Sleep&lt;/h4&gt;

&lt;p&gt;I learned about &lt;a href=&quot;http://en.wikipedia.org/wiki/Polyphasic_sleep&quot;&gt;polyphasic sleep&lt;/a&gt;. In a normal eight-hour period of sleep, the average person gets two hours of REM sleep, which is the stage where most of the benefits of sleep come from. As you sleep throughout the night, you cycle in and out of REM.&lt;/p&gt;

&lt;p&gt;You can train your body to more quickly drop into REM sleep, and as you do this, you can remove the rest of that time you spend asleep. There are many varieties of sleep schedules,
&lt;a href=&quot;http://www.stevepavlina.com/forums/health-fitness/1638-switching-biphasic-sleeping-start-here.html&quot;&gt;and a community of people who pursue these patterns.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ultimate extension of this principle of needing only two hours of REM sleep a day is something called the “uberman”, and it is six twenty-minute naps every four hours. Two hours of REM sleep a day, and nothing else.
&lt;a href=&quot;http://www.stevepavlina.com/blog/2005/10/polyphasic-sleep-log-day-1/&quot;&gt;The adaptation period looks rough.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My perspective on sleep changed - I don’t have to feel tired just because it’s early. I may actually be tired, or, more likely, I have not yet reached a stage of alertness, because technically are the most rested immediately after waking up.&lt;/p&gt;

&lt;h4 id=&quot;listening-to-my-body&quot;&gt;Listening to my body&lt;/h4&gt;

&lt;p&gt;I learned to pay closer attention to my body and energy levels. I noticed that I sometimes felt wide awake when my alarm when off, even if it was very early, while I could just as easily feel very tired and not want to wake up, but that feeling was not related to how much sleep I got.&lt;/p&gt;

&lt;p&gt;I started recording if it was easy or hard to get out of bed in the mornings (I’d simply write down a check or an x, depending on how it felt getting out of bed.) The benefit if this was two-fold: First and most importantly, I am training myself to not dread the morning (or being up early) simply because it is the morning and early. I no longer hate the idea of waking up at 5a. I am not always, or even often, able to easily get up at 5a, but the idea does not make me want to die.&lt;/p&gt;

&lt;p&gt;Second, I am growing to pay attention not to absolute time (whatever time my alarm goes off) but energy levels. I can wake up at 7:30a with a worse energy level than when I wake up at 5:00, and I am learning to try to avoid simply low energy levels rather than the earlier time.&lt;/p&gt;

&lt;h4 id=&quot;dont-trust-willpower&quot;&gt;Don’t trust willpower&lt;/h4&gt;
&lt;p&gt;I dramatically changed my understanding of willpower. My original attempts to wake up early took a Herculean expenditure of willpower. I would fight to drag myself out of bed, and on the rare occasions that I was successful, I’d spend the morning wasting time on Facebook.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I’d drag myself out of bed at 6a on a weekend so I could watch youtube videos and waste time on Facebook!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’ve learned that willpower is like muscular power. It can be exhausted, and I was exhausting myself. If I spent all my willpower getting up, I had none left over to intelligently direct my activities to productive uses.&lt;/p&gt;

&lt;p&gt;The goal is to “automate” early rising so it takes no willpower, leaving me to use it intelligently throughout the day. When my alarm goes off early, if I don’t really want to get out of bed, I just turn it off and go back to sleep. No guilt, no disappointment, and no wasteful expenditure of willpower. On the flip side, if my alarm goes off and I feel energetic, I happily begin my morning - no wasteful expenditure of willpower.&lt;/p&gt;

&lt;h2 id=&quot;setting-the-stage-for-the-habit&quot;&gt;Setting the stage for the habit&lt;/h2&gt;

&lt;p&gt;I want to make it a habit, to wake up at 5a every day. I’ve been experimenting more heavily over the last two weeks, and have woken up by 5:30 almost half of the days. I see myself as practicing and laying a groundwork for this habit, because right now I don’t fully understand. My energy fluctuates during the day, and if I am sleep deprived, its hard to get up early the next day.&lt;/p&gt;

&lt;p&gt;I am learning to work a 20 minute nap into my day in the early evening, to see if this reduces the fatigue I feel the next day.&lt;/p&gt;

&lt;p&gt;I am learning how coffee affects my sleep schedule, and how much leeway I have in when I go to bed.&lt;/p&gt;

&lt;p&gt;Eventually, when have build a solid understanding of my own sleep requirements, I will have a 30 day “trial” where I will implement this habit every day, but I’m not ready for that yet. I don’t want to set my expectations too high, fail to meet them, and then feel bad about the whole thing.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Preparing to adopt a habit</title>
   <link href="https://josh.works/preparing-to-adopt-a-habit"/>
   <updated>2013-04-15T00:00:00+00:00</updated>
   <id>https://josh.works/preparing-to-adopt-a-habit</id>
   <content type="html">&lt;p&gt;There are many habits I wish I had. More times than I can count, I have tried to get up early. I faithfully set my alarm for some crack-of-dawn time that leaves me with a reasonable amount of sleep, but gives me time to myself before I have to get ready for work.&lt;/p&gt;

&lt;p&gt;Almost as many times, my alarm goes off, I hit snooze, it goes off again, I hit snooze again, until either it or I gives up. When it goes off, I keep sleeping. When I give up, I turn off the alarm, and keep sleeping.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;When I lived near to (and worked at) a climbing gym, I never struggled to get regular exercise; the greater struggle was, at times, to take a day off from climbing. Since both my occupation and location has changed, I get a small fraction of the exercise I once had.
more&lt;/p&gt;

&lt;p&gt;I would love to get into powerlifting (the only reason I would ever join a real gym) but alas, no gym within twenty minutes of my apartment has a squat rack, or lets you drop weights.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I’ve never been much of a cook. I also don’t eat particularly healthy, but like everyone, I wish I ate healthier food more often for less money. I’m a big fan of the Paleo-ish diet, for a number of reasons. (The “ish” refers to how rigidly I follow the proscribed food choices.)&lt;/p&gt;

&lt;p&gt;I eat a healthy breakfast, but that’s because if I don’t, I’m starved by 10am. I eat sweet potatoes more often than I once did. I enjoy Chipotle that much more, knowing that food is good for me. I eat a little less bread than I once did. This is about how much my eating has changed with the knowledge of what food is good for me, and what food is bad for me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lots of failure, or a little success?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Compare these two statements:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have had far more “failures” than I have had “successes”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have had clear instances where I have broken from habit and adopted (briefly) the changes I want to have.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those two sentences say the same thing.&lt;/p&gt;

&lt;p&gt;Right now I am preparing to adopt the above habits.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I’ve begun an extremely brief (ten minutes a day) daily workout plan.&lt;/li&gt;
  &lt;li&gt;I still try to set my alarm early, and sometimes I wake up on time feeling great.&lt;/li&gt;
  &lt;li&gt;I am slowly and with great difficulty learning to cook a variety of healthy meals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;It is safe to fail&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Habits start out as delicate things. I’m not willing to even call a pattern of mine a habit until it’s so entrenched I’m in no danger of losing it. If I call a bunch of little attempts and goals “habits”, I have labeled myself “someone who is bad at forming habits.”&lt;/p&gt;

&lt;p&gt;If I take a step back and try to learn how to build habits, I can freely engage in “habit-building behaviors” without fear of failure. If a habit does not stick, I still learned something, and I can apply it to my next endeavors.&lt;/p&gt;

&lt;p&gt;The potential payoff is enormous, and the potential harm is minimal. I’m not putting my self-worth on the line.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;What habits are you trying to build, and how do you feel when it does not go according to plan?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I Once Worked Hard</title>
   <link href="https://josh.works/i-once-worked-hard"/>
   <updated>2013-04-12T00:00:00+00:00</updated>
   <id>https://josh.works/i-once-worked-hard</id>
   <content type="html">&lt;p&gt;When I began working at my first job out of college, I knew I didn’t want to spend my whole career there. I was a college graduate (that means something, right?) working at a climbing gym, part time, teaching seven-year-olds how to climb at about $10 an hour.&lt;/p&gt;

&lt;p&gt;I had no idea what I wanted to do next. A few weeks in, the company began preparing the space next to ours for a HUGE expansion; this climbing gym was to become (over the next nine months) the largest climbing gym in the nation.&lt;/p&gt;

&lt;p&gt;I got to play a role by asking the COO if I could help on the expansion. He gave me a task, and left for the day. I had about 90 minutes before the construction site needed to be empty and locked, so I figured I’d just do the whole task before it finished.&lt;/p&gt;

&lt;p&gt;My task was ripping about forty five concrete bollards out of the ground and stacking them near the front of the warehouse. Each one weighed at least ninety pounds, and was sitting on a rebar post buried in the concrete. To get each one out I had to lever each one back and forth to loosen it, and then use a wedge of wood to lift the rebar out of the ground.&lt;/p&gt;

&lt;p&gt;Imagine you have a really drunk friend standing in front of you, and if you shake him hard enough, he’ll sober up. That was basically what I did, for all forty five. It was hard work, but I finished just as we had to lock up the space.&lt;/p&gt;

&lt;p&gt;I later found that this was basically a test to see if I could finish a project without someone breathing down my neck. I passed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working hard matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the next nine months, I replicated this pattern over and over, sacrificing my time, rest, and at times my safety to complete the expansion. I considered my high level of dedication to the goal to be the skill that I could bring to the table. I wanted to perform well and use my skills, and my skills were manual labor and simple craftsmanship. I heard from many different people that I was the hardest worker they’d ever met, and I earned the respect of almost everyone I worked with.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;I thought this was all good, and I aspired to reinforce all of these perceptions. I worked &lt;em&gt;extremely&lt;/em&gt; long weeks, I could go weeks without taking any days off, and I thought this was good. I had hopes to move up in management when the opportunity arose, and I wanted to be the obvious choice.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The only thing I knew how to do was work hard.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I worked hard to satisfy the needs of construction, I worked hard to satisfy my other responsibilities, teaching classes, managing staff, and manning the desk. I would get to the gym and work construction from 6am to 6pm, then teach a class and close the gym at 11pm. Twelve hour days were nice, because they were shorter than most.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://static1.squarespace.com/static/556694eee4b0f4ca9cd56729/56035dbbe4b07ebf58d79d16/5586fe4ce4b0278244ce9f18/1434910427770/317757_286493088046326_1128649947_n.jpg&quot;&gt;&lt;img src=&quot;/squarespace_images/static_556694eee4b0f4ca9cd56729_56035dbbe4b07ebf58d79d16_5586fe4ce4b0278244ce9f18_1434910427770_317757_286493088046326_1128649947_n.jpg_&quot; alt=&quot;The expanded facilities being built, with just a little of the existing space visible in the back.&quot; /&gt;&lt;/a&gt; The expanded facilities being built, with just a little of the existing space visible in the back.&lt;/p&gt;

&lt;p&gt;A revolution in my thinking occurred after the expansion finished. I realized that just working hard may make me stand out, but it doesn’t really matter. An entry-level programmer gets paid far more than a skilled and trustworthy janitor. The programmer builds things that did not exist, and solves problems that no one else has solved. I wanted to become more like a programmer, and less like a janitor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working hard doesn’t matter that much&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used to think of my job as something that I would do with excellence, and I did it with excellence. Over a few months, I started seeing my job (and its responsibilities) as a platform I could use to identify and then solve business problems. I started looking for processes that were cumbersome or annoying. I looked for ways the gym could offer a better product. I looked for ways I could help grow and develop our staff.&lt;/p&gt;

&lt;p&gt;The more I looked, the more I found. I was soon aware of dozens of problems, and I could think of potential solutions to many of them. I could, with only a little effort, be known as &lt;em&gt;the guy who identifies and solves problems.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I did.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I changed the staff listserv, so the staff could use it without bothering those who did not want the emails. Traffic on the listserv blew up, while unwanted emails dropped to almost zero.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I designed and taught a new class to help lead climbers learn to belay with professionalism and confidence; that confidence and skill enables their climber to push themselves in a way they never thought possible. Not only were they safer climbers, they were instantly improved climbers, because they overcame significant psychological barriers.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The gym director spent a lot of time writing the schedule every week; I found a tool that could cut those 24 man-hours down to less than 8 man-hours, while improving the quality of the schedule. I did proof-of-concept with it, and pitched it to the director and CFO; that software is now being used throughout the company.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I helped institute a rope-tracking system, so we could take old ropes out of circulation without trying to guess which ones they were. I helped improve the process used to cut new ropes, so staff could do rope cutting in batches, and reduce the time spent on the task by more than half.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I tracked usage patters (using about 4000 data points) of the most popular service the gym offered on weekends to learn how to improve the service; I learned which staff moved relatively quickly through their customers while delivering amazing customer service, and which ones could learn to do it faster. I learned that when the staff felt like it was really busy and clients were going to be angry, it wasn’t actually so bad. I helped bring a little bit of peace to our staff during peak hours because of that information.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The gym new how to bring in new customers, but did not know anything about why customers were leaving; I started digging into the process; I stopped working there before I could go deep into that project.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I still worked hard, but I no longer tried to differentiate myself by going to great &lt;em&gt;effort&lt;/em&gt;; I simply aimed for great &lt;em&gt;effect&lt;/em&gt;. Every single one of these improvements was hidden to me until I started thinking about solving problems.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Three Ways to Decide What to be When You Grow Up</title>
   <link href="https://josh.works/three-ways-to-decide-what-to-be-when-you-grow-up"/>
   <updated>2012-12-20T00:00:00+00:00</updated>
   <id>https://josh.works/three-ways-to-decide-what-to-be-when-you-grow-up</id>
   <content type="html">&lt;p&gt;Recently, I have had to explain to people what is it that I want to do. This question is difficult to answer for two reasons. The first reason is I am not yet strongly pulled into a specific position. My ideal answer would be “I want to do X role at company Y.” Short. Concise. Memorable.&lt;/p&gt;

&lt;p&gt;So far, I do not have that answer.&lt;/p&gt;

&lt;p&gt;These are the things I am doing to get that answer:&lt;/p&gt;

&lt;h2 id=&quot;1-learn-about-areas-of-interest-by-reading-books&quot;&gt;1. Learn about areas of interest by reading books.&lt;/h2&gt;

&lt;p&gt;Commit to reading one book every two weeks. Familiarize yourself with your local library, and browse until you find something that looks interesting. Follow the rabbit hole by flagging (mentally or on paper) interesting topics or references in that book as you read.&lt;/p&gt;

&lt;p&gt;Once you have finished that book, go find books related to the interesting topics you already noted. Keep this up, and you should soon have a body of knowledge related to ideas interesting to you. You improve in other ways by learning a little self-discipline and you learn toread with a purpose. I’ve recently been picking books from &lt;a href=&quot;http://www.sparringmind.com/psychology-books/&quot;&gt;this list&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;2-spend-money-on-information-interviews&quot;&gt;2. Spend money on information interviews&lt;/h2&gt;

&lt;p&gt;Do you know an interesting person, or someone who seems to do interesting work? Invite them out for coffee. This meeting is not a place to beg for a job, or prove to them how smart you are. It is an &lt;a href=&quot;http://www.iwillteachyoutoberich.com/blog/whats-an-information-interview-and-why-arent-you-doing-it/&quot;&gt;informational interview&lt;/a&gt;, and &lt;em&gt;you&lt;/em&gt; are interviewing &lt;em&gt;them&lt;/em&gt;.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;To you, this person is a VIP (Very Important Person) and you should treat them with respect and care. Reach out to them via email and invite them out to coffee at a time and place convenient to them. You’re paying, of course, because you value getting to hear more about them, what they do, and why they do what they do.&lt;/p&gt;

&lt;p&gt;Most people enjoy talking about themselves (I know I do) and if they are indeed interested in the work they do, they may enjoy sharing about that as well. Use informational interviews to learn relevant information that you could not gain in any other way.&lt;/p&gt;

&lt;h2 id=&quot;3-learn-to-market-yourself&quot;&gt;3. Learn to market yourself&lt;/h2&gt;

&lt;p&gt;Do you have skills? Presumably you do; at a minimum you can use a computer, and are literate. That won’t get you very far, unfortunately, so you need to either gain new skills, or discover skills you already have. &lt;a href=&quot;http://www.scotthyoung.com/blog/2007/05/31/be-yourself-law-of-attraction-and-other-pieces-of-bad-advice/&quot;&gt;“Being yourself” is not good enough.&lt;/a&gt;&lt;/p&gt;

&lt;h4 id=&quot;discover-skills-you-already-have&quot;&gt;Discover skills you already have:&lt;/h4&gt;

&lt;p&gt;Think long and hard about things that you have done, and how those things could mesh with needs someone else has. Your resume should not be a list of cool things you have done, but a list of ways you meet needs and add value to your little corner of the world. Read the first item of &lt;a href=&quot;http://www.cracked.com/blog/6-harsh-truths-that-will-make-you-better-person/&quot;&gt;this Cracked.com article&lt;/a&gt; for an explanation.&lt;/p&gt;

&lt;p&gt;There are many examples of skills you have, and may not even know it. Can you walk dogs? Someone out there needs a dog walker. How about babysitting? Does someone needs a good receptionist? Maybe you’re quite friendly and good at answering phones. Receptionists that work in classy businesses make good money. If a client walking in the door represents a contract worth hundreds of thousands of dollars, or millions of dollars, that company will pay top dollar to make sure the first person that client sees is professional, attentive, and sympathetic.&lt;/p&gt;

&lt;h4 id=&quot;gain-new-skills&quot;&gt;Gain new skills:&lt;/h4&gt;

&lt;p&gt;Take some classes at Udacity.com. Learn a little about marketing, business management, data analysis, financial planning, software design, computer-user interface, or whatever else tickles your fancy. Draw connections between topics that others do not. Watch your world grow.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I want to do X at company Y.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;None of these items listed above will give you that answer, but they will make set you down a path of learning to move you in that direction. When you do find a direction to go, you’ll be more qualified to do whatever it is you want to do.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.scotthyoung.com/blog/2007/05/31/be-yourself-law-of-attraction-and-other-pieces-of-bad-advice/&quot;&gt;Scott Young: “Be Yourself” and other pieces of bad advice&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 

</feed>
