Hackfest 2010

February 22, 2010

Just about to drop onto the tube and head to the GNOME 2010 Usability Hackfest Canonical London Edition. Many thanks to the foundation and sponsoring companies for funding my travel!

The Shell Its going to be an interesting week… esp. revising, designing, refining and discussing how the new shell effects the overall desktop experience. Its great how much has happened on that front since 2009… always good to see active hacking on the core, it sleeps too often.

Big Picture I hope we can open the discussion up to design and do more than working out usability warts; digging into what GNOME is enabling people to do (or not) rather that just getting our noses buried in specific usability bugs. A broader design discussion would be a really healthy thing for the project as major changes start landing. While the warts are good to polish, some details matter and some frankly don’t. We should always strive for attention, craftsmanship and polish, but we should first make sure we’re building the right table.

So many hackers+designers gathering is a great opportunity to tackle big material; esp. if we have the courage to move past our customary organizations/associationsand really sit down together as individuals and honestly ask “where do we think this is going?”, “what is this gnome thing?” and “where should we go?”.

Rants One of my plans this week, in addition to specific design hacking is going to be head-hacking, I’m planning to write a series of posts covering broadly how I’ve seen Gnome design working, and how it could be working better.

Time to get wet, see ya’ll in 45 minutes.

Civilised Discussion

November 19, 2009

Shocking: http://i.imgur.com/aWbgi.jpg

Howdy all, long time no see. There’s a tidy little use-case not being addressed well by existing software… something like:

“You’ve got a song on your laptop, you want to play it on your stereo, but being tied down by a wire is a bummer”

Computers in the living room, yada, yada. If you’re a chump who’s really with it, you have some fancy bo-schmancy media server, you compulsively synchronize your laptop’s music (most computers are laptops now) with your media server, and its plugged into your 13.1 channel dolby ultra-digital super-surround system. Me? I’ve got a busted old laptop plugged into my ghettoblaster. I think I updated its music folder last year.

Phase 1: It’d be pretty cool to make a sort of “free airtunes” that ran on Gnome, OS/X, & Windows. It’d have a speaker-server piece that you drop on your computer by the stereo, and it’d have a client piece that manifests as a notification area icon. Whenever a speaker-server is visible on the local network (zeroconf/rendezvous), you get a pull-down in the notification area to select the speaker-server for output. When music is played in your music player, it comes out through the remote server. By inserting into gstreamer or coreaudio (on Windows?) you intercept data while its still OGG/MP3, and zip it over the wire(less). So… you use your normal music player, and it just happen to tunnel through the network and come out on a stereo across the room.

Phase 2: A really simple queue-based HTML music player that runs on the speaker server. So you can still play directly as in Phase 1, but multiple people can also connect and “queue up” songs to be played in the future. So the queue is a mix of music queued by different people from their local laptops, and its pretty much just a “here’s what’s coming next” list, a play/pause button and a skip.

I think a solid implementation of Phase 1, that was dirt simple to install would find a lot of users. I think there’s some cool places to go with this after Phase 1 too, in the direction of music server player stuff more targeted than “home TV screen media server” stuff. I admit, they overlap a bunch, but I think there’s benefit to be had from a focused attack on music (also small diffs like the focus being local-to-computer music, not synching to a central archive, etc).

Anyway, I’m up for hacking on something like this as a contributor, if somebodyelse(s) is(are) down to be the Big Boss(es). In particular, I’m happy to help with design as desired, write the OS/X client bits, and contribute code on other assorted pieces. I’ll drop by #musicbox on irc.gnome.org for a couple days to see if there’s interest. So if you’ve got interest in a new project and this looks fun….

First off: Shoes is good. Processing is pretty good. Their stories are great. Programming, it turns out, is way way way more fun when you can just, you know, sit down and program instead of dicking around with libraries, installing shit, configuring shit, writing xml manifest doohickies, and otherwise NOT PROGRAMMING. Programming (making stuff) is good: A.

Secondly: Web pages are bad. Story: friend makes bipolar humor magazine, friend expects to be able to, you know, just put it on the web. Friend discovers putting things on the web not nearly so simple. Seth vicariously relearns: putting things on the web is not simple. This is stupid. It is ironic that we (programmer-technologist-engineer-robotlove narrative-collective) solved WYSIWYG for paper in the 1980s, and paper is a domain that’s not “in the system”. Programmers invented the web domain, we collectively control it, and we haven’t made this rather obvious thing work. I understand many reasons it is this way, partial credit ok?, but its still bad: C- (i know you can do better, see me after class).

Finally: Tablet computers are good, tabletpc is bad. For random reasons, I’ve borrowed a Tablet PC. I had not expected to be so swayed. Its great. WindowsXP doesn’t use it very well, (Vista might be better, I dunno), GNOME barely uses it at all (treats it as a mouse for all intents and purposes), but as a software maker person, it was like seeing a million ways I could design software to use this thing. I desperately wanted to start writing table PC software, and then I remembered it would be useful for, like, 5 people (I’m not counting small tablets like phones and maemo here, they are very cool too, but they don’t have the size or the sort of pressure sensitive wacom like input needed for a lot of what I’m dreaming of). If every computer had a tablet screen, I truly think computers would be a more lively creation oriented… er… medium (that’s really the whole theme of this message: how do we making shit so uncomplicated its feels effortless and fun and lively). Its a night and day difference what you EXPECT a computer to have (e.g. mouse or similar pointer device) vs. optional peripheral. Its too bad the touchscreen didn’t make the cut when Windows codified the mouse+keyboard+pixeladdressedscreen. For tablets, I cried and pooped my pants (yes, that good): A+.

Vis a vis web page creation…. I think there’s a rather tasty snack to be had writing an unusual wysiwyg web page maker, that throws up large rambling (“art oriented”?) canvases using drawing, scribbling, built-in lappie cameras, some typing and other shit. Not this boxy professional sort of web page, those are great, but something that flows a little easier (with the tradeoff being, a little more mess). Call it Scramble, or something, just good for putting up a mess of cool shit.

Draw something on a sheet of paper, hold it up to the laptop camera, you see a preview of how it will look inserted (with white areas turned transparent), click button and its placed. You could drag its handles to move/size it. Draw link areas in, and a pop down appears of other pages on your site (maybe pop down of any open tabs in the browser too?). Select a target, or click “new page”. Keep going, drawing sketching, dropping stuff. Allow creation of simple multi-frame animations. It would be especially cool if you have the animation beat-synched (to real audio?). This could be especially cool if it was pen oriented, but I think there’s a lot of potential even using a camera and a mouse. It makes big sprawling 2D spaces. There’s good potential for using the web as a different sort of medium.

I’m a doofus. I added a page from inside the WP interface instead of creating a post. Here’s a response to Paolo from long ago about audio on linux… I mention these because a lot of GNOME people may never have been sucked into the strange world of electronic music apps on Linux, but some of them are quite cool (if crufty), and a lot of fun for programmers.

re: Paolo about music audio on Linux:

The strange thing about audio apps on Linux is they’ve happened (in scores) by a process of acretion. There’s nothing really geared toward people getting started, but the belly of the beast is incredibly rich, though very much geared toward electronic music… much more impoverished for guitar effects. But, yeah, consistently littered with irritating interfaces. As seems to often be the case with Linux, there’s a lot of choice with tradeoffs you don’t want to make, rough gems “on the inside” and one or two semi-polished gems.

The motherload is PlanetCCRMA @ Home put together by stanford’s computer music center. Every time I browse there I find surprising new projects. Two notable apps that are really fun for programmers (but a pain to use in many ways) are:

Supercollider -a smalltalk-esque programming system for putting together music “pipelines”. Its incredibly fast, has VERY rich filters, and they are some of the best sounding in the world (inc. commercial). Supercollider’s filters would make an excellent basis for a more readymade app as well, since its synthesis is done out of process and can be externally controlled through OSC (the next evolution of MIDI). I recommend looking at supercollder just because of its “holy sh*t” factor.

PD – pd is a visual “filter chain” based programming environment. You drop filters, sources, and sinks down and draw lines to connect them together. Its commerical cousin Max uses a nicer widget set, but once you get past the archaic widgets, Pd is quite nice, has lots of inline developer docs, etc.

Neither of these is an end-user solution to the problem Paolo outlines, but a programmer could build his own tool pretty quickly using one of these.

Because LADSPA, the Linux audio plugin API, is pretty well defined (and very simple), it’d probably be easy to hack together an audio effects rack that’s good for guitar “pedal” with a nice GTK interface. I agree that many people would benefit from clear easy to use audio apps like this, especially ones that fit with a clear physical analogue like you’d buy at a music store. If you use LADSPA, and realtime isn’t as critical, you could bypass jack and not require the daemon munging. There’s a lot of plugins. The biggest problem is selecting ones that sound good. There are many of these, and even more terrible ones.

You got me. :-)

October 26, 2008

Rodney’s taken me to task for my silly rhetoric… score! yes content still takes bits on a disk, it exists, I just don’t consider it a very useful category for thinking about what to make. I’m not talking about fanciful abstract users…. *I* never think of my own stuff as content, and I doubt many of you do either….perhaps occasionally in a more sysadmin-y context I do (upgrades, backups, etc).

Abstractions can be valid, but still not illuminating.

But in any case, I substantially agree with Rodney, esp that the set of total document types can’t be sensibly enumerated beforehand (because people ARE quite different from eachother, with the caveat that I believe there are activities/behaviors that large classes of people share, and those can be designed around). It seems pretty limited to only worry about the “desktop”, and I share the hope that Open Source continues to move into other types of computers (go android). Peace bro.

Content doesn’t exist

October 25, 2008

I like what Mark’s saying.

  1. A lot of people do not understand folders…at least, not the same way most of us do. Even if they do, they may not be fluent enough with the folder structure to particularly want to dig around looking for things.
  2. A fix that’s not at the Freedesktop.org level will be confusing…at least, in some situations

Its great to see people getting hungry to hack on the main shell. Here’s some thoughts…

Content doesn’t exist. 

  • Q: Dude, what are you up to? A: Editing content, brah. 
  • Q: Fuck we got back late last night, you go straight to bed? A: No, I had to download a bunch of content before my flight.

Content is a bullshit word that means: “I admit there’s stuff that’s more important than my program and should be the focus, but I haven’t thought about it much“. Interesting note: outside the application programming world, content is also a bullshit word. E.g. in sales content means “that important stuff we’ll insert here or write later to make people agree with us“. E.g. in web development, content means “that important stuff I’m going to try and create a framework/layout/appearance/whatever for without having to specify“. Content is from the language of weasel-ese.

But I’m too hard on the word, there’s really nothing wrong with it, and I appreciate the implicit recognition contained in the word about what’s really important to users. This is a long-winded way of stressing (and I can see there’s lots of this going on already)….

THINK ABOUT THE DESIGNS THE WAY USERS WILL THINK ABOUT THEM

And because the way we talk about things influences how other people think about them….

TALK ABOUT THE DESIGNS THE WAY USERS WILL TALK ABOUT THEM

I suspect an abstraction/metaphor for dealing with content will only go half-way, because the rest of the distance is gotten by specifics, some of which are do-able without AI, and some of which are not.

An image is a very different beast from a song. A photo I took myself is a very different beast from a logo I downloaded from images.google.com. A photo I just took is a very different beast from a photo I took 4 years ago. When I’m emailing my grandmother, a photo I took this morning of her eating cheesey poofs is a slightly different beast from the 400 photos I just copied from my camera.

Its simply not possible (and hence, not a good idea to even try) to do the ultimate interface…. “give me that thing I want right now”. I’m not a big fan of automatically populating lists according to some fancy algorithm that doesn’t really know enough to get things right, and hence results in unpredictable results. That just gives me more things to skim through before I have to fall back on manual categorization.

Even relatively simple algorithms like “most frequently used” (e.g. in the Windows XP start menu) can be, at times, annoying. Its all about balance, balance, balance, and good taste.

I’d suggest making a long list of magic that you’d like to see in an interface. Some of it you can do, and some of it you can’t, but its cheap to dream bigger, and you’re more likely both to notice where abstractions (of any sort) will be limited and specific if…then statements are in order, and to improve the relevance of your abstractions. The point is not to support everything on the list, even if it were technically possible, there’s no good UI for most of these without un-doable-AI. The point is… feed your super-smart pattern matching brain with specifics so it comes up with GOOD generalizations.

  • If I just edited a photo in gimp, I’d like it to be really easy to attach (woah! idea, what if the file dialogue had a “stuff that’s currently open in another program” section with little thumbnails??? maybe it’d make for great workflows… you’d open a document (see my hands are dirty too! document is no better than content) once, and then it’d be stinking easy to get at in other programs… see, typing out these lists is already giving me ideas)
  • If I’m an active google doc user, I’d like to have google docs easily available in OO, maybe even interspersed in my open file list. Maybe it’d be cool if all my OO documents available in gdocs too, dunno.
  • If I just uploaded a bunch of photos from my camera, I’d like them to be really easy to get at when I use gimp
  • I want to be able to read any web pages I browsed in the past week offline, which is sort of a BS generalisation, but in particular I want to be able to read any stuff pertaining to API references, so when I’m programming in the park I can still get at all the great tutorials I read earlier
  • I want new music I add to my computer to immediately show up in my music player, maybe the same way itunes deals with a CD…. maybe I don’t want it added to the library, but I want a “New Music” section or something that I can click “Import” and “shwooosh” its copied to my library.
  • …and on and on….
Beware the emotional thrill of pretty screenshots
Things feel different when you use them. Its easy to go “oh, that looks good, I feel happy”, but you can end up in a world of thumbnails everywhere you don’t need, fancy graphics, and not as much usefullness.
Beware getting too attached to something before you see if it looks pretty in screenshots
Its gotta be doable in a 2D UI, and its gotta look good.
Oh well, my sauce is getting weak toward the end here. Tootles.

Waves Hand

May 18, 2007

To those who have checked out the URL, its a total coincidence that something exists there that happens to look like a partial implementation of the mockup. You see nothing. *waves hand*