Entries from November 2007 ↓

Scroll, Scroll, Scroll your Bug, Gently Upstream

And now, since I can’t sleep, and I’m sick of staring at the ceiling in the dark, some random drivel about scrolling.

1. I use a Wacom tablet, which comes with it’s own mouse. About a year ago, I upgraded from Ubuntu Dapper 6.04 to Edgy 6.10, and for some reason, my scroll wheel inverted, so that up was down and down was up. I filed a bug, forgot about it, and like a reasonable man, adapted to the world. It was surprisingly easy, sort of like that story about the psych experiment where you give people prism glasses that turn everything upside-down, and after a while, people simply get used to it and end up being just as co-ordinated… until they take them off. Anyway, getting back to my Wacom bug, progress was finally made, when Emanuel Greisen found this in the Linux-Wacom Changelog

2006-03-06 * Swapped USB tablet wheel directions

So, there’s the code change. Now, I presume that it would be trivial to swap the wheel directions back, but what would that ‘break’ that caused the original change in the first place? I’m struggling to think of a good reason why the change was made.

2. But really, should pushing the mouse wheel up scroll the page up? My mum finds this ‘unintuitive’, since her mental model of the scroll wheel is as if the page is printed on a rolling pin, and rolling the pin ‘up’ would show more text from the bottom of the page. On a similar note, with an image viewer, or say a map, should a scroll-wheel-up event zoom in or zoom out? Is ‘up’ pushing the screen (or, if you prefer, image) away from you (zoom out?), or moving you in towards the screen (zoom in?) I thought the ‘intuitive’ answer is obvious, but asking people around me showed that there’s actually a difference of opinion. But, hey, some people see the girl spinning clockwise, some see her spinning anti-clockwise.

3. I hate it when I’m scrolling down a web page, happily scrolling away, and then an embedded Flash video wanders under my cursor and steals all the scroll events. Sure, sometimes text boxes (e.g. web forms) steal the scroll-wheel too, but they give it back when they’re all outta scroll. Actually, what I would like is a GTK theme that highlights which scrollbar will respond to a scroll-wheel event, just like I have a metacity theme that tells me which window will respond to a keypress event (i.e. which window has focus). I went and made a mockup of what this would look like, but I think this would be hard to implement, because the scroll-wheel recipient isn’t determined by something as simple as the “what window is the mouse cursor over” test that triggers button hover styles. Then again, in the mockup below, presuming that the cursor is over the text box, scrolling up would scroll the page (since the text box can’t scroll up any further), but scrolling down would scroll the text box, so the answer to “which scrollbar is active?” is ambiguous. I don’t suppose there’s a budding theme-engine writer out there who has a better idea?


Look, Mum. Fans!

Some stranger (and former Ion-head) called Sean has nice words to say about Superswitcher, saving him the effort of writing his own “go to window by name” program. Superswitcher wasn’t actually “designed as the ideal test case for libwnck”, but it certainly does give the Window Navigator Construction Kit a workout.

Numbers Games

There is an Australian Federal Election due in a few weeks, and for those of you unfamiliar with political system of Teh Best Country In Teh World Ever, the skinny is that the focus is on the House of Representatives, which has one hundred and fifty something electorates, each electing one member. The party who wins majority of those electorates generally claims government, regardless of who wins the overall “popular vote”. There is no separate presidential election, even though practically speaking, the modern game is dominated by “presidential” leaders.

Now, here’s a little game-theory contrivance that shows that raw number-of-seats aren’t the only story – small numerical changes can have big practical consequences, and big numerical changes can have small practical consequences. I forget where I originally read it (searching the web for [25 26] is most unhelpful), but here it goes.

Suppose you have a parliament of 100 seats (or call them 100 senators, if that makes you feel better) and that you need 51 to pass legislation. There are four political parties (called A, B, C, and D), and party discipline is very tight – all members vote as a block with their party colleagues. Naturally, your party is the A team.

If each party controls 25 seats, then obviously each party is equally powerful. Now suppose there is an election and only three seats change hands, so that the A/B/C/D split is now 23/26/26/26.

A relatively small change, in terms of numbers, but you (and the rest of the A team) are now useless. You can’t make up the 51 with one other party, any other two parties could make the 51 without you, and if you joined a coalition of three (or more) parties, they could just ditch you (and then wouldn’t have to make any concessions to keep you on-side) and keep their 51-ness. Your negotiation power is zero.

Now suppose, more realistically, that there are two dominant political parties, say B and C, and you (A) and D are minor parties, say a split of 3/48/48/1. This is a drastic fall in your number of seats, but in terms of on-paper (i.e. modulo things like ideology, mandates, and reality in general) negotiating power, you are now as powerful as B or C, and more powerful as D (since D is as irrelevant as A was in the 23/26/26/26 example). Out of A, B, and C, a coalition of any two can form the 51, and hence all three are equally powerful (assuming iron-clad party discipline).

Of course, this is all contrived, e.g. I don’t see the Liberals teaming up with the Greens (a minor party) to trump Labor in the forthcoming parliament, but it’s an interesting example (IMHO) anyway.

As an aside, for those of you Aussies not living in marginal electorates and feeling neglected from the barrels of pork raining down in those areas, I’ve previously blogged a wacky idea for dismantling the notion of electorates altogether, but in light of this example, the lack of a party to enforce party discipline would instead accentuate this sort of volatile coalition-forming and post-electoral opportunistic negotiation. Hmm…

What does this blog post mean? I have no idea. Then again, I woke up this morning from dreaming all my teeth crumbled and fell out, and I have no idea what that means either. Except that I should probably floss more often. Hey, while I’m there, I should probably backup my disks too…