Expanded ideas
Squeezing ideas
Turning a big idea into a more manageable one has second-order consequences:
Remember, the more complex the issue, the more prone communication is to being lost.
– Andrew S. Grove, High Output Management
Communicating complexity is compression. Compressing ideas is loss-y. Can’t get around that. There’s no way to convey a complex idea and maintain fidelity. To work with an idea amongst abstractions is to accept that rabbit holes will develop. And, that sometimes problems will hide in the depths and mazes of those rabbit holes.
Here’s a thing, October 05, 2017
As I endeavor to re-establish writing here as a regular and consistent project, I’m reminding myself of two things that helped me in the past.
First and foremost, it’s about the writing and the finished product over the page views and vanity metrics. No one’s biography or Wikipedia page says “and lo they were followed by many social media influencers and gathered many thousands of impressions!”
Second, no weblog is better than the one you already have. Resist the urge to roll your own tools and just write.
By virtue of Apple Music’s “For You” tab, I came upon the musical landscape of Tim Heckler. If wooshy, atmospheric ambient experimental/electronic music is your thing, you should check it out.
Also, you should listen to lots of Nina Simone.
The notes, October 04, 2017
I’m intrigued by folks having luck building virtualized development environments for localhost setups. It sounds like fun to work in this kind of workflow. I never want to do the legwork to make this work, though.
I did the preliminaries for this last year and ended up turning back from it. I understand Docker and virtualization superficially at best. I don’t want to impose it on teammates. It’s still too hard to search for Unix-y error messages and fix your development environment. Trying to figure out if your host Unix, Docker, or a virtualized Unix are the problem is not something I wanted to do to someone else.
Is Amazon Lightsail a move by AWS into the space occupied by Linode, Digital Ocean, etc.? Related to virtualized localhost setups: someone write me a thing to drop my dotfiles from macOS onto a Digital Ocean, AWS, etc. instance and do development from an iPad, keyboard, and SSH client.
Hammerspoon is a really cool to do all-the-things with your keyboard and some Lua. I use it to launch/switch to my most frequent dozen apps and some light Markdown helpers. But, something about it is correspondingly creepy. It can, theoretically, scoop up every keystroke. (Which probably every bit of open source I install via Homebrew could, to be honest) But maybe I could replace it with a clever bit of Alfred workflow and scripting. Catch a triggering keystroke and then give me a constrained list of apps to switch to. Yes, this is a very strange way to hit Command-Tab
! I wonder how well a few custom Alfred workflows fit into a dotfiles repo.
Afternoon notes, October 03, 2017
Someone will always have a slicker Git workflow than you. For example,Auto-squashing Git Commits for clever rebasing.
The passage of time is weird, lately. Nonetheless, it’s surprising that the Dynamo white paper is ten years old. Ten years of NoSQL hype. Even from a naive yours truly.
I’ve been using the fish
shell for about five months and it is pretty great. A shell with human affordances! It has very good guesses about what I want to do (completions) and what I want it to remember (history). You can configure it with a web interface or regular-old dotfiles. It doesn’t do anything bizarrely different from your typical Unix-style shell, namely bash
, so there’s not much new to learn and when I SSH to a server, I don’t wonder what kind of weird contraption I’m interacting with. I haven’t bothered to learn its scripting language because I’ve decided no one should learn those anymore and they should use Ruby, Python, Go, etc. for that kind of thing.
Morning notes, October 03, 2017
I like Bluebottle’s coffee subscription service a lot. The web app is well done and having coffee magically appear in my mailbox means I have far fewer “awww heck we’re out of coffee until I go to a coffee shop” moments. However, I do occasionally mess up the timing, such as right now, and then I have a very first world problem.
Scheduling my time on social media and capping the total time spent, not unlike watching a regular TV show, is an idea with some appeal. It’s probably a good idea for moderating how much daily news one consumes, as well.
I was looking at WP-CLI so I could automate some housekeeping tasks on this blog. It’s pretty close to what I’d like to use, the ideal being something closer to t
. I’m a little wary of installing a PHP tool though. It’s probably the language tribalism talking though. Seems pretty likely I’d save time using someone else’s PHP than figuring it out on my own.
When my brain storms
I do my best thinking:
- In the shower. I love to take long showers, and I love my tankless water heater.
- While talking. Something about my brain is wired directly to my mouth.
- When I'm not thinking. See also, the value of letting your mind idle, wander, or just walking away from a tricky problem.
Your thinking may vary!
Personal city guides
I’ve seen lots of sites about how to use software. The Setup and The Sweet Setup are my favorites. You can find lots of sites about how to use ideas like Inbox Zero or Crossfit. People love this stuff.
What I don’t see a lot of is how to use a city, as a visitor or resident. I suspect these things are all around me and I don’t even notice.
A travel guide will tell you where you can go and what you can do, but it won’t tell you how you should go about it. It won’t tell you the little things you’d do as a resident but wouldn’t notice as a traveler. They don’t tell residents (or future residents) what the essence of the city is and what you should do when it’s nice, or gloomy, or when you want to go out, or when you’re hungry.
For example, if I had to write an Austin Setup guide, it would include things like:
- what to eat lots of (tacos and breakfast) and what to eat little of (Italian, oddly enough)
- where to go when it’s nice outside (S. Congress, Auditorium shores, or Zilker park), where to go when it’s blazing hot (Barton Springs), or where to go when it’s miserable outside (one of the many great coffee shops)
- where to find funny people and where to find technology people (because those are my scenes)
The thing is, this would end up reflecting my idioms. Not as useful for someone who wants to do sports, or outdoorsy activities, or music. This thing is more personal, like an interview on The Setup about how people use computers to do their cool thing. Sort of a “how I’ve hacked my city to work better for me” guide. A reverse travel guide of sorts; not for everyone else, just for me.
Sometimes it's okay to interrupt a programmer
I try really hard to avoid interrupting people. Golden rule: if I don’t want interruptions I shouldn’t impose them on other, right? Not entirely so.
Having teammates around, and interrupting them, has saved my butt. I’ve avoided tons of unnecessary work and solving the wrong problems, and that’s just the last week!
Communicating with others is a messy, lossy affair. We send messages, emails, bug reports with tons of partial context and implicit assumption. Not (always) because we lack empathy or want to bury ideas in unstated assumptions, but because we’re in a hurry, multitasking, or stressed out.
When you interrupt a co-worker you can turn five minutes of messages back and forth to thirty seconds of “Did you mean this?” “Yeah I meant that!” “Cool.”
When you interrupt a co-worker you can ask “this made sense but you also mentioned this which didn’t entirely make sense” and they can say “oh yes because here’s the needle in the haystack” and now you can skip straight to working with the needle instead of sifting through the haystack that was your own assumptions wrongly contextualized.
If your coworker is smart, they are keeping track of why people interrupt them. Later they’ll try to make it easier for you to not interrupt them, e.g. write documentation or automate a task. Maybe they want you to interrupt them so that whenever someone wonders “why haven’t we automated this?” they can talk to you about how it’s important to have a human hand on it rather than let failed automation go unnoticed.
There are plenty of reasons not to interrupt someone. I know the struggle. I do my best to respect when people put their head down to concentrate and get stuff done. I always spend a few minutes rereading communications or spelunking the code, logs, or whatever context I have before interrupting someone. It’d be rude to interrupt before I even started trying. But, there’s a moment when the cost and benefit of interrupting someone so I can get something done faster swings towards mutual benefit. That’s when I interrupt them.
Just tackle the problem
There’s a moment when a programming problem engulfs me. Perhaps it’s exciting and intriguing, maybe it’s weird and infuriating, maybe it’s close to a deadline and stressing me out. Whichever it is, I’m not so great at managing that intensity.
I can’t handle adult responsibilities. Any external demands on my time are met with impatience. My thoughts drift to the problem when I’m not otherwise occupied. I get on my own case about why it’s not solved, festering a negative feedback loop of feeling bad about not having solved it yet and then feeling worse about not having solved it yet.
I am able to step away from it a little bit. Go grab food, spend some limited time with my wife or dogs. It doesn’t fully engulf me. But I can’t detach myself from it.
It’s not frustrating that I get excited or perturbed by my programming work. It’s frustrating that I let it stress me out, to negatively effect my life even if only for a short time. Especially that it’s spurious, that I don’t need to stress out over it. My code’s not going to endanger lives, yet.
The best coping tactic I’ve come up with, so far, is to tackle the problem. Don’t go stew on the circumstances of the problem. Maybe take that moment away to pet a dog and release some stress. Then, find a solution that fits the time and context of the problem so I can get back to thinking clearly about work and life.
Sometimes, I get lucky and the solution to the problem presents itself.
Protect the beginner's mind
Someone joins your team. They have a beginner’s mind about your project and culture.
Take a person with beginner’s mind, tell them about how things have always been, how they got that way, and insist we just try to keep that status quo? That’s a shame.
When you harness a beginner’s mind, you have a short window to make the most of their new perspective. After a while, it becomes the team or culture’s perspective. Opportunity lost.
Put a person with beginner’s mind in a room with someone who knows All the Reasons. If they survive, you have just created a ton of learning for both people.
Protect the beginner’s mind. Listen to it. Act on it.
Contrast NYC and SF
Dallas and Austin are the cities I’ve spent my life in. I’ve spent maybe three weeks of my life, total, in San Francisco and New York City. They’re similar in that SF and NYC are both a Whole Other Thing in comparison to my Texan expectations. Indeed, they’re global cities operating at an entirely different order of magnitude.
It’s long puzzled me why I find NYC less intimidating and strange than SF. I’m starting to think its the attitudes. Walking through either town, I frequently suspect that I’m Doing It Wrong, from where to eat to where to sleep to how to use the subway.
In NYC, I suspect the natives are looking on as I struggle to hail a cab or catch a train, but they are silent in their snickering about me doing it wrong.
SF feels much more in your face, eager to tell you “You have done it wrong and you should feel bad”, from the subway systems to the tech bubble.
San Francisco very much remains a frontier town. You move there to make your fortune, to burn bright and “compress your career into several years”. It’s at the same time fractured by law (the city has three different transit systems, all using different tokens last time I visited) and lawless (Uber and Airbnb in particular are about landgrabs before the law can catch up with technology). It’s at once a global city and embarrassingly self-centered.
In summary, I guess I just like Texas a lot better. Even after our awful lawmakers.
Execution and idea in Frontierland
It’s commonly held, and pretty much true, that ideas are shallow and execution is depth. That is, the former is nothing without lots and lots of the latter.
Let’s set aside how “execution over ideas” is used as a bludgeon for a moment. I think there’s possibly a case where “execution AND idea” is a viable recipe for success.
If you’re in a Wild West, converting the minimal version of the idea to an executed offering can be all you need to succeed. Temporarily.
If you’re always moving from emerging market to emerging market, you’re betting not on your ability to execute, but your ability to identify the next market. You’re OK with fast followers building on your idea, iterating on it, and establishing themselves as the market matures. That’s OK, because you’ve already moved on to the next market.
So the risk here isn’t execution, but idea/market selection. When you’re first, it’s slightly OK to ship with a product that will be viewed as laughable once the market is mature. 75% idea, 25% execution.
When you’re second, seventh, or seventeenth, you had better execute on the idea, the business, and the culture you build. It’s 95% execution, 5% idea.
Our laws are here, they just aren't equally practiced yet
That thing where institutions like the FBI are prohibited by law from meddling with presidential elections, and then the FBI meddled multiple times. We’re just going to let that slide? Seems like it!
The point is not there was one big injustice, which there was. The point is that justice has been distributed unevenly through your history. Outcomes favored by those in power but obtained illegally have long been effectively legal. Those out of power have always felt the full brunt of the law, and even worse.
The inequality and imperfection by which our law has always been practiced. That’s the lesson.
Jobs, not adventures
Earlier this year, after working at LivingSocial for four years, I switched things up and started at ShippingEasy. I didn’t make much of it at the time. I feel like too much is made of it these days.
These are jobs, not adventures.
It has, thankfully, become cliché to get excited about the next adventure. Instead, I’m going to flip the script and tell you about my LivingSocial “adventure”.
- Once upon a time I joined a team with all the promise in the world
- And as a sharp person I’d meet there told me, the grass is always greenish-brown, no matter how astroturf-green it seems from the outset
- I wrestled a monolith (two, depending on how you count)
- I joined a team, attempted to reimplement Heroku, and fell quite a bit short
- I wandered a bit, fighting little skirmishes with the monolith and pulling services out of it
- I ended up in light management, helping the people taking the monolith head on
- I gradually wandered up to an architectural tower, but tried my best not to line it in ivory
- I had good days where stuff got done in the tower
- And I had days where I feng shui’d the tower without really moving the ball forward
- In April, it was time for me to hand the keys to the tower over to other sharp folks and spread what I’ve learned elsewhere
- In the end, I worked with a lot of smart and wonderful people at LivingSocial.
Sadly, there was no fairy tale ending. About a third of the people I worked with ended up leaving before I did. Another third were laid off in the nth round of layoffs just after I left. The other third made it all the way through to Groupon’s acquisition of LivingSocial.
It was not a happy ending or a classic adventure. It was an interesting, quirky tale.
Mutual Benefit
Leaders of business and thought have been putting out statements showing unity or acceptance of Donald Trump’s election. I feel this is normalizing what has just happened to this country and therefore these statements are awful.
If I were a captain of industry or leader of thought, I’d use this statement and encourage everyone else to do the same:
As a private citizen, Mr. Trump has said and done numerous things which are indefensible and which we as a country cannot endorse or accept. While we regret that he’s been elected, as he transitions to life as a public servant, we are willing to consider his actions and act together when they are mutually beneficial to all of our customers, employees, partners, and the greater public. In any case where there is a conflict of benefit, we shall stand opposed to Mr. Trump as is our duty based on the founding principles of this nation.
Mutual benefit. It’s so easy to draft laws and make changes that benefit everyone. It takes nothing away from me if Black Lives Matter. Pricing the cost of pollution into the gas for my car means there’s an incentive for me to use less and what I do use pays for the negative effects of using it. Letting a gay couple marry or someone change their gender takes nothing away from my marriage or identity.
We will not let Trump do as he’s said to our neighbors and our country. If he wishes to change course for the better now, fine. Otherwise, we will refuse to allow Trump-style business and rhetoric to become business-as-normal in our country.
Automotive enthusiasm and pragmatism
A few years ago, I was re-infected with enthusiasm for cars. I came upon One Car to Do It All and found a new reason to obsess over cars.
I read Car and Driver and Road and Track as a teenager. I was excited by the agency that cars bring (who isn’t?). It was a fun thing for me to nerd out about: technical specifications , comparing feature lists, and of course benchmarks! There was also a slight bit of romance to automotive journalism, ostensibly all writers traveling the country (or world) driving neat cars in beautiful places, often quite quickly.
Now, I’m taken by the history of specific manufacturers and how older models of cars became the current models. The technology and coordination needed to produce the modern car appeals to my technological side. The shape of cars new and old is a fun subjective conversation (e.g. are exterior about form or function?).
Most people do not view cars this way. They are automotive pragmatists. They want a car like they want a refrigerator or washing machine. The car is an appliance. It takes you from where you are to where you want to go without drama, in a modicum of comfort. The quality of the steering feedback, the particulars of the engine, or the predecessor of the car from two decades ago are nothing. The optimization is all around cost of ownership and utility.
(For the sake of symmetry I feel compelled to write another couple paragraphs on automotive pragmatism. But, there’s really nothing else to say. It’s pragmatic through and through.)
A curious thing happens when my car enthusiasm interacts with pragmatic car owners. Some of them will encourage me to talk about my enthusiasm. Mostly, it seems a little awkward, as though they’re afraid I somehow experience cars in a better way than they do. This is totally not the case, I can’t even really drive a stick!
In a way its not actually that curious. Car enthusiasm and the cars enthusiasts own correlate highly with elitism, which is by definition intimidating. But it does make me wish I had a shorthand for “I drive this car because its interesting to me, but I won’t judge your car, now tell me what you’re enthusiastic about that I don’t understand”.
Losing the scent, acquiring the taste
When I didn’t drink coffee, the thing I enjoyed about coffee was the smell. It has a really great aroma. Unlike popcorn!
Now that I do drink coffee, I don’t notice the smell as much. I have to stop myself to take notice of it. That’s sort of a bummer.
I’m acclimated to coffee. I love drinking it, and tasting it. But, I wish I could drink coffee, regularly, and still smell it.
Getting around, together
Riding the Rails: Celebrating Trains and Subway Commuter Life:
Train time is essential time, and rail travel isn’t strictly pragmatic. For many, the commute is their only time to read, think, and zone out.
For a brief window of several months, ten years ago, I rode the Dallas light rail to work. It was exactly as quoted. It was when I read, when I reflected on the world or just the day gone past. I often miss it.
…as Jacquelin Cangro writes in The Subway Chronicles, the “New York Subway is a microcosm of world culture. The train is the great equalizer. When the doors close, all of us — black or white, Sephardic or Catholic, Chinese or Indian — are going together, and no one will arrive any faster or in better style.”
Even more, I wish everyone had to partake of public transit. We spend too much time in our bubbles. Our offices, homes, social networks, and cars isolate us from each other. Perhaps we wouldn’t find ourself in this strange election cycle if people from different backgrounds and circumstances had to spend twenty minutes with each other several days a week.
Taking polluting cars off the road, reshaping our communities, greater safety, it’s all secondary to me. Growing our empathy with one weird trick to see each other and relate is the outcome I find most intriguing to good public transit.
Threaded discussions: nope nope nope
Pet peeve #73: threaded discussions. You may have seen it in a Usenet reader or perhaps even your email. It may seem like a great way to manage a long conversation with multiple ideas and lines of discussion. OK, that’s fine, I think you’re wrong and looking at this a little too technically but it’s not forcing that perspective on anyone else so fine.
I get peeved when its suggested that conversational tools like Twitter or Slack should implement threaded messages. Nope. You have now failed my secret test, please disembark from the pragmatic train.
If a conversation requires threading, that conversation has already gone way off the rails.
Two people talking about one thing and another two people talking about another thing in the same conversation is the definition of talking past each other. Why should our software enable that?
If an email or chat ends up covering two important topics, e.g. whether to use solid or liquid fuel on a rocket and what color to paint the rocket, it was poorly written in the first place. A reasonable person can easily jump in and say “let’s talk about the fuel now and we can figure out the color later”.
Bottom line: I think people can and should handle breaking off side discussions on their own instead of trying to push weird hierarchy on participants.
BDFLs aren't community builders
What if large open source projects appointed a community manager to handle things like codes of conduct and social spaces? Anecdotally, those who make large projects are often the worst at actually running a community. Even volunteer projects need management. Flat organizations will always be dominated by ad-hoc in-group politics. The internet we’ve created thus far is allowing terrible people to outpace good people by a long shot.