Tom Insam

Blotter

PyObjC is very, very cool. Even not knowing python, I prefer using it over CamelBones, if only because the out-of-box experience is nicer. But a very compelling reason is that making standalone apps with it is soooo easy. Thus, I present Blotter 0.5, an experimental notepad application. It stores notes in a SQLite back-end DB, and gives you revision history, etc. It’s gonna be buggy, I wouldn’t use it for storing nuclear missile launch codes just yet, but it’s already dogfood, after very little development effort.

Oh, and scuse the nasty icon…

ASCII is not enough

I need a rule. All testing MUST BE DONE WITH NON-ASCII CHARACTERS.

I’m just fed up with things breaking the moment someone foreign touches them.

You don’t declare variables in python, you just assign to them. This isn’t as bad as it looks, because you can’t assign as a side-effect, so you can fake declaration by initialising the vars you want. Referencing a variable that hasn’t been initialised is a run time error. This leads to the following annoyance:

for var in (1,2,3):
    pass # don't do anything

print var # prints '3'

which makes sense, and:

for var in (): empty list!
    pass # this won't happen

print var # throws run-time error

GARHHAAH

I’ve played with python some more, and there are more things I don’t like about it.

For objects, attributes and methods are called with the exact same syntax, the ‘.’ character. So for an object ‘foo’, foo.bar is the attribute (member variable) ‘bar’ of foo, and foo.baz() is a function call on the method ‘baz’ of the foo object. But if a foo object has an attribute ‘bar’ and a method ‘bar’, foo.bar gets the attribute, and foo.bar() explodes, because an attribute isn’t a function. I don’t like that you can hide functions behind attributes.

More object stuff - there’s no abstract ‘call my superclass method’ calling convention. You have to either explicitly call a class method on your superclass (calling it by name, so changing your superclass would be Pain) and passing ‘self’ as the first parameter, or you use the magic ‘super’ method, which requires you to pass your class explicitly, also meaning Pain if you rename things. Hello? self.super? Sigh.

Incidentally, there are plenty of things about python I’m really liking - it’s not all pain. But people don’t blog about things that they like, they blog about things that annoy them. Human nature - deal with it.

Things that have pleased or annoyed me over the last few days. See my last entry for context.

Bad thing: I can’t use Screen Capture. Or whatever the Apple Command-Shift-[34] app is called. It writes files to the desktop by default, and I can’t seem to change this. With a non-writable desktop, I can’t take screen captures, and I’m reluctant to sacrifice the non-writable aspect. I could just let things write to it, and move them quick, but making the the thing ‘no access’ acts as a fail-safe. Screen captures aren’t worth losing that.

Good thing: It’s really, really pretty. I can also use quite cluttered-looking wallpapers that I wouldn’t otherwise be able to use, and they work well. I’ve found that the Mac OS ‘cycle through the pictures in this folder’ background works quite well, too. I never liked it before, because my icons look good in different areas of the screen depending on the wallpaper and where it’s ‘busy’, but with no icons, I can use anything. I feel so arty.

That’s it. On the whole, I’m very comfortable with a blank desktop. It’s changed my working style almost not at all.

Other notes

blech reminded me that Risc OS had a completely blank desktop, and treated it merely as a background and not somewhere you could put files. The linux equivalent, the ROX Desktop, almost does the same thing, you can place aliases to things on the desktop, which spoils it, but then I recall add-ons to Risc OS that let you do that, so I suppose it’s forgivable. Linux weenies are notoriously hard to break of their habits, which I think is a shame. Embrace change!

Comments on my previous entry mentioned that recent versions of Windows are becoming more sparse as it comes to desktops. ‘My Computer’ has vanished, as has ‘Network Neighbourhood’, in XP, and apparently 2003 Server takes things further. Longhorn… well, hah, PDC this weekend, we’ll see about Longhorn.

My problem with Windows in this respect is that just about every program under the sun feels that it needs its icon on your Start Menu and your Desktop. The particularly arrogant ones want a place on your Quick Launch Thingy as well. All time worst app award goes to Winzip, which by default puts itself on the top of your start menu, thus ranking itself with ‘Open Office Document’ in importance. Now, I don’t know about you, but I don’t think I’ve launched winzip as an app once in the last 5 years. I use the context menu, where it belongs. Why do I need it 2 clicks away at all times?

But I’m getting diverted from my point.

Oooh, windows 3 had a good desktop. It was totally un-special. Windows could minimise to it, but this works, because they were still windows, and therefore allowed to be on the desktop. They were just really small windows. Nothing else could touch the desktop. Windows 95 was weird for ages, all these spaces were things you could put files in..

Gnome 2 for a while had a nice option where you could use ~ as a desktop, flying in the face of all those osses that has decided that the desktop was a ‘special’ folder, but that treated it like it was your starting point for everything. I really liked ~ as a desktop, it encouraged you to keep things clean, and your desktop then really was the base of your GUI experience, etc, etc, yadda yadda. Alas, this option died, although I think it’s still buried in what passes for a registry in Gnome. Pity. Linux users again, I guess.

Enough. I’ll stop now. Comments - any other osses / windowing systems with nice desktops?

Update (4 years later!) - I’ve been informed of a hidden Finder option, this works as of 10.5.3:

defaults write com.apple.finder CreateDesktop 0

Prevents the Finder from managing the desktop window. Exactly what I oringinaly wanted - this means there’s still a ~/Desktop, and screenshots go there, but I don’t have any icons on my background. Lovely.

toybox

Look, ma, a web browser.

Honestly, I don’t know why I bother blogging. All I say is ‘look, I wrote this shiny toy’. Bah.