Jonathan’s Card

The feel-good news item last week was Jonathan’s Card. Apparently Starbucks lets people use their phones as a sort of loyalty + gift card by displaying a barcode. Some guy made his barcode public and offered to let anyone use it. What happened was a kind of Starbucks fan circlejerk as some people used up the money and others replenished it. Starbucks let it go on until recently; some say it was a publicity stunt, others believe it was good publicity for them. Jonathan himself framed it as a social experiment.

Here’s the thing about experiments: they conclude, and the results tell you something. There’s plenty of reasonable hypotheses for this but I think they all boil down to, “Will people use a near-anonymous source of giving and receiving money for good or evil?” for various values of good and evil. For example, if no one deposited money, the conclusion would be, “People are too greedy for this to work.”

Sam Odio performed an experiment of his own. He wrote a script to periodically check the balance of the account and when it reached some amount he had the surplus transferred to his own card. He transferred this surplus to Starbucks gift cards and auctioned the cards on eBay, with proceeds going to a charity. His reasoning was the social experiment was silly because its only side effect was buying coffee for people who could already afford it.

The Jonathan’s Card community is enraged. I’m quite amused by this; most people’s rants start something like this:

I put $10 on the card with the intent of buying myself some coffee. When I got to Starbucks the card was empty! Sam Odio stole my money, he’s a thief!

Let’s paint a different story that happened numerous times and no one complained. Someone put $10 on the card, then left for Starbucks. When they arrived, only $2 were on the card. This happened numerous times, I have no doubts. Why was it OK for unknown individuals to spend the $10 on coffee, but theft for Odio to spend it on charity? Anyone could transfer money from Jonathan’s Card to their own. Sam Odio did nothing unique, and never emptied the card. If anything, this was a flaw in the experiment, not humanity.

Since the card allowed transfer of funds, it was more like a community bank account. If you want to buy yourself some coffee, you don’t put it in the community account.  You take your $10 and hand it to the cashier. Anyone who put their money on Jonathan’s card should have been comfortable with that money being used for anything at all. If you specifically wanted it to go towards coffee, you should have sought a mechanism that guaranteed the use. Some people have taken to buying Starbucks gift cards and leaving them in random locations.

I think the experiment’s conclusion shows that such a community bank account can work: the card rarely stayed empty for long periods and I’m sure plenty of moochers were kept caffeinated. But if a technique for using the money for non-coffee purchases exists, it will be exploited. Something like this card might have been a convenient way to launder some money, but no one seems to have been worried about that.

Starbucks has shut the card down. If it was a marketing stunt Odio likely helped them realize how this card could be misused. If it wasn’t a marketing stunt I think it reflects poorly on Starbucks: the experiment was great while it was money spent on Starbucks merch and a violation as soon as it was spent on anything else. I think it would have been interesting to see what happened after Odio started his experiment; others would likely copy it. Would they make sure to never empty the card, or would they be greedy and make it impossible for money to stay on the card? We’ll never know because the experiment was shut down as soon as the result didn’t look favorable to Starbucks.

RIM’s newest attempt at relevance.

RIM just announced they’re going to port their BlackBerry Messenger (BBM) application to Android and iPhone. This news is a great indicator of why I believe RIM won’t make it through the smartphone wars.

I bought a BlackBerry curve in 2009 because I was too cool to buy an iPhone and Android was still too young for me to take the plunge. I corrected this error on Monday, the exact date of expiration on my Sprint contract. BBM’s a great example of why using the phone was a miserable experience. In my opinion, it’s only purposes are to keep you chained to BB phones out of fear and make you beg your friends to switch to BB phones as well. If RIM had spent their effort on designing a good SMS experience instead, they wouldn’t have to port a BBM application and if that idea were applied across the entire phone they might have had a chance against the new smartphones.

Here’s how an SMS conversation with a person who doesn’t have a BlackBerry worked on my phone:

  • Find the person in the contacts list.
  • “Right-click” their name to bring up a menu with 3 screens of information on it; find “Send SMS Message” and click it.
  • Now type the message and send it; this dumps you back to the contacts application.
  • When they reply, the message is dumped in the general log with missed calls, voice mails, and the spam SMS that BlackBerry sends once or twice a month.
  • To reply to that message, right-click the message and find “reply” in the 2-screen high menu that pops up.

Note that the messages weren’t treated as a conversation, they were discrete phone events. If I were conversing with more than one person, the messages in both conversations would intermingle in the log. Oh, and each message only got one line in the log, so only about 20 characters could be seen. It was miserable. You didn’t *have* to have a person in your contacts to send an SMS, but in 2 years I only successfully pulled that off once after a 10-minute Google search session, so I got in the habit of adding a contact if I wanted to SMS someone.

In BBM, here was the process:

  • Somehow obtain the person’s special BB identifier.
  • Input their 12 digit hex code into the BBM app and now they’re a contact.
  • Now all of your messaging with this person appears as a linear conversation like an IM window.

The only real problem here was obtaining the person’s BB id. It was a hex code with 12 digits or so; imagine if you had to have someone’s MAC address to send an email! The ID was buried in the system options application; I can’t complain too much about this because Apple shoved the iPhone’s MAC information in here too. It wasn’t in anything useful like “My BB ID”, it was in something generic like “Settings>Advanced Options>About”. It took me 15 minutes to find it the first time and always involved a web search afterwards.

Here’s how it works for *everyone* in iPhone, and I bet Android’s similar:

  • Type a number.
  • Type the message.
  • Now the conversation happens in an IM-like window.

Nice, no hex codes! If the person is in my contacts, I can start typing their name and the iPhone automatically searches contacts so I can select them quicker.

The only reason BBM is needed is the poor messaging experience on BB phones. If RIM had spent their effort on making a good messaging experience instead of a special application limited to BB phones, they wouldn’t have a need to port the application to 2 different platforms in an attempt to make it easier for BB users to communicate with everyone else. Even if I had plenty of friends with BB phones, I wouldn’t download this app. I don’t need two messaging applications. I have one that works great. It’s a shame neither of their messaging applications is a good solution, but I think if it’s difficult they should demand better from RIM and switch platforms if no changes are made.

Screencasting on Windows

I’m very active on the Xtreme VB Talk forums; it’s the first programming forum I ever joined and I enjoy sharing my knowledge with other developers. This year I’m trying to transform my blog from a cobweb collector to something I might want to show off, and part of that involves posting more about coding. Posting on the blog lets me incorporate screenshots and videos more easily, so I’d like to start augmenting some of my tutorials here. For that, I need something that lets me do screen recording. Unfortunately, I didn’t find the state of Windows screencasting to be all that good. Here’s a list of the programs I’ve tried and what I think about them.

Requirements

These are the requirements I have for screencasting software.

  • Full screen recording is nice, I’d like to be able to restrict it to a region or window as well.
  • I mostly want to record VS 2010 development, so it has to work with Windows.
  • I don’t care if it can record Vista/Win7 chrome.
  • Control over the framerate is nice; if I’m recording 5 minutes worth of typing code it’s not exactly vital that I get 24 FPS.
  • Transcoding to a Youtube-friendly format would be really nice.
  • Documentation about how to get the best possible quality on Youtube would be nice.
  • The ability to add annotations is required.
  • The ability to speed up or slow down portions of the video is required.
  • I’d prefer one tool over a collection of tools.
  • I’m unwilling to spend more than $125 with a slight margin if features are compelling.

The Contenders

To round out my stable of bullet lists, here’s the list of software I’ve tried or will discuss:

  • Fraps
  • Jing (Free)
  • CamStudio
  • Camtasia
  • Expression Encoder 4
  • BB Flashback Express
  • ScreenFlow

Fraps

This is probably the most famous screen recording tool on Windows. You can get it to record your desktop by clicking a checkbox that makes it monitor the DWM. However, it doesn’t record my mouse cursor, which is really nice for screencasting. It can only record the entire desktop. Any editing of the video must be done with a separate tool.

I’d really only recommend Fraps if you’re planning on recording yourself playing PC games; even then you’re going to have to do some post-recording work unless you fancy uploading 10GB to Youtube.

Jing

I don’t recall how I found out about Jing. It’s made by TechSmith, whose SnagIt is the best screenshot software I’ve ever used. I had high hopes for Jing because the SnagIt’s annotation capabilities were really good. There is a free version of Jing and a Pro version that costs $14.95 per year; I’m reviewing the free version. Both versions make you sign up for a screencast.com account before you can use the software; if you don’t like signing up for new services don’t bother with Jing. I don’t see any real benefit to screencast.com so it looks like a way for them to scrape some emails from signups.

Jing itself is pretty easy to use. It lets you pick the whole screen, a region, or a window, and it can record audio as well. The free version limits you to 5 minutes; that’s pretty harsh but it’s plenty of time to get a feel for how it works. The free version only lets you save to a Flash file or upload to screencast.com. The free version watermarks the Flash files it produces with some branding that appears briefly before the video starts. I’ve used Jing at work to save time writing out the steps to reproduce a bug; it’s perfect for this task.

For screencasting, I’m not sold. The Pro version only adds an MPEG-4 codec, removes the 5 minute limit, and lets you directly upload videos to Youtube. There’s no editing or annotation capabilities, and I have no idea what the Youtube quality would look like since there’s no way to evaluate the Pro features.

I’d recommend Jing for helping you fill out bug reports or making quick tutorial videos for family members that need help using some option in a program. The Flash export is really convenient for distribution. For anything complicated, I’m not sure it’s worth a recurring $14.95.

CamStudio

This is a GPL product so it’s free. I haven’t used it recently, but I used it in the past. I seem to remember it did good full-screen and region recording, and it could pan the region to follow the mouse cursor; it was designed in days when video was quite a luxury.

My main problem with CamStudio is a lack of annotation tools. It can output to AVI, SWF, or its own codec, but all of these will have to be edited in some other tool if you want to annotate your video.

It’s definitely a good choice if you know how to edit and transcode video with some other tool; you don’t get cheaper than free.

Camtasia

This is another TechSmith product; it’s Jing’s big brother. It’s got an impressive video editor and tons of options for exporting video and uploading it straight to Youtube. But it’s $300 and far out of my price range. If I blogged for a living I might be interested. It’s definitely one of the most capable-looking tools for Windows.

Expression Encoder 4

I may have used Expression Encoder 3 when I was working with it; I’m not sure. It’s a Microsoft product related to Expression Blend. There’s a free version and a paid version; it looks like the main difference is the free version limits you to 10-minute screencasts and doesn’t support IIS smooth streaming.

EE is not really an editing tool; it lets you glue different videos together and cut pieces out but you can’t do much more. Its main focus is on converting video to formats that Silverlight can stream well; one of those is H.264. I was mostly intimidated by it because it seemed like it was intended for people that already knew what they were doing. The configuration dialogs weren’t even as much help as a man page, so I found myself changing random numbers and hoping the outcome was good.

I can’t recommend EE because it looks like it’s just a fancy replacement for Windows Media Encoder and it doesn’t make much of an effort to be friendly to someone that just wants to turn their 4GB avi into something that takes less than a day to upload to Youtube.

BB Flashback Express

This one’s relatively unknown but has a lot going for it. Express is free, Standard is $89, and Pro is $199. I’ve only tried Express.

Express has the standard stable of screen recording features and is limited to AVI and Flash formats for export. Standard allows you to create WMV or H.264 video, both of which are nice additions. Standard also promises a nice set of editing features including annotation and re-recording audio. Pro lets you redo mouse movements which is really neat; it also enables frame-by-frame editing and changing the speed of playback.

BB Flashback Pro has all of the features I want, but $189 is far outside my budget considering I don’t blog for a living. Standard has some nice features, but it feels like paying $90 for only half of what I want is silly.

ScreenFlow

This is some software for Mac OS X that looks pretty promising. It’s $99 and has all of the features I want. The only trouble is I need something that works with Windows. I’ve been thinking about picking up a MacBook Air, and I’m curious if I could run Windows in a VM and record that.

Conclusion

There’s no solution that fits my requirements on Windows. The only software that provides all of the editing features costs more than $150. Spending $100 can get me close, but I feel like that’s a waste. While there are several free options, editing video using these options involves mastering several tools. And I’ve never found a good guide for making a screencast look good on Youtube other than vague recommendations like “make your video 1080p” or “use H.264”. I’d appreciate any help on this.

Early Adoption, Smartphones, and Chauvinism

I stumbled across an MSDN Magazine article from a tweet that pointed out it made the absurd statement that all people with smartphones are early adopters. That was strange enough, but then I found myself disgusted with an apparent attempt to prove why there are so few women in Computer Science.

I’m surprised they didn’t edit out the “if you have a smartphone you’re an early adopter” comment. If you trust Wikipedia, smartphones existed in 1992. RIM’s BlackBerry was out in 2002, and Windows CE was the OS for “Microsoft Windows Powered Smartphone 2002”. iPhone’s been out since 2007. I’m not so sure I’d qualify people buying a 3-year-old technology as early adopters, and I’d certainly avoid saying it for an 18-year-old technology. Are VB6 developers still early adopters? I suppose if you narrow the definition of “smartphone” to “Windows Phone 7” it works. At least MS doesn’t have Google’s arrogance and didn’t create a lame new term like “superphone”. I understand his point that smartphones tend to employ cutting-edge technologies, but if we apply that as the definition of early adoption then anyone with a PC is still an early adopter.

The rest of the article turns patronizing and downright sexist. I agree with the premise: we need to make smartphones to appeal to the masses, not just for profitability but because smartphones have the capability to reshape our lives. Mr. Platt suggests we should focus on making smartphones appeal to women to accomplish this. I assumed this would be followed with statistics that showed smartphone usage is a male-dominated area; no such data was referenced so I assume Mr. Platt is relying on his experience. What does Mr. Platt believe appeals to the modern woman? Grocery shopping! Managing appointments for the family! Nurturing children! Making sure the husband’s supper is warm when he gets home! I’m surprised the article doesn’t suggest an application that suggests which sandwich my wife should make for me, or sound an alarm when GPS detects her out of the kitchen to remind her where she belongs. Maybe Mr. Platt believes we should make Hello Kitty themed phones in addition to writing apps to help those of the other gender feel less threatened by this manly device. Oh, but he’s not entirely sexist. He did mention that the woman works a job before tending to her domestic duties.

I suppose I’m trying to get offended so I can write something sensational but I think he could have picked a better way to phrase his example. In particular, I think one should be sensitive when speaking specifically about women then focusing on tasks that line up with traditional gender roles in American society. There’s more to the market of people without smartphones than homemakers. To many people, a smartphone is just an expensive cell phone. Others don’t like the idea of being connected to the internet 24/7. A very large percentage of the country can’t afford smartphones even with the subsidized pricing (My smartphone bill could buy me lunch for a month.) The way to open the market is not to appeal to stereotypes. The way to open the market is to showcase how a smartphone can dramatically improve your quality of life by keeping track of menial information and coordinating with other people’s data. Scoble wrote a good post I can’t find right now outlining scenarios where a smartphone can really make life better. I’ll paraphrase from memory the kind of scenario that would get people to buy smartphones:

We’re in the minivan driving to the conference. My kid’s hungry, so I say “Phone, find me a place to stop and eat.” The phone looks at my GPS location and route and finds several restaurants along the way. It finds a Burger King in 2 miles but notices I tend to eat at McDonald’s more and picks one of those 4 miles away. “Does it have a playplace, I need one of those.” The phone checks a database, realizes there’s no playplace at this McDonald’s, and asks if I’d mind visiting one that’s 10 miles ahead instead. We stop and spend 30 minutes; the phone notices this will make us arrive 30 minutes later than expected and that I had a meeting I might be late to; it sends a notification to the participants to give me some extra time.

That’s the game-changing kind of functionality we need. Scoble wasn’t making this point (he was discussing how data islands are preventing this scenario) but it’s the future I want. If I wanted to do this kind of work today I’d have to pull over, check the map, find the restaurants, then start using individual websites to determine which restaurant had a playplace. My GPS can find the restaurants, but it doesn’t know which ones to suggest. It can’t tell me the closest McDonald’s is closed for renovations but there’s another one 12 miles ahead. It’d be up to me to check my route, recalculate arrival times, and pull over (again!) to notify my colleagues I’m running late. Ubiquitous web connectivity enables a device to perform these tasks for me, and a smartphone is the strongest candidate for a web-enabled device I’ll keep on my person at all times.

So I agree that practical apps are what will win the masses over. There is a need for apps that are recipe books, pantry managers, shopping list generators, and train schedule monitors. But it’s wrong to say these apps are important because women need them. Everyone needs them.

I’m additionally disappointed that Mr. Platt is writing about this as if it’s some revelation. When I went to Apple’s online app store, I found categories like “Apps for Cooks”, “Apps for Students”, and “Apps for Working Out”. The “Apps for Students” page suggests a National Geographic reference application, a scheduler and homework planner, and a couple of other useful applications for students. Apple knows real people are using their phones and has created lists that appeal to these real people. Android’s market is a step down from that; their online presence gives me categories, but isn’t searchable and isn’t organized well. I expected some kind of encyclopedia application at the top of “Reference”, but instead it’s “Worship Music”, “Final Fantasy XIV Guide”, and “Black Ops Intel Plus”. That definitely has the “this tool is for geeks only” vibe to it. What of Microsoft’s app store? If I don’t want to download Zune, all I get is “Featured”, “Top Paid”, and “Top Free”. A few of the apps look useful, but it really gives the impression that WP7 is a gaming platform for geeks. (Android’s app store is probably better on an Android too. I think it’s stupid to require your user to download software/purchase a phone to see your store.

It seems Apple’s the only company that’s figured out what Mr. Platt is saying and following up on it. Apple’s the only company that lets me get a phoneless view of their store that makes me feel like their device is intended for normal people. I suppose that’s why the article was written: if you narrow your definition of smartphone to “Windows Phone 7”, you find a world of early adopters and developers that need to write for the masses. This is why I’m waiting a while before picking up a WP7: it’s still going through the “geek app” phase Mr. Platt suggests the iPhone is still langushing in. No, real developers are writing influential apps for the iPhone. If it’s happening on Android or WP7, I can’t see it without buying a phone. They might want to see about that.

Update: Check out Word Lens: an application that translates text in an image from one language to another. Fancy fart app for the iPhone, no?

Fiddling with the blog

I want to fiddle with the theme or find a theme that works better than the default one. If stuff looks broken, I’m probably going to fix it.

Probably.

*Update*
I’m done with what I want to fool with tonight; I need to do some research for the rest.

Miniblog

I started a Tumblr blog.  I’ve had an account on Tumblr for a few weeks now, and mostly what I did with it was try to find out what kind of purpose I might find for it.  After fooling around with it and getting comments installed on it, I decided I’d found a niche.

My Tumblr blog is for the little things I find or think of that are too small for blog posts, but require more discussion than a tweet.  I’ve got a huge instapaper backlog of sites that I’m supposed to read later.  My del.icio.us list is tainted because coworkers follow it, so it’s more business than personal.  I needed something that I could use to find the little Youtube videos, quotes, and sites that I want to look back on every now and then, and Tumblr fills this need.

So the hierarchy of information about me is as follows:

  • My Twitter account is for brief thoughts, discussions with other people on Twitter, and random retweets of links that look interesting.  Twitter doesn’t archive your stuff forever, so it’s all throwaway.
  • Links, quotes, or thoughts that I want to stick around forever go to Tumblr.  In particular, if I have a somewhat long comment or want to call out a section of a page I’ll use Tumblr.
  • This blog is where longer, more organized thoughts go.

I’m happy with this, it’s cleared up some of the problems I had with using instapaper and del.icio.us.

The next long post will be about the band that played before The Flaming Lips, followed by comments on the venue.  Both will be much shorter than the Flaming Lips blog post.  I’m going to wait a few days because I want this to have some visibility.

Interesting solution to a WPF resource location issue

Design-time is one of my hobbies, and I’ve been fooling around with the WPF designer ("Cider") lately.  I’ve been making adorners do interesting things for the most part and havent fooled around with property editors much, which makes me kind of useless for Blend.

A pattern I’ve been following involves structuring my projects with a folder for each control I’m providing support for.  Each folder has its own resource dictionary in a Resources.xaml file, and the Themes/Generic.xaml includes all of them as a merged resource dictionary.  It works great, but I recently had a problem, couldn’t find the solution, and now that I know what went wrong I want search engines to help others out.

My metadata was loaded correctly, but none of my templates were being applied to adorners.  I thought something was wrong with the merging of the resource dictionaries, so I tried moving a template into Generic.xaml; no dice.  Nothing I did seemed to be making the project pick up the template.  I set up some small proof-of-concept projects, and couldn’t find anything visibly different about what was wrong.  The end of the day arrived and I decided I’d just delete the project and try again tomorrow.

Tomorrow became today, and the project was magically working.  I called a coworker over to witness the event, and he began to point at my project.  "Why do you need that junk in Properties; it’s a class library and you won’t use application settings and resources?"  I agreed; yesterday I’d deleted them too.  In fact, early today I had deleted all of them but our source control decided they were important and resurrected them.  I’m glad it did.

It turns out that in AssemblyInfo.cs, which I clicked on for kicks, there is a ThemeInfoAttribute that tells the project where to find the non-themed and themed resources.  If it’s not there, whatever is supposed to look for Generic.xaml doesn’t look there.  Oops.  When I deleted AssemblyInfo.cs, I broke the theming!

So, if you’re depending on themed or non-themed resources in WPF, don’t delete AssemblyInfo.cs!  Or, if you do, make sure to apply an assembly-level ThemeInfoAttribute somewhere else.  Don’t waste half a day like I did!

Testing Source code posting

Supposedly there’s a markup element for posting code on WordPress blogs.  This is just a test; I’m actually planning some big posts and it will determine if I use the blog or just link to a static page.

public void DoSomething()
{
     MethodCall();
}

Welp, either I did something wrong or WordPress lied to me. I’ll try upgrading this weekend.

*Update:* Turns out I needed to manually install this syntax highlighter.

What I hate about the web these days

Let’s assume that I’m looking for information on some fringe programming topic that doesn’t have a lot of pages with content.  It might be something like the new D3DImage class in WPF that allows you to render DirectX content on a WPF surface, and whether there’s a way to make it work with the XNA framework and thereby avoid having to write managed code (not all shops have people proficient in writing managed code.)

So I ask Google to tell me what it knows about this; looks like a few results, right?  The first two I see are a The Code Project article and the MSDN documentation, which seems like a pretty good first two results.  Buried in the results is a forum post with a user asking about using SlipDx with the D3DImage.  The rest of the results are nothing but blog posts, forum posts, and news posts with nothing but "Dr. WPF wrote an article about this, here’s the link:"

Isn’t Google supposed to be smart?  Why can’t it filter out blog entries with non-ad content of less than 20 words?  I have to wade through a sea of these blog posts which are nothing more than internet trash to find any articles about what I’m interested in.

Snarky Comment of the $timeperiod

I read Jeff Atwood’s Coding Horror as frequently as he posts material.  Like many blogs, the true entertainment value comes from the comments.  I saw this one today:

$40 for SmartFtp. $40 for Winzip. Multiply by all the small tools you need. I won’t even begin to get to get into real development tools like Visual Studio. Windows developers seem to be made of money. One of the reasons I got out of the Windows world a decade ago was the cash I was shelling out just to stay current.

I’m particularly fond of the "Windows developers seem to be made of money" part.  It expresses surprise that somehow, people who develop on Windows have a lot of money to spend on tools.  The viewpoint of astonishment implies that, as a non-Windows developer, the writer does not have very much money and is curious why people who develop for Windows have more money than he does.  Hmmm…

I’m not implying there’s more money to be made on either side of the war, just that I wish people weren’t stupid about their jabs at the other side.  There’s tons of free FTP utilities for Windows; one was mentioned in the very post this user commented on.  I haven’t used Winzip for at least 5 years because the zip support built into Windows is adequate for me, and 7-zip is useful for when I encounter a file that’s not a zip file for whatever reason.  Visual Studio is a nicety but SharpDevelop is just fine and free; a decent coder should be able to get by with Notepad in emergencies anyway.  The poster’s main points are:

  1. All Windows development tools cost money.
  2. Windows developers can afford the tools because they have a lot of money compared to non-Windows developers.

The first one is false.  The second depends on your definition of "a lot" and "Windows developer", but doesn’t do much to encourage me to hug a Penguin in the near future.