The March 2010 Blog
send me a comment

Aruba Pictures, Photo Tools (Tuesday, Mar 30)
[ permalink ] [ e-mail me ] [ ]

Last week my wife and I took a trip to Aruba(!). No kids or anything, just us. Four wonderful days in the warm weather. Ahhh...

I'll tell stories later (perhaps) -- suffice to say that I highly recommend going there for vacation if you're American, because everything's in English and you pay in dollars and you drive on the right-hand side of the road and stuff. Europeans might even enjoy it too! Who knows.

But the real point of this blog entry is: pictures. I'm not a great photographer. I can occasionally take a decent photo, but it's entirely based on the infinite-number-of-monkeys-with-cameras theory of photography. If I take enough pictures, eventually I'll have a few good ones by sheer chance. Here are a few of the many I took last week (click for slightly larger versions):

Walking path at the Casibari ruins Iguana walking across the sidewalk Small natural bridge on the beach Tree on the rocky beach California lighthouse, looking up

What would really help me out is to read things like the BBC outdoor photography masterclass series and study up on picture composition and how to use a camera, and maybe even buy a nice digital SLR or something. That's all a time and money problem though, and there's a talent aspect too, so in the meantime I'll just try to snap a lot of pics.

In any case, I've been playing with a couple of interesting photography tools recently, and I'll at least share my novice opinion on those with you.

The first is TiltShift Generator for iPhone, which creates an interesting "miniature" effect on pictures you've taken with the iPhone. There's also an online Flash version and an Adobe AIR version you can play with from your desktop computer. That created some fun pictures, although the resolution on my 1st-gen iPhone is low enough that the resulting pictures didn't render as well as I'd like on a non-iPhone display. As always, the examples on the application's website are better than mine. My examples:

Picture of the cat + TiltShift Generator Bushiribana Ruins + TiltShift Generator Rocky beach at the Aruba ocean + TiltShift Generator Steps at the Casibari ruins + TiltShift Generator

So that's the first one. Fun little app, even if it is kind of a one trick pony. The second tool is the Hugin photo stitcher, a multi-platform, multi-language, open-source panoramic photo stitching tool that's so easy even I can use it. Here's a landscape view of the Bushiribana Ruins, from three pictures stitched together, as an example:

Bushiribana Ruins landscape photo

I mostly followed the LifeHacker instructions for using the software, although those were for a slightly older program interface. It was pretty straightforward to use though. The only thing I had to play with a little was the exposure settings, because at the "low exposure" setting the bright section of the sky got pretty purple. The horizon line also has a little bit of curvature, but I think there might be a setting for that too. Or, that could all be fixed with other photo software once the stitching is done.

Free Webinar: iPhone Development First Steps (Monday, Mar 29)
[ permalink ] [ e-mail me ] [ ]

In conjunction with Chris Miller's new "Consultant In Your Pocket" webinar series, I will be hosting a free webinar later this week called Getting Started with iPhone Development: First Steps. It's this Thursday at 11:00am EST, and you can go here to register:

Should be pretty fun. It's only 30 minutes (with an additional 15 minutes at the end for Q&A), and it covers what you need to know about getting started with iPhone development -- toolkits, languages, considerations, etc. It's not a "You'll walk away with total knowledge of how to create an iPhone app that will take over the world!" kind of stuff, more along the lines of "Here's what you need to look at to get started."

If you want to get more hands-on with the technology, there are still some spaces left for the one-day iPhone developer training seminar at SNAPPS HQ on April 16th.

Multi-Platform LotusScript C-API Calls (Monday, Mar 15)
[ permalink ] [ e-mail me ] [ ]

Ulrich Krause wrote a blog entry last week about a new project he posted to OpenNTF called project Cebulon. It has several examples of using LotusScript to call Lotus Notes C-API functions related to rich text.

He also mentioned that there is sample code for Windows and Linux, but none for Mac (at the moment). This reminded me of some code that Bill Buchan published a while back.

Bill has done a lot of work with not only calling the C-API using LotusScript, but also with working around platform differences when making the API calls. Here's an excellent presentation Bill made a few years ago that outlines some of the considerations you need to make when writing multi-platform API code.

Around that time, he also published an open-source LS2CAPI database with some remarkable code that hides all the platform differences using wrapper classes, so you can just define your API functions once and let the classes manage the platform dependencies in the background. As an example, I wrote a wrapper class around Bill's wrapper class that allows you to make calls like this:

    Dim apiNotesDir As New simpleApiWrapper("OSGetExecutableDirectory")
    Call apiNotesDir.addParam("PathName", type_STRING, False, "")
    Call apiNotesDir.setReturnType(type_WORD)
    If Then
        Print "Exe Path = " & apiNotesDir.getParamValue("PathName")
    End If

I know that this might look like more work rather than less, but in a lot of ways it really makes your cross-platform C-API code much easier to manage. It's worth taking a little time to get your head around it.

SnappFiles 1.0.3 ECM Support (Thursday, Mar 11)
[ permalink ] [ e-mail me ] [ ]

SnappFiles -- the Lotus Quickr file viewer for iPhone -- has now been updated to version 1.0.3 on the App Store. Features and improvements since the original 1.0 release include:

While I personally like the download counter the best (so I know if I'm almost done with a large file download on a slow network, or if I should give up), I think the ECM support is probably the most interesting.

Here's what IBM has done. For the Content Manager and FileNet P8 products, IBM has created "Services for Lotus Quickr" components that make these ECM systems accessible as repositories for Quickr 8.1.1. Because of the way they've implemented the services, these components ALSO make CM8 and FileNet accessible to lightweight end-user clients like the Quickr Connectors and SnappFiles, even if Quickr is not the front-end. You can talk directly to the "Services for Lotus Quickr" layer and access the ECM system.

As announced at Lotusphere, there is also an equivalent connector for Alfresco's open-source ECM. Works the same way: install the services and access Alfresco directly from the Connectors. Or, now, your iPhone.

If you've already installed SnappFiles, go the App Store and grab your update; otherwise you can just download it fresh and start using it. Either way it's still free.

Cleaning The Coffee Pot (Monday, Mar 8)
[ permalink ] [ e-mail me ] [ ]

It may come as a surprise to some of you that my coffee pot at home is not always sparkling clean. I have a Cuisinart 12-cup coffee maker that brews directly into a stainless steel carafe. This very conveniently produces a pot of coffee that stays warm almost all morning without getting "burned" by a heating element underneath the pot. It is also almost impossible to clean because the neck of the carafe is very narrow and the stainless steel isn't as stainless as one might hope.

So, to clean this thing, we've tried all sorts of soap-and-scrubber methods, vinegar and baking soda solutions, and my wife even took out the steamer this past weekend to blast the coffee stains off the inside of the pot. Still stained.

Finally, I did what I should have done in the first place: search the Internet. The answer was amazingly simple:

Voila, a sparkling clean coffee pot, no scrubbing required.

One-Day iPhone Developer Training In April (Friday, Mar 5)
[ permalink ] [ e-mail me ] [ ]

In case you missed Rob Novak's announcement, we (at SNAPPS) are offering a one-day iPhone developer training class on April 16th. It's limited to only 15 people, it's very reasonably priced, and the details and registration link are at

As a summary (i.e. -- something you can copy-and-paste for your boss), here are the salient details:

Also, I should have my iPad by then, so we'll talk about that too. ;-)

As Rob mentioned last week, people have been asking for a while if SNAPPS offers focused hands-on training, and we finally decided after Lotusphere this year to clear some time out of the project schedules and give it a try.

Earlier that same week, Viktor, Troy, and Jerald will also be heading up a three-day workshop-style Lotus Quickr Development Bootcamp to give developers a solid understanding of how Lotus Quickr works and how to write (and maintain) Quickr applications. If you're evaluating Lotus Quickr or if you need to understand how it works, this workshop is a fantastic place to get a solid technical overview. As of today there are only 9 seats left for that one, and the early pricing for both ends next Monday. So go bug the boss!

SnTT: Multi-Platform File Launch With LotusScript (Thursday, Mar 4)
[ permalink ] [ e-mail me ] [ ]

There's all sorts of interesting code scattered throughout The Great Code Giveaway database from this year's Lotusphere. Here's one snippet that's useful for people who do a lot of programming for the Lotus Notes client: multi-platform (Windows/Mac/Linux) code to launch a file using the user's default program for opening that file type:

Option Public
Option Explicit
Uselsx "*javacon"

Sub Initialize
	Dim workspace As New NotesUIWorkspace
	Dim response As Variant
	Dim fileName As String
	response = workspace.SaveFileDialog(False, _
	"File name", "All Files|*.*", "", "")
	If Not Isempty (response) Then
		fileName = response(0)
		Dim jSession As JavaSession
		Dim jClass As JavaClass
		Dim jMethod As JavaMethod
		Set jSession = New JavaSession()
		Set jClass = jSession.GetClass("org/eclipse/swt/program/Program")
		Set jMethod = jClass.GetMethod("launch","(Ljava/lang/String;)Z")
		Call jMethod.Invoke(, fileName)
	End If
End Sub

I realize that there are Windows API calls to do the same thing but, you know, I have a Mac, and no matter how hard I try I can't get those pesky Windows API calls to work on my Mac.

I've tested this (lightly) on Notes 8 and 8.5. No idea if it works on pre-8 versions of the client -- LS2J functionality has been available since v6.5 but I don't know how long org.eclipse.swt.program.Program has been there.