“That didn’t happen!”

So, I had to talk about something difficult recently. How do you do that? I mean, “you the reader,” not me. I know how I do it, and why.

I’m an introvert. For my purposes that means a couple of things:

Being around a lot of people doesn’t charge me up. Being 1:1 with someone, or in a small group, can. I’m not sure how typical that is of my kind, but I know my favorite parts of the work day are with “my people” in 1:1s, or with my managers. Big meetings are hard. Big social events are hard.

The other thing it means is that I’m not comfortable with a lot of spontaneous expression. I’m an internal processor.

So, when I think I’ve got to have a hard conversation with someone, I think about it a lot beforehand. I used to joke that I spent my morning commute spinning up virtual instances of people I needed to talk to so I could think through a few possible conversational directions. I though it was sort of cute to say that, but I don’t think it really leads to a good outcome.

I mean, it’s okay to decide you’re going to think about what you want to say to someone before you say it, especially if carelessness with your words could hurt them. That’s fine. We should all do that. We have these little phone rooms at work that are barely big enough for a chair, and I sometimes go into them a few minutes before I need to talk to someone about something that matters a lot and think through what I’m going to say. Sometimes I even write it down in a text file. I take deep breaths and close my eyes and settle down into myself.

The “think about what you’re going to say” strategy begins to fail when you imagine what you’re going to say and then imagine them saying something back, and then what you’d say to that and then what they might say back to that, etc. etc.

It took two things to help me realize the problem there.

The first was that one day, in the middle of a period where I wasn’t sleeping much, I realized how badly the lack of sleep was affecting my perception of things around me. Passing comments suddenly seemed like they might be insults. Hanlon’s Razor sort of went out the window.

So I had a pretty good fix for that: On mornings when I’d gotten little sleep — less than six-and-a-half or seven hours — I’d spend a few minutes on my commute thinking about that and what it meant. I’d talk to myself on my bike:

“You didn’t get a lot of sleep last night. You’re going to be feeling a little paranoid and on edge. You’re going to want to take offense at things people say to you. You’re not going to be seeing things correctly.”

Then I’d get into work and try to remember to talk to myself about that a few times over the course of the day.

Things started to roll off my back more easily. It was nice.

It also started making those little conversations with virtual people go down better. I stopped anticipating the worst, or when I would anticipate the worst I’d remind myself that I wasn’t very well rested. I’d make a little joke to myself to spin that instance down and bring up another one and try again anticipating better behavior.

You’re thinking about the ways in which that’s still broken, but this is my story of self-discovery, so either skip ahead or quit reading.

Anyhow, that was my little hack that made difficult conversations with virtual people in my head go better.

I didn’t get the second piece until I went off to a sample training for a program called Conscious Leadership.

If I had to describe Conscious Leadership in a nutshell, I’d say that it takes a lot of thinking around mindfulness and tries to make it work in a business context. If you’re at home with Zen Buddhism, you’d hear some things that are familiar to you.

I could go on and one about Conscious Leadership. I’ve given copies of the book The 15 Commitments of Conscious Leadership to managers who work for me and people I care about. I use its language in my daily living, and I measure myself against its standards.

The way it helped me in this specific instance was that it reminded me of how easily we can get pulled into the stories we create around things, and how we should always strive to take a story we’re telling ourselves and “explore the opposite.” Expressed as a commitment to sustainable behavior, the Conscious Leadership people put it like this:

> I commit to seeing that the opposite of my story is as true as or truer than my original story. I recognize that I interpret the world around me and give my stories meaning.

I realized the ways in which my virtual instances were just stories I was telling myself. I’d made a certain peace with the worst aspects of them by taking care to remind myself of the times when I wasn’t well rested and was making the stories worse, but I was still just making up stories and arguing with them.

The thing is, as an introverted internal processor, it was pretty easy for me to slip into those conversations with virtual people in the process of just trying to figure out how to say what I wanted to say when I felt a conversation was particularly important.

I had to pick up a new habit, which is really what this whole post is about.

A Walk on the Beach

Untitled

So, I went camping. On the last morning we were at the park I woke up pretty early and took my camera and went for a beach walk. I set out thinking I’d go down to the jetty, a few miles down the beach.

I hadn’t meant to spend much time thinking about things and mainly hoped to just take pictures, but there wasn’t a ton to shoot and I knew I was going to have to talk about something difficult, so I lapsed into thinking about that conversation, and that meant I started arguing with a virtual person. Because I was thinking about a difficult conversation, it got increasingly negative and fraught.

I caught myself doing it and got really frustrated, because I know I’m not supposed to do that. So I’d stop for a few minutes and think about other things, but then I’d fall back into it.

Then I remembered how I coached myself about being under-rested, and took a page from that practice.

As I made my way down the beach, each time I’d get into an argument with that virtual person, rather than getting frustrated and beating myself up, I’d just stop and say out loud “this isn’t happening. That didn’t happen. You didn’t say those things.”

Conscious Leadership advocates moving your body when you’re feeling something strong and need to process it, or see it differently, so I’d shake myself a little, too.

Reader, it felt pretty good.

By the time I’d made it to the jetty, miles down the beach, I was smiling to myself because I knew what I needed to say. I knew it miles back down the beach. I’d just fallen into my old habit of wanting to think it all the way through, to know just what to say to each possible response or argument.

Untitled

And of course the conversation went fine, anyhow. They usually do. I pay attention to people and how they’re feeling, and I’m careful in the initial framing and get things off on the right foot, so just taking the care at the onset is usually enough. When it’s not, well … I stay calm in the pocket, too.

Since then, though, I’ve been using that practice a lot, and it is incredibly helpful. I’m an introvert! I think about what I want to say to people before I say it! I’ve got a life-long habit of spinning up virtual people and arguing with them, which is to say a life-long habit of telling stories to myself that aren’t true. It’s tough to break, and I haven’t broken it. But I’ve added a little thing to the loop: When I catch myself doing it, I say to myself, “that didn’t happen” and it has made me feel lighter and happier each time. I think to myself “I don’t really know what they might say, but they didn’t say that, and they could say something completely different. You’ll just have to find out.”

On Progress Toward 365^H4 Pictures

I take joy in photography. Some time late last year I found myself down on the waterfront on a rainy night trying to get a few good pictures of downtown Portland from across the river, and I had this to say about the experience:

It was pouring on the way home tonight, but I’d brought along a tabletop tripod and loved the way the tops of the skyline were shrouded in mist, so I got out the camera and played around for a while despite the problems that little tripod and all the rain were causing me.

I’m so happy I get to live in such a beautiful place.

And I love the inner quiet that follows when I open my eyes and heart up to what’s around me. I’ve only felt that when writing, or when sitting with another person and setting aside everything but what they’re saying and feeling. Now I’m finding it in moments like this, when I’m out with my camera trying to pull off the Magic Eye trick of seeing nothing to see something. It feels like the thing is to practice enough to marry the quality of the craft to the quality of the inner state.

I haven’t felt happiness the way I felt it out in the rain tonight for a long time.

So at the beginning of the year I decided to do a thing I forget to do every other year, which is commit to taking at least one picture a day for the next year.

Sadly, sickness in early March caused me to forget a day. There’s a picture of me looking sort of miserable and wrapped in a bathrobe, then a woozy picture of a bottle of Jack Daniels in a darkened kitchen. In between? Sickness. So I’m not going to have a picture for every single day of this year.

Another thing happened, too, which is that life sort of got bumpy and didn’t straighten out for a little while. It made picture taking hard, because EVERYTHING was hard. I managed to get through the period sticking to my commitment, but one day’s picture was literally a hole in the ground with a chunk of concrete sticking out of it, because a picture of a hole was about all I could manage before getting home and going to bed.

Somedays all you can shoot is a hole

There are also some days with self portraits because I’d forget to take a picture until I was home, then I’d be unwilling to go out and look for stuff, so I’d drag myself into the garage where I have my little studio with flash and backdrop and take a picture of myself, because, you know, fuck it: Nothing says defeat like a half-assed selfie shot 10 minutes before bedtime.

DSCF0726.jpg

At some point during this spell I was so unhappy with what I was taking that I considered quitting, but I thought about that a bit and realized a few things:

  • Even on my worst days, I’m still pointing the camera at a thing and thinking about what I’m doing, even if it’s just for a split second.
  • Even on days where I hate what I shot, I’ve probably been spending at least part of the day with my photographer’s eyes on.
  • I’ll be happier if I don’t quit.
  • This project has made me learn a lot about my camera. I’m way more proficient with it than I was a few months ago.
  • Looking back over the year so far, there’s a certain eclecticism that even the bad days reinforce. It’s not so bad as a whole.

Then I thought a bit about what was making the whole thing less pleasant to do and realized I’ve built up a pretty dense workflow that involves Lightroom automation and dealing with RAW files, and it’s not very fun. It’s also an invitation to rathole on salvaging images.

So, because I have a shooting engagement coming up at the end of next month and need a second camera, I picked up a new one that’s better suited to walking around, got it a small bag, and played around with a few presets meant to make it easier for me to quickly capture shots in a few styles but output in JPEG, and that has made a huge difference. Files download more quickly, there’s less goofing around to do because JPEGs are less forgiving of manipulation, and I’m being punished for my mistakes with a less flexible image format, which is GOOD because I wanted to do this to learn, and fiddling around with RAW images doesn’t incentivize learning behind the lens. I guess you could say it encourages more intentionality up front.

Anyhow, I’ll be sticking with it for now, but looking forward to summer camping and travel to help me shake up my subjects and break me out of a few ruts.

Here’s the project so far:

2017:365

Supporting an Open Door Culture by Listening

The soul of our politics is the commitment to ending domination.  — bell hooks

Next week I’m going to give a talk on how men can support women in the tech industry. I was uncomfortable with the idea when first approached: My thoughts turned to images of me clicking through a deck and reading off bullets of things you shouldn’t do that I probably did myself at some point before someone undertook the effort required to get me to stop. I hated the idea of standing in front of a room and implying there’s something I get that maybe the men I’d be speaking to don’t. 

After a brief back and forth with one of the organizers, though, I proposed building a talk around a project I undertook a few years back to author guides for a company open door policy. She was supportive of the idea, and that made me more comfortable: Even though I had designed and led the project, it was never “mine:” It happened at all because our CEO had been listening to women who were telling him what they needed to feel more safe and heard at work, and I was just there to help make it happen. 

I suppose this entry is to help me firm up some of my thoughts before I present, but it’s also to provide a link to a repo that has the output of that project that’s consumable by anybody who’s interested in having a supplement to whatever fossil of an open door policy their company has tossed up on the intranet. I wanted to be able to share the work with the folks at my talk, so I scrubbed the guides down and dropped them on GitHub (along with a small todo list of things that could make them better in the project issues). I’ll link to it a bit later, too, but here it is right now in case you’re curious and don’t care about anything else I’ve got to say on the matter:

https://github.com/pdxmph/open_door_guides

The initial brief for these things was to create a guide that made it easier to understand how to use our open door policy at all. I was asked to work with HR to deliver something that we could position within the open door policy itself, perhaps as a diagram or flowchart. I met with our VP of HR and one of our HR business partners, and we tried to whiteboard a basic “open door process flow.”

As an aside, that initial diagramming session was one of the best things that’s ever happened to me. Up until then I had a pretty dim view of HR. I’d worked in places where the HR org wasn’t just “there to serve the company’s interests,” but had become a sort of political center in its own right, controlling the path to promotion by gate-keeping mandatory training or obscuring promotion standards and practices. I’d never spent a lot of time thinking about the nuances of the HR discipline. 

By the time I was done working with that VP and business partner, I had a new appreciation for the complexities HR people deal with (and a huge amount of admiration for those two in particular, because they had an architect’s perspective on some of the problems we were discussing but were as engaged with making the architecture amenable to people as I was).   

I’d also decided the idea of just making a diagram or flow chart was a terrible idea: It was too rife with edge cases, and no amount of detail at the “step 1, step 2, step 3” level suggested an awareness of how it actually feels to have a problem you can’t fix for yourself that you have to go get help with. I took that idea away, digested it, talked to a few women around the company, and sent a note to the CEO:

… the issue is less “what are the steps?” and more “how do we get everybody to an equal place in terms of their confidence that when they use the steps they’ll get a good outcome?” Your public statements about non-retaliation a few months back are important, but there are things beyond retaliation that matter, too, and these came out in interviews:
  • Will my manager place the burden on me to fix the problem once they hear me out?
  • Is my manager attuned to the idea of discriminatory behavior that flies below the radar of outright bigotry? (microaggressions, which are not universally understood to be “real”)
  • Is my manager attuned to the idea that bringing my concerns to them sometimes feels like I might be marking myself as a troublemaker/”difficult,” if not to them then others. (confidentiality as a cardinal component of the process)
  • How will I know what’s going on with my issue once I bring it to someone?
  • How can I know I’m not going to inadvertently bring a hammer down on someone?
That’s 20 percent “process” and 80 percent human factors.

The next few months involved some document design, some writing, and a lot of listening. One of the people who worked for me had the misfortune of experiencing one of my people management failures, and I was incredibly lucky that we’d reestablished enough trust that she thought it was worth her time to explain to me how I’d fucked up. 

Another woman told me a deeply personal story about what it was like to be condescended and talked down to by a male colleague. We spent an hour talking about her experiences, and even then I was catching myself drifting toward thoughts about the ways in which her patronizing male colleague probably didn’t mean any harm, or surely hadn’t acted that poorly. We ended the meeting and went back to our desks. A few minutes later, I saw her at a nearby whiteboard with that colleague, so I stayed at my desk and listened to the interaction from afar, and it worse than she described, which caused me to realize that even in a relatively safe context she was still protecting someone who had treated her terribly. I’m glad I was able to engage in some empirical verification; I’m sorry I felt the need to. 

As the work progressed, I invited more and more people  into the documents to help shape them. At one point I had three copies of each document so stronger voices wouldn’t drown out quieter ones in the comments. When it was clear that the very idea of “microaggressions” was controversial, I asked women to help me list some examples: The documents don’t have that word in them (even if they probably should), but they articulate the idea and provide examples from womens’ experience. 

After a few months of work, either writing, listening, or reconciling the viewpoints we’d brought into the project, the VP of HR signed off and we shipped them to the CEO. He said he liked them, and he named four women he wanted me to meet with to get final approval. I was a little chagrined because I’d already talked to each person on his list as part of the work, but I invited them all to meet and discuss the finished docs, anyhow. They turned up a few more small things and we fixed them on the spot, which taught me it never hurts to listen for just a bit longer. 

We ended up with two guides, meant to be used as a supplement to a generic open door policy of the sort you can just go download from the web: 

The first guide is for employees. It’s written to strongly suggest our values around the process of escalation. The language is about “expectations,” and you could think of it as a bill of rights that compels certain behaviors from managers. The language is meant to be supportive and affirming. It’s made clear that if those expectations aren’t met,  the interaction is in trouble and the employee can bail on it, escalating to the next level.

The second guide is for managers. Structurally, it closely parallels the employee guide. The language is less on the “supportive and affirming” end of the spectrum than it is quite imperative. 

The employee guide references the manager guide a few times, not to avoid repetition and certainly not as a requirement to understand the employee guide, but to accentuate things we’re telling employees: “We told you to expect this behavior, and here is where we’re telling managers, in imperative language, to do exactly what we told you to expect. If you observe your manager not doing these things, you can see right there in the manual we wrote just for them that they’re supposed to be doing those things.”

Since releasing them just over two years ago, HR has made them part of the management training program, and our HR business partners make sure new employees hear about them when onboarding. When I’m involved in a conversation with an employee about something sensitive, I will often share the link after telling them about their rights to confidentiality, and I’ll make clear to them that the bedrock values of those docs include consent and confidentiality. 

I don’t have any way of measuring their success. Personally, I find them comforting: Even though I helped write them, I still find myself going to them to remind myself of my obligations to the people who work for me, and people have told me that they’ve been glad to read them. 

And they’re also a valuable reminder to me of a few things: 

First,  the piece of work I’m most proud of during my time at Puppet wasn’t really my work at all: It was the result of deciding I didn’t know everything I needed to know, that I didn’t have all the answers, and that my reputation as someone who understood womens’ concerns and was a good manager in that regard wasn’t something that I had—something that was part of my nature—but rather was the result of knowing to listen, and accepting the idea that “I know that I know nothing.” 

Second, that the thing I’m most proud of as a manager came not from “taking charge” and leading, but from deciding the best use of my authority was to assert my right to be guided by others who hadn’t been given that authority. 

Anyhow, if you see some values in these guides, they’re on GitHub. The README has a few suggestions on how to use them that preclude simply downloading them and tossing them up. Instead, I’d suggest you fork them and make them your own, preferably after talking to people in your organization and learning what would make such a guide more useful to them.  

Script Sunday: Fixing a Self-Inflicted Pinboard Nuisance

I really like the recent-ish share sheets in iOS, but I learned to my dismay that sometimes you’re not really sure what you’re passing from one app to another. After a week of using the RSS reader Unread in combination with the Pinboard app Pinner to save bookmarks, I learned that Unread was sending Pinner the domains of the things I was saving as the description, and not the title. So instead of a list of bookmarks that looked like this:

  • Reading in the dark
  • Archive articles from various sources to org file via IFTTT and Dropbox : orgmode
  • 9 Tips For Black And White Street Photography Post Production
  • How to Culture Jam a Populist in Four Easy Steps | Caracas Chronicles
  • E unibus pluram: television and U.S. fiction. – Free Online Library
  • The first days inside Trump’s White House: Fury, tumult and a reboot – The Washington Post

I ended up with a list of bookmarks that looked like this:

  • metafilter.com
  • reddit.com
  • lightstalking.com
  • caracaschronicles.com
  • thefreelibrary.com
  • washingtonpost.com

To be clear, this is a self-created problem brought about by my habit of saving anything that looks vaguely interesting and refusing to use the version of the Pinner share sheet that would have let me review title and tags before saving them. I’m okay with this, because the alternative is trying to peck in a description on my iPad while I’m hanging on to a strap on the Max.

Anyhow, there’s a gem for Pinboard that lets you run through your bookmarks and do stuff with them. Well … it lets you run through your bookmarks and learn stuff about them, and allows you to use the Pinboard API action to create a “new” bookmark. If you re-save a URL you had previously bookmarked, it’ll update the original item with anything that changed.

There’s probably also a way to programmatically determine whether a given string is a valid domain, but I went cheap and just check to see if the end of the description string is something like:

  • .ab
  • .abc
  • .abcd
  • .abcde

(plus a few other possibilities I’m willing to live with, since I’ve spent more time describing this than I did writing it)

Anyhow, the whole thing is short, simple, and dumb as a rock:

I’ve got a version sitting in my /bin directory that talks to the Alexa Web Information Service and extracts the categories for a given URL, but there’s some interesting taxonomical noise I need to sort through before I’ll actually use it in anger: Categories in Alexa seem to be a mix of topics (e.g. “photography”) and formats (e.g. “blog”). The former would be a great thing to programmatically tag a hastily saved bookmark with, the latter wouldn’t.

Probably also worth noting that Unread isn’t so much better than Reeder that it was worth having to run this thing every so often, so I switched back to Reeder, which does what I’d expect and passes a proper title to begin with.

Let’s Talk in 2017

tl;dr: I’m taking a little break from social media. I hate the thought of missing a direct tweet or private message from you on whatever platform we have accounts on together, so I’ve put some contact details at the bottom.

Otherwise:

I’ve been taking a lot of pictures lately. Probably more than I ever have.

I’ve been taking pictures for a long time: My first job after college involved photography to go with my reporting, so I learned how to get decent results with a film camera, and I learned some darkroom work. I’ve made it a point to have a camera with a few more features or settings than I know what to do with since Ben was born, and I’ve hated going on a trip or vacation without having a camera along for about that long.

A few years back I set aside my mid-consumer range dSLR for a premium point-and-shoot rangefinder. I wasn’t sure how I’d deal with having a fixed, relatively wide lens but it turned out okay.

This year I decided to upgrade. I got a mirrorless, interchangeable lens camera out at the high end relative to anything else I’ve ever bought. I love it. It’s as close to my ideal camera as anything I know of, and I’ve enjoyed shooting with it more than anything I’ve had since my Canon PowerShot G5. When I see something in the light I can make the camera see it, too. When I just want to grab it and go to take snapshots, it lets me do that. When I choose to be patient and take along a tripod and trigger, it rewards my patience. It’s a few steps ahead of me, which has pushed me to learn more. I’m taking it with me almost everywhere. Photography has become what I want to do when I have any time to do anything, and it’s something I want to get better at.

Something I’ve been thinking about the past few weeks, though, is that I haven’t been giving myself a ton of space to form my own thoughts about my work.

A friend recently observed that photography is great for me because there’s an emotive/artistic side and there’s a deeply technical side. It’s very easy for me to get pulled into the technical side, whether it’s optimizing the gear I use, figuring out how to automate or speed up a darkroom workflow, or figuring out how to best distribute an image. I love the combination of an iPad, SD card reader, Lightroom Mobile, and AirDrop. It’s really easy to capture, edit, and share an image from the Max or over lunch.

The other side—the artistic one—is harder to enumerate. I don’t understand it very well yet, and I need to learn and practice a lot more. I’ve started looking for teachers and people who are willing to let me practice the kinds of photography that involve humans with them.

I’ve also started thinking a lot more about what I’m trying to do outside of “capture an image competently,” and what it means when I take a picture, or when a picture survives the gauntlet it ran from previsualization to capture to “flagged as a keeper” to edit to printing/sharing/etc.

And I’ve also been asking myself about what I’m after at the print/share/etc. stage of the process.

So there’s one set of thoughts. Now for another:

My diary app recently started kicking up “on this day” entries from a few years back, when I went on a social media sabbatical. I was pretty unhappy with the state of my social brain. Everything went from being a vague impression still sloshing around in the limbic system to a tweet or a post somewhere, but with a layer of self-editing that really bothered me because it felt reflexive and unconsidered. I’d stop when I’d catch myself doing it and ask myself why I was doing it, and I never liked the answers. So I deleted all the social apps on my phone, deactivated my accounts, and turned off all the mail notifications the more obnoxious services will still send you when they can tell you’re not “engaged.”

I’m not going to try to sell you on doing that. It wasn’t like I experienced some sort of creative renaissance. I did just stop sharing everything for a while, and that meant I didn’t have to waste time wondering why I was sharing the way I did, or wondering what sort of reaction something I’d shared had elicited. I felt like I had a certain amount of mental space I hadn’t had in a while.

After a while, I drifted back in, and began the cycle all over. This past year has had its own set of challenges, and I’ve started to feel a growing disconnect between the person I am and the person I’m sort of performing on social media. I once read that younger folks usually take a break in the form of walking away from their accounts, never to return. They just establish a new account and build a new set of friends/connections, leaving behind their old identity. I don’t like the thought of that because I hate the thought of being read as having unfriended/unfollowed someone when I really just want to get a break from all of it, but I think I need another pause, so I’m going to take one. Here’s how to reach me:

  • Mail: mph at puddingbowl.org
  • Skype: michael_hall
  • Google Hangouts/Talk/Whatever-they-call-it: pdxmph
  • Signal: Please drop a mail and we can exchange info.

Management Training

If I speak in the languages of humans and angels but have no love, I have become a reverberating gong or a clashing cymbal. — 1 COR 13:1

There’s a certain amount of pressure on the professional at some point in their career to create a Medium account and engage in some self-marketing. I found an old draft of a scuppered attempt at that while going through the digital shoebox that is my Evernote account, and realized that’s not going to happen. We have one Rands in Repose and that is enough.

However:

  • Today I learned a piece of good news about someone who once worked for me
  • I recently took some time off and got to talk about work to people who don’t see me at work
  • I shipped a book of koans off to a friend and selected a few that meant something to me, including one that touches on this topic

So, I’m going to share the anecdote I had in Evernote that was meant to be the core of a Mediumesque post on my tenure as a manager and instead use it for this much more distilled set of ideas I want to get off my plate instead of turning them into some awful “Stirling’s Gold” series:

I was out in the field at Fort Bragg on a week-long exercise. The chow truck came around to our site and everybody lined up. One of the soldiers in my little operations group ran up to the front of the line, filled a plate, and ran it back to the First Sergeant, who was sitting in front of his tent. He took the plate, set it inside his tent, and walked over to me:

“I need to talk to you, Hall.”

“Sure, Top.”

“Don’t ever let that happen again.”

“What’s that?”

“Fixing me a plate. Never, ever let one of your soldiers fix me a plate again.”

“Top, Private Goyer was just …”

“Don’t do it.”

And somehow I got it. I’m embarrassed that I got to the age of 27 before I learned that lesson.

Funny to write it out, but I think First Sergeant Rhodes and Shanley Kane would get each other. And speaking of her, go buy her book, even if it’s just to read “Values Towards Ethical and Radical Management.” She’s got way more useful stuff to say than I was ever going to waste on Medium.

Alien Architectures

I thought I’d give an ASUS Chromebook Flip a shot as a low-cost, novel alternative to an iPad Pro with a keyboard. After playing around with a Dell Chromebook 11 last year, I got to know the world of dual-booting Chromebooks.

The Flip itself is pretty neat. It feels sturdy (aluminum body), has a decent enough display for what it is (not Retina, a notch better than the Dell’s, touch-sensitive), and it can convert into a tablet by flipping the screen back. Load up the Beta channel of ChromeOS, and it can run Android apps natively alongside ChromeOS apps, which is sort of cool.

My thought was, “tiny, rugged, cheap writing and coding device” vs. the iPad Pro (sort of large, expensive, and you can write on it but coding is tough).

Sadly, the Flip uses an ARM CPU, which immediately makes things a bit tougher if you’re going to try to put Linux on it. For instance, it was no problem to get Trusty installed via Crouton, but the ARM architecture means some things aren’t readily available (e.g. a Dropbox client). The only distro I could find with docs for dual-booting was Arch Linux.

On the ChromeOS side, there was some stuff to like about it:

The Amazon Cloud Reader app worked well when it was in tablet mode. The Android app support made it possible to play Hearthstone. I was curious how fast it would run and it wasn’t bad: More smoothly than on a first-gen Retina iPad mini. It was nice for browsing around news sites in tablet form.

On the negative side, the touch support for ChromeOS feels a little off. Google Inbox isn’t great in tablet mode (which feels like the natural mode for it), and if you’ve ever tried to use Gmail or Google Calendar proper on an iPad, you now how bad they are in a touch interface. I also hated the on-screen keyboard. I haven’t taken the time to figure out what the difference is between it and the iOS on-screen keyboard, but my accuracy on it was terrible, even when typing slowly.

So, I think I’m going to wipe it and send it back (or pass it along to someone who has appropriate expectations for this kind of thing). It was interesting to fiddle with, and it helped me think about what I’d really like in a portable computing device. iPads are still a hair too locked down for my tastes. The new Yoga Book sounds sort of amazing and strange and closer to what I’d like.

I also wouldn’t mind someone finally coming out with an iOS terminal app that can support mosh, which allows a level of persistence in an ssh connection that makes whether or not you’re locally running your Ruby interpreter or Emacs instance less material. The last iOS ssh client to provide that was iSSH, but it’s no longer under development.

OmniFocus2Evernote

I like keeping track of tasks in OmniFocus (for now) and I like to keep notes in Evernote (most of the time). I don’t like keeping notes in OmniFocus outside of a few quick jots to add context to a task.

This afternoon I was setting up a series of tasks that will require some research, links to assorted pages, links to notes within Evernote, and some other stuff that further busted my willingness to keep notes in OmniFocus, so I came up with this script.

What It Does

It takes your currently selected OmniFocus task or project (henceforth referred to as “the item”) and makes a new note in Evernote with it. That note has a few characteristics that are useful:

First, the source URL of the new Evernote note is the application URL link of the item. It looks like this in Evernote:

Evernote Premium

That means if you’re in the Evernote note and need to find your way back to the OmniFocus item, you can just click that link and away you go. You can find that link in Evernote for mobile by tapping the note’s info button.

Second, it sets an Evernote reminder that matches the due date of the item. If you use reminders (doesn’t everybody?) then you will have a tidy list of notes that are associated with (and linked to) your OmniFocus items readily available.

Third, it prepends the new Evernote note’s link to the OmniFocus item’s note, so that when you’re in OmniFocus, you can easily find your way back to the Evernote note.

Making It Easier to Use

OmniFocus will let you save scripts in its script folder then set them up as buttons in its toolbar:

  1. Make sure you have the directory ~/Library/Application\ Scripts/com.omnigroup.OmniFocus2
  2. Save the script below into that directory.
  3. Open OmniFocus
  4. Right-click on the toolbar and select “Customize Toolbar …”
  5. Look for a black-and-white script icon with the name of your script.
  6. Drag that icon into the toolbar.

You can make sure it’s working by selecting a task or project and clicking the icon. In this case, “working” means:

  • A new note in Evernote is created with:
    • a title matching that of the OmniFocus item
    • a link back to the OmniFocus item
    • a reminder set to the due date of the OmniFocus item
  • A link to the Evernote note is appended to the top of the OmniFocus item’s note.

Bugs:

  • It’ll bomb if you try to do this with an OmniFocus context.
  • It is stupid and doesn’t care if you’ve already done this with the existing project or task: You’ll just get more links added to the item’s note, and more Evernote notes will be created.

Adventures In iOS Automation: Middleman Blogging Edition

My Things site is built on Middleman, a static site generator that's pretty much the Jekyll modern people can love.

I've tried static site generators a few times in the past, and the thing that's always stopped me from adopting them full-time for my regular blog (this one) is the overhead of maintaining something built around Git on a bunch of devices when most of my writing is spontaneous and squeezed in around the edges of other stuff. I was willing to do it with Things because it's a slower site, and the bulk of the content is developed over days or weeks.

When I got the iPad Pro I'm typing this entry on, it made me start thinking about the things I'd like to be able to do given a closer-to-real keyboard and enough screen real estate to keep my brain from freezing up when starting at everything through a 10" window. “Create and post content for a website managed by a static site generator kept in a Git repository” seemed like a pretty good test case.

Attempt 1: Paleo

Reader, my formative Internet experiences all happened on a Lear-Siegler ADM-3A+ talking to an Ultrix machine over a 300 baud modem. Consequently, when I'm confronted with a “move text from one place to another and make things happen” problem, the first place I go to is “open up a dumb terminal to some distant end where all the brains and guts are, and go from there.”

To that end, my first cut at the “maintain a version-controlled static site from an iPad Pro” problem was to find a decent terminal app and see what I could do with it. I went with Panic's Prompt, which is simple and pleasant.

I went through the hassle of setting up rbenv on shared hosting, added a few conditionals to my heretofore-mac-only .emacs.d, and applied myself to creating a blog entry. The stuff in the Middleman workflow that involves running shell commands worked fine, which solves the most potentially labor intensive part of making a new blog entry, which is creating a file in the right place with the right starting content and a decent slug.

Sadly, Prompt and Emacs don't exactly get along. Most frustrating is that the iPad Pro Smart Keyboard doesn't even have an escape key, and Prompt doesn't seem to have any provisions for remapping opt or cmd to work as a meta key. Instead, you can opt to have it keep a soft keyboard up on the bottom of the screen and reach up to tap an ESC key. This is as awful as it sounds.

Attempt 2: Whatever the Kids Are Doing These Days

So, the way my brain works, I usually end up deciding if something that worked well for me 25 years ago isn't working now, it's probably time to swing to the other extreme. That led me to Workflow, which is probably the closest iOS is going to get to Automator any time soon.

Workflow is pretty cool: You can drag and drop actions from a variety of iOS apps and chain together workflows. It can assign and modify variables, munge text, pass text off to other things to be munged some more, and create little Workflow applets you can launch from your home screen.

So, I set out to solve the first problem of creating a Middleman blog entry, which was the part where you set a title and then pass it through a few actions to create a decent slug. In other words, you want to start from a title of “This Is My Fantastic Blog Entry!” and end with a permalink that looks more like: 2016-04-23-this-is-my-fantastic-blog-entry.html.markdown.

Given the ability to write a script, the things you need to do to get there are pretty simple :

  • Grab the title
  • Downcase it.
  • Strip out all the non-word characters and replace them with dashes.
  • Make sure there are never multiple consecutive dashes.
  • Make sure there's not a trailing dash (because it's ugly).
  • Tack on the date to the front.
  • Tack on “.html.markdown” to the end.

There are things you can toss in there: For instance, since you know you need a particular date format for the “date” field of the entry, you can stash today's date in a variable for reuse. Same with the pre-munged title.

Doing that on Workflow was easy enough, but laborious: Workflow itself doesn't understand regular expressions, so it has to go talk to a third-party app that does. Since that app is a single-tasking marvel, it can't pass an input string through several transformations then pass it back: It has to receive the text, do the first transformation and pass it back to Workflow, which then decides what to do next and passes it back. Workflow and that outside app do this little dance four times. Because all of this is being done with a fascinating grassroots-driven system of callback URLs the assorted apps all understand, you sit there watching Workflow switch back and forth between apps. It can be a little dizzying.

This is going to sound weird, but that rapid flipping around between apps made me sort of hate what I cobbled together, which stopped me from going to the next logical step, which was figuring out how to hand the thing my workflow stitched together back to something that could try to get it into a Git repo.

The Editorial Way

Since I'm a compulsive iOS text editor experimenter, I had a copy of Editorial sitting around. Editorial understands Markdown, and it has some built in automation you can use to create text filters and talk to other apps. While I have no doubt that Workflow is amazing for a number of things, starting from your text editor and handing off to something else seems more elegant than starting from a different app, scurrying around between all the other apps, and then handing off to something else.

With Editorial, you just stack up actions in workflows using a drag-n-drop visual interface. It can do regular expressions, transformations, ask for text, etc. There's a very nice custom UI builder that I want to try out, which would allow me to pop up a form with fields for the title and tags, or logic for whether a file is ready to be published or just a draft. You can bind a given workflow to a hotkey, meaning it's possible to just type up an entry in (syntax-highlighted) Markdown, hit a hotkey, and constitute a proper Middleman blog entry with slug that can be handed off to a receiving app.

A little Googling yielded a Jekyll-based workflow someone had already put together that got me most of the way to where I wanted to be. It didn't do real slugs, and its front matter was a little different, but it was a simple matter to modify and produce my own

Getting It to GitHub

The other half of that workflow involved getting the newly created entry over to my Middleman site. For that, it uses an iOS Git client called Working Copy. Working Copy is free if all you want to do is browse your repos, and it costs $14.99 if you want to be able to push to them. Like Workflow, it's aware of callback URLs, so it's possible to push things into it from other apps.

Once the file is in Working Copy, you can just commit it and push it. Done.

Building the Site

Well, not quite. I wanted to automate the last mile, as well: Not only did I want to get the content into the repo, but I wanted to be able to update a local copy on my shared hosting and then run a site build.

I got a little lazy here. There's a simple PHP script you can ping with a GitHub webhook that will do the work of updating a local copy. It's not a perfect fit, but it does what I need. I stuck it off in a corner of one of my live sites. A cron job handles running a Middleman build every few minutes. Since Middleman is pretty smart about looking for changed files, it's not as expensive as a comparable Jekyll build.

Links

Anyhow, lots of things thrown out. If you're a static site blogger looking to use an iPad or iPad Pro to write entries or maintain your Git-based site, here's the basic workflow:

Please be considerate of my neighbors

So, here’s a scenario to try on:

You’ve just woken up in your tent down on the Springwater Trail.

You climbed into a sleeping bag the night before. The temperature was headed down to the low 40s. You’re sleeping in a tent among dozens of others in a similar situation. The small ad hoc community around you has all sorts, including  people who seem angry all the time, and young men who are dressed much more nicely than everyone around them. They don’t spend the night: They just make a few deals and then head home for the evening.  If you’re a woman, there’s a better than even chance you were assaulted within 72 hours of beginning your life outdoors. Since it’s April in Portland, it’s muddy and wet. You might have gone to sleep to the sounds of people fighting or yelling at each other. You probably woke up because it’s really goddamn cold, or because your children woke up with the light, the way little kids do. 

So, about the time you’re unzipping your tent, grateful that nothing happened to it or you or maybe your family the night before, a pair of people on expensive bicycles, all kitted out, ride by. They look around at all the tents, and one looks to the other and says “Jesus Christ, this is fucking disgusting.  Who the fuck are these people?”

Well, friend, they’re my neighbors. I ride by them every morning on my way to work, and again on my way home each evening. I’ve got a pretty simple protocol for making my way through the little community that has sprung up on the Springwater near 82nd. I’ll list some of its key elements:

  • I slow down. There are a lot of people down there, including families with small children. Nowhere I need to be is more important than any of those people. 
  • I don’t gawk or comment if I’m with someone. I wouldn’t want to be gawked at if I had to live in a tent along a trail. I wouldn’t want someone to loudly wonder “who the fuck” I was, or comment on my “fucking shithole” accomodations. 
  • I say “good morning” or “good afternoon” to the people I do make eye contact with.  That’s my practice with just about everyone I pass on the trail. 

I’d really like to believe that the “Jesus Christs” and “who the fuck are these peoples” are coming from a sense of deep moral outrage that we live in a country where families with little children, the working poor or anyone else for that matter has to live in a tent in the mud along a trail on the edge of town. Because I read nextdoor.com and the Facebook groups for my neighborhood, I know that’s not always the case. At least sometimes they’re also coming from a place of deep revulsion with the people in those circumstances themselves, and from a deep desire to erase them from awareness … to push them out of view with no regard for where that might be or what it might mean for them. It comes from a place of rationalizing the existence of that kind of misery that comes from ones own precarity (though maybe that’s not so true of the people on the nice bikes out for a pre-work ride). 

Wherever it’s coming from, I’d really appreciate it if you’d keep it to yourself next time. Those people are my neighbors and I want you to be kind to them. 

© Michael Hall, licensed under a Creative Commons Attribution-ShareAlike 3.0 United States license.