Exporting (iCloud) Keychain and Safari credentials to a CSV file

I wrote up a gist of the steps I took to export a list of “domain, user name, password” triples from iCloud Keychain and Safari.

“Girl programmers”

My friend Andi tweeted this exchange she overheard the other day.

This kills me. As a developer, a man, and a person, I don’t want to live in a world where this happens.

I’m going to skip over the contents of the exchange itself and jump straight to the backdrop that enabled it: the gender imbalance in software development and related fields. I don’t think this problem gets the attention it deserves.1

Many people are aware that there’s a gender imbalance in various engineering fields, but I’d bet that few grok the full extent of the issue. Here’s a statistic from an Associated Press article by Marcus Wohlsen from June 2012:

Less than 20 percent of the bachelor’s degrees in computer science go to women, according to federal statistics. By comparison, nearly 60 percent of all bachelor’s degrees are awarded to graduating females.

That’s a huge discrepancy. If the rate of women graduating with bachelor’s degrees in CS matched the overall rate, several thousand more women would graduate with CS degrees every year. I think of this as an artificial cap on the diversity of perspectives brought to the table in solving problems and advancing the state of research in computer science. Society is missing out on the benefits of these missing graduates and the graduates are missing out on a rewarding interest and career.2

In the AP piece I quote earlier, Jocelyn Goldfein, a director of engineering at Facebook, posits:

The reason there aren’t more women computer scientists is because there aren’t more women computer scientists.

I don’t have the background or training to be able to judge the merit of this theory, and I don’t want to oversimplify what’s clearly a complicated topic, but this statement resonates with me. An important part of making something happen is imagining the outcome. A woman having a successful, rewarding career in computer science becomes less plausible as the number of other women in the field decreases.

A hazardous feedback loop like this takes a sustained effort to reverse. It hasn’t been and won’t be easy. It means fighting when the tech community is marketed to through the objectification of women or “humored” by outright sexist rhetoric. It means making an example of companies that appear to only hire men. It means continuing to write and speak about those uncomfortable moments when a woman at an industry event is assumed to be a secretary, assistant, or someone’s wife. It means working to end the decades-long injustice of systematically paying women less than men.3

That said, writing, speaking about, and acting on the problems that affect women in the industry from day-to-day isn’t enough. I believe this problem starts long before women choose their careers, attend industry events, or get paid. It starts early in childhood, when young people are just starting to figure out who they are and what they care about.

From working many high school and college summers as a counselor and instructor at a computer camp, I witnessed this firsthand. In elementary and middle school, some boys already showed signs of believing that computing and engineering were interests for men, making jokes at the expense of the few girls who were enrolled. And as parents dropped their sons off at camp, I’d ask them if they had daughters who might be interested in learning the same things their sons were. In some cases it was clear that they had never considered exposing their daughters to technology the same way they’d expose their sons.

I don’t know the best way to turn things around, but as a man who has cringed while talking to those parents, reading the experiences of women in the industry, and talking to his colleagues about these issues, I’ve come up with the following practices to be mindful of and exercise.

See something? Say something.

Call out people who do or say anything that would make any group of people feel less welcome, valued, or comfortable in any space. This especially applies to the words and actions of women that may affect other women. This double-especially applies to the actions of children. “Boys will be boys” is nonsense. Every boy needs to know that every girl has the same potential and deserves as much respect as he.

Don’t attack. Persuade.

I recently spoke with someone in the industry who claimed that there being fewer women than men in the industry was the product of natural interest. The idea that girls aren’t interested in math is frustrating, but rather than respond to positions one dislikes with vitriol, we should see these moments as opportunities. We can’t expect to change anything if we only engage with people who share our views.

In the conversation I had, the guy I was speaking with had never seriously considered that something else could be at play. Eventually, to his credit, he opened up to the idea that society was playing a role in the gender imbalance, and therefore, could do something to correct it.

Share your talents.

If you’re in a position to serve as a mentor to a young woman, do so. When the rest of society is pushing her away from the sciences, engineering, or computing, your attention could make all the difference. Make the fact that she could invent the next iPhone when she grows up seem plausible, obvious, and exciting.

Support others trying to buck the trend.

I was delighted to see a project called App Camp For Girls get a bunch of attention in tech circles recently. The project’s mission is to create a camp in Portland, Oregon where woman can teach girls how to build apps, inspiring them in the process. This is exactly the sort of thing we need more of: efforts that help girls picture themselves as people who make cool things with computers.

App Camp For Girls is currently raising money to get off the ground. The project met its initial fundraising goal and is looking to hit a stretch goal to be able to expand beyond Portland earlier than initially planned. I happily donated, and I encourage you to do the same if you have the means.

I do not and likely can not understand everything that contributes to the gender imbalance in the tech industry, but I don’t think that’s an excuse to sit idle and watch the problem get worse. Until we’ve replaced the concepts of boy programmers and girl programmers with programmers, we need to pay special attention to problems faced by women in the industry and the messages we’re sending to girls about what they can accomplish.

We have to fix this.

  1. The circumstances surrounding the lack of women in computer science and various engineering fields easily translate to other groups and fields or areas of society. All of these problems matter a great deal, but I’m writing about this one because it’s been part of my life for so long at this point. 

  2. This isn’t to say that only college graduates can benefit society in the area of Computer Science. I’m just using college graduates as a meaningful data point. 

Replacing Google Reader

At one point, Google Reader was one of my favorite products. It was great at giving me the ability to quickly cut through a large amount of content while never missing anything important from a blog that published less frequently. Before the Plusification of Google’s product line, Reader was so much more than that; the killer app was being able to share and comment on stories with a small group of friends.

Reader’s gone now, but I still want to keep up with the 116 feeds I’m subscribed to. For now, I’ve picked David Smith’s FeedWrangler as my RSS syncing backend. The web interface is kind of sparse and doesn’t get all of the keyboard shortcuts right (I’m looking at you, v), and I don’t use its companion iOS app. With selling points like that, why am I paying $19 a year for it?

First, $19 a year is nothing.1 Second, the client situation for FeedWrangler is decent right now and getting better. On iPhone, I’m using Reeder and I love it. On OS X, I’m using ReadKit, which has quickly become a really nifty RSS and Read Later client. My iPad setup is the roughest right now. There, I’m using Mr. Reader and desperately waiting for Reeder for iPad to be updated. Although it’s completely functional, Mr. Reader’s aesthetic rubs me the wrong way.2

I like paying for things. Like leaving great tips at a restaurant, I think paying for web services is one of the delightful privileges that comes with being a self-sufficient adult in the modern age. I enjoy supporting independent developers like David Smith, and paying him annually will hopefully ensure the continued development and maintenance of FeedWrangler.3

I’m pretty excited about how the demise of Google Reader has shaken this space up a bit. That said, I’ll be way more excited when Reeder for iPad is updated.

  1. Anyone in the tech world who tells you that $19 a year is too much to pay for a service you use nearly every day is a crackpot. 

  2. Twiglike textures and odd floating pallets and bicycle bell sound effects, oh my! 

  3. David has a great podcast, too. It’s called Developing Perspective, and it’s a quick, thoughtful listen. I’d recommend it to any developer. 


From the moment I purchased the new iPad, I’ve found almost every other display in my life to be disappointing. Even my 27″ Thunderbolt Display can’t compare in terms of quality. I can see the pixels!

My roommate, Mikey, heard my complaints about my obsolete Thunderbolt Display and came to the rescue. Last night, he replaced my Thunderbolt Display with a display whose pixels I can’t see!

As you can see, this is a clear upgrade in terms of image quality from my usual setup:

Seeking a Travel Partner

I graduate from Tufts in May, and sometime in July, I start working at Apple. In May and June, I’d like to travel a little bit. Growing up in a relatively low-income family, I haven’t had the opportunity to until now. I’ve been putting aside money for a long time, and I’m finally comfortable spending some of it.

My current idea for the trip is an Intro to Europe. My friend Seth’s going to help me plan the trip, but I’ve realized that it will likely be a lot more enjoyable if I traveled with someone. I’m not married to the Intro to Europe idea — I’d just like to go somewhere.

If you’re even vaguely interested in taking all or some of a trip with me, no matter where it is, I’d like to hear from you. Email, call, text, or tweet me.

PandoraJam without Flash (well, sort of)

Update (July 17, 2012): PandoraJam can now use Google Chrome’s Flash plugin. In Preferences > General, select, “If Chrome installed, link to Flash plug-in, on launch”. This option completely solves the problem this post tried to address.

PandoraJam is a Mac application that turns Pandora.com into a desktop app without the awkwardness of Pandora’s first-party Adobe Air application. It does all sorts of nifty things, like responding to the system’s media keys, streaming to an Airport Express, and scrobbling tracks to Last.fm. Although Pandora somewhat recently rolled out an updated, HTML5 interface out to its customers, it still depends on the Adobe Flash plugin to playback audio.

For some time now, I’ve been running my system without the Flash plugin installed. This decision makes Safari more stable, keeps my MacBook Air’s battery lasting longer, and keeps its fan quieter. Whenever a website requires Flash, I open the site up in Google Chrome, which bundles its own version; when I’m done with that site, I quit Chrome.

That works great for general browsing, but it leaves other browsers and third-party applications, like PandoraJam, without a copy of the Flash plugin to use. Since abandoning Flash, I thought I had to give up on using PandoraJam.

PandoraJam without Flash

I emailed the developer of PandoraJam, asking if there was a way to specify an external path to load the Flash plugin or anything else I could do to avoid installing the for my user (~/Library/Internet Plug-Ins) or globally (/Library/Internet Plug-Ins). Unfortunately, he wasn’t aware of anything I could do to solve my problem.

The last time I searched for an answer to this problem was late August. This evening, after a quick chat with my friend David, whose Google-fu is stronger than mine, we found a solution. A quick read of Daniel Jalkut’s answer to a question on Stack Overflow about WebKit’s plugin search path and Wikipedia’s page about Application Bundles revealed that a small modification to PandoraJam.app would solve my problem without any compromise in my stance on Flash.

PandoraJam’s primary interface is a WebView that loads Pandora’s HTML5 player. Here’s what Daniel Jalkut had to say about OS X applications, WebViews, and how they locate plugins:

By defauilt (sic), it appears the search path goes in this order:

  1. ~/Library/Internet Plug-Ins
  2. /Library/Internet Plug-Ins
  3. App Bundle’s plug-ins folder

So by design, any plugin you include in your app’s bundle will, by default be superseded by a version found in the user or system library folder.

Bingo! We have a solution.

  1. Quit PandoraJam.
  2. Find a copy of Flash Player.plugin. If you don’t have one sitting around, install Flash, and move the plugin out of /Library/Internet Plus-Ins.
  3. Show Package Contents on or cd into PandoraJam.app.
  4. Drill down into Contents.
  5. Create a Plugins directory (folder) with mkdir or Right Click > New Folder.
  6. Copy Flash Player.plugin into the Plugins directory.
  7. Open PandoraJam!

If I abandoned PandoraJam for several months due to my stubbornness about Flash, it’s likely someone else did, too. Now, we can fight the good fight with a great soundtrack.