TiVo and the iPad

Why has TiVo not built an iPad application yet? Ideally, it should do three things, two of which are directly related:

  1. Allow the scheduling of recordings from within the app. Yes, this can be done on TiVo.com, but anyone who’s used that UI can tell you that, uh, it’s clunky and very un-TiVo.
  2. Monitor the recordings currently scheduled on the TiVo in question. Yes, this is also done on the Web site, and while it’s easier to find, it’s not as easy as it could be. This would be related to the first in letting you see a) what’s being recorded and b) resolve conflicts in the TiVo app.
  3. On the local network where your TiVo resides, show the current queue of shows on the TiVo. This can be done, as the TiVo Now Playing Dashboard widget shows.

Admittedly, the last one could be done with a standalone app, but it seems like something that should be a part of a larger TiVo-focused app. Also, there’d be plenty of other opportunities for the app: in-app purchases equivalent to the TiVo store, etc. Seems like a win to me.

Two Apps I’d Buy

Here’s a couple ideas that have been rattling around the ol’ brain for the last little bit …

  1. If I’ve got the lyrics entered into the metadata of a song in iTunes, I want to see them superimposed onto my desktop. That way, if I have everything hidden save the Finder, I can read the lyrics while I listen to the song.
  2. I want a Bluetooth application that displays a Growl notification with whatever phone number is ringing on my iPhone. Do I want to careen across the house to pick up my ringing phone or not? Really, Apple.

As always, these are free ideas for which I’d only like passing credit, not anything I’d want money for, you know. I just want them.

Personal Comment Aggregation

I’ve talked about personal comment aggregation before, and I want to discuss what I see as the problem(s) to be solved and what solutions I see. Please feel free to criticize my idea—it’s still nascent in my head.

Here are the problems as I see them:

A Personal Record of What, Where, and When By Whom

The who, from the problem’s perspective, is me or anyone like me who wants to have a record of what they’ve said, where, and why. Over on GFMorris.net, you’ll see a sidebar that links to places I inhabit on the Internet. That’s partially so you can see what I’ve said, where I’ve said it, and when I’ve said it.

What I’ve Said

I see knowing what I’ve said as an extension of the whole public face thing. I participate in discussions in a variety of venues, and if I’m going to be public about it, I want people to know what I’ve said. However, more importantly, I want to know what I said, because I’m forgetful. Knowing the “what” is extremely important to me.

Given that hypertext is largely a textual medium, the what is often going to be words. The what could also be images I submit [for instance, photos I post on Flickr], or it could be the one podcast where I am a part of the action [although I don’t have good links to that … I’ll get around to that at some point :)]. I’m leaving a breadcrumb trail, but it’s not just for me—it’s for anyone who’d want to know what I said.

Where I’ve Said It

I think that most of us adapt our message to the medium. For example, you will find that my posting style is different across my Weblogs to a degree, and you will also note a different voice on, say, The Rumor Forum than what you get on the USCHO Forum. For one, I spend a lot more time on The Rumor Forum; for another, we’re talking about wholly different things. Place is a part of the context.

When I’ve Said It

A foolish consistency is the hobgoblin of little minds, adored by little statemen and philosophers and divines. With consistency a great sould has simply nothing to do.

–Ralph Waldo Emerson, Essays: First Series. Self-Reliance

I’ve often said to those who’ve asked me in the past the writing and journaling personally online is writing one’s own narrative. As time passes, our views on things certainly can change—oh, sure, some things are going to remain the same, but many things will change by small or large degrees. If one read, say, geopolitical comments that I espoused on alt.books.tom-clancy in the fall of 1997—my freshman year at UAH; I was 19, full of piss and vinegar, quick-witted, fast of keyboard, and even faster to stick my foot in my mouth—you’d find my leanings a bit different then than they are today. I’m sure that this is true with things I’ve posted in Weblogs as well—I can name a handful off the top of my head, and could probably go bugnuts if I kept it going.

But in any regard, time metadata is important, for all the reasons that Web wonks have argued over the years—old entries likely have outdated discussions, etc. I like to think that words set farther back in stone are likely to be more weathered by the elements and less distinct—and sometimes, my delivery is vague and circumspect, and hell … I can’t remember who it was I was talking about but trying not to name.

A Record of What Others Said, Where They Said It, and When

Let me begin with an example: this entire entry is written in response to a comment made by Chris Meller. Mr. Meller writes:

So what features would your ideal system include? I mean, most blogging software out there today includes a seperate RSS feed for comments (WP includes a seperate one for each post’s comments, I’m not sure about others). I have a tag setup in FeedLounge that is simply “my comments”, where I subscribe to all the feeds for comments on posts I’ve commented on.

I’d be open to the possibility of starting a new project in the near future to satisfy this need, but I really don’t have a good grasp on what you’re looking for…

Now, I could have written the Comment to End All Comments here, but that would have been painful to read, and frankly, difficult—comments are largely noise when compared to the entry [signal] that initiated them. That’s simply the general rule with comments, and on that score, it’s akin to James Madison taking notes at the Constitutional Convention and presenting the Virginia Compromise—after that point, discussion stopped being along the lines of “How do we fix the Articles of Confederation?” and more towards “What about Mr. Madison’s idea?”

Out of such sentiments was likely born the (fraternal) twin terrors of the ping, Trackback and Pingback. Both mechanisms sought to make a daisy chain of links, going from Entry A (Call) to Entry B (Response) through Comment C (TB/PB). Unfortunately, because this was designed to be as simple as possible, it proved to be easy to game by spammers, and many folks have given up on the mechanisms. [Not I! I Trackback myself regularly when I reference things I’ve said in the past. I believe in the medium!]

What’s great about these links-by-pings is that it turns what normally would be a one-way conversation—Entry B talking about Entry A—into a two-way conversation, because the very conversation-space of Entry A suddenly has a link to Entry B. Automating the process simply increased the likelihood of adoption by content producers. [Unfortunately, neither mechanism seemed to ever get enough traction with everyday users to advance beyond alpha geeks and early adopters into the mainstream. Alas.]

But before I lose your interest, reader, I hope you see my point—responses to content in one medium may not necessarily occur in that same medium. They could well be referenced in another medium—and that, folks, is the beauty of linking.

[Want an example? Okay: When I discussed homesteading our noósphere, I linked to a comment I’d left on an entry by Scott Sanders, which itself linked to a topic I’d started on The Rumor Forum about our membership drive. That’s an entry linking to a comment linking to a topic. Behold the power of links!]

The reason for wanting a response record is pretty simple: these mechanisms don’t go two ways very easily, and often, links have to be scraped. But the great thing is that links can be scraped, given enough time.

What Others Said in Response

The chief concern is, of course, what other folks said in response to something I had to say—“Whatchu talkin’ ’bout, Willis?” I may need to clarify my remarks, or someone may change my mind again. [Hello, Mr. Emerson!] Most of us who publish on the Web want feedback about what we say—that’s why you see all the comment forms out there, even if the spammers do try to mess with them.

Who Made the Response?

Oh, that bugaboo of identity again. I’ve bought into the link-as-identity meme—astute readers will note today that I leave GFMorris.net as the URL for comments that I leave around the Web almost exclusively. The idea is that, because I’ve made it a central node for pointers to things I’ve said, I can leverage that to claim the things that I’ve said. Note that this URL may be independent of the medium of the where the response is made—in fact, for me, it’s always going to be different, because I don’t produce content on GFMorris.net, I just link to it from there.

No matter the nature of how identity is determined—trust me, if you go read all the tracks I’ve left on my essay on user registration, you’ll see that I’ve had lots of thoughts about what identity means in the abstract and the specific. Identity can be established in many ways, and I argue that identity is doggone important.

Where Others Made Their Response

As I noted in my example above, one may switch media or places when responding. [Again, I’m responding to a comment Chris made on my Weblog here on my codelog—I’ve fundamentally changed place.] If Chris was tracking all references to the permalink to that comment, he could see this entry—regardless of whether or not I Trackback/Pingback the entry where Chris left the comment.

Also, people may simply reply in the comment space. Of course, as I noted in the original entry:

No one really seems interested in providing parent-child relationships between comments—oh, wait, Dunstan Orchard was interested in it, but he’s quit Weblogging, and I can’t even give a proper deep link to his intercomment links, because his CMS is throwing up MySQL errors by the dozens :sigh:—or, at least they haven’t shown much interest.

Dunstan’s method was elegant, because it understood that there were often two or more parents per child comment. Linear threading simply isn’t how we humans think.

[If you can stand another diversion, I must take a moment to note that I love, love, love how Simple Machines enables users to quote other users in posts that they make to the database. The quoting function uses some Javascript to hit the database for who/what/when/where, then pastes the data in, using a [quote] bbCode that has time, place, and author metadata wrapped in it. When the user submits their reply, there’s a happy link to the reply embedded right above the quoted portion in a permalink. It’s splendiferous.]

Again, where is important, because the breadcrumb trail needs to work in both directions.

When the Response Was Made

Follow any discussions about hot Web topics—Web 2.0, the hubbub about Atom a couple years ago, whether or not Trackback is dead, etc.—and you’ll see that opinions change. Just as I’ve noted that I change my mind about things, I’m always quite sure that others understand that they have the freedom to do the same and will exercise it from time to time. Time metadata, therefore, is quite appropriate in this context.

So, A Solution?

I thought that I’d have a solution by this point, but honestly, I don’t. At this point, my barebones solution of using del.icio.us to leave myself a breadcrumb trail has given me a very first approximation result to the first problem, although it’s very metadata weak: all it contains now is a link to a comment I’ve made, which really only gives me the personal where and the personal-who metadata I’m seeking—I’m relying on memory to know what I said [or simply clicking the link to refresh my memory], and the when may well be delayed if I have a user who doesn’t provide comment permalinks in their entry files and I have to do some sleuthing to find such matters [or, perhaps, if my comment’s held for moderation]. I reckon that I could take the time and copy and paste my comment into the notes section, and drop a timestamp in there, but honestly … that’s a hell of a lot of work for one link, and it really doesn’t scale very well.

I’m certainly open to suggestions. I think the personal stuff can be solved by providing permalinks [where available], because scraping can be done, but one runs into the problem of different comment presentation schema. Without a standard, you’ve got to build a lot of logic into the system to have the computer do the work for you. Again, maybe this is where a more robust standard for publishing and syndication like Atom will make this more of a reality.

But as it is, I’ve got no solution for the second part of the two-way conversation, the reponses to the comments made. I’m sure that the answer is search-and-scrape, but that takes CPU cycles as well.

However, because the problem exists without a solution at present doesn’t mean that I can’t take an hour on a Monday night to flesh out the problem as I see it, eh?

A Common PHP/MySQL User Database

I’m an admin. Most of what I do with PHP and MySQL is maintain. [On rare, rare occasions, I work on code. Now that I’m back in graduate school, rare is also defined as “never”.] One problem that I see that desperately needs solving: a common user database that has great, simple API hooks.

What’s the point?

If you have more than one package that uses PHP to manipulate and represent MySQL data, you’ve undoubtedly wished for commonality in your user databases. If you run a Weblog-as-CMS and a forum, you’re probably wishing, “Man, why can’t WordPress and phpBB talk to each other?” [I mention those two only because they’re the most popular such choices; I’ve largely moved from phpBB to SMF, and I’m also experimenting with TextPattern as a WordPress replacement in situations where it might be more attuned to my needs.] I think they should.

What are the parameters you’d need?

This database needs to be dead simple, because having data in a separate table [or database] just adds complexity to the query, and this complexity will add overhead. So, with a minimalist ethos being the wind beneath our wings, let’s take off:

User_id: A simple incrementing counter. Because this is stored as an integer, it’ll be useful to have for your API hooks, because you’re passing smaller and more digestible data than the username [see below].

Username: User’s email address. Having a separate username and email makes no sense to me—and because people do change their email addresses and often forget who all has the old one, having the username as the user-email solves all sorts of issues. Not only is this good for the user, but it’s also good for the administrator—no more table lookups to find the username of someone who emails you with a lost account request!

Password: Stored as an MD5 hash of the user input. This is industry standard.

Date created: Automagically generated.

Date modified: Automagically generated. This is important because it’s good to have a record of when stuff is changed for security purposes.

User handle / display name: It’s important to have this in the system, because a good package like this should never display the user’s email address to all the screen-scraping spammers of the world. Also, we don’t want confusion when people change their email addresses.

And that’s really it. Authentication should be handled with cookies, and API hooks should support sessions.

This would be a hugely beneficial open-source project, and should be licensed liberally rather than with the GPL, because I don’t want to see commercial products locked out of this. Commonality is an important thing.

[And yes, some will argue that this is very close to LDAP, or that you should make it Kerberos-like. Knock yourselves out—I haven’t seen a good implementation of either in the Web-based scripting environment of the day.]