Wednesday, May 29, 2013

Don't release your coding exercises

Things have been distinctly complex for the LA and I of late. We're rearranging the house, because we have a child on the way (and a swap with the LA's parents arranged such that we end up with a larger bed; I shall document the inevitable tribulations thereof once it's happened), the LA's grandfather recently passed away, and to while away the inevitable downtime on that trip, we bought a nook e-reader for me. I still keep calling it an e-book, because it's an electronic thing that I use like a book, but that's beside the point. The point is that it has one of those fancy electronic ink displays, which means that keeping a static image on the screen uses the same power as blanking it: none whatsoever. This leads to it having screensavers; I'd rather not have the portraits of authors one on there, and the built-in "nature" one rather wore on me after a while, between limited images and some less than wonderful conversions from colour to B&W photos. It's not as simple as desaturating it until it's black and white!

And so I availed myself of Flickr's Commons feature, which is a huge collection of copyright-unencumbered images. They're too old for copyright, they're US Government produced, they've been released into the public domain... whatever the reason, they're suitable for use without infringement concerns. Many of them are low resolution, but the spec size for screensaver images is 600x800 pixels, which is definitely low resolution in this day and age. And so, I searched for "ship" and found a veritable cornucopia of monochrome images.

Unfortunately, Flickr has recently given itself a short-notice redesign, about which I'm distinctly unhappy. The old interface was clean, uncluttered, and fast. The new interface is busy, and relies so heavily on JavaScript that it requires a high-speed connection and a ridiculously powerful computer to run, and that very slowly. The heavy scripting also makes it fragile, and prone to crashing browsers. It also allows them to use one of the great annoyances of the scripting age of the Internet: so-called infinite scrolling.

Back in the days before scripting took over, content was divided into pages. Often, these pages would be larger than would fit on one screen, and so one would scroll. Vertically, for preference; horizontal scrolling is regarded as evil by most denizens of the net. When one reached the end of a page, on to the next page, and so on. It wasn't really possible to keep adding on a little bit more to the end of the page. Now, we see two extremes when it comes to content delivery. The first is prevalent among newspaper websites: divide the content into tiny chunks, and have each paragraph on its own page, to make the user ignore as many ads as possible. The second is common on social networking sites: just keep adding a little bit more to the bottom of the page, every time the user reaches it. This is "infinite scrolling", and it's a truly hideous misfeature.

Why is it a misfeature? Several reasons. Firstly, it demands heavy scripting, and places lots of demand on both the client and the server; the client for rendering, the server for fetching data. This makes it slow and clunky to use. Second, it breaks user expectations; by now, we're used to pages having a bottom. Third, it can render important aspects of the site unreachable; any website which uses a footer (such as Twitter) will be broken by infinite scroll, as the footer runs away from the user. Fourth, it's fragile and breaks the ability to share links; a browser crash in a paginated interface will, when recovered from, return the user to roughly where he was when the browser crashed. An infinite scroll interface doesn't have this ability. A paginated interface will allow the user to share a link to a given page of search results; an infinite scroll interface won't allow that. It's still possible to share a link to a single result, but there are times when context is necessary or just pleasant to have.

So, while I'm very happy that you've figured out how to make this thing happen, and you can reasonably be proud of yourself for doing so, please stop using it in the wild. It's the wrong tool for presenting search results.