Americans sometimes use a funny little
expression: There's more than one way to skin a cat.
This is a (kind of creepy) way of saying
that there are several different ways to accomplish a given task. And this
is my challenge. My developer side says to do it one way, but my admin
side might have a different perspective. In the end, a decision must
be made one way or the other. Case in point:
Recently, I completed the first part
of a source code control and build process management implementation (FYI,
Teamstudio knows quite a bit about source code control). The team included
Chris Blatnick of Interface Matters
fame, Kevin Petitt of SuperNTF fame,
and Jamie Magee of Martin Scott and NoteMan Tools fame.
It really was special for me to be able to teach these guys anything.
All of us are familiar with other tools,
as well, like the ones from Ytria. The point here
is that you can be so much more productive if you invest in some tools.
Of course, we all prefer that you choose *our* tools, but what we really
want is to help you deliver the best solutions for your users in the most
cost effective way possible. At the risk of repeating myself, that generally
means you need to invest in some tools. (For what it's worth, I definitely
like the 'free' ones, but you should always keep in mind that you get what
you pay for).
Anyway, here's the challenge. I
came across an agent that created a document collection by doing a search.
My first reaction (from the developer side of my brain) was to just
create and use a view. Further review showed that the agent ran once
a week and only took 20 seconds. That's when my admin side took over,
and said: Why have the server maintain the index for this view all week
long, when it would only be used once a week?
Any thoughts? Is a search always
bad? How much overhead is noticeable when maintaining the view? Multiply
this by dozens of databases. How would you decide?
O
Category :
This year marked my 8th or 9th time attending
Lotusphere (if only I had a backpack to commemorate each one!).
I've always attended as an exhibitor.
Back in my Digital days, the senior management always wanted the full conference
passes, because in the early days exhibitors got boxed lunches and full-conference
badge holders go the fine dining hall.
Anyway, here's my personal take on the
show:
1. I got a nice surprise when someone
stopped me and asked if I was from Teamstudio. I have to say, whether they've
seen me present at a user group or at an on-site training at their company,
it is always nice to know that someone remembers my face, if not my name.
2. I was telling a "story"
to one of the attendees, and he said, "Oh, yeah, I read that in your
blog." That made me really happy. Even though you can't "Like"
a blog post, a la Facebook, it's great to know that people are reading
it. And speaking of the blog: stay tuned - there are many more horror stories
to come from that app I just got (app in the sense of multiple databases).
3. I attended more sessions this year
than last year. Mostly XPages-related (some extension library stuff,
and some mobile stuff). Not for nothing, but carrying a tablet around sure
gives you a very different perspective on UI design - who wants to scroll
through pages and pages of views or even documents?? On another note, this
was also the first year I didn't get over to Kimono's. Hmmm... Maybe Kimono's
visits are correlated with the number of sessions one attends...
4. I gained only two and a half pounds
this year. Part of this is due to the fact that I managed to get in two
runs during the week - thanks to the beautiful shorts - and - t-shirt weather.
The other factor was the dining hall closed for breakfast at 8 am, and
the showcase didn't open until 9:30. Let's just say those were early lunch
days.
5. Speaking of the showcase, I don't
think people take enough advantage of the resources available to them in
the product showcase. The exhibitors and sponsors do tend to know a little
about the problems their solutions address, and they are all willing to
talk to you for as long as you want. It may not be a problem you
are having today, but hey, you can talk to them for free!
6. Wouldn't it be nice if the certification
test lab was open on Sunday?
And finally...
7. Did you attend the Source Code Control
session? Even the overflow room was overflowing. The good news is that
there is clearly a lot of interest in source code control. That's all I'm
saying. I don't care what kind of source code control system you use, just
use one. Having said that, if you're interested in a system that
has been around for more than 10 years, and knows what a Notes database
is, you could ask someone from Teamstudio about that. We also know
a thing or two about maintaining a proper development environment - keeping
it separate from your production environment. Hint: it's more than just
source code control.
How about you? What did you think of
this year's show?
O
Category :
Lotusphere 2012 source code control XPages
I recently inherited responsibility for
maintaining some applications. At the same time, we happen to be
decommissioning a server, so I needed to change the Server to Run On for
the agents. And, for some reason, I had to ask: "What does this
agent do, anyway?"
Turns out, this was the agent that runs
once a week against all documents in the database. Well, first of
all, it doesn't *really* run against all documents in the database. I don't
think it matters much, but target of your agents should be set properly.
Second, this agent looks up the market
segment of a customer in another database. Remember, this runs every week.
It would seem that, if this information is required, it should be flagged
as a required field on entry. In theory, at the end of the run, every
document should have a proper value. So why are there over 1,200
documents being processed every week? The agent doesn't care if it
finds a value or not. So it runs over the same documents every week
(just in case).
It is also does the look up using a
view that has all documents in the other database, even though there are
way fewer documents of the type that have the information we are looking
for. This is a symptom of. "It works in development with a couple
hundred documents, so why should I care how it works with a hundred thousand
documents?" Using a better view could probably reduce the run
time.
So why are we running this agent anyway?
This is where a good change management application would come in
handy. And who uses this information? Let's go to the change
request... Oops! There isn't one. So let's just ask all the
users. Apparently, this information isn't actually used because the
one view that categorizes this field has the familiar '(Not Categorized)'
category. This agent doesn't even solve a problem completely, so
it's not much of a solution.
What's the big deal? The agent
runs on weekends and only takes 12 seconds. But multiply this agent
by all the useless agents and databases and servers and pretty soon you
see why users (and management) think Notes sucks.
I think I'm just going to disable this
agent and see if anyone complains.
By the way, I think it makes sense to
switch up ownership of applications every once in a while, just so someone
can ask those stupid questions. You might also see someone else's
clever solution to a problem you've wrestled with before.
That said, I'm happy to volunteer to
look at one of your applications if you like. Any takers?
O
Category :
I recently inherited an application from
someone who inherited it from someone else.
It reminded me of something I discovered
back in the R4 days: When you copy and paste a field multiple times, Notes
takes the original field name and then adds an underscore and a sequential
number (as in Product, Product_1, Product_2, etc.). The problem comes
when you have to loop through each field -- and who hasn't had to do that?
What you get is something like this:
For x = 0 To 15
If x =0 Then
newDoc.Product
= doc.Product(0)
Else
newDoc.replaceitem(
"Product_" + Cstr( x ) ) = doc.getitemvalue( "Product_"
+ Cstr( x ) )
End If
Next
Which is horribly inefficient. All right,
you can make it better by putting the first clause outside the loop. But
still...
So here's the tip: Go back to the first
field and rename it with an underscore and a "0," as in Product_0.
Now just do the loop with no "if." Using a tool like
Ytria's scanEZ, you can change the documents in your database without
writing a one-time agent.
And now for the "and more"
segment of this post: I just got a new car (a Mini Cooper S hardtop)! And
I'm just amazed at how technology in cars keeps changing. My whole
car is a hands-free headset! When I get into the car, it says "hello"
to my BlackBerry. And, when a call comes in, radio is automatically
turned down, and the call is put through to all 8 of my speakers. So cool.
While we're on the subject of ever-improving
technology, have you seen what Teamstudio has done with DDE since 8.5.2?
CIAO!, our source code control product, is now beautifully integrated
into the Designer navigator. You get a nice little icon to tell you
that CIAO is watching your design elements for changes. And it gives you
a nice little check mark when you have an element checked out to make changes.
It also shows you if someone else has it checked out. I think you'll
like it. Send a note to contactus@teamstudio.com, or go to http://www.teamstudio.com
for more information.
O
Category :
I'll admit to using punch cards during
my college programming years - and this was at a world famous engineering
college in IBM's back yard. Those were the old days... But it still takes
me awhile to try new things. Only recently did I create a list where each
entry was an object - my first class and my first list all at once.
I'll also admit that a lot of my programming
bravado comes from the guys down the hall here at the Teamstudio office.
You see, I don't consider myself a developer, even though I have
been writing code (or punching cards) for a long time. But I know I am
really good at solving problems and I know bad code when I see it.
So, in the interest of learning new
things, I've recently started following a blog written by one of the guys
down the hall: Craig Schumann. You may have heard of him. In
his blog, he's exploring some of the newer technologies (new to me anyway),
and he includes links to interesting posts by other bloggers as well.
It's well worth your time to check out
his blog. You'll find it here: http://notesonmobile.tumblr.com/archive.
Be sure to start from the beginning, so you'll understand the progression.
Hey, at this rate, I may even try out
some CSS someday soon!
O
Category :