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.


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]

Recurse Center, Day 4

I’ve been doing the Stanford iOS development in Swift course for the past few days (as well as attending talks and doing a bit of C pairing (I apparently remember C! Huzzah!)) and I’m feeling a bit… static. Lots of other people are already writing code and I’m just doing tutorials. I do want to write a couple of iOS apps, so I want to get through that course, but I think that I might be using it as a procrastination tool. So I’m going to mix that up a bit today.

Here is a list of things that, as a programmer, I basically nopetopus away from:

nopetopus gif
Nope to ALL of these:
  • UTF-8, Unicode, any of that sort of thing
  • Cryptography
  • Bash/shell scripting
  • Audio, video, general media formats/manipulation

I’m sure that list will grow, but in the spirit of diving deeper into understanding and moving closer to things that make me uncomfortable rather than avoiding them, I’m going to spend today (and possibly tomorrow) working on the Matasano crypto challenges. And I’m going to try to do them in  Rust (learning that language as I go). Wish me luck!

Placeholder for things to come

I’m in NYC for the next 3 months; I arrived at Newark on Friday at 5pm local time and have been pretty slammed since. I’m here for a few reasons, but specifically the reason for NYC is that I’m attending The Recurse Center (Fall 2 batch) to reboot my software development skills. After I left Amazon, I spent about 8 months supposedly doing that, but mostly what I was doing was purchasing online courses about how to be a web developer/etc and not completing them because they always started at way too basic a level. I also realized that I work better with others and that I was unlikely to ever make progress on my own. The Recurse Center is not a software developer bootcamp, but more of a programming ‘retreat’ where people go to become better programmers (and boy, did that stump the border guard). So I think the odds of me actually making progress here are much greater.

But that’s not the only reason I’m here. I’ve fallen into a lot of bad patterns and habits at home, health & well-being wise and the plan is for this to be a bit more of a traditional ‘retreat’ as well as a programming one. I have goals to meditate daily, eat vegetarian, exercise 5 times/week, stretch and roll out my bad muscles daily, and not drink any alcohol. I also plan to write and reflect a lot more. To that end, I’m spinning up two new sites (one is a relaunch of a sadly abandoned venture but I actually had it printed on business cards this time, so you KNOW it’ll happen ;)

I’ll be launching and next Monday.

LWK will be a journal and writeup of all the stuff I’m doing at the Recurse Center as well as a writeup of that site’s creation overall (unlike this & the other, I’ll be using a static site generator at first and then gradually migrating that to hand-coded). It’ll also include host any projects I actually manage to complete that are web-demoable.

The Beupstry will be, as originally intended, a place where I reflect on becoming a happier, better person and talk about the things I am learning about how to think differently, how to react differently, and listing the resources I have found helpful in doing that. It’ll probably be pretty heavy on lay-buddhism and self-awareness and self-compassion.

But right now, it’s 9:51 EDT and because I have to get up early and exercise before going to the RC, I am going to sign off now (as noted in this Beupstry v0.1 post, sleep is critical to mental and physical well-being). Have a fantastic day!

Mouthbreather – Part 1

I have a confession to make: I am a mouthbreather. I always have been.

It’s not terribly obvious. If I’m not exerting myself at all, I can keep my mouth closed and get enough air through my nose to keep me functional, but if I’m moving around, or talking, or have even the slightest bit of congestion, my mouth is open. (It may not be open much, and as I have quite a small mouth, you may not notice it, but I assure you, it is).

That something is a bit goofy about my nose has always been obvious. My brother, my aunt, and I all have one visibly blocked nostril (the same one) and we’ve been known to jokingly push the tips of our noses over to the left to align with where the tips should be, relative to the cartilage.

(Ignore the hair - I have surgery today & am not focused on making myself purty)
Where the tip of my nose is actually pointed

I never thought too much about it until grade 5, when they started making us run in gym. All of a sudden, it was a problem.

The thing is, I didn’t know what the problem was. I knew that I couldn’t run without breathing through my mouth, and I knew that that meant that if I ran more than about 100m, my throat was going to dry out and I was going to start coughing. The teacher’s focus on running actually had a pretty long-term effect on my interest in physical activity, which had been quite high before grade 5. So I didn’t run, and I embarked on what would become a pretty damned impressive career of getting out of gym class.

While running and sports involving running were out, there were definitely things that were easier for me because of the nose situation. Not being inclined to inhale through your nose is a real perk in swimming, diving, and scuba diving. All those things came naturally to me, and I enjoyed them a lot (still do). I was a natural chorus singer, because if your choir is sustaining a long note, you need to get a lot of air in quickly during your staggered breathing – nasal inhalation won’t cut it.

But over the years it’s become more of a problem. Other than running (which I would like to do), it’s really impacting my sleep. It’s not just the snoring, it’s that there’s only one position I can sleep in and continue breathing through the night – a position I call an ‘inverted 4’

Every night, 7-8 hrs. Same position.
Every night, 7-8 hrs
  • I’m lying on my left side, but rolled forward so that it’s sort of on my front (but propped up)
  • My left arm is straight up (which wrenches my left shoulder & twists my left side forward)
  • My right knee is bent, my left leg straight down. This tilts my left hip/pelvis forward, shortening my hip flexors and putting excess pull on my hamstrings.

Spending so much time in that position has resulted in some postural and muscular issues in day-to-day movement. Because I’ve been spending this hiatus trying to improve my well-being overall, I went to a physiotherapist & now have exercises to work on training my lazy muscles to engage, but every night I reinforce the problem.

Back in the 90s, I was a huge fan of Dilbert and read Scott Adams’ blog fairly regularly.* When he wrote about having a deviated septum and the life-transforming effect that surgery to correct it had**, these thoughts went through my mind:

  • “Gee, that kinds of sounds like what I have, not being able to breathe through my nose when I run”
  • “My case is probably not as bad as his was – surely some doctor would have told me if it were. I’m just being overdramatic/hypochondriacal”
  • “It must be nice to have enough money to be able to get that done electively. I wonder if I could become a famous cartoonist….”***

* either his views have evolved in a way that I now find unpleasant, or mine have evolved, or his were always like they are now & I just didn’t notice.
** He described the actual surgery as being like having a live weasel stuffed up one nostril & threaded back down the other, which also stuck with me.
*** of course, at the time, a cartoon of my life would have just been a clone of Dilbert, so that would probably have been a non-starter.

But last summer, someone I had worked with mentioned that he had the same surgery done and like Scott Adams, described it in transformational ways (as did this other person who read Scott Adams’ post). A few choice (paraphrased) quotes:

  • “I feel like someone reached into my head and yanked out 35 years of misery”
  • “I feel like someone gave me a super-power”
  • “Not a day goes by that I don’t think about how happy I am that I did this”

Well, I thought, this is supposed to be the year of self-improvement and doing things that are good for me – I asked him what was involved in getting it done? How much did it cost? Was it covered by work insurance?


Apparently if a specialist determines that it’s necessary, it’s covered by regular healthcare. The process is to get a referral to a specialist for assessment (referrals are always covered by regular healthcare) and go from there. Since my friend was so happy with his specialist, I asked for a referral to him. I got an appointment, but as is common for non-urgent issues, there was about a 6 month lead time.

[Kicks herself for waiting so long before investigating this. Could have been breathing better DECADES ago.]

[6 months pass]

I go to see the specialist and he says that that yes, I definitely qualify as ‘sufficiently deviated’ (that one’s going on my tombstone, for SURE) for the surgery. In fact, remember that goofy nose tip thing from up above? Yeah, that’s too special for him to do. Apparently regular septoplasty is done where they kinda just stick tools up your nose, move stuff about, and then you bleed for a while and then heal. But if they did that with me, my nose tip would collapse.
Raccoons Cedric & Burt
I mean, I’m a good Canadian, I liked this show. But I didn’t consider it aesthetically aspirational.

The specialist also did a really interesting test (before sticking cameras up my nose to confirm) that completely changed what I thought was wrong with my septum.

In this picture, you can see that my left nostril is largely blocked by the bent nose tip.

Up-nose photo of blocked left nostril
I saved this image to include a bit later so that anyone skimming this post & deciding it wasn’t for them wouldn’t have to look up my nose. But you’re clearly committed at this point.

The doctor had me plug my right nostril & put his finger on my left cheek next to my left nostril and pulled my skin to the left.

Doctor: Does that make breathing easier?
Me: Definitely.

This wasn’t a suprise to me – I’d encountered that using BreatheRight strips (which I can only use sometimes b/c my skin is really sensitive & is too easily damaged by adhesives). He reversed to the other side – pulling my right nostril wider open, while having me plug my left.

Doctor: Does that make breathing easier?
Me: No, in fact it’s worse overall because my left nostril is blocked.

Then he brought in the cameras.

Here I’d always assumed that my nose cartilege was a “J” shape – straight at the top & hooked at the bottom. NOPE. It’s more like a dial that someone has turned 25 degrees, blocked at the bottom on the left and up inside at the top on the right! So I’ve been getting even LESS airflow than I thought I was.

Diagrams of actual septum shape and assumed septum shape

MIND-BLOWING. The left nostril is the GOOD one (despite its weird ‘gate’ at the entrance).

However. That meant that this guy couldn’t do the procedure for me and instead, I have to be referred to an extra-specialist – one of only two people in BC who perform ‘open septoplasty’.

STOP. I’m going to take a moment to warn you about something. If you have any curiousity about what the difference between regular and ‘open’ septoplasty is, for the love of god, TURN OFF GOOGLE RESULTS IMAGE PREVIEWS FIRST. Learn from my mistake, people.

OK. So. “Open” septoplasty involves them cutting the skin under your nose and then, um, kinda peeling back your nose/face so that they can get at the bits inside. They then do more significant construction. In my case they’ll apparently be widening the bridge & main part of my nose to strengthen it and building a brand new (centered) tip. Then they pull the skin back down and sew you up.

Yeah. All of a sudden I’m a bit less sure about going through with this, but I figure that I should at least meet with the extraspecialist to hear what he has to say. THAT appointment isn’t 6 months away, no. Only a few weeks.

[Google has surprisingly little information about open septoplasty and its complications. I assume that means that everyone who went through it is dead]

When I do go see the doctor, he’s extremely reassuring (not just in what he says, but in manner overall) and I feel much, much better about the prospect of starring in my own sweded version of Face/Off. I decide to go ahead with it and mentally prepare myself for an 8-12 month wait for surgery.

But. Apparently this doctor was recently granted 7 extra hospital days this year and because he just got them, they were wide open. So instead of an 8 month wait, it’s a 6 week wait.

And now those 6 weeks are up. My surgery is today. I’ll provide an update when I’m back home (assuming I’m not so miserable that I just want to go to bed), but fingers crossed for a life-changing improvement!

The Newest Member of the Spice Girls: Breakfast Spice

Green Smoothie
Photo by Joanna Slodownik / CC BY

I hate leafy green vegetables. They’re boring, largely flavourless, and my lips inadvertently purse into a weird scowl when I have to buy them at the grocery store (fun fact – this appears to be not entirely psychological, since apparently my brother & uncle have the same reflex, but they LIKES them).

I’ll eat an interesting salad (ideally ones with spices nuts & some sort of strongly flavoured cheese crumbled in) but it’s always an effort of will. Which is Bad, of course, because leafy green vegetables fall clearly in the Good category.

A couple of years ago, on a lovely hot summer day, I was walking around trying to decide what to have for lunch. I wasn’t very hungry and I definitely didn’t want anything cooked. I decided to try a green smoothie at (what is now) LeafyBox.

It passed the first test: I didn’t go blind.

It ALSO passed the second test – it was actually quite pleasant! But I have no idea what they put in it, and I wouldn’t swear that it didn’t have a lot of sweetened juice in it as well.

[two years passes]

About a month ago I was at Costco with a friend and saw some GIANT bags of spinach. Me: “I should eat more salads!”. Cut to a week later and a bunch of very limp spinach in the drawer at the bottom of the fridge. I had a LOT of ginger in the freezer from Sunrise Market and thought “well, maybe that would make it more interesting.”

It does! I’ve now tried them with and without LOTS of ginger and the ginger makes a big difference – it’s fun to drink instead of just a slog. So here’s my new daily breakfast. Give it a try!

Kara’s Spicy Green Smoothie
  • 4c baby spinach & kale mix (~40 cal according to the bag, ~80 cal according to MyFitnessPal)
  • 1/2c regular yoghurt (100 cal)
  • 1/4c coconut milk (~80 cal according to MyFitnessPal)
  • 1c carrots (~50 cal)
  • 2c frozen fruit (~120 cal)
  • 1/2c ginger (~50 cal – I keep it in the freezer, which will affect when it goes in the blender)
  • ~1c water

Start by  blending the yoghurt & coconut milk with the greens until they’re well mixed.

Break the carrots into thumb-sized pieces & blend them in (‘chop’ is fine – we’re not going for ‘fully liquid’ yet.) If your ginger is not frozen, add it now.

Add the frozen stuff SLOWLY. I use the ‘crush ice’ setting on my blender, but if you put it all in at once, the liquids freeze and you end up creating a cave at the bottom of the blender that nothing falls into. If you add the frozen stuff in batches, you don’t have to poke the contents down into the blades as much. Add the water in batches as well when things start freezing together.

Once it’s relatively smoothly blending, step up the levels until you get the consistency you like. Me, I like ‘liquify’ – there’s always going to be a bit of fibrousness left from the ginger, but not much.

Makes about 2.5 SOLO cups of smoothie. So, that’s… what, 40 oz? And you’ve started the day with probably all the vegetables & fruit you need. I’ve now had more leafy green vegetables in the last month than I have in probably the previous 6 months. And it doesn’t feel like ‘work’.