Dec 03

Fulltext index “immediate” does not work with XPages in the web?

I just found that on a Domino 9.01 server the Update.FulltextList queue does not change when I add a document to a NSF via XPages in the web. The fulltext update frequency on that NSF is set to “immediate”, and the result is that the fulltext index is never updated automatically when there were changes to documents via XPages/Web.

After I made some change via Notes the updater runs after some seconds and the ft index is being updated just fine.

I’m aware that I can create a program document with “updall -F <path to nsf>” and schedule it to run every five minutes, but that leads to “index is already in use” messages sometimes when a XPage wants to use the ft index.

I’m puzzled. Is this behaviour intended? Am I the only one in the world who came across this problem? Does nobody else is using fulltext search in XPages?

I added a question to stackoverflow, too. If you have an idea, you can respond there, too.

 Update:

I was wrong. It DOES work. It just looked like it didn’t work, because it takes up to 15 minutes until the ft index gets updated, and the Update.FulltextList statistic seems to lag behind the current situation a lot.

So although the update task on that server has nearly no load at all, “immediate” updates takes up to 15 minutes. UPDATE_FULLTEXT_THREAD=1 and FTG_USE_SYS_MEMORY=1 are set in the notes.ini.

There has to be a way to speed this up. But how?

 


Nov 18

Using Mozilla’s JavaScript PDF Viewer in XPages

I’m doing a lot of mobile stuff these days, but XPages is another big part of my work and this will not change in the foreseeable future. One project I’m working on is a tool to put iNotes mails into an archive system.

While doing that, the user should be able to view attachments a mail might have – including PDFs. View means viewing in the browser, not downloading the file to the computer. But exactly this happens when you open a typical Domino URL like /db.nsf/0/<UNID>/$FILE/filename.pdf.

You can display images inline using the embed tag. That’s very simple. But that does not work for PDFs. So what now?

Lucklily, there are various JavaScript based PDF viewers out there. I tried Mozilla’s PDF.js and found it very easy to integrate:

  • Download the stable version from http://mozilla.github.io/pdf.js/getting_started/#download
  • Extract the archive to some folder. In Designer, open the Navigator view, navigate to the WebContent folder, rightlick and select ‘import’, then import the folders ‘web’ and ‘build’ into the NSF.
  • Now you can call the PDF viewer with an URL like this: http://host/db.nsf/web/viewer.html?Open&file=/db.nsf/0/<UNID>/$FILE/file.pdf

It’s impressive what’s possible with JavaScript, isn’t it?


Nov 07

Features I simply love in my BlackBerry Passport

As you might have read I bought a BlackBerry Passport instead of an iPhone 6 (read my first impressions here).

I used the BlackBerry Passport for some days now, although with WLAN only because it takes some days to exchange my MicroSIM card to a NanoSIM. Nevertheless, I already found some features I started loving:

Word suggestions

While typing the Passport suggests three words that it thinks you are going to write. If one word is what I have in mind, I simply wipe on the keyboard from the bottom to the top roughly where the suggested word is displayed. It’s a very small and fast gesture, and it works very, very well for me.

In fact, there are times where I can write half a sentence just by accepting Passport’s suggestions! For example a german sentence like “Können Sie mir bitte das Dokument senden?” would go like this:

  • Type “Ko” – Passport suggests “Können” – I accept this with the wipe gesture.
  • Now Passport already suggests “wir”, “Sie” and “ja” – I accept “Sie” with a gesture.
  • Now Passport suggests “mir”, “sich” and “uns” – I accept “mir”
  • Next suggestions are “ein”, “bitte”, “sagen” – I accept “bitte”
  • Next suggestions are “jemand”, “eine”, “die” – I don’t accept but type “das Do” after which Passport suggests “Dokument”, “Dokumente” and “Dokumentation” – I accept “Dokument”
  • Finally I type “se” for which Passport suggests “senden”, which I accept.

So I wrote “Können Sie mir bitte das Dokument senden” by actually typing 10 letters. Furthermore, Passport learns from the texts I write. For example it now knows the word “XPage”, so when I type “xp” the word “XPage” is suggested.

The very accurate and intelligent word suggestions combined with the simple gestures to accept them combines to a very good flow when writing. If you’re writing a lot of mails and other texts on your mobile device, check this feature on the Passport. It may be reason enough to buy it.

To get an impression have a look at this video and skip to time index 2:00:

Scrolling using the keyboard

I can scroll through websites, mails etc. just by moving my finger across the keyboard. I do not need to wipe on the screen itself, so I always have a clear view of the content displayed on the screen. It feels very natural.

Backberry Hub and Keyboard Shortcuts

All mails are displayed in the BlackBerry Hub, which works very well for me. Mails from different accounts are color coded, and I have the two actions “put in folder” and “remove” just beside every mail. So deleting a mail is done with just one touch. It’s the fastest way I can think of, on iPhone you need to wipe first and then touch. And yes, just after deleting there is an undo button displayed for some seconds.

Furthermore, there are some keyboard shortcuts I can use. For example to compose a new mail in my Gmail account, I simply press “c” and “r”. Much faster than doing multiple touches on the display!

Put upside down to save power, take it to activate the display

If you don’t want to be disturbed and save power, you just need to put the Passport upside down on the table. As an option you can enable that the display is activated automatically when you take the Passport from the table – I enabled that and it’s very cool. No click on the Home button anymore, just take the device and it’s on.

The red blinking LED

If there is a new mail or notification, a red LED blinks – just like it did since the first BlackBerry device. It’s a very discreet way of letting you know that it’s worth take the device and check it. No sound, no vibration, just a small blink. (If you like, you can enable sounds and vibration for notifications, for sure. You can set sounds and vibration patters per type of notification and per contact – but I don’t need all that, I simply love the red blink).

Being silent in meetings automatically

The Passport knows when I’m in a meeting and enables silent mode automatically during that time. I don’t need to think of “I have to disable my phone” before I go into a meeting, it just happens automatically. Since my clients have my undivided attention in meetings, it’s a perfect feature for me.

No need for rotating the device

Since the display is a square anyway, there is no need to rotate the device. Some may think of this as a disadvantage, I feel it’s more comfortable this way.

Summary

The keyboard is just great, great, great. It is worth the Passport alone. Really. I. love. it.

Beside that, there are a lot of small features that make the BlackBerry Passport a really productive machine. So far, I like it.

 


Nov 07

Herr Richter von notesanwendungen.de über meine Arbeit

“Als Hersteller von Applikationen für IBM Notes und den Domino Server benötigten wir für ein konkretes Projekt Unterstützung im Bereich XPages und haben uns diesbezüglich am Markt umgeschaut. Da es uns wichtig war, jemanden zu finden, der über fundierte Kenntnisse in diesem Bereich verfügte, fiel unsere Entscheidung (neben anderen Partnern) auf Herrn Buß.

Herr Buß implementierte in unserer Helpdesk- und Ticketsystem Easy-Support die Browser Schnittstelle unter Verwendung des Bootstrap-Frameworks. Die Zusammenarbeit funktionierte vorbildlich und Herr Buß brachte neben unseren eigentlichen Vorgaben zahlreiche eigene Ideen in das Projekt ein, sodass dieses innerhalb eines sehr überschaubaren Zeitraumes erfolgreich zum Ziel geführt werden konnte. Bei Problemen und Erweiterungswünschen hatte Herr Buß stets ein offenes Ohr und bemühte sich, unkompliziert und möglichst schnell eine entsprechende Lösung zu präsentieren.

Wir stufen die Zusammenarbeit mit Herrn Buß als sehr hochwertig ein und werden ihn bei Bedarf auch gern für weitere Projekte wieder in Anspruch nehmen.”
– Rene Richter, RI-SE Enterprise GmbH / notesanwendungen.de

Danke, Rene!

Mehr unter Referenzen.


Oct 27

Triff mich am 13. November bei der SNoUG Tagung in Zürich

Ich werde am 13. November bei der SNoUG Tagung über “Native, echte, offline-first mobile Apps für Notes bauen und Daten synchronisieren” sprechen. Hier könnt Ihr lernen, wie die Technologie hinter DominoToGo funktioniert.

Bei der SNoUG gibt es noch viele weitere sehr interessante Sessions! Ich freue mich darauf!

Also, wer in der Gegend ist, sollte da hin gehen!


Oct 27

My BlackBerry Passport arrived – first impressions

Last week Amazon was able to deliver the BlackBerry Passport, so I ordered again and got it on Wednesday.

Since my iPhone 4S uses a micro SIM, I needed to order a nano SIM for the Passport, which I did on Thursday. But that also meant that I didn’t had a SIM for the Passport when I did it’s setup. That lead to one interesting problem, but more about that later.

Form factor

You know, the BlackBerry Passport ist very wide. I have to get used to this form factor, but on the other hand it has some big advantages:

  • No need to rotate the device since the display is a squarish.
  • Space for the keyboard with real keys.

Using the Passport as classic phone by holding it with one hand onto my ear feels weird, but I will do that very seldom anyway. I don’t make calls with a mobile phone frequently, and if so, I will use a headset or the car’s phone system.

Setup

Setting up my accounts was no problem. Some notes:

  • No need to look for an “Exchange” account in order to use with IBM Traveler. The BlackBerry Passport does support IBM Traveler as an account type of it’s own.
  • You can use iCloud contacts and calendar by setting up a CardDAV account using “contacts.icloud.com”. CalDAV should work similar.
  • Do not download the BlackBerry Desktop software. It’s for older BlackBerry only! Download BlackBerry Link instead. I tried BlackBerry Desktop first since I didn’t see any message that it does not support BB 10 devices, and then I didn’t understood why it was not able to work with my Passport…
  • Download BlackBerry Blend, too. See below.

Desktop Software

BlackBerry Link synchronizes music, photos, documents etc. to the device via wire (USB) or network (WLAN). It’s very simple to use and works without problems. If you want to synchronize playlists from iTunes, right click the playlist in BlackBerry Link and select “synchronize to device”. If you just drag and drop the playlist to the device only the songs will by copied to the device, not the playlist itself.

BlackBerry Blend is very innovative and impressive. It allows you to work with your BB 10 device from your desktop or tablet. That includes:

  • Read and write mail / using the BlackBerry Hub.
  • Read and write text messages (SMS).
  • Read and write BBM chat messages (if you have anyone who is using BBM 🙂 )
  • Working with the calendar and contacts.
  • Transferring files with drag & drop.

That’s cool from the desktop, but that’s even more useful from my iPad! For example, if I want to reply to a mail that I got via IBM Notes, but my Notes is busy or the virtual machine where Notes lives does not run I can write the mail from my desktop using the big screen and full size keyboard and send it via the BlackBerry.

Or if I want to copy some files to the BlackBerry, I can simply drag & drop them to the device using Blackberry Blend. No need for iTunes with it’s long synchronization process.

BlackBerry 10 software

I like the BlackBerry 10 software on the device, too. It looks good, if works fast and without problems. There are useful gestures (like for example one gesture to get to the BlackBerry Hub

BlackBerry Hub is the center for all mails and works great. It supports keyboard shortcuts and various very useful features in order to get your mail work done very fast.

The contacts app does synchronize my contacts from iCloud, but it does not show any contact. That bugged my a lot until I learned that the cause is that I did the setup without having a SIM installed. I doubt that this behaviour is intended. Most probably the problem will go away when I have my nano SIM.

Otherwise, the BlackBerry 10 system has a lot of apps and connectivity out of the box, for example to Evernote, Dropbox etc.

Apps

So far I found few useful native BlackBerry 10 apps. Most apps I installed are Android apps that I got from the build in Amazon Appstore. You can install an app via an Android APK file, too.

But why searching for Apps that replace the iOS apps I used I found one thing: very, very many Android apps are just trash.

For example I looked for a simple stock market App where I can watch some stocks. I tried five Android apps, and they were all just advertising platforms with limited functionality, force me to register somewhere in order to monitor my stock market behaviour, or both.

I guess the problem is that I want to pay for an app. The average Android user seems to expect that an app is free, and therefore developers are forced to use bugging ads in order to make some money.

So I learned that when an app is free, I can skip it in the first place. Overall, I feel the general quality of iOS apps is much, much better. So far being forced to use Android apps feels like a huge step backward.

Android App Security makes me feel uncomfortable

One thing that concerns me very much is the Android security system (or the lack of) and how many rights apps are asking for. For example, while I tried stock marked apps, most apps asked me for rights like reading contacts, location, messages etc. For a stock marked app?!? Not very trustworthily, is it?

Furthermore, you cannot give or lock specific rights per app, you can only grant all the rights an app asks for or you cannot use the app at all.

I really wonder why Google thinks that this total lack of security is a good thing. I makes me feel very, very uncomfortable.

Working fast with the keyboard

The hardware keyboard is one very strong argument for the Passport. After one day I was faster writing mails or other texts that with the iPhone after years!

Three lines of hardware keyboard combined with one or more lines of soft keyboard on the display is a very, very good idea and works just perfect.

Furthermore the keyboard is touch enabled, too. So for example you can scroll through a website my swiping over the keyboard and without obscuring the display with your hand. Extremely useful!

Miscellaneous impressions

  • The BlackBerry Passport blinks when it got a new message. I like this subtile way of being notified very much.
  • The battery holds longer than on my iPhone 4S.
  • Streaming music via bluetooth produces more audibility than with the iPhone.
  • It’s a relief to have a bigger display. Reading stuff on the iPhone 4S is very hard compared to the Passport. Since iPhone 6 has a bigger display, too, that’s no general advantage – but to me coming from the 4S, it is.

That’s it so far. The BlackBerry Passport is an excellent communication machine with a lot of advantages and the disadvantage of being forced to use Android apps when there is no appropriate BB 10 app. I will report back after some time.

 


Oct 21

What happened to my BlackBerry Passport which I ordered instead of an iPhone 6?

Some days ago I wrote about ordering a BlackBerry Passport instead of an iPhone 6. But I never wrote anything about the device yet…

The reason is simple: I didn’t got it. The store where I ordered was not able to deliver, and neither is Amazon or various local stores.

So I canceled my order and I’m waiting until Amazon is able to deliver the Passport again. I’m not in a hurry at all, I still have my iPhone 4S which works just fine.


Oct 21

First steps and issues with Titanium, DominoToGo and Blackberry 10

Today I started with Blackberry 10 development using Appcelerator Titanium and DominoToGo. Setup of the development environment was easy since there is a good guide in the Titanium documentation.

There are a few things to watch out for, though:

  • Make sure you follow the guide to create a debug token. That’s NOT the BlackBerry ID token created in the BlackBerry Deployment Setup Wizard in the Momentics IDE! See Momentics IDE – Properties – BlackBerry – Signing to create a debug token. It will create a *.bar file which you can use in Titanium’s Studio properties.
  • To access the file system of the BlackBerry simulator, use a ftp client and log into the IP that is displayed in the lower left corner of the simulator. Use “devuser” as user and passwort.
  • In BlackBerry’s file system the app data is stored in /accounts/1000/appdata/<app id>.
  • Do not switch off development mode in the simulator! If you ever switched that off, you need to enter a device password in order to enable development mode again. And if you did that, you cannot use the standard run command of Titanium Studio, since it doesn’t use the password you may have set in the run configuration.
    There is a workaround for that, too, using CLI in terminal. But it’s annoying, so better don’t touch the development mode switch in the first place.

The most recent version of DominoToGo has issues on BlackBerry 10 because Appcelerator simply didn’t implemented some features of the Titanium SDK for BlackBerry yet. One missing functionality is a file stream, which DominoToGo uses when data downloaded from Domino is huge (multiple megabytes). So far I’m using in-memory processing instead of file streams as a workaround.

The SQLite database implementation is missing the ‘rowsAffected’ property which I’m using in some database operations. I have to find a workaround for that, too.

I’m sure there will be more issues I will come across in the next weeks. But the good news is that a lot of important functionality is working just fine on BlackBerry 10, such as HTTP connectivity, reading and writing files and most database operations.

 


Oct 09

Just ordered a Blackberry Passport instead of iPhone 6

So far I’ve used an iPhone 4S and I’m still happy with it. Nevertheless, time nags on the 4S and it’s not really capable of running iOS 8 (which I will only start to use when Mac OS Yosemite is available, by the way).

So I prepared myself to spend a lot of money on a new iPhone sometimes in the next weeks.

But yesterday I saw a Blackberry Passport while working at a customer’s office. The form factor is unusual, but not bad – not bad at all. The more I played with it, the more I liked it. And the final nail to iPhone’s coffin was that the customer needs me to build a Blackberry 10 app with Appcelerator and DominoToGo – which means I need a device to test the app anyway 🙂

So I just ordered the Blackberry Passport. And I’m really looking forward to use it. Especially because

  • It has a hardware keyboard. I never get really used to the onscreen keyboard of the iPhone where I still make type errors every single time I’m writing something.
  • Using the keyboard as touchpad as well seems to work really good.
  • It has a hardware keyboard.
  • The Blackberry Hub seems to be really useful.
  • I like the square screen size because I don’t need to turn the device in order to read longer texts.
  • Did I say that it has a hardware keyboard?
  • The Blackberry 10.3 software looks really good.

 


Sep 30

Use flowchart.js and raphael.js in XPages – problem and solution

I came across a weird problem today. The task was to use flowchart.js in an XPage to create a flowchart like this:

screenie

So I downloaded flowchart.js, added it to the WebContent folder of the NSF and included it to the XPage using this code:


 

Since flowchart.js is using raphael.js I did the same with Raphaël’s library. Pretty straigtforward, isn’t it?

Unfortunately, it simply didn’t work. Chrome’s console simply told me something about “Raphael is not defined”. So there was some problem with loading the raphael.js, obviously.

First I thought about a charset problem. raphael.js is using some special chars, but the file I downloaded was coded in UTF-8, so it should be fine. On the other hand, when opening raphael.js from the NSF with an URL like “http://host/path/db.nsf/rapahel.js”, Chrome told me it’s in a Windows codepage and there were lots of weird characters.

So I did various tests to investigate further, but to no end. Wether I saved the raphael.js file in Mac or Windows, stored it in WebContent or as file resource or in Domino’s HTML folder, the problem remained.

The customer for which I’m working at the moment found something about the “Raphael is not defined” message at stackoverflow, and the cure should be to use AMD module loading. Due to the charset weirdness I didn’t thought about that proposal very much and continued with the charset investigation… but in the end, I was wrong.

Indeed, raphael.js seems to have problems when loaded after other JavaScript libraries. The following code was suggested at the raphael site:

define([ "path/to/raphael" ], function( Raphael ) {
  console.log( Raphael );
});

Unfortunately, that does not work in XPages wit Dojo. But this combination of traditional loading and Dojo’s AMD loader works for me:


	 
		
		
		 
	

and in the body of the XPage:


After the require the Raphael object exists just fine and can be used by flowchart.js.

I admit that I don’t fully understand what’s going on, since I didn’t used Dojo’s AMD loading much yet. Perhaps someone can shed some more light on this topic 🙂