Tivo: Infallible no more

I’ve long considered my Tivo one of the few pieces of technology that just works – set up a show to record and it gets done. Maybe it records three extra episodes of a show, but it gets the one you want. Until now.

I got home Sunday night expecting to sit down and watch the second to last episode of West Wing. The only problem was that it was recording Family Guy. I scratched my head and checked the season pass listing: West Wing is top priority, so it should take precendence over everything else. The problem extended to next Sunday as well, so I had to manually record the final episode. What gives? The only remotely feasible explanation is that these episodes have their rerun flag inadvertantly set.

Its unfortunate that Tivo has fallen into the larger category of devices that I need to keep my eye on. Oh well.

At least the pope is still infallible.

Input Output Disconnect

I think its interesting that calendaring tools can understand the definition of complicated event reccurence rules, as well as exchange those definitions in a powerful standard format, but that the user interfaces on the tools I have used (ical, google calendar) don’t actually support creating events with anything more than the simplest recurrence relationships… Goes to show that the bottleneck in many systems is still the interface between the human and the computer.

The other day I received my first $50 parking ticket of the street cleaning season. The rules on my street, even side cleaning on the second and fourth Wednesday, odd side cleaning on the first and third Tuesday seem simple enough to follow, but I still think Somerville’s chief revenue stream must be parking violations.

I thought perhaps I can set the events in iCal, upload that file to google calendar, and get SMS reminders. Turns out one can’t specify a recurring event like second and fourth Wednesday in iCal or google calendar. iCal’s interface allows one and only one “nth day of the month” recurrence. This made me wonder – is this stuff even possible in the iCalendar format?

So I checked the iCalendar spec in RFC2445 and sure enough, it supports powerful enough recurrence rules to handle any conceivable event schedule. Here’s an example that will handle the odd side street cleaning, April through November of every year:

RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=1TU,3TU;BYMONTH=4,5,6,7,8,9,10,11

I edited the one 1st Tuesday rule generated by iCal in a text editor to arrive at this iCal file. Imported it back into iCal, and it rendered the recurrences perfectly. Google calendar also reads the file well even saying under details “Every first and third tuesday”.

Its a shame there’s all this underlying power, yet the user interface allows only a small sliver of it. The 80/20 rule probably dictates an organization doesn’t put in the resources to develop and support a really complicated UI for creating event reccurences, but I would think some user facing tool would support that. Are there any out there?

My Kingdom for a Radio Button

Are radio buttons going out of style? When I was using turbo tax recently, I saw several cases where two or more logically mutually exclusive choices were represented by checkboxes rather than radio buttons. Here’s one of them:

Radio Buttons Needed

Although, as the expression goes, never attribute something to malice that could be just plain incompetence, it does seem that the designers at Intuit must surely have made a considered choice in not using radio buttons anywhere in Turbotax.

Is there a reason for that? I wonder if “today’s youth” even grow up having used a radio with buttons like that – I suppose you could get through your life using an iPod etc and never encounter controls like an old fashioned radio. I think even radios themselves muddy the waters on this: I recall the original radio in the 1987 Camry I used to drive had four or five radio channel buttons, but you could also use them in primitive chords: press two at the same time to select the virtual button between them.

UI affordances tend to have mirrored the world where possible, but perhaps on this front, the world is moving faster.

Enterprise Calendaring for Dummies

or- you know something is desperately wrong with your mail/calendar infrastructure when you see a note like this on a conference room door:

Reserved

8:30 - 9:30 a.m.
3/16/06

Outlook has been hanging,   so
I wasn't able to submit an
electronic reservation

That’s the mark of a solid infrastructure. At least the printer worked.

Corporate UI Design and Stuck on Java

Found a blog with some interesting comments today, so I figured I’d add my 2 cents.

Saw this comment about the ways in which UI design outside of the enterprise is vastly superior to that on the inside. How true is that? Mailbox storage limits, slow mail, poor mail/calendar integration. Arbitrary refusal of zip file attachments to email. This quote really did it for me:

If your Architecture Staff thinks that the answer to these problems is to write design standards that a committee spends 6 -18 months creating and then are put out on the corporate portal in a word document, you may need to look for a new job.

Hmmm

Moving on to a different topic, the lack of adoption of dynamic languages (python, ruby etc) by large coprorations. From my time at IBM, I feel that it’s not because of any technical reason so much as political. The big machine churns out Java tools and lots of Java developers, so its not politically savvy to try to get an application that doesn’t use Java supported in that environment. Which is a self-fulfilling prophesy. For better or worse (more likely worse) somehow Java has become the one true language.

Someone please invent a band stalker!

Earlier this week I found out that two bands I like, Stars and Snow Patrol, are coming to town. One the next day, one next month. Of course I find out after the tickets are sold out…

Unfortunately there’s no one repository for tour information. Rich at Basement.org points out that Pollstar doesn’t have RSS feeds, and in this case, neither Pollstar or Eventful (the other site he mentioned) even were aware of the Snow Patrol show in time (the tickets went on sale last saturday, so now its too late).

It seems the only way I could have become aware of the Snow Patrol concert in particular would have been to a) be on their mailing list or b) visit their site constantly- (they don’t have a feed) – neither of these approaches really scales well.

Gathering enough up to date information (and not from joe q public listing an event when he gets around to it) seems to be the hardest problem, but how about a service that would accept uploaded itunes music library files and zip codes, and give me back an rss feed of events involving artists in my library, in my area, as they become known?

The downside of this is that hardcore fans who would go to the band’s site every day could get shut out as the information finds its way to the more casual fan with less friction.

Fun with design tools!

My Applied Design of Software User Interfaces class is lots of fun, but turns out to be a lot more work than I had anticipated (No programming or math, this can’t take much time!). I’ve spent hours learning Fireworks and Illustrator, and gotten much better at mocking up user interfaces in the process. I’ve also found that staring at the screen for hours tweaking pictures seems to be a different level of eye stress than programming, presumably due to having to focus on the slightly bigger picture than a line of code at a time.

We’ve had three weekly assignments to mock up user interfaces (including preliminary conceptual designs, affinity designs, and user profiles) which are given in the form of project for our mock design companies, and the deliverables must be color printed and bound, which makes one take an extra level of pride in the work – more of the same pride that keeps one up way too late making final design fixes.

Art Picker MockupI thought I’d share one of my designs from the last homework assignment: it was to mock up a design for a handheld, touchscreen computer (tablet) that would assist users in their tour of an art museum. The screen at the right (click to enlarge) uses the device’s ability to know fairly precisely where it is to present only the art nearest the user, from which the user can select one for more information. There’s some things I don’t love about the design now that I’ve had more time to reflect, but I still like it. I learned a lot about Adobe Illustrator in creating the icons for the nav buttons on the left (even though they still look like they were drawn by a Quailtard) – I also learned that Illustrator can’t do angular gradients like that I had in mind for the radar button, so I had to resort to the Gimp for that.

Interesting Java Snippet

I was at an interview yesterday and got something like this snippet as a test.

Apologies for the lack of tabs,
whatever I try to put them in,
wordpress defeats me.
public class ExceptionTest {
public String method1(){
try {
return method2();
}
catch (Exception e) {
return "method 1";
}
}
public String method2() throws Exception {
try {
throw new Exception();
}
finally {
return "method 2";
}
}
public static void main(String [] argz) {
ExceptionTest et = new ExceptionTest();
System.out.println(et.method1());
}
}

I was asked if I thought the finally block in method2 would execute before the catch in method1? So I puzzle over that for a while,
trying to determine how the stack would unroll, particularly in light of the finally block returning a value. I think my guess was pretty good.

I went ahead and tested it to see what actually did happen, and it turns out that returning from a finally block as in this example generates a compiler warning, and gleefully prevents the catch block from even executing, resulting in the program printing out “method2”. If the return is removed from the finally block, finally still executes before the catch block, as expected so that it can clean up the local state of that stack frame, and the program prints out “method1”.

WordPress Two’s “Flash” System

I installed wordpress 2 a few weeks ago, which doesn’t mean much in terms of reading this blog, but much in terms of administering it due to the majorly reworked back end. Anyways, to make a long story short, the admin site has this really great implementation of the “flash” (that is a highlighted element on a web-app page telling you something important/permanent has been executed, as in “your mail has been sent” or “changes saved”).

As flash messages must be, they are a bright, attention-getting color at first, but the innovation in wordpress is that they slowly fade to a color that doesn’t demand attention at all, leaving the user to work with the page without the distraction of a message that was only important for the first few seconds. The effect is so subtle that it took me a little while to notice it, but now that I do, I don’t know why everyone isn’t doing this.

I made a video so you can check it out: wordpress-full.mov

And from the archives, for fun, I mocked up what this must have looked like before DHTML: wordpress-oldtimey.mov

Sametime 7.5 and QuickChat

Congratulations go out to the IBM WebAhead team on today’s unveiling of Sametime 7.5. Its great to finally see that IBM Community Tools will be let loose to revolutionize connected workplaces everywhere, like it did IBM. I’m proud that something I was a part of nearly from the beginning in varying capacities got such a big splash during the keynote at Lotusphere.

A little birdy told me that QuickChat, an instant-buddy-list-search feature I developed in my spare time during my ill-fated post-WebAhead time at Lotus, was a big hit with the crowd at the demo. If nothing else, it’s still cool to see my invention up on the big screen.