Present Perfect

2009-12-2411:25 am

After being confused for the umpteenth time that, when I clicked on some minimized application that wasn’t on my current workspace, it would just start blinking in bold, without actually showing the window I expected to see, I twiddled the task applet settings a little.

‘Restore to original workspace’ seems to work fine. Any GNOMErs actually using ‘Restore to current workspace’ correctly ? I don’t remember when this started happening, I seem to recall it happening on F9 just as well. I’m currently on F11 with 2.26

2009-12-1311:49 am

On the one hand clearly I sympathize and want to keep MySQL free. I am not entirely sure how that’s not already possible given that there’s always the option of forking, but I’ll leave that aside.

However, I don’t really get what Oracle is doing wrong here. In my opinion, Monty should have made sure when MySQL was sold to Sun to get all the things he’s now asking Oracle to commit to in writing. Sure, Sun didn’t have a competing product. But Sun is a company, and to not even consider that the company you’re selling to can be taken over by any other company, or can sell off your product to some other company, seems pretty dumb to me. Who were the other rumoured potential buyers of Sun ? IBM was one of them, no ? They have a database, no ? That database gets hurt by MySQL in the market as well, no ?

So, since I’m just an armchair commentator, I don’t really know what to do here. What do you guys think ? Surely I’m missing something obvious about what Oracle is doing.

2009-12-910:07 am

Amazing how good 1901 sounds stripped down on acoustics. The big surprise here for me was ‘One Time Too Many’ – it’s a great song, but on this recording just simply the intro they were playing here gripped me immediately. And then, as they get off the bus, but keep playing and singing, and you actually stop hearing the keyboard (because it’s the last in line to get off the bus), then hear it come back again at the right moment… Simply awesome.

2009-12-88:17 pm

Now that I want to write a Maemo UI for my GTD application, I need to address the fact that python-couchdb is written using a blocking model.

On Launchpad, I found Paisley a while ago – a CouchDB client library using Twisted. Seemed functional enough, but I was using the ‘schema’ stuff from python-couchdb which allows you to define a class with typed properties and map CouchDB documents onto them, and Paisley didn’t seem to have any of that. In fact, Paisley seemed to have about 10 commits to it, all done over a year ago.

I had two possible approaches. One was to just use python-couchdb together with threads. It’s a typical solution to this problem, and one that is an evolutionary dead-end as far as I’m concerned. However, it would have allowed me to focus on the UI today instead.

The other approach was to see how to map python-couchdb concepts onto paisley.

(I actually considered a third approach – using Rodrigo’s couchdb-glib library – except that it seems to also be blocking at this point, so I’d have to fix that, and make python bindings or figure out introspection stuff. So I dropped that idea.)

So, after some IRC discussion between me and cmlenz (author of python-couchdb) and dreid (author of paisley), and both of them thinking that it makes sense to merge some of the schema stuff into Paisley, I started to do just that in this branch.

After some plumbing, I was able to re-use my Thing class that was defined against python-couchdb’s schema.Document with Paisley. Success!

Three snippets of IRC conversation (that I hope the authors are fine with me sharing):

from private chat:

cmlenz: and if you port, please rename s/schema/mapping or something like that :)
cmlenz: schema was a horrible name choice for what it does
homeasvs: ok, will keep that in mind

from #twisted:

dreid: homeasvs: Thank you for volunteering.
homeasvs: dreid, no problem
homeasvs: dreid, I was discussing with cmlenz who did python-couchdb and he suggested I take some of his document modeling stuff and graft it onto paisley
dreid: homeasvs: No, I mean volunteering to maintain paisley.
homeasvs: dreid, heh :)
homeasvs: dreid, I might be persuaded if this works out
dreid: I’m afraid you don’t understand how this works.
dreid: You volunteered.
dreid: If you don’t want to do it, you have to fight a bear.
dreid: ;)
homeasvs: I thought the last touched rule only applied to the master branch :)
dreid: That’s not what this is.

from #couchdb:

dreid: homeasvs < - FYI this guy has volunteered to maintain paisley.

These are the days I like how open source works. I am ending the day with two more projects than I started it with.

That reminds me, I should apply dreid’s approach to one of my projects and figure out how to give someone commit access…

2:30 pm

Sweet. After a bunch of hacking, packaging, tweaking, and cheating, I was able to do the following:

add stuff to my shopping list on my desktop, with the command-line client

without doing anything manual to sync my phone, take it with me to the store

at the store, do ‘gtd search @shop’ (from a terminal, currently) to get the list of things to shop for, including my recent additions

come back with my stuff from the store, and mark those items as done on my desktop

do the same search again on my phone, and see those two items gone

Now of course, this needs some improvement, like a dedicated app to view my things on the phone, plus a way to mark them as done. Also, my code needs optimizing, because out of 2500 things in the couchdb database it takes a good 10 seconds to list these ten. But it’s such an awesome glimpse of my future.

Now one has to wonder if the balance of doing all of this technology stuff to implement something as simple as an indestructible shopping list is worth it in the end… But as technologists I’m sure we all know that feeling, and delude ourselves into thinking this is sensible.