Archive

Archive for November, 2008

Is the price of flexibility, complexity?

November 29th, 2008

Since I’m now paying for hosting, I’m starting to install some of the open source systems to borrow good practice in my own work. Usually when I have an idea for a new feature, I work out my approach and then investigate similar systems to see how they’ve approached the same problem but I rarely install the software to see how they work in practice. Media Temple, my hosting company provide a handy one-click install for some useful software such as WordPress and Drupal, an open source ‘community’ platform. So along with Drupal, I’ve installed Joomla, an open source CMS.

Working within a University, the skill-base of staff varies dramatically. I’ve always taken the view that anything we develop should be no more complex than using an email form and should replicate approaches staff will develop through their day to day use of the computer. So creating resources on StudyNet is basically as comples as writing an email. There are advanced tools for staff such as online resource libraries, TinyMCE & RealObjects Java based editor, podcasting, group work, blogging, media tools etc. But at the base level, if you can create a folder and post an email, you can use StudyNet.

I often get complaints from ‘power’ users who want extra functionality and I often wonder if I’m doing the right thing constraining the system by designing for the lower-end of our skill base but playing with Joomla and Drupal, they have more flexibility over things such as menu designs, but to be honest, they’re still not designed for my ‘average’ user.

Sometimes it’s good to have some reassurances

Domino ,

A nasty little change in Domino 8

November 28th, 2008

We recently upgraded one of our development servers to Domino 8 and ran into problem with subforms. It appears that you can no longer include a subform twice on the same page. So for example if you’ve included ‘next’ buttons using a the same subform at the top and bottom of a discussion page, the page will no longer display.

I guess this has been a bug within Domino that I know I’m not the only person to exploit, but I really can’t understand why Lotus would decide to fix this bug. Why fix something that actually improved functionality? Surely they should have been building on this ‘bug’ maybe parametrising it, turning it into a useful new feature instead of removing it.

This is going to cause me a significant amount of work when I upgrade our main system to V8.

Domino ,

Best and worst practices

November 28th, 2008

Most of know what we should be doing, but how many of do so – Best and Worst Practices, Lotusphere 2008

Lotusphere

Playstation Home (Beta)

November 28th, 2008

Sony have released the beta version of their ‘Home’ service and just as I was about to go to bed, an email’s arrived inviting me to join the beta. If you’re not aware, ‘Home‘ is a virtual online environment where you can meet other Playstation users.

I have to admit, I’m not the biggest fan of open ‘second life’ type environments. Virtual simulations have many applications and I’ve created them myself, but open environments where the real world is recreated in the virtual, I’ve yet to be convinced have any use.

A department at work has built a very big impressive ‘virtual campus’ within ‘Second Life’ and there are a small number of evangelists who believe it’s the ‘future of teaching’. I think at present most academic staff have yet to see any benefits of it (i.e. why do you have to travel in a 3D world to a room to then carry out the same interactions you could do using existing technologies such using products such as Sametime?). But it will be interesting to see how well ‘Home’ works and whether it will help kick start some real consumer development in these technologies and maybe the next generation of students will expect to interact with their tutors in 3D.

Second Life
University of Hertfordshire’s impressive Second Life Campus

Learning Technology

Mock-up tool

November 28th, 2008

If you are and have a habit of producing very quick and rough mock-ups with a pen an a piece of paper (or maybe occasionally using an Table PC), then you might be interested in Balsamiq Mockups. This is an Adobe Air application that allows you to paste together quick mockups by dragging and dropping pre-defined templates onto a work area, such as a browser window, menu bar, image holder, etc.

It’s a really simple idea and works really well

Source: Interface Matters

Web Design ,

The Kills – London Astoria

November 27th, 2008

Testing Flickr integration with WordPress.

Photos from a recent the Kills gig at the Astoria

The hand that ruined the picture  The Kills The Kills  The Kills The Kills

 

Gigs

WordPress not Domino

November 27th, 2008

I’ve been heavily using Domino for development for 8 years and though I’ve had many issues with it (anything relating to Java and the Web on Solaris), I’ve found it really easy to build complex web applications.

Although I have a number of Domino servers available to me, work regs mean that I’m not allowed to use them for a personal web presence. So despite having developed blogging facilities that are used within the intranet,  I need to find another blogging solution. After a brief play with some of the alternatives I’ve plumped for good old WordPress hosted on a Mediatemple Grid Service.

For $20 per month (I got it for $17 – after searching for a discount code), I get what appears so far (after two hours of playing) a really comprehensive service, offering php, mysql, and gives me something that I’ve been itching to play with, Rails.

I find it disappointing that not only isn’t there any real options for cheap personal Domino hosting, but that IBM don’t appear to be making any effort at pushing Domino to new developers by making ‘personal’ Domino server available for free. How is Domino meant to compete against the likes of php and developing languages such as Rails?

Domino

Document locking

November 27th, 2008

StudyNet provides students with access to an online website for everyone of their modules. Each module provides staff with tools to create resources, podcasts, video, discussions, etc. One feature that’s steadily developed is our module ‘wiki’ facility. 

This year there’s been a significant number of staff using the facility with large cohorts and this has led to a problem when students edit a page at the same time requiring staff to manually merge the contributions.

There appeared to be two solutions. To provide better tools to merge contributions across a number of documents or to lock pages when somebody edited the document. Locking appeared to be the best and easiest solution. It was how to achieve this in a cluster.

I’d been considering implementing my own locking system but after a web search it was clear that the ‘document locking’ facility introduced with Domino 6 that I’d discounted because it ‘doesn’t work on the web’, did via WQO and WQS agents and it was just Lotus’ usual flaky documentation that was wrong.

For those who have been as slow as me, here’s a brief rundown of some of the issues I’ve dug up and issues I’ve faced with our implementation

The first thing to be aware is that the locking option is switched off by default. To enable it you need to assign a master lock server, by assigning an administration server to your database. (Advanced option in the ACL). When a document is edited, the lock is recorded on this server. You will also need to make sure that the ‘enforce a consistent ACL across replicas’ is also set. Once this is done you can enable locking via the database properties.

Locking is actually pretty simple to implement. There’s three main methods, document.lock, document.unlock and document.lockhaolders. When you set a lock, one of two types can be set, permanent and semi-permeant lock. In a web cluster, semi-permeant locks are set if the admin server is unavailable. I found some references to bugs where the semi-permeant locks aren’t released and become permeant locks, so in our case I’ve avoided them. If our admin server is down, the error is caught and locking is disabled. 

Once a document is locked, no one else can save the document until the lock is released. Unfortunately, these are permanent locks. You have to clear the lock otherwise no one, including managers, can save the document. It seems that many people use a scheduled agent to free the locks overnight. For us, this isn’t an appropriate solutions.

StudyNet provides a website (domino database) for every module of every course that run at the University, approximately 4000 each year. We also keep live 5 years worth of websites so that students can refer back to their previous modules – totalling over 20,000 active websites. It’s just not practical to run overnight jobs checking all the documents on all these databases for locks. So I’ve implemented a self-clearing lock system.

When a student edits the page, a lock is set via a web query open agent. The page is locked for 30 minutes after which the lock will be released by the next student viewing the page (also through a WQO agent). A javascript autosave timeout is also set on the edit page for 25 minutes. The save executes a web query save agent clearing the lock. Any other student viewing the page will see a message warning them that the page is unavailable for editing until a particular time. After 30 minutes is a student hasn’t saved or has navigated away the lock will be cleared. Though it won’t be fool proof, it should significantly reduce the number of conflicts.

The locking method adds two fields to the edited document on the master lock server. These are ‘$Writers‘ array and datetime ‘$WritersDate’

Although it’s possible to return the $Writers array using the document.lockholders function, there isn’t a method to return the $writesdate option. This appears to be an obvious oversight but a extremely annoying one because these fields are not replicated out through the cluster – why would they, the whole point of assigning a single server to handle locks is to get round the replication delay. Since my code is designed to free up locks after 30 minutes, I’m checking the ACL.adminstrationserver property and then (if necessary) opening the version of the document being viewed on the other server to check the lock date. 

When a document is locked you cannot delete the document (or copy?). In our case we have agents that handle delete wiki documents, so it was just a case of checking for a lock before deleting.

Another important point is that the lock option is not inherited from templates. So in our case, we got 20,000 websites that do not have the admin or locking option set. So you’ll need to update them using an agent or do what we’ve done and include in your lock code a check to see if the current database’s ‘IsDocumentLockingEnabled’.

Domino ,

Welcome

November 27th, 2008

Welcome to my new blog. Through this blog I’m going to document the many trials and tribulations of being a Domino-based web developer. 

I work for the Learning Technology Development Unit at the University of Hertfordshire developing their on-line Domino based learning environment, StudyNet. 

With so many good blogs on this subject already available, why another one? Well, to be honest, I’ve been all too happy to consume the expertise provided by other bloggers so I thought it was about time to I add my thoughts and hopefully they’ll be of help to new developers getting started with Domino

General , ,