The Best Answer I Can Give You

Unfortunately, if you have questions about how to write and run tests using Twisted's "trial" tool, this work in progress is still the best answer I can give you.  It's a good work in progress, but it's definitely not finished.

If you need some documentation, please feel free to provide feedback and patches at Twisted's ticket number 2443.

I am working on putting together some ramblings about test-driven development of my own, but at this rate it's going to be quite a while until I'm ready to post them here.

Do you have SSH Keys?

If you have some public SSH keys, you should really upload them to Launchpad.

This is one of the lesser-known but extremely useful features of Launchpad.  When I'm adding accounts for people to one of my many, various machines, I always have to figure out a secure channel to upload/download keys or deal with the temporary exposure of a plaintext password.  Since Launchpad takes great care to encrypt both upload and download of sensitive data (including keys) it makes an ideal place to exchange them.

So, if you think you are the sort of person who I might need to give an account to for some reason one day, save us both some time and go upload your keys right now.

A Gibbon Already In Flight

One of the first inklings the world had of the upcoming release of the game "Halo" was a cryptic website showing various obscure quotations which appeared to be from some ancient religious text.  Pre-acquisition, I always loved their sense of style; I am a huge fan of the Marathon series.  My favorite quote from the collection, which stuck with me for years, was:
Our conviction is like an arrow already in flight.
Your life will only last until it reaches you.
Today, I recalled this quotation as I noted a few things going on in my daily trip around the tubes:
Of course, Paul Graham already called this, so if anyone feels like they should be keeping score, by all means give him the credit.  But I think that Microsoft's problems are both a lot worse than the malaise that Mr. Graham describes.  It's not a question of large, abstract shifts in the focus of new technology developers.  I wouldn't say that they're dead, but they're definitely dying.

Microsoft's real problem is the much simpler business problem that their flagship product is clearly inferior its lower cost alternatives.  It doesn't help them much that the "lower" cost is, in many cases, zero, but that's beside the point.  I have made, and will make again, arguments about freedom and scaling cost and a number of other social issues surrounding code in general and operating systems especially, but all that is going to end up being peripheral.  I'm pretty sure that I'd continue to use the Ubuntu-derived operating systems for my own computers even if they somehow cost more than the Microsoft equivalents.

Of course, we've all heard this kind of thing before from the archetypical linux snobs on slashdot and other forums, people who seem incapable of recognizing that any value can be created by people who disagree with them.  Personally, I have purchased a Windows license - not just a computer which happened to have it included - as recently as last month.  (Although I must admit that my sense of practical compromise goes only so far.)

I can certainly understand some skepticism that Microsoft will topple and Linux will be ubiquitous in the home and office any time soon.  Certainly that is not going to happen soon  (for sufficiently software-industry-ish definitions of "soon" — which means they could be out of business but for cash in the bank within a year).  With Windows marketshare hovering somewhere between 80 and 95 percent, depending on who you believe, Canonical has a long way to go to fix bug 1.

On the other hand, one could make the case that it's happened already.  In the office?  Dozens of large companies, Red Hat foremost among them, make a comfortable living on corporate Linux deployments.  Sure, in most cases it's not on anyone's desktop, but it is making inroads.

In the home?  There are already 1 million PS3s in the US, and the current generation console market is staying rather cool - if it heats up to the levels of the previous one, the numbers could be more like 50 million.  Even when it's running games, the PS3 is a linux box, and to some people, it is in a much more literal sense.

Mark Shuttleworth himself says that there are about 8 million Ubuntu users alone.  That's not just a measurement error.

As with the Twisted site, however, the interesting thing here is not the number, but the trend.  Of course pundits and the mainstream press are going to look at the numbers they can see and not even consider the possibility that Windows could be dislodged.  By the time the idea seems reasonable and possible, though, the adoption curves will be in the process of going exponential as the new network effects combine with the advantages of the platform that already, now, have people migrating away from the current network effects.

If you're watching the arc of an arrow in flight it's quite fast.  Hard to predict, and often effectively invisible thanks to its motion.  By the time it's stopped moving and is easy for everyone to see, it's already arrived.

The Engine of Your Internet is Serious Business

This week, some people are saying some nice things about Twisted.
"A big component to that has been our use of Twisted Python. We're pretty reliant on the Twisted framework, and we use it for our base-line management software that we use to run the great majority of production services that we have, our monitoring infrastructure and the next-generation thing that we have coming, which is a suite of programs that will automate the upgrade process for us," Kelley said.
       Python Slithers into Systems, eWeek.com

"Twisted is one of our favorite pieces of technology. We’ve used it in Sleevenotez, and we had a major project last year, that was unfortunately canned for budget reasons after we’d done about 2 months modelling and spec work, that we designed in Twisted. I’ve been using it for years and I really think it’s one of the finest software systems I’ve ever come across."
       Twisted "ready for the big time", isotoma blog

solve for X


class A(object):
    def m(self, alpha):
        print 'A.m', alpha

class B(A):
    def m(self, alpha, beta):
        print 'B.m', alpha, beta
        super(B, self).m(alpha)

class C(B):
    def m(self, alpha, beta, gamma):
        print 'C.m', alpha, beta, gamma
        super(C, self).m(alpha, beta)

class D(B):
    def m(self, alpha, beta, gamma, delta):
        print 'D.m', alpha, beta, gamma, delta
        super(D, self).m(alpha, beta)

class E(C, D):
    def m(self, alpha, beta, gamma, delta, epsilon):
        print 'E.m', alpha, beta, gamma, delta, epsilon
        x = ???
        super(E, self).m(alpha, *x)

E().m(1, 2, 3, 4, 5)