Save the Art!

My sister, Maria, is an excellent artist.  Her paintings make you sit up and think about how people feel.  Her art captures life better than a photograph.

But what does she do when a piece doesn’t fit her high quality standards?  Not long ago, she finished a fine painting of a cowboy.  Everyone liked it, but Maria said the eyes were too big.  Ok, maybe the eyes were a bit larger than normal, but does that justify what she did next?

A little bit of the history of an important artist is gone for good.


This past week was spring break.  That’s what my kids’ school called it, anyway.  I’m not sure I would call it that.

Since my kids had the week off, I made a deal with them: if they spent at least 4 hours playing outside every day Monday through Thursday, on Friday I would buy The World of Goo, a very entertaining computer puzzle game.  They have been playing the demo for a while, so they were motivated!

On Monday, they played outside for 3 hours and went to the library for an hour.  We decided going to the library counts.  So far so good.

On Tuesday, it rained and rained.  We decided that working inside also counts.  They did an amazing job on the house.  With hardly a fuss, they cleaned the entire family room, their bedrooms, the living room, and some of the kitchen.  Good work, kids!

On Wednesday, a temporal anomaly threw our city into December.  About 6 inches of snow piled up.  They played in their snow boots for a while, but it was quite cold, so they did a little more work inside.

By this time, it was apparent that the weather had no respect for our plans.  We expected the weather to clear up on Friday, so we bought WoG for Thursday, intending to get them to play outside again Friday.  So my kids had a Gooathon day.  I had other work to do, but I heard them laugh and get frustrated a lot.  They had a good time.

On Friday, as you might expect, the weather was still uncooperative, so my kids solved some more Gooey puzzles.  My wife and I don’t want them to play computer games all the time, but we think occasional gaming is very good for learning to read and think logically.  There is a mind-bogglingly large assortment of puzzle games available for Linux these days!

Thus ended winter break this year.

How I Manage Mailing List Subscriptions

I participate in a lot of mailing lists, including Python and Zope related lists, local interest groups, various open source projects, and even the high traffic Linux Kernel Mailing List.  Mailing list participation is important for working with people.  I’m subscribed to about 50 lists right now.  So many subscriptions would be practically impossible to manage with an ordinary email setup, because they would dilute my inbox.  I have tried many solutions and have finally settled on a method that makes me happy.

Continue reading How I Manage Mailing List Subscriptions

Ubuntu 9.04 Versus Gentoo

Ubuntu 9.04 is now in beta and I’m tempted to upgrade. I want to help test it. I even started “update-manager-kde -d”, but it warned me that since the new version is not yet fully tested, it could make my computer unstable, release a new strain of computer virus, kill babies, and reinstate Bush Junior as president. So I canceled. Am I chicken?

That situation makes me awfully uncomfortable.  It happens with every binary Linux distribution I have tried.  It never occurs in Gentoo, however, where all upgrades are incremental. Breakage happens, but when it does, I only have to fix or revert a relatively small part, not the whole system. It appears that such incremental upgrades are only manageable with a source-based distribution, but of course a source-based distribution requires more technical skills.

I think I’ll stick with Ubuntu right now because its support for KDE 4 is better than what Gentoo currently offers.  From what I can tell, Gentoo got in a big fight over how to package KDE 4, causing them to fall behind in stabilizing KDE 4.  That fight seems to be over now, so perhaps Gentoo will catch up and lead again. I will seriously consider a switch when Gentoo marks the latest version of KDE 4 as stable.

How to Install Plone with RelStorage and MySQL

These step by step instructions describe how to install Plone on Ubuntu with RelStorage connected to MySQL as the main database. Familiarity with Linux systems administration is expected. Update: These instructions were revised in August 2009 for Plone 3.2.3 and RelStorage 1.2.0.

Continue reading How to Install Plone with RelStorage and MySQL

The Irony of Google AdSense

I set up AdSense on my blog to learn about serving ads and maybe earn some pennies. According to the terms of service, I am not allowed to click any of the ads. That rule certainly makes sense from Google’s business perspective, yet I find that of all the ads on the whole web, the ads Google puts on my pages are the most relevant to me. They are among the few that I want to click, but I can’t! Gah.

RelStorage for Sessions?

I’ve been working on a document explaining how to install Plone with RelStorage, starting from a basic Linux server.  As always, the basic procedure is simple, but there are all sorts of interesting little complications.  One detail that bugged me today is the need for a shared session database.

Session storage is a little different from normal storage because keeping a history of session state becomes expensive quickly.  For session storage, I think we still want all the goodness of ZODB transactions, conflict detection, distributed caching, and so on, but in this case, the ability to undo is pointless and the need to pack is a liability.

The database schema I’ve been using in RelStorage is a mismatch for this need.  A history-free storage should not have a “transaction” table, there should be no need for MD5 sums and prev_tid pointers, and the compound primary keys consisting of oid and tid should become simple primary keys indexed by oid.  A history-free storage still needs garbage collection, but not packing.

I’m thinking that the main RelStorage class will need few changes to support history-free storages, while the database adapter class will change so much that it would be best to just create a different adapter.  I like that.  It won’t be possible to switch history on and off without an export and import operation, but that seems reasonable.  To put a positive spin on the new adapters, I think I’ll call the new adapters “packless”, like the old BerkeleyDB storage.

I think that’s a good plan.  While the purpose of the packless adapters is initially session storage, they will certainly be also usable for other databases, including the main database.  I expect them to be slightly simpler and faster than the history-preserving adapters we have now.

I encourage anyone interested to leave a comment, even if all you wish to say is “I want that!” 🙂

Why Keep a Journal?

I need to keep a journal because as I change over time, my method of comprehending everything also changes, and some memories no longer fit my new system of comprehension.

If my memory were a computer database, then I would be adding rows to giant tables continuously, while changing the schema every time I find a better way of understanding things.  Over time, some of those rows would become so far out of sync with the schema that no query would find them.  Some of those practically forgotten rows would remain important, though.  Keeping a journal is like copying vital data to an external store with a more stable schema.  (The English language is more stable than my system of comprehension.)

I wonder if I ought to express that without a computer analogy.  My kids need to learn it, but they certainly aren’t versed in all this jargon.