Things I Can No Longer Be Bothered With

I can no longer be bothered with UML. It no longer matters to me whether or not I have Visio installed on my Windows desktop, or whether it has a nice set of class diagram templates I can use. I won’t use them even if it is, and has. Nobody else around me uses UML, except in the most informal way for back-of-an-envelope diagrams, and that’s fine by me. If the day arrives when I’m surrounded by people all using UML very professionally to communicate with each other, I’m sure I can catch up.

I can no longer be bothered with Twisted. Everything those guys say about threads is wrong, the moment you start working in an environment where threads are lightweight and the concurrency model is no longer shared state + mutexes. Admittedly Python isn’t that environment (although Stackless could be). But what that really means is that Python isn’t the tool for the job (of building high-performance network servers), rather than that one should add the burden of working with a frankly bogglesome programming model to all the other worries one has when trying to make software of that kind. Also, it bugs me that the Twisted guys don’t want to see that there are alternatives to shared state concurrency, and base a large part of their objection to threaded programming on the known deficiencies of the shared state model. I know of a good book they all should go away and read.

I can only intermittently be bothered with Python itself, although it’s still the language I’m most comfortable with. I’m considering migrating Tripoli to Haskell, and maybe adding a parser and execution engine for an RDF query language to it. On the other hand, I’m not sure I can really be bothered with RDF any more. Although I still think triplespaces are a neat idea.

I can hardly be bothered with anything published by O’Reilly any more. I’d still want the next edition of the Javascript book, and maybe a couple of other reference texts – say, on Postgres’s PL/SQL – but I’m frustrated with the absence of decent primers for non-mainstream languages in their catalog. Where’s Programming Haskell? The Oz Cookbook?

I can’t be bothered with LAMP the way I used to be. As a web application stack, it’s effective enough, but it’s a bit of an evolutionary dead end. PHP5 isn’t magically not-crap just because it has objects. MySQL had the wrong sorts of beginnings in life to ever mature into a decent database. Linux and Apache I’m more contented with, because Linux is evolving and Apache essentially doesn’t need to (“HTTPD, HTTPD, / I know I am, I’m sure I am, I’m HTTPD…”). There is an increasingly broad range of alternatives out there – Ruby on Rails is the current lead attention-getter – and that’s a good thing. Maybe in a few years everyone will be doing LYME (Linux, YAWS, Mnesia, Erlang)…

One Response to “Things I Can No Longer Be Bothered With”

  1. Glyph Lefkowitz Says:

    Only half of what we say is wrong :).

    Once you’re not talking about shared state, then the difference between “threads” and “processes” falls away; and (if you listen to any of the frequent Twisted/Threads arguments) we champion “processes” (which we use to mean threads which pass state through pipes or sockets) as opposed to “threads” (which we use to mean threads that share a heap).

    If you are using a language that supports a different concurrency model like Erlang or Haskell, you’re really not participating in the same debate at all, and the fact that the word “threads” is used in both places is unfortunate.

    Personally I’m aware of lots of different concurrency models and I happen to prefer the one in Twisted, which is to say event-based and single-threaded with a big ol’ pile of shared state in the middle. There are various reasons for this, but it doesn’t mean I don’t see the value in other models.

    If you think the Twisted camp has painted multithreading with an over-broad brush, or that we’re penalizing all sorts of threading models due to the shortcomings of one, I believe that we’re using the mainstream versions of these terms. There are a *lot* of java-heads out there who think that “concurrency” is some magical thing that happens when you start threads, that shared-state threads are the only kind of threads, and that the “synchronized” keyword is the only thing you have to understand to make it all work.

Leave a Reply