Blogs by Women: the OPML File

In Blogs by Women I presented a list of blogs of interest to Mac and iOS developers, designers, and power users that are written by women.

Today I created an OPML file — you can import it into your RSS reader to add these as subscriptions.

If your reader can take a URL, copy this URL:

If your reader needs a file, then download this file and import it.

* * *

I was able to find feeds for all but three of the blogs on the list. That’s pretty good — but it ought to be 100%. Having a feed is hugely important if you want people to keep up with your blog.

* * *

Bonus link: Manton Reece on A diverse community through writing:

Blogging isn’t difficult, but it’s still not yet as easy as tweeting. By creating a blog, you’re making a statement that you care about something.

In the immortal words of Andy Gibb: you should be bloggin’.

My App SpotLight

Back in the ’90s I shipped SpotLight, a search engine that ran on Macs running WebSTAR (http server), FileMaker Pro (database), and UserLand Frontier (scripting system).

It was the closest thing I had to success at the time, but it was still a failure. It sold just 10 copies.

But it was 10 copies at $99 each, and people paid with a check, so I made exactly $990. That didn’t pay for development, but it paid for the few hours of support I did — and of course I learned a lot, which made the whole thing very much worth it.

(To be clear: this app has nothing to do with Apple’s Spotlight. Or Spotlight the debugger.)

* * *

For years I’ve laughed at myself for that $990. It seems like such a small and cute amount of money. But it occurred to me just today to figure out how you’d get there on the iOS App Store.

Let’s assume a 99-cent app. My first thought is I’d have to sell 1,000 copies. But that’s not accurate, because of Apple’s cut. You’d have to sell 1,428 copies to make $989.60 (close enough).

Then let’s take inflation into account.

According to this inflation calculator, $990 in 1998 is $1427.52 in 2014. If my math is correct, then that means multiplying by 1.441, which means selling about 2,058 copies to make that same amount of money.

To put that number in some perspective, let’s subtract the number of units I sold of SpotLight. 2,058 - 10 = 2,048. Practically the same number.

* * *

Making money with a 99-cent app requires massive, effective marketing. With very much under-powered marketing in the ’90s, I was able to make the equivalent of 2,058 App Store sales by selling to just 10 people.

How many copies at 99 cents would you have to sell to make a good living? To make it easy, let’s say a good living is $100,000/year. To make that in revenue on a 99-cent app requires requires selling just over 144,000 copies per year.

This works out to about 394 copies every single day. Or 2,769 per week, or 12,000 per month.

To make a good living with SpotLight, I would have had to sell about 1,010 copies per year. Or 2.76 per day, or about 84 per month.

If I had sold 394 copies per day of SpotLight, I’d be over $100,000 some time on January 3.

* * *

SpotLight took me just a few weeks to develop.

Blogs by Women

For a thing I’m working on, I wanted a list of blogs that:

  • Are of interest to Mac/iOS developers, designers, and power users, and

  • Are written by women.

I made a list of some blogs I already knew about, and then I asked my friends for more, and they totally came through.

I decided to publish it rather than keep it to myself. You’ll find some good reading here.

In random order:

Ashley Nelson-Hornstein
Rachael Worthington
Katie Floyd
Janie Clayton
Liz Marley
Samantha Marshall
Natasha The Robot
Michele Titolo
Aleen Mean
Veronica Ray
Maxime Chevalier
Marcy Sutton
Tess Rinearson
Erica Sadun
Ellen Shapiro
Virginia Roberts
Sheree Pennah
Natasha Godwin
App Camp 4 Girls
Julia Ferraioli
Sally Shepard
Misty De Meo
Eryn Wells
Jenni Leder
Sasha Laundy
Meagan Waller
Linda Dong
Jaimee Newberry
Ellen Chisa
Nikki Lee
Susan Lin
Alli Dryer
Rebecca Miller-Webster
Brittany Tarvin Young
Melissa Elliott
Chris Martens
Lynn Fisher
Amber Case
Kate Heddleston

I’m sure there are plenty more. Send me links on Twitter if you have suggestions. (I can add to this post.)

Update 12:20 pm: More for the list via Twitter…

Ayaka Nonaka
Cate Huston
Natalie Podrazik
Kristina Thai
Corinne Krych

Update 1:10 pm: More via Twitter…

Barbara Shaurette
Christina Moulton
Julia Evans
Katie Zhu

Update 1:35 pm:

Gwynne Raskind

Update 4:10 pm:

Nadyne Richmond
Becky Hansmeyer
Dori Smith and Tom Negrino

Update a couple days later:

There is now an OPML file which you can import into your RSS reader.

We Only Sing About it Once in Every 20 Years

The other day, my friend — who’s enjoying being a hermit lately, and asked not to be named — expressed a wish to know more pop songs. I said I could come up with a list of 12 worth knowing.

It isn’t the list. It’s a list.

Every one of these can still give me chills (in the best way). In no particular order:

Under the Milky Way by the Church.

A Pair of Brown Eyes by the Pogues.

Spanish Bombs by the Clash.

Brimful of Asha by Cornershop. “Asha” means hope, and the reference to “45” is a reference to pop songs. I once did a talk that used this song — it was about how apps are the new pop songs. (Imagine the call-out at the end, but with The Iconfactory, Panic, Omni, Tapbots, and so on.) Sometimes I think this is my favorite song of all songs ever.

Here Comes Your Man by the Pixies. Bonus points: Gigantic and Monkey Gone to Heaven.

Just Like Heaven by the Cure.

Fade Into You by Mazzy Star.

Love Will Tear Us Apart by Joy Division.

What’s the Matter Here by 10,000 Maniacs. I’m in tears by “Oh these cold, and rude, things that you do…”

See How We Are by X.

Sweet Jane by the Velvet Underground. Bonus points: Cowboy Junkies cover. “Everyone who had a heart — they wouldn’t turn ’round and break it. Everyone who played a part — they wouldn’t turn ’round and hate it.”

Ceremony by New Order.

All of these except for Ceremony are great for one guitar and singer (or singers). They could all be modern folk songs.

I include Ceremony anyway because it’s a miracle.

* * *

Update 3:10 pm: Nick Arnott created a Spotify playlist and an iTunes Music playlist.

Update 3:13 pm: Brimful of Asha, explained.

Update 3:30 pm: Isaiah made an Rdio playlist.

Update 4:55 pm: Isaiah made his own list. A whole bunch of his songs could have been on my list. (A Message to You Rudy, especially. And the Buzzcocks. And Billy Bragg. And Iggy, though I might have gone with The Passenger. For the Smiths it would have been Panic instead of How Soon Is Now.)

The Debate Over Direct Access

At lunch today a few of us discussed the issue of using vs. _foo in Objective-C.

We had people on two sides. I’ll lay out the arguments.

(Note: this isn’t even a debate in Swift, which is one of the reasons I’m eager to switch to Swift.)

This side argues against declaring ivars, and argues that all properties — external and internal — should be synthesized (usually implicitly).

The only cases where you access the underlying storage directly — reference _foo, in other words — is in init, dealloc, and in custom accessors. Otherwise you use everywhere.


  • It’s a simple rule to remember. You don’t have to remember whether a property is internal or external.

  • A given property can have custom accessors, or not, and you still treat it the exact same way. Adding or removing custom accessors does not mean you have to go looking for all the references to that property and possibly change them.

  • You’re treating your object’s interface as an API. Inside the object you have more API than outside callers can see, which is fine. It’s still all API.

  • You have to worry less about KVO if you always use instead of _foo.

  • You’re more likely to get memory management right if you use (This is much less of an issue with ARC, I grant.)

  • Subclasses are more likely to get things right if you use

  • Apple seems to advocate this style. (Not always consistently.)


This side argues that using direct storage access inside an object is the way to go.


  • There’s a useful distinction between public and private. The code for an object is private, and it’s therefore fair to access storage directly. An object has one API — its public API — and inside the object you can do whatever makes sense.

  • Any time you send a message, it’s possible that anything could happen, including reentrancy bugs and so on. Accessing storage directly does not have that problem.

  • Sending a message may have performance issues. (Probably not. But it’s possible.)

Okay — I don’t fully understand this side of the argument. I did the best I can to explain it, but I’m most definitely in the camp.

But smart people disagree with me.

Why am I wrong, and why is _foo better?

(Feel free to reply on Twitter, of course.)

Social Anxiety

I will leave you hanging, because it never occurs to me to wonder why you have your hand raised.

* * *

By kindergarten I hated school. I had a bunch of reasons, some of them even good — but the main thing was that it was difficult being around other kids. I was afraid they all didn’t like me.

I hated school even through my couple years in college. And here’s what that kindergartener’s fear turned into: the conviction that most people are likable, but that somehow I’m marked, and people can tell instantly, just by looking, that I’m not likable.

This feeling of being marked, of being obviously unlikable in some fundamental and obvious-to-everyone way, persisted into my early 20s.

* * *

So dumb and wrong.

To maintain that belief is to maintain that I’m super-special, if even in a bad way. I’m not. I may have better-than-average intelligence and creativity, but I’m very far away from genius level. (I’m probably about the same as you.)

I try to be a nice and good person, but I’m very far away from being a saint. (Such understatement!)

Which is to say: I’m not extraordinary in any way, including not extraordinarily bad.

So I came to realize that I wasn’t extraordinary, but some amount of social anxiety persisted anyway. So I wondered why. And, to my surprise, I started to figure it out. There are reasons.

* * *

If you speak a sentence to me, I hear a paragraph. If you speak a paragraph, I hear your life story.

Speech feels like borderline telepathy (it’s not, though), and it’s an awful lot to process. But I get it: I get words. My brain is wired especially for symbolic communication. (Which is why I love reading and writing. And I come to programming as another form of symbolic communication.)

But if you raise your hand for a high-five, or hold out a fist for a bump, it won’t even occur to me to wonder why you’re doing those things. You’re just doing those things. Why would there be a reason?

It’s not that I don’t understand the gestures — of course I do — it’s that I have to keep reminding myself that gestures have meaning and intent.

In other words, I am remarkably bad at non-verbal communication. I pick up facial expressions with no problem, but just about everything else goes right by me.

Wink at me, showily or not, and all my brain gets is that you winked. I don’t connect it to what you said or what our conversation is. Unless, that is, I keep reminding myself, consciously, to look for non-verbal cues.

This is tiring.

(Ironically: my cat, though a non-stop talker, is very much a non-verbal communicator, and I get him completely. It’s also true that the better I know somebody, the better I am at understanding their non-verbal communication. It’s almost as if I can’t generalize when it comes to the non-verbal. With words I have no such problem.)

So that’s problem one. A person who has difficulty with non-verbal communication can come across as weird. I don’t want people to think I’m weird. It’s not that I care too much about what people think — it’s that I, quite rightly, want to be able to have normal human conversations with people.

And there’s another problem.

* * *

I don’t know how long I’ve been staring into your eyes.

I have no problem making eye contact. That’s not it. The problem is that most people have a shared sense of social time, and I don’t. By “social time” I mean two things:

  1. Seconds pass at the same rate for everyone in the conversation, and

  2. Everyone has a sense of what’s an appropriate, non-weird length of time for things like handshakes and eye contact and so on.

My internal time sense is way off. My beats are much faster than social time, and they’re irregular, and there’s no switching gears to social time. I try to compensate, but that too is tiring and difficult.

It felt like I just stared into your eyes for half an hour. Was it only half-a-second? Too short, too long?

Beats me!

But you can see how it would be easy to come across as weird if you get this kind of stuff wrong.

Which leads to the third problem.

* * *

If you’re talking to someone, and they’re spending some percentage of their brainpower on just not coming across as weird, you’re going to kind of pick up that that person is weird.

This is the part where I throw my hands in the air and think about moving to a cave.

Because if I don’t try, then I’m definitely weird. So I have to try — but not too hard. Can’t make it obvious!

* * *

I wonder if all I’ve done here is to describe why introverts frequently describe being social as tiring. Extroverts have no problem with any of this — but people like me, and maybe like you, have some things they can’t do automatically, and that’s the tiring part.

Throw some beer or Scotch in, though, and I’m good. I think probably because I stop caring about being weird or not — and there’s a big, obvious lesson right there for me.

P.S. I should add that my hearing’s getting worse. Which doesn’t help at all.

The Opposite of the Art World

Mark Bernstein argues for better software criticism:

When it comes to the arts, the crowd is seldom wise and always unreliable. In the sciences, the crowd knows next to nothing. Nastiness and ignorance are a bad combination, but one that’s become very, very familiar in social media.

When the Weapon Was Pointed at Me

Years ago, in the age of Twitter but not deep into the age of Twitter, I made a mistake. And then on Twitter I was piled-on mercilessly and relentlessly for weeks.

The community had always been on my side, so this came as a shock. But I should have remembered Dave Winer’s words to me from 2003, after I released NetNewsWire 1.0. I’m paraphrasing, not quoting, but they were something like this: “You’re the golden boy now. Enjoy it. They’ll turn on you later.”

For the next six months after the pile-on I asked myself every day if I should just quit the industry. Seriously. Every day, and especially every night. I came very close.

I learned a few things. I can’t count on the public to have my back. Forget it. Also: I can’t rely on the public liking me or my apps for any of my emotional needs. (That was another mistake I had made.)

This period of time is a black chasm dividing my career into two parts. I was naive, and then I was heartbroken.

This accounts for much of my ambivalence toward Twitter: having been the target of a pile-on, I know that Twitter is a weapon that is often — usually, perhaps — wildly disproportionate. And it is often pointed at people who don’t deserve even a lick of fire. (Though, to reiterate, I did make a mistake.)

* * *

In retrospect there are a couple other things to learn. One is that nobody but me has any memory of this at all.

Another is that I wasted that six months being hurt by this. I was certainly depressed during that time, and I didn’t need to be, because it wasn’t worth it.

And I’m still hurt by it, so many years later, and I should let it go, but there it is.

* * *

Hence my plea: don’t threaten people. Don’t abuse people. Ever.

Consider that flaming or being mean to somebody isn’t helping the world in any way. Consider proportionality. Consider that you may not have the facts.

And: whatever evil you think you see, it’s probably not as evil as your joining in a mob.

In the Room

(Note: this is a sad story. If you’re not in the mood, you should skip it.)

One day in May 2009 I nearly had a panic attack when, during my afternoon run, I saw a crow on the sidewalk lying on his back and taking big, slow breaths.

I stopped running and walked up to him slowly. I was wrong — he wasn’t breathing at all. It was the wind making it look like he was breathing. Once I was close enough I could see that a cat had gotten to him.

But the sight of his chest pointed at the sky nearly had me in tears.

* * *

Aging is a non-stop succession of large and small damages.

I remember in my mid-thirties being proud of how smooth my hands were. A few years later they weren’t smooth at all.

Some damages heal, some heal part way, and some don’t heal at all. My hands are never going to be smooth again.

We’re all battle-scarred ships at sea that can never reach port. We patch up as best we can and keep sailing, and we hope our damage doesn’t sink us.

* * *

In early 2009, a few months before I saw that crow, I got a phone call from my Mom: my grandfather had just had a massive stroke. I got in an airplane right away and flew back east to see him.

He lived in a very small town in south New Jersey. Much of my family still lives in that town. I flew to Philly and then went to Elmer Hospital, where he was.

When I got there he was already not talking and his eyes were closed, but he was alive. We all talked to him. I don’t know if he could hear or understand — I kind of think not — but you have to talk anyway.

He was a great man. I don’t need to convince you by listing all his accomplishments. One of the many will do: he built a swimming pool for the town back before the polio vaccine, and he helped keep that swimming pool running for decades. It’s still there. (I went swimming there just this past summer.)

* * *

He lasted a few nights. Each night somebody different stayed with him. It was my turn the night he died.

He was in ICU rather than in the hospice, and so he had a blood oxygen monitor hooked up to him, and I watched it slowly climb down over 10 hours.

His breathing had become slow, with long pauses between breaths. The pauses kept getting longer. Eventually, around dawn, one of the pauses was just not followed up with another breath.

That was it. As peaceful as that. Which he deserved.

* * *

It would be fair to call my grandfather a sexist, I guess, like every man of his era — but he fully supported his wife when she, in her 40s, went back to school to get a college degree and a master’s degree. (She became a public school librarian.) He supported his two daughters — one a banker, one a physicist-turned-programmer (Mom!) — and I never ever heard him say a word about “women’s work” or other nonsense.

He did all the cooking! (He loved cooking for people, and he was great at it.)

But when I was a boy he did teach me to always hold the door open for women. I remember asking him why. He said something like “stronger people always have to help weaker people.”

That’s sexist, for sure, if you take the implication that women are weak and men are strong. And I thought about it a lot. I knew that women were entirely capable of opening doors! I’d seen them do it.

I worked on the problem in my head. And I watched him, and I saw that he helped everybody. From the volunteer fire department to the cemetery association to the swimming pool to the church — to his family and friends and everyone — he was the guy who helped. Every day.

If there was a real-life Doctor Who for that small town, he was it. (A Doctor who falls asleep at night watching the Phillies game.)

And so I turned that little thing — opening the door for women, and why we do it — into something else, as simple, and non-sexist, as this: it’s my duty to help anyone, any time, if I can. Even when it means sacrifice.

That’s my entire ethical basis, and I owe it to him.

* * *

I’m good at staying up late. Oh so good. I’d been practicing my entire life so that I could stay up late with my grandfather that night.

I thought I’d get over being in the room in a week or two. It’s a hard, hard thing, even when it’s as peaceful as one could possibly hope.

I didn’t get over it. A little bit, sure. But it’s damage. It’s heartbreak.

If I close my eyes and think about it, I’m right back there. It’s a vivid night and I feel it all again.

* * *

Detail: he was in a coma, and his lips were drying out, and so we put some petroleum jelly on a Q-tip and applied that to his lips every couple hours.

You don’t imagine that kind of thing in advance, and at first I felt like I was interfering with his dignity. But I did it anyway, because he needed it. I was able to stop my hands from shaking. I helped.

* * *

Dawn came. I didn’t want the family — his wife and daughters and grandchildren and nieces — to have to keep going through this.

I told him that the women were coming soon. Those were the last words he heard. He performed his last gallant act.

* * *

Pop-pop. That’s what we kids called him. Pronounced like Pup-up.

* * *

Another thing you don’t imagine, having been in the room once, is that you’ll be in the room again.

This year — just a couple months ago — I was. Another family member, another great man who was here on this earth to help. This time there were a few of us staying up with him every night.

It took me six years to be able to write about my grandfather. Pop-pop. It will take another six years for this.

* * *

It just never occurred to me that I’d be in the room again. Now I know. If it can happen once, it can happen again and again.

The heartbreak is daily. There’s no getting over it.

* * *

Well, maybe I shouldn’t end so bleakly. There’s damage, and not all of it heals — how could it? — but you learn how to live with it. And the good thing that lives on is just that you have to help people.

This is my story, and everybody has their own story of heartbreak. Each person walks around with some amount of damage — and it’s more every day — and all we can do is try to help.

That’s it.

OmniPlan 3

Watch the Monte Carlo Simulation video. And all the other videos.

I work on OmniFocus and OmniOutliner — I didn’t contribute to OmniPlan 3 at all. And it makes me proud to be on the Omni team. Amazing app.


Ads via The Deck