TextWidget: a text-based UI control

After reading Bret Victor's excellent essay on information design in software, entitled Magic Ink, I started implementing a re-usable javascript version of the text control which he advocates.
Here is the TextWidget demo.


The screenshots below illustrate his original control, which consists mainly of text in natural language. A simple interaction model to manipulate the information: some words can be clicked and doing so changes the sentence or edit some values.

This control represents its state in a readable sentence at all times. This is much more efficient, compact and brain-friendly than common configuration dialogs (think of the recurring meeting dialog in Outlook). The sentence can be tuned incrementally by interacting with any portion which is incorrect.

The result of my project is a javascript library, TextWidget, which let's you easily incorporate this kind of graphical element into your web application.
Check out the TextWidget demo and read on for more details.

Continue reading "TextWidget: a text-based UI control"
Permalink | Comments (0) | May 04, 2008

Google - Single Page Results

Endless architectural spiral

This script lets you scroll down the search results without having to turn pages, in using infinite scrolling.

Instructions:

  1. Install the "Google - Single Page Results" script
    (requires Greasemonkey for Firefox)
  2. Search for something on Google
  3. Scroll down the page
  4. Continue scrolling down the page
  5. Repeat step 4 as much as you need ;-)


This is a variation on the "Flickr - Single Page Results" I wrote yesterday.

Permalink | Comments (4) | April 17, 2008

Flickr - Single Page Results

  1. Install the "Flickr - Single Page Results" script (requires Greasemonkey for Firefox)
  2. Search for something on Flickr
  3. Scroll down the page
  4. Continue scrolling down the page
  5. Repeat step 4 as much as you need ;-)
Beware, this is rather hypnotic and makes Flickr really addictive.

Watch out! Addictive stuff!

Recently, I have been fishing for images from Flickr to include in my blog posts. And it is clear that turning pages gets in the way.

Luckily, there is an "endless scrolling" AJAX technique. Live.com tried it for its image results, instead of chunking them. It was discussed on the Humanized blog and implemented in the Humanized Blog Reader.

This script here implements the same feature for the Flickr search results.

Note that this works best if you scroll down the page using the keyboard, rather than the scrollbar.
Also, I did not implement any kind of landmark or bookmarkability support (using the url hash).

The script is based off my previous "Single Page View" scripts (IGN, ArsTechnica, ACMQueue), but is a bit simpler and should be easier to adapt to other sites.

Permalink | Comments (0) | April 16, 2008

Summary: Parallel FX library

Bunch of electronic components in parallel

The Parallel Extensions team has a technical talk on Channel 9, "Parallel Extensions: Inside the Task Parallel Library".

Here are my notes, if you don't have time to watch the hour long video.

You can find more details about the Parallel FX library and other work by Microsoft in that area from the Parallel Computing Developer Center.
It has download links for the CTP and reference documentation, as well as pointers to the team's blogs.

Continue reading "Summary: Parallel FX library"
Permalink | Comments (0) | April 12, 2008

Trends in computing

Ants

I recently read Pat Helland's slides on trends in computing (also available in video).
It gives some long-term perspective (10 years) on deep changes in computing, and how they will impact how we compute.
Distributed computing will become increasingly common, parallel computing will permeate all applications, engineering trade-offs will open up to non-atomic guarantees and impact business models.


Here are some key take-aways:

Uni-processor performance is leveling off (because of Instruction-Level Parallelism, Power and Memory walls). Adding many cores is the only way to significantly increase performance.
Each core will be smaller and cooler, and the price for aggregate performance will continue to go down.
Similarly, data centers will also shrink, become cheaper, and more distributed commodities.

Storage is also changing. Disk capacity has increased a lot, but the I/O access has not. Soon, disks will be treated as tapes (sequential access), or used as cold storage.
On the other hand, flash storage offers scalable bandwidth (the more flash chips you add, the more bandwidth you get to your data) and the prices per gigabyte are falling. On top of that, flash memory uses very little power.


The trends that Pat illustrates converge to one point, a deep shift towards parallelism.
Consequently, data will need to be local and replicated in more places (cache on each core, RAM, various devices and cloud storage).
This leads to increased concurrency and synchronization problems.

He suggests that a partial solution will be to accept relaxed consistency constraints, such as allowing local decisions (with the computer equivalent of an apology when there is a screw-up) and eventual consistency, instead of requiring atomic transactions.

Continue reading "Trends in computing"
Permalink | Comments (3) | March 31, 2008