Monday, March 15. 2010
Remote networking is a PITA
Friday, March 12. 2010
RunSnakeRun 2.0.0b6 (and SquareMap 1.0.0b25) released
Thursday, March 11. 2010
Say it with me: Errors should never pass...
Say you were writing a program that takes a "config-file" parameter and you were (explicitly) passed a filename that, for whatever reason, you couldn't load. Is the proper operation to exit and report an error, log a warning and continue with defaults, or load a default filename silently?
In this particular case, app-armour was configured to prevent dhclient from accessing most of the filesystem. It (app-armour) was dutifully logging errors in /var/log/messages, but dhclient was just silently defaulting back to the very-subtly different default config... queue lots of very subtle debugging effort. Maybe there's some good reason for this behaviour, but at the moment I can't see it.
import this
Wednesday, March 10. 2010
Infinite Deployment Docs and OpenID Issues
Have spent rather a lot of time trying to wrestle the deployment docs into shape for the TurboGears 2.1 release. Even with all that work, only the "standard deployment pattern" is really in "good" shape. Alternative servers, alternative deployment styles, etceteras are all still needing lots of love. I am, however, I think, finished with that section for a while unless someone else chips in to help.
Also ran into one of those "argh" inducing issues this evening. A user was trying to follow through the "Using who.ini" discussion on his way to doing OpenID with TurboGears and ran into a weird, subtle bug. Turns out, when you disable TurboGears authentication repoze.what "fails open" as far as much TurboGears code is concerned. The predicates just all silently start evaluating to True. The @require() decorator thankfully does the right thing, but users who do:
tg.predicates.has_permission('manage')Now always get a True value (the predicate object), so if you're using that to control display of information... oops. Not likely to have bitten too many users, but it just seems we should have something raising errors on _nonzero_() if the predicate's aren't "booleanized()".
In other news, given that someone else is trying to get OpenID working, I suppose I should look at the branch of repoze.openid. Upstream wants changes, but I haven't yet figured out what's supposed to happen wrt registration to make those changes work. Repoze just doesn't seem to have a registration story AFAICT.
Monday, March 1. 2010
RunSnakeRun gets a basic source-code-view
There was a request from one of the RedHat guys to add a source-code view to RunSnakeRun so that users can just flip over to see the code which is running slow when they are exploring a profile. wx.py makes that pretty easy, so bzr head now supports it.
Want to maybe add a call-tree view. A memory-profiling view would be nice too, but I don't have a recommended memory profiler at which to point people. Without that it's a bit of a toss-up as to what memory-profile format to support.
Thursday, February 25. 2010
PyOpenGL 3.0.1 Final (Test Please)
Wednesday, February 24. 2010
EJabberD Configuration some Other Day
Luke (of Moksha fame) has been guiding me through the "official" and correct way to do real-time web with TurboGears. Orbited seems to be a given, but STOMP apparently doesn't scale, while AMQP isn't well supported under Javascript. That seems to leave XMPP as the likely "official" way until AMQP is fully supported.
Of course, you need an XMPP server to do anything with XMPP, so I'm entering the maze of twisty-turny passages that is configuring EJabberD to connect to our TurboGears database for authentication. I figure I'll wind up with an external auth script for EJabberD which uses TurboGears command-line configuration to get the DB connection and use the standard friendly-form login table for authentication. Alternately I could go "wrong school" and just use an RPC call into a TG controller to do the auth, or maybe I could just use a "quick and light" XMPP server for the tutorial and let people struggle with EJabberD themselves (naw, that's not helpful).
However, today, before I get on the plane, I want to release PyOpenGL 3.0.1 final, so robust real-time web-apps for TurboGears are going to remain undocumented for now.



Comments
2010-03-15 17:33
So, A lot of the problems w ith TG stem from repoze.what. We are working on it. I've b een collaborating with G [...]
2010-03-13 14:54
Thanks. At the moment I haven 't created an icon for the pac kage. Some day I'll hook up t he tablet and draw one : [...]
2010-03-12 22:53
Nice work; thanks! FWIW, I' ve packaged both RunSnakeRun a nd SquareMap for Fedora, so it should be possible to i [...]
2010-03-12 19:21
Fascinating spam pattern; half of the comments are textbook blog spam (generic comments, t rivially reworded text o [...]
2010-03-12 19:05
Thanks, how did that manage to be wrong for so long?
2010-03-12 17:11
I just noticed a typo in your site's subtitle: "Plumblin g Life's Depths" should be "Pl umbing Life's Depths" [...]
2010-03-12 16:29
re-configured to work are unab le to obtain virtualenv mean t hat isn 't possible to develop ?or I've misunderstood y [...]
2010-03-10 10:27
Turbo gear was though a long a waited release and people call ed it very nice but the small problems in it really ma [...]
2010-03-02 08:56
Thanks!
2010-03-01 22:40
Actually I do use setuptools for RSR. I just haven't yet got out of the Python 2.3 habi t of avoiding "extra" ar [...]
2010-03-01 19:57
Thanks! That was me.
2010-03-01 19:14
Oh, you're not using setuptool s/distribute? I got so used t o packages explicitly listing their dependencies in th [...]
2010-03-01 18:59
Yup, the SquareMap package is a dependency. easy_install Sq uareMap should pull it in. wx Python is also a depende [...]
2010-03-01 18:49
Release early, release often! (Incidentally, when I easy_ install RunSnakeRun 2.0.0b4, I 'm unable to start it: R [...]
2010-02-24 10:11
I wasn't actually there, just read the slides. I really like the characterization "PyPy is Shirt Origami research."