Older blog entries for osullivj (starting at number 33)

Life: went to the theatre on Friday night with Antonia, as a birthday treat. We saw CrazyBlackMuthaF***in'Self. This is DeObia Oparei's first play: he wrote it, and takes the lead role. It's an hysterical romp through questions of race, ethnicity, sexuality, class and London post codes: "darling, I don't do *South* !" Very strongly recommended to all and any in London. So long as you aren't too prudish. As one reviewer said: "look out for the flying dildos". On the strength of this, Oparei deserves massive success. This production needs a national tour in the new year, then a West End run in a big theatre, then off to Broadway.

Hacking: nothing to report: been swamped by pre-Xmas deadline at work, and by Xmas itself at home.

jbucata notes Koenig's theorem...

Any software engineering problem can be solved by adding a level of indirection
. Don't forget the corollary...
Any bug can be fixed by removing a level of indirection
.

Is the theorem due to Koenig ? I always thought it was a bit of programming folklore from way back when. I can only find one attribution via Google.

21 Nov 2002 (updated 21 Nov 2002 at 13:22 UTC) »

Objective-C++: found this FAQ at the Apple web site. Take a look at the section on Objective-C and templates. I felt almost drunk reading it. Particularly this method...

template <class TYPE>
NSString *getDesc( void) {
    return [TYPE description];
}

Dynamic dispatch to a class object inside a templated method ! Wow !! Dynamic dispatch, templates, interfaces, multiple inheritance, and strong type checking all in one language. The possibilies are staggering. All it needs is blocks.

Life: had a drink with a couple of old friends, Rupert and Dan Poon, on Friday night. I worked for their Dad, Peter, alongside Rupert, Dan and their younger brother Andy from 85 to 90. Back then the company was called ITR, now it's Romaxtech. It was fun to hear about developments at Romaxtech. Since 85 the front end development language has changed from Fortran to C to C++ to Smalltalk. The analytics are still in Fortran though. From what Rupert and Dan said, many of the issues they face are the same as 12 years ago. Plus ca change...

Hacking: managed a productive hour this morning before the kids got up. Worked on a small part of levitt: how to address "standard geometries" with Xpath like syntax. Standard geometries are an idea borrowed from scientific visualisation. A StdGeom is a medium to large bundle of data composed from atomics, lists and dictionaries. There are rules for how they may be composed together, and addressed. The payoff from StdGeoms comes in eliminating dumb data bearing classes. These classes tend to embed tightly coupled data members, with lots of accessor methods, but little significant behaviour. They also tend to increase the coupling between sub systems. Using StdGeoms as the main parameter type to methods encapsulating significant behaviour makes that behaviour much more reusable.

Drift: politically, I've found myself drifting to the right as I've got older. Which leaves me pretty much in the centre these days, since I started from far left about fifteen years ago. It's not uncommon for one's views to drift rightwards with age. In fact the opposite is noteworthy. Tastes, inclinations and instincts evolve as one ages. Initially I was as surprised as anyone by the emergence of more conservative impulses in my own thinking. Now I'm amused by it. Yet another reminder of how we don't control what thoughts get instanced in our wetware.

So I'm wondering if something similar to the rightwards drift also applies to taste in programming languages. More than twenty years ago I started with Basic, but quickly switched to assembler. During the 80s I did a fair bit of Z80. 8080, 6502, 8086 and 68000. There have been various detours since, but most my coding time since the late 80s has been spent with Fortran, C, C++, Java and Python. I find I like high level languages more and more. And I find I have less and less patience for tweaking detail. There are things I want to achieve, and I'm going to use the most powerful and expressive tool available to realise my goals. So this is an upwards drift, not a rightwards drift.

All this was prompted by gilbertt's post about Rich Hickey's dotNet Lisp. Hickey did some great C++ template stuff in the mid 90s. His template functor callbacks were one of the precursors of the C++ generic programming movement that's featured Stepanov, Alexandrescu and Austern recently. I wonder if Hickey has wearied of wrestling with buggy C++ compilers and hairy template code, and is moving on up to higher level programming systems.

In other news: glad to see that David McCusker is making progress in his job search. So there's some hush hush whizz bang Objective-C project in Pittsburgh, huh ? I'd go for the safe option myself, times being what they are.

The Power of Obsession: the BeyBlade craze has got me thinking about the nature of obsessive thinking. Our two boys, Edmund and Miles, have been completely swept up in the craze. I bought a BeyBlade for Miles yesterday, since Edmund has had one for a while. They're both totally into BeyBlading, but Miles is completely fixated. He is only four, but I'm still surprised by how he seems unable to talk or think of anything else.

So what's this got to do with hacking ? I noticed a parallel between Miles' behaviour, and my own, both now and when I was a nipper. Some external entity, whether it is BeyBlade (Miles), Rubik's Cube (younger me), or neat abstraction/refactoring crufty code/obscure bug (older me) compels one's attention ruthlessly. You know what it's like when you get locked into refactoring a piece of code or fixing a bug, and you just can't leave it alone until it's done ? So I'm hoping that Miles' obsessional behaviour with the BeyBlade is an indicator that he will have that powerful mental focus for more abstract tasks later on.

The downside to harnessing this obsessional mode of thought in paying work is that it can't be switched on or off at will. Sometimes I'll find myself with a deadline looming, getting sidetracked into a bit of refactoring that will eliminate crufty code and leave me with a cleaner structure. And I just can't stop myself.

I could go on to speculate about ADD, ADHD, autism and a putative gender gap for this phenomenon. But I won't. I'll put it down as yet another item to research at some distant point in the future when I've got some spare time...

23 Oct 2002 (updated 23 Oct 2002 at 12:09 UTC) »

According to this, I'm a postmodernist. Certainly, I believe descriptive is better than prescriptive, and that product is far more important than process. Not that I'd want to be lumped in with Derrida, Lacan and all that fashionable nonsense.

Hacking: got in some quality hacking over the last weekend. After much gnashing of teeth discovered that Zope's filter_manage_options() was screwing up my manage tabs. A minor breakthrough, followed by some solid progress. Also, what is up with pyexpat.so ? It's not in the Python 2.1 distro built into Zope 2.5. Joel's recent comments make me wonder if XUL will be handy for the the more interactive aspect of levitt's VPE. Otherwise it's going to be a fully fledged fat client.

Arguing: David McCusker has lost interest in arguing. So have I. It's odd. Back in my teens and twenties I used to hold political, philosophical and technical views with passion, and argue for them with force. I would defend any of my chosen ideological positions at the drop of a hat. Now such a defence has to be dragged out of me. I've lost interest in changing other people's minds. I'm only interested in changing my own mind. And I'm unashamed about the fact that my views shift, and are sometimes contradictory. Consistency is the virtue of a narrow mind, and semantic sloppiness is the prerequisite of progress !

TheCorruptor: I've been on Demon ADSL for a while now, and have no complaints. It's not the cheapest, but you do get a static IP address.

nymia: has a dream of what software construction should be like ten years hence. I had that dream ten years ago ;) Plus ca change...

But seriously, check out Brad Cox for a persuasive argument on why the barriers to pluggable, componentised software are organisation, legal and commercial, rather than technical. If the barriers were solely technical, it would have happened by now.

9 Oct 2002 (updated 9 Oct 2002 at 10:02 UTC) »

Continuing my answer to David McCusker's response to the Feyerabend Project...

Dave wants to reduce the pile of abstractions necessary to build software to a cleaner, better factored, and better explained pile of abstractions. Doing that is analogous to formulating a new scientific theory that replaces a predecessor that explained the same problem domain. Feyerabend's main example is Galileo's theory of planetary motion, and how it replaced Copernicus. For more on this, here's an excellent summary of Against Method. Plenty of good detail on how Galileo used rhetoric and semantic sleight of hand to make his case. The only rule is "anything goes", indeed ! If only Feyerabend were still with us, and able to comment on the use of FUD by major vendors to win acceptance of their platforms. As Feyerabend points out, the use of unreason is quite legitimate, and often necessary, to get one's case accepted. Something the Open Source movement could do well to learn from. After all the greatest scientists weren't averse to a bit of FUD: "God doesn't play dice".

Like Dave, I'm working on my own new pile of abstractions. Partly because I do derive a great deal of gratification from crafting a neat abstraction. And for other reasons. The sources I'm drawing on for inspiration are rather different than Dave's though...

  • Brad Cox: Planning the Software Industrial Revolution & Superdistribution
    • Binding mechanisms, and their levels
    • Gauges
    • Component marketplaces
    • The problem is not technical. It's organisational. Useright, not copyright
  • Richard Gabriel: Mob Software
    • Levittown
    • We can only achieve the productivity we need with swarm effects. The same effects that built the WWW
  • Jeff Vroom: AVS/Express
    • Encapsulation of procedure as well as data and behaviour
    • Visual programming. Port export mechanism to expose sub component interface
  • Forth
    • Stack based

AVS/Express, in particular, exemplified the pyramid structure Dave's talking about. It's something I'm aiming for too, though I tend to call it 'white box components'. Unlike black box components, white box components can be opened up, and their subcomponents replaced. Getting the right binding and parameter passing mechanisms to enable this is the tricky part, though. That's where I'm drawing on ideas from Forth, AVS/Express and Brad Cox.

Dave also commented: "Unfortunately, explanation doesn't have a methodology as such". There is a large body of work in the philosophy of science on the nature of explanation. See Hempel in particular. Feyerabend has a lot to say on the matter in "Farewell to Reason", as well as "Against Method".

Like Richard Gabriel, Dave seems to be keen on using literary forms: "The right way to bridle complexity lies along another dimension ...a dimension of story. When code sucks, more often that not it's because there's an absence of story." It has been said that there are only seven or eight types of story. Which could give one the basis for a nice, clean literary framework, with every instanced story derived from one of the seven or eight base classes. Just kidding....

24 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!