278 Lotus blogs updated hourly. Who will post next? Home | Blogs | Search | About 
Latest 7 Posts
Provisions for the Journey
Sun, Jun 19th 2016 5
Change Bitterness and Accidents of History
Fri, Jun 17th 2016 6
Code Safety and Pedantry
Fri, Jun 3rd 2016 6
Darwino for Domino: Conceptual Overlap and Distinctions
Wed, Jun 1st 2016 10
Speaking at Social Connections Toronto
Mon, May 30th 2016 6
Old App Idea: App Manager
Tue, May 24th 2016 7
The Cleansing Flame of Null Analysis
Sat, May 21st 2016 6
Top 10
How I Maven-ized My Framework
Mon, Dec 8th 2014 12
Things I Rarely Use: sessionScope
Thu, Jul 3rd 2014 10
Using the ODA Design API for File-Resource Manipulation
Wed, Nov 19th 2014 10
Working with Rich Text's MIME Structure
Wed, Jul 8th 2015 10
Darwino for Domino: Conceptual Overlap and Distinctions
Wed, Jun 1st 2016 10
Maven Native Chronicles, Part 1: Figuring Out nar-maven-plugin
Fri, Jul 24th 2015 9
That Java Thing, Part 12: Expanding the Plugin - JAX-RS
Thu, Dec 3rd 2015 9
Darwino for Domino: Domino-side Configuration
Mon, May 16th 2016 9
Quick, Short-Notice Announcement: Delaware Valley Soc-Biz UG Meetup
Tue, May 17th 2016 9
Code for Tim: LESS CSS for XPages
Sun, May 25th 2014 8

Jesse Gallagher
Blog Title frostillic.us Data
Blog URL http://frostillic.us
RSS Feed http://unenc.frostillic.us/f.nsf/feed.xml
Validate Feed feedvalidator.org or validator.w3.org
Feed Last Checked Jun 19, 2016 10:30:09 AM EST. Realtime Update:
Location Lansdale, PA, USA

Recent Blog Posts
Provisions for the Journey
Sun, Jun 19th 2016 10:27a   Jesse Gallagher
In my last post, I ended up recommending that Domino developers and administrators take some time, if at all possible, to dive into new tools. In some cases, that may be in order to stay indefinitely, but, even otherwise, learning a new environment would have tremendous benefit to your existing Domino work. Since I'm not a full-time administrator myself, my advice is admittedly a bit thin. It mostly involves my oft-repeated suggestion to try out a reverse-proxy setup for HTTP. That could
Change Bitterness and Accidents of History
Fri, Jun 17th 2016 2:16p   Jesse Gallagher
It's pretty easy to see that change is in the air for Domino types. It's been taking a number of forms for a while now - the long delay since the release of 9.0.1 and associated aging of the tools and infrastructure have led to a series of forced adaptations for developers and administrators. Developers, for example, have had to keep light on their feet to adapt to new browsers and devices that the framework doesn't automatically support, as well as a shift toward manually including jQu
Code Safety and Pedantry
Fri, Jun 3rd 2016 9:23a   Jesse Gallagher
Lately, I've been musing a lot on the topic of code "correctness" - that is, beyond the normal case of wanting code to do what I intended, and further into the realm of sweating even extremely-miniscule details. A lot of this is due to my continued watching of the evolution of Apple's Swift language (I highly recommend following Erica Sadun's blog for this). Swift is very much in the camp of "make sure all your 'i's are dotted and 't's crossed" languages, as opposed to more fast
Darwino for Domino: Conceptual Overlap and Distinctions
Wed, Jun 1st 2016 3:18p   Jesse Gallagher
I've talked a bit so far about how Darwino related to Domino from a development perspective, but I think it'd also be useful to delve into specifically which concerns thw two platforms address, to see where they overlap and where they don't. There are two main categories to cover, since Darwino inherits Domino's unusual trait of pouring over from "database" to "app-dev platform". Database As I covered a few posts ago, the two are similar at a conceptual level, both being replicat
Speaking at Social Connections Toronto
Mon, May 30th 2016 11:57a   Jesse Gallagher
By virtue of one of the original speakers having to cancel, I will be presenting at Social Connections in Toronto next week! Specifically, it will be on the 7th at 2:30, and the topic will be OpenNTF's new tooling and initiatives: OpenNTF has long been a central hub for community and open-source development in the Notes/Domino world. In the past year, however, it has also expanded its capabilities with new tooling and a broadening scope to the larger IBM portfolio. This presentation wil
Old App Idea: App Manager
Tue, May 24th 2016 9:12a   Jesse Gallagher
Years back, I took a small whack at an idea that had been percolating in my head: a "app manager" application that would assist with the XPage-specific portions of running a Domino server. It would cover a lot of ground that Administrator really doesn't touch, such as inspecting NSFs to see which contain XPage artifacts, highlighting potential problems with them, and assisting with app-design backup and deployment. It never really got too far, since there are always a hundred other thin
The Cleansing Flame of Null Analysis
Sat, May 21st 2016 9:18a   Jesse Gallagher
Though most of my work lately has been on sprawling, platform-level stuff or other large existing codebases, part of it has involved a new small app. I decided to take this opportunity to dive more aggressively than previously into automated null analysis and other potential-bugs tools. What I mean by "null analysis" is letting the IDE or compiler try to help you avoid NullPointerExceptions. Though there are plenty of other programming mistakes you could still make, these are among the m
Quick, Short-Notice Announcement: Delaware Valley Soc-Biz UG Meetup
Tue, May 17th 2016 7:34p   Jesse Gallagher
Granted, this is short notice, but for anyone in the southeast-PA area, there's a meetup at IBM's offices this Thursday (the 17th) from 11 to 12:30. I'll be there, giving a presentation about OpenNTF and some of the ways that I've used the projects we work on there on my customer projects. Better still, there's lunch! The signup form is over on Greenhouse here: https://greenhouse.lotus.com/forms/landing/org/app/80846239-6f7a-4483-8ace-9e5e0 2b0a661/launch/index.html?form=F_Form1 If yo
Darwino for Domino: Domino-side Configuration
Mon, May 16th 2016 2:51p   Jesse Gallagher
In my last post, I mentioned that a big part of the job of the Darwino-Domino replicator is converting the data one way or another to better suit the likely programming model Darwino-side or to clean up old data. The way this is done is via a configuration database on the Domino side (an XPages application), which allows you to specify Database Adapters that configure the translation. While it is possible to write these in Java, the primary way is to use a Groovy-based DSL script. The sim
Darwino for Domino: Replication and Data Format
Wed, May 11th 2016 1:35p   Jesse Gallagher
One of the key points of interest in Darwino for Domino developers is its two-way replication. Darwino's replication system was built in such a way that, in addition to its own internal needs, you can also write a replicator to connect to an entirely-unrelated system, as long as that replicator translates the foreign data to and from JSON documents. Domino is a perfect case for this, since the data model is already very similar, and its replicator ships with Darwino and has been a focus o
An Overview of Darwino for Domino Types
Thu, Apr 14th 2016 6:05p   Jesse Gallagher
So, Darwino! I've mentioned it quite a few times on Twitter and, particularly, in person, but I think it's high time I write some proper blog posts about it. To start with, I'll cover what Darwino is. The short version is it's a Java-based development framework with a replicating document database. The interesting aspects go beyond that, though: In addition to Java web servers, it targets mobile devices, both Android and, through RoboVM, iOS. Those devices store their own replicas of t
A Bit of Code Archaeology
Thu, Mar 10th 2016 9:08a   Jesse Gallagher
Yesterday, I decided to toss the source of my first real XPages app up on GitHub: https://github.com/jesse-gallagher/Raidomatic It's my WoW guild's web site, which had some forums as well as a raid-management tool and loot tracker. I'm guessing that those tools won't be particularly useful for your average XPages app, but they were interesting things to build, and were a great exercise in figuring out the platform. Since it is quite old, there are also plenty of terrible decisions i
Maven Native Chronicles: Running Automated Notes-based Tests
Sat, Feb 27th 2016 5:02p   Jesse Gallagher
This post isn't really in my ongoing Java thread, though it's related in that this is the sort of thing that may come up in fairly-advanced cases. This post will assume a functional knowledge of Maven, Tycho, and JUnit. For Darwino, I ran into the need to run unit tests on Domino-adapter code during the Maven build process. Since the Domino project tree uses Tycho, this ended up differing slightly from standard Maven testing. Rather than using the src/test/java directory in the same proj
That Java Thing, Part 16: Maven Fallout
Tue, Feb 23rd 2016 2:33p   Jesse Gallagher
So, after the last post's large task of converting to Maven, this step is mostly about picking up the pieces and expanding on some of the concepts. We'll start with M2Eclipse, usually rendered as just "m2e". m2e m2e is the set of plugins that acts as Eclipse's interface to Maven. It more-or-less replaces the earlier maven-eclipse-plugin, though you will likely still see references to that around. Eclipse doesn't have any inherent knowledge of how Maven works, m2e has the complicated
That Java Thing, Part 15: Converting the Projects
Mon, Feb 22nd 2016 10:26a   Jesse Gallagher
Prelude: there was a typo in the previous entry. Originally, the file URL read "file://C:/IBM/UpdateSite", but, on Windows, there should be another slash in there: "file:///C:/IBM/UpdateSite". I've corrected the original post now, but you should make sure to fix your own settings.xml file if needed. Otherwise, Maven will complain down the line about the URI "having an authority component". The time has come to do the dirty work of converting our existing plugin projects to Maven. Th
That Java Thing, Part 14: Maven Environment Setup
Sun, Feb 21st 2016 6:51p   Jesse Gallagher
Before diving into the task of converting our plugin projects to Maven, there's a bit of setup we need to do. In a basic case, Maven doesn't require much setup beyond the project file itself - it's a "convention over configuration" type of thing that tries to make doing things the default way smooth. However, since it's also a "Java" thing, that means that anything out of the ordinary requires a bunch of XML. Our big "out of the ordinary" aspect is OSGi. Maven and OSGi are often
That Java Thing, Part 13: Introduction to Maven
Fri, Feb 19th 2016 6:27p   Jesse Gallagher
I've been laying warnings that this would be coming and you've seen me grouse about it for over a year, but now the time has come to really dive into Maven for Domino developers. To lead into it, there are two main topics to cover: what Maven is and why you should bother. What Maven Is Maven is a build automation tool, primarily for Java applications but able to work with a number of other languages and environments. The concept of a "build automation tool" is a strange one when you
Connect 2016 and Darwino 1.0
Mon, Feb 8th 2016 9:45a   Jesse Gallagher
Last week was Connect 2016 and, while I don't have a full review of it, I felt that it was a pretty successful conference. The new venue was much less weird and more purpose-fitting than expected. Moreover, while the conference content wasn't bursting with announcements and in-depth technical dives like at something like WWDC, it did feel a bit more grounded and less marketing-hollow than the last two. So I'll call it a win. On the OpenNTF front, the conference saw a bit more in the slo
Connect 2016 Lead-Up
Tue, Jan 26th 2016 9:02a   Jesse Gallagher
Phew, well, my plugin series continues its hiatus due to how thoroughly swamped I've been with work the last couple months. It will return in time, ready to dive into the fruitful and terrifying topic of Maven-ization. In the mean time, we're very close indeed now to this year's Connect, and I'm looking forward to it. There are a number of sessions that I'm rather looking forward to, but I'd like to mention two due to my indirect and direct association with them, respectively. Firs
That Java Thing, Part 12: Expanding the Plugin - JAX-RS
Thu, Dec 3rd 2015 3:21p   Jesse Gallagher
A couple of months back, Toby Samples wrote a series on using Wink in Domino. I'm not going to cover all of that ground here, but it's still worth dipping into the topic a bink, as writing REST services in an OSGi plugin is a great way to not only add capabilities to your XPages apps, but to also start making your data (and programming skills) more accessible from other platforms. There are two main terms to know here: "JAX-RS" and "Wink". JAX-RS stands for "Java API for RESTful Web
That Java Thing, Part 11: Diagnostics
Tue, Dec 1st 2015 8:43a   Jesse Gallagher
Though my surprisingly-packed schedule the last few weeks caused a hiatus, it's time to retun to this series with a quick description of some of the diagnostic tools available to you when doing plugin development (outside of connecting the debugger, which I may do eventually). The primary tool in your "what the heck is going on?" toolbox should be the XPages Log File Reader. This app does a wonderful job providing a web UI for the important diagnostic files you'll likely need to see du
That Java Thing, Interlude: Effective Java
Mon, Nov 16th 2015 8:15a   Jesse Gallagher
While taking a short breather in my continuing Java series, I think that now is a good time to reiterate my advice for all Domino developers to read Effective Java. It's probably not the best way to learn Java from scratch, but it's an invaluable tour through tons of important Java concepts. Even if you don't use most of the knowledge immediately, reading every section will help immerse you in the language and give you a better appreciation for its texture, which is one of the most im
That Java Thing, Part 10: Expanding the Plugin - Serving Resources
Thu, Nov 12th 2015 12:02p   Jesse Gallagher
After sharing code, one of the handiest uses of a plugin is sharing web resources - stylesheets, JavaScript files, and so forth. This process is similar to the last couple steps in that, though it is not very complicated on the whole, it's pretty non-obvious how to get around to doing it. To start with, we'll create some resources to serve up. Expand the src/main/resources folder in your project (it will be slightly more useful to use the "normal" folder version and not the source fold
That Java Thing, Part 9: Expanding the Plugin - Jars
Wed, Nov 11th 2015 11:50a   Jesse Gallagher
So it appears that I once again forgot to commit my changes. Well, consider this a cautionary tale, but we can still salvage the situation a bit by committing the previous changes before embarking on an unrelated modification - it's that mixing of different changes that can cause trouble in a source control repository. [IMAGE] For today's post, we'll add a third-party Jar to our plugin in order to use it internally and provide it to external applications (and we'll cover why those ar
That Java Thing, Part 8: Source Bundles
Tue, Nov 10th 2015 7:46a   Jesse Gallagher
Before anything else today, Eric McCormick reminding that yesterday's post missed the final step: committing the changes. So, let's take care of that right now. On my side, since my Windows VM is also being accessed from the Mac side, it's worthwhile to add a .gitignore file to the root of the repo to keep out all the .DS_Store nonsense. GitHub's Java gitignore is a good start, though skipping the part about ignoring Jar files. In your text editor of choice, create a new file named ".
That Java Thing, Part 7: Adding a Managed Bean to the Plugin
Mon, Nov 9th 2015 6:37a   Jesse Gallagher
For today's step, we'll deal more with the meat of the task: putting your own code in the plugin. There are a lot of options for what a plugin can provide, ranging from just storing classes to be accessed from elsewhere to being full-on OSGi web applications. Adding a managed bean certainly falls on the simpler side of this spectrum, but it's also one of the most common uses. These steps should also be very familiar if you've created a managed bean in an XPages NSF before. Before we g
That Java Thing, Part 6: Creating the Feature and Update Site
Sun, Nov 8th 2015 10:45a   Jesse Gallagher
The last post covered turning our nascent plugin into a proper XPages library, so now it's time to fill in the remaining pieces to get it installed. To do that, we'll need a feature and an update site. The feature will point to our plugin - in a more-complicated setup, this could point to several related plugins, but we'll just need the one. The update site will do similarly, referencing the feature in a way that Eclipse-type platforms know about. Go to File → New and choose "Feature
That Java Thing, Part 4: Expanding the Plugin
Fri, Nov 6th 2015 8:48a   Jesse Gallagher
In the last post, we created an empty plugin project for our XPages library. Today, we'll flesh that plugin out a bit and add the actual XSP hooks. The first step is to start filling in some details in the plugin's Manifest file, which is the core description of what the plugin does and what it requires in its environment. To begin with, open the MANIFEST.MF file in the META-INF folder of your project and check the "This plug-in is a singleton" checkbox: [IMAGE] During one of the ste
That Java Thing, Part 4: Creating the Plugin
Thu, Nov 5th 2015 9:38a   Jesse Gallagher
To make a basic XPages library, we'll need to create the trio of OSGi projects: the plugin, the feature, and the update site. For a long time, the XSP Starter Kit has been a great go-to starting point for this sort of thing. It definitely covers almost all of the potential ground, but it can be a bit overkill when you just want to put some classes in a shared place. So, for this exercise, we'll start from scratch. But before we do that, we should create a Git first. This isn't required,
That Java Thing, Part 3: Eclipse Prep
Wed, Nov 4th 2015 4:26a   Jesse Gallagher
Before you dive into OSGi development, you'll need a proper development environment, and that usually means Eclipse. Domino Designer, being Eclipse-based, can technically do the job and has the advantage of some of the setup being done, but it's so out-of-date at this point that it's not worth it (believe me, I tried originally). Newer Eclipse versions have improved noticeably, so it's best to grab a recent version. Currently, that means Mars, or Eclipse 4.5.1. Before Eclipse, you'll
That Java Thing, Part 2: Intro to OSGi
Tue, Nov 3rd 2015 6:44a   Jesse Gallagher
OSGi once stood for "Open Services Gateway initiative", but that name slid from "impossibly vague" to "entirely obsolete" rather quickly. For our needs, OSGi is a mechanism for bringing sanity to the "big pile of Jars" that you might otherwise have in a large Java system. It provides a standardized way to describe the name of a library, its version, its dependencies, its capabilities, and its interactions with other libraries. In this way, rather than just "commons-io-2.1.jar", y
That Java Thing, Part 1: The Java Problem in the Community
Mon, Nov 2nd 2015 1:20p   Jesse Gallagher
Java has been a bugbear for the Domino community for a long time. Though Notes and Domino have presented a top-to-bottom (mostly) Java environment for years, the monumental inertia of the corporate development community, the platform's tortured history of insufficiently-fleshed-out Java hooks, and IBM's "pay no attention to that man behind the curtain" pitch with regard to the language created an environment where Java is often something for "other developers". XPages represented a t
Domino's Server-Side User Security
Sun, Nov 1st 2015 7:41a   Jesse Gallagher
The other day, Jesper Kiaer write an interesting two-part sert of blog posts talking about the security implications of HTTPEnableConnectorHeaders, something I mention in my setup example. In it, he describes the ability to specify an arbitrary username as a security hole, which I don't agree with, but I see where he's coming from. It certainly has, shall we say, implications. The $WSRU header comes along for the ride when you enable the HTTPEnableConnectorHeaders notes.ini property (off
Satisfying Designer's Peculiar OSGi Constraints in Tycho
Mon, Oct 12th 2015 4:33p   Jesse Gallagher
Before anything else, I should mention that this post is entirely on the topic of building OSGi plugins with Maven. If you're not doing that yet, this probably won't be particularly useful. For the most part, when building OSGi plugins for XPages, you can be fairly confident that the available plugins will be fairly similar between Notes and Domino. That's not quite always the case, though - there are a set of plugins that are available in Domino that aren't present in Designer's runt
Release Day
Sat, Oct 3rd 2015 6:34p   Jesse Gallagher
Today, I put two long-overdue releases up on OpenNTF. First and by-far-foremost is version 2.0.0 of the OpenNTF Domino API. The major version reflects not so much a major new architectural change over the 1.5.x release candidates as it does the fact that those releases were conservatively named and presaged a Java-style "1.x forever" future. Various development builds and release candidates have been used in production by the API team and others for a while now, and so this represents a
The Podcasts I Listen To
Tue, Sep 22nd 2015 12:46p   Jesse Gallagher
Over the years, I've accumulated a stable of podcasts I listen to, mostly tech-related (and then mostly Apple-related), and I realized that this may be a handy list for anyone looking to pick up some new listening material. I've uploaded the full list here, but here are some of the highlights: Accidental Tech Podcast - This show is hosted by John Siracusa (of OS X review fame), Marco Arment (of Overcast and Peace fame), and Casey Liss (of, now, ATP fame). It's almost all about technolog
Seriously, Though: Reverse Proxies
Wed, Sep 16th 2015 4:28p   Jesse Gallagher
So, Domino administrators: what are your feelings about SSL lately? Do they include, perhaps, stress? It's "oh crap, my servers are broken" season again, and this time the culprit is a change in Apple's operating systems. Fortunately, in this case, the problem isn't as severe as an outright security vulnerability like POODLE and, better still, there is a definitive statement from IBM indicating that they are going to bring their security stack up to snuff almost in time. But this isn
XPages Devs: Enable "Refresh entire application when design changes"
Mon, Sep 14th 2015 11:48a   Jesse Gallagher
When developing an XPages application of beyond-minimal complexity, you're likely to run into a problem where your app starts saying that a class is incompatible with itself in one way or another. The exception usually traces down to something like "foo.SomeClass is incompatible with foo.SomeClass" or "cannot assign instance of foo.SomeClass to field X..." where the field is that same class. This has cropped up since time immemorial. It's actually, though, something that IBM sort-o
Dealing with OSGi Fragments in Tycho and Designer
Fri, Sep 11th 2015 6:30p   Jesse Gallagher
This post is partly to spread information publicly and partly a useful note to my future self for the next time I run into this trouble. In OGSi, the primary type of entity you're dealing with is a "Bundle" or "Plug-in" (the two terms are effectively the same for our needs). However, there's a sort of specialized type that you may run into called a "Fragment". They're similar to a plug-in in that they're a contained unit of Java code and resources, but they have the special prope
My MWLUG 2015 Presentation, "Maven: An Exhortation and Apology"
Sun, Aug 30th 2015 6:07p   Jesse Gallagher
At prophesied, I gave a presentation on MWLUG last week. Keeping with my tradition, the slides from the deck are not particularly useful on their own, so I'm not going to post them as such. However, Dave Navarre once again did the yeoman's work of recording my session, so it and a number of other sessions from the conference are available on YouTube. In addition, my plan is to expand, as I did earlier today, on the core components of my session in blog form, in a way that wouldn
Wrangling Tycho and Target Platforms
Sun, Aug 30th 2015 4:16p   Jesse Gallagher
One of the persistent problems when dealing with OSGi projects with Maven is the interaction between Maven, Tycho, and Eclipse. The core trouble comes in with the differing ways that Maven and OSGi handle dependencies. Dependency Mechanisms The Maven way of establishing dependencies is to list them in your Maven project's POM file. A standard one will look something like this: com.google.guava guava 18.0 This tells Maven that your project depends on Guava version 18.0. The "
MWLUG 2015 - Maven: An Exhortation and Apology
Sun, Aug 16th 2015 11:55a   Jesse Gallagher
At MWLUG this coming week, I'll be giving a presentation on Maven. Specifically, I plan to cover: What Maven is Why Domino developers should know about it Why it's so painful and awkward for Domino developers Why it's still worth using in spite of all the suffering How this will help when working on projects outside of traditional Domino The session is slated for 3:30 PM on Thursday. I expect it to be cathartic for me and useful for the attendees, so I hope you can make it.

Created and Maintained by Yancy Lent - About - Planet Lotus Blog - Advertising - Mobile Edition