Monday, December 29, 2008

2008 - My blogging year in review

Statistics


23,629 visits (85% increase from 2007)
37,498 pageviews (70% increase from 2007)

44.81% come to my site from a search engine
33.83% are referred traffic (Thanks Planetlotus and Codestore)
21.36% are direct traffic

Top five visiting countries: USA, United Kingdom, Germany, Australia and my home country, Norway.

Top five browser profiles: 53.58% Firefox, 40.38% Internet Exploder, 2.84% Opera, 1.39% Safari, and 1.34% Chrome (impressive, considering it's time on the market).

Top 5 content of 2008

  1. Cross client (Web/Notes) validation using JavaScript

  2. Slick integration between FCKeditor and Lotus Domino

  3. Using embedded view in $$ViewTemplate to control count

  4. Embed multiple standalone forms on a domino form using DHTML

  5. String to char-array in Java

Comment on Content


I would think the most useful thing I blogged about in 2008 would be the "slick" integration between FCKEditor and Lotus Domino. Although FCKEditor is a bloated beast compared to some of the other Rich Text editors out there, it is still a great editor.

I was probably most excited about my speedy templating engine. I still haven't released a demoapp due to laziness, and a couple more reasons.

  1. I have a feeling that the templating engine is a solution to a niche problem. I use it as a way to go beyond some of the restrictions of Views in Domino (being aware of the index of the document you're rendering, what level it is on, etc, and rendering different output based on that information).

  2. Templating engines are becoming less important/need to be rewritten when Domino 8.5 is released, and we have XPages.

  3. There really hasn't been much response to my templating blogposts. It could be because I haven't been able to communicate what benefits there are in templating, or that the problems I've had with Domino/Views aren't common problems.



Missing content


I've still to publish a demoapp of the improved templating engine due to above mentioned reasons. If I get really motivated/someone motivates me, I may release a demoapp in 2009.

The beautiful URLs experiment got dropped once I found out that the technique generates a lot of errors in the domlog. Maybe XPages will make the URLs more flexible (it would be great to be able to map URLs per application/in the NSF).

2009


If everything goes as planned, I'll be at Lotusphere 2009. The hotel is booked, and flight/conference tickets are paid for. I'll depart from Norway January 17. and return January 23. Hopefully I'll arrive in time for BALD!

Blogging-wise, I'm becoming less and less motivated to do experiments. This is mostly because I can't come up with new, exciting (to me) problems to solve. With XPages and Lotusphere 2009, this will hopefully change.

Thursday, December 4, 2008

(Click to) Sort view after search



Expand "More", to the right of the search-field. Select "keep current order", then click Search.

Wednesday, December 3, 2008

Simple way to ensure scheduled agents run on the correct server

This tip is probably only valid for agents that run by document selection.

We recently added clustering to one of our environments. This resulted in some replication conflicts/problems due to agents modifying (new and modified) documents on two servers.

The simplest solution to the problem I could come up with was to add a computed field, originating_server, with value=@ServerName.

Then in the agent:
'Get unprocessed-collection..
Set doc = col.getFirstDocument()
While Not doc Is Nothing
If Join( Evaluate( |(originating_server = @ServerName)|, doc ) ) = 0 Then
'Document modified on another server
Else
'Do processing
End If
Call session.updateProcessedDoc( doc )
Set doc = col.getNextDocument( doc )
Wend

Update: To avoid leading people on a harder track than need be. If your app is located on a single server/single cluster, use Run on -> [Your server] in the Agent Schedule settings.

Or, as DiDu suggests, check if the agent is running on the Administration Server/stop it if not. Set the Administration Server in the ACL-dialogue, under Advanced.

The apps I had problems with are all from the same template, running in two distinct environments (separate NAB/Notes domain).