Increase Sociability changes

I’ve just downloaded the WordPress Increase Sociability plugin, and it didn’t do quite exactly what I wanted it to. So I changed it a bit, I just added links into the text it includes at the top, and removed the inline styles and replaced them with a class.

There are a few other changes it could do with, such as being able to add more than just StumbleUpon, Digg and one other site. Anyway, I’m linking to the modified source file and if there is interest I may clean up the plugin somewhat.

Jabbot: A personal microblogging system

There has been much talk on a variety of blogs demanding a replacement for Twitter. Now having only used Twitter in a very limited and conceited testing way I’m not qualified to speak about all of the features and what the can’t live without features of it are.

I’ve been working on more of a friends-only level of microblogging solution. It operates by monitoring people’s Jabber status and logging them to a viewable webpage, these status lists are then followable with RSS. This project is called Jabbot and there is a test bot currently running, just add test@wakeless.net to your Jabber IM list and then check the webpage at http://dev.wakeless.net/jabbot/ Any status updates you make will show up there. There is also RSS feeds on a per-user basis.

Now this doesn’t seem like anything overly special, just a way of logging people’s status. However this get’s interesting when you log the bot in as yourself, all those people that you already chat with can now update their status and have them sent through to your follow page.

There is obviously a few problems with this as a replacement for Twitter, running a script/bot on your machine isn’t really as turnkey as just adding your account to twitter, however the infrastructure is already in place, every Google Talk user and possibly in the future every Facebook chat user (assuming they become federated which I’m not actually convinced about) will all be “followable”.

This has been banged together while I’ve been learning Python so it might not be the prettiest code. The source code is available, it’s released under GPL. Jabbot-0.1

Silverstripe: as a platform

At Xebidy we use Silverstripe almost exclusively as a platform to build upon. Not just Bootstrap (our custom extensions) but also the Sapphire framework to build the more advanced parts of the website we build. The Sapphire framework is at the most basic level an MVC framework for PHP5 with a number of additions to service the Silverstripe CMS. I’m writing here a breakdown of what I see as strengths and weaknesses of the platform. Before you read on please take these 2 points into consideration, I really do like working with it and I have a lot of time invested into the platform and this is my opinion and not that of my employer.

I would love to hear everyone’s opinion on this so drop me an email or leave a comment.

  1. Abstraction of layers

    Over the past few releases there has been talk on the Silverstripe forums, their trac and the mailing list of trying to move the CMS code away from the core of the MVC framework so normal non-CMS based applications don’t need to rely on it. While it is a little frustrating currently over the past couple of releases this has progressively gotten better and I believe that this can be achieved in the near future. The specific example of this is ContentController which I would suggest should be refactored out into a SiteTree_Controller and ContentController.

  2. Extensions/Decorators

    This is probably what I love the most about this platform and I think the guys over at Silverstripe should be applauded for this. They have built an awesome framework wherein each Class can be extended quite simply. The beauty of this is in it’s simplicity for the developer and it really allows for extensible applications to be built. It definitely has a few bugs in it which can be quite tricky to track down but generally it behaves exactly how you expect it to. My biggest suggestion for Silverstripe is to push this as a strength of the platform because it really is very cool and extremely functional.

  3. Template Engine

    Most people that are new to the the platform are opposed to Silverstripe having it’s own templating system. It definitely has it’s pros and cons. Firstly it is not a fully blown parser, relying on a number of regexes to parse it’s syntax. I run into this problem quite regularly and end up nesting control blocks or creating methods on objects that in my opinion should be handled in the presentation layer. The second problem I have with it is it’s lack of a context stack – this means you can’t access something in the previous nested control block or even access a variable (not really variables) in the “global” context.

    Don’t get me wrong, it’s not all bad and I don’t believe that there is anything in this that can’t be fixed (I started writing a new parser for it quite some time ago). On the flip-side the way the templating engine matches the Model of the application is a really elegant solution and I don’t believe the template engine should be removed. A cool but definitely complex improvement for this would be to make it more pluggable and allow extensions to expand the language.

  4. Documentation

    Generally the documentation on the project is very good. I think it could be improved with some more articles about the lower levels of the framework and have them highlighted on the blog rather than the rather boring marketing that is currently posted on it. Similarly the PHPDoc documentation on the framework is generally awesome and really helps with the code completion within Eclipse but this can definitely be taken from good to excellent by having protected and public variables types being documented. (As an aside I would love a way to document all the magic variables that are created by Framworks such as this.)

  5. Communication

    The Silverstripe project is coming from a different position than many open source projects in that it was released as open source and that company continues to drive the majority of the development. This is great and I definitely appreciate it. Many of the decisions made about the framework and it’s directions are made behind closed doors. This prevents any buy in from external developers. A great example of this was recently a decision was clearly made by the Silverstripe guys and then presented to the dev list for ‘opinions’. This work has been going on quietly on 2 branches with nary a word on how the progress is going. Similarly the 2.2.2 release has recently been completed and in the lead-up there was very little communication regarding the plans and goals of the release.

Control.Modal.Dialog updates

So we have finally launched the Oz Experience website. Amongst many other things this is the first website we have launched which contains the travel planner originally built by the talented Ondra Medek. Anyway the point is we have written a whole heap of software for this launch and the easiest to package up and send out to the rest of the world is the latest updates to Control.Modal.Dialog.js. I have simplified the API a whole heap and generally made it do a lot more with a whole heap less code.

Control.Modal.Dialog – a lightweight javascript modal dialog library

Recently we realised that we were in need of a modal form/dialog. Sure there is a javascript “dialog” function however it is completely useless in IE7 and what’s more it’s not really ideal in other browsers. Most of our work is based on Prototype/Scriptaculous and we have used Control.Modal in other projects so I went about writing a small layer that can sit on top of it to provide an easy to use modal dialog. Control.Modal.Dialog was born.

At the same time, I’ve spent about 3 minutes setting up Xebidy’s Code Library, we are planning on releasing more and more of the code we are writing internally to the world under Open Source licenses and hopefully Bootstrap will be one of those. Sadly, other things tend to get in the road, like clients.

Update 4/06/2008: We have released a new much better version of this. It still lives at the same place.