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):
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:
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:
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.
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: http://bit.ly/CIYPSeries3a.
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.
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 apiNotesDir.run() 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 -- 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.
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.
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!
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.