Facebook Beacon – eek

Over the last month or so, Facebook has been making changes to how Facebook Beacon works, seemingly in response to privacy concerns. But none of the changes have addressed one of the worst parts of the problem.

If this post from Dare Obasanjo doesn’t scare you, at least a little, then read it again:

When you read this you realize just how insidious the problem actually is. Facebook isn’t simply learning about every action taken by Facebook users on affiliate sites, it is learning about every action taken by every user of these affiliate sites regardless of whether they are Facebook users or not.

At first I assumed that the affiliates sites would call some sort of IsFacebookUser() API and then decide whether to send the action or not. Of course, this is still broken since the affiliate site has told Facebook that you are a user of the site, and depending on the return value of the hypothetical function the affiliate in turn learns that you are a Facebook user.

But no, it is actually worse than that. The affiliate sites are pretty much dumping their entire customer database into Facebook’s lap, FOR FREE and without their customers permission. What. The. Fuck.

If you’re not worried yet, then take a look at this post from the CA Security Advisor Research blog, showing a network trace of a site sending data to Facebook that could identify you being sent to Facebook even after you’ve opted out or logged out.

I usually run pretty fast and loose with this kind of thing; however, if I do business with a site, I expect that they will not share identifying data with another site without explicitly asking. Shame on you, Beacon partners.

Migration to WordPress

As I mentioned, I’ve migrated my blog to WordPress. All in all, a pretty easy transition, but there was a lot involved. For the benefit of those contemplating such a move, I thought I’d write some notes here…

Linux hosting. Up to now, I’ve done all of my hosting on Windows, and NewsGator’s data center (where my old blog lived, on server #1) is all Windows as well. I couldn’t find any instructions as to how to install WP on Windows, so I switched my 1&1 hosting account (which hosts http://www.gregrphoto.com) from Windows to Linux. Kudos to 1&1 for making that transition seamless – especially since I’m only paying $3.99/mo for my account. :-) Making this transition also gave me access to MySQL, which I needed for WP.

wordpressicon-hanttula2.gifInstalling WordPress. I have to tell you, I was blown away. This was my first time hosting anything on Apache, and my first time touching MySQL…but it all just worked. So easily, in fact, that I didn’t really believe it was working at first. All I had to do was a) create the database, b) update a config file with the database location and credentials, c) copy the WP files to my site, and d) navigate to an “install” URL. This part took literally maybe 5 minutes. Kudos to the WP folks for making this so easy!

Content migration. I had hundreds of posts and thousands of comments in my old blog, stored in a SQL Server database. I wanted to migrate these over as seamlessly as possible. After quite a bit of research, I decided to write an application to create a file in the Movable Type export format, and import that into WordPress with the MT import option. After a few test runs with small files for testing, I got a format that would work consistently. I also had to import in small chunks (around 90KB each) rather than importing the whole file at one time. (aside – thanks JeffT for building this app for me!)

Maintaining URLs. My old blog got thousands of hits per day from people coming from search engines and the like, and I wanted to make sure these old URLs would still work. My old permalinks were in the form:

http://www.rassoc.com/gregr/weblog/archive.aspx?post=842

Where the “811” was the ID of the post in the old SQL database. The new post in WP has a very different URL:

http://www.rassoc.com/gregr/weblog/2007/09/28/iphone-and-
exchange-server/

I did two things to get these old URLs working:

1. Built a PHP file called “archive.aspx”, which would look at the post ID passed in, and in turn redirect to the new URL. This is done via brute force (a big long “switch” statement), and that statement was auto-generated by another application. (thanks again Jeff!)

2. Added a line in my .htaccess file to map the .aspx extension to the PHP processor.

This part wasn’t perfect – I’m still fixing a couple of the redirect URLs – but it made 95% of them work the first time. And it’s not the most efficient way to do this, but it works for what I need.

So…all in all this took about a day’s work. 5 minutes to install WP, and the rest to take care of the migration stuff. But I’m back!

And the blog moratorium shall end

So as you’ve undoubtedly noticed, I haven’t been blogging much lately. But this time, I actually have an excuse. :-)

One or two of you might recall that back in December 2002, I built my own weblog server. The reasoning behind this, at the time, was a mix of being fed up with my previous tool, and also that I wanted to have the flexibility to experiment with what were, at the time, new technologies like trackbacks and pingbacks.  It was all built with .NET and SQL Server.  Ah, good times.

Fast forward to 2007…things with my aging blog weren’t so rosy any more, as it had been neglected for quite some time. There weren’t any standard posting API’s implemented, so standard blogging tools like MarsEdit or Windows Live Writer wouldn’t work. I had some custom APIs for posting, and some tools from way back that would use those APIs to post, but those had stopped working well sometime in the last year or so…so I was basically stuck with posting using a web form that had the world’s least reliable HTML editor.

And to make things worse, if I wanted to upload an image, well, there was no easy way to do that. It actually got progressively worse over the years, until the other day, when I wanted to do this, my operations guys asked if I had the Cisco VPN client installed.  Eek!  That’s way too hard.

So anyway…I’ve switched to using WordPress, and migrated all of my content over here. If you’re reading this in an aggregator, you’re probably seeing a bunch of old content as well…that’s due to the URLs changing for the posts. But from now on, all should be well.

The WordPress migration was fairly interesting…I’ll put up another post about that for others who are contemplating something like this.

iTunes Wi-fi Music Store

Everyone knows by now that the most visible feature of the iPhone’s recent software update is the iTunes wi-fi music store. When I first saw that, my thought was “ho hum”…I mean, I’m excited that Apple is changing the mobile game and updating devices with new features, but I had very little interest in buying songs from my phone.

Ha. Apple clearly knew better than me.

They completely nailed the interface. It works, it’s fast, and it’s fun. I was sitting around over the weekend, just browsing through the store. Tapping the “preview” buttons, tapping the “buy” buttons…it’s all so easy. And being one tap away from new music, on your device, is something that’s very cool – and cool enough it’s a little hard to explain exactly why. And knowing it will sync back to your PC, and there’s no downside to buying on your phone vs. buying from your desktop, really takes the last bit of worry away.

So nice work, Apple. You gave me a feature I didn’t want, made it easy for me to play with it even though I wasn’t interested, and you convinced me.

iPhone and Exchange Server

I’ve been using an iPhone for a while, and it’s definitely a whole new experience on a phone. I’ve been enjoying it quite a bit, but perhaps I’ll write more about that later.

I have it connected to our corporate Exchange server, and the first thing I noticed was that when I would delete a message on the iPhone, it wouldn’t get deleted in Exchange.

Technically, the message gets marked for deletion in Exchange via IMAP. The problem is, it just sits there in that state until eventually someone does an EXPUNGE command on your mailbox. And even worse, when you connect Outlook to Exchange via non-IMAP methods (like whatever the default is), the message just shows up with no indication it was marked for deletion.

Well, Shawn at fresh logic studios has built a small app that will periodically run an expunge against your mail account on Exchange, and this completely solves the problem. As downloaded, it runs the command every 5 seconds; I recompiled it to instead run every 5 minutes, so as not to get my IT guys too unhappy with me.

So a HUGE thanks to Shawn for writing this – it’s a lifesaver! Highly recommended.

UPDATE 7/14/2008 – I notice a ton of traffic coming to this post over the last few days; this post was written when the only way to connect your iPhone to Exchange was via IMAP.  Using the iPhone 2.0 firmware, you can use Exchange ActiveSync, which doesn’t have the same issues as described above.

Online surveys – what not to do

I’ve often found online surveys vaguely annoying…but I just received 3 emails in the last 2 days to please fill out a survey. One I filled out, and the other two I did not. But based on all this, I have some suggestions for those of you who might see fit to survey your customers in the future.

1. Tell me how long it’s going to take. Even better, tell me exactly how many questions there will be. As much as I’d like to, I just don’t have time to spend 15 minutes on your survey.

2. Don’t ask me the same question 3 different ways just to see if I’m consistent. That might be great for a personality profile or something, but remember, I’m not spending 15 minutes on this.

3. If you really, really want me to take the survey, offer me something. I’m a sucker for free stuff. And a drawing probably won’t do it.

If you mess this up, there are some pretty dire consequences. I might have had a great experience with your hotel or whatever – but if your survey is annoying, that damages the memory I have.

At the end of the day, I want to give you feedback. I really do. But you’ve got to make it easy.

Hertz sent me a survey that I didn’t mind doing, took me 60 seconds, and the company got some useful feedback. Here is the opening paragraph in the email (and frankly, I’m not likely to get too far past that first paragraph, so tell me what you want quickly):

As a valued customer, we would appreciate your taking a moment to complete this brief four-question Customer Satisfaction Survey regarding your recent rental at SEATTLE TACOMA AP. Your comments will help us gauge how well we performed on your rental and will enable us to enhance your rental service.

“four-question” is the part that got me to click. Sure, I’ve got time for 4 questions. Like I said, 60 seconds and I was done.

Here’s a bad example, from the Edgewater hotel in Seattle – which was very nice, by the way, until I got to the survey.

First page:

What was the main purpose of your stay with us?
How was your reservation made?
Why did you choose this property?

Ok, easy enough. Second page:

How would you rate your Overall Satisfaction as a guest of this property?
How likely are you to stay with us if you are in the same area again?
How likely are you to recommend us to a friend or colleague planning to visit the area?

Then we go downhill…third page has 10 questions, all looking for ratings. I let out a sigh, but I even completed this page, with the following items:

Overall reservation experience
Overall check-in experience
Overall appearance and condition of property
Overall guest room quality
Overall guest room comfort
Overall staff friendliness and professionalism
Overall meeting/conference experience
Overall food and beverage experience
Overall check-out experience
Overall value for price paid

And then, the straw that broke the camel’s back. The next page asks the following:

Please rate the following regarding your experience with the reservation process (followed by 3 subitems asking for feedback on specific parts of the reservation process)

Please rate the following regarding your check-in experience (with 6 subparts).

I recognize a pattern by this point. Of the 10 items on the 3rd page, of which I already gave responses to, it appears they are now going to go through every one of those and ask for more details. So now I assume I’ve got at LEAST 5 more pages of the survey to go through, and each is probably going to have 10 questions, and who knows how much more stuff after that, and I’ve got to tell you…

I just don’t care enough to fill this all out.

So I quit. And now I’ve wasted the time I took to fill out the first few pages, AND you got no useful data. Nobody won.

I started out with a pleasant experience at the hotel, service was excellent, etc…but I’m just oing to take 15 minutes or so to fill out your unknown-length survey in excrutiating detail.

So I wrote this blog post instead. :-)

Virgin Mobile and Flickr photos

Wow. I’m pretty much the last to hear about this, but it’s truly hard to believe. Virgin Mobile has an advertising campaign out at the moment, which uses photos from Flickr (Creative Commons licensed), but doesn’t have model releases for the folks in the photos. Google it here.

Molly Holzschlag was one of the people depicted in the photos, in an arguably negative light. If I were her, I’d be pretty mad.

Truly amazing. This is certainly not editorial use – this is commercial use, which requires a model release. And depicting anyone in a negative light, or showing them endorsing a product, even in editorial uses, usually requires a model release also. The fact that someone on Flickr says a photo is ok for commercial use (via a CC license) really has no bearing on whether they have secured releases (both model and property as necessary). And while your average Joe might not realize this, the folks at an ad agency responsible for acquiring artwork should definitely know it.

Virgin, I’d think about shopping for a new ad agency if I were you…

My first computers

Brad Feld wrote a couple of days ago about his first computer, which was an Apple II, with a whopping 64K of RAM. Kind of brought back memories for me…

The first computer I worked on was a Commodore VIC-20. How I did it I can’t remember…but when I was 14-ish years old (1983 or so?), I managed to score myself a job writing educational games for the VIC. I remember my mom would drop me off at this company’s office on the way to work, and I’d toil away filling up the 3.5K of RAM. These were the days when you wrote in BASIC, and when you ran out of memory you started to go through and change your variable names from “num” to “n” to save two bytes. :-)

As I recall, I made $100 for each game that was completed and accepted, which was to me a whopping boatload of money. I wrote three games over the summer, and bought a bike.

My next computer was a Texas Instruments 99/4A, which I believe had 16K of RAM. Oh, how I would torment my poor VIC-20 friends with my expansive wasteland of unused memory. Pretty sure I had to sell my Atari 2600 game console to afford this guy – but whew!

I remember writing a “Frogger” game on the TI-99/4A, which was (relatively speaking) a piece of cake because the TI had a sprite engine, which let you make an object and tell it to move (as opposed to calculating new positions on a timer). Wow…the world was my oyster with this baby.

After I wrote the frogger game (which probably took a week or two), I was so excited I wanted to send it to one of my friends, who also had a TI. Now, back in this day, the high-tech storage was cassette tapes, and it was actually a modulated audio recording that was written to tape. So I get this great idea…I called my friend, told him to hold his cassette microphone up to the phone receiver, and I’d play the recording to him over the phone. I mean, we don’t need no stinkin’ modem, right?

Well, wrong, as it turns out…that didn’t work nearly as well as I’d hoped. Like, not at all. Oh well, just had to beg mom to drive me over there with a copy of the tape. :-)

My next computer was a Franklin. I forget the model number, but it was an Apple II clone with 64K of RAM. And it had a floppy disk drive, which would hold something like 160K. Omigosh!

From there, I went to a 80286-based system from CompuAdd, and the rest is basically a history of Intel processors. But the fond memories – the ones that I look back on and see my future career starting from – are the ones of the VIC-20 and the TI-99/4A!