GFX::Monk Home

Natty UI Fumbles

While my main computer is out of action, I’ve been trying beta 2 of ubuntu 11.04 (Natty Narwhal). The biggest change in this version is the introduction of unity, but there are also a number of other UI changes. Here are some of the bad bits:

  • The new scrollbars break a few interactions that I am rather fond of:
    • Sometimes the grabber is inside the window, sometimes it’s outside.
    • If you scroll up or down by pressing the buttons a few times, and then pause to read, and then try to click the arrow again, it may have disappeared - leading to awfully surprising results.
    • You can’t use the neat trick of middle-clicking anywhere in the scrollbar pane to immediately bring the scrubber there (instead you have to find its current location, then drag it to where you want it to be).
    • If the orange scrubber is taller than the pair of arrows and you want to hit one of the arrows, it remains a moving target until you actually leave the window’s boundary.
    • After scrolling with the mouse wheel, the orange scrubber turns practically invisible, making it impossible to tell how much scrolling remains.
  • The new terminal theme makes it really hard to tell which tab is active.
  • Whenever I press alt (for example, when starting alt-tab or another keyboard shortcut) I get really distracted by the global menu flashing in and out of my peripheral vision.
  • Alt-tab raises windows but does not focus them (bug).
  • Focus-follows-mouse (my preferred setting) is incompatible with the new global menu. You can remove the global menu, but that didn’t work for me. For now, I’m having to get used to pressing F10. There’s a proposal to fix the global menu behaviour when using focus-follows-mouse, but nobody seems interested in implementing it.
  • There’s no way to make “fullscreen” mean “everything but the dock”, as it does by default for other non-auto-hide docks. I do like the combination of titlebar & top-bar though.

Given my progress on a tiling window manager for gnome-shell (more on that when it’s working, I hope), I may well end up switching to gnome-shell soon. I’ll probably try out fedora 15 in the process, I wonder how much of ubuntu I’ll miss.

Arrows and Haskell

For a little while I’ve been wondering what exactly arrows were and what they’re used for - ever since I came across their syntax in my window manager’s somewhat-indecipherable configuration file (which I don’t claim to understand).

So anyway, this article is probably the best thing I’ve found on the subject. I’m still not entirely sure what I’d use them for (the parser example that everyone seems to give is a little abstract for my likes), but this article was the easiest introduction to arrows that I’ve found, and now I think I finally get what they are, at least…

What If This Were Apple?

Jim Dalrymple, on Google’s delayed release of android honeycomb source code:

Can you imagine if it were Apple delaying a software release. What would the press say if Apple admitted it took shortcuts with its OS to keep up with Google and now they couldn’t release it? The press would have a field day with that story.

Yeah.. Except that Google has already made as much of a release as Apple ever does - closed binary source code. I don’t like that they’re delaying the open source code release, but I’d like it even less if they never did so (as is Apple’s way).

It would be stupid of them from a product point of view to delay the release of actual shipping products while they re-work the software do things it doesn’t yet need to do (work on phones). At the same time, I really would not want honeycomb ported to phones by over-eager phone manufacturers. I had to get rid of HTC Sense because it was too buggy, and that’s considered to be one of the best manufacturer mods. I hate to think of the bad name they’d give honeycomb…

(And while we’re playing the comparison game, remember how Apple didn’t unify the iPhone and iPad OSes until a number of months after the iPad release? Seems like a familiar strategy…)

Google Reader List Opacity for Chrome

Well, I finally got around to porting my firefox extension to chrome: Feed list opacity for Google Reader. It wasn’t very hard. I don’t know how many people use it, but I always find google reader hard to digest without it.

Scala Investigation: First-Class Functions

I’ve just spent some time learning about the difference between scala’s functions and methods. It’s a surprisingly complicated topic, so I’ll defer to the smart folks on stack overflow for the explanation itself:

Difference between method and function in Scala

Here are some interesting points / examples I took from that topic:

Scala trick: convert java.lang.Object to Option[A]

So let’s say you have a java method:

public Object getSomething(String key) { ... }

This returns an Object, or null. Ideally it would have a generic type so that it at least returned the type you expect (like String), rather than Object, but that’s java for you. What’s a scala chap to do with such an ugly method?

val obj = getSomething("key")
val maybeObj = obj match {
	case s:String => Some(s)
	case _ => None
}
val actualObj = maybeObj.getOrElse("")

Not very nice, is it? We should abstract this (unfortunately) common pattern!