Trouble ticketing systems and the future
Here's a theory about trouble ticketing systems: they should allow youto submit tickets that are dated in the future, or that only becomeactive in the future.
Here's why. First, it's not uncommon to know now that you need todo something in the future (and further that you cannot do it now).Second, in many environments your trouble ticketing system is supposedto be your authoritative and official repository of known work; ifsomething is to be done, you're
Why we have a problem with Oracle's Solaris support pricing
The way I've come to think about Oracle's prices for Solaris support isthat it is effectively increasing the price of the machine by 8% (or12% if you want hardware support) per year that you keep it. Whetherthis matters depends on the sort of environment that you have.
In some organizations, the hardware costs are a small part of the totalcost of operating a machine, and if not they're a small part of thevalue that the machine contributes to your bottom
Reading the tea leaves about Oracle, Solaris, and universities
I've mentioned before that the universityhad a long-standing general support agreement for Solaris and that theyearly renewal of that agreement this year was going to be interesting.I honestly wasn't very optimistic, mostly due to Oracle's reputationaround money issues (as in, they want as much of yours as possible) andpartly due to the abrupt termination of Sun's long-standing academicdiscounts for other things.
Well, 'renewal' time has come and gone around here, and I
V8's neat encoding trick for type tracking
Courtesy of v8: a tale of two compilers Iran across a neat trick in how Google's V8 JavaScript compiler encodestypes during runtime type tracking. Today I feel like writing it downto make sure that I really understand it.
One of the ways that a runtime compiler speeds up a dynamic languageis by generating specialized code that operates only on specific typesof objects using more and more native values and code; if your loopis actually only dealing with integers, the compiler wants to compileit down
The conflict between caching and tracking on the web
The web user privacy story of the recent past has been the news about web tracking companies that are using ETag and Last-Modified headers to covertly track users. In the process of thinking aboutthe issue and writing yesterday's entry ,I've come to the probably unsurprising conclusion that there is afundamental conflict between browser caching and avoiding tracking .
The attacks on ETag and Last-Modified are the tip of an iceberg.Both of these headers are quite convenient for tracking because thebrowser will directly store them and
Why browsers can't really change or validate Last-Modified
Quoting from Nik Cubrilovic's Persistant and Unblockable CookiesUsing HTTP Headers (via Hacker News ):
I will be filing a bug report with the open source browsers andrequesting that the date is parsed properly. This won't completelysolve the problem, since users can still be tracked by setting aunique datetime - but perhaps one of the more innovative browserswill come up with a solution where the time is rounded off to thenearest hour, and some basic sanity checking is done.
There's two issues here
Visibility: an advantage of automation
We recently automated our account request system , just in time for the group of newgraduate students that happens at the end of every summer. In past yearswe've handled new graduate students through a manual process; a singleperson here went through the list, grouped them by supervisor, askedeach supervisor to officially confirm sponsoring accounts for theirstudents, re-asked professors who didn't respond, kept track of theanswers, asked the approved new graduate students to pick their logins,and so on. This
You should always use super()
I've done it (and now I'm embarrassed bythat). I've seen other people do it by accident (to pick something I was recently looking at). And yes, I know, using super() is kind of annoying (Python 3makes it much nicer). But still: you should always use super() instead of directly calling up to your parent class .
(It's mostly a coincidence that both examples I gave here aremetaclasses, except that a metaclass
MH is an iceberg
From a comment on here :
MH of course is the example in the KornShell command and programmingbook as something that can be re-written as a series of shell scripts.
My immediate reaction is 'only as a very unsatisfying, slow, andincomplete version'. The Korn shell people shouldn't feel bad, though;lots of people have looked at MH and had that reaction, and some ofthem have even given it a try. Unfortunately it's much harder thanit looks.
For all that
An interesting way to shoot yourself in the foot and a limitation of super()
Presented in the traditional illustrated form, for Python 2:
class Base(object): def foo(self): print "base foo"class A(Base): def foo(self): print "A foo" return super(A, self).foo()class B(object): def foo(self): print "B foo"old_A = AA = Bold_A().foo()
(If you think that this is a completely silly