Usability - Productivity - Business - The web - Singapore & Twins

By Date: November 2010

Update all views in a database - web style

It is a bad idea to check the property "hide from Notes client" on a view. If you do this you burden your HTTP task with refreshing that view rather than leaving that to the indexer task (which would run in its own thread on its own processor(s). The better way to hide views from Notes clients (for convenience) is to start their name with (. The Performance impact can be quite positive once you fix them (and bad if you don't). Until you get the approval and find the time to fix the view visibility a method is needed to quickly update all database views from a web perspective. In my toolbox there is a little script that does exactly that. The nice aspect of it: it lives in a utility database and takes the database to work on as a parameter:
http://mywebserver/senseitoolbox.nsf/webupdateviews?openAgent&database=apps/hr/webleave.nsf The agent renders a page with a link to each view in the database (I don't check for the "hide from web" property) and an Ajax call that opens ever view once through the URL and records completion. Completion doesn't imply success. I'm not monitoring for return codes or so. The agent is a good interim helper until the view visibility to the indexing task has been restored.
As usual YMMV

Read more

Posted by on 23 November 2010 | Comments (1) | categories: Show-N-Tell Thursday

Firefox takes a page from the Notes UI

For what it is worth: The iPhone made the tiled desktop, pioneered by Notes more than a decade ago, popular. Microsoft's ribbon was predated by a Lotus design. Now it's Firefox turn to adopt a Lotus UI element. The latest Firefox 4.0 beta release sports a menu button:
Firefox 4.0 menu button
That button looks very much like the Start button featured in Lotus Notes, Lotus Symphony, Lotus Expeditor and Websphere Portal
Notes Start button

Posted by on 23 November 2010 | Comments (8) | categories: IBM Notes Lotus Notes

Universal Studios Singapore

On Friday we took the plunge and visited the Universal Studios Singapore theme park. It was a day before Singapore's school holidays would start, so we were expecting limited waiting times.
Anthony and Ernest in the Universal Studios Singapore
The park has 7 areas with various attractions and rides we did savour to some extend. Here's the verdict:
  1. Holiwood: We had burgers and fries at Mel's drive in and enjoyed the display of nicely renovated vintage cars including the police car above. We watched the "Monster Rock" show in the Pantages Hollywood Theatre. I liked it a lot and it was (besides loud) a nice R&R pot puree. However I had to explain to the gentlemen what the different monsters were and we added some of them onto the "watch-movie" list.
  2. New York: The Lights! Camera! Action! Steven Spielberg show was quite impressive. Universal loves collapsing stuff and pyrotechnic. We skipped the Stage 28 show about movie making.
  3. Sci-Fi City: The only open ride was the Accelerator, which the gentlemen rated "quite lame". Luckily we didn't have to queue more than 5 minutes when we reached there. In 2011 Sci-Fi City will add a Transformers attraction and hopefully open the Battlestar Galactica double roller coaster "Cylons/Humans" which looked impressive.
  4. Ancient Egypt: features 2 rides, the "Trasure Hunters" which we skipped (rated "too kiddie style" by the gentlemen) and "Revenge of the Mummy". On our first go we queued about 30 minutes for a nice scary ride with good effects. Towards evening (about 7:30pm during extended hours) Anthony and I had a second go with merely 10 minutes wait while in the afternoon waiting times would have been around 90-100 min. We had lunch at the Oasis Cafe with some Falaffel and Kebab. Food was OK.
  5. Lost world (best to enjoy in the early morning): We queued a full hour for the "Jurassic Park Rapids Adventure" ride (after checking the ride twice when the waiting times were 90 and 120 min respectively). Nice splashy going with good animated Dinos along the way. Of course a theme park ride about a theme park ride has its own little irony. We skipped the Canopy Flyer when the gentlemen budged at another 90 minutes boring wait. They rather had their go at the "Amber Rock Climb" probing their skills in rock climbing. Singapore style we had to sign a form first to remove injury liability from the operators. The highlight in the Lost World however was the WaterWorld show based on the Kostner movie. Good special effects, amazing stunts and actors driven to make it an experience brought fun to the session. You will get wet.
  6. Far Far Away: The Enchanted Airways roller coaster features the Dragon 380 wide body cabins and is a nice mid-level ride. Good to enjoy with very short waiting times when we were there and again and again. The "Shrek-4D Adventure" is a funny Shrek based short 3D movie with a set of extra experiences (hence the 4th D). Good innocent fun. We skipped Donkey LIVE.
  7. Madagascar: The main attraction wasn't open, we skipped kiddie rides, food or merchandise.
I liked that every ride did display waiting time information. Probably we will come back once all rides are open. If you go there. Head for the "Lost world" first in the morning - it's the remotest part of the park - to beat the crowd. On Fridays and Saturdays the park has extended opening hours until 10pm. When you start in the morning, depending on your stamina, that would all you need to cover the rides. Of course if you want to sample all the foods, you want to come back another day, but for the food aficionado there are better places in Singapore after all.

Posted by on 21 November 2010 | Comments (0) | categories: After hours

Nokia BH905i, Apple gear and final verdict

I conducted the next series of test with the Nokia BH-905i with rather surprising results. First I paired the headset with SWMBO's iMac running Mac OS/X 10.6.4. The Mac recognized both profiles and out-of-the-box played iTunes in admirable quality. When it came to making a Skype call the headset failed. I could switch to the Bluetooth phone profile, so the sound settings would see the microphone, but not a sound. So iMac and microphone don't play together at all.
Next step (after deleting the pairing, not to run foul of competing Bluetooth connections): testing with the iPhone 3GS (with the latest iOS version). Pairing went smoothly and the headset was available as output option in iTunes. The play/pause button works, however: not a sound. Seems that the issue that had been sorted out for the BH905 and iPhone still plagues the 905i. So use with Apple gear stays problematic. As mentioned before the "outgoing" noise cancellation was non-existent, so I ran a comparison with a Jawbone. The Jawbone reduces a blasting radio or a rumbling train to a barly audible background whisper for the person you call, while the Nokia lets your counterpart hear every detail what it filters out for you. On the other hand: the jawbone loosely sitting on our cheek does nothing to dampen your ambient noise.

The verdict: The Nokia BH-905i is an excellent headset when you want to treat ambient noise for crystal clear music indulgence. If you are a frequent traveller it is a must-have. The use with a PC or Mac via Buetooth is problematic unless you only want to listen to music, for VoIP use you better get an AD-77 adapter. This is not the fault of the headset, but the way Bluetooth is implemented on Linux or Mac (sorry no Windows here). Listening to teleconferences (a popular sport in IBM) is a pleasure, regardless of where you are. On the other hand talking on the phone (or VoIP) using the BH-905i is severely limited by the lack of outgoing noise cancellation. While you can enjoy a conversation crystal clear without audible distractions you still transmit all that noise. Now if the BH-905i could be upgraded with the Jawbone noise cancellation technology you would have the perfect communication headset. Lacking that the BH-905i qualifies as " universally connecting outstanding music headset". Here it has to compete with Bose, Sennheiser, Sony and others, which it definitely beats on connectivity and recharge options. It also allow to use it for a call when ambient conditions allow (what the others don't). I wonder if a Pilot headset would fit the bill (it blows any budget anyway)? Anyway, there's room for a BH-906

Posted by on 16 November 2010 | Comments (2) | categories: After hours Nokia Travel

Fun with LotusLive, cURL and Lotus Activities

Lets have some fun in six easy steps:
  1. Download and install cURL (for Ubuntu users:sudo apt-get install curl)
  2. Create one text file activity.xml with this content:
    <?xml version="1.0" encoding="utf-8"?>
    <entry xmlns="http://www.w3.org/2005/Atom">
    <category scheme="http://www.ibm.com/xmlns/prod/sn/type" term="activity" label="Activity"/>
    <title type="text">One activity to go </title>
    <content type="html">
    This is an &lt;b &gt;activity &lt;/b &gt; that has been automatically uploaded from the cURL command line
  3. Create another text file todo.xml with this content:
    <?xml version="1.0" encoding="utf-8"?>
    <entry xmlns="http://www.w3.org/2005/Atom" xmlns:snx="http://www.ibm.com/xmlns/prod/sn">
    <category scheme="http://www.ibm.com/xmlns/prod/sn/type" term="todo"/>
    <category term="Connection3.0"/>
    <category term="POT"/>
    <category term="NotesSensei"/>
    <title type="text">Some things that need to be done </title>
    <content type="html">
        This is an &lt;action &gt; in an activity that has been automatically uploaded from the cURL command line. You can happily ignore it.             
    <snx:assignedto>put_your_eMail_here@and_your_domain.com </snx:assignedto>
  4. Open a command prompt and type:
    curl https://apps.lotuslive.com/activities/service/atom2/activities -X POST --user [username:password] --post301 --post302 --basic -k -L -H 'Content-type: application/atom+xml' --data @activity.xml -o result.xml
  5. Edit the result.xml and look for the href attribute of the <app:collection> element. Copy that URL.
  6. In your command prompt now type:
    curl [The_URL_You_Just_Copied] -X POST --user [username:password] --post301 --post302 --basic -k -L -H 'Content-type: application/atom+xml' --data @todo.xml
Congratulations! Just just created your first LotusLive Activity via the REST API. Works with Lotus Greenhouse too. cURL is also available for PHP developers.

Posted by on 10 November 2010 | Comments (1) | categories: IBM IBM - Lotus WebDevelopment

Oracle broke the Java forums #fail (and how to use SAX to create XML Documents in Java)

Oracle seems to be over zealous to remove SUN from the face of the IT landscape. SUN used to have a very comprehensive Java forum with tons of Java related knowledge. Now all links, regardless how deep, to the SUN forum are redirected to the Oracle forum Homepage. Yes all of them. So every cross reference linking to forum entries broke. I once contributed a code snipped how to create XML documents using SAX (since most people think SAX is a read-only API, which is not the case) and that link now points to the homepage. Must be some vendetta against a certain ex SUN employee who stated in 1998 " Any URL that has ever been exposed to the Internet should live forever" and even has the W3C on his side. On the other hand:" Never ascribe to malice that which is adequately explained by incompetence". I digged around in the Oracle forum and manage to locate my post, but obviously it was to hard for the database champion to maintain authorship, so the entry is now attributed to: SunForumsGuest. No wonder a lot of people are, let's say "not fully happy" with Oracle.

Anyway lesson learned: contributions I make somewhere need mirroring here, so here we go:

A common mis-perception about SAX: " SAX is a parser, not a generator." As a fact of the matter SAX does just fine generating your XML document, especially when it gets rather large. I've seen countless implementations of String based construction of XML that all at some point in time break since there is one extra " in an attribute or a new line or a double byte character etc. Using SAX all of these issues are taken care of. Your responsibility is to get the tag nesting right, the rest handled by SAX including processing instructions, text content and attributes. Here's a piece of sample code (nota bene: it has a stylesheet instruction, so when you open the resulting file in a browser you get an error since the sheet won't be there):
PrintWriter pw = new PrintWriter (out ) ; //out comes from outside and is an OutputStream
StreamResult streamResult = new StreamResult (pw ) ;
// Factory pattern at work
SAXTransformerFactory tf = ( SAXTransformerFactory ) TransformerFactory. newInstance ( ) ;
// SAX2.0 ContentHandler that provides the append point and access to serializing options
TransformerHandler hd = tf. newTransformerHandler ( ) ;
Transformer serializer = hd. getTransformer ( ) ;
serializer. setOutputProperty ( OutputKeys. ENCODING, "UTF-8" ) ; // Suitable for all languages
serializer. setOutputProperty ( OutputKeys. DOCTYPE_SYSTEM, "myschema.xsd" ) ; //Replace this with something usefull
serializer. setOutputProperty ( OutputKeys. DOCTYPE_SYSTEM, "http://schema.notessensei.com/myschema/1.0" ) ;
serializer. setOutputProperty ( OutputKeys. METHOD, "xml" ) ;
serializer. setOutputProperty ( OutputKeys. INDENT, "yes" ) ; // So it looks pretty in VI
hd. setResult (streamResult ) ;
// This creates the empty document
hd. startDocument ( ) ;

//Get a processing instruction
hd. processingInstruction ( "xml-stylesheet", "type=\"text/xsl\" href=\"mystyle.xsl\"" ) ; // That file needs to exist, or comment out this line

//This creates attributes that go inside the element, all encoding is taken care of
AttributesImpl atts = new AttributesImpl ( ) ;
atts. addAttribute ( "", "", "someattribute", "CDATA", "test" ) ;
atts. addAttribute ( "", "", "moreattributes", "CDATA", "test2" ) ;

// This creates the element with the previously defined attributes
hd. startElement ( "", "", "MyTag", atts ) ;

// Now we write out some text, but it could be another tag too
// Make sure there can be only ONE root tag
String curTitle = "Something inside a tag" ;
hd. characters (curTitle. toCharArray ( ), 0, curTitle. length ( ) ) ;

// End the top element
hd. endElement ( "", "", "MyTag" ) ;

// Closing of the document,
hd. endDocument ( ) ;
The bonus tip from the original discussion: to keep track of your tag nesting you use a Stack. Whenever you open a element you push the closing tag onto a stack which you then can pop empty, so your nesting will at least be XML compliant.

Posted by on 10 November 2010 | Comments (0) | categories: Software

BH-905i - the good, the bad and the ugly

Round two of testing: I paired the Nokia BH-905i with my Blackberry Bold 9700. Then I hopped onto the MRT to visit a close by mall, especially the game arcade with very loud and noisy games going on.
  • The good: I didn't had to pick any profiles and stuff, it just worked. The accept call button on the right side of the Nokia headset works as advertised, as does the play and volume buttons. Calls are clear and music from the Blackberry player is processed in high quality. The noise in the train was pleasantly quiet only sounds in the human spectrum, like the PA announcements and unfortunately the squeaking of the breaks, were clearly audible. Switching active noise canceling on/off makes a huge audible difference. Especially inside the arcade it was almost quiet, a pleasant walk through a place that usually gives me a headache in less than 30 seconds
  • The bad: Noise cancellation seems to be for the headset user only, not for the person you talk to on the call. Either I haven't worked that out or we have a case of massive #fail. I did a few conference calls today with the kids playing FPS in the back. I didn't hear a thing, but my partners on the other end complained about the background noise. SWMBO called me in the arcade. I heard her crystal clear and she couldn't understand a word of me. In disbelieve we switched phones. She went into the arcade to enjoy the active noise cancellation. When I called her I could hear the full spectrum of the surrounding sound inferno - and barely her voice. I hope that is either a setting mistake (I studied the manual but didn't find anything) or something that can be fixed with a firmware update. I'm actually surprised about this failure. I'll run a test against the Jawbone to see if that one is better in preventing sending noise.
  • The ugly: You can hear yourself walking. With headset on and noise cancellation on every step becomes a pat-pat-pat. Quite irritating. Anyway walking with a headset that mostly covers your ears in my climate here isn't something I plan to do. The other interesting finding: you can actually hear the noise cancellation. Anthony (junior #1) pointed it out: there is a very faint, very deep hum. Seems the sound and anti-sound are a tiny tipsy bit phase-shifted creating a very long and low wave.
That's for now. More testing with iPhone, iPod and iMac coming up, as well as the calling death match with the Jarbone.
Stay tuned

P.S.: The adapter cable I missed yesterday is called AD-77 adapter and just not part of the package (I don't know if that is the package in general or just my demo set)

Posted by on 09 November 2010 | Comments (4) | categories: After hours Nokia Travel

Red Hat Forum and attention to UI details

Redhat is conducting a Forum in Singapore, Kuala Lumpur and Bangkok. I found their invitation in my eMail today. While the signup form contained the usual lead-generating questions it showed the hand of a careful Ui designer:
Good Selection putting most likely countries first
For the forum one is most likely to attend from one of the 10 countries listed and stated first, releaving users to scroll through a list of places you never will see unless you click on a "Select country" dropdown. I particularily liked the clear labeling as "common choices" and "other countries". Mincing for words one could opt for "popular choices" and "all countries", but that would be the sprinkle on the icing on the cake.
Go and sign up. See you in Singapore Dec 3.

Posted by on 09 November 2010 | Comments (1) | categories: Software

BH-905i arrived today - first impressions

WOMWorld sent me a Nokia BH-905i headset for testing and review after I bitched about my difficulties to get a unit in Singapore. THe unit arrived today in an unspectacular DHS courier envelope. Inside I found the padded leather (not genuine one) of the size of 1.5 DVD boxes (in case you remember what a DVD is).The headset is cleverly draped around the pouch that contains an assortment of cables, adapters and the charger. My unit came from the UK, so it has the bulky UK style charger which we also use in Singapore. With quite an unique mechanism for the ground pin it was pleasantly small packed. There is a 3.5mm extension cable, a 2.5mm to 3.5mm male/male extension cable - the 2.5mm end plugs into the BH-905i. the 4 adapters are: 3.5mm to 2.5mm 4 pin (= Stereo + Mic), Airline adapter, 3.5mm to 6.3mm 3 pin Headset only and 3.5mm to 3pin 3.5mm. What's missing is a splitter, so one could use a cable connection to a PC which has separate plugs for headsets and microphones. But there is Bluetooth. So I put the headset into pair mode and clicked on the Bluetooth icon on my Ubuntu 10.10 workstation. Pairing was fast and easy. I fired up Banshee to listen to some tunes. It sounded horrible. A quick check revealed, that in the sound preferences the BH-905i provides 2 profiles: "HSP/ HFP Telephony duplex" and "A2DP High Fidelity Playback". HSP/HFP was preselected. Once switched to A2DP the sound became crystal clear, much better than the (cable bound) entry level Philips and Sennheiser headsets I used before. A2DP doesn't provide the microphone profile, so I need to check how things work out when testing Skype, Google Voice or Sametime Voice. I'm curious if that's a limitation of the Ubuntu sound menu or the BH905i Bluetooth capabilities.
A first test of the noise cancelling showed interesting results. The ambient noise (cars from the street, TV from the other room etc.) disappeared 100%. I then had my sons sitting left and right of me playing some obscure FPS game with a lot of gun sounds, dramatic music and Anthony and Ernest screaming updates to each other. Anything not like a human voice was cancelled out and the screaming part reduced to normal conversation strength. So human voice won't get suppressed. I haven't tested it the behaviour changes once I use the microphone for recording (like VoiP for voice memos). So far very promising. The headset is light enough to be worn for a longer period of time. It doesn't cover the ears fully which makes it bearable at 30C room temperature (I don't have Aircon in my study). So far my first impressions. My test plans:
  • Pair with Blackberry 9700 Bold II
  • Cable connection to Grandstream GXV3140
  • Cable connection to 2nd generation iPod mini
  • Bluetooth to SWMBO iPhone 3 on i/OS 4.1
  • Bluetooth to SWMBO iMac
  • Test with VoiP
  • Test with Voice Recorder
  • Music playback
  • Use in office
  • Use in train
  • Use in taxi
  • Use at the beach promenade
  • If time permits: use in plane
Stay tuned

Posted by on 08 November 2010 | Comments (2) | categories: After hours Nokia Travel

Shortcut for launching Lotus Notes

I'm a fulltime Ubuntu user. And I love keyboards (probably due to the fact that my first computer was a IBM S/36). So I use shortcuts a lot. Recently I installed Ubuntu Tweak. Besides a lot of other kewl stuff it allows me to define arbitrary commands and assign them to keyboard shortcuts. So I assigned Ctrl+Alt+n to Lotus Notes, so it is just one key press away (Use this command line: opt/ibm/lotus/notes/framework/../notes). On the same note (pun intended): I'm using Cardapio for my menu. It has (like Spotlight in OS/X or Windows7) a Super - Space shortcut that opens the menu and focus on the search box. You can type and on key press results from the menu, a local search and a web search are presented to choose. It even lists software you can install from the Ubuntu Software centre.

Posted by on 01 November 2010 | Comments (0) | categories: Linux Show-N-Tell Thursday