Blueball-o-rama

After the craziness last week (Where 2.0, WhereCamp, and a GAE Hackathon in between), I was looking forward to taking a breather, but have instead jumped headlong into working on some much delayed music hacking and getting serious (along with self-imposed deadlines) with the Objective-C area. I’m also catching up on publishing stuff from last week, so here’s the summary of my Bluetooth work.

nodebox.py
As Brady mentioned in his Radar writeup, Blueball came primarily out of discussions on how to do an interesting Fireball-like service/tool for a single-track, stuck-in-the-middle-of-nowhere (sorry Burlingame) conference. Also, my desire for Brady to say “blueball” on stage. (score!) Fireball and Blueball are also both parts of a larger track that I’m exploring. It may take a while, but hopefully something interesting will start emerging.

I had a session on Proximity and Relative Location at WhereCamp, where I stepped through my code (really simple collectors, very half-assed visualizations running a simple spring graph) and talked a bit about the useful things that can be done with this sort of sensing.

The particularly interesting bits (IMO) are in applying the type of thinking that was being done on Bluetooth scatternets a few years back on patching together “piconets.” That is, by stitching together the partial meshes, you can get very pull out all sorts of transitive (inferred) properties. There are of course visualizations and pattern extraction you can do on that, but by matching the relative with the absolutes, you can get far wider coverage for LBS and related services. And of course, you can do your own reality mining on social connections when you start relating devices to people.


blueball v1 from lhl on Vimeo.

Web 2.0 Expo Presentation Rundown

There were actually a surprising amount (to me, at least – most of the people I talked to had low expectations) of very good presentations at Web 2.0 Expo last week. Most of them are now posted on either SlideShare (more presentations here) or, for the keynotes, on Blip.tv. This is I think, a very exciting and positive development for industry conferences (which I think will only have net-positive effects on attendance; conference proceedings are de rigueur at academic conferences). Here’re the ones I thought were most interesting.

Keynotes (overall, I liked the 10min What X Knows format that asks companies to boil down numbers and insights):

Lots of awesome sessions, the quality of the presentations (primarily in terms of prep/interestingness) was higher than usual:

  • A Flickr Approach to Making Sense of the World – my favorite session of the conference. If you’re doing “geo stuff,” you owe it to yourself to take a look at this. The divisive hierarchical agglomerative clustering bit is great (using morton curves for better pathing, clever). Now there’s not a lot on reverse-geocoding, which I believe I am now doing unique and interesting work on — once I prove it works, I’ll have to publish/present about that. 🙂
  • Capacity Planning for Web Operations – sure you can’t clone Allspaw, but reading what he has to say is probably the next best thing.
  • Website Psychology – linking to an earlier version of Gavin’s talk (with notes, yay) – he does a really great job mapping cognitive psychology concepts onto site usage and development. Well worth reading and thinking about
  • Grasping Social Patterns – by far my favorite Ignite talk this year, all kinds of hooks for thinking about how far social apps and the “social graph” needs to go
  • Making Email a Useful Web App – Bots are awesome and underrated. I’ve been working a lot more w/ them recently and this was a good overview (would love an even more comprehensive history of cool bots…)
  • Even Faster Website (PPT) – Steve Souders (now at GOOG, doing the same sorta thing he was doing at YHOO) talks about the current stuff he’s working on, which is optimizing JS (the logical progression). Great new stuff, just as useful as the older stuff
  • Adding “Where” to Mobile and Web Applications – a bit basic, but a good overview of how location stands today. Come to Where 2.0 and Wherecamp to learn more…
  • Polite, Pertinent, and… Pretty: Designing for the New-wave of Personal Informatics – slides not online. Boo-urns
  • Casual Privacy – slides not online. Boo-urns
  • Next Generation Mobile UIs – slides not online. Boo-urns

Talks I didn’t make but that have interesting decks:

Some stuff that sounded interesting but don’t have slides online: include Marc Davis’ Mobile talk, Opportunity Computing in the Cloud, Social Networks and Avatars (caught a few min of this, looks like they haven’t done a lot of work on the numbers (even organizing across cohorts), but still would like to see the deck), Global Design Trends (there are slides, but only enough to wish you had a recording of the talk)

Some bonus talks if you’ve made it through all those:

Did I forget something (quite probable), miss one of your favs? Post links in the comments.

Clay Shirky on Gin, Television, and Social Surplus

Clay Shirky gave the best keynote talk that I caught at Web 2.0 Expo last week. He’s posted a transcript, entitled Gin, Television, and Social Surplus on his new book’s site (also quite recommended; it makes it onto my “understand the internet” bookshelf).

So how big is that surplus? So if you take Wikipedia as a kind of unit, all of Wikipedia, the whole project–every page, every edit, every talk page, every line of code, in every language that Wikipedia exists in–that represents something like the cumulation of 100 million hours of human thought. I worked this out with Martin Wattenberg at IBM; it’s a back-of-the-envelope calculation, but it’s the right order of magnitude, about 100 million hours of thought.

And television watching? Two hundred billion hours, in the U.S. alone, every year. Put another way, now that we have a unit, that’s 2,000 Wikipedia projects a year spent watching television. Or put still another way, in the U.S., we spend 100 million hours every weekend, just watching the ads. This is a pretty big surplus. People asking, “Where do they find the time?” when they’re looking at things like Wikipedia don’t understand how tiny that entire project is, as a carve-out of this asset that’s finally being dragged into what Tim calls an architecture of participation.

If you didn’t catch it, this is well worth reading.

Internet Asshattery, Armchair Scaling Experts Edition

I know it’s never good to pay attention to the nattering classes, but there was a pretty high profile fusillade that Mike Arrington launched on Blaine Cook which seemed to bring out the arm-chair experts in full force in the comments. Now, while I think that Arrington’s post is way out of line (I’ll explain that in a bit), I’m almost not as bothered by it (as long as he’s not to bothered for being called out on it)… What really bugs me is the number of clueless “developers” throwing in their two cents. That includes Arrington’s two Rails developers with “finger on the pulse of the rails community” (ha!). My discontent was further exacerbated by this (unrelated) completely clueless piece on The Register. Is this the best that tech journalism has to offer?

First, a disclaimer: I don’t know Blaine very well, and I don’t have any privileged info on Twitter or Obvious Corp.

There’s no question that Twitter has and continues to suffer from capacity, load, and other stability issues, and pointing that out is fair game, however pointing at Blaine’s scaling talk as a personal dig is a disservice to the everyone, especially since:

  1. The advice in the slides are generally good (and the “It’s Easy” is obviously snark – just look at the failcat in the next slide; it’d be easy to confirm that by asking anyone who was in the talk (like me or several hundred other people) instead of projecting prideful boasting to justify his attack — I’ll avoid ascribing motivations to why Arrington chose to do this).
  2. More crucially, the slides themselves point to the issues that a proper tech journalist would be able to spot and follow up on to try to find out what was really going on (assuming he cared about that).

For example, 600 QPS on 8 machines is pretty decent – but this raises the question of utilization and capacity planning. You can see from the 1×1 MySQL structure and the note on DRb that there were many single points of failure – again, this raises questions of BCP and redundancy. With the constant bumping of limits, you could guess that they were running really hot (and from a single data center, even after the move (probably w/o backup routers, etc.)) — all these issues are as much (if not moreso, since these are technical no-brainers) business/financial decisions than architectural/technological ones.

Now, I don’t know what happened between ops, management, and engineering, but guess what? Arrington doesn’t either, and he never bothered to follow up and kicks Blaine in the head instead, even when such clues obviously raise significant doubts about whether it’s appropriate. I agree with Arrington’s point about accountability, which is why I say now that Arrington wasn’t posting journalistically (the minimal followup with someone w/ half a clue would have pointed out exactly what I did), and Blaine deserves an apology. If you’re gonna shit on someone and start pointing fingers, you better have the goods to back it up. Whiny, uninformed personal attacks belong on Arrington’s Live Journal or (wait for it…) Twitter stream.

Now, onto the retarded comments from wanna be developers. Well first, of the entire thread, I only saw one half-decent attempt at a technical critique, and even that falls down when you look at it. I don’t want to belabor the point, but the poster, Jordan, actually raises technical points worth addressing (and refuting):

  1. On indexing: while it’s true you don’t want to index willy-nilly and it’s incomplete to say “index everything”, if your ORM isn’t automatically indexing frequently used keys, you can be sure as heck that you’ll want to make a point of indexing them, especially if you’re doing joins. Yeah, you don’t index what you don’t need, but even if you have frequent writes, you need to eat it if you’re ever going to ever query. Because people suffer from lack of indexes, unless you’re not adding an index and examining, you’re not gonna have a problem “over indexing.” I don’t know the exact fan-out/pub-sub architecture, but you can be sure you’ll be doing a lot more reads even if you cache the hell out of it. If you’re thrashing, you’re looking at having mis-configured index caches more than anything else.
  2. DRb: This is a case where it looks like he just misread. It’s easy if you don’t have the context of the talk. DRb was good enough… until it wasn’t – which is why Starling was written to replace it. Now, we still don’t know if it’s a single point of failure, but it obviates that whole rant (as to why DRb was chosen in the first place, more on that later)
  3. Caching: again, the same thing with indexes. Of course over-caching is bad, but that’s never going to be your problem because you start with no caching, and you add caching until you start losing performance. Also, the “no substitute for fixing the underlying problem” is naive – most of the time, your problems are that there’s no need to do complex queries or processing since the data doesn’t change and should be cached. durrf.
  4. Profiling: ok, this I’d sorta agree with. Mentioning ruby-prof would probably be good, but honestly, 90%+ of optimizations can be done on simple timers, explains, and logs alone. (And also, performance tuning doesn’t have all that much to do with scaling anyway.)

As to the rest of the wannabees, it really is true that if you haven’t done it, that is: been intimately involved growing a social web app from prototype to Internet-scale on a UNIX stack, then you really don’t know shit. (I know more than my fair share of people that have, and I didn’t see any of them posting armchair bs on the comments). I’m not trying to say this just to be dismissive, but only to say, you really really, don’t understand the technical challenges involved. Generating target sets on social objects is extremely expensive and ill-suited to traditional 4NF data models in RDBMSs. So is social activity fan-out and any number of activities core to Twitter’s message routing/storage and to social web apps in general. These are not traditional problems and standard, HA solutions just aren’t available.

Even if you’re architecturally sound, you’re dealing with development with extremely tight timelines/pressures, so you have to make decisions to pick things that will work but will probably need to eventually be replaced (e.g. DRb for Twitter) — usually you won’t know when and what component will be the limiting factor since you don’t know what the uses cases will be to begin with. Development from prototype on is a series of compromises against the limited resources of man-hours and equipment. In a perfect world, you’d have perfect capacity planning and infinite resources, but if you’ve ever experienced real-world hockey-stick growth on a startup shoestring, you know that’s not the case. If you have, you understand that scaling is the brick that hits you when you’ve gone far beyond your capacity limits and when your machines hit double or triple digit loads. Architecture doesn’t help you one bit there.

And the people that have experienced this and lived to tell the tale also know that it’s impossible to critique the technical/operational aspects made w/o seeing and understanding the QPS targets, load graphs, profiling data/sar info and all manner of other architectural/technical data and details (that none of us are privy to) before commenting with any sort of authority.

Anyway, if you were given the choice of working with/hiring someone like Blaine who has had the firsthand full life-cycle scaling experience and any random developer (and definitely anyone from the TechCrunch comments), I think it’s fairly obvious what the right decision would be. I guess I’ll leave it at that.

This leads to Part Deux of my rant… this lead-paint baby of an article entitled Backlash starts against ‘sexy’ databases which has the following quote, I shit you not:

“The bottom line is don’t tell me RDMBS [sic] can’t scale if you can’t write a decent query or design a normalized database schema.”

This is by one John Holland. Now, no doubt the WordPress code can be pretty shitty (although sometimes there are good reasons for the multiple queries to support various hooks/plugins), but you will never hit the type of performance problems in a WP (non-mu) installation that have people looking for MySQL alternatives because WP just doesn’t have the types of queries that destroy RDBMs.

I can understand that it’s not the article author’s (Phil Manchester) fault for conflating the “cons” with arguments that WP is badly coded with the “pros” (correct!) that you can’t write the kinds of queries you need for social apps because if he’s like the reporters I know, he probably doesn’t actually understand it at all and is doing his beat writeup, but dammit, can’t the author get some decent frickin’ technical advisors to explain this if he’s doing tech journalism? The entire article is based on characterizing a misinformed blog post as a “brewing controversy.”

I mean, I don’t want to be more mean than I have to about this, but John Holland just has no idea what he’s talking about. He picks up on Atwood‘s post on WP inefficiency, and then uses that to (completely incorrectly, and not without a tinge of reverse elitism) generalize on why the “cool kids” are hyping non-relational data stores. He goes on to boldly state “Relational databases are not the bottleneck” due to his complete lack of understanding of the actual problem set (hint: I don’t know anyone who’s suggesting WP should be switched off MySQL). This then leads to a horribly ignorant article being published by a writer who is in the best case, lazy and doesn’t understand what he’s reporting (just show two equal sides and do a writeup) or in the worse case is simply looking for a manufactured conflict that only will serve to stir controversy and confuse the non-savvy reader.

(The reasons for alternative data-stores actually exist in a couple axes – one is for more development flexibility or the ability to change functionality w/o expensive downtime (schemaless), one is for issues of scale and availability (distributed), and then a whole bunch for supporting social queries that just are horribly suited to RDMSs (multi-attribute, inverse index, mq/pubsub, etc.). Many of the alternatives are a combinations of various axes.)

Sorting Lists of Lists in Python

No language is perfect, and Python is no exception. In Python 2.4, for example, sorting a list of lists sorted by a value in the nested list (more common than you’d think), requires a bit of work and a library:

import operator
max = sorted(list_of_lists, reverse=True, key=operator.itemgetter(1))[0]

Python 2.5 makes things easier:

max = max(list_of_lists, key=lambda x: x[1])

The official Python Wiki has a nice HOWTO on Sorting in Python (also a much less comprehensive one on sorting dictionaries).

(note: OS X Leopard comes w/ Python 2.5 while, Debian Etch remains on 2.4 by default)

Getting Started w/ Python

As you might have heard, Google AppEngine launched tonight, with Python as its initial (and only) programming language to interface with its services. I started switching over to Python (from Perl) a few years ago for general processing and daemon tasks (mostly for its sweet RPC bindings and its comprehensive, if still somewhat convoluted Unicode handling). Over time, as the libraries matured, I started moving more and more over – some things were long overdue, like a CPAN equivalent (pypi and EasyInstall have finally stepped up to the plate), but in some areas, like with cross-platform GUI toolkits, things like py2app/pyexe, or with libraries like Twisted, and SciPy, and Beautiful Soup, Python has long since blown past the competition.

Earlier this year, as I was wrapping up at Yahoo!, I knew I wanted a clean start, and after reviewing what was out there decided on switching to Python as my primary language and making a go of writing my new web apps in Django (deployment, performance, and decoupling being among the primary factors; less wankery in the development community was also a big part of it). I’ve been somewhat sidetracked by a slew of other projects, but so far it’s been a good experience (and I hope to have some stuff to publish soon).

Anyway, all this is a very, very, long setup for a list of resources that may help those who are looking to get started working w/ Python. I’m still not as proficient as I’d like, so here are the references that I typically reach for:

  • PLEAC PythonPLEAC (Programming Language Examples Alike Cookbook) is a project that aims to port the Perl Cookbook to other languages. The Python port has been at 85% for years, but is invaluable when looking at basic constructs.
  • (the eff-bot guide to) The Standard Python Library – although a bit out of date and not comprehensive, it offers short and useful examples for most of the modules in Python. This is great because often times the official library docs while technically complete are also at times completely opaque. If I were to give any advice to people writing API docs, it would be to 1) have some simple real-world usage examples and to 2) allow user annotations (PHP was (and remains!) way ahead of the curve on this one. It’s amazing how primitive the core language/library docs are.)
  • Dive Into Python – I waffle back and forth on how much I like Mark Pilgrim’s book – it’s oftentimes just short of useful and not organized so well (I’m still looking for a good language reference), but it also has really useful tidbits, like when I forget how to append the system import path
  • Python-by-example – this is a new one, and I haven’t used it much (inline-search would do wonders for this) but I wholly approve of the intent: “This guide aims to show examples of use of all Python Library Reference functions, methods and classes.”
  • Otherwise, I’ve found that doing a web search almost always turns up something on ASPN or on a mailing list somewhere.
  • Lastly, there are some interactive shells that are useful, specifically IPython. Reinteract is less of a tool that I use everyday and more of something that’s damn cool. The same w/ Nodebox.

Of course, one of the biggest benefits of Python is how readable the source code is – it’s definitely a big help for seeing how things works. Have any of your own favorite Python resources? Please post ’em up on the comments.

Getting up to speed on Django probably deserves its own post…

Dashboard Widget for Posting Blog Entries to Confluence via XML-RPC

First of all, here’s a zip of the working widget (10.4.3+): Confluence Daily Log.zip. I also checked in the Dashcode project.

I had an old WordPress widget from a year or two back that I had written, so I thought this would be a simple port, but I forgot that I had written it w/ a set of Python proxies because 1) xmlrpclib is awesome and 2) the JavaScript XML-RPC libraries I had tried (at the time I believe the best was jsolait) were maddening.

I’ve moved onto jsxmlRPC, which is an improvement from the prior options, but still has some issues. I also gave JS-XMLRPC a try, but the lack of documentation, examples, and the verbose retardedness of it all quickly convinced me otherwise. And I looked at @tomic briefly, but just couldn’t justify 300+K of JS dependencies for it. If I continue to have problems w/ jsxmlRPC, I may switch. Mostly I went w/ jsxmlRPC because I approve of its interface and of its documentation (it’s not that hard, a reference implementation would cover most of it).

My preference would have been something that magically did its business, but I actually had to really dig into jsxmlRPC’s code to get things working. While the demo worked well enough, it was barfing when interacting with Confluence. Turns out this is because jsxmlRPC does not handle parsing of payloads according to the spec – param values can be returned without a nested type tag (defaults to a string data format). jsxmlRPC tried to find a nested value all the time, which as you might guess, caused all sorts of brokenness. This can be fixed by changing the following (swap the while with this if) at the top of the getResultFromValueNode() function (line 385ish):

if ("#text"==valueNode.nodeName){                                              
  return valueNode.textContent;                                                  
}

Note: I saw that jsxmlRPC was still barfing on empty values. That’s probably a simple fix, but my brain’s pretty fried and I’m tired of looking at the code.

I developed this widget in Dashcode, which is many sorts of awesome and very much simplified the process, however the debugger and stack frame was for some reason not quite as helpful as one would imagine it to be. (It was all sorts of unhelpful in tracking down the errors I was looking for even when stepping through). Once I ported the code to Firebug and added a few console.logs(), the problems became much clearer.

In terms of functionality, everything seems to work for me. It does whipped up a very dumb local autosave as well. Here’s what’s missing:

  • Confirm dialog when navigating away from edited entries – I track the editing, but when I found out that Dashboard doesn’t support confirm() I tabled that feature
  • Handling reauth: I have no idea how long tokens last (forever? it’s not specified in the Confluence RPC docs), but if they expire, I don’t have a good way of trying to reauth (this would just involve adding some extra timers and some exception handling so not that bad to implement) – Update: – looks like these expire pretty quickly. I’ve uploaded a new version that just reauths before every API call (getBlogEntries, getBlogEntry, and storeBlogEntry)
  • Help – Some notes for the settings might be useful. IE, the “Space Key” is the shortname for your Confluence Space and the “Endpoint” is http://yourconfluenceinstall/rpc/xmlrpc
  • Widget Icon

OK, it’s late. I’m going to bed.

SXSWi 2008 Recap

This was my 9th SXSW (I’ve been to every SXSWi since 2000!), but my first time doing SXSW Music (hence the lowercase “i” in the title). SXSWi was once again much larger than the previous year’s, and I think that in terms of organization and logistics, Hugh Forrest and gang have done an impressive job handling the growth. That being said, I have to agree a little bit w/ Jay – I have my concerns w/ where SXSWi is headed. While it had grown a lot last year as well, my 2007 experience seemed to have had both a lot more spontaneity, serendipitous moments, and nostalgic fun (by which I mean being able to hang out and catch up w/ old friends that I only see once a year). I still had a good time though, and I was definitely pacing myself (having headed in directly from all-nighters at ETech and a week of music following), and I’m looking forward to 2009.

Some general thoughts first:

  • A lot of the problem I think stems from the fact that SXSWi is now so big that it has sessions on every floor (1, 3, 4) on every corner of the ACC – besides taking most of the in-between session hangout time to hike from one end to the other, it also means that it’s much more difficult to hop between sessions and (probably most importantly) that there *is* no more hallway to hang out in. In all the past SXSW’s, whether it’s been the 4th floor hallways, the Omni Lobby, or the back of Paradise, or any of the various parties, it’s been this sort of mingling that’s driven what’s made SXSWi really special for me in the past. Obviously my experience isn’t universal, but I think the growth has forced a lot more structure because of capacity issues and there’s been less stumbling onto great stuff.

    In terms of solutions, I think that for the sessions, it’s hard – the ACC is laid out the way it is, and the rooms are all booked full. I think that knowing that all the sessions were being recorded for future podcasting made me less worried about missing out on anything, and maybe that needs to go to the next step (livecasting panels)? Having some better sort of central gathering place is probably the best suggestion (maybe one of the expo halls or the lobby area of the playpen + dell lounge + weird transportation booths).

  • I actually liked the Core Conversations that I swung through/by, but the way that the they were put together into a single room made it pretty impossible to hear or actually conversate. Honestly, I’m not sure how this can be dealt w/ unless they somehow get rooms – I know they were valuable, and even the “niche” topics filled up w/ 30-50 people per session. O’Reilly style BoFs probably wouldn’t work since night-time is for party-hopping.
  • Although the parties themselves have also changed in character… The operative phrase for those not arriving 20 minutes before the start of the party seems to have been “one in, one out.” This is a situation that is perhaps rife for some sort of techno-social solution involving mobile technologies. While in the past it was nice to have single gathering points, it seems like what’s needed now is to have multiple high-capacity events going at any time and with event organizers helping to route over-capacity appropriately – I have to say that SXSW Music, while being much larger, didn’t feel half as crowded…

Now, onto the events/sessions – by and large my session/panel experience has continued to get better. I partially attribute this to increased quality, but also (because a lot of people seemed to have hit some bad sessions) a better sense of how to recognize things I’ll like and in avoiding stinkers. I also did pretty well at forcing myself up regardless of how tired I was, so here’s some mini-reviews.

  • Break Bread w/ Brad – This was much more successful than last year, thanks to 1) reserving a private space 2) admitting mostly people who knew who Brad was and 3) getting people to pay up front. The slideshow with the old school 0.3MP pics of SXSW’s past was a nice touch. This was my first Friday event, although it appears that the schedule, like the rest of SXSWi has metastatized – there are good things going on in the day on Friday now and I’ll have to plan accordingly…
  • Kick! – This was a welcome return and a good chance to hang out in the sun on Saturday morning. Since Anil got 6A to sponsor this year, there were breakfast tacos as well. Kick! Ass!
  • Harold and Kumar Panel – OK, this was a Film panel (yay Platinum badge) – actually, the only one I dropped in on, but come on, Neil Patrick Harris. Need I say more? I actually misread the time on that one, so only caught the tail end before hoofing it over to the Interactive Keynote, but still. Seeing Doogie in person? Awesome
  • Keynote, Henry Jenkins and Steven Johnson – I’ve blogged before about my (intellectual) man-crush feelings about Jenkins, and it was great to see him, even in the overflow room. This is a guy who speaks in fully formed paragraphs extemporaneously and even manages to elicit extremely erudite questions from the crowd. I met him briefly on the escalator down and kibitzed about Obama.
  • Blood, Sweat, and Fear: Great Design Hurts – there were a lot of interesting sounding sessions going on, but I chose this one because I’d never seen John Gruber give a talk and because this session seemed like it’d have the highest chance of having information that would be missing w/o the slides. It was split evenly between Gruber and Lopp, and it was fairly entertaining if not particularly enlightening.
  • Worst Website Ever: That’s So Crazy, It Just Might Work – Andy’s panel was probably the most fun of this SXSW. Merlin had a good deck, but I do believe that Jeffery Bennett was robbed (of one dollar). If you missed this, maybe that’ll teach you to never skip a waxy production.
  • Google Party – skipped it, heard the line and crowd was insane. We had our party at the same venue last year and it was nice to hear the favorable comparisons. Throwing a good party is hard work! Had a nice relaxing dinner at Mekong River instead.
  • 16-Bit – apparently we got there just at the right time – a huge line formed right after we got in. (coincidence? 🙂 The bar line was impossible, but we were saved by enterprising individuals with 6-packs. This was my favorite party at SXSWi (a pretty low bar this year, the only one where I had much fun at). We left early for Paradise though as a fair number of people didn’t get in…
  • Paradise – although I didn’t spend as much time there this year, it’s worth mentioning because it was actually less crowded w/ random people then last year (apparently there was a change of ownership, which worked to our advantage). Also, it was unfortunate that the kitchen closed at 12AM. The bite of burger I had there was *awesome*.
  • PureVolume – I head over there the first night and the last night; didn’t have as good of a time; just a different crowd this year I guess
  • How Manga Explains the World – I though Daniel Pink’s session was best session at SXSW 2005, so I was pretty set on heading into this. I wasn’t as blown away this time around, but it was still very engaging and well worth attending. He also gave out copies of his new book (which I feel the same as the talks I guess. I liked it, but I felt A Whole New Mind was better)
  • Magic and Mental Models: Using Illusion to Simplify Designs – I started out in the China session (potentially great topic but substandard panel) but quickly migrated to Jared Spool’s talk, which was great. The right mix of entertainment, showmanship and informational content (where the function and form support each other – I’m sure there’s a design meta-lesson there).
  • Designing for Freedom – I was actually hoping to hear more about what freedom and design mean within a social context, when communities start using your tools, but I don’t think it ever went there or the question I asked at the end adequately articulated that. For example, what design changes do you make to Orkut when the Brazilians invade and drive away English speakers by spamming all the groups in Portuguese? I’m less interested in talking about “skinning an app” than discussing the sort of interactions that happens when you have these different cultures/groups colliding.
  • Screen Burn – got a chance to take a look at the Blackbird 002 case in person – it’s surprisingly chinzy and cheesy, although the internals are quite nicely laid out
  • Space Tent – Props to Buffington for explicitly pointing me to the space tent as I was entering the expo hall – I might have missed it otherwise, and it was most definitely the best thing I saw at SXSWi. The demo they were showing had NASA’s Digital Universe Atlas, which included navigable astronomical data of the known universe loaded and other cool stuff. The main downside seems to be that they sell their software for $28K (they mostly do installations for museums and the like? see here)
  • Afternoon Delight – Yahoo!’s little soiree this year was at the Iron Cactus. Good food, good drinks, and just the right size/type of crowd (throwing parties during sessions might be the way to go moving forward).
  • The Gawker party was incredibly crowded by the time we got there so we had a relaxing meal (with Texas-sized portions) at Sullivan’s instead. It was good, but ended up taking forever, both for meal prep and for service, as their computers were down. From there, we headed on over to ACL and caught most of the Spinto Band set (but missed Litespeed Champion, whom I would end up trying to catch and miss 4 times this SXSW). After a quick stop-off at the Blogger party I went to try to catch MC Frontalot but didn’t like the lines, and called it a night instead.
  • Scalability Boot Camp – also worth mentioning that the Marriott’s free breakfast is really what made rolling out of bed for the 10AM sessions possible (Hampton Inn and Marriott both have breakfast bars). I was pleasantly impressed by the panel’s preparation of “slides” and “talking points.” I left midway through to check out the Building Developer-Friendly Web Service APIs session and was substantially less impressed. I ended up back at the Scalability session.
  • The Web That Wasn’t – I’ve actually seen most, if not all of Alex Wright’s presentation before, but it was still worthwhile (it’s that good, you can check out a version on YouTube)
  • PMOG: The Web as a Play Field – Merci and Justin were great, and Justin had one of my favorite slides of the conference. Still, I do wish I had caught the keynote, which by all accounts was quite good.
  • Design Eye for South By – I’ve really liked the Design Eye panels in the past, so I was pretty excited by this year’s session – especially since there’s really no end to the ways in which this year’s topic, the SXSW site itself (no offense), could be improved. What I wasn’t expecting was to be sitting in a panel where they droned on for 40min (out of a 1hr preso) without showing anything. And then for it to be a rather underwhelming styled friendfeed. Yeah, well, that could have gone better I guess. (you can talk about ‘strategic’ design, but if you want to do that, maybe covering some of the basic use cases (err, bands? mobile?) might have been good). I’m not gonna harp on it, I just wish it had been more worthwhile (or at least entertaining).
  • Bio-Networks: Using Mobile Technology to Impact Healthstyle – I hung out in this session way too long. Basically the entire time was spent covering this person’s ITP project without having any sort of insights in the topic area (physical instrumentation in general, or even on fertility in specific – ie, she wasn’t able to answer questions people had about the effectiveness of the device because obviously it hasn’t been deployed yet). Still, this made for a bit of good wandering time.
  • 20×2 – was pretty great this year (and I even caught the whole thing!) — more videos than usual, which seems to be sort of a cop-out (although I quite liked Rannie’s vid). There are always great ones, but I think Simon Batistoni, gave the standout answer this time around.
  • For better or worse I spent most of the rest of the night at the Frrvrr party w/ a few friends. Not being the most social, but catching some good bands. After a brief stopover at Ginger Man (mmm, framboise lambic on tap), I went to check out PV – which had a ridiculous line, so I ended up heading back to the hotel, but caught some friends heading to Magnolia’s Cafe (when in Austin…). This turned out to be a very good thing – not only a late night breakfast with good company, but I also said hi to an old co-worker (we both worked in Austin in 2000) who also turned out to have proposed to his girlfriend at the postsecret keynote I had missed. It’s a very, very small world.
  • Life After the i-Phone – I was pleasantly surprised when I rolled in to this panel because I didn’t know that Scott Jenson was going to be up there. He’s given the best mobile UI presentation I’ve seen (at a BayCHI session @ PARC), and obviously his recent work, particularly GMaps Mobile speaks for itself. So you can imagine my surprise when I realized that this was by far and most definitely the worst session I attended this SXSW. Personally, I put the blame squarely at the feet of the moderator, although there were some real bozos on the panel as well (I love it when a panelist who’s spent the past several turns parroting the previous speaker says he has nothing to add and then continues to speak for several minutes). I peeled myself off after the Q&A started and it was obvious things weren’t going to get any better, but wow. Just wow. I’m absolutely certain that everyone, panelist and audience alike came out of that room stupider. Net subtraction of value. Which is a shame considering that there are truly interesting things to talk about in terms of how the iPhone has affected mobile design and the industry.
  • Core Conversation: Next Generation Education: Bringing the New Web to Campus – Sam Felder led this conversation admirably. It was too bad that the room was set up the way that it was, it was really good to get attendees to actually participate
  • Keynote: Jane McGonigal – awesome, awesome presentation. even if there was a bit of an intellectual shell-game going on (bringing games into real life isn’t the same as turning life into a game because there are basic issues with how ludic qualities such as the magic circle (playing by the rules, safety net) don’t map when it’s real life and people don’t know they’re involved. still, well worth thinking about the larger impact of these things we make).
  • Creative Collaboration: Building Web Apps Together – yay, designers + developers. I’m not sure it was exactly representative but I do like all these people and they show the “better way” of how things could be.
  • Futurists’ Sandbox: Scenarios for Social Technologies in 2025 – After several minutes of listening to the future diary of Rollergirl I left. Interesting fun-fact: all futurists talk in a sing-songy way like Bruce Sterling
  • Taking Over the World: the Flickr Way – Simon has a very relaxing voice
  • Drinks at the Four Season (the back patio is quite nice), a trip to the Whole Foods (there’s a no picture policy, but I got a few shots off) and then headed in to the tail end of the Digg Shindigg which had started filling up w/ music people I didn’t know (instead of web and film people I didn’t know)

SwitchProxy for Firefox 3

A couple years ago, I wrote a guide for using SSH for secure connections on OS X. Creating SSH tunnels for SOCKS proxying is still my preferred way of securing my communications on public wifi networks, and with ETech and SXSW, I’ve had to get these up and running again. Since last year. The only big change to my setup is that I’m now running Firefox 3. Like with Keyconfig, neither QuickProxy or SwitchProxy have been updated, so I went and modified the install.rdf to make it compatible. Here’s a copy in case anyone finds it useful: switchproxy.xpi.

Keyconfig for Firefox 3

I’ve been happily using Firefox 3 for the past couple months. On the Mac in particular, it’s been a night and day difference performance-wise. One of the more unfortunate aspects right now is that there aren’t a lot of extensions that work with FF3 at the moment. One of those that I missed a lot was the keyconfig extension.

It hasn’t been updated for a while (and the download site is a bit on the sparse side, but it looks like the author, dorando is still active and there are directions for modifying the XPI to be compatible w/ FF3.

Since I went through the trouble of modifying the bits, I thought I’d throw it up there for those less inclined to muck around in the files. This will give an unsigned warning, but should install: keyconfig-ff3.xpi.

Modifications:

  • install.rdf modified with 3.0.*
  • install.rdf modified to comment out so it can be installed w/o modifying security preferences
  • this.os.addObserver(this,"stupid-dummy",false); added to function keyconfigService()
  • document.createElement("key") changed to gDocument.createElement("key") in the keyconfig.jar!contents/keyconfig.js file

UPDATE: The June 11, 2008 build of keyconfig at mozilla.dorando.at has support for FF3 – you’re probably better off getting the official version there.