I've been trying to get my head around the various papers on metamodeling available on the net. The concepts behind the "precise UML" efforts seem simple enough but the terminology can get quite confusing. There are not many mentors around here in Delhi with whom I can brainstorm about this stuff.
When I started doing real work, ie outside academia, I automatically assumed I would work better by myself than with a team. Now after 6 months of getting my wish and programming solo I miss being able to run ideas past workmates, especially those with different backgrounds. At my last job my teammates were a mathematician, a physicist and a philosopher. O ben, O tom, O channa, where are you now.... here were guys who didn't have half the programming experience I did, but when they told me I was wrong (on any subject ranging from cutting code to politics), I sat up and listened. Now I just have my own nagging doubts to argue with. :P
In the mean time my old friend Greg is telling me that "the key to a good modeler is ontological soundness." I wonder if Aristotle would have approved of UML. Greg is one of those people who has been infected with Hidden Markov Model Syndrome, a curious affliction propogated by one of our EE professors at unimelb. (greg: pls dont hurt me)
I've created a sort of declarative syntax for specifying metamodel association constraints, eg
(uml.Package, uml.Class, Containment), (uml.Class, dgm.DgClass, dgm.Representation), (uml.Class, uml.Class, uml.Generalization),
and so on. This is used as the modeler's internal representation of the metamodel, currently these rules are specified in python code but eventually I will build a MOF parser once my XMI load/save routines achieve closer to 100% coverage of the XMI DTD.
Now I have a simple querying engine that allows me to 1) ensure the user only builds models that conform to the metamodel constraints and 2) provide custom views of the model based on configurable subsets of the metamodel constraints (eg for a tree view of Project->Package->Class->Subclass etc, like ArgoUML).
The problem is that I am extremely rusty with logic and constraint programming (having dozed through most of the CS classes :P), and all I have is general knowledge of prolog and some functional languages. This is constraining (no pun intended) my ability to write decent querying routines for the metamodel, and I'm going to have to do some serious tuning to ensure that the existing routines scale to large models.
Adding metamodels to the classic MVC architecture, however, even with my currently quite lame implementation, allows for a quite neat framework for creating a whole range of applications. Python helps with this a great deal of course. more about this later...
also working on generating interaction diagrams using python's builtin trace hook. this is an excellent and underutilized (as far as I can see) feature in the python runtime and I expect to see more of it in the future.
Tomorrow I'm going to help migrate a convent school's computer lab to LTSP+KDE+OpenOffice. Should be fun, but the real fun will be watching the kids actually using it. I expect the kids will pick it up well before their teachers do. I really hope this goes well, it could set a great precendent for more prestigious schools in the country.
recent books: Amristar (Mark Tully), The Wreck (Rabindranath Tagore), a random yoga book, Ender's game (again, for old times' sake), The Honourable Company - History of the British East India Company (John Keay), the autobiography of punjabi playwright Balwant Gargi... I went and raided the family library in our ancestral house in punjab. If I didnt have to come back to Delhi I would have been lost in there for several years, as it contains the collections of three generations of a highly bookish family. The last time I saw it was when I was 17 and a lot of those books didnt really appeal to me back then, but now.... jackpot...