Preference vs. duty

What you would prefer to do isn’t the same as what you would be willing to do. I think that distinction gets lost a lot if times in interpersonal relationships. If you ask for one and then ask for the other, don’t be surprised if the answer changes.

The cake I made for my wife today came out tasty but a little messy. I am wildly inconsistent when it comes to frosting layer cakes. This one ended up with crumbs mixed in, and I didn’t have any frosting left over to put flowers on the top. The ganache and raspberry filling was great, though.

After ten years of service, my gas grill rusted out to such an extent that it is unusable. I thought I could get another couple months out of it, but, alas, part of it fell apart today. I ordered a new grill online right away. Fortunately, I won’t have to assemble or lift it.

Pfizer says it’s time for a Covid booster; FDA and CDC say not so fast

Maggie Fox of CNN reports:

Hours after Pfizer issued its statement, the FDA and Centers for Disease and Control issued a joint statement saying Americans do not need booster shots yet.

“Americans who have been fully vaccinated do not need a booster shot at this time,” they said.

In a statement to CNN on Friday, the World Health Organization said, “We don’t know whether booster vaccines will be needed to maintain protection against COVID-19 until additional data is collected,” adding, “limited data available on how long the protection from current doses lasts and whether an additional booster dose would be beneficial and for whom.”

How you think about this comes all down to trust.

Who do you trust? The companies that developed the vaccines which appear to be far more effective against COVID-19 than we could have hoped? Or the government agencies that failed to provide the correct advice about COVID-19 prevention for months.

Who do you trust? The companies that are seeking to profit off a pandemic by pushing possibly unneeded booster shots, using scare tactics that are familiar from their marketing of other drugs? Or the government agencies who failed to coerce a huge chunk of the adult population to get vaccinated, due to a failure in messaging, incentives and coordination of rollout?

It may seem like I am arguing against the FDA, CDC, and WHO here. I don’t think I am, and I certainly have no data or expertise to refute either side’s claims. I am simply observing that these institutions are deservedly suffering from an erosion in public trust, and that is going to make any decision making based on what they say, or based on what pharmaceutical companies or health care providers say, more difficult.

Transloader: A remote control downloader for iOS and macOS

I learned about the app Transloader thanks to a MacStories article that popped up in my RSS feed today. Transloader lets you send a URL from any Mac or iOS device you have to your Mac, and the Mac will download it, send it to an app, or pass it or the downloaded file to an Automator workflow.

Saving downloads to my NAS is something I have longed to do for ages. I have tried to make iOS Shortcuts that do this, but I never got anything to work reliably. Transloader makes this task possible, though it ropes my Mac into the process. Fortunately, it even works (albeit with delays) if you don’t keep your Mac on all the time.

I have a bunch of half-finished blog posts lying around, but not enough time to spruce any of them up into something presentable.

Just be yourself…or not

When I was in fourth grade, my family moved to the town across the river. The move was not traumatic, but it was socially isolating. We had to move out of our old house three months before our new house was finished being built. We ended up as the only tenants in an apartment complex across town from where we used to live. For the fall, I went to my old elementary school and saw my old neighborhood friends and familiar classmates during the day, but I saw no one my age outside of school during the week or on weekends. Besides my parents, I saw no one on nights and weekends.

As an only child, I could keep my own company. I watched a lot of TV that fall. I played a lot of Super Mario Brothers and Duck Hunt. By Christmas, I was so bored that I actually mastered playing Gyromite with R.O.B. the Robot, which is a game that is both preposterously difficult (I mean, look at this) and equally unrewarding.

On New Year’s Day we moved into our new house, which was newly built in in a new, single-road housing development that was not yet completed. The house was both awesome—so big! so new!—and lonely. It inhabited the unfinished end of the street; half our neighbors were empty lots. We didn’t have streetlights or mailboxes. Our front yard had no trees, no grass, and no bushes; it was a sea of straw, strewn over frozen mud. My best friend for the first week was the little TV in my room that I watched while my parents unpacked their things.

Starting over at school, and making what friends I could in my new, very small neighborhood—especially after months of social isolation—was tough. I would ask my parents how to make new friends in my new town, where the kids all dressed differently, talked differently, and cared about different things than the kids I was friends with in my prior life. How do you start talking to someone you don’t know without coming across like an idiot?

They would say, wisely, “just be yourself.” That was pretty much the only advice I ever got growing up about how to act, how to fit in, and how to be comfortable in new social situations. It is terrible advice.

When I moved to a new town, I didn’t need to “be myself.” I needed to change myself: to become someone flexible enough to adapt to my new situation, to meet new people halfway, to be more open to taking chances, and to care less about every moment that didn’t go so well. It took me a long time to figure that out, but I did. I adjusted. I made friends. I found my people. It took a long time, and over that time I changed myself into a person far more comfortable with who I was and who I wasn’t.

“Just be yourself” doesn’t mean “just be yourself.” It means don’t hate yourself. Truly. For every inch of “don’t change yourself to fit in” in those words, there is a mile of “put yourself out there, and don’t let yourself feel destroyed if it doesn’t work out.” Try, and try again, but don’t hate yourself when you fail to make a connection or have to put your foot in your mouth. Don’t hate yourself when you don’t measure up, don’t fit in, and don’t succeed.

So, when you face a new challenge in life, don’t be yourself. Be better.

The hourglass

Life experience has a definite shape to it. Time isn’t a straight line.

It’s a funnel.

Well, really, it’s an hourglass.

The future is infinite. The past is infinite. The present, however, is really, really small.

Right now is the ultimate pinch point. You can only do so much. You have a tiny amount of time. You have a finite amount of attention. Now is the time. Now is your time.

What does America mean to me?

I find myself thinking this, on the fifth of July, after enduring with fusillade after fusillade of illegal fireworks, and thrum of dance music blaring from several neighbors’ backyard parties, and the thump, thump, thump of basslines permeating every barrier between them and my family until almost midnight last night. (Let’s just say my kids don’t sleep on July 4th.)

What does America mean to me?

It is a promise to do better, to try harder, to fight for justice and freedom, and to stand up again after being knocked down. It is a promise that is very, very hard to keep—one most often observed in its breach.

What has America actually been to me? All this noise around me, for years and years and years, drowning out the voices and the actions of serious, thoughtful people. I am one of the privileged few, but I too am lost and bewildered in my own country, by my own country.

America needs to be better, and for that, Americans need to act better. To start, we must demand better of each other.

What I’m looking for in an open source project repo

When the Micro.blog client apps were open-sourced, I reviewed the Github repos for the two I use most (the iOS app and the macOS app). I wondered if I could contribute something to the projects—probably something small, like more hardware keyboard shortcuts or an enhancement to how the post editor works. I wasn’t sure if that would be welcome, based on the brief “About the open source project…” verbiage in the REAMDE, and based on (1) the very old, but open, issues in the iOS repo, and (2) seeing no issues in the macOS repo.

I “know” Manton because I have been listening to his podcast with Daniel Jalkut for years (which is where I learned about Micro.blog), so I think of him as thoughtful, considerate, and certainly not as unfriendly. But I did not actually expect him to open source the apps when he did, and I figure that her has a business to run and may not be ready for a bunch of user requests on client apps that he may be happy enough with already. Manton saw my prior post about the apps and commented on it: “I wrote that README quickly and should expand on it…”

In true blogging fashion, I am responding to his comment with this blog post, with the aim to be helpful to Manton as he thinks about how to expand on the README he wrote.

What I look for in an open source project.

Two things, really. Can I report an issue? And, can I contribute?

Issues

Ideally the issues list will be kept current and will tie to development efforts (bug fixes and enhancements) going forward. Very old issues that the maintainer no longer wants worked on will be closed. Issues that the maintainer is interested in will be labeled “help wanted”, “good for beginners”, etc.

The maintainer should say in the README how user-reported issues will be addressed. It is OK to state that the maintainer does not plan to consider some or all feature requests from users. It is best to be open and realistic about how the project will operate.

Contributing

I always look for a CONTRIBUTING document or section in the README to learn whether or not the maintainer will accept pull requests, and if possible, how that process should work. Is opening an issue, then resolving it with a pull request later on, the right way or the wrong way to go about it? I have worked with maintainers who preferred that approach, to solicit conversation, and have worked with others who preferred the code change to come first and the discussion afterward.

Also, it is OK if the maintainer is not going to accept pull requests; I would rather know up front.

The future

I think it is perfectly OK if the way a project is maintained changes over time. Not every decision made on day one has to be carried out forever. As a potential contributor, I just like to know what I might expect if I approached the maintainer now.

Reading the news is a waste of time

On Thursday I configured NextDNS to block (for my personal devices only) news.google.com. Google News has been my Internet obsession since it debuted in 2002. It is not a healthy one. Whenever my mind gets lost for a second, I find myself opening a browser tab and checking Google News to see…what’s new, I guess. Sometimes I close Google News out of disgust or boredom and then, almost immediately, open it up again.

Why do I do this? What am I searching for? What is going on in my mind?

Reading the news seems like a worthwhile activity—something a thoughtful, intelligent person would do—but I am pretty sure that most of the time it isn’t. I think that news sites and cable networks exploit the part of our brains that are always scanning for threats and opportunities, as part of our survival instincts. In Paleolithic times, knowing if the tribe across the river is friendly or hostile, knowing where the good game is and where the predators are, and knowing what foods might kill you were all important to survival. All of that information is relevant and timely.

But that’s not what I get from Google News. I rarely learn about anything nearby that could possibly affect me. I usually learn about national affairs, faraway disasters, or (more recently) some else’s social media-published outrage about these things. It’s hard to say that provides me much benefit at all. So, for the time being, I’m turning it off. The news will still be there when I need it, but not packaged in such a way that hooks me and makes me feel virtuous for being hooked on it.

Some of my neighbors appear to have town-sized budgets for their Independence Day fireworks displays.

On open-sourcing the Micro.blog client apps

This week @manton open-sourced the iOS and macOS Micro.blog apps. I think that is a great move in general, but it is not one of the things I require in the software I use. I never felt that comfortable when, a while ago now, I read users’ blog posts expressing anger or dismay that the client apps were not open-sourced. (Let’s put aside, for now, that what makes Micro.blog work is the server-side code.)

As a paying customer, and as a developer myself, I don’t think Manton and his team are obligated to share their client source code with me. I don’t think anyone is. If they want to, that’s great—but it is no guarantee that the client app itself will be better, more secure, more feature-rich, or even have a future many years from now. Heck, it doesn’t even look likely that Micro.blog will accept pull requests, so it is unclear whether open-sourcing it will change its development direction or iteration time at all. I’m not complaining about that, though. Maintaining an open source project/community and running a successful blog hosting business are almost entirely orthogonal to each other. Open source doesn’t really give me added comfort that an app I love or depend on will be there for me forever, because nothing is forever, even open-source software projects.

As a computer user and enthusiast, I used to care a lot more that I do now about free, libre, and open-source software. My primary reason was that I thought I could trust it more than closed source software. It is harder to hide malware, tracking, and obvious security flaws when the code is publicly viewable. History has shown that not to be entirely true. Remember Heartbleed? That incident showed us that widely used libraries may be maintained by only one or two people, and their source code can contain bugs and security flaws that go unnoticed for years, because no one is actually looking at the source code.

My secondary reason for preferring open-source software was more theoretical, but larger in scope and more exciting to me: open-source software can be a more practical and a better use of humanity’s programming resources. That’s because one of the great, unfulfilled promises of computer science is the ability to solve a certain problem once and for all, for everybody. Open source utilities, like the Unix command line tools, and open-source libraries, like OpenSSL, theoretically could make this happen. But it didn’t happen, at least not fully. We spend a lot of time, collectively, solving the same software problems over and over again. We may approach these problems in new ways, with new languages, and on new platforms. But in the end, we are repeating ourselves. Imagine where we could be if we didn’t keep repeat ourselves!

I actually think that most of the repetition is the inevitable result of human nature. Humans are curious; we want to know how something works, and how to do it ourselves. Humans are also prideful: we think “I can do the same thing, but better.” Most importantly, humans need to learn; each of us is born knowing nothing, and must learn extensively from our forebears to push our collective knowledge out just a little further.

In the end, what is most useful to me about Micro.blog open-sourcing its codebase is that I can look at it and learn from it. That could be very helpful. Long ago, I was interested in creating a dead-simple iOS app (extension, widget, whatever) for Micropub posting. Eventually, well before this week, Micro.blog open-sourced its Snippets library, which would have made writing such an app much easier. Now, with the client app also open sourced, I could review its code to see (presumably) how to call, configure, and use the Snippets library in an iOS app. That is even more useful than the Snippets library alone.

Now that the Micro.blog client app source code is free and open, maybe I could use some of it to help me build that little utility app now. In the same vein, maybe someone else could use much more of that source code and build a better, more feature-rich client app based on it. Maybe the Micro.blog app is a solved problem, and no one has to solve it again (at least until Apple stops supporting the frameworks it is based on), and a hundred other Micropub-blogging-based small businesses could spring up, all using a common client app. Who knows? That possibility is a risk to Manton and Micro.blog, but it is also a gift to the greater world.

Thanks, @manton, @cheesemaker, and @jean (are there others at Micro.blog?) for all the work you do.

My carpal tunnel flared up so much today that I won’t be writing a proper blog post. 😕

On bullies, or why I have character

I often joke with people that I am not as nice as my wife is. It’s a self-deprecating remark, but I do mean it. I am a nice person, just not as nice as my wife is.

I’m not as nice because I was bullied for most of my childhood. I never got beaten up (though I did get into fights), and I was never afraid to go to school (though it was a gauntlet and a crucible), but I was picked on mercilessly, incessantly, and for everything—my name, my weight, my glasses, and most of all for being smart.

When I was a young adult, I would say that the bullying led me to develop character—and, man, I wish I didn’t have character! As a middle-aged adult, I find myself wondering what that bullying really taught me. I think, in a huge way, it taught me to distrust people—especially people my own age. It taught me not to take what people said to me at face value, because venomous words are often preceded by honeyed ones. It taught me that others may switch from allies to enemies when the social situation changes, like when the bullies enter the scene.

One of my triumphs in life was when I finally made the bullying stop. After years of trying different things—there is a lot of well-meaning advice for the bullied out there to follow—what finally made the bullying stop was a 30-second conversation I had with one of my bullies, in the back of a classroom on the first day of seventh grade. After being on the receiving end of some stupid taunt, I had had enough. I turned to the kid, looked him in the eye, and said to him: “You can say whatever you want to me. You can call me whatever names you want. But you can never hurt me. You can never change my mind about myself, no matter what you do.”

For some reason I still can’t figure out, the name calling, the taunting, and the scapegoating stopped overnight—not just from that one kid; from everybody. I didn’t become popular or anything, but I was mentally strong, and everyone knew it. The bullies just stopped bullying me. I was no longer a social pariah. I made a lot of new friends that year. Even some of the kids who picked on me even became my friends before the school year was through.

That single exchange, by itself, probably did not cause the bullying to stop. Asserting that I was mentally stronger than my bullies probably would not have worked unless it were really true. It was the last of a series of defenses I developed over the years. It was the strongest one, but I may not have developed it if I hadn’t developed others before it, like wit, determination, and resilience.

Bullying has shaped me to be someone who, as I have been told, does not suffer fools gladly. It has made me wary of people and likely to question others’ intentions, which is a great skill in political situations and in some professional situations, but it isn’t that useful for socializing at a picnic. It has also shaped me into someone who has tremendous sympathy for the downtrodden, quiet underdogs of the world. I can empathize with the pain of others. I know that true friends are rare and precious. I know that inner strength is hard won.

I also know that I am not as nice as other people, because other people were not as nice to me. So I try, really hard, to be nice, even when it is difficult, because people deserve better than I got when I was a kid.

The Cut

I have recently finished crafting a slideshow, and writing a talk to go with it, that is the best one I have ever done, probably by a mile. I spent hundreds of hours this year watching talks on YouTube (both good and bad ones), watching instructional videos on speaking and on creating effective visual presentations, and trying new slide design techniques (and throwing out all the things I tried that didn’t work). I tried really hard to push myself out of my PowerPoint design rut. I thought I was good at presenting before, but now I think I have really leveled up. I have internalized a lot of the lessons I learned this year.

The most visually impressive, most engaging, most well written talk that I have ever created is due to my bosses tomorrow. It is complete. It would make for a great 80 minute talk. But it has to be cut, and maybe cut down by half. It was momentarily agonizing to learn this today, but I am trying to think positively about it, because I have learned the right way to cut (iteratively, though rehearsals and timing of sections) and I know how to not cut the meat out of the presentation (because I wrote down the main idea of each section, so it wouldn’t get lost in an edit). I can do it. I just wish I didn’t have to.

No matter what, though, I’m going to be proud of what I built, and I’m going to seek out more opportunities to present in the future. I am good at it. I put in the work to be even better at it. And maybe with enough practice I can be great at it.

De-camped

One of the difficulties my family has had due to the pandemic is finding a suitable summer camp experience for my nine-year-old daughter. She loves camp, and there was no camp last year. This summer, we opted for what we thought was the safest camp option: a drama camp that promised to be outside only (under tents and such) or virtual if the weather was bad (presumably, if it rained).

Yesterday, a day before camp starts (which is today), the camp changed its terms. It would count heat and humidity as bad weather and would move camp indoors pretty much full time, based on the weather forecasts we have around here. The camp surveyed parents over the weekend and the majority of the parents presumably agreed to this. We, however, did not.

My wife is trying to find an alternative camp now, which is not easy last minute (at least around here). Camps start enrolling in October (which seems absolutely crazy to me). I hope she can work something out.

What I find frustrating about summer now (and this is in New Jersey, not exactly in the South) is that the heat, humidity, air quality, and afternoon thunderstorms make outdoor activities incredibly difficult. It seems like summer is not a good time for summer camp anymore, which doesn’t make sense.

I keep eyeing the AirPods Max listing on Amazon. The price is dropping below $500 now. They don’t seem perfect and I only tried them for a second but the noise cancellation puts the NC in my Beoplay H9 to shame.

I cleaned out my closet today, which is both exhilarating and depressing. So many clothes to get rid of! So many things held onto for too long. Now I have empty shelves and drawers and nothing to refill them with. May it stay that way, at least until I get an office job again.

We visited the beach tonight and really enjoyed it. Sunset is my favorite time there.

Trying to change my mindset

My work week has overflowed with head-desk moments, turnarounds, and setbacks. It has been frustrating beyond belief. It’s not often that I experience big parts of my work projects blowing up in my face, especially for unexpected reasons. Fortunately, all the problems I am facing are technology-related, not interpersonal, and can, I think, be solved by doing something I, by nature, kind of hate doing: asking for help.

I am trying to change my mindset from “I can’t do this anymore” to “I can do this. I may need help. And it may take longer than expected.” It sounds simple, but it really isn’t. For whatever reason, whatever I picked up from the self-help and coaching industries over the years taught me a misleading lesson about personal achievement, which basically boils down to “it’s mind over matter.” But sometimes, the problem really is matter—the external roadblocks, rather than the internal ones. At least, that’s what I think about this week’s challenge. If I can’t remove those roadblocks myself, then maybe someone else can help me.

All speech is persuasive speech

My wife teaches speech, debate, and dramatic arts to high school students. I love it when she asks me to help her with her lesson plans, because it gives me the chance to take a subject that she has to teach, however uninteresting it may seem (especially if you’ve taught it for 10+ years in a row), and blow it up into something that is the foundation of everything.

Here’s an exchange we had this spring:

Me: What’s the curriculum?

Her: Persuasive speech.

Me: All speech is persuasive speech.

Her: That’s not helpful.

Me: But it’s true!

I always encourage her to start new topics with audacious statements that demand defending. I’m not sure if she ever does, but I think it is important to tie everything you learn about writing and speaking with the fundamental forces that drive communication.

In another life, I would have ended up teaching English at some level, too. I think I would make an excellent high school teach for one or two very smart kids, and a potentially disastrous one for everyone else.

“Real artists ship”; or, at what point did I lose my nerve?

“Real artists ship.” Steve Jobs said that to motivate the Macintosh team in 1983. It’s a statement that reverberates in my mind and absolutely drives me crazy sometimes. Why? Because I have tons of code that I haven’t shipped. Hell, some of my best code hasn’t shipped.

At some point, I lost my nerve. I couldn’t finish the projects I started. I couldn’t make a small change to a UI because it would inevitably spiral out into something that would require a rewrite of the entire app. I let new components I created lie unused. I let the revisions and extensions I had written for my apps linger and die on the vine. I couldn’t integrate the pieces into a coherent whole.

I let myself become too tired or too distracted to focus on the problems in front of me. I couldn’t resolve the problems I had created for myself. I couldn’t think straight, and didn’t trust that I could do it anymore.

I realize now that I was bumping into my limits as a developer, which is scary and frustrating. I opted to run away from these limits rather than to either work past them or to accept them. I am trying to do better and not get bogged down in all the feelings I have developed about this over the past couple years.

In the past I have failed. But I am trying to work through it now, to push past the fear, to move from “I can’t do this” to “I can do this,” and to get through the hard parts of getting my best code shipped. I can do it this time, and I won’t give up. All it takes is will, grit, and patience.

I just had to reboot my iPad due to some wonkiness. I wonder when iOS/iPadOS 15 developer beta 2 will drop. I think we just passed over the historical median age of an iOS beta 1.

📺 My wife and I watched the first episode of Hacks tonight and thought it was a hoot. The writing is outrageous, the characters have no filter, and Jean Smart is a treasure.