The mouldy growths of old forgotten forums

One of my client’s servers I have been working on had started to suffer constant drop outs. What normally loads up in a flash now just .. doesn’t. Whilst static pages loaded fine, albeit slower than usual, most PHP pages seemed to just time out. More specifically, the pages that needed to access the database were failing…

Now, experience points that to some large dodgy query or two (or a lot of them) causing issues. Anyway, to cut to the chase, I find out one particular site’s database has 15 locked tables, with the process list showing queries into phpbb_ tables… hmm

I wish I took a screenshot of the forum before I nuked the directory and the related database tables, which incidently was a rather old PHPBB board, heavily spammed with thousands of pages of topics with all your usual penis enl4rg3ment sexy girl cam wording. The mysql process list query reveals many search indexing queries (thanks to the spambots) – the tables responsible for searches alone are at least a gigabyte in size! No wonder why the server decided to jam up and play dead, whilst spam bots play ping pong guitar with this mouldy growth of a rotten board…

Moral of this story? Prune your garden, or expect large weeds to appear!

(incidently, I’ve seen what looked like a mini-garden forest on someone’s plate of what looks like months-old of baked beans. Such fuzzy greenness. In a student house.)

Green Shuttle

This would be great as a home server box acting as a router/file server, being very economical with power usage. Based on the Intel Atom processor, the Shuttle x27 will idle at 23 watts, and will consume 36 watts when in use, and is reportedly quieter than your bedroom.

No idea on how much the x27 will cost, but I’d be pretty interested in it if it can come with a second ethernet port!

(More info from Smartplanet)

Difficulties of choosing a content management system

How difficult can it be to settle on a system?

I have been evaluating different CMSes for various projects I am working on, and I can tell you, there is no such thing as a perfect CMS! For the uninitiated (and there will be!), a content management system (CMS for short) helps web site operators write and manage articles, pages, blogs and so on, without having to get with the nitty and gritty of coding.

Whilst I could just stick to using WordPress (which I am using for this site) for the new projects, it lacks certain things such as versioning (made a mistake? roll back!), transparent content translation, and proper access control list for finer grained control over what users can access.

Yes, WordPress itself has i18n for templates and the admin, but there is a difference between your application being usable in different languages, and your web pages having transparent translations.

So what am I looking for? This should cover most of the criteria:

  1. Clean URLs – the ability for the CMS to output user (and search engine) friendly URLs – i.e.  mysection/pageitem
  2. Hierarchical pages – being able to group pages together is pretty important for larger sites
  3. Clean/customisable administrative interface – so I can pass it over to the client and let them get on with it with the minimal of fuss withou them being confused nor intimidated.. likely through …
  4. … some kind of ACL / user access control … Give the client edit-only access to the content.
  5. Full template customisation – this requires strong/complete logic-design seperation, and allows the template designer freedom with the code
  6. Template as a file – rather than them being stored in the database;
  7. Per-page-per-template ability – full customisation of each page with its own look and feel
  8. Customisation per-page content variables – i.e. some pages may have two / three blocks of content which would need seperate content entry
  9. Ability to access/create extra database tables/objects – not all content may be in page format
  10. Accessibility of extending the system or integrating other applications with minimal of core-code hacking
  11. Good documentation!

Plus these are very nice to have, but the lack of will not be too much of a deterent, though this depends on the project, and providing it fulfills the other criteria (some of these are as mentioned previously):

  1. Content versioning – many good reasons to have this, the only negative would be extra complexity and space usage, though a good CMS would handle this transparently no?
  2. Content translation – straightforward method of allow the site editor to input content for a page in another language, and for the visitor to access the site in the language of their choice (if available)
  3. Image gallery support – especially for uploading images en-masse, the simple input-browse form element will not do!
  4. PHP-based templating system – no need to learn some obscure tagging system (read more on this at

The target websites are your standard business-brochure-sites with a bit of jangle i.e. galleries, hierarchies of content, possibly even some ecommerce! So what’s out there that caters to this?

WordPress as a CMS

Now, since WP2.5 has been released, it has matured into a nice tool for its intended purpose. The new administrative design is certainly much more pleasing on the eye, as well as being simpler; it is much more intuitive for new users to find what they want now. Granted, I have used WP before to power a client’s site, however that was indeed a simple site, though I wish they had dealt with the image-resizing-after-upload back then!

As I wrote the above lists, I’m thinking, hang on, WP does cover much of them right now! It can output clean URLs, has a nice admin interface, does hierarchy for the pages, has PHP-based templates, and you can set up templates for each page. It has a huge community, with many modules and much support out there.

On the negative side, it does show its blogging roots with the lack of versioning and support for customised objects (via the database typically), and you are trading flexibility with content handling for straightforward simplicity.

So, a good choice if you can live with the limitations, or if you’re happy to hack- or should I say, mold – away at the code. Don’t expect to be too impressed at the procedural code base!

The other CMSes

The CMS scene has changed quite a bit since I last looked around, with new and promising systems coming in, and old going out – seen many *nuke systems being recommended much these days?

With the move towards PHP5, it has gotten more interesting.

Those quickly rejected

  • Joomla – if my last experience with Mambo (back then before it split into Mambo and Joomla) was anything to go by, I would quickly give this a miss. I had nightmares with trying to modify the logic to output tableless HTML, and I suspect it wouldn’t be so easy for the developers to change the inherent application design to seperate the design from the logic. Ever wonder why most Joomla-based sites looks similar? I have read some promising news regarding this though. For now, a quick miss.
  • Drupal – I gave this a go last time, and I tried again this time. I quickly remembered why I gave this a miss: the amount of faffing about you need to do to get it working the way you want it to. Yes, version 6 is indeed better – the admin looks cleaner to work with, and plus the taxonomy system is great for classifying content in whatever way you wish.

    The downfall is the amount of PHP code you must put into the node filters, or whatevernots to customise it away from it’s default drupal behaviour – i.e.  to output content in a particular way depending on the content classification.There is no straightforward content-structure seperation here – you add new content which needs a certain so and so, you will have to modify each filter for each block/template/plugin, and so on.

    I tried to like Drupal. If your particular site is compatible with how Drupal likes to deal with templates and content, good. Otherwise, time and hack sink. Targetted at the community website crowd, I’m sure there are many developers who are happy with how Drupal works, but I’m not one of them. It does have content versioning though.

  • EZpublish – this still feels rather slow and bloated for my needs, and still rather complicated to use, so no. Lack of community seems to deter too.
  • TYPO3 – enterprisey – though is that always a good thing? large server footprint required for this, so no, not good for performance.

Maybe, but…

  • Expression Engine – Looks very promising, especially with the amount of features and support coming from the users, and the unique way it handles content. The show stopper? the license. Whilst I could probably try using the Core edition to try an implementation, that’s yet more time investment to decide if it is suited to the project. Will be worth it one day if a project comes up that can cover this investment though.
  • Textpattern – It’s been raved about for how flexible it is. I looked at it… and drawbacks for me: templates are stored in the database, and it uses its own (XML-based?) templating system. Another is how little activity there seems to be with the developers! There is a new branch called ‘xPattern’ though.
  • Symphony21 – (not to be confused with Symfony, the PHP5-based development framework) This looks very promising, and whilst it does mean understanding XSLT instead of using PHP, it is rather powerful. The admin interface is beautifully minimalistic. A possible downside could be that XML-XSLT transformation may be slow, though it shouldn’t be an issue with caching. Only issue? I tried to sign up to download the release, and no email so far. Oh well, I’ll try again some day. Check out their spiffy videos too.

Currently evaluating

  • MODx – My initial look at this was of ‘this administration looks cluttered!’, but reinstalling it again, it doesn’t seem too bad. There are customisable content types, custom template variables and hierarchical pages and URLs are supported. Reasonably decent ACL. The downsides I’ve found so far is the custom template syntax (it uses [[var/command]] , and that’s just for starters) – yet more learning to do, and the admin interface still being slightly unintuitive. I will be looking at the code and extensions some more, but the community seems to be there.
  • Silverstripe – strong new contender here, it has a nice looking admin (though there are a few niggles and issues when trying to rearrange the site structure), and I’m sure a non-technically-proficient user will get to grips with this once they’ve been kept away from the whole setting up sections. The PHP5 OO coding is a big plus – it looks reasonably straightforward to extend the page types with your own demented needs. Current negative points are: custom template syntax, whilst simple to look at, it is lacking custom loops. It also does not support hierarchical URLs – and this is a popular request. I have been leaning towards this CMS, until I realised the lack of hierarchy. Good news is that the people behind this system are working on it.

Cutting my own CMS

What’s wrong with just rolling your own system? There is considerable time investment involved though. I have already built several CMS apps based on my own framework, and this is something that took place in leaps and bounds from project to project over a period of a couple of years.

They are lacking some of the features I am looking for in other CMS’s – I envy WordPress’s upload system and design, and they are basically beautified database-interfaces, no versioning nor multi-lingual ability, but it has search, and it has paging. It does the job, and a big plus of rolling your own system is that you can tailor it exactly how you want it! I am however reluctant to further work on the PHP4-based app, when I am already working on a PHP5 Zend Framework based system. If a client needs some custom development work, and pays well enough… well, this is always an option.

So back to the GO square…

So, carry on with the evaluations, and juggle with using WordPress…ah why not…

BTW any good image uploaders out there? Gallery outputs are easy to code; the uploading and captioning is not!

Notes on column ratios

I needed an idea of the pixels used for different column ratios, so I’ve taken the liberty of working out the possible layouts needed. I’ve limited these to 4 columns, and I’ve also listed some extra rounding to the nearest ten/five for neatness.

The pixel ratios are based on a width of 900 pixels.

Full ratio list

# Columns Block ratio Pixel ratio Rounded Rounding
2 col 1:1 450:450
3 col 2:1 600:300
1:1:1 300:300:300
4 col 3:1 675:225
2:1:1 450:225:225
5 col 4:1 720:180
3:2 540:360
3:1:1 540:180:180
2:2:1 360:180:180
6 col 5:1 750:150
4:1:1 600:150:150
3:2:1 450:300:150
2:2:1:1 300:300:150:150
7 col 6:1 771:129 770:130 / tens ±1
5:2 643:257 640:260 / tens ±3
5:1:1 642:129:129 640:130:130 / tens ±1-2
4:3 514:386 510:390 / tens ±4-6
4:2:1 514:257:129 510:260:130 / tens ±1-4
4:1:1:1 513:129:129:129 510:130:130:130 / tens ±1-3
3:3:1 386:386:128 385:385:130 / fives ±1-2
3:2:2 386:257:257 390:255:255 / fives ±2-4
3:2:1:1 386:257:129:129 385:255:130:130 / fives ±1-2
8 col 7:1 788:112 790:110 / tens ±2
6:1:1 676:112:112 680:110:110 / tens ±2-4
5:3 562:338 560:340 / tens ±2
5:2:1 563:225:112 560:230:110 / tens, or 565:225:110 / fives
4:3:1 450:338:112 450:340:110 / tens ±2
4:2:1:1 450:226:112:112 450:230:110:110 / tens ±2-4
3:3:2 338:338:224 340:340:220 / tens ±2-4
3:2:2:1 338:225:225:112 340:225:225:110 / fives ±2
9 col 8:1 800:100
7:2 700:200
7:1:1 700:100:100
6:2:1 600:200:100
5:4 500:400
5:3:1 500:300:100
5:2:2 500:200:200
5:2:1:1 500:200:100:100
4:4:1 400:400:100
4:3:2 400:300:200
4:3:1:1 400:300:100:100
4:2:2:1 400:200:200:100
3:3:2:1 300:300:200:100
3:2:2:2 300:200:200:200

List of possible two-column layout ratios

Ordered by #column structure

# Columns Block Ratio Pixel Ratio Roundings
3 2:1 600:300
4 3:1 675:225
5 4:1 720:180
5 3:2 540:360
6 5:1 750:150
7 6:1 771:129 (770:130 / tens ±1)
7 5:2 643:257 (640:260 / tens ±3)
7 4:3 514:386 (510:390 / tens ±4-6)
8 7:1 788:112 (790:110 / tens ±2)
8 5:3 562:338 (560:340 / tens ±2)
9 8:1 800:100
9 7:2 700:200
9 5:4 500:400

Two columns, in order of left column size, with :1 ratios calculated

The normalised value at :1 will give a better idea of how each row lies relative to each other – and as you can see, it is perfectly in order, as expected when ordering by the first column width.

# columns Block ratio Pixel ratio Rounding
9 8:1 800:100
8 7:1 788:112 (790:110 / tens ±2)
7 6:1 771:129 (770:130 / tens ±1)
6 5:1 750:150
5 4:1 720:180
9 7:2 (3.5:1) 700:200
4 3:1 675:225
7 5:2 (2.5:1) 643:257 (640:260 / tens ±3)
3 2:1 600:300
8 5:3 (1.67:1) 562:338 (560:340 / tens ±2)
5 3:2 (1.5:1) 540:360
7 4:3 (1.33:1) 514:386 (510:390 / tens ±4-6)
9 5:4 (1.25:1) 500:400

It’s worth noting that the golden ratio is approximately 1.618:1. This gives it a pixel ratio (using a width of 900) of 556:344. Rounded to the nearest tens, this is 560:340. The 8-column 5:3 ratio is the closest to the golden ratio on the above list.

Gates vs Jobs at All Things D

Here is the interview meet-up between Mossberg, Bill Gates and Steve Jobs, at the All Things D conference:

Note that you might need to let it stream (pause) for a bit before viewing, unless you have some pretty high bandwidth (5mbps+?). You can read a semi-transcript from Engadget.

Despite what the ‘I hate/love MS/Apple’ camps might want you to think, from the onstage presence, those two guys could easily be buddies, in some ways, it is comforting to see familiar faces in the same industry after two decades. None of the predicted catfights happened at all despite some of the aggressive questioning by Mossberg, in fact it was rather heartwarming to see them two seemingly get along as colleagues rather than foes.

Though Microsoft is seen as being a copycat and a non-innovator, they are, as a simple fact, very successful, and not through sheer luck. Love or hate their products, they do have a large pool of talented minds, and our culture and society is in a way, affected indirectly from what they have achieved. Hopefully they are seeing the light, and embracing standards as a consequence of this very public embrace. I would predict however, that things will be even rosier for these two companies, after this public display of affection (as much as can be implied from two CEOs and a gay marriage!).

Finally, as for the Mac vs Windows debate, I usually say to people, don’t criticise the platforms, just use the one you are most comfortable with. Everyone has different needs.