191 Lotus blogs updated hourly. Who will post next? Home | Blogs | Search | About 
 
Latest 7 Posts
Cramming Rails Into A Maven Tree
Mon, Sep 26th 2016 64
Quick Post: Maven-izing the XSP Repo
Sat, Sep 17th 2016 20
Reforming the Blog in Darwino, Part 1
Thu, Sep 15th 2016 20
There Are Pods That Need Casting
Tue, Sep 6th 2016 12
Quick XPages Utility: Keep Alive and Alert
Tue, Aug 30th 2016 13
Change Is In The Air
Fri, Aug 26th 2016 7
MWLUG 2016 Slides
Sat, Aug 20th 2016 10
Top 10
Cramming Rails Into A Maven Tree
Mon, Sep 26th 2016 64
Reforming the Blog in Darwino, Part 1
Thu, Sep 15th 2016 20
Quick Post: Maven-izing the XSP Repo
Sat, Sep 17th 2016 20
Darwino for Domino: Domino-side Configuration
Mon, May 16th 2016 14
Code Safety and Pedantry
Fri, Jun 3rd 2016 13
Quick XPages Utility: Keep Alive and Alert
Tue, Aug 30th 2016 13
Change Bitterness and Accidents of History
Fri, Jun 17th 2016 12
MWLUG 2016
Mon, Aug 15th 2016 12
There Are Pods That Need Casting
Tue, Sep 6th 2016 12
How I Maven-ized My Framework
Mon, Dec 8th 2014 11


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 Sep 26, 2016 1:45:08 PM EST. Realtime Update:
Location Lansdale, PA, USA


Recent Blog Posts
64
Cramming Rails Into A Maven Tree
Mon, Sep 26th 2016 1:25p   Jesse Gallagher
Because I'm me, one of the paths I'm investigating for my long-term blog-reformation project is seeing if I can get Ruby on Rails in there. I've been carrying a torch for the language and framework for forever, and so it'd be good to actually write a real thing in it for once. This has been proving to be a very interesting thing to try to do well. Fortunately, the basics of "run Rails in a Java server" have been well worked out: the JRuby variant of the language is top-notch and the
20
Quick Post: Maven-izing the XSP Repo
Sat, Sep 17th 2016 6:58a   Jesse Gallagher
This post follows in my tradition of extremely-narrow-use-case guides, but perhaps this will come in handy in some situations nonetheless. Specifically, a while back, I wrote a script that "Maven-izes" the XPages artifacts, as provided by IBM's Update Site for Build Management. This may seem a bit counter-intuitive at first, since the entire point of that download is to be able to compile using Maven, but there's a catch to it: the repository is still in Eclipse ("P2") format, which
20
Reforming the Blog in Darwino, Part 1
Thu, Sep 15th 2016 2:38p   Jesse Gallagher
This continues to be a very interesting time for Domino developers, with the consternation of MWLUG giving way to IBM's recent announcement about their plans for Domino. Like everyone, I have my feelings about the matter, but the upshot is that moving-forward tone still stands. With that in mind, let's get down to business, shall we? I'm going to kick off my long-term blog series of moving my blog itself over to a Darwino+JEE application. I say "long-term" because it's a pure side pr
12
There Are Pods That Need Casting
Tue, Sep 6th 2016 10:25a   Jesse Gallagher
I had the pleasure of taking part in the long-awaited demise episode of This Week In Lotus! http://thisweekinlotus.com/115-doing-a-three-way/ We covered a lot of ground, with a reflection on this year's MWLUG, the Sturm und Drang about Domino, Toscana/IBM design, and a few other topics. Most important, though, is the special announcement at the end of the episode, which you'll just have to listen for. Or skip to the end, I guess; there's a tracking bar right on the page.
13
Quick XPages Utility: Keep Alive and Alert
Tue, Aug 30th 2016 2:17p   Jesse Gallagher
For one of my projects recently, I put together a small custom control that I sure wish I had thought to do years ago: a "keep alive and alert" control. For a long time now, the Extension Library has had a "keepAlive" control, which keeps a page session (and, usually, authentication) alive while the user has the browser window open, avoiding the otherwise-common issue of someone sitting on a page "too long" and having it break underfoot. However, that doesn't cover the edge cases: t
7
Change Is In The Air
Fri, Aug 26th 2016 4:41p   Jesse Gallagher
During last week’s MWLUG, there was a clear sense that things are a little different this year. Dave Navarre dubbed the technical implications “platform agnosticism”, while I geared my presentation towards the feeling that change is in the air. This is not totally new. Red Pill Now cast aside the XPages UI layer and most of the assumptions of Domino development to move to a new level; PSC's presentations have long developed a polyglot tone, and this ramped up this year; and people
10
MWLUG 2016 Slides
Sat, Aug 20th 2016 8:07p   Jesse Gallagher
I just returned from this year's MWLUG, held in surprisingly-rainy Austin, Texas. As every year, MWLUG is an outstanding event, particularly for a development crowd (though I think admins get tons of material too). I'm definitely looking forward to next year's in DC, and not merely because that's a pretty quick drive for me. I'll have some more to write later to follow up on the themes of this year's event, but in the mean time I've uploaded the slides from my presentation: AD106 
12
MWLUG 2016
Mon, Aug 15th 2016 10:29a   Jesse Gallagher
MWLUG 2016 is happening this week, down in I'm-sure-it's-not-deathly-hot Austin, Texas. MWLUG has really proven to be a top-tier conference for our community, and I'm looking forward to it again this year. To be fair, part of that is that I'll be presenting on Friday, with a session entitled "Expand Your Apps And Skills To The Wider World": The technological world has changed, but the work done by your Domino apps has not. Rather than discarding your old applications in a distruptive
10
Release Weekend: ODA and Darwino
Tue, Aug 2nd 2016 7:10a   Jesse Gallagher
This past weekend was a nice one for releases to a couple of the projects I work on: the OpenNTF Domino API and Darwino. The ODA release is something of a "consolidation" release over 2.0.0: it fixes a few of the bugs that cropped up since then, adds some important lower-level tweaks, and brings the graph REST API into the mainline release. One note with the REST API is that, due to making use of a recently-added extension to the core code, it requires a recent release of the Extension L
7
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
12
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
13
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
11
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
10
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
9
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
7
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
10
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
14
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
7
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
4
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
5
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
3
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
7
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
8
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
6
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
3
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
8
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
5
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
4
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
4
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
2
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
3
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
5
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
6
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 ".
5
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
4
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
5
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
5
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,
6
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
5
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
6
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
7
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
5
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
7
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




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