computers/human-computer interaction


I work at my computer all day long. Between eight and fourteen hours on the average workday, I’m staring at a screen and typing on a keyboard. Until recently, this meant I didn’t get much exercise; I’d aspire to a bike ride on the weekends, but went most weeks with nothing more than a walk or two. This is compounded because I work from home — no trips to the water cooler and copy machine for me. If I wanted to, I could get by with about 100 steps of walking per day, between my bedroom, office, kitchen, and bathroom.

Then I started using a treadmill desk. The idea, originated by Mayo Clinic Researcher James Levine, is straightforward: instead of sitting at your desk, you work at a treadmill that’s equipped with a monitor, keyboard, and phone. Rather than sitting, you walk at a slow pace. Because the human body has evolved to walk long distances, a healthy person can comfortably walk several miles a day. After just a few days, I was consistently walking about 6 or 7 hours a day. It’s been about a month now, and I’ve used the treadmill desk every day I’ve worked from home.

I love it. And what’s really amazing it that I’m not just doing something healthy without taking time away from work. I’m working better because of the steady supply of exercise. My concentration is sharper and my energy level remains steady throughout the day. The exercise has made me a better hacker.

The magnitude of this result surprised me. I’m in decent shape; I wouldn’t mind losing a few pounds, but I eat well and my cholesterol and blood pressure are fine. On the other hand, I’m always looking for ways to be smarter or more energetic. Like many people whose work is intellectual, I suffer from lulls and funks, from afternoons of carb-induced catatonia to full days of hacker’s block. The exercise smooths over these funks. I still have some slow days, of course, but by defaulting to constant exercise, there’s a tremendous countervailing influence to the biochemical tides of mood.

How-to

If you think a treadmill desk might be good for you, it’s not hard to try it out. I started with a standing-desk prototype (pictured at right): tray tables piled with books to bring my laptop screen and an external mouse/keyboard to eye- and hand-level, respectively. A standing desk has most of the exercise benefit of a treadmill, with the caveat that standing still is far more stressful to your joints and muscles than slow walking. You can try this with stuff you already have; if you like the exercise but are limited to only a couple of hours of continuous standing before your knees start to ache, it’s time to take the dive and buy a treadmill.

1. Get a Treadmill

My current treadmill is a HealthRider SoftStrider I got for $100 via Craigslist. When I wear this thing out, I’ll consider buying a new treadmill in the $1000 range, but a cheap used treadmill is a great starting point and craigslist is a good way to find some locally. You can transport a foldable treadmill in the back of a van/wagon, or, as I did, in a car trunk with some bungee cords and careful driving. (They’re really heavy; you’ll need a friend to help you navigate any stairs.) Key features of a desk treadmill are:

  • Electronic. The force required to propel an un-powered treadmill will get in the way of your work. You need a conveyor belt under your feet. Give up on the dream of powering your computer with your footsteps.
  • Slow speeds. You’ll want to control your walking speed in, at most, 0.1mph increments between 0.7 and 1.5mph. You don’t need a treadmill designed for running, but a padded belt will make the walk more comfortable and gentler. If you’re over 180lbs, double-check the treadmill’s capacity. Although you’ll only be walking, the continuous usage could potentially wear down a weaker platform.
    • Update 1/27/2008: I would like to revoke my endorsement of padded belts. Foam doesn’t stay flexible forever and my belt has been gradually turning into dust. Most newer treadmills have a flat belt and cushioning under the deck, which is a better design.
  • Level arms. All treadmills have arms that the occupant is supposed to hold while walking. Your hands, however, will be on the keyboard, which will be on a shelf. The easiest way to build this shelf is to attach it to the treadmill’s arms. And if the arms are angled, you’ll need to compensate for that in the shelf. If they’re level, you can just slap a board across.
    • Update 1/27/2008: Actually, a level tray is not as good as one that’s inclined away from you. Ideally, you want to avoid bending your wrists, and you want to have your elbows open at 100 to 120 degrees. I’m still working on a design that achieves this; my temporary solution is a shim under the near end of my keyboard.
  • Quiet. Old, underpowered, or poorly cared-for treadmills may hum constantly; try to find one that doesn’t make much motor noise. The noise of your footsteps and the belt’s motion on the deck will always be present, and on a nice newer treadmill these should overshadow noise from the motor itself. (Added 1/27/2008.)
  • Console. Mounted on the treadmill will be an electronic console where you can set the speed. Sometimes these consoles include a reading tray and cup holder. You probably won’t want to use these for holding your monitor; vibrations in the treadmill will cause your monitor to shake and make it hard to read. So pick a console that is reasonably out of the way; you’ll need to at least build a shelf over it.

2. Build Some Stuff

Once you’ve got the treadmill, you’ll need to build two shelves: one for the keyboard/mouse, and another for your monitor and other equipment. The easiest way to do the keyboard tray is by attaching it to the treadmill’s handles, if they’re level. For mine, I have a wooden board that is laid across the handles, with segments of 2×4 on the sides in order to raise the shelf’s height. You’ll want to have the keyboard positioned so you can rest your hands on it with your elbows at an angle around 100 degrees. Since your body will be moving, you might also want a trackball instead of a normal mouse; being able to rest part of your hand on the shelf will stabilize your finger movements, and without that stabilization precise mouse movements will be difficult. I attached the keyboard shelf to the treadmill’s handles using industrial-strength velcro. This provides a solid attachment but allows me to lift the tray off of the treadmill so that I can fold the treadmill up, clearing space in my office for the fold-out guest bed.

The monitor shelf is different. You definitely want to avoid resting the monitor on your treadmill in any way, or vibrations from walking will shake your screen. Measure the height you’ll want in order to hold the screen’s center a level 2 feet in front of your eyes while standing on the treadmill. My shelf is at about 60″ from the ground (I’m 6′2″). My shelf has two legs (cut from 2×4s) and is held together with shelf braces; the materials and wood cutting cost around $25 total from Home Depot. A simpler design would be to build the shelf like a three-legged stool, with equal-length legs at the front left, front right, and rear center of the shelf. You might also be able to use a pre-made modular shelf, although it could be hard to find one that can straddle a treadmill.

3. Set Up Your Computer

You probably don’t want to force yourself to use the treadmill whenever you need the computer. A desk is useful if you get tired, or if you need to do actual paperwork — writing steadily is almost impossible on the treadmill. So I maintain my old desk, with its own monitor, keyboard, and mouse. These are connected to the same computer — the treadmill’s peripherals are connected via USB. While on the treadmill, I rotate the desk monitor and use it as a secondary screen — I leave work chat running there so I can see if anyone mentions my name, but drag the window over to the treadmill monitor for any intensive reading.

4. Brag About It

The treadmill desk is a great story for coworkers and friends. If you’ve read this far, then you’re exactly the kind of person I’d love to tell it to. In any social setting, the treadmill gives you an excuse to stand up, extend your arms, and walk around like a zombie while talking about what a geek you are. Lots of people find the idea appealing and will ask interesting questions.

The wikipedia Treadmill Desk page has more information. And, in case you’re wondering — this article was written entirely while walking.

link

Here's a wonderfully insightful article, explaining that positive and negative affect condition the mind to approach challenges in different ways. Consequently, pretty things can be more usable.

link

If it weren't for that god-awful dock, I might have actually considered buying a Macintosh. Unfortunately for Apple (OK, they seem to have done alright anyway) I just couldn't get past the repugnant uselessness of this apparatus. With the cool floating effect, I had to scrub the icons to reveal names and pick the one I wanted. Without the effect, it was just a bunch of big icons I rarely used, with some ambiguous facility for switching between already-running applications.

Apparently, I'm not the only one who feels this way.

link

A google search for "quicksilver clone for windows" turned up the so-far very impressive AppRocket. Give it a try and let me know what you think.

link

Jeremy Zawodny describes a personal tagging system in the style of del.icio.us. It reminds me of Quicksilver, which absolutely knocked my socks off when Stefano demoed it for me at dinner last night.

link

If you've been using a desktop RSS aggregator, you know how great it feels to find an RSS feed for a site you frequent. Suppose there's a certain club you like, and you want to know who's playing there most weekends. You could check the site each week, but it'd be much simpler if your aggregator simply showed you whenever a new event was published.

You could ask them to publish a feed. That would be the ideal solution, but it's not likely to happen. Most people still don't know what a feed is good for. If the publisher can't provide a feed on their own, you can use a tool called a scraper to automatically turn their web pages into an RSS feed. One such scraper is MyRSS, which claims to allow non-programmers to easily scrape any web page. I used MyRSS once, and not only did it have an annoying advertising model, but the feed it produced was terrible. It contained only some of the titles, mistook links on the side of the page for new content, and failed to update when new content arrived. In short, it just didn't work.

It's hard to blame MyRSS for this. People don't format their pages to make them simple for a computer to scrape. People format pages for other people to read. A scraper that works only by automatic means, without guidance from a person, is doomed to fail somewhere.

I'd like to propose an alternative. Instead of hoping to make the software smart enough to figure out any page on its own, let's make software that's good at listening to people. Setting up a scraper for your favorite page should be an interactive process.

First, you enter a URL. The first thing the scraper does is fetch that URL and show it to you. To make things challenging, let's suppose you want to scrape Boston.com's event listing for today, which includes event date and event location in addition to some standard RSS fields.

Second, the scraper shows you the page, but marked clearly to show what fields would be scraped. This gives you an opportunity to look at specific examples and correct the scraper before it begins the long cycle of producing beautiful scraped RSS feeds. It might look like this:

All the fields to be scraped are identified by colored borders. Pink indicates event date, green is title, and blue is the list of categories.

The yellow block at the left of each field indicates that this is a guess by the scraper. To confirm the scraper's guess, you click the yellow block and it turns into a green check-mark, as illustrated on the first date. To remove an incorrect guess, you click the red X at right.

At each correction, the scraper adjusts what it looks for before and after each field. The scraper may also want to let the user correct other values, like the total number of items currently on the page. That way the scraper could make sure it is being flexible enough to notice all the relevant stuff on the page, but not so flexible that it picks up garbage.

The best part about this design, in my not-so-humble opinion, is that it's doable. All you need to do is inject a few <span>s and images into the existing web page. If you're making a scraper anyway, you had to have a parser and some ways of guessing what parts of the web page correspond to fields in the feed.

I hope this motivates someone to build a better scraper. We could use one! And if you want my input/assistance on such a project, let me know.

link

Here's a tip: If the building you are currently in is burning to the ground, go find the person with NADD on your floor. Not only will they know where the fire escape is, they'll probably have some helpful tips about how to avoid smoke inhalation as well likely probabilities regarding the likelihood you'll survive. How is it this Jr. Software Engineer knows all this? Who knows, maybe he read it on a weblog two years ago. Perhaps a close virtual friend of his in New York is a fire fighter. Does it matter? He may save your life or, better yet, keep you well informed with useless facts before you are burnt to a crisp.

link

What is syndication for? This piece, by the author of ActiveRenderer for Radio, asks what it will take for blogs to embrace not only reading and writing, but editing and aggregation:

I would argue that weblogging is not only an author's dream, it is (or will soon become) an editor's dream. Most people associate journalism with writing. I've spent enough time in daily newspapers to know that it's only part of the job. Papers would not exist without people whose job it is to organise the available writing material, decide on sequences, hierarchy of information, association with photo or graphic material, and so on.

How would this work? You'd need an RSS aggregator and publisher, something like Feedster's Feedpaper. But you'd also want the ability to structure this in a web page that others could read. And the kicker is, of course, that you want to allow users to design and share their own internet editions without knowing about RSS or anything technical.


Twisting this to my own ends: Frassle seems like the perfect back end for this. What it needs is a customizable front end: the page builder. I want to see the page builder tab just to the right of the aggregator. You have to be logged in to use it. You give your page a name, and it gets a permalink just like a note. You can choose a title and background/text colors (or perhaps a theme). You can choose 1, 2, or 3 columns. Into each column you can stack a number of building blocks.

Each building block is a page element. It can contain

  • the text of a note or set of notes, optionally with title, categories, and comment links. Select the set based on a mixture of these criteria:

    • a set of specific notes (by GUID/permalink), or
    • the latest N notes in a certain feed, or
    • notes in a certain category, or
    • notes matching a certain search.
  • a list of titles with links and hover text, with selection criteria as above.

Hmm, that seems implementable. In fact, I just sketched out a data model…

link

Computer-Supported Cooperative Work, 8, 4 (1999), pp. 333-352.