Older blog entries for osullivj (starting at number 38)

Tajea: a colleague just sent me a link to Tajea. They have Brian Kernighan on the board. Which is interesting. But nothing else adds up...

  • The web site is stale: for instance the language spec is apparently in revision "and will be available in May 2002".
  • There is no substantive content on line. To join Tajea's "alpha circle" you have to pay them $69 !
  • Google isn't aware of tajea.com, yet. Who sets up a business web site and doesn't even register it with Google ?
  • We've had C, C++, Java and C#. Not to mention Objective-C, C+@ and others. Do we really need another C derivative ? Maybe the "right" language is Erlang, Haskell, Scheme, Smalltalk, Fabrik, Ruby, Python, Eiffel or Lisp.

What do you all think ?

Hacking: the levitt codebase is really starting to come together. levitt is a framework, as well as a series of apps built on that framework. It's impossible to just build a framework, you have to build the apps at the same time too. So it means constant refactoring. The levitt object system uses extremely loose binding, and inheritance by prototype. I'm still not sure of some of the consequences of this design approach. But this evening I had an insight brewing in the back of my head about the interplay between inheritance by prototype and loose binding. I can feel it's going to pop out some time over the next few days.

Reading: just finished Roy Jenkins' excellent Churchill. Everything I read about Churchill deepens my admiration for the man. One sentence from the book has stuck in my mind, and it's not one of the usual quotes from Churchill's wartime speeches. It's from a letter to his wife Clemmie, on the day he became Prime Minister. That's the 10th May 1940. At his point Hitler had invaded: Rhineland (1936), Sudetenland (1938), Austria (1938), Czechoslovakia (1939), Poland (1939), Denmark (1940), Norway (1940). On the 10th Hitler launched his invasion of Belgium, Holland and France. Any lesser man than Churchill would have thrown in the towel. Instead he breathed a sigh of relief at finally getting the top job, and commented to Clemmie: "at last I have the authority to give directions over the whole scene." Such self confidence ! Many in the British establishment wanted to try and cut a deal with Hitler in May and June 1940, reasoning that to fight on was pointless. Imagine what the world would be like if they had prevailed ! Only Churchill had the will and determination to resist Hitler at any cost, and only he had the perception to realise the monstrous evil of the Nazi regime. As early as 1934 he'd spoken in the Commons in condemnation of Nazi anti-semitism. Churchill knew that compromise with Hitler was futile, and the only possible course was a struggle to the death.

So having finished Jenkins' Churchill, I'm now onto Roger Lowenstein's When Genius Failed. An excellent, non technical, account of the collapse of Long Term Capital Management. If you're at all interested in wholesale finance, trading, arbitrage and risk management this is a must read. It's fun to see some of the same characters that were in Michael Lewis's Liar's Poker popping up again.

Code: just put out a new release of my templating system. Release 0.3 of templ adds a Tcl implementation to the existing Java and Python code.

templ is Yet Another Templating System. But there are a couple of things that make it slightly different...

  • Implementation language neutrality. The template syntax doesn't embed fragments of the implementation language, like for instance JSP. This makes it possible to use the same templates with implementations in more than one language.
  • Target syntax neutral. So the template system can be used to generate HTML, XML, CSV or any text output.
  • Driven by data provided in neutral data structures. For example, Python's built in lists and dictionaries. Or java.util.Map and java.util.List. In Tcl lists are used. The idea is to avoid structural coupling to an application data model.

Xmas: Christmas was good. Two whole weeks away from work was very refreshing. My Aunt came round and cooked lunch which was great. We got to eat our Xmas lunch at lunchtime ! Instead of at 5pm, which is what usually happens when we're trying to prepare a large meal and do Xmas stuff with the kids at the same time. One highlight was going to Hamley's to get Edmund a Scalextric set.

Hacking: none done over the holiday. I'm just starting to re-engage with my levitt codebase. I think I'm going to have to rework the parameter passing system.

Code: managed to slot in 90 mins on my main project last night, after I'd put Cordi and Miles to bed, and before Toni and Edmund got back from the ballet. They saw the Nutcracker at Sadler's Wells. I hadn't done any work on the code since late November, so it took a while to get up to speed. I seem to be homing in on a core issue for levitt's object system: the relationship between persistent object state and the run time stack frame. Specifically, how object properties can move from local state onto the stack. I hope I'm going to get a chance to work on this over the holiday. I can feel the beginnings of a solution starting to fight its way out of the back of head.

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.

29 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!