Aurynn Shaw has a very nice piece about the problem of contempt culture in software developer communities and I recommend reading it if you haven’t already.
In a contempt culture everything else sucks. The programming languages, frameworks, and software tools other than the ones you and your worker hive have chosen are nothing more than great big festering piles of dung. And the misguided souls who have made the embarrassing mistake of using those disgraced technologies are fools and morons for having done so. You and yours, by contrast, offer a little circle of knowing enlightenment, a smugly shining beacon of hope and technological progress in an otherwise dark world.
I’m using the default Emacs 23 on Ubuntu 11.10 and both the HTML and Haskell flymake modes seem to be broken. For the HTML mode the problem seems to be that the version of xmlstarlet installed on Ubuntu needs another command line switch to make it print out the information that flymake needs, like line numbers. Here is some elisp code to fix that:
This concludes the introduction started here. You can find an index to the entire series here.
All Done
Whew! Thank you for sticking with me. When I started this series I didn’t realize it was going to be this long, or take this much time to make. But I have enjoyed creating it and hope you have enjoyed reading it.
Now that I have finished, I will look into the possibility of generating a PDF format. No promises, though.
Part 21: Lazy is as Lazy Doesn’t: Twisted and Haskell
This continues the introduction started here. You can find an index to the entire series here.
Introduction
In the last Part we compared Twisted with Erlang, giving most of our attention to some ideas they have in common. And that ended up being pretty simple, as asynchronous I/O and reactive programming are key components of the Erlang runtime and process model.
Today we are going to range further afield and look at Haskell, another functional language that is nevertheless quite different from Erlang (and, of course, Python). There won’t be as many parallels, but we will nevertheless find some asynchronous I/O hiding under the covers.
This continues the introduction started here. You can find an index to the entire series here.
Introduction
One fact we’ve uncovered in this series is that mixing synchronous “plain Python” code with asynchronous Twisted code is not a straightforward task, since blocking for an indeterminate amount of time in a Twisted program will eliminate many of the benefits you are trying to achieve using the asynchronous model.
Part 19: I Thought I Wanted It But I Changed My Mind
This continues the introduction started here. You can find an index to the entire series here.
Introduction
Twisted is an ongoing project and the Twisted developers regularly add new features and extend old ones. With the release of Twisted 10.1.0, the developers added a new capability — cancellation — to the Deferred class which we’re going to investigate today.
Asynchronous programming decouples requests from responses and thus raises a new possibility: between asking for the result and getting it back you might decide you don’t want it anymore. Consider the poetry proxy server from Part 14. Here’s how the proxy worked, at least for the first request of a poem: