Technobabbles I try to sound like I know what I'm talking about. Don't be fooled.

2Jun/103

Hypothetical Google Voice Export Format

Google Voice was released over a year ago, and I've been using it as my primary phone number since switching from its predecessor, GrandCentral, which I'd used since 2006 (also as my primary phone number).1 In the time since making the switch, I've seen the interface revised more than a little — the quality rating buttons for transcripts and calls are among my favorite enhancements — but despite all the new features introduced over the last 14 months, one has been distinctly lacking.

That one feature: Export.

Think about it. Google Docs lets one download all of one's documents, spreadsheets, and presentations in a ZIP archive. Gmail allows both IMAP and POP access to mail accounts, facilitating the complete backup of account data to a personal computer or server. Google Reader offers export of one's entire subscription list. Google Calendar offers export formats compatible with several desktop and Web competitors' products. Google Contacts can be downloaded and imported into Microsoft Outlook, Apple Address Book, and countless others.

I could go on.2 Just about every Google service offers some way for users to get their data out.3 Google's Data Liberation Front initiative is a demonstration of their commitment. So why can't I export my Google Voice data?

The Case

When GrandCentral was shutting down, users had to download messages one at a time. There were also large holes in the data that could be recovered due to a glitch in the storage system that irrevocably lost dozens of my messages, and likely thousands more from other users. (Most annoyingly, pleas from users for the company to do something about the data loss fell on deaf ears.) The issue was never officially addressed or explained; all we former users can do is speculate as to why our messages were forever irretrievable.

Fast-forward to Google Voice. The export function is still limited to downloading individual voicemails and call recordings, one at a time, manually. There is no support for exporting the transcripts of these audio recordings. It is not possible to download SMS conversations (save for copy-and-paste to text files). Call logs can only be backed up by painstaking manual duplication into a spreadsheet or other suitable format.

Every Google Voice account is amassing even more data than GrandCentral accounts did, thanks to support for text messaging (a long-awaited improvement, even if it doesn't support SMS-to-email or4 shortcodes5). Billing logs for international long-distance are another piece of the corpus.

All of this information is potentially useful in the future. There is a reason that users have flocked to the service and its promises of one number forever, keeping messages forever, and so forth. It's unlikely that Google itself will enter the deadpool any time soon, but services have been cut before. If Google Voice doesn't meet all the right expectations of Google's higher-ups, it too could get the axe. All those messages that were supposed to be kept forever? Gone.

I like to use the now-defunct Twitter-like service Pownce as an example. When the decision was made to shut down the site, a new section appeared in users' settings. That section allowed them to request a backup of their account data for download. To this day I can still open up a backup file and peruse my activity on the site, though it is long dead.

Unfortunately, I can't believe that Google would have its engineers develop a similar export tool for a service about to be shut down. It didn't happen for GrandCentral, that's for sure. Other companies (*cough* Nambu *cough*) have a similar attitude: Users don't need copies of their data; just jerk the tablecloth off the table, and all the dishes with it. Besides, I can't forget the seemingly arrogant launch of Google Buzz, right into my face. In short, there are precedents for Google violating DBAD.6

The Solution

Solving this problem is relatively simple. If a complete and total export feature is developed and released well before Google Voice is threatened with a shut-down, there won't be any issue. The phone numbers assigned to Google Voice accounts (so-called Google numbers) can be ported out to another provider — that was a core policy right from the start — so there's no issue of losing that; I could port my Google number to a cell phone right now. All future issues would be handled by someone else. Google's problem is historical data and keeping their promise to users.

How should the Google Voice team go about accomplishing this feat? I've been mulling over different ideas for the past few months, and I think I've come up with a reasonable export format.

The Format

My hypothetical export file looks something like this:

Google_Voice_export_acctusername_2010-04-30T14:23:47.zip

  • /Greetings
    • /System Default.mp3
    • /Call Widget Greeting.mp3
    • /Robotics Team Greeting.mp3
    • ...
  • /Notes
    • /nt234.txt
    • /nt601.txt
    • ...
  • /Recordings
    • /cr234.mp3
    • /cr623.mp3
    • ...
  • /SMS
    • /sc601.txt
    • /sc728.txt
    • ...
  • /Transcripts
    • /ts142.txt
    • /ts234.txt
    • /ts324.txt
    • /ts623.txt
    • ...
  • /Voicemail
    • /vm142.mp3
    • /vm324.mp3
    • ...
  • /call_logs.csv
  • /recordings.csv
  • /sms.csv
  • /voicemail.csv

A few notes:
1) Files in any of the directories (except /Greetings) can be divided into date-dependent subfolders, but it's simpler to not do so. It's only an issue if the number of files in a directory exceeds file system limitations.
2) Obviously the IDs would be much larger in a production setting with thousands or millions of users; mine are just for illustration purposes.
3) I don't know if Google's database maintains separate IDs for each data type or if it keeps a single ID counter for all records, but that's why I prefixed each file type with a letter code indicating what it is: cr = call recording, nt = note, sc = SMS conversation, ts = transcript, vm = voicemail.

The Parts

Files

Within each CSV file are rows with the following data fields:

  • call_logs.csv: ID,Timestamp,HasNote,Number,Type,Name,StartTime,EndTime
  • recordings.csv: ID,Timestamp,HasNote,Number,Name,Duration
  • sms.csv: ID,Timestamp,HasNote,Number,Name
  • voicemail.csv: ID,Timestamp,HasNote,Number,Name,Duration

All timestamps are in UTC. It is easiest for all IDs to be unique, across all item types, though again I don't know how Google stores the data. I assume that the ID namespace is shared among all Google Voice items. I've used that assumption as the basis for some of my archive structure decisions; because of it, I did not need to disambiguate between notes attached to the different item types.

The exported CSV files contain required, optional, and conditional fields. Required fields must be non-empty; optional fields may be empty and are filled in if appropriate information is available; and conditional fields are required based on the value of another field.

Field notes: The HasNote and Duration fields would be useful to have, but are not required as the values they contain can be determined using other methods — respectively, by checking for the corresponding nt<ID>.txt file in /Notes and by checking the duration of the corresponding audio file in /Recordings or /Voicemail. I've left them in because, in the long run, having them would make it easier and more efficient to write a program to read the archive.

call_logs.csv

Required fields: ID, a unique record identifier; Timestamp, the item timestamp used on the Google Voice website; HasNote, whether the item has an attached note (1 for yes, 0 for no); Number, the phone number of the other party; and Type, the type of call record (placed/missed/received)

Optional fields: Name, the name of the contact (if the phone number can be matched to a contact)

Conditional fields: StartTime & Endtime, start and end timestamps for calculating call duration (empty for missed calls, as there is no start or end time)

ID cross-references: note

Call log entries are cross-referenced by ID to note files in the Notes directory if HasNote is 1.

recordings.csv

Required fields: ID, a unique record identifier; Timestamp, the item timestamp used on the Google Voice website; HasNote, whether the item has an attached note (1 for yes, 0 for no); and Number, the phone number of the other party

Optional fields: Name, the name of the contact (if the phone number can be matched to a contact); and Duration, the audio file duration

Conditional fields: none

ID cross-references: audio, note, transcript

Call recording records are cross-referenced by ID with audio files in the Recordings directory, note files in the Notes directory (if HasNote is 1), and transcript files in the Transcripts directory.

sms.csv

Required fields: ID, a unique record identifier; Timestamp, the item timestamp used on the Google Voice website; HasNote, whether the item has an attached note (1 for yes, 0 for no); Number, the phone number of the other party

Optional fields: Name, the name of the contact (if the phone number can be matched to a contact)

Conditional fields: none

ID cross-references: conversation text, note

SMS records are cross-referenced by ID to text files containing the full conversation, formatted like instant messaging transcripts:

(2010-03-21T04:12:02) Me: what's up?
(2010-03-21T04:14:53) John Smith: not much, got a test tomorrow fml
(2010-03-21T04:17:19) Me: what subject?
(2010-03-21T04:18:17) John Smith: history ugh
(2010-03-21T04:20:02) Me: ugh indeed. good luck and try not to die ;)
(2010-03-21T04:23:47) John Smith: thx. if u dont hear frm me tmrw its bcuz my brain asploded

Again, all timestamps are in UTC.

SMS records are also cross-referenced by ID to note files in the Notes directory if HasNote is 1.

voicemail.csv

Required fields: ID, a unique record identifier; Timestamp, the item timestamp used on the Google Voice website; HasNote, whether the item has an attached note (1 for yes, 0 for no); Number, the phone number of the other party

Optional fields: Name, the name of the contact (if the phone number can be matched to a contact); and Duration, the audio file duration

Conditional fields: none

ID cross-references: audio, note, transcript

Voicemails are cross-referenced to audio files in the Voicemail directory, note files in the Notes directory (if HasNote is 1), and transcript files in the Transcripts directory.

Folders

The folders should be pretty self-explanatory. /Greetings contains recorded greetings (the only files with "real" names, though I'm sure they too have IDs on Google's end), /Notes contains the text of notes added with the Google Voice website's "Add note" feature, /Recordings contains recorded calls, /SMS contains full transcripts of text-message conversations, and /Voicemail contains voicemails.

The Greetings folder doesn't have an associated CSV file because I think the files it contains should just be given the same name as the corresponding greeting in Google Voice's settings. None of the other items really have names, so they can all go by ID and be indexed in CSV files; but the user is likely to name each greeting descriptively and that name shouldn't be hidden behind an abstraction (read: obfuscation) layer in the exported backup file.

Alternate Ideas

I toyed with the idea of somehow including time zone information to help put timestamps in context, but there's no good way of doing it. Put a time zone at the account level and you lose changes. I doubt there's a user-preference history somewhere in Google's database. Try to put it on each record and you have a nightmare, since most of the time there's no indication that the user changed time zones. The user can figure out where he/she was on any given day and mentally adjust the UTC timestamps given if it's really that important.

Similarly, I thought about including preferences, caller groups, and so forth, but I don't know enough about the data structure to come up with an estimated export format.

It occurred to me that the exported CSV files could also contain a ContactID field, matching up with the corresponding Google Contacts entry. That way, external applications could hook up to the GData Contacts API and pull the contact's information to enhance the information display. For example, a third-party app could emulate the way Google Voice's website places the contact's photo next to each related entry. I left this out of the above spec because of the potential for inaccurate ContactID values; who knows what the user will change in her contacts between exporting the Google Voice data and trying to use a third-party app with it.

Speaking of third-party apps, that's why I've tried to keep my hypothetical format so machine-readable. What if Google or another developer wrote a Web app or cross-platform application that could import the archived data and present it in a graphical interface? It'd be a great way to access archived information while offline — of course, Google could also add offline support to the site, but it's always good to have alternatives. The possibilities are truly endless; my contact-photo example above could be done with the export format as-is, though it would take a little more API work.

The Goal

My objective is not to have Google implement my solution verbatim; I know there are glitches in my reasoning, holes in my contingencies, omissions in available fields, etc. I wrote this specification (for that's pretty much what it turned out to be) to prove that it's possible to come up with a reasonable way to export all the data currently trapped inside Google Voice accounts.

Like I said, I know this isn't perfect; it's just a starting point. If you think the way I designed some or all of this format was unreasonable, go ahead and tell me. The comment form is there for a reason: That's where you can say, "I think you're wrong; here's why."7

Anyway. If I can come up with a data export format that includes most of the information Google has tucked away in a database somewhere, the engineers who work on Google Voice can certainly come up with a format to include every last scrap of data. After all, I'm just an amateur. :)

Update (06/11): Navarr, in the comments, reminded me that I left out the billing logs, as well as the per-call cost data. Since it would just add another CSV file and a field in call_logs.csv, I'll declare it an omission trivial enough to not bother correcting.


Notes:

  1. Unfortunately, GrandCentral was notorious among many of us users for "losing" messages from before November 2007, so I have no records of my first year-or-so using the service. []
  2. Google Page Creator, though discontinued, offers ZIP downloads of the entire site and a redirection facility to keep links from breaking. (I myself have used it, along with an excellent WordPress plugin, to migrate files I uploaded to Google Pages to bits.technobabbl.es, their new home.) []
  3. Blogger offers an export as well, but so far as I know it can only be imported into another Blogger site. []
  4. Update (06/11): Thanks to Nathan Brauer for correcting me about SMS-to-email. Sometimes it's dangerous to write blog posts too far in advance: things slip through during the proofing process. :P []
  5. It does support a few Google-controlled short numbers; I know of three: 46645, 466453, & 48368 []
  6. DBAD was an essay on the English Wikipedia, formerly known as WP:DICK or WP:DBAD; in the months since I was last really involved in the Wikimedia culture, it was apparently moved to the Meta wiki. Surprised the hell out of me. []
  7. Obviously, if you're not reading this on the site, you'll need to take an extra step to get a comment form. ;) []

1May/100

Reflection Squared: On Clifford Stoll’s “High Tech Heretic”

The other day, I was browsing the computer shelves at a local Border's book store. I came across Cliff Stoll's acclaimed book, The Cuckoo's Egg. My dad's recommended the story to me in the past, and the premise was intriguing. After all, who wouldn't want to read a non-fiction account of cyber espionage that reads like a top fiction mystery? I picked up the book and proceeded to spend the next two hours engrossed, reading right through the soft muttering and louder tapping of the woman in the chair beside me.

Of course, the time to depart arrived and I had to stop. Still, I read about 25% of the book in one sitting. I replaced the book on the shelf, noting to look for it at the library and/or add it to my wish list. (Even if I wanted to buy it, I wasn't exactly in a position to do so.)

The next day, en route to the upstairs computer lab, I checked the public library catalog. The Cuckoo's Egg wasn't in stock, and was checked out until the 21st of April, but I noticed that one of Stoll's other books was: High Tech Heretic: Why Computers Don't Belong in the Classroom and Other Reflections by a Computer Contrarian. On impulse, I checked the book out.

What I found inside, later, was intriguing. My parents have been skeptical of computers for a while. Though my dad uses them for his business, and my mom is warming up to them after years of asking me why I find them so interesting,1 there's still a big disconnect between us.2 I've vaguely known the reasoning behind their conclusions for years, but High Tech Heretic has shed some light on the details — and not monitor glow.

Programmed Instruction

Despite my parents' computer skepticism, I took my entire high school education online. I believe it was a good experience, though not for the reasons one might expect. It's not that I necessarily learned more than I would have in a conventional school — though I probably did, since the online coursework better fit my learning style — but rather that I spent a good chunk of my "school" time correcting the course material. Lazy QA teams had left the text, quizzes, and tests riddled with little errors. Through my teachers, I sent corrections, and my correction work earned back more than a few points that were wrongfully denied me in nearly every course — though I never got so much as a "Thank you" from the course distributors. (A rare few courses were bereft of glitches. I treasured them, because I didn't have to keep second-guessing everything.)

What was interesting about some of the corrections, though, was that sometimes it was just a matter of input formats. Most of the graded tests were multiple-choice, but many of the in-text "Self-Check" quizzes featured free-text inputs. Such quizzes were graded by JavaScript code, to give students an idea of how well they understood the material. But some of them had vague or quirky requirements about how answers were entered, and some of the quirky expectations made by the programmers resulted in points lost by students.

Stoll addresses the issue on page 16, in reference to B. F. Skinner's experiments with programmed instruction in the 1950s. Skinner's approach was nothing new, really — it mimicked a popular learning method preached by many educators then and now: repeat a topic until the student demonstrates understanding. Skinner's machines rewarded students for correct answers with further exploration of the topic, while incorrect answers led to review.3 However:

…programmed instruction flopped. The machine forced kids to regurgitate whatever answers the programmer wanted. There was no place for innovation, creativity, whimsy, or improvisation.

This sounds very familiar. Almost too familiar. The quizzes in my online coursework sometimes had bizarre expectations for what was to be typed into the text boxes. I once had a quiz (thankfully not graded) that balked at accepting a floating-point number (0.17 or something) with the leading zero; the expected input was .17 and too bad if you've been trained to put in the leading zero. The programmers were treating all text box inputs as strings, rather than parsing the values into numbers when appropriate. We all know that programmers are lazy, but certain kinds of laziness are inexcusable.

Skinner's ideas persisted, even into the years of my childhood. I had plenty of educational computer games in my youth, and maybe they did help teach me. Very little of what I know comes from conventional schooling — I know that much. Reading, writing, arithmetic, higher math, typing, (amateur) programming — all of it I learned outside the classroom. Reader Rabbit, Treasure Math Storm, and Edmark's Mighty Math software deserve more credit for my education than any school classroom I ever set foot in. Forgive me if it sounds like bragging, but I could read and write circles around most of my traditionally-educated friends all through my schooling. Kumon and my learning-friendly home environment can take the credit for my perfect score on the ACT's English section, not the school system.

Stoll also brings up computers in the classroom repeatedly. One great example is the replacement of science labs with computer programs. My local high school has a chemistry/physics lab, but an unscientific sample of the classes taught in the room shows much greater use of the computers for experimentation, rather than the lab equipment.

Learning the Tools, Not the Trades

Stoll also brings up the issue of learning how to use specific tools rather than the concepts underlying them. Chiefly discussed in the chapter "Calculating Against Calculators", the arguments focus on numerical fields; however, the thread is present practically from the beginning and applied to all subjects.

Through school, students are handed calculators in math class. They're trained to punch in the numbers and trust the calculator to come up with the right answer. Now, common sense dictates that one should always be able to estimate, so as to be able to catch errors in a calculation. In theory, students are taught to mentally check the calculator's results; in practice, assignments are turned in with answers stating that a radio tower is a fraction of a millimeter tall.

On page 85, the University of Illinois is used as an example. The school developed a calculus course centered on the Mathematica software. As such, the students learned how to integrate functions using Mathematica, rather than learning how to integrate. Students trained to use certain software programs for problem-solving often didn't know what to do when the electronic part of the equation (sorry) was removed.

In my math classes, I can remember very few times when I wasn't encouraged to use a calculator. A TI graphing calculator was a requirement for high school math classes, but I got through four years of online instruction with a photoelectrically-powered scientific calculator, used mostly for checking myself and dealing with nasty decimals. (I was fine graphic linear equations on graphing paper, but I did cave in and download a software program to do the parabolic and asymptotic functions for me.)

Learning tools at the expense of the underlying concepts isn't just limited to math. From my own experience, as well as friends', I've seen courses teach how to use a particular software program to solve a problem, without explaining what the program does. Modern English course requirements for electronically-submitted papers just begs for students to rely on spell-checking software. Many of my fellow students routinely misspelled even the most common and simple words. I can't help but blame Microsoft Word; it's the de facto standard for word processing these days, and defaults to automatically correcting a huge list of common misspellings so sometimes the user doesn't even know he's made a mistake. That's a bad idea for software used in education.

Systems Design Philosophy

Perhaps one of the best points made in the book is taken from David Gelernter's thesis: "Technology's most important obligation is to get out of the way." This point, from page 139, illustrates the basic purpose of machinery: making life easier. Bad design and useless features remove the helpful aspect of technology and replace it with nuisance.

Ah, PowerPoint

Following chapters on, among other things, the wiring of libraries and the planned obsolescence of computer systems, an entire chapter is devoted to PowerPoint and its fellow presentation software products. I thought the best part of this chapter was the section discussing the use of presentations in schools.

With my online learning experience, I was thankfully spared most of the PowerPoint junk that has made its way into the school curriculum. However, I had teachers in the offline world as well, and a few of them used PowerPoint to disastrous effect.

One such teacher followed the model for meetings presented earlier in the chapter: Notes for the students, slides on the screen; the lectures consisted of reading the slides aloud, with zero additional information presented in the spoken words. I was always bored to tears in that class. It was ironic that the course title was "Public Speaking", since such a class should be teaching students how to keep an audience's attention instead of how to make the audience yawn.

Another teacher — this was in a public school — taught her AP U.S. Government course using PowerPoint. She read from the slides, often rushing through and/or skipping slides for time (no worries, the slides were available on her personal Web page for study at home). Her habit of putting paragraphs on the slides wasn't exactly prime PowerPoint use, but at least she added extra tidbits to her lectures that weren't in the textbook or on the screen.

I should also note that part of that Government class was a group presentation project, on which I got a good grade just by going up and reading a few of the several slides produced by my group while I was sick. That isn't a complaint — I like good grades just as much as the next guy — but I didn't really have any input whatsoever on the project save for a few grammatical corrections. (I won't get into how my classmates made it difficult for me to contribute, even though I was perfectly willing to do my share.4)

I present these examples mainly to illustrate my own personal experience with the problems Cliff mentions on pages 182 – 183. (It's interesting that his main classroom example also involves a social studies teacher.) I'm sure educators would be quick to defend the growing use of PowerPoint in schools by citing technological familiarity for future job use, same as they would for school Internet connections (which are useful, but often inadequately restricted).

Dated Material?

I did have the thought throughout the book, however, that perhaps some of Stoll's opinions would be quite different if written today. In particular, page 189's assertion that professional editors and journalists just don't exist on the Internet is no longer true. That assertion is a fundamental point in several arguments following — arguments that would probably be different (if only slightly) if written from a 2010 perspective instead of a 1999 perspective.

Similarly, page 191 asserts that search engines don't understand concepts and ideas, only words. Today's indexing engines aren't perfect, but great strides have been made in machine understanding of language. Just look at services like Aardvark. (This is, of course, just a tiny subset of the possible examples I could have pulled from the book.)

Of course some things — unfortunately — never seem to change. I stupidly didn't note the location of it, but somewhere in the latter part of the book Stoll laments that search engines rely on correct spelling to find information. Spelling is a skill seldom taught or learned in today's world (it seems), and we rely more than ever on spell-checkers. Many services offer their own (see Gmail & Google Docs as examples) in the event that the user's browser doesn't have one already built in. Search engines have been trained to recognize our mistakes in queries (à la Google's classic "Did you mean?" lines) and sometimes I think they also detect mistakes in pages they index.

Overall

High-Tech Heretic contains a good many well-placed warnings, and I very much appreciate Stoll's opinions on the replacement of human and paper resources with technology. However, I hope that his later writings are better edited. This book has quite good spelling (good, since he brought up that issue) but the grammar is lacking in a few spots; I found a decent number of omitted or misplaced words.

Nitpicking aside, the message of the book is clear and appreciated. Technology has a place, and we shouldn't let it get out of the corner we've set aside for it.

Update (05/04): Corrected missing markup that caused most of the text to appear as a giant footnote. Proofreading failure on my part; sorry!


Notes:

  1. She's begun asking me about websites and such: Hosting recommendations, platform suggestions, that sort of thing. It's kind of cool that she's interested now. []
  2. I used to go to my dad with questions about the computer. Now, he comes to me with his questions and I use search engines to find answers for my own. []
  3. I had several experiences with this type of learning, including both online (with Stanford's EPGY program) and off (with Kumon, a Japanese-originated curriculum in math and reading). []
  4. Schools seem to use group projects a lot without teaching students how to collaborate, kind of like a lot of theatre classes tell the actors to project without getting into the mechanics of doing so. []

11Apr/100

Credit to St. Kate’s Computing Services

A while back, I complained about an annoyance in update scheduling on the computers at St. Catherine University. While my experience was disrupted for that one night, I don't think I made it clear enough that overall, the St. Kate's IT department runs things very well. Because of when that incident occurred — during tech week for Guys and Dolls—I wasn't in the best of moods, and I think my writing the following day reflected that.

Compared to other institutions at which I've had the privilege of computing, St. Kate's actually leads the pack in most areas. Augsburg College provides an especially good contrast to St. Kate's:

  • Operating System: Windows Vista (Augsburg)1 vs. Windows XP (St. Kate's)
  • Time To Internet:2 3 min. (at least, Augsburg) vs. < 2 min. (St. Kate's)
  • Startup Annoyances: Novell iPrint demands a second login, ZENworks and Novell run slow scripts before the user can do anything, Internet Explorer and PaperCut NG automatically open (Augsburg) vs. Internet Explorer and PaperCut automatically open (St. Kate's)

Of course there are little annoyances. Auto-startup of Internet Explorer and PaperCut is common to both institutions, as is Firefox's demand to be restarted to fully disable the unstable MetaStream 3 plugin. (In true Murphy's Law style, the prompt always pops up right when I'm in the middle of something. And restarting FF logs me out of most websites. Of course, I could ignore the prompt, but experience has shown that all I'll accomplish is a Firefox crash. At least it isn't lying that the plugin is unstable.)3 However, once one gets past these start-of-session annoyances, the experience is very smooth and pleasant. The configuration stays out of the way for the rest of the session, and that's exactly how computers intended for work unrelated to computing should behave: Pipe down and let users get things done.

When St. Kate's is held up to institutions like Hamline University and Concordia University, the others pale in comparison. Neither Concordia nor Hamline offers a browser alternative to Internet Explorer. Fortunately it's relatively easy to run Google Chrome from my flash drive or temporarily install it on the local machine, or computing at such locations would be unbearable.

Starting Internet Explorer at Concordia, even just to get a copy of Chrome downloaded, is an adventure in frustration. So many browser add-ins load on startup that IE loads frozen and takes 30 to 60 seconds just to initialize and begin loading the homepage. Concordia's computers also have an annoying tendency to pop up notifications about all sorts of things. InstallShield constantly wants to update something, and Adobe's Flash and Reader products run updaters every chance they get.

In this mess of different experiences, only St. Kate's truly stays out of one's way most of the time. For that reason, I consider it a great pleasure to have the privilege of sometimes using their systems, and I applaud Computing Services for creating such a uniquely user-friendly experience.

As a side note, I'd like to mention that I prepped this post for publication using a workstation at Augsburg College. I spent a lot of time waiting for Windows Vista to stop screwing around long enough to do what I needed it to do. Just to illustrate my point...


Notes:

  1. It should be noted that Augsburg's use of Windows Vista is unmatched in all the institutional computer facilities I have visited in the past two years. St. Catherine University, Colorado College, Hamline University, Concordia University, Emerson College, Normandale Community College, the Colorado Springs Fine Arts Center, and the University of Minnesota all (to my most recent knowledge) continue to use Windows XP. The performance advantages held over Augsburg's workstations by all of the aforementioned institutions is amazing. Windows Vista at Augsburg College is run on machines designed for XP, and is abysmally slow when doing just about anything, even logging in/out. []
  2. I define this as the shortest possible time between entering login credentials and convincing the computer to cough up a Firefox window ready to browse the Web []
  3. Also, the public libraries in my area have begun having this issue too, much to my dismay. []

24Feb/1020

“No Evil”: My NET10 Wireless Experiences

NET10 Wireless logo

NET10 Wireless: No Bills. No Contracts. No Evil...?

Last summer I began using a prepaid cell phone (an LG 300G, the cheapest, most basic model available at my purchase location) from NET10 Wireless, supposedly the "high-usage division" of TracFone. NET10's rates are flat: 10¢ per minute (even if it's actually one second, like any other per-minute charge) and 5¢ per text message in or out.

The phone's been very handy for some important calls and the 5¢ text messaging rate sure beats major carriers' rates of 10¢ – 25¢ or more per message (on plans without a texting bundle), but I wonder how true the "No Evil" part of the company's motto really is.

Airtime Treadmill

All of NET10's airtime packages come with a fixed number of days after which users are required to reload, or face losing their accumulated minutes (and their number, though that's not a concern for me because of Google Voice). I don't use the phone that much, so I buy the relatively economical 300-minute package for $30+tax every time I need to re-up, making my effective "monthly bill" $15-and-change. The package gives me 60 days to use my 300 minutes, but — and here's the kicker — whether I use them or not, I am forced to renew every sixty days. My low usage means I've accumulated over 1,000 extra minutes since last June — minutes that I would lose if I fail to renew. In order to not waste the money I've spent before, I must continue to renew my service. I suppose I should be thankful they let me keep all my minutes as long as I continue to renew, eh? :-/

The issue here is, the $30 package is the most economical one I could find. Analysis of the other available packages shows that paying every two months is probably the cheapest maintenance option available. There's a $20 package of 200 minutes, but it only lasts for 30 days. Deal breaker. Similarly, there are packages that last much longer (4,000 minutes for $400, two years' service) but with low usage, paying in two-month increments is actually cheaper in the long run:

  • 1 yr. = $200
  • 60 days × 6 ≈ 1 yr. & $30 × 6 = $180
  • $200 − $180 = $20; 5 days can't possibly equal $20
  • Similarly: 2 yrs. = $400
  • 60 days × 12 ≈ 2 yrs. & $30 × 12 = $360
  • $400 − $360 = $40; 10 days can't possibly equal $40

So it is truly cheaper to pay every two months, or use one of the other packages not exceeding 600 minutes. (At the 1,000-minute level, the number of service days earned for each dollar spent goes down due to the extra $10 price increase: $30 = 60 days, $45 = 90 days, $60 = 120 days, $100 = 180 days.)

I wonder about NET10's stated motto: "No bills, no contracts, no evil". Perhaps there are no bills or monthly contracts, but if you're a low-usage customer you must continue to pay into the system even if you never use most of the airtime you're buying. It's a self-perpetuating cycle that draws people along and keeps them paying so they don't lose their previous airtime investments.

As annoying as the practice of placing an expiration date on minutes that users have paid for is, it's a practice that seems to be matched by most prepaid carriers. I spent about two hours researching all the different options at a Wal-Mart store in Colorado Springs and came to the conclusion that NET10's service was the least evil. Other carriers have no expiration but charge a daily access fee on days the phone is used. Others have ridiculous per-minute rates. So NET10 is not "no evil", but I think "less evil" would be pretty accurate.

SMS Attempt Charges

On New Year's Eve, just after the ball dropped on a rebroadcast segment from Times Square, I attempted to send out a New Year text message to Ping.fm for posting to Facebook, Twitter, and so on. Of course, because it was seconds after midnight (Central), the network was so congested that the message didn't go through. My phone displayed "Sending failed" after spending about thirty seconds trying to send out the text. I tried three more times, to no avail. (I gave up and borrowed a few minutes' access to a computer.)

It wasn't a big deal that the message failed. I knew that the network would be busy. But it was a very big deal that my account balance was still debited for the 5¢ texting charge each time. Failed messages apparently counted. (It should be noted that friends using Verizon were texting with no problems. NET10 uses AT&T's network, which often has coverage and service issues.)

I emailed NET10's customer support. After a few days' back-and-forth, they asked me to call their support center so something could be "verified" on my account. I posed my question to the operator. She informed me (through her thick foreign accent) that the software on NET10's phones takes care of managing charges, and that it is the attempt to send a message that results in a charge; the outcome is irrelevant.

The Post Office charges for returned letters, I suppose, so that's not really a violation of communications business practice. But for a company that claims "no evil", I find that policy disturbing. Blowing 20¢ on failed text messages isn't going to break the bank, but it is annoying in principle. I'll just consider whether or not the network is likely to be busy before sending a message, and refrain from doing so if failure is probable.

The real question is, do other "normal" carriers like Verizon do this? With their much higher rates, I would think conventional monthly-contract providers would have significant user backlash if they attempted such a thing. Does that make NET10 more evil than "less evil"?

Hardware Lock-in

NET10 freely admits that their SIM cards and phones are specific to them. I received the following after emailing support to inquire about the possibility of using an unlocked GSM phone (such as the Nexus One) with their service:

If your phone is not manufactured as a NET10, we will not be
able to activate it using NET10 Wireless Prepaid Services. Hence, the
NET10 Wireless service will not be compatible with an unlocked phone.

Furthermore, NET10 SIM cards only work in the phones they were activated
with. Therefore, the SIM cards should not be switched between phones as
this may result in permanently disabling them.

The above was followed by a paragraph encouraging me to check out the selection of available phones at NET10's website. I did so just on a whim, and my expectation of disappointment did not go unwarranted.

NET10's website catalog lists only 16 phones at present, most of which fall into the "basic" category. Two devices have slide-out keyboards and a special text-messaging rate of 3¢ per message, but at $79.99 they are also the most expensive phones on the list. And of course, a lower text messaging rate would just mean I'd use even less of my balance than I do now. (I don't care about a camera, so I won't analyze that, but many of NET10's phones do have cameras.)

I have seen forum threads about using devices like the iPhone with NET10, and I assume the company has also seen them and works to keep users from doing so. Why prevent use of smarter phones on NET10's service? It comes back to software. Phones not manufactured as NET10 devices do not have the software to deduct minutes from a user's account. People using non-NET10 devices with NET10 service get effectively unlimited usage of voice and text communication because the phone is not configured to manage the account balance.

My question then is, why not commission an Android application to enable smartphone compatibility with NET10 and capitalize on the market of users like myself who would want a smartphone without a data plan? I would certainly be happy to restrict my Internet usage to Wi-Fi – enabled areas; having the phone+SMS+Internet functionality on the same device would be awesome if I could do it without paying for an expensive monthly contract from Verizon, AT&T, or T-Mobile.

This doesn't make NET10 evil or not, but it does show that they have lower regard for customer choice than one might think. By operating a no-contract cellular service, they are promoting consumer choice, but they limit consumer choice when they restrict the devices that can be used on their network to a tiny subset of the handsets available on the market. Of course, they're not the only carrier to do this; most U.S. carriers have handsets that only work on their network, and have handsets that will not work on their network no matter how much you plead. But still, it's a limiting factor.

Call & Text Spam

While it's not specifically a NET10 problem, I question the company's willingness — or lack thereof — to help me solve the problems. I received frequent and disruptive nuisance calls to my NET10 number from an underhanded collection agency for four months after activating my NET10 phone, and I continue to receive occasional calls from a second. I've never given out my NET10 number to anyone except my mother, and I made her promise never to call or share it; all communications to me come through Google Voice, and direct calls to my cell phone are by definition not for me. The calls also began the morning after I activated my phone.

Aside from the fact that there was no way a collection agency could have gotten my number that quickly, I also have no creditors that could possibly be seeking collection of old debts. I'm not old enough for that. So I was being woken up at 06:00 MDT by calls from Pennsylvania (placed at 08:00 EDT) intended for someone who had thrown away their prepaid phone number long ago. That sucked.

It did occur to me that I could just answer one of the calls and say the person the agency was looking for no longer owned the number, but even that would have cost ten or twenty cents that didn't need to be used on scumbag sub-legal debt collection agencies. (I looked into the firm that called me all summer. My research indicated that they dredge up debts that have long passed any relevant statutes of limitations and attempt to collect on them for profit. Hence my usage of "sub-legal".)

More recently, I've begun to receive spam SMS from various numbers, some of which are so much longer than 10 digits (or 11; senders are usually presented with the digit '1' prepended for some reason) that I don't think they even exist. Only opened messages are charged for, but NET10 is so focused on making money from text messaging (a trait they unfortunately share with all other U.S. cellular carriers) that the software on my phone displays only the first five characters of incoming messages. That limitation makes determining spam extremely difficult. If I could see more of the message — maybe display "Do you have more than $" instead of just "Do yo", scrolled horizontally like the phone's software does for contents of Notes — I could effectively avoid being charged for spam, but in my cynicism I have come to believe that NET10 doesn't care about spam because it potentially makes them more money.

On multiple occasions I have investigated the possibilities for blocking calls from specific numbers (the collections calls are consistent), or filtering spam from my incoming text messages, to no avail. NET10 cannot block calls, but they would have changed my number for "convenience". No guarantees that the new number wouldn't have more nuisance calls than the old one, of course. And there are no provisions for blocking text messages. The kicker is that a "normal", non-NET10 LG 300G would have the ability to block calls by itself, but that feature was removed from the NET10-compatible software. Grr...

My experience is admittedly limited (as I've only ever gotten one number from NET10) but I've heard from friends and classmates that it's not uncommon for a number from any provider to have problems with calls and texts intended for previous owners. It's not specifically part of NET10's "bad" — rather a con universal to the telecommunications industry — but it was still annoying.

Final Thoughts

Despite the issues, I've been pretty happy with NET10 itself. Even if they charge for failed text messages, require renewals every few months, and refuse to help me block spam, they're still a pretty good deal. At some point, once I establish a steady income, I plan to use up the minutes on my current phone and end its service to switch to something a little better. For now it serves the purpose of keeping me connected on the go when I need to be, and $15 a month isn't bad for a U.S. carrier. I'd move to drop them much sooner if they were more expensive.

Of course, these are my experiences with one phone, a NET10-programmed LG 300G purchased in June 2009. Any of the problems I mentioned, especially those related to features of the software features, might not exist on other models or a later release of the 300G.

Update (06/07): Be sure to check out Speak No Evil's comment below. It has some words of warning that I think are important.

Minor edit at 15:20 to correct erroneous usage of ≅ to ≈

7Feb/100

reMAP: IMAP reConceptualized

Gabor Cselle, the founder of reMail, recently posted an idea for replacing the IMAP email protocol with something with which working would be easier. The proposed name? reMAP, short for reimagined Mail Access Protocol.

He calls for a RESTful design that among other things would globalize message identifiers (rather than changing them the instant a message is moved to a new folder), replace folders with labels (a la Gmail), require the server to handle email search indexes, and make conversations the basic unit of email (instead of individual messages). reMAP would also make handling MIME messages unnecessary; the client could simply call the server with a request for text or HTML message representations without having to deal with parsing the MIME format itself.

I personally am in agreement with his entire proposal. The experiences I've had with IMAP in the past have highlighted shortcomings in a standard that was drafted over 15 years ago. Email has changed a great deal since then, but IMAP has not been revised to accommodate the enhancements made by newer clients and services like Gmail.

If IMAP is to be improved, it's probably appropriate to just completely replace it with something new. If the new system can translate IMAP commands into the equivalent operations in its own protocol, that's even better, because then servers can be upgraded without worries of breaking compatibility with older clients or the need to run server applications for IMAP and reMAP side by side.

There's plenty of discussion going on at the original post and on Hacker News. If, however, you would like to say something here, please don't hesitate. ;)

As a side note, I see that Gabor is using Blogger's FTP publishing option, which will be going away soon. I hope the link will still work when he has to move.

2Feb/102

A Thought About Efficient IT Administration

I'm kind of calling out St. Kate's Enterprise Computing Services department in a way, because I want to know why they would schedule a restart-required software deployment an hour before the computer lab is to close.

Can anyone with experience in Information Technology and management of company/school computer networks tell me why the times chosen to deploy new software are chosen? My experience last night of a new software deploy completely disrupting my very limited time on the computer happened at Saint Catherine University, which has a generally great library (unlike Concordia University in Saint Paul, though Concordia used to be greater).

Plenty of people were using the computers, and all got interrupted. Why? Why not schedule the deploy for after-hours and save everyone the hassle? When logging in, the computers at St. Kate's even display a message encouraging users to log off their computers at night so updates and new software can be deployed during off hours. I would define off hours as the times when labs are closed, not an arbitrary time like 21:00 (as was chosen a few days ago for a non-restart-required installation) or 23:00 (as was chosen for last night's disruptive reboot-required deploy).

Maybe the IT staff go home at the usual lab closing time and they don't want to stick around after closing to monitor the deploy. Perhaps they want to have extra time to debug any problems that might crop up before the morning rush. Admittedly, the labs are rather underutilized late at night, but those users there are generally working on something very important that really shouldn't be interrupted. It adds to their stress. Having to wait five minutes for the computer to finish "Applying computer settings..." and "Running startup scripts..." doesn't help frayed nerves.

Having no information on which to base any conclusions, I can only speculate wildly as to why the installation time was chosen. But I know that I was not the only user in that lab that was very frustrated at all the computers being forcibly taken offline for five minutes to install a software package.

I also wonder if it wouldn't be possible to have idle computers install the package immediately, but allow in-use workstations to delay installation and restart until the current user logs off. It seems like that would be much more efficient than having everyone in the room sit and stare at a Windows status dialog for five minutes.

Well, at least St. Kate's and Concordia haven't moved to Windows Vista. :) Augsburg College, when I have occasion to go there, has and their systems are a royal PITA, not to mention slow as molasses ("Designed for Windows XP" — the front of every PC tower at Augsburg).

Oh, and even if you're not in IT, I'd still love to hear your opinion. ;-)

30Jan/100

“Houdini” plugin for WordPress is no magician

I've seen some pretty absurd WordPress plugins show up in the Plugins dashboard widget on this site, but the recently-released "Houdini" takes the cake so far. It claims to prevent spammers from copying the contents of any post or page upon which the [houdini] shortcode is placed.

The fact is the internet is open can lead to theft especially to content stealing and plagiarism.

Until now, there was very little to discourage and deter this serious crime. Yes content theft and plagarism is a crime in some jurisdictions.

You cannot rely on others or the authorities to continue to police the internet as they do not have enough resources. You need to protect your content and deter this theft.

The basic form of content theft is to copy and paste your content to another medium.

Well Houdini, prevents this using a little known special algorithm that prevents copying by making the selected text that is targeted by the perps to be copied, to disappear! Yes disappear!!! The only way to recover is to reload the page in the web browser. If they try again, the content disappears again. As long as they keep trying to select and copy your content, the content will disappear before they can get a chance to execute the copy command!

After a few unsuccessful attempts, the theives will move on to a easier target.

Your safe!

WordPress › Houdini « WordPress Plugins

So what can we glean from this PHK Corporation plugin's description, other than the fact that the author has poor English skills? We can most definitely conclude that phkcorp2005 has no understanding of how most copying of Internet content is carried out. As I and others have pointed out many times over in blog and forum posts, copying is usually not done by a person using a mouse to cut and paste, but rather by automated computer programs called scrapers. (For the uninitiated: See these two Wikipedia articles.)

What is left out of that messy, error-riddled description is the word "JavaScript". It is by no means the only word or phrase that should be inserted, but it is the most important. That fifth "paragraph" (the formatting is also very poor) should say "special JavaScript algorithm", which is synonymous in this case with "useless JavaScript algorithm". All it does is wait for the user to try to select text in the browser and clear the selection if any is made. Besides, any copy-protection scheme based upon JavaScript is inherently useless by virtue of the fact that it doesn't do anything to prevent copying. There are tons of ways to get around it. Disabling JavaScript, for example (as mentioned below).

For example, take hatkirby's rant. I quote from that post the list of circumvention techniques below:

  1. Go old fashioned and turn off JavaScript. Yep, the script is rendered useless.
  2. More advanced content thieves likely don't just go around to random blogs and copy/paste off of them. They write screen scrapers, small programs that visit sites and download specific parts of the site. As these do not render pages and simply download from them, the script isn't even seen by the scraper.
  3. Due to the nature of the Internet, anyone, and I mean anyone, can see the source code of a website. It's done differently in different web browsers, but it's always pathetically easy and, as it simply shows HTML code instead of parsing anything, no scripts are run.
  4. RSS. Syndication feeds are normally viewed in feed readers with little to no JavaScript interpreter. Script bypassed.
  5. There's this cool little button on most keyboards that says "Print Screen". Even on the keyboards that don't have it, there's usually a key combination that achieves the same effect. It takes a picture of whatever's on the screen. No selection occurs and yet the thief has a copy of your article. They do, however, have to retype it, so this keeps the lazy thieves out.

That's just a smattering of ways to get around the JavaScript inserted by Houdini.

In the face of all the arguments presented, the plugin's author has insisted that the purpose of Houdini is not to "prevent" copying, but to "deter" copying. I don't think that statement holds any weight whatsoever. It still depends upon the copying being performed in a JavaScript-enabled browser by a human.

There's also the matter of just how absurd copy-protection of any kind is on the Internet. Every single document or file anywhere on the Internet must be copied in order for the user-agent (usually a browser in the case of human interaction) to retrieve and display or otherwise make use of the content. This is why it's quite simple for any user to just view the source code of a page. It has to be copied in order to display the content.

Also mentioned in the first (started, chronologically) forum thread is the ability of JavaScript to disable the browser's context menu and thus the "View source" option. That's just as useless as the selection-clearing code, and actually more so because many modern browsers allow specific JavaScript capabilities to be disabled — capabilities like removing or replacing the context menu — as an alternative to disabling all JavaScript. The "View source" option is also present in other places — places such as the browser toolbar's "View" or "Tools" menu — which JavaScript code cannot modify even in the most permissive environment.

Legitimate quoting must also be considered. There are a million and one reasons why someone might legitimately want to copy a few sentences of a blog post. Maybe they like it enough to post a quote to Twitter or Facebook, or perhaps they want to comment on it in a blog post of their own. Content theft is a big problem, but the old methods of periodically searching for and reporting content stolen from one's site are infinitely preferable to this plugin's ineffective method.

Finally, why require the use of a shortcode? Why not just add the script globally to all content pages and forget that stupid "This page is copy protected" header?

At most, Houdini has the ability to add a superfluous <h5> tag to the page and annoy legitimate users with an obnoxious script while doing absolutely nothing to thwart real content thieves. I wonder if WordPress Extend would consider removing this laughable plugin from the directory... Of course, we bloggers would then be denied this ripe opportunity to satirize this particular piece of code. :D

28Jan/100

iPad? Of course I want one, but…

iPad
Image by toykyo via Flickr

Technological progress can suck sometimes. I have wanted an iPod Touch for about a year and a half, to have the ability to play music and games while on the go as well as gain access to email, tasks, calendar, contacts, etc. while away from a computer (but near an open Wi-Fi network). I almost bought one last year, then I got wind of the upcoming third-generation models: more storage, etc. etc. So I waited. Then the Apple Tablet rumors really started in force, and I really don't have that much spare change anyway, so I continued to wait.

And on Wednesday last — yesterday, that is — the bombshell dropped. Apple announced the iPad.

I got the news late in the day, so there wasn't any point in trying to get out a quick post. There's not even any point in posting about its technical specifications or features, since that information is well covered by Apple as well as others and is a mere search away. But I do want to say this: The iPad has very nearly stolen my desires away from the iPod Touch.

Why would I want an iPad anyway? The form factor appeals to me. I like its thin, light construction, and the fact that it's completely mouseless; multi-touch interaction is definitely a win. The keyboard add-on would work to supplement the on-screen keyboard for more serious writing. Of course, there's also the Wi-Fi.

Unfortunately, the iPad isn't at all perfect, at least for what I would want to do with it. Like the iPod Touch and (save for the camera) the iPhone, it has no camera, no multi-tasking, no media card slots (so my 16GB SD card would stay in my camera), no USB, etc. So far as I know, it's subject to all the limitations of the iPhone OS. But for some reason I still want one. Probably the same reason that I want(ed) an iPhone or iPod Touch. And Apple's solution to the lack of ports? Adapters. Yeah. Not the best solution, in my opinion, and it'll definitely keep me from seriously considering acting on this want. (Unlike so many others, I don't really care about the name. I just think iPad is awfully similar to iPod.)

The lack of a camera is really strange to me. With such a sophisticated device, based on high-speed data communication over Wi-Fi and/or 3G, a user-facing camera (at least) would seem to be a natural feature especially since Apple's laptops have included a built-in webcam for a while now. Videoconferencing on a device like the iPad could be really enjoyable, what with the accessories that would probably come out to make it even better. (I would like to see a stand that allows it to be used like one of those communication screens on Star Trek. Geek that I am. ;-) )

As usual, Apple has created an incredible piece of hardware, but has omitted what I would consider to be key parts of a truly productive and useful platform. Just about every consumer electronic Apple produces seems to be focused on consuming media, whether music, video, images, or text. Their more conventional computers have productivity components, and can multitask like any Windows or Linux system out there, but they still excel at media consumption and production. This latest consumer electronic device is, to me, basically a Nokia N900 Internet Tablet with an App Store, no hardware keyboard, and Apple's design flair.

Given the limitations, there's no way I'm going to buy an iPad. It's really a bummer. I'll just have to contain that want, as I have been for the iPod Touch. Both devices are beautiful, amazing pieces of engineering (and it's interesting to note Chris Messina's hypothetical iPad Touch post from 2007, found on Twitter via @damon's timely tweet), but both are too limited and neither would really satisfy my want for a true portable computer. Too bad knowing the limitations of these Apple devices doesn't in any way alleviate my geek lust for them. :P

Enhanced by Zemanta
1Aug/090

Google Voice App Rejections: Catalyst for Cellular Openness?

If you haven't heard, Apple rejected Google's official Google Voice application several weeks ago (article from this week). However, I (at least) didn't hear the news until recently, when it became known that Apple also began pulling other Google Voice apps from its iPhone/iPod Touch App Store. TechCrunch's sources say that AT&T was behind the bans, and I'll believe it.

Now, I'm not an Apple fanboy, but I've been considering getting an iPod Touch lately. One of my roommates here at Emerson's summer program (yes I know I need to blog about that too; soon, I promise) has one, and he's graciously let me use it occasionally. It's been the perfect opportunity to figure out if I really want one, and try it out with some of my normal online activities. I do want one, though I'll wait until the new version comes out, supposedly in September, with (I hear) a microphone and maybe even a camera.

But back to Google Voice.

One good reason to get an iPod Touch would be a mobile interface to Google Voice that uses Wi-Fi instead of cell phone minutes (for checking voicemail) or text messages. Cost-saving: Check. But the mobile interface for Voice is pretty sparse, so an app would be awesome.

My plans were put in jeopardy when I got wind of the news that Apple had begun pulling apps that worked with the service from the App Store. I checked with my roommate's Touch and confirmed that they no longer appeared. For a while, I considered just skipping it. I was angered by Apple's ridiculous actions, and annoyed that my target device — the iPod Touch — could have its functionality limited by a company that didn't have anything to do with it. The iPhone and Touch might use the same operating system and App Store, but just because AT&T doesn't want an app on the iPhone doesn't mean I shouldn't be able to run it on my iPod.

Today comes news that the FCC sent letters to Apple, AT&T, and Google, beginning an investigation into this high-profile rejection. See, the FCC has a policy agenda here, one that was probably catalyzed by Google's letter to them two years ago. And in June, the FCC confirmed that it would be starting a review of exclusive contracts between handset manufacturers and cellular carriers.

The letters sent today are probably intended to use this heavily reported situation as an example, and to set a precedent. I hope that this investigation will find fault with the way Apple and AT&T conduct their business together, and will result in the FCC's restricting the kinds of apps that can be rejected, barring AT&T's involvement in the application approval process, and possibly even result in a completely open App Store (in the long term) or an unlocked iPhone (also in the long term, though the exclusive contract between AT&T and Apple ends soon enough).

Google went to bat for all of us consumers two years ago with that letter. Maybe it will turn out that they've inadvertently done so again, just by letting Apple do what it wants with the App Store. My fingers and toes are totally crossed on this one; I want an App Store that's more along the lines of the Android Marketplace or a Linux package manager.

Who's with me?

27Apr/093

How To: Safely Use Twitter Notification Enhancement Services

As you all have probably heard, Twitter is gaining popularity in leaps and bounds. All the new users mean more follower notifications arriving in my inbox, and Twitter's default messages aren't very useful. (The direct message notifications are pretty bare-bones, too, but I don't get many of those so it wasn't a priority.)

Update (05/06): Twitter prettified their emails, but I still think Topify's are better. Unfortunately, Twitter also went back to using the same address (noreply@twitter.com) for all users' notifications, putting the email-address – specific addresses in the reply-to header. So the filter setup in this post doesn't work any more. I had to come up with a new, more complicated filter... Stupid Twitter...

Update (05/07): Twitter went back to the old From addresses, so the filters from this post should now work again.

The Beginning

The first enhanced-notification service I discovered was Twimailer, created by a British developer named Jon Wheatley (and apparently later sold—shortly after I signed up — to a Romanian named Toni).

Despite the admonitions in the article above (on ReadWriteWeb) about changing passwords and all kinds of security precautions, I'm not worried about my own account. There's one simple reason for that: I never actually switched my email address in Twitter's settings. Instead, I created a Gmail filter to auto-archive follow notifications from Twitter and forward them to Twimailer. That way, I:

  • had all my follow notifications even if the service went down (it did for several days) or glitched (sometimes I get messages with no information)
  • only forwarded the messages Twimailer needed to be useful, rather than everything
  • made sure to keep password resets (which I haven't used for my main account in the last few months anyway) completely out of Twimailer's hands

I was very comfortable with this system. I can only guess that Jon's original intent was to simplify the setup process. After all, most people don't bother with email filters, and wouldn't necessarily know how to set one up. Changing settings on Twitter's website is a lot easier.

A New Age

Thanks to a TechCrunch post about fighting Twitter spam I read tonight, I discovered Topify, an invitation-only (for now) service based in Israel that offers all of what Twimailer did — and more.

I found an invite on the Topify blog (sorry, no link; you gotta dig through their site too so it's fair for everyone) and quickly signed up. The Twitter password field distressed me a little, but it's obviously necessary for all the extra features (like follow-back, reply to direct message, and block), all of which can be done via email with Topify. (In the future, I hope Topify will implement support for Twitter's OAuth authentication and delete users' passwords from their system. Consider this a request, Arik. :-)

Anyway, switching was pretty painless. All I had to do was change the address to which my Gmail filter forwards and add my direct-message notification From address to the filter. I'm currently waiting for something to happen on my Twitter account so I can try out the new service. (I considered running Twimailer and Topify side-by-side for a bit, but decided against it; redundant emails would increase my processing time, the opposite of the intended effect.)

Filter Details

For those who want to copy my setup (I'm telling you, it's a lot more resilient than the default instructions from either service), here are the filter settings to enter. Update (05/06): These settings are left here for posterity; they won't work anymore thanks to Twitter's changes from today. See the first update near the top for more detail. Update (05/07): These should now work again, since Twitter appears to have gone back to the old email headers.

In the filter's From box, enter:

  • Topify: twitter-follow-you=yourdomain.tld OR twitter-dm-you=yourdomain.tld
  • Twimailer: twitter-follow-you=yourdomain.tld

Replace you=yourdomain.tld with your email address, using = in place of @.

That's all you need to do for filter criteria. (If you have only one Twitter account coming into your inbox, it's even easier; you can omit the -you=yourdomain.tld part(s) of the filter criteria. It doesn't hurt to include them, though.)

For actions, I selected "Skip Inbox" and "Mark as read", and told Gmail to forward these messages to my secret Twimailer/Topify address.

Click the Create filter button, scroll down your filter list, and you should see something like the following (image is linked to full-size version):

(There's also an XML file available to import, for those with the Filter Import/Export feature enabled in Gmail Labs, but creating the filter from scratch is pretty easy. The file link might go dead in a month or two when my Google Page Creator site is moved to Google Sites, but I'll know because things like the site logo will stop working. If that happens, I'll definitely fix it.)

Note: As I was writing this, I discovered Chris Messina's post about this, published almost two months ago. My little hack is nothing new, I guess; but I'll publish anyway because his instructions are focused on Twimailer and Twimailer only.

Wrap

Let me know if you find this little hack useful. I haven't time to make a bunch of pretty screenshots (unlike Chris ;-) , so if you have questions, post in the comments.

Incidentally, this is my 500th blog post. If that means anything.