SXSW 2007 Notes

SXSW was pretty damn crazy this year. Even bigger than last year, and this time with 500% more overlapping parties. Unfortunately that meant less time hanging out w/ old friends and having interesting conversations, and absolutely nowhere for Boggle-playing (although I did play a bit of Set for the first time – I think I would have gotten better at it if I hadn’t had so many drinks earlier…)

Also, some good sessions. My faves:

  • Will Wright Keynote – this is the third time I’ve seen him speak (Spore demos don’t count and pale by comparison) and he’s bar none the best presenter of game structure/form. What’s great is that he takes you on a real intellectual journey when he speaks – you hang on as he zips through and there’s so much good stuff that you really want to go back and explore – that sounds like that’d be a fun game. Anyway, really hoping a good recording pops up
  • Henry Jenkins – I’ve been a huge fan of Jenkins’ written work since my first readings back in visual literacy class in my undergrad days. And, it turns out he’s just as insightful and engaging in interview as he is in writing. Hooray! If I ever live in Boston I’m gonna crash all his classes.
  • Bruce Sterling – as a speaker, Sterling rarely disappoints. You’re guaranteed at least a handful of clever bon mots, some novel insights, and a few incendiary things tossed in that you suspect is there just to get a rise out of people. There was a bit more of the latter this time. Aside: the commonality of all the three sessions mentioned so far is that they’re talks where can engage you in intellectual dialogue, even as a domain expert (this, unfortunately, is rarer than you’d hope – for years, I’ve been pretty dissatisfied w/ a lot of SXSW sessions because they often made me feel like I was wasting my time, but I had a lot less of that this year – partly by better panel selection (topics, knowing the speakers, skipping time slots), and partly by sheer luck I think).
  • Phil Torrone and Limor Fried – I’ve seen this talk a fair number of times, but it doesn’t get boring – there’re always new gadgets and the conversation does keep evolving (I like the DIY business tangent, and I’d appreciate even deeper discussion about the more serious/cultural implications of Maker Culture and the coming of the Fab Labs…)
  • Beautiful Algorithms – this was everything I wanted out of the session. A soothing discussion about various maths accompanied by great visual animations of said algorithms. Take a look at cove.org for some of those. (Hilbert Curves btw are quite useful for collapsing multi-dimensional data)

I’m really looking forward to catching some of the podcasts of sessions. Here are the ones I wish I didn’t miss:

  • Mobile Design – Kevin moderated this one, and apparently Matt Jones was quite on. This unfortunately overlapped w/ the Jenkins session, so I really didn’t have much of a choice on that one
  • Pervasive Gaming – I almost made it to that 10AM session, but blinking led to a 1hr snooze…
  • WoW w/ Joi and Justin – I heard good things about this, and yes, it turns out that this is really good. Joi, Justin, and Ben are great complements for each other and the conversation is lively and touches on all kinds of relevant issues… highly recommended
  • Field Guide To Design Inspiration – haven’t listened to this yet, have heard it’s worthwhile – but come on, no slides?

Slide

Google Reader Revisited

I’m giving another Google Reader another shot after the latest tweaks – originally I ended up giving up since tagging 600 feeds was just an impossible task jumping between viewing the content and the settings view, However it’s still been quite a slog

  • The feed filter in Settings page is great, but it really just makes you want to have that in the main reader
  • The in-reader pulldown is great for making changes, but it causes a several second refresh to go on in the subscription list. This I suppose will disappear as updates are actually implemented properly
  • One of the annoyances of my add experience was a fair number of dupes – it seems to have added Atom + RSS feeds for many of these, forcing me to very annoyingly slog through, double check both feeds, remove/tag one, wait for the subscription list to refresh, and then remove/tag the other – this as you can imagine completely sucks and makes me want to stab a spoon in someone’s eye
  • Search! But this is well known
  • Customizing your start page really makes a huge difference. Reader still takes too long to load and it doesn’t feel like i get a good overview of what’s new (I really want an expanded list view – a list view with a couple lines of content)
  • Now if there was a way to group/nest folders (I suppose I could mass select based on tags and add another tag w/ a hacked name starting w/ ‘_’ to put it first… but that’s not exactly what I want, and the clutter is very real)
  • Really wishing I could tag while adding a subscription. I’ve added a dozen subscriptions already and everytime I think about the 5s I have to waste doing that
  • Inline help for key commands would be really useful
  • Icons/Thumbs/Cards would really make a difference in the reading experience – or color-coding, better greying out of read items, etc. – even with the left-bar hidden, the layout is too busy/cluttered and undistinguishable (just squint and look at it if you want to see how hard it is to glean information from it)
  • A preference to not show post numbers would be easy to do (could be done via GM script)

Google Reader is the best feed reader out there right now, although how it’ll be accepted by the mainstream I will probably continue to be an issue (there are a lot of corners that can and probably will be rounded). Almost all of the things I listed above are fairly surface/trivial to fix. Obviously search is a little less so (I understand their pain for proper privacy / subsectioning on their search). The only other major thing I’d really love in my reading experience is a Dashboard view that could offer a more topical/buzzy view of things. It’d be great if there were link/topic-based clustering integrated both for that and at the individual post level (making it easy to follow threads/collapse redundancies). Along those lines way of automatically classifying linklog posts vs writing would be pretty sweet. Actually, I take that back, there are about half a dozen other things I can think of that would be huge opportunities for anyone aiming to do a reader, even for the “power” market that Reader has aimed at, not to mention the general public.

But until then, I think I’ve found a new feed reader (I invested a while last night and am about half-way (I hope) tagged – why oh why can’t I filter just for untagged feeds?)

Oh also, that “inbox for the web” marketing line you’re using? Sucks. I think the last thing anyone wants is yet another neverending stream of things to unbold…

Update: I’ve given up on categorization for now. I have about 450 feeds left, and with the delays in loading and picking, if I averaged 6 seconds per feed tagging it’d take me 45min of continuous tagging to organize my feeds. That’s ridiculous. I give up for now.

Firefox: Life-changing Extensions

I’d consider myself a Firefox “power user” – at one point I was pushing 50 extensions (I tried to keep it lean with my Macbook re-install, but still have managed to accrue almost 20). While I have a few extensions that have completely changed my browsing experience (SessionSaver, Adblock Plus + Filterset.G, Greasemonkey), these are extremely rare. I believe I’ve found three more today:

  • SurfKeys – this defines a number of keyboard shortcuts for easier navigation
  • Hit-a-Hint – this takes things one step further and creates a mode where every link element is numbered for instant keyboard navigation
  • keyConfig – this is the same plugin that I discovered for Thunderbird and lets you re-assign all the keys for this and everything else in Mozilla to your heart’s content – every application should have this. I’ve changed my SurfKeys to a vim-like setup

(I’ve changed my HaH magickey to ‘H’ and disabled the rest)

The only thing I’m really missing from my browsing experience right now is slightly better live-editing of GM scripts/pages (Platypus is almost there) and radically better history/bookmarking (infinite caching of my page-content and browser/tab-paths/history please).

Sometimes it Browses as Well

Like most people apt to be reading this right now, I do a lot of web browsing. On any given day, I’m apt to have a dozen windows and over a hundred tabs open. Firefox does not like this (luckily, it looks like there’s some definite progress on memory leaks). Suffice to say, without SessionSaver, I’d be a very (as opposed to mildly) unhappy camper.

The past few months, this has taken a decidely worse turn as I’ve discovered and installed more and more useful development extensions and GM scripts. The kicker here is that most of these are invaluable. I can’t even being to count the amount of time they’ve saved in hunting down otherwise downright nasty problems. But, alas, having all these plugins installed just means that opening new tabs gets to beachballing that much quicker. (dev quality inverse w/ browsing quality?)

Hmm, this really wasn’t meant to be a complaint post at all, but actually one highlighting some of the cool things I’ve discovered. So here’s my extension list, courtesy of InfoLister:

Confluence 2.0, Even Besterer

Last year, I started pushing really hard for campus-wide wikis at USC, and I eventually came to the conclusion that Confluence was the best choice for what we needed. To my great delight, as we rolled out, the positive reaction and uptake by all-levels (including very non-technical users, and across students, faculty, and staff) was great. It looks like the system is at about 700 users, 300 spaces, and 8000 pages (an average of 27 pages per space!). With that permissions performance fix, it looks like it should hopefully be able to handle the 50K-user target without too much of a problem. I can’t wait to see how that turns out.

Now, I haven’t been doing recent competitive analysis, so I don’t know how Confluence 2.0 stacks up against the latest developments by XWiki, SocialText, and Jot, but it’s certainly a quantum leap over the Twiki used in Yahoo. The new features of Confluence 2.0 are pretty astoundingly good. They’re in some ways obvious, but at the same time, it looks like that the majority of them haven’t been done by anyone else yet.

  • The configurable RSS feed builder, which allows construction of attention streams is a pretty huge deal. It can also be fed back into the site very easily. All it needs is AJAX filter capabilities…
  • Confluence’s Dashboard gets even better with favoriting of spaces and pages. This update also makes it possible for the Dashboard to scale for users that have hundreds or thousands of spaces available to them. Twiki has a little personal sidebar, but that’s quite anemic and almost not worth by comparing.
  • The last big feature is also pretty ginormous, which is tagging, or as Atlassian is calling it, Labels. In addition to global tagging, they also implement namespacing for personal tags (my:) and have a slick AJAX tagging interface.

These features (oh, a WYSIWYG editor as well) make an already amazing product even better. I’m hard pressed to think of core functionality that it’s missing. OK, not really:

  • Better Mail Ingestion/Interaction
  • Subspacing, also clean URLs when hierachies are used
  • Instanced templates (inheritance)/better components system
  • Structured entries (input/process/output; see also templates)

And some “wouldn’t it be nice” things:

  • Customizing Dashboard
  • Better way of delineating spaces you can see because they’re public vs where you’re explicitly made a member
  • Personal space, profile components, more comprehensive input/interaction aggregation
  • Better child-node re-ordering/re-parenting

Auto-image Resizing

I’ve been using a variation of Clagnut-style liquid image-sizing in my blog, which works fine in IE and Firefox, but breaks because of Safari’s crappy image resizing.

Safari further confounds things by not allowing reliable post-hoc style removal via JS (sometimes it works, sometimes it doesn’t), and not appearing to support anything like image.naturalWidth to show the original sizes. So, here’s a fully JS solution (IE has problems with returning the parentNode.clientWidth so I just slap the old width/height styles on in that case):


function fit_blog_img() {
  if(!document.getElementById) return;
  if(!document.getElementsByTagName) return;

  var blog = document.getElementById("blog");
  var imgs = blog.getElementsByTagName("img");

  for(var i=0; i 1) {
      img.style.width = maxw + 'px';
      img.style.height = Math.floor(h/r) + 'px';
    }
  }
}

I’ll be doing some more bloggy hi-jinx in the near future. Looks I should get moving on releasing my rtedit modules…

Facets and Freetags

I’ve been playing around with categorization for a while, and have been watching the recent rise of freetagging with great interest. A friend, Nick Mote, wrote a recent paper that does a good job both to summarize developments from a close-to information sciences perspective and to outline several near-term issues.

Among them, I believe that both disambiguation and synonym merging are relative non-issues. For the former, the ease of intersections almost makes it moot from the practical perspective of searching. For the latter issue, we are already beginning to see automated solutions (related tags).

One of the reasons for the relative ease of solving these problems is that the applicable relevance algorithms are already quite familiar to lay web practitioners (i.e., people like me, without a CS Ph.D) from their long-time use in e-commerce (collaborative filtering), spam filters (mathematical filters), and now social networks (web of trust). [my faves: clustering, adaptive resonance, context graphs, CRM114]

Anyway, what I wanted to ruminate on was the non-hierarchical freetag model of unions, intersections, and differences and see if there’s a way to to build a practical (both in terms of backend implementation and user interface) bridge with (more) traditional hierarchical faceted classification.

The first hurdle is, I suppose coming up with a convincing argument that hierarchies are worthwhile. I think quite obvious that in everyday life, we categorize and subcategorize often and that being a first-class object isn’t completely out of the realm of sense. The real question is if there’s a way of reintroducing hierarchy that doesn’t reintroduce the problems they caused in the first place.

First lets talk a bit about data structures. Traditional structures will explicitly delineate parent/child relationships, either via pointers or relational structures. Note that this can be generalized into the generic subject/predicate/object triplets that we see in RDF tuples. While I’m very partial to typed links (and late binding and dynamic properties… keep on target), I think we can see that this will lead to a level of complexity that will work against both ease of use (first rule of getting user participation) and social/corpus relevance matching (although spam filtering engines like CRM114 are built for sparse data).

Before we get to something I’m throwing out, I’d also like to mention that in our faceted hierarchies, Celko’s set/adjacency models (he recently published a whole book on trees in sql) won’t directly work as we’re dealing with what will likely be very bushy graphs (think overlapping possibly-cyclic digraphs). A real mess huh?

So, my 3AM brainfart last night was to try attacking from the point of view of using traditional tagging structures, and taking the idea of separators for hierarchies and improving on that. For example:

tag: foo
tag: foo.bar
tag: foo.bar.baz
tag: foo.qux

If we do a search for foo[\.]*, we will everything within tree ‘foo’ inclusive. This relieves us of many of the disadvantages of traditional hierarchical representation, and does not marginally increase complexity of either searches or of tag-renaming (the former can be globbed relatively inexpensively and the latter is costly either way).

Now, the main crux of the matter comes with the user interface end. ‘foo.bar.baz’ is a pain in the ass to type. Sure, your non-hierarchical option is to type ‘foo’ and ‘bar’ and ‘baz’, but this, at least from the input side, removes one of the advantages of hierarchical input.

In this case, then, why not do masking? When storing/searching, take both the entire ‘foo.bar.baz’ as well as the most specific child identifier ‘baz’. This creates a new disambiguation issue:

tag: baz
tag: baz (foo.bar.baz)
tag; baz (foo.qux.quux.baz)

From a search/aggregation perspective this might not be necessarily bad as it’d combat the sparseness issue, but from an entry perspective it again minimizes the hierarchy usefulness quotient (at this point, one begins to ask, are intersections that bad? The answer of course is in most cases no, however in some yes).

A UI solution for this is to have an auto-completing combobox that recognizes hierarchies. This widget is also useful for traditional freetagging as well, so is a worthwhile avenue to persue regardless.

[Err, revisions, less half-bakedness forthcoming, as well as some code. Well, might as put this out for commenting. Finishing my trackback/comment code might be good.. ah, screw it, will procrastinate later. Back to real work for now]