Older blog entries for titus (starting at number 64)

wsgiFeedSuck

Wrote another toy WSGI application tonight: wsgiFeedSuck.py. It wraps RSS feeds with a simple WSGI app that displays the titles and summaries.

You can try it out, for the nonce, in CGI mode: here.

I wrote wsgiFeedSuck to learn how to use Mark Pilgrim's excellent feedparser module. Astute examiners of the code will note that I use 'etag', 'modified', AND only check the feed every hour. Yay me ;).

The only real problem I have with the code is the lack of file locking around the shelving. O well. Suggestions welcome.

twill

OK, I'm posting it. Happy? Damned voices, yammering away in my head...

(I do like the fact that Web-based darcs repositories are also Web sites in their own right. Very convenient when you don't want to do any work to "release" something.)

Miscellany

oubiwann, congrats on remembering to X out your password. I didn't, the first time I posted such a script ;).

chromatic, nice enthusiastic article on PostgreSQL. (I especially like the Oracle user's comment at the bottom: "but in our nice shiny expensive database, we've been using this for eons...")

avrietta, I couldn't agree more. At least about the steak. And maybe the single malts. But seriously, these jokers are running Wikipedia on non-ACID databases!? Whoo. You should beat up on me anyway, though, I like my tri-tip marinated. (I can't afford better cuts of meat.) But I do sear it. A few BBQs ago, I let a German cook the meat -- he kept on telling me it wasn't done, until finally I realized he was "searing" it all the way through. He'd already ruined it by then, but luckily he tasted good with the cajun BBQ sauce I like, so I didn't go hungry for long.

robocoder, your wedding site is down. You should use a co-loc. ;) Ummmm and you should also keep it updated...

--titus

Generating all L-tuples from a given alphabet

I had a muuuuuch longer diary entry written, but then I realized it was all shite and needed rewriting. Meanwhile, here's something that I thought was cute:

alphabet = ('A', 'C', 'G', 'T')

def rN(L, *args): """ Generate all L-tuples from the given alphabet. """ if L == 0: print args return

for letter in alphabet: rN(L-1, letter, *args)

For example, rN(2) gives this:

('A', 'A')
('C', 'A')
('G', 'A')
('T', 'A')
('A', 'C')
('C', 'C')
('G', 'C')
('T', 'C')
('A', 'G')
('C', 'G')
('G', 'G')
('T', 'G')
('A', 'T')
('C', 'T')
('G', 'T')
('T', 'T')

There are just *all sorts* of tricks you can do with Python's function passing semantics, ehh?

Rant of the Day

Why must people post sub-200k binaries via SourceForge's incredibly crufty load-balancing download system?!? It makes them difficult to download, IMO...

--titus

Selenium redux

When I asked about the Selenium web testing framework, the only reply I got was from one of the authors, Jason Huggins. He says the software works really well -- now I have to decide whether or not to believe him ;). He says it's getting some use in Plone-world, though, and Grig is going to try it out & (hopefully) let me know.

Bret Pettichord wrote a nice entry on Selenium, too, so maybe I should believe Jason...

Guido takes names

Rewriting Python from scratch: bad.

Language adoption by Apple

Paul Snively writes a longish e-mail to the OCaml mailing list about Apple's history with language research. Interesting stuff.

The Dial-Up Divide

Adam Rifkin writes on weblications in his Deeply Intertwingled blog. One thing that caught my eye was his description of Google Suggest's bandwidth usage: every time you hit a key, approx ~1 kb of data is transmitted from the Google server to you. I think this nicely illustrates the divide between dial-up and broadband: how well do you think this will work on dialup? ;)

Titus Is Testing Unicode Scriptmanagement

ObGoogle: found this. In the German, "Thesaurus Indogermanischer Text- und Sprachmaterialien". (No, that's not a real translation; it means "Thesaurus of Indogermanic Texts and Language Materials", or somesuch.)

Today's Resolution

I will not get spittingly furious at the incompetent, obtuse, inane, idiotic, dopey, lamebrained, thick, asinine, boorish, witless, half-baked, feeble-minded or doltish managerial practices of professors. At least not more than once a day.

--titus

Selenium

Grig Gheorghiu pointed out Selenium, a Web testing framework. Does anyone have any experience with this? Please let me know... - thanks!

Gormenghast

Ankh, I'm not sure what to make of your comment about turning on heels... ;) I've read parts of the Gormenghast trilogy, and I love the atmosphere that Mervyn Peake creates. What can I say, titus is my real name!

As far as whither XML... My Cartwheel/FamilyRelations software can communicate between client & server using an XMLish data format, and I recently extended it to save/load this format from disk. This way people can load analyses offline. The only real problem I ran into was that the files can contain large analyses & I ended up doing a Bad Thing and encapsulating the analyses as blobs within the XML data. Not sure what I else I could have done; using XML properly would have made the files 50 times larger.

I spent some time writing Java, Python, and C++ parsers for the format, but then realized that until I made the system more generally useful no one was going to care but me. So, I adhered to Rule Y and just built the libraries without writing a detailed spec. So no DTD, no spec, just an internal feature format that could be regularized were anyone interested. Which they're not ;).

I've spent more time on the RPC route in recent years, and am now stuck on the fence about the future. My next set of features could depend on XML-RPC to communicate data, but then the data can't be accessed without a server connection. This seems like a bad idea, but the overhead of writing the XML I/O functions also seems unnecessary at the moment.

But I'm sure that's more than you wanted to know...

--titus

Random Miscellany

Undefeatable spam. (Well, at least without real AI.)

Public posting of genome shotgun data can lead to the discovery of new species, sequenced unintentionally. Heh.

CatchUp! Record the refactoring of your API, then "play back" the refactoring on dependent applications. Very cool!

WaterBot. I don't get it.

Corollaries and Laws

My first rule of thumb (a.k.a. "law that I will force into every technical discussion, irrespective of relevance") is this:

Rule Z: A marshalling library isn't complete unless A = load(marshal(A))
A corollary is this:
Corollary Z_1: An analysis program isn't usable by other people unless it is possible to build a complete marshalling library for the output.
This is one of my bet bioinformatics peeves: people (or large institutions) who build otherwise useful programs that have an utterly nonregular output format, rendering these programs largely useless for pipelines.

Corollary Z_2: A list of tab-delimited lists is not a real file format.

'nuff said there. One day I hope to be inspired enough to write a rant about this; my title is already planned out: "You wouldn't use Excel as your database, so why are you using GFF?" (GFF is a simple tab-delimited format that everyone uses in bioinformatics.)

Another rule of thumb:

Rule Y: Premature standardization is the root of much evil.

Writing data export specs before you've talked about use cases with at least three other groups is one flagrant contravention. Solidifying APIs without actually developing a real application that uses them is another.

Prevayling Stochasticity

Via Max Ischenko, the Pyrasun rant about Prevayler is pretty wild. Mike Spille seems to have some serious objections to Prevayler, and after reading the interview with Klaus Wuestefeld I get a bad feeling about it, too. It's not like this guy Klaus needs any more publicity -- even (or especially?) bad publicity must feed his ego -- but there are some choice quotes in the interview:

Q. "Who are you?"
A. [ ... ] "That is, I'm an nonconformist. [sic]"
and
Q. "What would you say to those people who own this kind of application [SQL app], and want to migrate to OO using Prevayler?
A. " Initially, they will feel like Neo, floating on that water container, completely atrophic, for living their entire life inside a database bubble."
and
Q. "Have you ever been confined in an asylum?"
A. "In reality, I'm just a prophet."

Wow. Well, if attitude and arrogance equalled credibility, this guy would be even more credible than me.

OK, I lied, I didn't enjoy it that much ;). insom points out that Market Forces wasn't really very good. The memory has dimmed, but I do recall thinking about 50 pages into it that I shouldn't continue. (Rare, for me.) I finished the book anyway. Things perked up a bit towards the end, but I did feel pretty icky about most of the book. I think I was averaging over my memories of the Takeshi Kovacs books & Market Forces when I said I enjoyed it...

Any other British authors you can recommend, insom? We only get the pretty decent ones over here, and (as you can tell) I'm not really that discriminating in my reading ;).

But back to programming...

Patching wwwsearch/ClientForm to do my bidding: clear(). One more old task from December bites the dust.

ClientForm is pretty nifty, in a functionally hacky kind of way that I find typical of code that has to deal with the Web (prolly due to Postel's Law). It'd be nice to be able to do a round-trip, tho, where you can parse a form into an object and then spit the form back out. That gives you a pretty easy way to test the code, too...

I think I need to make this a "law":

a parsing library isn't complete unless the parse function f and the write function g can be chained indefinitely with no loss of information, e.g. g(f(A)) = g(f(g(f(A))))

Or, more broadly,

a marshalling library isn't complete unless A = load(marshal(A))

Not very pithy, but then I'm not a pithy kind of guy, unfortunately.

--titus

Richard Morgan's books

avrietta, I love Richard Morgan's books... Market Forces, the latest (due out in the US sometime soon) is not as good as the Takeshi Kovacs books, but I enjoyed it nonetheless. You might also be interested in Marc Matz's "Nocturne for a Dangerous Man", or at least the free association part of my brain thinks so.

I picked up the Market Forces book in Canada on a trip up to Vancouver. Vancouver is one of my favorite places to visit, because of the fantastic scenery, the great cuisine -- I've eaten at a number of places in the city area, and have always had a great meal -- and the British publishing scene. Everytime I go I come back with about $100 (CAN ;) of books by people like Jon Courtney Grimwood, Iain Banks, and Richard Morgan. I usually can't get these books in the US for at least a year after their publication in England, presumably for publisher-related reasons. The swine. Now that I've added three new Brit/Can fantasy authors to my "buy on sight" list -- R. Scott Bakker, Steve Erikson, and China Mieville -- I'm pretty upset about this situation. Hey, any Brit/Can people want to get involved in a book exchange program?

--titus

(This diary entry courtesy of synchronicity between avrietta's post on Richard Morgan, Ted Leung's post about the Guu restaurant in Vancouver, and my own late-night completion of "The Warrior-Prophet", R. Scott Bakker's latest.)

p.s. There's a pretty darn good Native American restaurant in Vancouver that my then-girlfriend/now-wife and I visited when we were up in the area for ALIFE 8. Anyone know the name? The ambience was fantastic!

A Generic Python Blog Entry

Using decorators to make Python free-threading through bypassing the global interpreter lock doesn't require static typing, so why does Guido like the '@' notation?

Net, the game

Ohayou points out Net, a moderately addictive Flash game. It seems like there are a set of simple heuristics you can use to guarantee a minimum-move solution, though. This is because the map is constructed so that the correct solution is parsimonious. Not sure what to make of Ohayou's "best - 1" solution, although I guess I can imagine one way that might happen.

--titus

"When the going gets weird, the weird turn pro"

Hunter S. Thompson, the original Gonzo Journalist -- 1937 - 2005.

RIP.

I respected his writing immensely & thought he was one of the few people capable of making sense of the crazy politics of the late 20th century. His masterwork is "Fear and Loathing on the Campaign Trail '72", and two other highly recommended books are "Hell's Angels" and "Fear and Loathing in Las Vegas". His collected letters are also very much worth reading.

Inveterate Doonesbury readers may know that "Duke" is modeled on HST.

I was planning on holding a projector party to show "Fear and Loathing in Las Vegas" and "Breakfast with Hunter" next weekend; looks like it'll have to be a memorial party instead. Sigh.

--titus

p.s. The Wikipedia is really on the ball, I have to say!

p.p.s. Wonder if Doonesbury will do a memorial cartoon?

Groupware

"""
Dude. It is possible to get some [sic] laid by creating a really really really really really really useful software product. Take single sign-on for example.
"""
(ref)

Being married, this is less of an incentive for me, but I can see how it could work. ;)

That jwz article is full of good quotes. I also like:

"""

Then the next thing you want is an invitation manager like Evite but that doesn't suck. Evite sucks because they're spammers, and because it's more important to them to put advertising in front of your eyeballs than to be useful, so the mail they send out doesn't actually include any information, in a lame-assed attempt to drive hits to their web site. So what you want next is a free replacement for Evite -- but more to the point, one that doesn't require any kind of server running anywhere.
"""

I'm not smart enough to figure out how to do this, but it does nicely sum up my feelings about Evite.

Reputation systems, certs, etc.

A few days ago I begged for links and comments on certification and reputation systems. I only got one reply, from Steven Rainwater. He mentioned robots.net as a more up-to-date site running mod_virgule. He also said that he thought the user interface for cert systems that he's seen is a large part of the problem, and that users frequently don't seem to understand what the certs are or what they mean.

Here's a handy link to his Web page on mod_virgule.

I also found this O'Reilly Network article called "Annotating Everything", which reports on Marc Smith's work on Aura.

Finally, on the subject of annotating everything -- CleverCS had a cute article on acquiring linguistic/world knowledge from volunteers. Looks interesting, although clearly I'm not smart enuff to understand their prototype app. But maybe you are...

Again, if you have links to effective annotation/reputation/certification/contribution systems, please send them to me! Thanks!

Shotgun Golf

In response to no hockey season, HST introduces Shotgun Golf:

"""

The game consists of one golfer, one shooter and a field judge. The purpose of the game is to shoot your opponent's high-flying golf ball out of the air with a finely-tuned 12-gauge shotgun, thus preventing him (your opponent) from lofting a 9-iron approach shot onto a distant "green" and making a "hole in one." Points are scored by blasting your opponent's shiny new Titleist out of the air and causing his shot to fail miserably. That earns you two points.
"""

(ref)

--titus

55 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!