It's considered bad form to apologize for not posting more frequently, so this isn't an apology... just a temporarily accurate observation. Over the past two months I've accumulated quite a few draft posts in my head, but have not had time to produce the thorough dissertation I feel each deserves. Lest I literally run out of memory, consider the following a heap dump.
Did you know that the term "activity stream" isn't just an IBM thing? Obviously, the visual concept isn't peculiar to IBM... we see this type of thing just about everywhere now. But even the actual term isn't something unique to the products IBM intends to Vulcanize... it's a full-blown specification. Granted, IBM has been involved in the development of the spec, but so have Microsoft, Google, MySpace, Facebook, and others. Why might this matter? Well, for years now we've been hearing that, at some unspecified point in the future, we'll be able to post activity from our Domino applications to "the" stream and display events from "the" stream. But we haven't been told where that stream will actually live. Is it stored in NSF? In DB2, as part of Connections? I consider the latter more likely, although I have no inside information to base that on. But it turns out it doesn't matter: nothing's stopping us from producing our own stream... we can store it anywhere we want and, as long as we adhere to the same specification, we can bi-directionally merge our own custom streams with whatever "the" official stream turns out to be... as well as streams produced by third parties like Facebook. You know, if that's the sort of thing you're into.
Have you checked out the Social Enabler yet? This was released back in April, yet I've seen almost no chatter about it, aside from the crazy cool demo videos Niklas has posted about it. I've been meaning to create a ridiculous mashup (the working title is "EverFlixDropFace") to drive home the point about how easy this approach makes integration between XPages and... well... darn near anything. Certainly anything that has a REST API and supports OAuth. Alas, my request to increase the standard day from 24 hours to 36 remains unanswered, so if someone would beat me to this, I'd be most appreciative. For extra special bonus points, include an implementation of an activity stream...
In the realm of slightly less silly in-progress applications, the venerable Mark Hughes commissioned an app from me months ago that would essentially duplicate the group chat functionality of Skype, but with the added benefit of rich text (beyond Skype's emoticons) and better attachment handling. I call it watrCoolr. The entire app is already written in my head (complete with interesting features like allowing a chat to be publicly searchable but still require moderator approval to participate, presence awareness that doesn't require Sametime, etc.), so naturally in that test environment it runs flawlessly. Trouble is, I think I've been able to spend a grand total of two hours actually writing the code, so the current app does next to nothing. But when it's done, it's just might prove useful. In the meantime, it's a somewhat representative example of the OneUI 2.1 theme, and, since I used the Application Layout control from the Extension Library, the entire site layout took approximately 10 minutes to create. If your users / customers like the look of OneUI, but you hate working with OneUI due to its complexity, you seriously owe it to yourself to look closely at the Application Layout control. It really does make ridiculously light work of using that theme.
Oh, that reminds me: I'm co-authoring a book. I may have mentioned that before, but new Lotus-related books always seem to generate a lot of buzz, so consider this just another plug for this one. I'm guessing you'll recognize the names of my co-authors.
I got to go to LoLA a couple weeks ago. I signed a form promising not to tell you what I saw and heard there, but I think it's okay to tell you that I really liked what I saw. Some of what they're considering has the potential to piss some people off, but (in my opinion) in a very good way. I'm sure some of what I saw will be revealed at Lotusphere... at which point I may decide to elaborate further. In the meantime, if you trust my judgment in such matters, feel free to go ahead and be blindly optimistic about vague notions of exciting things on a blurry metaphorical horizon.
While I was there, I had a rather lengthy and mind-tingling conversation with Declan. He described an idea he had approximately five years ago but never got around to implementing (it was comforting to discover that I'm not alone). Over a delicious dinner - and, if memory serves, a couple glasses of wine - and a bus ride, we jointly took that idea to an exciting new level. I kind of want to keep the idea itself a surprise for the time being, and if we get it working, you'll most likely hear it from Keith instead of me... but in the meantime, if you've never dug into what Eclipse extension points really are, how they're defined, how you tap into them when you're writing an extension, and so forth, I found a fantastic tutorial that does an excellent job of explaining the salient points. The precise details of why the notion of Eclipse extension points might be rather exciting to both Declan and Keith... again, let's just keep that a surprise for later.
So, I think that's about it for now. As always, time will tell whether each of these tips has an iceberg underneath. Obviously there's still a bunch of other random nonsense rattling around in my head, but I think I've finally freed up enough space to at least run a defrag, which, I can assure you, is long overdue.
locating XPage components with XspQuery
Sun, Apr 14th 2013 12:00a Tim Tripcony Several years ago, I wrote a utility Java class designed to make it easy to search for components within the current XPage instance based on various criteria. I've found it enormously useful, and, apparently, so has Keith Strickland, because he added it to org.openntf.xsp.extlib, complete with a few refinements. As an example of how you might use this, examine the following line of code:
List requiredFields = new XspQuery()
.loc [read] Keywords: ldd
your how is not your what
Wed, Apr 3rd 2013 11:36a Tim Tripcony I've noticed a pattern emerging when I'm asked for help with XPages. Here's a representative conversation:
"I'm trying to do [X] and it's not working. How can I do that?"
"What are you trying to accomplish?"
"I already told you. I'm trying to do [X]."
"No, that's how you're trying to do it. What are you trying to do?"
For example, replace "[X]" with "reach into a repeat control from outside it" (since this has become the most frequent topic I'm asked about [read] Keywords: xpages application
my new favorite quote
Sat, Mar 23rd 2013 5:20p Tim Tripcony "We go about our daily lives understanding almost nothing of the world. We give little thought to the machinery that generates the sunlight that makes life possible, to the gravity that glues us to an earth that would otherwise send us spinning off into space, or the atoms of which we are made and on whose stability we fundamentally depend. Except for children (who don’t know enough not to ask the important questions), few of us spend much time wondering why nature is the way it is; where the [read] Keywords: wiki
Taking the scary out of Java in XPages: Prologue
Tue, Feb 26th 2013 9:50p Tim Tripcony The discussion following my last post made stark the need for greater availability of information that makes the nature of Java more accessible to Domino developers. Credit for the title of this post goes to Declan, who is considering writing a series of blog posts on this topic. I will be doing the same; hopefully there will be a fair amount of duplication. As David Leedy is fond of stating, it's a good thing when several people share the same information, because that makes it easier for the [read] Keywords: domino
Passthru vs. component - my perspective
Sat, Feb 16th 2013 9:40p Tim Tripcony Paul Withers posted a thorough article explaining the differences between namespaced XPage components (e.g. ) and their corresponding passthru elements (e.g. ), providing numerous examples of what actually happens when these objects are constructed. I've always heard (and often repeated) that passthru elements are more efficiently processed than their namespaced equivalents, so Paul's post inspired me to offer my own perspective.
Simply put, there's practically no difference... but there a [read] Keywords: acl