A notch above a monkey

Frank Hurley's broken plates

We visited a wonderful exhibition a few days ago about two failed Antarctica expeditions led by Scott and Shackleton . I learned a lot, but what I keep thinking of are Frank Hurley’s glass plates.

Frank Hurley was the official photographer on Shackleton’s Trans-Antarctic expedition (1914-1917). Shackleton and his crew encountered ice farther to the north then they expected and eventually got stuck in it. It is impossible to imagine how they felt when their efforts to free their ship Endurance proved unfruitful and had to spent arctic winter on it. Ship had to be abandoned by the end of October 1915 before surrounding ice crushed it. Crew then spent next few months on floating ice. They decided to seek safety on land which meant hauling what they needed by themselves and leaving everything else behind. Which brings us to Hurley’s plates.

These were early days of photography and equipment was larger than it is now, but even today’s gear for taking large format photographs is pretty big and heavy as are prints made with it. Hurley had two cameras, a large format one capturing images on glass plates and a smaller portable Kodak using film [1] . He made more than 500 images on plates which were too heavy to carry them all, but he managed to persuade Shackleton to pick and keep 120 or 150, depending on source [2] .

Then he broke the rest.

I couldn’t find an explanation for his action in one of the most inhospitable places on earth where environment should soon enough destroy those plates without his help, but I think I know why he did it.

Expeditions were expensive and selling publishing rights for images made during trip was an important source of funding. Breaking plates ensured them that their images would be the only ones that could be printed. Breaking them was in essence an enforcement of copyright.

There is no moral to this story. It was doubtless a difficult decision in even more difficult situation. But it is hard to look at remaining images and not feel a real sense of loss. Such a waste!

If you are in London these days, then go and see this exhibition which you can find at Queen’s gallery just next to Buckingham’s palace until April 14th. I bet you won’t regret it.

Update: Exhibition closed and my theory is wrong. As visitor pointed out (with Frank’s own words) plates were broken to remove temptation to return for them.

  1. Kodak, one of pioneers of photography, recently abandoned making cameras to solely focus on their soon to be dead image printing business. ↩
  2. Hurley continued documenting their ordeal with Kodak. Resulting images are more grainy and less sharp, but equally fascinating document of what they all went through. ↩

Save bandwidth switch

Michal Migurski recently posted an article about download sizes of popular websites. I couldn’t replicate his results [1] , but it is obvious that gist of Michal’s article is correct, websites have indeed ballooned significantly in last few years.

This blog’s homepage has a footprint of around 250KB-270KB [2] . About 90% of its size are fonts and jQuery which is a big penalty for making it look and behave a bit nicer. So should I remove those parts?

Well, for most visitors to this website that difference doesn’t matter. Pages for them are neither slow nor expensive to load. Unless of course they are doing it over your average hotel Wi-Fi or a slow mobile network where speed around 56Kb/s is not unheard of. On such connection it would take about half a minute to load this blog. It can also cost more than 10 euro cents to load it when roaming in Europe.

It would be great if I could offer a choice of serving bigger and nicer or smaller and faster version depending on visitors needs.

Measuring speed is not easy, but certainly doable as Gmail has demonstrated. You could start a timer immediately in page header, measure how much time it takes to load a smaller version of a website and if that happened quickly enough upgrade it to full bling. Android browser also added support for navigator.connection Javascript property which, where it exists, probably has more details than you would need.

However there is no way to measure price of a visit. Even if I could, how would I decide what is too expensive for an anonymous reader and should I make such decisions at all? I think not.

Gmail’s approach is really just a band-aid over what should be a visitor’s decision. I use same laptop and browser at home and while I travel, experiencing all combinations of connection speed and pricing. I never know how much it will cost me to visit a page, but I always learn quickly if I would prefer something small or full-featured. There is just no way I can communicate that preference.

It would be great if my browser had a switch for this purpose, like Firefox’s “Work Offline” toggle. So if I switched to bandwidth saving mode, then every subsequent request to web server would communicate my preference with a HTTP header field like:

X-Bandwidth: save

In principle you could have multiple levels of bandwidth consumption, but that would likely be an overkill. Common practice suggests that at most two levels would really get used, one aimed at mobile devices and other at desktop.

Header like that might be enough, but even better would be if Javascript environment got another property describing current state of user’s preference (like say navigator.bandwidth ). Coupled with a bandwidth event triggered on change you could really optimize every modern web page, even those with more complicated loading of resources and execution paths.

Right now such functionality doesn’t exist or at least I couldn’t find it (I even searched Mozilla’s bug database for any future plans). I think my proposal is both user and developer friendly and workable. If you can think of a reason why it would be problematic, then I would really like to hear it.

  1. Pages are often personalized for visitor. Developer tools of different browsers also don’t report same sizes. They also report amount of data transferred not the size of that data once unpacked. Almost 2M of Twitter’s Javascript is thus reduced into page of “only” about 1MB of data transferred. And that to display couple of sentences. ↩
  2. Depends on browser used. Variation in sizes is probably due different formats of fonts used by browsers. It also changed once I published this post. ↩

-beta- prefix algorithm for CSS

These have been eventful couple of days for web developers. CSS Working Group chair called on everyone to use all (most?) vendor prefixes and stop making websites for WebKit which is becoming a new (mobile) IE6. Responses have been numerous, including ppk who in his usual obnoxious manner [1] made some good points. Testing on mobile devices is an unsolved problem (who wants or can afford to buy so many almost immediately obsolete gadgets?) and introducing -beta- (maybe also -alpha-) prefix would simplify our lives while keeping most benefits of vendor prefixes.

I like -beta- idea and I think adding -alpha- might be even better. There’s still a problem of resolving syntax conflicts between different implementation which I think has a simple solution that closely mimics what browsers already do:

When parsing CSS browsers should apply the last matching -beta-/-alpha- directive they fully understand.

Browsers already ignore directives they don’t understand and they apply last directive found when there are multiple candidates for a DOM node.

Such behavior would give us less CSS code to write and maintain, have predictable behavior and keep browser experimentation without favoring one. I have troubles finding negative sides of this approach, but do let me know if you can think of one.

  1. I deeply dislike his complaining about simplistic view of others while himself generalizing and name-calling (the lazy and stupid lot of us). Alas it’s not good to read only people you like and agree with. ↩
  2. Almost everything I write on this blog has an intended audience of one: me (no, really!). Why I sometimes write posts like this, which don’t, is a mistery  since their expected and actual effect on anyone is…none.