24.8.09

fetchMMS

Receiving MMS on an iPhone sucks. I'm notoriously bad at returning texts, calls, and emails. Any added friction in the process and I'm, in a word, fucked. The process for retrieving MMS on the iPhone is so full of friction that I've all but begged my family not to send me picture mail.

I've written about this before:
Here's the workflow:
  • Receive text message
  • Find a scrap of paper and pen
  • Write down two arbitrary 8-10 character sequences (message id and password)
  • Go to viewmymessage.com by clicking the link in the text message
  • Type in both sequences
  • See picture

I really can't believe that this is the status quo for receiving picture mail. The message IDs I'm supposed to commit to short term memory are things like "u08lr1rdz" and "o1xe34c87". Ludicrous.
iPhone OS 3.0 brought with it the ability to receive MMS directly, and in fact this feature is enjoyed by many iPhone users in other countries. But AT&T has yet to enable their iPhone plans for it. There are some unofficial methods for routing your texts through third party systems in order to capture and email you any MMS you may receive. There are also ways to accomplish MMS on a jailbroken iPhone. None of these methods appeals to me, however. They are too complex and hamfisted for my taste.
We're told by AT&T that MMS is coming soon and it's coming free. But in the meantime, iPhone OS 3.0 also brought with it a way to work around the nuisance of memorizing those godawful message IDs: copy and paste.

It didn't dawn on me that copy/paste could be useful for MMS retrieval until one day when one of those dreaded MMS notifications arrived:

I sent you a multimedia message. You can view my message w/in the next 7 days via the web at www.viewmymessage.com/1 using MSG ID w14xxu4ff Password you5sews

I sighed heavily. Frustrated, alone, and confused, I stared at the screen, wishing there was a better way. And then, there was: http://bit.ly/fetchMMS. The instructions are simple:
  1. copy an entire MMS text message ("I sent you a multimedia message. You can view my message w/in the next 7 days...")
  2. paste
  3. fetch

See it in action: http://www.youtube.com/watch?v=op1xxOsOWFw.

No data is sent to or collected by my server. It's purely client-side - you're redirected to your MMS after a quick javascript parse of the message you paste in. This "No Data Left Behind" policy was partially inspired by David Friedman's Google Voice Speed Dial Bookmarklet Generator, which is similarly simple, functional, and private.

I hope others find this as useful and liberating as I did. Let fetchMMS put the "mmm" back in MMS.

P.S. Mom, you can send me picture mail again. Love you!

29.12.08

Commentary!: The Musical: The blog post

The best part of the DVD release of Dr. Horrible, as expected, is Commentary!: The Musical. It's a lot of humorous banter and fourth wall (or, as one commentator suggests, ninth wall) breaking.

If you haven't seen Dr. Horrible yet, do yourself a favor and set aside 45 minutes to watch it, for FREE, over at HULU.

I got the DVD for christmas - thanks Stacey - as I had ranked it #1 priority on my Amazon wishlist. I've already watched everything a few times through. Here are just a few things that tickle me about Commentary!: The Musical

There is a song devoted to the iPhone game Ninja Ropes that the cast and crew played, and bonded over, on set. The lyrics start with instructions to find the game via google. The song continues with gameplay advice and high score boasts.

Nathan Fillion's song about how much better he is at everything than N.P.H. Includes a fakeout on the series' now infamous "The Hammer is my penis" line. Great delivery by Nate:
Look at his smallness
Compared to my tallness
My porcelain doll-ness
My port in the squall-ness
My Kids In The Hall-ness
My Pink Floyd's The Wall-ness
My three parts of Gaul-ness [ A reference to this article: All Galls Are Divided Into Three Parts (At Least In Goldenrod)? What's up with that? A quote from Julius Caesar's Commentarii de Bello Gallico: "All Gaul is divided into three parts..." (Thanks to Sam K, below) ]
My gestalt and all-ness My just all in all-ness
My wonderful me-ness
My hammer the pe-ople can tell
that I'm awfully swell
while Neil has a weird smell
I'm just saying: Purell

Zack Whedon's rap about being too cool to be involved in, of all things, a musical :
"Dr Horrible"
Z: Hey that sounds kinda dark and cool
"...'s sing along blog"
Z: What the fuck is this preschool?

Hey weren't you the prince in The King and I in 7th grade?
Z: No, but I was back stage in the dark gettin' laid.

Weren't you Pigpen in that Charlie Brown show we did?
Z: No, I just wandered on stage during my homeless period.

Didn't you sing about the business in Annie Get Your Gun?
Z: Is that what that was? I've been tanked up since '91.

Weren't you the Tin Man in the Wizard of Oz or something?
Z: ...Yea, but I played the fuck out of that part.

And I think my favorite might just be the lisp-laden Groupie #3's slow, sweet and sonorous song about S's:
But now I'm super nervous
since I'm standing in the studio
I feel calm in like Phil Collins I'm singing Su-Sudio

Su-Su-Su-Su-Suuudio

29.6.08

Statistical Significance

I've been watching a lot of TED lately.

The TED (Technology, Entertainment, Design) conference is an annual event in Monterey, CA. Each year, a thousand of the most fascinating and thought provoking people in the world are invited to attend. Fifty are given 18 minutes on stage and challenged to "give the talk of their lives" to this myriad of thinkers and doers. Does one steal the show?

For me, the answer is "yes": Hans Rosling.

I'm going to suggest something now, and it's going to sound really boring. Please take my word that it is not. Take 20 min and watch Hans Rosling speak, with his potent visualizations, about world health statistics.

I know the phrase 'world health statistics' probably conjures up thoughts of dry lectures and columns of colorless text containing vast quantities of cold data. But Rosling brings a storyteller's heart and a sportscaster's zeal to this presentation, with stunning visuals and a sprinkle of humor to spice up his sober sincerity.



A year later, at the 2007 conference, Rosling reprises his talk with some new insights. If the first presentation left you enamored with this man, as it did me, this one will surely not let you down. At the conclusion, he brings his point home in a truly unexpected manner.



The visualization tools shown in the video are available at gapminder.org and are every bit as powerful as the presentations make them out to be. But as Steven Levitt warns:
The one danger of great data tools like these, however, is that they create such beautiful graphs that it is easy to forget that what you are looking at are correlations, not necessarily anything causal.

Apparently Rosling met the Google guys at TED. They bought the software behind gapminder.org, Trendalyzer, in 2007 for an undisclosed sum. Interestingly, Marissa Mayer at Google told Rosling "You have to make videos". This offended him. "We want to be modern, we want to make webpages where people lean forward and click," he replied. To which Mayer responded, "No, they don't want to lean forward and click, they want to lean back and watch."

I think they are both right. From the about Gapminder page (emphasis mine):
Gapminder is a non-profit venture promoting sustainable global development and achievement of the United Nations Millennium Development Goals by increased use and understanding of statistics and other information about social, economic and environmental development at local, national and global levels.

For some people, understanding comes through use, through "lean forward and click". For others, through demonstration, through "lean back and watch". In another presentation, Rosling shows a picture of musical notes taken from Chopin's "Nocturne". He supposes that looking at raw data is like looking at a musical score. Only a student in the field can recognize the beauty and power of the composition without tools to realize the potential lurking within the notation.

Beauty and power, in music as well as statistics, come from giving the right tools to the right people. And as the web has done for independent musicians, it can provide the right tools to almost anyone, and let the right people show their stuff. The right tools are becoming accessible and freely available, thanks to people like Hans Rosling.

By the way, he later apologized to Marrisa Mayer after the video of his first TED talk generated over a million views. And at the time of this writing, he has posted 10 short video "GapCasts", which seem to have taken a presentation cue from network TV weather predictions!

12.6.08

View My Message (dot cooooom)

Ever send pictures from your phone? Yea, me too. My cheap, old Samsung phone on Sprint's network supported sending and receiving pictures just fine. My new fancy iPhone a) can't send them, and b) can't receive them. There are two clunky ways around this. Macworld's Dan Moren, an acquaintance of mine whose name I keep happening upon lately, writes:
The not-so-secret secret here is that most wireless providers assign their subscribers an email address based on their phone number. If you send an email to that address, it’ll get delivered as a text message—if you attach a photo to that message—say, using the iPhone’s built-in photo emailing—it’ll get delivered as a picture message.

He's suggesting that anytime I want a friend to send me an MMS, I tell them to send it to me at 6035579073@mms.att.com, and anytime I want to send an MMS, I instead send an email to 6035550000@mms.whoverthehelltheircarrieris.com. As Dan notes, this sucks.

The other long way around the lack of native MMS support on the iPhone is viewmymessage.com. It's a good idea in theory: When an MMS message is bound for an iPhone it is instead stopped at AT&T and posted on a website. A text message containing instructions for how to receive this message is then sent to the original recipient. The problem is in the implementation. Let me elaborate with a numbered list of greivances.
  1. Anybody got a pen?

    Here's the workflow:
    • Receive text message
    • Find a scrap of paper and pen
    • Write down two arbitrary 8-10 character sequences (message id and password)
    • Go to viewmymessage.com by clicking the link in the text message
    • Type in both sequences
    • See picture

    Compare this to my suggested workflow:
    • Receive text message
    • Click link
    • See picture

    These sequences of 8-10 characters for messageid are no picnic, by the way. 'o0nssy2jvm' and 'i06kdklv6' are two actual examples of message ids. Quick, look at the tiny text on your phone and tell me if that's an o, O, or 0! The passwords, however, are passably readable. Things like 'silk9aid' and 'guy7robe' are somewhat easily committed to short term memory.

    The kicker is that the committment to memory or paper that these require is unneccessary. They can be easily encoded in the URL itself, so that the user never has to type them in. I'm pretty sure that's how my Samsung phone 'natively' handled it, and I was barely even aware of the fun I was missing out on. What I'm saying is that instead of the existing link to http://www.viewmymessage.com, include a link to http://www.viewmymessage.com/en/webnonsubscriber/msgidlogin.do?messageId=i06kdklv6&password=silk9aid , which works - or would if I hadn't changed a character to prevent you from seeing my message, in the text message. Poof! Fixed!


  2. Flash as an image viewer

    The messages at viewmymessage.com can be retreived on any multimedia web browser. (I tried using lynx and the site practically scoffed at me.) Using a computer to access your message on that site will likely bring up a small 217x244px embedded flash movie containing the sent picture. I'm sitting here at a computer with 1600x1200 monitor, looking at a tiny picture that i can't even make out. I can choose to 'zoom in' via flash's right-click menu, but since my viewport is limited to 217x244px, I can only ever see a tiny square a time, like looking at a panoramic photo through a pinhole.

    And there's no way to save the image from a flash, except screenshotting. Hey, guess what? People like photos. People like to save photos. It's what they do. The first MMS I got on the iPhone was a picture of Adam and Jess's newborn son, Cohen. I remember zooming to the native resolution of the image within the flash viewport jailcell, scrolling around and taking 6 different screenshots, and stitching them back together in paint to get a decent image.

    Not only is there no way to save an image locally on your own computer, but messages are deleted from the server within 7 days. That sucks.

    If you really want to save a photo from viewmymessage.com, here's what you do: Disable flash. Since the site was meant to be used on an iPhone, which doesn't support flash, it has flash detection built in. If the browser you use doesn't support flash, it instead returns the original JPG. Don't ask me why this isn't the default behavior, cause I sure don't know. Oh, and don't just download the FlashBlock plugin for FireFox. The browser needs to report up front that it doesn't support flash. All FlashBlock does is prevents flash from displaying on the screen.


  3. From: +16035579073

    Who the hell's number is that? (It's mine) Unless your name is Mike Williams and you pride yourself on being able to recall every phone number you've ever entered into a phone, you will not appreciate being told who each photo is from in numeric form.


  4. Long delivery time, Long load time

    The service is unreliable. It can be hours before a message is processed and a notification is sent to you. In addition, I don't know what kind of heavy lifting is going on behind the scenes, but it seeems unreasonable that it should consistently take a full 60 seconds to load the page once I do get a notification. That's on a computer, mind you, not my 2.5G iPhone.


  5. Password field is not shadowed

    Most password inputs on the web use input type='password'. This has 2 main advantages over input type='text'. Firstly, it masks your password on the screen as you type it. You see ******** instead of P4SSW0RD. (And by the way, if you are using leetspeak to obfuscate a dictionary word to use as a password, you should be shot.) The second advantage is special handling of your password with respect to AutoComplete. And by 'special handling', I of course mean 'no handling'. If you don't know, AutoComplete is Windows' way of storing input text from HTML forms (among other places, like the URL bar) for easy reuse. Any time your email gets filled into a web form after only a few keystrokes, that's AutoComplete. AutoComplete shouldn't, and doesn't, complete passwords. This would be silly. It detects passwords via input type='password', and does not store whatever you enter.

    The interesting thing here is what happens when I use this particular password field - any password I may have entered in the past into a similarly incorrect password field shows up in the AutoComplete list for this field. Again, since the HTML author didn't use type='password', AutoComplete didn't know to ignore this field. So there, staring me right in the face are a few of my honest-to-goodness passwords.

    These passwords, in fact every string AutoCompete stores, are in an encrypted file on disk known as the AutoComplete Data Store, or autoDS. But seeing them on screen is just unnerving, as is knowing that there are sites I trust with a password that are irresponsible about handling them. And I have no record of which site stored those passwords in the autoDS.

    Greasemonkey to the rescue! I wrote a tiny GM script to pop up a javascript alert if it detects a password field without the proper type='password' setting. From now on it will lurk in the shadows of every page I visit, waiting to pounce.

    // ==UserScript==
    // @name insecure_password
    // @namespace http://sobohobos.com
    // @description Identify forms that have password fields with type=text
    // @include *
    // ==/UserScript==

    // Author: brett.schellenberg@gmail.com
    //
    // Alert whenever an input named 'password' is not of type 'password'.
    // Inputs like this are undesireable because they may be displayed on
    // the screen as they are typed in, and may also be stored and retrieved
    // in AutoComplete forms.

    var badform;

    badform = document.evaluate(
    '//input[@name="password" and not(@type="password")]',
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);
    if (badform.snapshotLength > 0) {
    alert('Brett says: A password input on this page is not type=\'password\'.');
    }

15.5.08

iPhone sock

Somewhere nearby, I heard a noise like an indoor sprinkler. The alleys around the apartment are narrow, the neighboring buildings are close, and our windows are always open. My first thought was not of my own toilet suddenly and inexplicably spewing water from the intake hookup, but maybe next time it will be. I tried tightening, by hand, the fitting that seemed responsible, but the plastic wingnut-style flaps just snapped off in my hand.

Who makes shit like that out of plastic? If this is an intentional feature of the manufacturer to prevent over-tightening, it's also a way for them to make a quick $6. While in line at the hardware store, I picked up a lens cleaning cloth from the 'impulse buy' section, and was out the door $6.65 later.

The toilet's fine, and now I have a spiffy cloth to clean my iPhone screen with. It's a nice replacement for the original spiffy iPhone screen cloth I lost, which cost considerably more (let me tell you, I had to sink $500 on a piece of crap in a sleek box just to get it).

Now I have two problems:
1) I have invested 65¢ in a piece of material that I am bound to lose
2) You know how people at the beach complain about getting sand in places they don't want? For me, that place is my iPhone. ("Oh man, I got sand right in the old iPhone")

Lately I just wrap the iPhone in a spare bandanna before I go rolling around in the sand, but wouldn't it be cool to have an iPhone covering that was perfectly sized and designed to be used specifically for the iPhone? I swear, someone could actually sell iPhone specific cases and people would probably buy them! But until that day comes, I'll make my own!





Inspired slightly by Sadie's ridiculously overpriced $30 iPod sock from back in the day, it's just a sock... for an iPhone. That doesn't cost $30.

12.5.08

Bing!

(11:08:08 AM) Mike MacHenry: p.s. I just got a new computer and have no AIM aliases set up... so I have no idea who you are.
(11:08:42 AM) me: awesome.
(11:08:56 AM) Mike MacHenry: :)
(11:09:00 AM) me: I always thought you were ugly.
(11:09:12 AM) Mike MacHenry: I guess this is Brett.

26.4.08

On a Mission

I needed eye juice - in fact I slept with my contacts in last night because I didn't have any. It's 5 blocks from here to Longs Drugs. The thought of getting in my car for 1/2 mile drive repulses me, and anyways I like rollerblading. The weather was perfect today, and at 10pm, it's 76 degrees.

Of course, it's a Saturday night, and my journey would take me through, if not the heart, then at least the liver, of the PB bar scene - Mission and Grand/Garnet.

I was greeted by someone with whom I made no eye contact, nor even acknowledged in any way. Experience tells me that this man wanted to buy or sell weed.
I had to dodge a stream of urine - not my own.
I was inches from being backed over by a large pickup truck.
I pushed some guy away from me before I could figure out whether his gestures and slurred speech indicated a desire to hug or fight me.

Is it the rollerblades? I feel like it is. The urine and the pickup incidents would probably not have been an issue if I'd been moving more slowly, on foot for instance. Though, the weed guy was probably just keying off my hippie beard and hair, regardless of my mode of transportation. But I have to think I wouldn't have been bothered by that last guy had I been just a... pedestrian pedestrian.