Category Archives: Lotus

Promotion, Self

I don’t post much about my job, but this was the nice writeup that my manager sent out to all of IT earlier this week about my new role.

I am pleased to announce that Derek Punaro has been promoted to IT Information Architect, a new job title created for the Sharewaves07 Collaboration Support team. Derek’s strong technical and business analytical skills make him an excellent fit for this position. In this role Derek continues to report to me.

Derek is instrumental in the continued success of our Sharewaves07 application. He is responsible for designing content and document management solutions. He works closely with business clients to gather requirements, design navigation hierarchies, metadata structures and user experience designs. He serves as a champion to promote the use of Praxair’s standard document and content management tools across the enterprise. And he assists in the development and delivery of training classes and self-study materials.

Starting with Praxair’s IT organization in January 2000, Derek began as an original member of Praxair’s first eCommerce project. Since then, he has been involved in many web based IT projects, including Airwaves and QuickPlace. Derek was a key participant in the SharePoint Document Management Project. He has been a member of the Collaboration Support Center since July, 2007.

Derek holds a Bachelor’s of Science in Information Technology from Rochester Institute of Technology. He is an IBM certified Application Developer and has expertise in a multitude of web technologies.

We look forward to Derek’s continued contributions to ITS. Please join me in congratulating Derek on his achievement.

It’s interesting for me, after spending 6 years working with Lotus Notes/Domino to now be involved largely with Microsoft technologies. It really opens your eyes to seeing what’s hype and what’s substance. But that’s a whole series of other blog posts there.

I do RSS

It’s not often that I talk about work. Frankly, I talk enough about work… at work. Besides, I know that most of you don’t want to hear the geeky details of my daily work life anyways.

Today, however, I launched something that’s as close to cutting edge as we get at Praxair – an RSS feed for Praxair.com.

Praxair.com RSS Praxair RSS in Sage

Many of you I’m sure don’t know what RSS is, or how it’s useful. I know this because many people in IT don’t know what RSS is, or how it’s useful. RSS stands for Really Simple Syndication. It’s a different way for websites to distribute their content, and more importantly a different way for you to consume it.

Bloggers and blog readers will love this as soon as they start using it. Almost all blogging software automatically creates an RSS feed for a blog’s content. Most bloggers not only write, but read a large number of blogs. Having a huge list of bookmarks to click through and check to see if there’s anything new isn’t a very efficient way to keep track of your favorite sites. This is where RSS helps out. When you subscribe, or add a feed to your RSS reader, it keeps track of what articles you’ve read and which ones you haven’t. Depending on your reader, you can click a button or even schedule it to automatically go and check all of the feeds you’re subscribed to for new content. This makes it very easy and very quick to see if any of your favorite bloggers have posted anything new.

I use the Sage RSS Reader plugin for Firefox. This enables me to never have to leave my browser. Firefox’s built-in Live Bookmarks feature is also a way of viewing RSS feeds. Internet Explorer 7 provides the capability to subscribe and manage feeds in the browser as well. Alternatively, there are several websites that will let you keep track of feeds, such as Bloglines or even the My Yahoo portal. Using Sage, I easily track about 75 different websites. If you use multiple computers, you can easily export and import your feed list, or choose to use one of the web hosted services.

Sage RSS reader

For the Lotus geeks out there, for Praxair.com I implemented an agent to dynamically create the feed. For now, we’re only supporting one feed, but the way the agent is constructed I can dynamically pass in the name of a view and a feed will automatically be rendered for the documents in that view. The feed title is also passed in, but the number of documents in the feed (at this point) is set in the agent. For now, we’re only providing excerpts of articles since the content is stored in Rich Text and rendered dynamically by Domino. We’re looking to provide the full HTML of the articles in the future, which makes for better usability for mobile devices and low-bandwidth connections.

It’s pretty exciting for me to be able to 1. work on something fairly close to the cutting edge, and 2. actually have something that I can show people outside of Praxair. So I did. 🙂

Just call me Mr. Derp

Mondays are why they invented coffee, and sometimes I should have multiple cups before laying hands on the keyboard.

My supervisor is on vacation this week, so it is a particularly good time to NOT cause any major catastrophes. As I eased into the morning, I needed to take a glance at our agent log database, where I noticed that a particular agent was still logging quite verbosely, and bits of information that the rest of the world probably shouldn’t see. I checked the ACL (that’s Access Control List, for you non-Lotus geeks) and noticed that by default, everyone could look at the database. Figuring that improving security was a good way to start off the week, I locked that db down so only the good guys had access to it.

A short time later, someone noticed a problem connecting to our job posting system, which had changes made to it on Friday. Since that’s primarily my supervisor’s area of responsibility, he was already notified and on the phone, not particularly happy to be in a conference call on a Monday morning of his first day off. This particular system is a third-party site which we provide single-sign on to via an agent, a form, a servlet, and some key info from the address book, so it’s a bit complex. Adding to that complexity was the fact that it was working for some of us, and not for others. Logically, we first checked the things that changed last week, then checked for differences between the servers in our cluster, then differences in the physical locations of the people having the issue, then on to the things we didn’t change, all the while trying to understand why the agent, which hasn’t changed since January, was suddenly spewing cryptic “Object variable not set” errors to the server console.

You know that sinking feeling you get when all of a sudden you realize the problem… and it’s your fault? Yeah. Me too. Turns out this particular agent ran with the permissions of the individual who clicked the link. This agent also needed to get a handle to the log database in case something went wrong so it could log it. Turns out that object variable that wasn’t set was due to the fact that nobody (except us developers) had access to the log database anymore. One small step for security, one giant leap backwards for my ego.

Luckily, my troubleshooting prowess only needed an hour to nail down the issue (how’s that for positive spin?) and the world was right once again. Still feels more like the agony of defeat, though.

A reformed sinner

Not a title you’d typically expect for a Lotus-geek related post, but I’m using it for good reason. A couple years ago I came up with this org chart hierarchy database that would create a visual representation of a person in the address book, showing their manager, their peers, and their subordinates, all based on the manager field in the person document. Our address book has some 25,000 documents in it, so the key was that all the relationships for each person needed to be calculated ahead of time so that we were essentially just displaying the document for the person being viewed at that moment. The logic wasn’t that difficult, but to handle both manager and name changes that might occur on a daily basis and update everyone’s document, it seemed that the best course of action to take was to wipe out the database and rebuild it every night. This worked fine… except that it usually took about 3-4 hours to run and occasionally failed. Not an easy agent to run in the middle of the day and expect to get any results in a timely manner.

So, while at Lotusphere this year, I talked to a developer in one of the labs about suggestions on rewriting it. He said that doing a comparison between the org chart document and their person document would be a lot faster than wiping the whole thing out and rebuilding it. So I put that project on my to-do list and it promptly got buried by a number of other things.

Well, last week the old org chart agent started failing more frequently, and we were tossing around some stopgap measures to fix it, when I decided that it wasn’t worth spending any more time on the old bastard and I was going to rewrite it. I struggled a bit with some of the logic to try and capture all the possible changes, but after three days of reprogramming and testing, my sinner agent has been reformed! Now, the initial building still takes about 2.5 – 3 hours, but the daily updates only take between 15 – 30 minutes! And since the database isn’t being wiped out every time, you can continue to use the org chart while updates are being made.

When I told my customer that the agent was born-again, their response was, “Hallelujah!”