internals
Oct 19, 2007
Markdown FTW!
This entry is just to test, whether markdown is actually working on this machine. Count me lucky, if you see this bold ;-)
Aug 20, 2006
More Performance tweaking
From the Never-Ending-Story-Department
Well, sorry to bore you with this, but since tomster.org is the only Plone instance experiencing these issues, it is also the only instance I can use to debug them...
To recap: whenever this Plone instance is active, CPU-usage on the host is erratic and constantly jumps between almost zero and 99%. After optimizing some feed performance issues on Friday and then sticking a squid instance in front of the site for good measure and then leaving everything on for a couple of hours I got this:

The first two peaks were due to lengthy compile runs on the system (while tomster.org was off). Then from Tuesday to Wednesday I turned off the static maintenance page and reroutet all tomster.org traffic to the plone instance. Wednesday to Friday I switched it on and off again experimenting with CacheFu settings until I finally installed squid on Friday night. Saturday morning, before heading off to an offline weekend in Stolzenhagen I switched everything off...
My next approach is to deactivate the tomster.org site product and see what happens if I serve the site using the native Plone skin. It's sunday, 10pm, I think I can risk leaving it on for a couple of hours over night... We'll see, what the morning brings...
Jun 01, 2006
Painless Software Schedules with trac
From the Show-and-Tell-Department
Trac has become an indispensable tool in my geek/work life. I’m running several instances for several projects and just can’t imagine working without it anymore (just as I can’t imagine to not work with some sort of version control anymore).
The main reason probably why I’m so happy with trac is that it’s fairly configurable and non-invasive as far as any sort of management- or ticketing software is concerned. Meaning that some of the aforementioned projects are quite different in their nature from each other, yet I was able to adapt trac surprisingly well and (occasionally) surprisingly easily (trac being written in python helps, I guess).
The use case I want to talk about today is that of planning and managing a software project. As I’ve previously blogged, I nowadays tend to divide projects into (at least) two cycles of planning/discussion (billed by the hour) and execution (fixed price, fixed delivery date). Going through these cycles pretty much guarantees that the specification is both finetuned and realistic (because every cycle of specification except the first is based on working prototypes) but of course it doesn’t alleviate one from creating, committing to and being true to a delivery date!
Entering into the third iteration of specification/implementation in a current project we were a bit overwhelmed at first on how to deal with scheduling and managing it. The basic approach was a given: we’d follow Joel Spolsky’s authoritative article on Painless Software Schedules which dictates to break down all tasks into subtasks until each remaining task is estimated at no more than a couple of hours for implementation. Joel warns the reader to go overboard when keeping track of those tasks and suggests a simple excel table.
Well, I simply applied the principle (sub-eight-hour tasks tracked with a simple tool) and applied it to trac. So, having a fairly exhaustive and well-matured set of specifications and screenshots sanctioned by the client we then sat together and created a) for each screenshot one ticket in trac and b) read the specification out loud to each other (don’t laugh - we were surprised how important that step turned out to be!) and creating additional tickets as we went along.
The ‘trick’ was though, that I had added two custom fields to trac: estimated time and actual time (which is easily done by just adding a few trivial lines to trac.ini). As we created each ticket we collectively agreed on an estimated time. After having entered all tickets we were then in the happy position (using a custom sql-based query) to arrive at a precise total of estimated man hours — and based on that, of course, an estimate of cost and finish date.
Meanwhile the project is already well on its way and the simple effect of being able to measure our progress against ‘the plan[tm]’ at any given time is invaluable. Fact is, I’m actually a bit behind with my current milestone (ArchgenXML/Poseidon can be full of surprises, yay!) but instead of just getting that sinking feeling of failure I now can simply schedule an additional day for the project this week (i.e. tomorrow) so that by the beginning of next week I should be back on track (pun intended).
And, of course, one can’t stress enough how incredibly useful trac’s seemless integration of wiki and subversion is - I guess, you just need to use it for a while in order to appreciate it…
And in next week’s episode: writing a trac plugin for managing clients and creating invoices based on tickets — use trac to earn money and lose weight!
Aug 27, 2005
Brave New World
Whoha, this past week went by fast... the reason I haven't been posting anything was that I've been in the process of migrating this site from Plone 2.0.5 to the recently released 2.1rc3. As it turned out, migrating the content wasn't yet quite as straightforward - mainly because I've been using the deprecated CMFPhoto(Album) Product - so once I had pulled that feat off on my local development machine I was reluctant to add any more content on the production host, since it would mean to migrate again.
So why a whole week? Well, the actual migration took only one evening. Big props to the Plone development team - it went really smooth. The trick to convert my CMFPhoto-based content was to download it via WevDAV, delete it in the ZODB, create a regular folder with the same name and re-upload the images via WebDAV - voila!
Of course, my previous skin with all of its evil, dirty hacks to get that tab-based navigation working broke with the new (and noticably cleaner!) implementation of Plone2.1.
And since I'd chose a clean, fresh start over messing further with something that's already messy I decided to give this site (yet) another new look. (The rational justification being, of course, that as a Plone developer I need to get some hands-on experience with the new layout of Plone 2.1...)
After spending an evening with Photoshop and a couple of beers I then used my free time during the past few evenings to implement the design using the new default Plone templates - and from a developer perspective I must say, that Plone has really gotten a great deal cleaner and neater under the hood - I'm really looking forward to making my next site!
One neat new feature of Plone 2.1 you really need to check out: go ahead, start typing something into the search field (located in the upper right corner) and give it a second or two: you'll see the search results pop up live as you type (similar to Mac OS X Tiger's spotlight) - cool, huh?
While there's a) still lots for me to discover in Plone 2.1 and b) lots of cleaning up to be done with the new skin for this site I just didn't want to wait any longer with releasing the upgrade - so here it is, warts and all ;)
Aug 03, 2005
Get noticed!
From the Show-and-Tell-Department
That's the nice thing about being a geek - when I'm tired and/or bored I often don't just space out by watching a movie and consuming recreational drugs - no! I hack something that is a) not too complicated and b) not too useful - and consume recreational drugs... Yeah, I know, it's pathetic that that counts for fun these days, but hey: I'm not complaining!
Tonights fruits of this unglorious behaviour are, tadah! Quills atom feeds with comments.
I created a modified version of my validating version of Quills' atom template that recursively adds any comments of an entry to its <content> element. You can check it out here, if you are so inclined.
This also means, of course, that from now on, if you leave a comment to an entry, I'll be notified because the corresponding entry will show up as modified (at least in NetNewsWire). For you, in turn, it means, you'll be able to catch my response without clicking on the reload button like a woodpecker for hours (and sometimes days)... See? Everybody wins...
Either way, if you already are subscribed to this site (using the atom feed, right?) I urge you once more to change that subscription to the new feed with comments. I promise, I'll leave that one alone now... for a while... Afterall, Atom 1.0 has been introduced ;-)
