Really loved this Ignite Talk with a very provocative title – Go the f*ck home! (link to video on YouTube) as it confirms something I’m a strong believer in – you do not get more done just because you spend more time at the office. The talk also points to an interesting study on this (SCHEDULED OVERTIME AND LABOR PRODUCTIVITY: QUANTITATIVE ANALYSIS).
AWS Marketplace
Just got word today that Amazon Web Services (AWS) is now offering a Marketplace (aws.amazon.com/marketplace) where ready made Amazon Machine Instaces (AMI’s) can be easily purchased. Besides featuring instances from many top software vendors it also features AMI’s for OpenSource solutions such as Tomcat, JBoss, MongoDb etc. There are currently 7 IBM AMI’s available.
- IBM DB2 Workgroup Edition
- IBM WebSphere Application Server
- IBM DB2 Express Edition
- IBM Tivoli Monitoring on Linux – 50 Virtual Cores
- IBM Domino Enterprise Server
- IBM Web Content Manager Standard Edition
- IBM Mashup Center
Tag til brugergruppe i Norge
Kan du ikke deltage i Dannotes i starten af maj og/eller trænger du til at se nye mennesker eller få nye impulser så tag til den norske Notes brugergruppe LSBG d. 23. og 24. maj i Larvik. Jeg var deroppe sidste år og det er et virkelig lækkert sted helt ud til vandet relativt tæt på vandet. Larvik nås nemt med Norwegian fra Kastrup (kender ikke mulighederne fra Billund). Agendaen kan ses på hjemmesiden hvor der også er tilmelding. Kan klart anbefales.
Amazon gives Google a run for its money with CloudSearch
I’m a big proponent of Amazon Web Services (AWS) so it came as no surprise when Amazon today announced its latest addition to the AWS family – AWS CloudSearch.
“Amazon CloudSearch adds search capabilities for your website or application without the administrative burdens of operating and scaling a search platform. Amazon CloudSearch seamlessly scales as the amount of searchable data increases or as the query rate changes, and developers can change search parameters, fine tune search relevance and apply new settings at any time without having to upload the data again.”
Amazon CloudSearch is further described on their blog in an entry aptly named “Amazon CloudSearch – Start Searching in One Hour for Less Than $100 / Month“. Using CloudSearch is as easy as 1-2-3 and everything is managed through the AWS Management Console:
- Create and configure a Search Domain. This is a data container and a related set of services. It exists within a particular Availability Zone of a single AWS Region (initially US East).
- Upload your documents. Documents can be uploaded as JSON or XML that conforms to our Search Document Format (SDF). Uploaded documents will typically be searchable within seconds. You can, if you’d like, send data over an HTTPS connection to protect it while it is transit.
- Perform searches.
Nice.
Authenticating a web service request
In my current project I needed to place an authenticated web services request from Lotus Domino to an Oracle SOA endpoint. Turned out to be extremely easy using the Lotus Domino web services consumer feature as I just used the setCredentials(String, String) method which then adds the necessary Authorization header to the HTTP call. Below is an example.
MyEchoServiceLocator l = new MyEchoServiceLocator();
MyEcho u = l.getDomino();
u.setCredentials("Domino Admin", "password");
String result = u.echo("HelloWorld");
System.out.println("Result: " + result);
Round up of trip to Tokyo and AusLUG
I’m back in the office after two weeks away for going to Tokyo, AusLUG in Melbourne, Australia, and then Easter vacation. While the latter is of no particular interest to anyone (I think) my trip might be. Let us get the most obvious thing out of the way first – we did a lot of flying. Besides having been in Antwerp, Belgium, on the Thursday/Friday for BLUG before going on this trip we went Copenhagen-Singapore-Tokyo-Singapore-Melbourne-Singapore-Frankfurt-Copenhagen in 8 days! The trip earned us about 27000 air miles and with the circurmference of the Earth being 24900 miles we actually went around the World and then some.
View Full Size Travel Map at Travellerspoint
The trip started out in Tokyo where we had 2 days (Monday and Tuesday) of meetings with potential OnTime partners and with IBM. Great meetings and very good to meet local partners and learn about Japanese culture and language. Nothing is simple in Japan let alone the calendar. In Japan they actually have four (4) calendars that they use those being the international (the one we use in most of the World), the Imperial (based on the Japanese emperors), the Buddhist calendar and the 6 day Japanese calendar. The latter is not used in business but it does mean that a calendar product will need to support all if not most of them. At least at the UI layer. Besides business we had some time although not a lot for a look at Tokyo and to sample the local cuisine. While we unfortunately didn’t get to try Kobe steak (top of the list for next time) we did have local sushi (a must) and sampled sashimi with raw chicken and raw liver. Many thanks to the IBM’ers we met and to Atsushi Sato (@acchan777) for taking us out to dinner on the Monday.
On Wednesday we flew on to Melbourne via Singapore and landed early Thursday morning (7am). After a cab ride (through what can best be characterized as chaotic traffic) and a quick shower we were on scene at AusLUG to catch the last 30 minutes of the keynote. Not bad planning.
The event was excellent both from a technical, business and personal perspective. It’s always good to go to interesting sessions, learn new stuff and meet up with the friends I got at the inaugural AusLUG in Sydney. I spoke at two sessions – one on Thursday at 2pm and one on Friday morning at 8.30am where I slept through 3 alarms only to wake at the calendar reminder I set for 30 minutes before I should present! Let me just say that I didn’t shower before the the session but I made it (we stayed only 5-10 minutes away on foot) so all was good. Lesson learned? Set multiple timers – and go easy (easier) on the drinks the night before. 🙂 The night before was a very fun one as we went drinking after the AusLUG dinner. Great night out.
After the conference on Friday night we went to see “footy” at the MCG as part of the speaker/sponsor thank-you-event together with approx. 79000 other nice people. And boy was it excellent fun! Lets just say that if I’m invited to go see footy in the future I’ll go anytime! Great event and a great conclusion to our trip.
Saturday we went for a stroll about the city, chilled at the apartment, watched some footy on the telly and had some bieeerh (think that’s how the native spell beer) before we headed to the airport for our 1am fligth back home. What a trip – many memories and many good oppportunities to persue in the Japanese market.
The XPages Portable Command Guide and why it’s important
I was among the people who was fortunate enough be be sent a review copy of the new “XPages Portable Command Guide” book that has just been published. While this review has been a long time in the making I wanted to get it out there never the less. You should first read the review Tim Tripcony wrote (“XPages Portable Command Guide is a book every Domino administrator should read“) as it is spot on and very good and accurate. The thing about XPages that many developers and administrators forget – or simply doesn’t know – is that it is running on a completely rewritten HTTP stack on the Domino server. It was even refactored recently to be based on OSGi technology to make it even better and more easily extensible. The XPages runtime is more like a traditional J2EE server (like Websphere Application Server) than a traditional Domino server. This means that the runtime is very configurable but out of the box it is configured to be a jack of all trades. You can change it though and you probably should if you run business critical applications of it.
For me the most important part of the book is the part about the xsp.properties file that is the main configuration file for the XPages runtime. The file is central to how an XPages application function and it’s crucial that it is configured and tuned correctly for the needs of the application. While having to do this kind of configuration by hand is prone to errors and that IBM really should provide better tooling for it doesn’t change its central role for XPages. It is therefore very important that you as a developer or administrator know how to edit it. For the developer you need to be able to configure the application so it functions at peak efficiency and as an administrator you need to know enough to throttle your developers to not configuration the applications to as to note starve one another for resources.
The important part about XPages is that where many of the settings for traditional Domino web applications are server settings many, if not all, of the xsp.properties settings can be thought as of deployment settings as well as server settings. As Tim writes – “There are plenty of settings that can be defined in this file that only the developer should care about, but many of them you don’t want the developer to decide. Trust me, if you leave it to me, I’m typically going to max out the RAM consumption in an attempt to provide lightning fast response times. But it’s your server. You should be overriding me on that decision… as long as it’s still in keeping with the end users’ business needs, of course.”
So if you do any work with XPages I therefore highly recommend you get a copy of this book. Get it as an e-book though as it’s a reference and IMHO a paper copy doesn’t make any sense. Most of the API calls you can also find good documentation on online but the xsp.properties part is lacking online and it’s critical to know about and understand if you want to get the maximum from the XPages runtime.
Instapaper – found the feed for Liked
I’m a giant fan of Instapaper and use it all the time to track stuff to read and actually read it when offline in a plane or whenever I have a few minutes. It’s great. I like to share articles I like using twitter but I just found out there is a RSS feed to liked articles as well. My feed for liked articles is also available so feel free to track it if you’re interested in what I like on Java, JavaScript, XPages or appdev in general. Feel free to follow the feed if you like.
The Java native2ascii tool (also important for you XPages geeks)
To prepare for our upcoming trip to Tokyo I’ve been working on a Japanese translation of our OnTime Group Calendar 2011 client for Notes based on Java plugins. The internationalization engine (i18n) was already in place so it was merely a matter of doing the translation (thanks to Google Translate and friends) and then adding language files to our API. In that process one becomes very thankful of UTF-8 and the fact that Java works natively in UTF-8.
Please note that the approach discussed in this post translates (excuse the pun) directly to making translation files for XPages as well.
Using the Japanese translation the GUI looks like the below screen shot (cropped of course).

(click the image for a large version)
The funny thing about most non-Latin languages is that even though you have the translations it’s hard to impossible to write the characters yourself. And once you have the words getting them into the language files which are mere property files. Take the weekdays in Japanese as an example:
月曜日
火曜日
水曜日
木曜日
金曜日
土曜日
日曜日
Because we’re running the OnTime Group Calendar out of Notes and because Notes is fully double-byte compatible we could actually just add the Japanese characters directly to the translation document. Instead however we opted to use the Java way that is the native2ascii tool.
The native2ascii tool is shipped with the JDK and lets you translate a file containing native characters to their UTF-8 equivalent escape sequences. So having my Japanese characters in japanese_source.txt and wanting to store the result in japanese_result.txt I simply ran the following command:
native2ascii -encoding UTF8 japanese_source.txt japanese_result.txt
The encoding parameter specifies the character encoding of the source file (here japanese_source.txt). The result is something like this:
u6708u66dcu65e5
u706bu66dcu65e5
u6c34u66dcu65e5
u6728u66dcu65e5
u91d1u66dcu65e5
u571fu66dcu65e5
u65e5u66dcu65e5
Chose escape sequences go directly into the language property file and when read into a Java property file they are automatically translated into Japanese. Sweet!
Embedded Experiences demo – you want to see this!
As I wrote in my Lotusphere 2012 one-liners post after Lotusphere OpenSocial and Embedded Experiences is *the* technology to watch coming out of IBM Lotus. At Lotusphere 2012 Ryan Baxter and Stanton Sievers from IBM gave a Show’n’tell session (SHOW115) which I think really should be an eye opener to a lot of people as to why this embedded experiences “thing” is important. I’ve been bashing Ryan to make a recording of the session and it’s finally here.
Video of demo: Embedded Experiences Demo – N/D Social Edition – Connections Next
Code from demo: Demo code
If you want more embedded experiences go watch the video from the Social App Throwdown from Lotusphere for inspiration as to what’s possible.