Archives for category: Feelin' Geeky

It’s over.

I’ve fallen out of love with my first startup. It was a taker. (You know how unhealthy those relationships are.) I gave and gave and gave. And when I asked for something, just a little thing, in return… Nothing.

I lived in denial for a year (2010). I kept plugging along as if nothing had changed. Then I got sick for a year (2011), so it was easy to pretend that that was why the flame was burning low. Then I got healthy again (2012). And, finally, this year, I had to face the fact that I’d lost that lovin’ feeling for good.

Because of that (and some other shit I won’t go into), I’ve been a bit lost for most of this year. Depressed. Feeling like a failure. Feeling too old and tired to start again. Like ya do. I moped around and was a cranky bitch for months. (My poor husband.) When my strength, energy and stamina all came back this fall, I realized I was all dressed up with nowhere to go.

Which made me mad.

I whined to my husband that I needed a new project. I said it over and over. Out loud to him. Silently to myself. To my girlfriends over coffee. To my girlfriends over beer.

Apparently, my brain heard me. (You gotta love the human brain.)

One night in October I was lying in bed wishing I could fall asleep, “thinking” (overheating brain thinking, you know, hundreds of thoughts at once, all tangled up and ricocheting off each other), when suddenly there was a perfect storm in my head.

Bored and disenchanted with the web for a couple years, not blogging much about it, wondering if my tech blogging days were over and what would become of me, but wait, the web is boring me to tears but I’m getting a pretty big kick out of mobile apps these days, and I wish more of my friends used them, they don’t know what they’re missing, but I can’t write about them on any of those big tech blogs I write for, not what they’re looking for.

Just back from three weeks in California, could still smell the wild wild west on me, feel it running through my veins, clinging to it hard, harder than usual. I’ve lost my mojo, need to get my sass back, nothing makes me feel sassier than my red cowboy boots

At which point the quaint and kitschy expression “Cowgirl Up!” came to mind.

And then it all just gelled.

I would put on my sass, get back in the saddle, create a place to write about apps, and call it “Cowgirl App!”.

I thought the domain name could not possibly be available, considering the wide use of the expression in cowgirly parts of the US. I was sure some geekette in Austin had it. So I didn’t check for a day or two, postponing the inevitable disappointment. But when I did, it was there and then it was mine. And so was the Twitter handle. And so was the gmail…

So for a week or two I let the concept coalesce in the background while I went about my business. As soon as it started to crystallize, I knew I needed a co-cowgirl and exactly who it had to be. Sent her an e-mail pitch to which she responded immediately and enthusiastically (“FUCK YES!”).

Nothing like love at first sight.

Ladies and gents, meet Cowgirl App!

Hello World.

In case you subscribe to this blog, which apparently some people do (thank you!), the old RSS feed will go the way of the pterodactyl in October 2012, when Google shuts down Feedburner just because they can if they want to and screw everybody, especially people who don’t follow tech news and may never even find out because it’s not as if Google took out a full-page ad in the NYT or anything, not that the Feedburner user base necessarily corresponds to the NYT reader base… It certainly seems like they’re being kind of sneaky about it. Maybe they’re ashamed, and well they should be, just yanking the rug out from under people like that.

So here is a new RSS feed address for you.


So Facebook bought Instagram. I mourned. Really. I posted the “picture” above on Instagram as soon as I heard (made with a fun little iPhone app called The Amazing Type-Writer that makes typewriter sounds). I actually got sympathy e-mails, tweets, and comments from friends and family who know how passionately I hate Farcebook and love Instagram. Vincent even made the Geeks about it last week.

Good Grief, by Vincent Knobil.

So a lot of the people I follow here and there threatened to leave IG (short for Instagram) and some did and some have already come back. I made no such threat, though I thought about it. The other options (and there are quite a few) are just not enticing enough (yet) to justify the change, and Facebook hasn’t fucked up Instagram (yet), so I’m hanging in there for now. IG’s still good. Too good to quit. Better than drugs.

All the tech pundits immediately began speculating on why Facebook bought IG, what they would do with it, blah blah. So I won’t bore you with my theories. It doesn’t matter anyway. What’s important is what tech toys and tools do to make our lives a better place to live.

My main concern was that Farcebook, despite my best efforts (including not having a Farcebook account, using a browser I don’t use every day if I have to go to a Facebook page, and immediately erasing all Farcebook cookies after closing the page and also any time I inadvertently land on a FB page…) would start profiling me and tracking me and poking into my business. And I don’t like those people. They’re unprincipled. I don’t want them anywhere near me.

But then I thought about it.

Instagram (supposedly) doesn’t store the info from smartphone Contacts (though maybe they will start to with their new evil overlords who seem to believe all your info are belong to them). Plenty of apps apparently do keep that contact data. So I never allowed IG (or any other apps except a VOIP phone app) to “find my friends” using my Contacts anyway. Twitter friends, yes, no problem, most of them I don’t know IRL and I don’t have Twitter friends’ home addresses and birthdays and children’s names stored in my phone

I don’t follow any brands on IG. I don’t take pictures of brands (a couple of Vespa pics — this is Paris, after all, some gin I never heard of, McDonald’s – but that was social commentary, the Mexican chocolate I ran out of, some of which you could send me if you’re feeling kind). I’m not like IG’s many Starbuck’s worshippers, for example…Click that pic to see serious IG Starbucks lust, which I don’t get. I don’t get brand love at all, but then I’m a far cry from your perfect little consumer. Not the advertiser’s ideal target.

Facebook will probably figure out I live in Paris, even though I don’t have location on for IG. Don’t know what good that’ll do them except maybe they’ll serve me crap French ads instead of crap American ads when they start force-feeding ads to IG users…

What more could they do to me other than “add new features” (they’ve already said they would) that could ruin the simple beauty of the IG experience?

All I know is, thanks to IG, I wake up every day and see the pictures of 84 mostly strangers in France, Quebec, Hawaii, Guam, London, San Diego, Austria, Moscow, Turkey, Brazil, India, Austin, Portugal, Sweden, New York, China, the Mojave Desert, and more… My own little near-real-time National Geographic, my hand on the beating heart of the world, pure Beauty.

At this point, I don’t see how Farcebook can ruin that. But I’m sure they’ll find a way.

How can you treat me like this? I was one of your first!

I’m a devoted fan, a certified geekette, a tech blogger… And already a Free client for Internet and TV.

I linked to Meet France’s New and Awesome Super Angels in my post Never Mind the Valley: Here’s Paris on ReadWriteWeb!

From the day I heard you were applying for the fourth license I was rooting for you. I knew the oligarchs would do whatever they could to keep you out of their club. Then you got the license! And I waited and waited for you to launch your mobile service, knowing that when it happened, I would make the switch, even if it meant buying my way out of my old contract…

I watched your live announcement of the Free Mobile services on TV. The whole thing! I had tears in my eyes when you got to the part about the low rates for poor people.

You guys are awesome!

And I know you’re doing your best. But…

I signed up for Free Mobile on January 12th. I got my first receipt that day:

Date: 12 janvier 2012 07:47:30 HNEC
Subject: Accusé réception Forfait Mobile Free

I got my client password on the 15th:

Date: 15 janvier 2012 00:44:36 HNEC
Subject: Confirmation de la création de votre espace abonné

Yeah!!! I was officially a Free Mobile client! So I kept checking my espace abonné, and I was stuck at Etape 1, with a Date de portabilité: Inconnu.

Until the other day, when Inconnu was replaced with Echec de la portabilité.


And not a single indication from you about what I should do next…


Because your customer service options are so lame limited, I tried tweeting you to ask for help. No answer. So I tried again a couple days later. No answer.

But some other guy (Dude_FR), a kindhearted geek who doesn’t work for you (as far as I know), did respond:

So my question for you, Free Mobile, is this:

What am I supposed to do now?

Even fangirls can fall out of love…


So I called customer service on February 7th with an actual telephone, and they told me there had been an error; that I’d made a typo entering this number called a RIO needed to transfer a phone number from one operator to another. I said I was quite sure I hadn’t made a typo, and that someone (Dude_FR above) had told me that the RIOs issued by my operator had a limited validity period and that that was more likely the problem since it had taken them so long. The agent neither confirmed nor denied, she just sort of grunted.

She said I could wait and that “very soon” I’d be able to enter the correct RIO through the website myself, but she said it would be faster if I cancelled my account and resubscribed. Which needed to be done by mail. Paper, stamps, etc. So I wrote the letter and printed it and it sat on my desk for a couple days and never got mailed.

Then, suddenly, magically, three days later, I had a SIM card from Free in the mailbox. I went to my Espace abonné (client space) to see WTF, and the Echec de la portabilité (failed to port number) was gone. Disappeared! It looks like it hadn’t failed after all… So what about this error? Was there no error after all?

So now, February 12th, I am at Etape 2, “Sim card mailed.” The next étape is “SIM card activated.” Waiting to see how long that will take…

Out of the goodness of his heart, a French tech blogger named Cédric Serret (author of Autour du Web) decided to launch a fundraising campaign last year to encourage bloggers to contribute to the iconic French charity Les Restaurants du Coeur founded by comedian/activist Coluche in 1985. Cédric is running his Les Enfoirés de Blogueurs campaign again this year.

(Les Enfoirés refers to artists and musicians who give benefit concerts for Les Restos du Coeur. Read all about them in English.)

Les Restos du Coeur feeds those who have trouble feeding themselves. The organization has no religious or other agenda. There are more and more people needing this kind of help (+25% in the last three years), and they’re getting younger and younger…

I’ve translated Cédric’s blog post describing his campaign below. The rest is up to you!

The first Enfoirés de Blogueurs campaign took place in 2010. The goal? To support Les Restos du Coeur, a charitable organization that has been helping the less fortunate since 1985.
 Would you like to become an Enfoiré de Blogueur? Read on to find out how…

In 2010, we had 55 donors who raised 1,555€ — enough to pay for 55 daily meals for a month.

We’d like to do even better this year!

Whether you donate 10, 20 or 100€, the important thing is to make a donation.

How to become an Enfoiré de Blogueur

I haven’t changed the rules since last year:

  1. Make a donation through the Restos du Cœoeur site.
  2. When you get your confirmation e-mail, forward it to me at or

Why send me the e-mail? So I can add your donation to the counter and offer you two links.

Two free links

Since the only way I can thank you for your donation is through my blog, you’ll get two links:

Bloggers who participated last year will get another two links this year.

Spread the word

Encourage your readers to participate too. Write a post on your blog, share on Twitter, Facebook, Google+. Display one of the banners in our banner pack. Be creative and spread the word among your network.

And don’t forget that without Coluche, none of this would exist… And only our help can keep it going!

P.S.: I am getting no personal gain from this. I’m just trying to make things happen the only way a blogger can! Your donations are made exclusively through the Restos du Coeœur site and I get NOTHING AT ALL!

Thank you for participating.

Some might think my work is boring. Today I was editing a video voiceover script written in English by a non-native English speaker (which can be a real pain). I stumbled on a tech term I didn’t know: “heavy VB client.”

I googled it and it only appeared once, which suggested to me that it’s not something English speakers say a lot. So I’m digging around online to find out how we do talk about VB clients, whatever the hell those are, and I came across this magnificent poem. It was masquerading as tech support. But I saw it for what it really was.

Everything is art.

Why does my VB client keep crashing
when compiled
and not in the IDE
when I use an ActiveX Control
with a worker thread?

You probably fire events
from the worker thread
in your control.

Since all ActiveX Controls
live in single-threaded apartments,
the event sink
your VB client supplies
lives in that STA too.

VB operates in apartment model only,
hence the pointer for the event sink
is in fact
a direct pointer
to the object in VB.

Hence you are able to call
through this pointer.

Unfortunately, by doing so
you violate
the COM threading rules –
every interface pointer
is valid 
within the apartment
it is obtained in.

Since VB is not thread-safe –
you experience
the crash.


There are three possible solutions
(described in ATL terms,
but they are appropriate
for straight C++ COM coding too):

1. The easiest solution is to create
a hidden window
upon the object’s construction
in FinalConstruct
(it is not a good idea
to put such code
in the constructor).

Then whenever you need to raise an event,
you post a message
to that window

The message handler then
fires the event.
The drawback is
that you have to package
any arguments
and unpackage them
in the message handler.

An additional benefit is
that unlike the other approaches,
this way the worker thread
is immediately
ready to continue
with the next task –
asynchronous notifications.

This approach is made possible
by the rule
that all STA threads
must have
a message loop
(in this case
implemented by VB).

2. Rewrite the implementation of
and Unadvise
and forward the call
to the worker thread

The implementation uses
and the worker thread uses
to marshal the interface pointer
to the worker thread.

Then the marshaled pointer
is stored in the map
instead of the direct pointer
from the client.

The worker thread
must enter an apartment
(MTA or create new STA).
The advantage of this approach is that
the code generated
by the ATL connection points wizard
doesn’t change.

The drawback is that
the events must be fired
from the worker thread’s apartment
(so if you have multiple worker threads
you better enter the MTA
in all of them).

The worker thread
is suspended
for the duration
of the call.

3. This one is a generalized version
of the second.
Instead of explicitly
the interface pointer
for a specific apartment
up front,
the code in the Advise method
is modified
to use the Global Interface Table
to store the interface
and a cookie
is stored
in the map instead.

Whenever any thread
wants to fire
an event,
the cookie is used
to temporarily obtain
an interface pointer
for the current apartment.

Then the event is fired
and the interface pointer
is released.

The drawback
(with ATL in mind)
is that in addition to
the IConnectionPointImpl code,
you have to modify
the code
for the proxy
generated by the ATL wizard.

The advantage is that
events can be fired
from any apartment.
All threads which fire events
must enter an apartment.

The thread firing the event
is blocked
for the duration
of the call.

I’ve been yakking (here and here) about how bloggers are frequently offered “exposure” instead of money for their work. What “exposure” really means, of course, is “We could help you become famous.” Hard for the average human to resist. Very hard. But exposure doesn’t buy the groceries (at least not in the immediate). So we need to figure out a way to get cash into bloggers’ pockets, especially if the sites they’re blogging for can’t or won’t pay them.

Another part of the equation is the readers, who are very free with their likes (easy to be generous when it costs you nothing), but likes don’t pay the rent any more than exposure does.

Speaking of readers, permit me to draw your attention to Flattr, which I affectionately refer to as “likes with balls.” It’s a revolutionary idea, though most people don’t seem to have grasped that just yet. (Or maybe they have, and they’re just selfish and lazy. Or maybe they’ve lost their jobs and homes and are living in their vans and eating uncooked Top Ramens every day. I’ll give them the benefit of the doubt.)

With Flattr, content creators add buttons to their sites and/or individual posts (there’s one at the bottom of this post). When you, the reader, click a Flattr button, the creator of the content you just enjoyed gets cash. Real money!

Where does this money come from, you ask? Well, initially, you put it into an account. Then you tell Flattr how much of it you want to spend each month. If you’ve specified a budget of €3 a month, and you Flattr one blog in a month, that blogger gets €3 (minus a minuscule fee). If you Flattr two blogs, those two bloggers get €1.50 each. Get it? If you Flattr nothing, your money goes to charity.

If you put Flattr buttons on your own site(s), then, theoretically, your account could just be filled up with money from Flattrs others have given you, and you wouldn’t have to put more money in. You could even withdraw extra money and buy ramen with it.

Flattr can only work if enough people are doing it, of course. It’s caught on in Germany, I hear.

So what does Flattr have to do with group blogs that don’t pay their bloggers (like The Huffington Post)?

Well, Flattr is in a good position to do something to change the situation. It would be super cool if Flattr could develop a system whereby Flattrs on individual posts on a group blog directed the payment to the specific bloggers’ accounts rather than to the main site. (Chances are sites would want to share Flattr revenue. This could be an option, and the site owners could be allowed to configure the split themselves.)

[Aug. 8: Vincent saw a tweet go by that said the Flattr WordPress plugin supports multiple users. Great minds, right?]

You can go to the Flattr site and look for people who are using Flattr (keyword search). I discovered Mimi and Eunice (the cartoon above) on the Flattr blog today. I found a poet I really like searching Flattr for “prose poetry” a few months ago.

What exposure really gets you

I was whining to a (non-blogger) friend and colleague about blogsploitation the other day, and she asked me if what I had gained from blogging for free had been worth it. I had to admit that it had. It’s opened a lot of doors. I’ve had press passes to pricey events I couldn’t have attended otherwise. These events provided material about which I wrote and for which I (sometimes) got paid, and lots of contacts. It’s helped me put together a significant professional network here in Paris and online, which has led in turn to more paid work. Having content on major blogs that I could point people to has gotten me some very interesting and lucrative projects. So maybe the exposure myth is not all myth.

In fact, in between the first and second of my blogsploitation posts, another friend and colleague, who was about to be hired as a blog editor, asked me if I’d be interested in blogging for her. The site? HuffPo.

I have to confess I’ll probably do it. I’m only human. And you never know what it could lead to…

Do I contradict myself? Very well, then, I contradict myself; I am large — I contain multitudes. -Walt Whitman