Me: maybe I should go inside and get a snack… My back yard: nah, stay here, I got this for you. (photo: ripe blueberries on the bush)

Code unto others

twitter.com/mipsytips… That’s part of a longer thread and I haven’t read it all, but I want to veer off on a side point. As engineers, we have the power of doing…and the responsibility.

Some people on our teams don’t have the power of doing. The product manager who has to handle some messy data files and isn’t quite sure how to wield a regular expression to clean them up. The client engineer who has to write a hundred lines of code to work around a typo in the server code. The test engineer whose requests for debugging hooks or custom environments are dismissed out of hand, until they’re echoed by a “real” developer.

We take time for our immediate peers regularly—code reviews, whiteboard strategizing, even pairing up. We have such an opportunity to look beyond, to the rest of our team, and see where we can help. The shoemaker’s own family should not be left barefoot.

Just noticed the giant game of Tetris at my evening bus stop. (photo: wall painted with 3 foot tiles of Tetris blocks)

I have work/life balance: my work and personal laptops are exactly the same size! (photo: 2 13” Mac Books Pro)

How many times should I gently nudge a friend who claims they want to get together? I feel like a needy nag, but also didn’t see a family member for 7 years because I gave up reaching out.

Folder-like things in Xcode

I asked a private slack today why there’s three different kinds of folder-like things in Xcode, and here’s what I think I learned. (Thanks, friends!) I’m posting this so I can remember it and so you, dear reader, can correct my remaining misunderstandings.

  • Blue folders look a lot like Finder’s folder icons, and that’s a good mnemonic, because that’s all Xcode does with them. It just knows that this folder exists in the file system and (usually) lets you edit files inside it. These files cannot be members of Targets and they won’t be involved in compiling. They can still be relevant to the Project if, say, there’s a build step that copies them to the Products directory. It seems like adding an empty folder to Xcode confuses the app, and then it will never show files in that folder. (IOU a radar?)
  • Manila folders represent a Group in Xcode. A file inside a Group can be a member of one or more Targets (specified in the File Inspector, or the Target’s “Compile Sources” step), and it will get compiled when the target is built. These groups also exist as folders in the file system. A file can be in the file system folder without being in the group, so remember to add it in both the file system and Xcode, or add it in Xcode and let Xcode copy/move the file in the file system.
  • A manila folder with a triangular shadow in the lower left corner is a virtual Group. Xcode knows these files have something to do with each other, but they’re not organized together on the file system. It seems like this is one of those features that you don’t want to use unless you know you need to.

TV show writers: please edit your story arcs to the (highly variable) attention span of my cat. I put a show on to give my cat a lap, then she leaves mid-episode, and somehow I end up staying to watch the rest, even though I meant to get up promptly.

6pm: I’m just gonna sit in my backyard for a minute. 8pm: Hmmm…maybe I should have eaten. I am never getting off this couch again.

If you’re a semi-successful developer who wants to support newer programmers & diversity, try not to publicly refer to your coding skills as “terrible”. If we’ve got a ways to go to catch up with you, then it makes getting to “pretty good” feel impossible.

As a person in a relationship and shared household, I do not understand why so much home automation pairs with a single device. I’m beginning to think we need to set up an iPad and Apple ID for the cat, just for pairing kitchen gadgets and such.

Next Conference

This week I spoke at NextDoor. I don’t have a verbatim record, but this is what I said, as close as I can recall. I spoke about Thinking like a Tester and being strategic about where we look for bugs. I was wrapping up by pointing out that our biases create blind spots that we need to compensate for, to find the bugs that affect people who are different from ourselves, to make our apps better for everyone. Then I took a deep breath and went off-script…

This room is full of guys. I know you didn’t find women interested in this conference and take away their tickets, but you have a responsibility to bring diversity to the next conference.

It could be as simple as telling someone you’re coming to the conference. They might just need to know that they’ll know someone at the conference, someone will eat lunch with them. And if you don’t know someone who’s underrepresented in tech, maybe that is your next step.

If you do know someone, ask them what would help. Maybe it’s financial. You probably can’t fund someone’s entire cost yourself, but maybe your local meetup could pool together to set up a scholarship.

Maybe your responsibility is to talk to your manager, and make sure that everyone on the team is getting to go to conferences.

To make great apps that are usable by everyone, delightful for everyone, we need to bring diversity to conferences.

Applause broke out. I realized I was starting to cry, and didn’t want to resume my original talk. I clicked past the last couple points, invited folks to attend a testing lab at AltConf the next day, and said “I’m done.” In the hallway, a man approached, and thanked me for both the testing talk and the challenge at the end.

So what will you do?

I watched his face as he seriously considered my words.

You don’t have to answer me now, but next time I see you at a conference, I will expect an answer.

Pro tip for everyone stumbling home from WWDC, NextDoor, Layers, or AltConf: Unpack promptly and start some laundry. But give your brain a day off!

Pondering UIKit on macOS: If Apple were working on a touchscreen Mac, we would all suddenly need UI elements and layouts that are optimized for the size of fingers and a lack of hover.