geek!daily

... it is by will alone i set my mind in motion ...

Live Blog: Comet & Other Browser Stuff

It's a big component of what we call "real-time"

This is the kind of stuff that puts up a banner on a Twitter search ("# New Tweets Found") and makes things feel real time.

List of what's being done to move notifications from server to browser:
* Ajax polling: Anybody using the JS set-timeout function, then refetch. Used by GMail, Campfire, et al
* Long polling (typically Comet): Used by FriendFeed, keeps an http connection open as long as possible (keep alive), reopen when timed-out. Keep a local thread pool.
* Flash sockets: Same as long polling, but from Flash. Don't have the same-origin policy. No limitaions on number of connections. Does gzipping.
* Reverse HTTP: hosting a little webserver inside a JS connection. Long pushing?
* Silverlight ("MS's version of Flash")
* HTML5 websockets: part of spec, doesn't exist and not implemented. Expected to be like flash sockets.

(things discarded as too old/obscure/painful/absurd):
* Java applets (David Weekly is about to get himself kicked ;)
* Big ugly JS kludges (iframe tricks, etc)
* What's that Opera thing ... unite? ubiquity? Unite. Every browser is a webserver. Sounds like reverse HTTP.
* Using XMPP format, arbitrary JSON structure, Atom.

Libraries:
* Orbited (?) tunnels TCP thru HTTP, treats each end like a socket. JS front-end, Python backend. Often paired with Twisted. Specifically meant to be Comet.
* stropheJS: javascript, can use flash sockets
* Tornado: python
* Cometd: Java, made by Dojo to work with dojo
* Dojo: javascript, can use flash sockets
* APE project (?)


What formats are people using to send data:
* JSON
* XMPP

Apps and their libs/methodologies:
* Meebo: ??
* Google Wave/GTalk: GWT RPC, long-polling, their own JS
* FB Chat: ??
* FriendFeed: Tornado server with long-polling, their own JS
* Superfeedr: uses BOSH, stropheJS. BOSH is kinda long polling, bidirectional (two cs open all time). Very similar to comet, more friendly than strict proxies
* Collecta: uses BOSH
* Twingly: orbited
* PBWorks: long polling on network dashboard to see updates come in live; wrote their own libraries, also use stropheJS
* StatusNet - identi.ca and ??, orbited and cometd (you can do either)

Flex and Air apps? The most interesting stuff is what used to be called Flash Media Server (been renamed). They've got their own P2P protocol. All sorts of funky stuff you can do. OpenSource version of FMS is Red Five.

In what situations are these libraries breaking down?
* Transparent/Opaque proxies that give repeats/dupes/hangs. Keep buffer on server and check for these. Sometimes have to close connection to flush thru proxies.
* "Everyone focuses on the newest hottest event-based framework, but the hardest part is that HTTP wasn't designed for long-polling."

Have to hold open request/response pairs. Connection setup and teardown is expensive

Guy at UK telecom has only ~3K IP connections available in London area. Comet is going to force an upgrade of their hardware, which will be expensive. Real world constraints will always present.

Real-time at UI can be distracting at best, horribly annoying at worst. Charts work great, but text moving too quickly becomes hard. UX is challenging. Would be nice to add items while autoscrolling relative to the focussed item

When you want to add a pause button to your site, that's FAIL. But the hover-over-conversation to pause semantic is pretty good.

Go to jschat.com to see a bad resize.

FB pioneered notifications really well in UX. You get a "toaster popup" that doesn't disturb your screen and it fades after a few moments plus a bar at the bottom to persist the aggregated notifications/count. Really nice.

Growl is also mentioned as a good model. Is there interest in a notification aggregator with contexts in the browser? Meebo wants to go that way as a notification aggregator. Adobe wants to do this on your desktop. BrowserPlus also hits Growl. Prowl == Pushed Growl.

If everyone started using XMPP, it would increase the message load ("three bazillion individual messages"). No one is bundling XMPP updates; no reason you couldn't. ActivityStreams could also serve.

Why are people using Atom/JSON for this? They're so extensible, but when you extend them so far they're just as verbose as XML. "But we just don't like XML."

Would be nice if you could select things to pull out of the stream and hold onto.

Seems to be consensus that chat belongs at the bottom of the browser, append at end. Everything with a permalink (blogs, tweets, etc) gets added to the top (?). Seems to be related to height issues.

Infinite scroll vs. "More" button

Titlebar flash (Gmail and GTalk)

Some sites make a tiny flash widget to play a sound

Haptic: twitter dmesg to cellphone buzz

Notifications can become another form of info overload/noise

(We flailed at making a 1D/2D chart to represent frequency and value ... FAIL)

Phonetop apps are like desktop apps. Leah feels strongly that they're headed down-and-to-the-right and browser-ish apps are taking supremacy due to interoperability.

Apple's surprise: phonetop apps took off. (?) vs. John Gruber: "The most used app on my iPhone is Safari."

You can find the whiteboard pics in my Flickr stream.

2009.10.15 in Metadata, Social Networks, UI, Web 2.0 | Permalink | Comments (0) | TrackBack (0)

Technorati Tags: rtws, rtwsummit

MIT's 'clutter detector' could cut confusion - MIT News Office

This looks promising: some folks at MIT have developed metrics for visual clutter as well as a tool to measure it. Haven't read the whole paper yet, but

Link: MIT's 'clutter detector' could cut confusion - MIT News Office [via Lifehacker].

2007.08.22 in UI | Permalink | Comments (0) | TrackBack (0)

SW Dev: Back to the Mac

For the last decade, my software development has been a UNIXy thing, filled with xemacs, gcc, xxdiff, and gdb. In my new role, I'm becoming MacOS-centric again and discovering amazing new tools with all the wonderful Macish je ne sais quoi as well as all the bits I miss from my former environment.

For me, the job of software development is all about four things:

  1. Design
  2. Code
  3. Test & Debug
  4. Release

Or, to break them down from a tools perspective:

  1. Scribble (& Erase & Scribble Again): whiteboards and notepads
  2. Type (poorly ;p): text editor
  3. Execute, Tweak, Repeat: debugger, diff/merge tool
  4. Copy (with a flourish): deployment tools

Whiteboards and notepads are universal and ubiquitous (though as a member of the cafe mobile workforce, I'm still in search of a good whiteboard analog). Debugger choice is mostly guided by the language you're using. Deployment tools are largely a function of the platform upon which your tools run. That leaves text editor and diff/merge tool as the highly personal choices which shape your development experience.

Text editor is obvious; every experienced coder knows with certainty exactly which is the best text editor that should be used by everyone has a (usually strong) preference. For me, it was XEmacs with a carefully crafted set of customizations painstakingly preserved from one job to the next — familiarity bred, in this case, great speed. Luckily, the Rails crowd made it clear from the start that the only choice was TextMate; this was validated by a few weeks familiarization. Awesome tool. Almost as good as XEmacs. =]

Diff/merge tools were less obvious. It was only this week I found myself in need of one and was delighted to see my old friend xxdiff available as a MacOS app; that is, until I discovered that it consumes CPU cycles while idle and has a focus battle with Virtue Desktop (that's likely Virtue's fault; I wish it weren't moribund, but Leopard's Spaces killed it without even being delivered).

A bit of poking around, though, and I discovered DiffMerge. It lacks a bunch of the command line flags I'm used to, but it makes up for it (mostly) with excellent polish and good customization twiddles. I'm falling in like with it.

But I'll throw it over for xxdiff in a heartbeat once the CPU issue is fixed and Leopard's out. =]

Link: TextMate — The Missing Editor for Mac OS X.

Link: Free Diff Tool: SourceGear DiffMerge.

2007.06.15 in Hacking, UI | Permalink | Comments (1) | TrackBack (0)

Running the Numbers

Chris Jordan is a photographer with an eye for visualizing real-world datasets. I suspect that he's a fan of Edward Tufte (and likely vice versa).

Link: Running the Numbers.

2007.04.20 in UI | Permalink | Comments (0) | TrackBack (0)

Olde Skool Web Syte

I can't stop looking at this site.

Genius.

Link: No one belongs here more than you. Stories by Miranda July. [via]

2007.04.12 in UI | Permalink | Comments (0) | TrackBack (0)

Panasonic's Vision of the Future: All Pixels, All The Time

From Akihabara News, deck the walls with screens of interaction. Two side-by-side 110" touch screens with user-manipulable windows of video and audio from any/many sources. This makes me shudder. I can't believe it'd ever be interesting to monopolize so much space to artificially deal with the world -- much less to facilitate the emerging ADD trend.

But then, I prefer my 1024x768 12" PowerBook to a WXVGA monster display.

2006.03.29 in Environment, Technology, UI | Permalink | Comments (0) | TrackBack (0)

Ajaxy Homepages

A nifty find via TechCrunch: NetVibes and ProtoPage, your personalizable ajaxy homepage. Toss in nearly any kind of content and neatly arrange or slop it around (respectively). Look for this on Google's personalized pages sometime later this evening or early tomorrow. ;]

2006.03.27 in UI, Web 2.0 | Permalink | Comments (0) | TrackBack (0)

My Photo

About

 Subscribe in a reader

AddThis Social Bookmark Button

Categories

  • Administrivia
  • Blogs
  • Books
  • Business
  • Computing
  • Data Portability
  • Economics
  • Electronics
  • Engineering
  • Environment
  • Facebook
  • Food and Drink
  • Fun!
  • Graphing.Social
  • Hacking
  • History
  • Identity
  • Leadership
  • Linux
  • MacOS X
  • Management
  • Metadata
  • Open Source
  • Organization
  • Parenting
  • People
  • Photography
  • Privacy
  • PublicSquare
  • RailsRumble
  • Reputation
  • Ruby/Rails
  • RubyConf 2007
  • Science
  • Social Networks
  • TagEverything
  • Technology
  • Testing
  • Thinking
  • Trust
  • UI
  • Web 2.0
  • Weblogs
  • Writing

Archives

  • August 2010
  • October 2009
  • September 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • January 2009
  • September 2008
  • August 2008

Words on a Page

  • Carol Tavris: Mistakes Were Made (But Not by Me): Why We Justify Foolish Beliefs, Bad Decisions, and Hurtful Acts

    Carol Tavris: Mistakes Were Made (But Not by Me): Why We Justify Foolish Beliefs, Bad Decisions, and Hurtful Acts

  • Steven Gary Blank: The Four Steps to the Epiphany

    Steven Gary Blank: The Four Steps to the Epiphany

  • Chip Heath: Made to Stick: Why Some Ideas Survive and Others Die

    Chip Heath: Made to Stick: Why Some Ideas Survive and Others Die

  • Patrick M. Lencioni: Silos, Politics and Turf Wars : A Leadership Fable About Destroying the Barriers That Turn Colleagues Into Competitors

    Patrick M. Lencioni: Silos, Politics and Turf Wars : A Leadership Fable About Destroying the Barriers That Turn Colleagues Into Competitors

  • Marc Ian Barasch: Field Notes on the Compassionate Life : A Search for the Soul of Kindness

    Marc Ian Barasch: Field Notes on the Compassionate Life : A Search for the Soul of Kindness

Pages

  • If
  • The Tagline Graveyard