|
|
Friday, May 28th, 2004
|
10:00a - A Hundred Musts And A Should Or Two
So three and half hours of establishing project requirements later... There are only a few sorts of meeting. The first sort is where ThoseWhoCommand seek to provide guidance/orders/information (strike out those that do not apply) to ThoseWhoObey. Try to avoid these. The second sort is where people (usually male) who aspire to be ThoseWhoCommand from OrganizationA meet their counterparts from OrganizationB. These can be interesting to the abstracted observer who can see examples of human territorial and pecking-order establishing behaviour in the wild, as the various players "tomcat around" each other. Listen to the stories of battles won and lost, and smell the virtual scent of boundary-marking urine. The third sort is where ThoseWhoDo (a disjoint set, ideally, from either ThoseWhoCommand and ThoseWhoObey) get together to work out how something worth doing is best done. These are good meetings. Yesterday's was one of these. Out of it will pour a veritable waterfall of established Things that the application Must Do, together with a smaller number of Things that it Should Do. There will also be some Things that are NiceToHave. It's inevitable that some of these will fall by the wayside during the long, hard journey of Development to the Mount Doom of Product Release. Mourn for them in advance, for there will be no time later on.
current mood: accomplished (comment on this)
|
10:09a - It Was Coughing Up Blood Last Night
I invested an hour on Wednesday in replacing the oldest hard drive in the server at home with a new 80Gb one. First time I've bought a disk from Amazon; well, actually one of their small army of independent sellers. Better price than DABS or MicroWarehouse, with one-click buy and cheap delivery. What's not to like?
Amazon get so much so right that they're becoming annoying. Like Tesco (for UK readers), they'll end up owning the entire retail marketplace; anything that can conceivably be bought online will be available from Amazon. It'll be cars next, or white goods.
Anyway, back to the subject of drive replacment; if I hadn't bothered to go into the depths of Computer Management and poke about in Disk Management, I wouldn't have seen the little yellow triangles on the C and D drives. Nor would I have noted the several I/O Errors that an investigation into the Event Viewer showed up. What is it about Windows that makes it pop up so many annoying announcements that I don't need (No, leave my Unused Desktop Icons alone!) and hide useful information that I do? Where's my lil' popup balloon saying "One of your disk drives is reporting that it may fail?". Damn Microsoft and their Fisher-Price computing.
Contrariwise, the Linux gateway server emailed me to tell me it was low on logfile space, me having misremembered to add an apache log to logrotate. Nice computer.
(comment on this)
|
10:20a - Damn Fine Reading
Death To The Extremist. Minimal. Funny. Brilliant. Weekly. Click.
(comment on this)
|
2:40p - Decreasing Values Of Addition
...or how added value gets smaller.
I run ActiveState's ActivePython on this 'ere XP laptop. It's quite a nice package, has the documentation in a nice indexed Windows help format, works under cygwin, etc, etc. And here Python 2.3.4 comes out. Now, call me picky, paranoid or just plain pedantic, but I like to keep all the Python installations on the three main machines I work on in sync. That's the XP laptop, the Linux server at work and the Linux gateway/server at home. I've had annoying little issues in the past when using Python 2 under Windows/cygwin to develop locally and then moving to an older Python on Linux. RedHat used 1.5.2 for a lot of their setup scripts and it took me a while to bite the bullet, blow away the RPM and go for a proper Python 2 install (with all the files dropped into the same locations as the older Python, natch).
So on Linux it's the same ole wget / tar / cd / configure / make dance as it ever was, subject to remembering exactly what set of exotic configure options I used last time (hint to self, never delete config.status). But on Windows, ActiveState are now a couple of Python releases behind, so what do I do? Of course, I can download the Windows release from python.org, but then I need to think - what will I lose by replacing ActiveState?
The considerations are - what added value have ActiveState given me in their own distribution? And have they, by providing me with an ever-so-convenient one-click .msi file, locked me into using them from now on? Hmm... this is not such a clear tradeoff as I thought.
As it happens, the Python.org installation picks up the right install directory and neatly replaces the ActiveState stuff anyway, so it's not that key a question. But for a moment there...
current mood: thoughtful (5 comments |comment on this)
|
3:08p - A Twisty Turny Thing
The BlackAdder quote in full is "You twist and turn like a ... twisty-turny thing", and I refer to the interesting contortions through which PythonWin goes in it's admittedly impressive attempts to be an IDE written in the same language that it supports. I've spent a fair amount of time in PythonWin over the last couple of weeks (when I say in, I mean interacting with it, not poring over the source code like Gandalf looking to identify the Ring[1]), using it to develop a crafty little system that generates questions from a database of "facts"[2]. It's the sort of batch process that, once kicked off, runs overnight, using around three thousand input records to generate several thousand output ones. Most of the heavy lifting happens in Python, which builds up networks of object to represent the datums and relationships therebetween. It's cool, and pretty memory-intensive.
So a lot of the think-write-read-run-debug cycle is done via PythonWin and, let me tell you, that little near-the-taskbar icon that lets you drop into running code is a blessing from whatever Gods watch over programmers. I remember missing the sublimely simple tactile trigger of Control-C when I first started using Windows (in those days I was more a VMS and Unix type of lifeform), the ability to, in effect, say "Oi! Program! No!" whenever one ran amuck. Windows doesn't give you that. You can, of course, try the little Fisher-Price "X" icon. Which sends the application a polite event to ask it, if it wouldn't mind, to be ever so terribly helpful and close. PythonWin in full flow doesn't respond, and not unreasonably so. You can then try the right-click-on-the-taskbar-wotsit, which tends to be doubly frustrating, since the menu pops up and down like... well, I'll let you supply your appropiate humourous metaphor here. Again, the Close option doesn't so much close as not. One yearns for the power of Control-C as one gives the three-finger-salute and conjures up Task Manager like some Demon from the nethermost slums of Pandemonium and commands it to End Process.
Or you can blithely click on the little coiled green snakey thing in the area of the screen that is apparently not called the System Tray really and choose to Break Into Running Code. I like that; there's a certain burglariousness about it, and it's satisfying to see the same old command-line-esque KeyboardInterrupt exception launched (I like to imagine) on a ballistic course to crash through the thicket of namespaces and pin the interpreter, writing and flailing, to the ground.
Anyway, none of this is the fault of PythonWin, which is really dead dead clever, but is written in Python. And thus contains the seeds of its own weakness, for occasionally, after Breaking Into that Running Code, a fountain of traceback bursts onto the interactive window (that's the window inside the PythonWin window, not the PythonWin window itself, which is a container window for the other window, to be clear) and after that, all bets are off. Now clicking the X or choosing to Close will result in just another traceback, and another, one per click. The Window That Would Not Die. For, of course, as well as my code running, PythonWin itself is also running, so that KeyboardInterrupt missile is as likely to clobber the one as the other.
But I do like PythonWin, genuinely I do.
[1] You can assume from this that, like many other LOTR fans, I celebrated the release of The Return Of The King by watching the whole lot over several evenings. Let joy be unconfined. [2] As per usual, I omit the identifying details of what I'm actually working on because, hey, I signed NDAs too, you know.
current mood: geeky (1 comment |comment on this)
|
|
|
|