Technology *and* liberal arts

One of the most misguided notions I’ve seen in my life is that in one’s career and education you have to choose between a technical path and a non-technical one. It is a false choice. Anyone who has worked with a great engineer who also is a gifted communicator knows what I mean. In an increasingly complex world, people building the products and systems we all use need to be well-rounded and better-informed more than ever. As platforms deal regularly with issues like ethnic violence, having some history and political science majors in the room along with the computer science experts should be considered downright necessary. We should be encouraging liberal arts majors to spend more time studying technology and the engineering majors should spend more time outside of the tech buildings on campus. Yes, and. . .

Instead, we have a culture that still largely diminishes the study of liberal arts as un-serious and enrollment in humanities programs is falling across the country (see this recent New Yorker piece: “The End of the English Major.”) As technology has become fully embedded in our daily lives, most of the issues we face are cultural, historical, sociological, and political. We need people who engage with and understand those contexts more than ever.

In his last address to Apple developers before he passed, Steve Jobs himself challenged this notion, saying:

Technology alone is not enough. It’s technology married with the liberal arts, married with the humanities, that yields the results that makes our hearts sing.

I agree with Steve. It’s technology *and* liberal arts.

ChatGPT as a programming assistant for infrequent coders

I haven’t written code every day for many years but every now and then, a project emerges that requires a little bit of coding. This tends to happen about once a year. In the past, the cost of revving up the coding engine could be pretty high:

  • I would have to re-learn the basics of Git. I keep a private repository of my few coding projects on Github but don’t code often enough for even basic Git commands to be committed to memory.
  • I like working on the command line so inevitably I would have a new computer and have to generate new ssh keys so I wouldn’t have to enter a password when I’m working with the remote Github repository. (I have been using password-less ssh for close to 30 years now and I have never been able to remember the process!)
  • If I’m working with a 3rd party API, I need to read through the documentation to figure out how to do whatever it is that I want to do. Sometimes there is sample code for the language I’m using and sometimes there isn’t.
  • For some projects, credentials are required. I try to handle those responsibly so I have to re-learn Amazon Secrets Manager. . . and that means I have to re-learn the interface for whatever language I’m using to Amazon Secrets Manager.
  • With all that in place, I can now focus on the task at hand.

None of the above is “hard” in a technical sense but it’s all kind of a pain if you don’t code frequently and your environment hasn’t been tended to for a while. My life is also busy so all the grunt work of setting up and maintaining a programming environment is very far down my list of important things to do. For all of the above, I usually figure it all out by using Google but that usually involves digging through documentation (sometimes contradictory or just out-of-date). In the past, I’ve usually reached a point of fatigue with the whole process at this point and then question whether I should be coding again at all.

I have a project in mind that I won’t describe in great detail here but the gist of it is that I want to take bookmarks from Pinboard and make a set of web pages with the data. I decided to use ChatGPT to rev up the coding engine this time and it was so much easier and more immediately productive than other times I’ve been down this path. I’m including my ChatGPT prompts and responses below so you can see what I mean.

It remains to be seen just how deeply ChatGPT penetrates knowledge work and I’m skeptical in many ways — but for this kind of work, it feels pretty magical, especially for a rusty programmer who just wants to get something done.


ChatGPT prompt: Describe basic git commands typically used when working with a remote repository on Github

Here are some basic git commands that are typically used when working with a remote repository on Github:

  1. git clone: This command is used to create a local copy of a remote repository. For example, if you want to clone a repository from Github, you can run the command git clone <repository-url>.
  2. git add: This command is used to stage changes made to a local repository before committing them. For example, if you have made changes to a file in your local repository, you can stage those changes by running the command git add <file-name>.
  3. git commit: This command is used to commit staged changes to a local repository. For example, if you have staged changes to a file in your local repository, you can commit those changes by running the command git commit -m "commit message".
  4. git push: This command is used to push committed changes from a local repository to a remote repository. For example, if you have committed changes to a file in your local repository and want to push those changes to Github, you can run the command git push.
  5. git pull: This command is used to fetch and merge changes from a remote repository to a local repository. For example, if someone else has made changes to a file in the remote repository, you can fetch and merge those changes into your local repository by running the command git pull.
  6. git branch: This command is used to list, create, or delete branches in a local repository. For example, if you want to list all the branches in your local repository, you can run the command git branch.
  7. git merge: This command is used to merge changes from one branch to another in a local repository. For example, if you want to merge changes from the feature-branch to the master branch in your local repository, you can run the command git merge feature-branch.

These are just some of the basic git commands that are commonly used when working with a remote repository on Github. There are many other git commands that can be used to perform more advanced tasks, such as resolving conflicts, rebasing branches, and more.

ChatGPT prompt: using the command line, how do I set up a git client to work with a remote repository including setup of keys so I can work without a password

To set up a Git client to work with a remote repository and configure SSH keys for passwordless access, you can follow these steps:

  1. Install Git on your machine, if it is not already installed.
  2. Generate an SSH key pair using the ssh-keygen command: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" This command will generate a new SSH key pair using RSA encryption and a bit length of 4096. Replace “your_email@example.com” with your email address.
  3. Add the public key to your Git hosting provider (e.g. GitHub, GitLab, Bitbucket, etc.) by following their instructions for adding an SSH key.For example, to add a key to a GitHub account, navigate to the “Settings” page, click on “SSH and GPG keys”, and then click on “New SSH key”. Paste the contents of the public key (usually found in ~/.ssh/id_rsa.pub) into the “Key” field.
  4. Test the SSH connection by running the following command: ssh -T git@github.com Replace github.com with the hostname of your Git hosting provider. You should see a message similar to the following: Hi username! You've successfully authenticated, but GitHub does not provide shell access. If you see an error message instead, double-check that you’ve added the public key to your Git hosting provider correctly.
  5. Configure Git to use the SSH key for passwordless access by running the following commands: git config --global user.name "Your Name" git config --global user.email "your_email@example.com" git config --global core.sshCommand "ssh -i ~/.ssh/id_rsa" Replace “Your Name” and “your_email@example.com” with your name and email address, respectively. The last command tells Git to use the SSH key for all SSH connections.
  6. Clone the remote repository to your local machine using the SSH URL: git clone git@github.com:username/repo.git Replace username with your Git username and repo with the name of the repository you want to clone.

That’s it! You should now be able to use Git to push and pull changes to and from the remote repository without entering a password each time.

ChatGPT prompt: write a sample client in PHP that uses the Pinboard v2 API to fetch a list of all bookmarks

(Note: my first prompt simply asked about the Pinboard API and I got a v1 sample. I prompted again and asked for v2)

Sure! Here’s an example PHP client that uses the Pinboard v2 API to fetch a list of all bookmarks:

<?php

// Replace with your own Pinboard API credentials
$username = "your_username";
$apikey = "your_apikey";

// Set the URL for the API request
$url = "https://api.pinboard.in/v2/posts/all?auth_token={$username}:{$apikey}&format=json";

// Set up a cURL session to send the API request
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);

// Decode the JSON response
$bookmarks = json_decode($response, true);

// Loop through the bookmarks and output their titles and URLs
foreach ($bookmarks['posts'] as $bookmark) {
    echo $bookmark['description'] . "\n";
    echo $bookmark['href'] . "\n\n";
}

?>

Make sure to replace your_username and your_apikey with your own Pinboard API credentials. This client uses cURL to send the API request and fetch the JSON response. It then uses json_decode() with the true parameter to parse the JSON into a PHP associative array, and loops through the array to output the titles and URLs of each bookmark.

Note that the Pinboard v2 API requires authentication using a username and API token, unlike the v1 API which uses a username and password.

ChatGPT prompt: write php code for using Amazon Secrets Manager

(Note: I also asked ChatGPT the same question but without using Composer)

To use Amazon Secrets Manager in PHP, you will need to install the AWS SDK for PHP. You can do this by running the following command:

codecomposer require aws/aws-sdk-php

Once you have installed the AWS SDK for PHP, you can use the following code to access a secret stored in Amazon Secrets Manager:

<?php

require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;

$secretsManager = new SecretsManagerClient([
    'version' => 'latest',
    'region'  => 'us-east-1' // replace with the region where your secret is stored
]);

$secretName = 'mySecret';
$result = $secretsManager->getSecretValue([
    'SecretId' => $secretName
]);

$secret = $result['SecretString'];
echo $secret;

?>

In this code, we first load the AWS SDK for PHP using the autoload.php file. Then, we create a new SecretsManagerClient object and provide it with the region where our secret is stored. We also provide the name of the secret we want to access.

Next, we call the getSecretValue method on the SecretsManagerClient object, passing in the name of the secret. This method returns a result object, which we can use to access the secret value.

Finally, we retrieve the secret value from the result object and print it to the screen. Note that the secret value is returned as a string, so you may need to parse it into the appropriate format for your application.

Language gaps as an opportunity to connect

A couple of weeks ago, I found myself standing in line at a store in Oaxaca, Mexico that sells boxes and packing tape. I was at the tail end of a one-week trip and I had three bottles of mezcal and two packages of mole that weren’t going to make it back unless I packed and shipped them so this was a critical mission. I took two years of Spanish in high school and two more years in college and had gotten to the point where I could read novels in Spanish, but my skills had gotten rusty. This was a time to push myself with some real-world interaction. The shop I visited wasn’t a tourist place and the people in line all seemed to be locals going about their daily business — the only common factor among us was needing boxes and packing materials.

I planned my conversation in my head and was able to say that I needed a box to pack some bottles along with tape and bubble wrap. I was feeling pretty satisfied with myself until the clerk asked “¿Cuantos metros?” (how many meters?) referring to the bubble wrap. My scheme broke down when I couldn’t think of how to ask “how wide is the bubble wrap?” I froze and pulled out my phone and was able to power through using Google Translate’s Conversation feature (which is amazing). I finished my purchase and ended the conversation by saying “Gracias por su paciencia con mi español” (thank you for your patience with my Spanish.) The clerk smiled and I left with a little better Spanish though at the cost of the overall efficiency of the establishment. (btw, if you ever need boxes and packing materials in Oaxaca, Pepe Cartón is the place).

Fast-forward to several days later and I found myself standing with my 11-year-old son at Newark Airport waiting for a pre-arranged airport pickup after a visit to relatives in North Carolina. It was late and I had that tired please-get-me-home feeling that all parents have at the end of such trips. I was messaging with the driver in the ride share app and I noticed that each response to whatever I said was, “OK, got it!” with “translated via Google Translate” under it. I looked at his profile and it was all in Chinese.

A lot of time passed and I wondered why he hadn’t picked us up yet. I noticed that the app had told him to pick us up in Terminal B so he was circling there — but we were in Terminal A. I’ll save you the play-by-play of how we finally connected but by the time the driver found us, he was pretty stressed and so was I. But it was then that I had a moment of recognition: the driver was me standing in line at the packing store in Oaxaca, doing his best to communicate but not quite getting there. I remembered how the clerk in Oaxaca smiled at me as I stumbled and I decided to extend the driver the same human courtesy. I could tell when he picked us up that he expected us to be angry but I just smiled and said, “Thank you.” I assume he understood because he seemed to calm a bit.

There was definitely a distinct part of me that wanted to rail against the situation and be angry — I am paying for this ride and it should “just work” and why is this happening? I could feel the energy within me of the guy we’ve all heard in airports railing to someone on the other end of a call about the indignity of all of the travel pain he has endured, which is usually not that much in the grand scheme but always told in dramatic terms that rival the epic sweep of the Aeneid. But life is full of miscues and mistakes and here was a guy who had the bravery to come to a country where he didn’t know the language and get out on the road to try to make a living. When I thought about this, my mood quickly switched from irritation to admiration.

Finally in the car, I pulled out my phone, put Google Translate into Conversation mode, and said, “Thank you for driving us home.” I translated it to Chinese and played that translation for the driver. He smiled and thirty minutes later we were home.

Talking about OmniFocus on the Omni Show podcast

I almost never do podcasts but when the Omni Show called and asked me to talk about a piece of software that has been essential to my life for 15+ years (OmniFocus) I had to say yes. OmniFocus is how I manage my day-to-day life and I couldn’t live without it. Here is how they describe the episode:

In this episode, we learn how he uses OmniFocus to help manage his workload and bring order to his life.

Chad shares personal insights he’s gained as a CEO, including the importance of living an authentic life and staying true to oneself. We talk through the belief that personal improvement doesn’t happen by accident, and how the right productivity habits can keep anyone optimally engaged.

Here’s the podcast (audio and transcript at link but also available in the usual places you find your podcasts).

Gas vs. electric stoves: notes from my own direct experience

You might have heard a couple of weeks ago that NY Governor Kathy Hochul came out in favor of banning gas stoves starting in 2030 or 2035, depending on the nature of the project. This kicked off a firestorm of alarm, consternation, and misinformation, adding another log to the culture war fire. I’ll leave the culture war to others but wanted to write here about my direct experience switching to an electric stove after using gas stoves for most of my life. I’ve been using an electric stove (induction specifically) for two years now so everything below is from direct hands-on experience. In short, I love my induction stove and it feels like a serious upgrade from gas.

When most people hear “electric stove,” I’m pretty sure they think of the 1980s version of an electric stove, with the coils that turn red when you turn the knob to high. I grew up with one of those and have occasionally stayed in Airbnb’s with them. Those electric cooktops do, in fact, suck and are terrible to cook on. Induction is a completely different experience.

First: a simple $69.99 step to make such a decision easier

When we were renovating our house, we had to make many decisions that we knew we would have to live with and one of them was what kind of stove we would use. Our idealistic selves wanted an all-electric home using as much clean energy as possible. I have used gas for nearly all of my life and was skeptical of induction, mainly because I hadn’t used it — but I was curious. I fretted a little about the decision and then my wife had a great idea — we could buy one of these single-burner induction cooktop from Ikea for $69.99 and actually test it out instead of speculating. Our renovation was going to take multiple years and we didn’t have to make our final decision just yet, so we put that $69.99 Ikea induction burner on the counter beside our gas stove and started using it to cook our usual foods. Once I had direct experience, I never looked back. Induction is awesome (and it was the linchpin in being able to have what is now an all-electric home).

Update 2/23/23: One library in Northampton, MA now lets patrons check out induction cooktops for free (1, 2). Very cool. I hope other libraries take note.

Speed of cooking with electric vs. gas.

Electric (induction specifically) is much faster than gas. I know this from direct experience doing everything from boiling water to searing a steak. There is no “debate” to be had here.

You can see a live demonstration of the speed difference below on this “Ask This Old House” segment:

Precise control when cooking

While I’m not a professional chef, I cook a lot. Even simple things that I cook require fairly fine-grained temperature control. For example, I know from reading recipes that pancakes cook best on a 375° surface. Of course, you can cook by “feel” with induction but I like to be scientific about things when I can. I have an infrared gun that I point at the pan as I turn the heat up (see photo) to get the surface temperature.

I’ve noticed that when I dial up the heat on my induction cooktop, the temperature moves very predictably. And when I accidentally go a little too far heating up a pan, it goes down just as predictably when I turn the dial the other way. I’m able to hit 375° reliably when I’m making pancakes and they come out great every time.

Top chefs increasingly love induction. In “The Case for Induction Cooking, Versus Gas Stoves,” you can read about how Eric Ripert, the chef of Le Bernardin, renovated two of his homes and opted for induction. “After two days, I was in love. It’s so much more precise than watching a flame. You can really focus on your cooking and pay attention to what’s inside the pan, not what’s underneath it.”

On this topic, also check out “Professional chefs tout the culinary — and environmental — advantages of induction stoves.”

Practical shortcomings of induction

The only practical shortcoming I’ve identified from induction is that cooking in a typical wok on an induction stovetop isn’t really possible. Induction depends on direct contact with the pan so a round-bottom wok on a flat induction surface doesn’t generate the intense heat on the rounded sides of a wok. There are solutions for that, though. You can see a consumer-grade induction wok demonstrated here by Jon Kung that you can buy yourself. There are commercial options available, too, if you’re super-serious about wok cooking.

If you’re in a position where you’re making the same gas vs. induction choice we did and you feel a little nervous about it, give induction a try. I think you’ll be really happy with it and be very pleasantly surprised.

Home setup of two Internet providers with automatic failover

As more of our lives depend on Internet access, it has become increasingly important that the Internet be up all the time. Most providers are pretty solid these days but no provider is perfect. My primary provider has few outages but I’ve had at least two multi-hour outages and occasional 5-minute glitches. I work mostly from home coaching busy executives over Zoom and don’t want to waste their valuable time with technical glitches if I can help it — if you have 5 minutes of downtime and it’s the wrong 5 minutes, it can be super-distracting. And from a family perspective, if the Internet goes down at home, everyone immediately yells out for me to fix it. I decided to solve the problem by getting a 2nd inexpensive Internet provider and it has been awesome. Here’s how I set that up.

When it comes to tech gear, I’m a little like the guy who constantly tweaks a hot rod in his garage even though in reality he really only needs to drive to the grocery store. In that spirit, my home router is an enterprise-grade Unifi Dream Machine Pro. For an enterprise router, it’s not that expensive — $379. (I setup a VPN on it a while back because I *could*, not because I had any use case. . . but then I found myself outside of the US trying to watch an NBA playoff game and VPN’ed into my home network to get around the geo restrictions that were blocking me from watching the game. If you’re tried to use commercial VPN services, you’ve probably seen that they’re increasingly unable to evade the major streaming providers so this was a big win. If you build it, they will come. . . )

The Unifi Dream Machine Pro (UDM Pro) has two WAN ports. For the less technical, WAN means “wide area network” but just think of it as a connection to the Internet. Consumer-grade routers usually have just one WAN port for the provider you are using but since the UDM Pro has two, you can connect two providers to it. The device OS for the UDM Pro has a WAN Failover capability meaning that if your primary Internet provider goes down, it detects the outage immediately and flips to the backup. When the primary comes back, it automatically flips back.

Having two Internet providers for very occasional outages sounds expensive, and it could be — but I noticed recently that Verizon started offering a $25/month 5G wireless router for existing Verizon Wireless customers. Given the nature of my business and all the things in my household that depend on the Internet, $25/month seems well worth it to have rock-solid Internet. (Sure, you could tether off of your phone when your Internet goes down, but setting up other family members at a moment’s notice is a pain. And what if you — the full-time home network administrator — are not home?) With the UDM Pro and WAN Failover, your existing wireless network can theoretically just keep working. I like the idea of the backup to my cable Internet being wireless since presumably if there was an incident like a cable cut in the street, my failover would be less likely to be affected (though I haven’t tested that assumption).

So how did this work in practice? I got the Verizon 5G router to use as my backup Internet. It was easy to set up. Like any wireless device, it needs to have good reception so I set it up near a window and plugged it into the backup WAN port on my UDM Pro. The video at the bottom of this post goes through the rest of the setup details. It’s also easy if you have basic network knowledge.

My primary cable connection tends to get about 300 mbps down and 50 mbps up when I’m using my laptop around the house and the secondary (the 5G) gets about 30 mbps down and 10-15 mbps up so the service. To test out if this would work for my family’s typical usage, I unplugged my primary Internet for 48 hours and didn’t tell anyone in my family that I did it. I randomly asked my wife and son if they had noticed any Internet issues and they just gave me puzzled looks. To further test, I re-enabled the primary Internet and then randomly unplugged it when I knew everyone was using their devices. I got notifications on my admin apps that the Internet had failed over to the backup. No cries for help! Everything just kept humming along.

Now I unplug the primary Internet occasionally just to enjoy the fruits of my labor. Once I even had people over to watch a big football game and the Internet went out during the game, which we were watching on a streaming service. No one noticed except me since I got the failover alert on the admin app.

So, in the final analysis, setting things up this way was a Very Good Thing. If you can spring for the UDM Pro ($379) and 5G service ($25-$35) in addition to your primary Internet, you can set this all up for yourself in less than an hour.

RIP Billy Packer

This morning, I got numerous texts from friends noting that Billy Packer had died. As one friend shared, “If you’re our age, it’s like the Big Bang – Billy Packer and college hoops were always there, before time.” And that is true. He called every Final Four in my life that I can remember. Billy Packer was a legend in North Carolina where I grew up, having played for Wake Forest before becoming a ubiquitous college basketball color commentator. Love him or hate him (and some people did!) Packer was a key part of the landscape.

I grew up in an NC State household. My dad went to NC State and was followed by my brother. I wasn’t that interested in college basketball until I was 11 and the 1983 NC State “Cardiac Pack” pulled off one of the greatest runs and championship upsets in all of sports history. Even now, watching that final shot and Lorenzo Charles’ thoroughly improbable last-second dunk gives me chills and fills me with emotion (even today, I probably watch it at least three times a year). That’s when I became addicted to college hoops and the sweeping narratives that grip the country every year during March Madness. And, of course, Billy Packer called that game.

In a certain sense, I realize that sports are trivial, but experiencing that championship with my dad was one of the highest points of our time together on this earth and I can’t think of those moments without hearing Billy Packer’s voice (“THEY WON IT!”) RIP Billy Packer.

Nobuyuki Tsujii and experiencing new music

I love music. Growing up in North Carolina, I had a steady diet of top 40 radio with a heavy dose of country music from my mother (especially Loretta Lynn, George Jones, and Tammy Wynette). While I listen to a wide variety of music, I still feel like I’ve barely scratched the surface on genres like classical, or more generally, music from outside the United States. I’ve been trying to actively change that.

Over the past few years, I’ve been making a special effort to buy tickets to performances by artists I don’t already know and in genres explicitly outside what I know. NYC has so many amazing venues with decades of proven curatorial excellence so it’s easy to do here. This approach has led me to see artists like Senegalese superstar Youssou N’Dour and Brazilian legend Caetano Veloso (check out this New Yorker piece on him: “How Caetano Veloso Revolutionized Brazil’s Sound and Spirit.”) I walked into those shows knowing nothing about the artists or their music, or even the language they were singing in. Without fail, I leave those shows a huge fan and the music becomes part of my musical identity. (If you get a chance to see either Youssou N’Dour or Caetano Veloso – DO IT. Wow. A couple of the best shows I’ve ever seen.)

We went to one of those don’t-know-anything-about-this-artist shows last night at Carnegie Hall. The performer was Nobuyuki Tsujii, a Japanese pianist. Before these shows, I make a special effort NOT to read about the performer or listen to the music since I want to experience it fully with no pre-conceptions or pre-defined expectations. When we walked up to Carnegie Hall, the body of people in line was electric. After the crowd filed in and he came out to perform, the crowd went crazy. For the next two hours, we were blown away (see program below). We found ourselves yelling for an encore as part of a rapturous standing ovation (and we got three encores interspersed with the curtain calls).

I’m so glad we went — we’re now Nobuyuki Tsujii’s newest fans. Be sure to go see him (and other artists you might not know) when you get the chance.

11 paradoxes of leadership (from LEGO)

One of my CEO coaching clients with 30+ years of experience (much as a CEO) recently read The LEGO Story: How a Little Toy Sparked the World’s Imagination and shared the list below of 11 “paradoxes of leadership” mentioned in the book that supposedly hangs on the wall of every LEGO leader.

We both marveled at the list — neither of us had ever seen it before despite consuming voluminous content about leadership in our careers. It really captures what is needed to be a leader in all of its contradictions.

11 Paradoxes of Leadership

1. To be able to establish close relationship with your employees – and to keep proper distance
2. To take the lead – and to recede into the background
3. To show the employee confidence – and to be aware of their doings
4. To be tolerant – and to know how you want things done
5. To be concerned about your own field of responsibility – and at the same time to be loyal to the overall goals of the company
6. To plan your working-day carefully – and to be flexible to your planning
7. To express your opinion – and to be diplomatic
8. To be visionary – and to keep both feet firmly on the ground
9. To aim at consensus – and to be able to cut through
10. To be dynamic – but also thoughtful
11. to be self-confident – and humble

Back to blogging: ain’t gonna work on Maggie’s farm no more

In 1965, Dylan (in)famously went electric at Newport, kicking off a sizzling set with “Maggie’s Farm” (see it on YouTube). The FU spirit of the song is powerful. Dylan was breaking free from folk music convention based on the power of a song that itself represented a musical insurrection — breaking free from a toxic sharecropper / landlord relationship:

I ain’t gonna work on Maggie’s farm no more
No, I ain’t gonna work on Maggie’s farm no more
Well, I try my best
To be just like I am
But everybody wants you
To be just like them
They sing while you slave and I just get bored
I ain’t gonna work on Maggie’s farm no more

This story is as old as time. The basic theme from “Maggie’s Farm” was lifted from a 1920s Bentley Brothers song, “Penny’s Farm.” This was a song that Dylan certainly knew since the basic lyrical form showed up later in his song “Hard Times in New York Town.” Dylan clearly drew his inspiration for “Maggie’s Farm” from that Bentley Brothers’ song:

You go in the fields, you’ll work all day,
Way into night but you get no pay;
(You’re) promised some meat or a little bucket (of) lard;
It’s hard to be a renter on Penny’s farm.
It’s a-hard times in the country, Out on Penny’s farm.

Digital sharecropping on Twitter

In today’s world, many of us are doing the digital equivalent of working on Maggie’s farm but our new landlords are digital and Twitter is now Elon’s private farm. On Twitter, the little bit of meat and lard you get for working on Elon’s farm and enduring the landlord’s occasional abusive rants is “engagement.” The idea of “digital sharecropping” is certainly not new (1, 2) but I would argue that the “engagement” rewards one gets are generally worth less and are more troublesome than when that term originally emerged years ago. The meager rewards most people get are worth even less than the cast-off scraps they got in the first place. From a business standpoint, advertisers certainly seem to valuing this engagement less than ever, as selling ads on Twitter has become equivalent to walking around wearing a sandwich board with your brand at a combination building explosion / riot / car wreck / hanging / bloody insurrection.

I’m not a Twitter star by any means but I’ve had moments of achieving large-scale engagement and the general experience is a short-term rush of endorphins (“people are interested in what I have to say!”) followed by the online equivalent of a burst sewer pipe flooding your house with shit. As engagement shoots up, the quality of the conversation goes irretrievably downhill to the point where you mute replies, start blocking people, mute specific words, and clench your teeth until the flow of sewage stops and you can get back to your regular life. Even when you’re not actively involved in a discussion, incredibly important topics like “free speech” get debated with all the rigor of a first-year philosophy student who just took a massive bong hit and won’t leave your dorm room until he expresses every last faux-profound thought on the subject. This is, to put it mildly, not fun.

Blogging: old-school but WAY better

Blogging is entirely different and I would argue better. Blogging is a little retrograde, but retrograde in the same way a warm vinyl record with illustrations and liner notes is retro in comparison to a disembodied streaming service where accessing music is hyper-convenient but with very little warmth.

With a blog post, I can’t just react or dunk on someone — I have to actually write and formulate thoughts. When I’m done, I post and let it sit as I focus on other things. I feel clear-headed (vs. the brace for impact feeling I get when posting anything remotely controversial on Twitter). Anything you might call “engagement” on a blog is generally slower and more thoughtful. I have been blogging in some form for almost 20 years and I still get thoughtful emails about posts from many years ago, whereas with Twitter people tend to forget what you posted within hours. The overall body of tweets in the universe don’t tend to serve as an archive of considered thinking. (In fact, the primary use case for old tweets today seems to be surfacing things people wish they hadn’t said.) The vibe of Twitter often resembles Sartre’s dark play No Exit in what we are collectively trapped in a room with each other and the only thing we can do to pass the time is engage in mutual torment. L’enfer, c’est les autres (“Hell is other people”).

Sure, the engagement model around blogging is much less instantaneous and visceral. You don’t get to likes and retweets pouring in immediately — but that’s a feature, not a bug. With blogging, you might write a post that only three people read, but if the right three people read it, it can be life-changing.

A good blog post can have the same enduring small-but-huge generative spirit of the first Velvet Underground record, of which Brian Eno famously said, “The first Velvet Underground album only sold 10,000 copies, but everyone who bought it formed a band.” My post about helping move a Confederate monument only has about 1,000 all-time views but it connected me to an historian doing work in this area and we met up for dinner when he visited NYC (turned out we were related! Another story for another time.) A potential executive coaching client doing background research on me also found that post and instantly related to the topic given that he had grown up in the South. We have been working together for years now and that post provided a key part of the instant rapport and connection that makes a coaching relationship work. When I saw the esteemed historian Robert Caro speak in Brooklyn, I was able to ask him if he believed LBJ (subject of his Pulitzer Prize winning books) was actually racist, and I blogged his answer. The post only has ~5,000 all-time views but blogging what I heard actually contributes to the historical record in a meaningful way. I send this post about red / yellow / green check-ins to my coaching clients all the time as practical guidance on a research-backed practice that will improve communication in their teams.

I have many examples like the ones above over the years but those immediately come to mind. The blogging medium promotes thoughtful interaction. It’s thoughtfully prepared “slow food” versus the McDonald’s-slamming-out-burgers of Twitter.

I no longer like the way I feel when I use Twitter. With Twitter, I find myself transforming into the never-satiated “hungry ghost” of Tibetan Buddhism, with a “mouth the size of a needle’s eye and a stomach the size of a mountain.” I might get a bunch of likes and retweets but the more I get, the more I want — and the dumber the conversation tends to get. And the more “engagement” I get, the more I might find myself arguing all day with strangers about a momentary thought that I didn’t care that much about in the first place. Even dumber, I find myself hardening on that fleeting thought as arguments escalate. I see otherwise lovely people I know in real life transform into raging maniacs on a daily basis. If “engagement” is seeing an endless parade of everyone’s worst selves, then Twitter is truly killing it right now. But for me, this type of environment has turned into an all-around waste of mental and emotional energy.

So, I ain’t gonna work on Elon’s farm no more. It’s time to step out of the darkness and into the light.

As Dylan sang, I got a head full of ideas that are drivin’ me insane — pissing into the algorithmic wind of Twitter isn’t how I want to work through those ideas. I’m not deleting my Twitter account but will be going more or less read-only while doing most of my writing here on my own virtual land (powered by WordPress, built by a company led by a person who seems like a deeply thoughtful person — great interview with Matt Mullenweg here, btw). Let’s see how it goes.