Thursday Nov 02, 2006

Tagging comes to Roller

Yeserday,'s "Roller" implementation was updated to V3.1. The roller projects page is here.... This has integrated tagging and the Xihna Editor. I had to change the editor in my settings page and this is the first article written using it.

I wonder how to apply classes to the paragraphs, so

dave B$ whence html

was tagged by using the show html source button and inserting the class attribute by hand.

The article is also the first article with roller integrated tagging, so I'm not yet sure about how to ensure that technorati tags and roller tags are the same and the tags are posted to the relevant sites. So we may have two sets of tags on this article.

The technorati tags are


and I have repeated them in the roller entry tag edit box.

I may go back through the blog and tag every article, or at least all those I have already tagged, and I need to work out how to display my blog's tag cloud


Tuesday Jul 25, 2006

My personal planet

I now have an instance of the Planet RSS feed aggregator running on my Qube under Linux 2.2 which is aggregating my Snipsnap and feeds, or would be if I hadn't discovered a misconfiguration that makes it difficult to blog on my snipsnap. (This seems to be a windows firewall problem!)

How do I do this?

Planet requires Python(v2,2 or better). So I downloaded the most recent Python (2.4) from and tried to compile it into an install directory, this failed because my TCL library was too old, and I couldn't replace this with an up to date version; the ActiveState TCL distribution complained about my libc's age and version, and with Linux, that's that. For more on this unfortunate state of affairs, check my personal wiki here.... Fortunately I have a friend (Chris Gerhard) who installed Python 2.x a long time ago on a Qube and I borrowed his installation directory, copied it to my system and ran a make install. The install points at /usr/local/bin which means I can use a ${PATH} variable to control if my new Python V2.x or old Python V1.x is invoked. it claims to be V2.4 so I have no idea how it works, but I then downloaded the Planet code from its home site,, which I'd like to say is very simple but that wouldn't be true for me since I don't read Python, so with a bit of trial and error, this is what to do -

  1. I created a user called planet and ensured that $PATH & $MANPATH were set appropriately. i.e. to invoke my new version of python and then unpacked the archive into the user home directory. A sub-directory to hold the run time logs was created and also a sub-directory to hold files for a specific planet instance. (./Logs & ${HOME}/${PLANETNAME}.
  2. I then copied the fancy templates into ${HOME}/${PLANETNAME}, together with planet.css.
  3. I created a target directory which needs to be in the web server's file system. I chose ${WEBSERVER_ROOT}/planet/${PLANETNAME} and placed the image files into the target directory. The image files include the planet logo, the feed format badges and the face icon(s). (The face icon is exactly that, it allows the logoing of articles in the HTML version of the feed and the authors suggest a picture of the article author). Ensure the planet user has write permissions to this directory
  4. I then created the config file, I used explicit file and file directory names and placed the config file in the planet instance directory i.e. ${HOME}/${PLANETNAME}. The config file references a cache directory which planet uses. Planet uses a cache directory, this needs to be created and referenced in the config.ini. I placed this in the /var file system.
  5. The planet script, needs to be run occasionally. I chose to use cron to do this and wrote a script to ensure that all output was kept and written to a log file. (I also wrote a second script to keep these under control). I run planet every 15 minutes which given there's only one author is frequent enough. The log tidy up I run once/day. These jobs run as user planet, which is`why the planet user needs write privilidges to the target directory.
  6. I amended the index.html.tmpl and the planet.css files to get a colour conformity with the rest of my web space (except this blog) and discovered that the atom logo is missing, so I went and got myself one of those. Most of the amendments I made are to the sidebar. My planet is here..., PlanetCycling is here... which has a vanilla html page. I changed H1 to get my green banner and left justification.

Here's my H1 rule, which is used to implement the page banner -

h1 {
margin-top: 0px;
padding-top: 20px;

background-color: #690;
border: thin dotted #808080;

font-family: "Bitstream Vera Sans", sans-serif; font-weight: normal;
letter-spacing: -2px;
text-transform: lowercase;
text-align: right;
color: white;

Hope this helps!


Monday May 22, 2006

Free Databases get better all the time

Dave Axmark, (see also of the founders of My SQL spoke next after lunch. After he stopped talking about the product he presented some interesting slides on adoption compared with other open source projects, which probably prove the centrality of database to multi-user computing. He repeated the centrality of the "Easy Install" to the design goals of MySQL. He almost said "Release Early, Release Often!", but actually argued for the "containerisation" of fault fixes, and saves them up for infrequent releases, a version of "Do one thing really well!", which he stated was a design philosophy of MySQL.

"Free databases get better all the time!"

Why? Good bug reports are worth more than good code. Adoption leads to quality; all code lines are distributed to all users, the licensor does not/cannot utilise price discrimination and therefore do not create marketing/pricing packages, everyone gets everything. You have access to the ultimate documentation, the source. (I'm not 100% impressed by this argument). Security is not by obscurity. He also repeated messages other Open Source companies articulate that the community reputations developed in Open Source act as great recruitment funnels, so staff are good & known, have a good fit with the culture and a passion for the product. All arguments that apply to software other than databases!


Data Centre Life Cycle

Jennifer Schopf then presented to the workshop on Globus' adoption of open governance, one bullet is of great interest where she talked about a technology solution to managing objects in the grid life cycle. I need to follow up on this.


Open Source Workshop at www2006

I opened the "Open Source Workshop : Platform for Collaboration" using SimonPhipp's slides, "The Zen of Free", the slides I used are here.... Hopefully it went OK!

Open source is in the interests of the original author and second adopters and contributors. It is not about altruism, it requires licence, motivation and agreement around governance. Some open source is more open than others! The software market is evolving, to payment at the point of value. The value is no longer right to use, but chosen from the code, education, documentation, access to updates, defect resolution, warranty, indemnity, installability. The unbundling, through the development of new monetisation strategies by software companies allows transparency of costs for software consumers. Unlocking this value, places a new role on standards in order to change the scale of inter-operability and substitutability to protect the investment of both of the past and the future.


Thursday May 04, 2006

Open Source, Friend or Foe

The Register today, has an article, headlined "US in open source backlash" arguing that the US is a late, slow and distressed adopter of open source compared with Europe and Latin America. It reminded me of some of the speeches and conversations I had last week (See my blog here...) in Ipswich.

I bumped into Simon Deighton of MySQL. When I rudely asked him how they had beaten Postgres despite the latter's technical advantage he argued that success as an OSS vendor requires three things, a community {based around the code}, ease of installation {low barriers to entry/use}, and reliable and good enough functionality. He suggested that MySQL beat Postgres through ease of installation. Having thought hard about the list, I think its a good one. I shall certainly think about it for things I look to out there. Others should too.

Zaheda Bhorat of Google spoke about their commitment to Open Source and while much of their engagement is as consumers, they sponsor the summer of code and leverage the extreme programming policy of letting their developers spend one day/week doing what they want! This freedom {together with other aspects of their culture, such as the signed publication of open source, i.e. recognising authorship} they argue makes them a desirable place to work and helps them recruit the best people.

I'd not heard Simon Phipps speak before and he used some of the slides he's posted on the web. He showed how open source creates value summarised by the pithy quote "it's not about altruism". Both publication and contribution is in the coder's best interests. (I'll return to this another day as it impacts on some thinking I've been doing for the last couple of years about the source of wealth and the nature of software & information). He also offers a definition of open based on readability, however, most opensource is licenced and therefore the "right to use" is constrained. Simon has written a White Paper (see here...) offering a simple classification based on how the licence constrains copyright if users change the code. The third leg of his defintion of open relates to how easy it is to become a committer and/or how the original authors control or share the code's development and future. However possibly the most interesting comment is that we're now in "Software Market 3.0" and both expect to pay for software at the point of value and expect to make transparent payments for services related to software. Critically access to the "committers" so that errors can be fixed but a whole bunch of things come with software such as updates, fixes, documentation (including the known errors list), RFC process, consultancy, education etc. Open source allows consumers to negociate these services and pay a fair price for what they require. Simon referred to it as "unbundling the software value proposition". Clever stuff.

tags: ""

Thursday Apr 27, 2006

Open Source in the Uk

I attended an "Open Source Day" conference at BT's Global R & D centre having arranged for Simon Phipps to speak on behalf of Sun at the event. We took a couple of laptops with Solaris "Nevada" release 35/37 and Simon Cook blogs here..., and now in my sidebar, demonstrated the use of Zones, Net Beans and Glassfish.

It was great to meet so many people; who fell into two camps, those that remember Sun as an open systems company and those that have never known and repeat our competitor propaganda that we're proprietary. It was good to have the opportunity to explain what we do.

Another article posted several days later than occurred and back dated.

tags: ""

Tuesday Jan 03, 2006

Dave's Adventures in Qubeland; shells and boot configuration

Isn't chkconfig a good idea. The first time I came across it, it seemed to be just a status and service requirment function. (See also what I said last time here...). I used it via GNOME and Red Hat's service manager,and Red Hat's documents are here.... While working on my Qube I have been pointed at it again by ddclient (see also my blog here... about DDNS), I've come to the conclusion that its really rather good. Here is Linux About's link and here is the SGI link.

This works with rc start|stop scripts. Actually they encourage a "status" branch, and also a restart branch aka "stop; start". All you need is a configuration line and a description line in the script. Immediately below is the code from ddclient, the first line states the run levels for which this program is required , the start level priority and the stop level priority. (This contrasts with Solaris SMF, which does not state priority as scalar but as relative).

# chkconfig: 2345 65 35
# description: ddclient provides support for updating dynamic DNS services.

Copy the rc file to the /etc/rc.d/init.d directory, make the directory current and then issue the chkconfig -add command and the rc.d links will be created for you. i.e. the first string on the chkconfig: line defines the run levels at which the program will run

I have added the following (final two) lines to the opensshd script to permit chkconfig to work with it.

# Donated code that was put under PD license.
# Stripped PRNGd out of it for the time being.
# Inserted by Dave Levy
# chkconfig: 2345 92 95
# description: This is the secureshell daemon

Running chkconfig --add ${opensshd_script_name} ensure that the links in the rc.d directory structure are created. This is neat; I've forgotten where to put it, and I don't have to muck around with remembering. Frankly I added the last two lines from the above to my rc script using vi, but it would be nice to automate it.

An additional problem however, is that the openssh project distributes the rc script with an incorrect directory for the shell. For Cobalt (and maybe other) Linux(es), you'll need to substiture the first line with #!/bin/sh, the code string below fixes this,

cat ${opensshd_script_name} | sed -e "s?\\#\\!/sbin/sh?\\#\\!/bin/sh?g" \\
    >> ${opensshd_script_name}.${script_ver}

We might want some version control code. The code above assumes that ${opensshd_script_name} and ${script_ver} have been set appropriately. I have considered using ls -t, head -1 and cut to create a version control semantic but the original script file has no version control suffix, and I am expecting to create a Linux variant. So

if [ `unname` -eq 'Linux' ]
# Change the shell interpreter
  cat ${opensshd_script_name} | sed -e "s?\\#\\!/sbin/sh?\\#\\!/bin/sh?g" \\
    >> ${opensshd_script_name}.${script_ver}

This will create a file called However, once you get started, there are so many ways to do this.-

exec_shell=`which sh`

and use ${exec_shell} as the substitution string in the sed command or maybe best of all; this works for all UNIXes without a /sbin/sh, and tightly aligns the implemented execution shell with its existence

if [ ! -x /sbin/sh ]&& [ -x /bin/sh ]
# Change the shell interpreter
  cat ${opensshd_script_name} | sed -e "s?\\#\\!/sbin/sh?\\#\\!/bin/sh?g" \\
    >> ${opensshd_script_name}.${script_ver}

Maybe this is all too complicated, why they've selected /sbin/sh as the execution shell I have no idea, surely all the UNIXes on the port list have a /bin/sh and its guaranteed to be available at run level 1. Perhaps, they should just change the shell interpreter in the rc script source (, and add the chkconfig comment controls at the same time).

I've copied this article to the opensshd developer list, although while I hope they take notice of the shell issue, chkconfig is a Linux thing and hence many other UNIXes will have problems with it. So writing an if Linux test is a bit more complex than I have suggested above and they may feel that this is not a porting issue.





« March 2015