This is a reminder to myself. It’s about failure, which is a paradoxically fantastic thing if you have the right attitude. Let me describe the attitude I am working to gain.
- If you fail three times in a week, make a goal of trying (a possibly failing) five times the next week. Failure is the right thing as long as you’re trying sincerely and the rate of failures is increasing, or you’re failing less each time.
- You won’t succeed at really complex things until you’ve failed a lot first, so your best bet is to fail as fast as possible. Enjoy the journey!
- Mere repetition isn’t sufficient. After each failure, try something significantly different.
- Report and graph the failures. Talk about them. Things that get reported tend to improve.
- Goals need to be simple, but some goals are inherently complex. You can simplify a goal by maximizing the rate of failing to achieve the goal.
- If rapid iterations of failure are not possible due to circumstances outside your control, fail in parallel! Try many things at once. Don’t forget to report on all of the failures.
- When you finally do succeed, continue to try other things. In other words, keep failing!
This is particularly applicable to small business. Discouragement resulting from failures can spread like a disease. However, the “maximize the failure rate” attitude can make you immune to that kind of discouragement.
Wrong attitude: “We failed. Maybe we should give up.”
Right attitude: “We failed again? Ye-haw, that means success is closer! Now how can we fail faster (or less expensively) next time?”
Packt Publishing asked me to review their new book, Practical Plone 3: A Beginner’s Guide to Building Powerful Websites. The book impressed me, but not in the way I expected at first.
As I read the instructions in chapter two about how to install Plone, I considered the experience my Dad would have gone through if he had this book when we were setting up Plone to run his company’s web site. My Dad is a power user, but not a programmer or systems administrator, so with this book, he probably would have installed Plone himself on a spare Windows computer. This book would have provided him enough direction to set up a lot of the functionality he needed, without my help. He would have immediately started publishing pages with Plone’s many features.
However, I imagine that a short time later, something would go seriously wrong. The computer’s IP address would change because the DHCP lease expired, the database would lose some transactions due to some misbehaving application, or a mischevious virus would rename files with a “py” extension to “rb”. All of those problems are outside Plone’s control, so this book does not try to address them.
Plone beginners like my Dad are not prepared to handle the problems that occur when a computer is used as a web server. In that light, I wondered if it really is possible to run Plone (or any content management system) without deep technical experience. I thought for a moment that this book is not for beginners after all.
Even after that logic, I decided I still want very much to give my Dad a copy of this book next time we set up a Plone web site. He will read it to find out what the latest version of Plone can do. He will install it on his own computer for his own education, but I will set up the production web site on a server.
The first twelve chapters (250 pages) are intended for Plone users. Beginners will enjoy all of those chapters, I think. As I read them, I even picked up a few things I haven’t learned, like how to use content rules.
I think beginners might struggle the most with chapter nine, which explains how to control workflow. Controlling workflow in Plone is not as easy as other Plone functions, because Plone falls back to the less polished Zope Management Interface for workflow design. Matt Bowen handled the difficult topic gracefully.
The rest of the book (almost 300 pages) is for developers, not power users. The contrast is sharp. While the first half of the book tells the reader what buttons to push, the second half tells the reader how to modify their Buildout configuration and what to type in a terminal session.
Each chapter is written by a different author. I noticed two interesting effects of multiple authorship. First, each author is enthusiastic about the particular topic, so even LDAP (which I generally find quite boring) gets a chapter of quality treatment. Second, there is more redundancy than you would find in most technical books, but redundancy is probably good in this case.
I do have one quibble with the book’s organization. When the technology behind Plone was invented, CSS was still a baby and browsers did not support it well. Back then, changing a site’s appearance meant changing nested tables in HTML, so the developers of Zope (including myself) invented ways to manage that task. That is how the portal_skins tool came about. The theming chapters explain how to use the latest version of that technology.
Today, we can expect all of our customers to use browsers that support CSS, so the chapters on theming should start by explaining how to customize the web site’s CSS. Developers will make much faster progress that way than if they have to learn the many theming-related abstractions Plone has today.
In conclusion, Practical Plone 3 is more than just a beginner’s book. I plan to use this book as a communication tool with my Plone customers. The book is a menu telling my customers who are beginners to Plone what we can set up together without a lot of work. I will also use it to help developers come up to speed on Plone.
Tags: content management system, Plone, Practical Plone 3, Review, Zope
This release works with unpatched versions of ZODB 3.9! A big thank-you to Jim Fulton for including support for RelStorage in ZODB. This release also continues to support patched versions of ZODB 3.7 and 3.8.
I have been doing a lot of testing, and I have found MySQL 5.1.34 to be a lot more stable than earlier releases of MySQL 5.1, so I am now declaring MySQL 5.1.34 and above supportable, meaning that if you ask questions about it, I am no longer going to request that you revert to MySQL 5.0.
Finally, I recently expanded my private RelStorage Buildbot to include a Windows XP slave. After solving a couple of minor test glitches, the test results are now all consistently green on 4 platforms:
- Debian Etch, 32 bit (Python 2.4.4, MySQL 5.0.32, PostgreSQL 8.1.17, Oracle 10g XE)
- Debian Lenny, 32 bit (Python 2.5.2, MySQL 5.0.51a, PostgreSQL 8.3.7, Oracle 10g XE)
- Debian Lenny, 64 bit (same as above but no Oracle)
- Windows XP, 32 bit (Python 2.6.2, MySQL 5.1.34, PostgreSQL 8.3.7)
I’m thinking about adding another Linux slave that runs MySQL 5.1 and Python 2.6.
Anyway, enjoy the release!
P.S. You may be wondering why I released 1.2.0b2 instead of 1.2.0b1. A little slip ruined the web page on PyPI, so I fixed the slip and skipped to the next version number.
Tags: MySQL, Python, RelStorage, Windows, ZODB
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.
Tags: art
I have been working on a project based on repoze.bfg. BFG is a system for building web software and it has deep Zope roots.
(Incidentally, the BFG 9000 weapon in Doom and Quake is quite fun. For stress relief, it’s better to play against the computer rather than people on the Internet because the computer has no lag.)
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.
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.
Tags: email, email alias, email extension, mailing list, Postfix
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.
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.