synthesis

One afternoon I noticed I had a philosophy. I might have had one before, I’m not sure. My younger self made a lot of decisions that I no longer understand.

My path to the present included many embarrassing learning experiences. “Learning experiences” is a euphemism. I said stupid things in front of very smart people, argued loudly that I was right, grudgingly admitted that I was wrong, then sulked for days about it.

Put another way, the learning experiences were unlearning experiences. My universe of known things was always getting bigger, but I had to let go of many of the working assumptions I built that universe on.

I thought the unlearning would never end. I liked being able to look around me and read so many layers of knowledge into the world around me. I didn’t like the growing ambivalence I had about the usefulness of that knowledge. I really didn’t like the growing distance I felt from other people. I worried that I would grow into an old man like Michael Caine’s character in The Cider House Rules. He spent his days in service of others. He spent his nights anesthetizing himself. The whisper that asks whether finding meaning in life is easier to hear at night.

But that one afternoon I realized that there was a through line that connected many of the themes that had captured my curiosity in the past years. Ecology and living in balance with the planet. The failure of capitalism and the historical circumstances of its rise. The disappearance of musicians and the rise of a musical monoculture. Queer joy and the healing power of sex. What to do with the artistic spoils of colonialism. How to feel better. What is a community and how does it work?

Here’s the basic thought that I’m trying to develop:

There are very few rewards that humans take in on a primate level. They include food, brain and adrenaline highs, sex, the pleasure of social position, and the feeling of safety. The current global system that distributes those rewards is unjust. It requires misery for those at the bottom of the hierarchy, and our planet cannot sustain it.

That is a cultural choice. We can make different cultural choices. When we provide human rewards to each other without exchanging money, we reinforce a new culture that differentiates between living well and succeeding in an economic marketplace.

I know that sounds very simple, but I hope to spend some time unpacking it. I think there is a lot there. My hope is that developing this idea will generate creative ideas & help me better understand how to be a community member and leader.

hit refresh

cover of hit refresh by satya nadella

I’m fascinated by Satya Nadella and his transformation of Microsoft. While there were moments where his personality came through, this is mostly a bland piece of corporate hagiography, and you should look elsewhere for insights into that work.

The first part of the book is the most valuable. It’s a first person account of Nadella’s upbringing, education, and entry into the tech field. It captured how much pride he has in being both his father’s son and his mother’s son, as well as his clear love for his wife and family and his love for the cosmopolitan and ambitious India he grew up in. 

The next part is about his rise to CEO, and the undoing work he accomplished to change the corporate culture at Microsoft. There are a lot of corporate credits (our great work growing our cloud business was accomplished by such visionary leaders as blah blah blah) and a lot of telling but not showing (over the course of several meetings, we reached a consensus about how to move forward…). 

As with all transformational stories, details matter. If you zoom out far enough, all transformational narratives are the same: I was doing it one way, I wanted to change, I finally let go of what was holding me back from change, I tried a different way, and that turned out way better.

There’s not much more than that here. There are references to Microsoft losing its way and employee unhappiness, but a reluctance to call out specific mistakes. There is almost no specificity about the personnel changes that he made to signal that more changes were coming down the line. There is a little more detail about Nadella’s “new way,” including: moving away from the mindset of corporate friends and enemies and toward thinking about all other corporations as potential partnerships, breaking down the inefficient communication and empty status symbols of 20th century blue-chip corporate hierarchy, and stoking a real hunger for learning about use cases and developing sales channel for every sector of the market. 

If there’s any value in this book, it’s in this section.

The final section is Nadella’s prognostication of the future. It seems completely ghostwritten and is structured around Nadella visiting various Microsoft R&D initiatives and marveling with wet eyes about what he finds. Skip it. Skip the whole book*.

*I am aware that most people probably never even considered reading the book, that a book by a major corporate CEO was guaranteed to be bland and impersonal. What can I say? I’m an optimist.    

interconnected

Photo by Fábio Lucas on Unsplash

There is no blog that makes me feel excitement to meet the future than Interconnected, the public journal of Matt Webb. Webb is a UK based managing director of investment funds and former head of a design group. He specializes in imagining the near future, supporting businesses at the intersection of tech and material design.

I love the way that he incorporates a very long view of history into his imagination of the almost-possible. In this fantastic post considering the use of birds to divine the future in the ancient world, he connects this taxonomy of magicians codified in Roman law:

A haruspex is one who prognosticates from sacrificed animals and their internal organs;

a mathematicus, one who reads the course of the stars;

a hariolus, a soothsayer, inhaling vapors, as at Delphi;

augurs, who read the future by the flight and sound of birds;

a vates, an inspired person – prophet;

chaldeans and magus are general names for magicians;

maleficus means an enchanter or poisoner.

to some of the mystical personalities that have become common in Silicon Valley and globalized manufacturing:

I happen to have spent my career in a number of fields that promise to have some kind of claim to supernatural powers: design, innovation, startups…

It’s not hard to run through a few archetypes of the people in those worlds, and map them onto types of ancient magician.

Those like Steve Jobs (with his famous Reality Distortion Field) who can convincingly tell a story of the future, and by doing so, bring it about by getting others to follow them – prophets.

Inhaling the vapours and pronouncing gnomic truths? You’ll find all the thought leaders you want in Delphi, sorry, on LinkedIn.

Those with a good intuition about the future who bring it to life with theatre, and putting people in a state of great excitement so they respond – ad planners. Haruspex.

Those who have the golden mane of charismaenchanters. Startup founders.

People with a great aptitude for systems and numbers, who can tell by intuition what will happen, from systems that stump the rest of us. We call them analysts now. MBAs. Perhaps the same aptitude drew them to read the stars before? Mathematicus.

Just today, I was lit up with imagination and fantasies of the wonders of the future—confidence in the future is hard to locate right now, on the brink of a nuclear world war that all of the small people of the world are hoping against—by a new post connecting the physics of bumblebees and fish:

Vortices in the water are generated by the skin, and the side-to-side movement of a trout is the fish slipping between the vortices, pinballing between them, propelled on them like a boat on wind. (Shown, says the article, by the fact a dead trout on a line in moving water will still exhibit the characteristic swimming action.)

All of which leads to this REMARKABLE line:

Fish don’t swim, they’re swum.

ARGH. Too good. Am dead now.

to new forms of locomotion enabled by the marriage of machine learning with precise, instant control of motors:

How can the tools for inventing new wheels end up in the hands of the people with the right imaginations?

[…]

All wired together. Handed out to designers and mechanical engineering students.

And, given this package, perhaps the future will look very different from our science fiction.

Pinhead drones dragging copper wires behind them, darting through the home bouncing on air currents, generating electricity and power by dragging their tails through ambient magnetic fields.

Directional packaging that is can’t slip out of your hands (but dislodges easily when you move your hands the other way).

Cars with fine filament-bristles covering on the base, shaping and sweeping the air at nanometer resolution to ride on a silent and almost friction-free air cushion of vortex turbulence.

All mechanical objects with halos of filaments, magnets, mist, so fine that the eye can’t identify clean edges, no hard plastics or iron but all our artefacts in soft focus, encased as they will be in a gentle haze of turbulent air sculpted by alien intelligence.

It’s just fantastic.

I have such an inborn and church-reinforced worldview that is highly attuned to loss, and I never assume that just because the present followed the past it is automatically better. When I think about the lifestyles of the 1930s, I don’t think about how they didn’t have TV and most of their movies sucked, I think about how there were professional musicians in every city and dance halls where people had fun. Embodied, active fun. And their bread tasted better.

But it’s also true that I don’t have a way to think about all of the hunger, all of the people who had no bread at all. Maybe the truest truth about the 30’s is that the early 30’s sucked for almost everyone, and romanticizing anything about it is ridiculous.

A more balanced view would be to appreciate the good qualities of any given time, and appreciate it separately from comparisons to the future. There are social factors that make it difficult to set up a 1930’s style dance hall today: no one knows how to dance, the economic model relied on huge volumes and it would be a niche activity today, and it’s more expensive to secure and insure event spaces today. Not to mention that partner dances rely on rigid gender roles! All that means is that we need new models to respond to the conditions today.

It takes faith in the belief that people want to dance.

Future thinkers like Matt Webb give me confidence that we can figure out new models to create spaces where that can happen.

avicii’s pizza

This is my latest code review project. The coding program I am going through, Epicodus, is modeled after a software development company rather than a school. That means that instead of lectures and classes and homework, the emphasis is heavily on time with hands on the keyboard. Each day we pair up with a different peer and “pair code”—work through a coding exercise together, switching off typing code and proofreading for errors. Every Friday, we work alone on a project from 8am to 5pm, and we are not given the prompt ahead of time.

Screenshot of “Avicii’s Pizza” webapp.

This week’s challenge was to build a website that allows the user to customize a pizza and be returned a price for that pizza. I ended up building something a little more complicated than that, and that was one of two big mistakes I made that led to this being a more difficult project than other Friday code reviews. 

This week we added object constructors and prototype methods to our JavaScript toolkit. At my level of understanding right now, objects and methods are the heart of object oriented programming languages (like JavaScript, and many others). An object is constructed, and the object bounces around various functions as they are triggered by the user. 

I’ve been making really good progress, and that good progress led to my other big mistake this week. On Wednesday I worked with another student that came into the program from an IT background and together we blazed through the learning exercises we had for that day. That gave me a false sense of mastery over the material, and I ended up spending time helping a student in my team this week that was running behind on the material. What I didn’t realize (and what I might have caught if I had continued going through the extended practice projects) is that I didn’t quite internalize a particular strategy used to loop through objects stored in other objects. That strategy would turn out to be essential to finishing this project. 

Photo of planning notebook.

I started out by sketching my vision in a notebook. I struggled last week with coding according to test-driven development principles, writing incremental tests for my code before writing it. I had an idea that making a list of functions to write might help me not get distracted by xyz questions when I was working on abc. That turned out to be a good idea, but I also ended up sketching out a system that was a lot bigger than I was asked to make. I read through the specs too quickly and I wasn’t aware that I was extending every feature. I also came up with the Avicii’s Pizza pun, putting together Avicii, the late EDM artist that I greatly liked, and Ameci’s Pizza, a SoCal chain that had a restaurant in my hometown. Although nobody in Portland is going to get the pun—and, honestly, maybe not people in SoCal either—it made me laugh every time, and I was looking forward to adding styling and theming as the project got closer to being done.

I worked steadily, building the business logic in test driven steps throughout the morning. By the time lunch rolled around, I had built all of the functions that I sketched out in my list. When I got back from lunch, there was something off about the code I had written. I started to understand that while I had all of my functions written to add pizzas to an order, the way that I had assigned IDs made it impossible to reliably delete pizzas from the order and add new ones. I realized that I had not totally understood the strategy we were taught to do that, and I had to go back to lesson texts to catch myself up. This derailed me for an hour and a half. Even after rewriting, I wasn’t able to get the user interface code I wrote next to work as expected. Once I saw that it was unlikely that I would finish the project on time, it took a lot of wind out of my sails. 

At the end of Friday, I turned in my project as-is, and I was in a pretty stinky mood. I was stuck getting the project over the finish line, but I knew I was close and couldn’t stomach editing down the code that I wrote into something that was simpler but would pass. I came back to the code later that night and made a breakthrough (it was a classic JavaScript mistake—using a `]` when it should have been a `)` ). I went to bed knowing that the functionality of the site was there, and I knew I could put in an hour or two on Saturday and get the project themed and polished the way that I wanted to.

That work was a joy. I figured out how to apply a background gradient in CSS code, which, when combined with lightly-opaque background tiles around the content boxes, got to an EDM theme feeling with barely any additional styling beyond the default Bootstrap theme. I cracked myself up putting together the photo of Avicii with a Super Mario Brothers mustache. The Easter egg that took the most time to implement was adding the chiptune cover of “Wake Me Up.” The implementation of that feature was really satisfying to me: a 1px by 1px tiny YouTube player hidden inside the button that plays when you click it.  

Another chiptune Avicii cover, my other option for pizza parlor theme song.

I have a lot of ideas for getting back on track next time. I got a good reminder that the implementation of a feature may work with one set of features but break if you add more. I also took something from my pairing experience this week: I don’t ever want to railroad my partner or leave them behind, but in order to get the most out of the experience for myself, I also have to work at my own pace in order to explore the extended learning opportunities and projects. This upcoming week we are adding automated testing, package managers, and a full development environment, and all of these tools are new to me. I’m looking forward to this week getting more difficult. 

View the code for this project on Github.

mr. roboger

Screenshot of the JavaScript webapp I created.

This is my latest code review project. The coding program I am going through, Epicodus, is modeled after a software development company rather than a school. That means that instead of lectures and classes and homework, the emphasis is heavily on time with hands on the keyboard. Each day we pair up with a different peer and “pair code”—work through a coding exercise together, switching off typing code and proofreading for errors. Every Friday, we work alone on a project from 8am to 5pm, and we are not given the prompt ahead of time.

This prompt was called Mr. Roboger’s Neighborhood. The challenge was to take a number from user input, and return to that user all the numbers from 0 to the user input number, with some numbers substituted with words based on the presence of certain digits in the numbers. 

This code review project came after a week of learning about creating arrays in JavaScript, manipulating those arrays, and creating looped functions through arrays. The curriculum always includes skills that are relevant to working in the software industry but are a little outside of core coding skills. This week that involved writing plain-English tests for each step of our code writing process in order to prepare us for adding automated code testing to our projects in a few weeks. I found it really frustrating to stick to that focused, incremental way of working. If I have to code a, b, and c, I generally code most of a before going on to b, writing a very specific part of c, then coming back to finish a, which broke b, etc. I can feel that once I get used to the mental discipline of working in test-driven steps, I will start making rapid progress and spending less time tracking down spelling and syntax errors in my code.   

Completing the actual project went really smoothly for me. On Friday morning, I read over the specs for the project, then walked over to the kitchen to make a French press. While I was staring at the water, waiting for it to boil, the basic path toward completing the project just bubbled up from my subconscious. When it came time to actually write it, it turned out to take way more individual steps to manipulate the input than I first anticipated. I also really struggled to keep my work adhering to the test-driven development principles. I made a lot of progress in the morning, and just before lunch I realized I hadn’t documented any tests and had to try and fill in testing for code I already wrote. 

I had the most fun stying the page in the afternoon, after I got the functionality of the project working. I knew right away that I wanted to evoke an old-school monochrome green monitor. I first tried to align the page the way I wanted using the Bootstrap framework that we use as a starting place for most of our projects, but that wasn’t working for me and I ended up styling the whole page in custom CSS. I wanted to transform a picture of Mr. Rogers into green monochrome, but that ended up being a little beyond my skill. I was playing around with the image in GIMP and more or less stumbled across the color distorting effect that made it to the final project. It reminded me of both old school computers and was also a little psychedelic, so I couldn’t resist including it. I also had a lot of fun using the voice reader feature built into most modern browsers. That took the last hour and a half of the day. It wasn’t necessary and using that API was way outside my grasp, but the emotional payoff when it started speaking was the high point of the day.

I’m excited for what’s coming next time. This week we learned how to create our own JavaScript object constructors and prototypes, and if I had learned that technique my code for this project could have been much smaller. I also can’t wait to get skilled enough to understand how, exactly, to manipulate the screen reader to use different voices, pitches, and reading speeds. 

If you’d like to view the code for this project, it lives in this Github repository.