Kara McNair

a work in progress

panorama of Vancouver/English Bay in summer

Site move – lost media

Hello all! I moved my site to new hosting and didn’t know that the export wouldn’t bring the media with it. So there are a lot of broken link images. I’ll working on restoring them quickly, but your patience is appreciated (especially where screenshots are involved).

Have a great day!

Is it obvious?

I was in San Francisco yesterday, interviewing for a job with my ideal company. In the first interview, which was a more technically focused one, I noticed that I often prefaced what I was saying with “well, obviously” or just “obviously”. When I noticed that, I commented on it out loud: “hunh, I’m not sure why I’m saying that – I don’t know what’s obvious to other people – it’s all based on individual experience and familiarity with things.”

The fact that I thought “why am I saying that” led me to re-read Nick’s post “Why am I saying this?” and to really reflect on what the word ‘obviously’ means when I say it and what it might mean to others hearing it. When I was saying it, I wasn’t really meaning that what came next was necessarily obvious to anyone – myself included. It’s a verbal tic that I developed at some point along the way, and probably an inherently defensive/self-protective one. I don’t feel like delving into all the subtle biases and one-upmanship that often happens in tech, and how people who don’t look like what everyone thinks of when they think of someone in tech learn coping habits, but I suspect that’s where my ‘obviously’ comes from.

So let’s walk through what it means to me and what it might mean to others.

What is going through my head when I say ‘obviously’ at the beginning of a sentence?

  • “Oh, shoot, I wasn’t thinking – I know the answer but still needed a cue to pick up on it. Dammit, they probably think I’m an idiot now!”
  • “This feels like a trick question…” [the answer to this question can’t possibly be the obvious one (to me), so saying ‘obviously’ is a way to prompt them to provide more hints/details]
  • “…” (i.e. nothing at all) – the word can be just a linguistic space-filler or habit. I have a few of those & I’m trying to identify and remove them (‘definitely’ is definitely top of that list)

What goes through my head when I hear ‘obviously’ at the beginning of a sentence? (putting myself in the listener’s place)

  • If I didn’t know what was being said: “Oh shit, I’m the only person here who didn’t already know that. I should have known that. I’m horribly under qualified to be here!” [Depending on how they said it, I might also think they were a bit of a jerk who wasn’t supportive of people with different experience and knowledge.]
  • If I did know: That depends on how they said it. If it was neutral/verbal tic, I might not even notice the word. That’s the best case. In the worst case, I’d probably think they were a bit of a jerk who wasn’t supportive of people with different experience and knowledge.

So where’s the upside in using ‘obviously’ word to introduce a statement? The only value seems to be protecting my own identity/ego. And since I’m working on not doing things to protect my identity/ego because that protection leads to lack of real communication and connection between people, any upside to me is heavily outweighed by the potential downside to others. Allowing myself to be vulnerable, and to be wrong, and to be seen being wrong is an important growth goal for me.

In fact, there seem to be a lot more obnoxious ways to use the word ‘obviously’ than helpful ones and I’m going to work on purging it from my spoken usage *. Even if something does seem obvious to me, what value in stating that? How does that help anyone with anything?

* I was trying to think of genuinely inoffensive ways to use the word and the best example I could come up with is play/stage direction notes and narrative:

  • “Kara was obviously moved by the story she heard”
  • “Michel was obviously upset with the situation”

But for first-person usage? I’m not sure it’s ever a good idea. [Maybe in cases where defensiveness is actually warranted (Barty Crouch has just accused you, Harry Potter, of casting the Dark Mark, I guess?)]

 

 

Going on record with my Jon Snow theory

Before we get to the next season of Game of Thrones, I want to get my personal theory about what’s going on with Jon Snow published so I can point back at it and gloat later.

Much as I adore Joanna Robinson and her crew at Cast of Kings and her other crew at Storm of Spoilers, I have a fundamental difference of opinion from them regarding Jon Snow.

They all seem very convinced that what’s going to happen in Season 6 is that Melisandre will resurrect Jon Snow from his vicious murder by Ollie (a la Thoros of Myr resurrecting Beric Dondarrion). See, me, I don’t buy it. Not because I think Jon’s gonna stay dead, but because I don’t think he ever died in the first place.

GRRM’s text left it hanging, the same way he did when Arya was blinded, when Tyrion was supposedly drowned by the Stone Men, etc etc etc. Sure, Jon was stabbed. A lot. And in the show, sure, that was a pretty big pool of spreading blood and Kit Harington’s lovely blue eyes were open and staring up at the sky, unblinking. But y’know what keeps you from bleeding out so fast? Motherfucking freezing temperatures. I actually know this firsthand from an unfortunate slip & fall when I was in grade 1 in Saskatchewan. I had a pretty harsh cut on my little head that stayed frozen and contained until I got home and inside when it really started bleeding.

See, we know that sometimes, they come back wrong. Beric didn’t, but he didn’t come back fully right, either. Lady Stoneheart came back wrong (although, in my opinion, she wasn’t that right when she was alive either – her predecessor falls in the “Ron Weasley” category of fictional characters for whom I have very little sympathy). And if Jon is going to be the hero I think he will be, as important to the show/series as we all think he is, then it’s important that he is fully human, not a shade, not a zombie (whether an ice zombie or a fire zombie or whatever. A slush zombie). It’s crucial that he not have died.

So my money is on him walking up to the brink of death & not stepping off that cliff. Melisandre may help keep him from dying. But I unequivocally do not accept him dying & being resurrected. That breaks a fundamental part of what makes him a compelling character – he needs to be OUR hope, which means he needs to be human, like we are.

Nope.

Building SelfControl from [REAL] scratch

As someone who is easily distracted by brightly coloured shiny things, which is great when scuba diving in the tropics, but not so great when working on a pretty Retina Display Mac with all sorts of bouncing icons, infinite browser tabs, etc, I use the tools available to remove obstacles in my way. Or indeed, the ones NOT in my way but off to the side of where I want to be going but that are so tantalizing. One such tool is the open source Mac app SelfControl.

The basic functionality of SelfControl is that you set up either a blacklist of sites you don’t want to allow yourself to access for some amount of time or you go hardcore and set up a whitelist of sites that you WILl allow and ban the rest of the world as unacceptable distractions. [Aside: an anti-spam/anti-virus company I used to work for preferred the terms ‘blocklist’ and ‘allowlist’ instead of ‘blacklist’ and ‘whitelist’ for a variety of reasons, some cultural, and where I need to use them, I’ll be using those terms as well.]

With SelfControl, you  decide how long you want to focus for, set the slider for that amount of time, and press ‘Start’.

The way it blocks sites is by modifying the Mac’s hosts file (and firewall) so it needs to use admin privileges, which is why you have to enter your password. For many, that’s a decent way of it asking “Are you sure?” because the average user isn’t going to know how to undo the changes manually – that’s part of why it’s effective.

And that’s a perfectly helpful use case: person says “I need to focus for 2 hours straight, and I’m my own worst enemy, so block distractions RIGHT NOW”. But it’s not the one I’m most interested in, personally.

You see, when there’s something that I’m particularly avoiding starting (usually writing), I won’t necessarily even get to the point of starting the app. There are different tiers of self control and what I’d like to do is set myself a regular schedule with blocks at certain times of day. There’s an argument to be made that if I can’t even boot the app & click the button, I have bigger problems to sort out, but if there’s a way to make the process more structured and automatic, I’d prefer that. And I’ve heard from others that they feel the same way – they think scheduling would be useful.

There are a number of things that I’ll need to work through to get that going (not least of which is figuring out how to automate the privilege escalation on a scheduled basis – maybe cron?) but the first hurdle I had was getting the app to build at all.

I had tried to do this about 8 months ago, with NO success. I haven’t been a Mac developer at all and until fairly recently, I hadn’t been a developer for over 10 years. A lot has changed, y’all! And one of the biggest changes has been the burgeoning mass of package managers to simplify installation of apps, libraries, etc. Although I use Homebrew to install apps on my Mac, I hadn’t heard of CocoaPods and didn’t know there was a required step to run ‘pod install’ to get the required prereq libraries installed in the build directory. [It’s useful to run your build instructions past true newbies to find the steps that are SO familiar/basic that it doesn’t occur to you to write them down].

At the Recurse Center, I learned about a lot more package managers, and that there’s at least one for every platform. I already knew about npm & gem, but not pip, and definitely not pod. So I realized that there was a missing step in the SelfControl instructions – one that would be so automatic for Mac app developers that they wouldn’t consider it missing, but for someone who wanted to start their Mac OSS development with SelfControl, it was pretty crucial. Now, I don’t want to suggest that I don’t know how to search for solutions to issues, nor that you don’t. But when you run up against something where you don’t have a reference point for what’s missing, the amount of the unknown is completely unbounded. You have no idea how far away the finish line is, and if your drive to do this is hobbyist-level, you may bail, like I did last summer.

So, armed with this new knowledge, I tried again to build SelfControl from scratch. I got a bunch of failures (including the promised code-signing ones) but some of them are due to a recent Ruby change that apparently breaks CocoaPods. This post is getting long, so here’s a link to how I got through ’em. It’s ALSO long but that’s largely due to a bucketload of screenshots.

Steps to build SelfControl from scratch with no prior OSX dev experience

Preamble

This post documents the steps required to be able to clone and build SelfControl from absolute scratch – as in, you haven’t done any Mac development to speak of before at all *as of Feb 12, 2016*. I assume you’re running El Capitan.

The only prerequisite I’m going to assume you have is Xcode because:

  1. I really don’t want to try to fully uninstall it from my machine for the purposes of this walkthrough and
  2. if you haven’t got it fully installed, the steps to getting that going are trivial (if you try to run something and it says you need to install more components, install those components. If it says you need to accept the command-line license, page through the full license text in the Terminal and type ‘agree’ (or whatever it asks you to type – I don’t recall the exact text)

(Edited: the above is not quite true. While writing the below I realized that I’m also assuming you are using Homebrew. Look, I’ve tried Macports, and I’ve tried Homebrew, and although there are a lot of pluses about Macports, the developer zeitgeist seems to be around Homebrew. It’s just easier, ok?)

Other than that, I’m assuming you don’t have any extra libraries or tools installed. The reason I’ve listed an exact date above is that I think that part of why this didn’t work for me but did for others is because of a recent change to Ruby that broke CocoaPods. So others couldn’t help me because either they weren’t using that version of Ruby or they’d already gotten their pods successfully installed; the SelfControl build wasn’t failing for them.

Steps

We’ll start with the official build instructions & go from there. I may submit a pull request to update some of the steps – step 2 is definitely wrong once you install the CocoaPods.

  1. Clone the repository
  2. Open SelfControl.xcodeproj in Xcode
  3. Switch the Scheme selector (upper-left-hand corner) to SelfControl — not Distribution
  4. Build!
1. Clone the repository

This is completely correct. However, if your goal is to contribute to SelfControl, you probably want to fork the repo and then clone your fork instead (after all, why are you building from scratch if you aren’t planning to contribute?). But for this walkthrough, you can just clone the official repo if you want. Go to the directory where you want to do your build and run:

git clone https://github.com/SelfControlApp/selfcontrol.git

If you forked the repo, you’d just replace it with your copy, e.g.

git clone https://github.com/karamcnair/selfcontrol.git

That’s what I did. Here’s what you’ll have in the directory after the clone.

 

git_clone

2. Open SelfControl.xcodeproj in Xcode

Nope. I’m not sure if the instructions are just out of date or whether there are multiple paths to building this project with CocoaPods but if you follow the instructions directly and try to build the .xcodeproj file you’ll get missing dependencies because the CocoaPod libraries aren’t there.

See?

So we’re going to take a detour from the official instructions at this point because this is what threw me off last summer and where we’re going off-road in our quest to get this working.

Let’s install CocoaPods

The way we do that is to use ‘gem’, the Ruby package manager.  The process should be:

  1. gem install cocoapods 
  2. pod install ***

WARNING: CocoaPods is currently (remember, this post is as of 2016-02-12) in beta for a new version with a totally different Podfile format. At first I accepted their suggestion to upgrade to the beta version, ended up rewriting the file, and it STILL didn’t work. Do not accept the beta version at this point. That’s not what the problem is.

Note the error we’re getting here: Undefined method ‘to_ary’ ? ¯_(ツ)_/¯

And at the end of the output we see this:

Something that took me longer than I’m happy with to notice:

/usr/local/lib/ruby/gems/2.3.0/gems

[But why would I even care? It knows what it’s doing, right?]

So what is the problem? How come everyone else building SelfControl doesn’t have this error. Well, it turns out that we’re too up to date, my friend! Our systems are too pristine, too fresh! We have the newest Ruby, the version that ships with OSX, and it’s version 2.3.0 (in my case) and not version 2.2. And there’s a problem with 2.3.x, as far as CocoaPods is concerned.

github_writeup

(Look familiar?)

Let’s see if that’s the problem. What Ruby we have now?

Yup. That’s probably it. So how do we fix that? This helpful person has an answer for us:

 

pod_solution

To do that, we use these instructions and to install rvm (Ruby Version Manager) to tell OSX which version of Ruby we want to use. But before we do that, let’s get rid of our current (bad) install of CocoaPods.

I know I could have just had you start by using rvm to pick Ruby 2.2 so that you wouldn’t hit the failing pod install but there are two reasons I didn’t:

  1. there are probably a non-zero number of people out there who have the same problem with the bad CocoaPods & by following these steps, this includes how to recover from that setup and
  2. it’s useful to document thought processes of how to debug & fix borked systems

gem uninstall cocoapods

Then install RVM as per the instructions:

Huzzah! We have the right Ruby! Let’s see if we can fix the Pod Problem!

Let’s REALLY install CocoaPods

So

gem install cocoapods

followed by

pod install

Hey! look at that! It worked.

So here’s where something weird is, that I don’t want to take the time to fully replicate on a freshly installed machine: The first time I got this working, THIS was the output from the ‘pod install’ command:

Note that it says to use the .xcworkspace file, not the .xcproject file. And it’s telling the truth. My directory has a SelfControl.xcworkspace file in it after ‘pod install’ but it didn’t tell me to use it this time. But if I don’t, and use the SelfControl.xcproject file, here’s what Xcode complains about:

See? The pod dependencies aren’t built. So we use the Workspace instead:

Cool, cool. Now we’re actually getting somewhere. The pods are building and so is SelfControl! But. Here come the promised code signing issues.

 

codesign1

OK, this post is too long now. And the code signing issues are ones that are likely common to multiple projects that have nothing to do with CocoaPods, so I’ll be adding a follow-on post just to walk through the OSX Code Signing traps!

Stew Chicken with Rice & Beans

I’m stashing this here because I’m terrible about improvising on recipes, nailing one, and then not having any record of it later for reproduction (look, my brother’s the scientist in the family, my strength is logic, not careful replicable procedures (although I’m working on that with this weekend’s ReimageFest(tm))) (also, I’m the one in the family who’s comfortable with Lisps, as you might well glean from my rampant use of parentheses)

But tonight we’re making a variant of our beloved Belizean stew chicken with fried plantains, rice & beans, and coleslaw and I wanted to learn from my mistakes/victories. Here are the base recipes:

I’m futzing with them in the following ways:

  • 1/2 the amount of chicken in the recipe, but full amount of spices & vegetables. (Probably twice the cumin, tbh. Also, using achiote roja instead of recado because we’re out of the latter).
  • used white vinegar, not lemon juice.
  • adding the optional green pepper and a tomato (technically two seeded roma tomatoes but that’s roughly the size of a normal tomato). The jury is out on the cilantro and brown sugar. Cilantro doesn’t scream ‘belize’ to me.
  • roughly 3 cups of water to cover the chicken etc.
  • I totally don’t understand the “Heat the oil in a heavy pan or deep skillet and sprinkle flour, stirring to dissolve (like a thin roux) before adding chicken pieces.” No oil was specified in the ingredient list, nor flour. I winged (ha) it with about 2mm of grapeseed oil to cover the bottom of the pan (quite a wide pan – ~14″ diameter?) and ~3 tsp/1Tbsp flour.
  • oh, and I had it on medium-high heat. Also not specified 🙂
  • For the beans, we cheated on the soak time b/c we’re using an electric pressure cooker (hi, Instant Pot!). We got some small red beans (supposedly Chilean (I’m really annoyed that I didn’t make room in my suitcase to bring back the “Central American Red Beans” that I bought in NYC – surely those were the exact right ones! (GOYA brand, in case you care))) and soaked them for 3.5 hours.
  • We’re making 1/2 the recipe of this as well, so 1/2 lb beans & ~2.5 cups water (I used the soaking water because I’ve heard that helps with… um… digestion).
  • 1 onion, 3 cloves garlic, the soaked beans, the 2.5 c soaking water into the Instant Pot & set to ‘beans/chili’ for 10 minutes and then natural pressure release. Research suggested 8-9 minutes for beans soaked overnight & ~25 min for dry beans. No one is very clear on how much water so I winged that as well. If the beans aren’t done when the cooker is done, we can throw ’em back in before adding the rice.
  • We actually bought ‘normal rice’ for this! (My understanding is that normal rice is long grain white rice. YMMV. We have about a dozen different kinds of rice in the house but that was not one of them.) Plan is to halve that as well, which should be about 2 cups, but I’ll check the ratio of beans:rice when adding it before re-cooking on ‘rice’ setting.

Update: the beans lie like a rug. 10 min at pressure was not even close. 10 MORE minutes still wasn’t done! (although I may have needed to add more water that I didn’t. Fine. FINE. Added another cup+ of water & back in for another 10 minutes. Still waiting to add the rice. Apparently we’re eating at midnight.)

Chicken update: very flavourless – added all the rest of the achiote roja we had (which, to be fair, was probably stale & had suffered a loss of potency.) Finally, between adding that (about 6x the suggested amount of recado), about 1 Tbsp of Frank’s Red Hot sauce (because we’re almost out of Marie Sharp’s), and about 4 Tbsp of Worcestershire sauce and taking the lid off, we have something that is still basically flavourless to me but Bill says is really good (the peril of being the chef is that spending so much time among the odours means that you become desensitized and can’t necessarily judge the taste properly). So, original recipe, quintuple the spices, add Worcestershire & hot sauce, and we’re good, apparently.

Addendum: We’re also having cole slaw & fried plantains. Bill is a staunch advocate of plain mayonnaise (rather than Miracle Whip, which I prefer) so we based the recipe for cole slaw around that. Turns out that “salad cream” is what we really want (which is apparently better approximated by Miracle Whip than mayo, so there!) so we had to improvise. “Steve” suggests this approximation & although we don’t have any icing sugar, we made do with cane sugar. We shredded cabbage & carrots for the cole slaw & nothing else. The plantains are just plantains, fried in butter. Some things are best in simplicity.

Trying something new

For quite some time now, I’ve been telling myself that I want to write more. There’s plenty of research that shows that writing is a great way to get to know yourself better and, in many situations, to feel better. A lot of Cognitive Behavioural Therapy is based on getting your thoughts out of your head and out into the real world where you can see how distorted they are.

And I have been writing more! Since December 12th, I’ve been doing the ‘morning pages’ exercise from Julia Cameron’s The Artist’s Way and I’ve been finding it to be really helpful for my overall mood and willingness to try new things.

But that’s really only basically stream of consciousness writing, not anything more structured. And it’s just thoughts, not creativity, really (I mean, it COULD be – you can write anything you want in the morning pages, but for me it’s a cross between a ‘brain drain’ (Cameron actually refers to it that way and it’s a good metaphor) and a bit of a journal (which I ALSO want to do more of). It’s not really the type of writing I think I want to try.

So day after day I say to myself “I should sit down and write something.” (THAT sentence shows up in the morning pages pretty regularly). I borrowed “The Writer’s Lab” from the library & it’s due back tomorrow, unused. So I decided to get curious about what was really holding me back.

My first thought was “well, I don’t really have a place to write” Sure, nobody ever does any writing in coffee shops or in bed or at the desk or at one of the THREE computers they own (in fairness, two of them are over five years old).

That was followed by “but I don’t know what tools I should use!” Ah yes… The self-perpetuating variant of yak-shaving that is tool-smithing. Perhaps the greatest method of procrastination ever invented by humans (and one particularly beloved by software developers because we can make new tools to avoid doing what the tool is supposed to make easier).

But there’s a little bit of truth in that last one. I am very much enjoying writing with pen & paper for the morning pages and have developed a bit of a fetish for nice stationary and writing tools. But there are pragmatic reasons to write on a computer, not least of which is the complete illegibility of  my handwriting (not good to start with and completely devastated by a career in software). It’s also pretty much a given that any publication of what I write will be done via computer. Transcribing my own writing doesn’t sound like a lot of fun to me, although there are benefits to that type of process. It forces a write/edit/revise cycle that can too easily be short-circuited by ‘live’ writing. But I think it makes sense for me to start out on the computer and go from there.

“Medium” or “WordPress”†? “WriteRoom” or “Sublime”? “Scrivener”? OK, now you’re just fucking around. Pick one and get on with it. Delay any decision you can (a good rule in general, as long as you’re taking into all the factors that make up whether ‘you can’) and start.

So I am. I am making one concession to my poor mind that is afraid of failing/rejection/mockery. I’m going to do all the fiction-type writing on the MacBook Air, using WriteRoom, with wifi turned off. That machine will become THE place to write creatively and that will also lend a bit of ceremony to the act of sitting down to write. Not so much that it’s ‘precious’ but enough to give it a bit of a sense of occasion and to celebrate that I’m trying something new.

† While I was trying to figure out what it was that was stopping me from getting started, I realized something surprising. I was worried about writing on WordPress at this site because I was afraid no one would find and read what I wrote. But I was also worried about writing on Medium because I was afraid that people WOULD find and read what I wrote. Recognizing that last part was the thing that got me moving.

 

Today in computery things.

Success! I sorted out a git merge problem all by myself and it worked! And wrote some unit tests in Xcode, thanks to Natasha The Robot!

Fail! My mac had two kernel panics today. The first time I suspect Xcode because it had been a bit crashy, but it wasn’t running the second time. So I’m now side-eyeing Spotify and vagrant.

Neutral, followed by hilarious! I thought of a Zulip feature I wanted to add that I thought would be pretty quick to do because there were examples in other parts of the system for all the required ‘chunks’ (display sublist over here, find all PMs over there – should be a pattern matching exercise. And it was, at first, as I added code and tested it in the Chrome dev tools. (Have I mentioned how freakin’ ecstatic I am to have access to a proper debugger in a browser? I learned about it two weeks ago and I still catch myself giggling with delight). Then all of a sudden Zulip completely stopped working. So I undid my most recent change. Still busted. Undid the previous one. Still busted. Here’s where I start shaking my fist at dynamically typed/interpreted languages that don’t have compiler errors. I worked on it for a while and finally sent up a flare, asking for anyone who knew python well and the Zulip codebase at least a bit.

A fellow Recurser came to my aid and I started walking him through my code, talking pretty quickly until I saw the look of confusion on his face. I asked him what wasn’t clear and he said “I thought you said you were having trouble with python. This is Javascript.”

He was, of course, correct. I had been working in Javascript all afternoon (c.f. delight for the Chrome debugger above – bit of a tip-off, eh?). I just had been so used to working in the Zulip back end, which is written in python, that my brain had set WORKING_LANGUAGE=”python”. I mean that context was well and truly set, to the point where I had looked up the best way to determine if a python Dictionary contained a key and written some code in that format. But I had deleted it before saving & running it because I’d realized I didn’t need that check.

I don’t know if it’s a good thing or a bad thing that I can work in a language without knowing which one I’m in (in truth, I tend to base so much of my coding style on the style of the code that I’m modifying that it’s not terribly surprising) but I’m guessing it didn’t boost my credibility very much 🙂

At any rate, I have fallen back to what all of us with more than a couple of year’s programming experience do when we hit these types of errors-that-can’t-be-possible: copy all my changes somewhere else, grab a fresh copy of the pre-modified code, and reapply each tiny change one by one, testing & committing after each change. Same as it ever was.

It has been ‘a week’ (wait for it – there’s an upturn at the end)

Of the 6 subway trips I have taken (so far) this week, the first 4 had major issues: train taken out of service, “sick passenger” at a downstream station (which I truly hope is not a euphemism for someone on the tracks), track situation (based on the MTA ads, likely a track fire due to litter (people, pick up your litter!)), and just an unknown ¯\_(ツ)_/¯ delay. Each was 30 minutes minimum. I didn’t mind much: the out of service was the day I took the J, so I was above ground & got a lovely view of early morning sun, the ‘sick passenger’ was no doubt having a MUCH worse day than I was, the track situation one I was on the train with a friend who I enjoyed talking with, and for the ¯\_(ツ)_/¯ I was listening to a Pema Chödrön track I had somehow not heard before!

The thing that had bothered me a bit was that I finally gave into the pressure to drop off my laundry instead of doing it myself and that.. did not go well. I stopped to drop it off Monday morning (including pyjamas) on my way in to the Recurse Center with the expectation that it would be done for pickup that evening. It was going to be $8! Less than it cost me to do it myself! But… apparently it would be done Tuesday evening.

That’s not what I had been led to expect. ALL my clothes were in there (like I said – even pyjamas!). I asked if there was a way to pay more for express service and the gal behind the counter looked slowly over her shoulder. As I gazed along the wall of bags of laundry, I knew what the answer would be. No. Ok, that’s fine, I hate sleeping in clothing anyway – it’s only b/c I’m at an Airbnb that I even bother. And I have either some summer capris or some fancy clothes I can wear on Tuesday. [Note: this was before the first of the Train Events so I didn’t know what was coming.]

Fast forward past a lotta train stuff to me stopping by Tuesday evening (7pm) to pick up my laundry. When I dropped it off, I tried to pay for it but the credit card processor wasn’t working (shoulda been a tip-off). The woman gave me a receipt anyway (which confused me because I hadn’t had any coffee yet – it was for my actual laundry pickup as opposed to a credit card slip) and told me to call to make sure it was done. In a fit of optimism (and because the laundromat is only 2 blocks from my place) I stopped by without calling.

Yeah. Not only was it not done, it wasn’t started. And when I asked about it by the receipt number, it wasn’t in the job log. The only reason she found it was that ‘black mesh bag’* was written on the slip (and the fact that I could see it as one of the foundation blocks in the new laundry wall and pointed at it). Here’s where it was a blessing that the CC didn’t work because when I said “Can I just have it back?” she asked “Did you already pay?” Since I hadn’t, she gave it to me. (I assume that she’d have given it to me anyway if I was willing to forfeit the $8, but clearly there was no way to give a refund).

So today, the day when the trains didn’t turn on me, I left RC early to do laundry. [It was windy & rainy enough today that an RC-er from Seattle went to buy an umbrella. Remember how I have a mesh black laundry bag? It’s technically a scuba fin bag which is great for letting wet fins drain and not so great for protecting freshly dried laundry from the rain] I loaded up the Stanford iTunes U Swift course on my iPad, grabbed the noise-cancelling headphones, wrapped the mesh <smdh> laundry bag in my trenchcoat & headed out.

The laundromat actually didn’t require the noise-cancelling headphones that early (by comparison, when I stopped by last night to pick up my clothes, there was a kid literally racing around the place on a razor scooter and three others screaming and hunting each other. At least I assume it was hunting. It didn’t look like playing) and things were going well. When it was time to change over to the dryer, I had to go get one of those baskets to move my clothes. I was overloaded with raincoat, trenchcoat, annoying mesh bag, backpack to protect iPad & headphones, iPad & headphones, laundry soap and dryer sheets. I dashed over to get the rolling basket & came back & piled all the stuff on the clothes, loaded & started the dryer.

Then I went to check my email on my phone.

So, I didn’t mention my iPhone above b/c it’s usually attached to me. iPad is extra, headphones extra, backpack extra, etc. iPhone is in pants or coat pocket. But this time, because all clothes are in the laundry (and coats are piled on the laundry) I’m wearing running tights & an exercise shirt and have no pockets.

Hm.

Thus began a 14 minute panicky search for my phone. Is it somehow in the dryer? (IS IT MELTING?) No. Is it in the coat pockets, all wet? No. Is it on the washer I just left? No. Is it in the laundry soap bag? No. Is it … wait. There IS nowhere else. Is it over by the rolling baskets? No? The dryer? (yes I checked again) No. The coats?? NO. THE WASHER? NO. THE???? NO!

I started looking at the three other people in the laundromat panically. I went to the front and asked “did… did anyone turn in a white iPhone?” No. (I mean, of course not, right?)

So. It’s gone. Given the way the week had been going, this was almost to be expected, right? I mean, there are a couple of other things about the place I’m staying that I didn’t mention (but were in my mind) that just made me feel “oh, so THIS is what the week was building to”. And yet…

I wasn’t angry. I was barely even sad. I mean, it’s just a ‘thing’, right? The only part I was really upset about was that I was chatting with Bill and was worried that he’d be concerned about me and I needed to wait for the clothes to be done before I could got home and tell him what happened. The only other bit that pissed me off was that I wasn’t even supposed to be doing laundry b/c I had dropped it off and that was supposed to have worked. Anyway. I took a deep breath and did some walking meditation (I credit a lot of the buddhist stuff for my fortitude and equanimity on the trains this week) and there it was. On the top of a dryer (that I had looked at before but not seen due to panic).

I was so elated that I went to tell the woman at the front – I thought “I want to share this happiness with other people”. She was very happy for me (as was the ~70-yr-old woman doing her laundry who had tsk-tsked when I asked if anyone had turned it in), but very sincerely warned me to be careful because “some people aren’t nice”. This was a lovely young woman, max 22 years old, working at a laundromat in NYC who was really genuinely concerned for me because she thought I might not be taking enough care. (Which, partly true, but still…) That was so sweet and kind that I found myself wondering if all the shenanigans that had occurred up to then, including the laundry fail, were just a set up for me to experience that moment of faith in humanity.

[j/k, I don’t believe in serendipity or fate or superstitiony things, but I do believe that meditation practice, and certain kinds of emotional and mental practice can help you find this kind of grace when it happens rather than not noticing it]

I think I am going to move

I’m staying in the farthest east part of Bed-Stuy and it’s about a 1 hr commute door-to-door to the Recurse Center and as a result, I’m not going to some events in town in the evenings because I feel like I have to go home.

I’m nervous about it because I’m worried about upsetting my Airbnb host. Because I have an overactive loyalty gland. One that trumps market realities, apparently! There’s a 30 day cancellation period, so I found myself thinking “oh, is it really WORTH moving for just one month left at the end?”

Well, duh. I brought ONE suitcase. I can move in 10 minutes. I HAVE moved in 10 minutes in the past, while traveling, out of pure need/fear. So it’s silly to have hangups about moving – I should move every week!

[Update. Not moving, and here’s why 🙂 ]cat on bed

[Update to update. Moving. But not until mid-late Nov]

Page 3 of 6

Powered by WordPress & Theme by Anders Norén