Monday, December 8, 2014

The similarities are amazing.

I got laid off not too long ago (not bad, 4 times in almost 40 years and twice I asked to be laid off) and I started to use Salesforce to track my job search. It is a sales process after all. Then I started looking under the hood and found that Salesforce is not just a CRM.  You can build many different kinds of applications with Salesforce, just like Domino. You can use a drag and drop interface to create simple forms and views, build relationships between different document types, do field validations, and even use simple formulas to perform calculations. And there is a more powerful scripting language to add some automation or workflow. Sound familiar?

But wait, there's more. This easy to use interface means the person that knows some Excel formula's is now a 'developer'. And these newborn developers don't know what a development environment is, much less source code control, so changes are made in production with the resulting occasional loss of productivity while corrections are made.  It is so easy to create new applications that it is hard to keep track of what is being used. And have you ever seen an out of control security model where admins don't make changes for fear of breaking someone's access?

But the similarities between Salesforce and Domino do digress. Many of you are looking forward to going to Connect shortly, There you are expecting maybe 10,000 attendees, and hoping more than half are not IBMers. Well, Salesforce just had their big trade show called Dreamforce, and there were 140,000 attendees.

Another difference is if you go to your favorite job search site and look for Domino developer positions and then search for Salesforce developer positions, let me know what you find.

Monday, March 24, 2014

Source code control is like turn signals

Everyone has access to the tools, but most people use them wrong! A brief example - when people are on the on ramp and need to 'merge', they put on their turn signal. They aren't changing lanes, so what's the point?  And that is probably the last time they use their signals, including when they exit the highway. This is the most critical time to use them, to indicate to drivers behind you that you are likely to slow down in the travel lane to reach the exit ramp speed.

Anyway, source code control is misused just as frequently. We all have seen the application with design elements named 'Copy of...' or worse 'Another Copy of...'  We also have seen design elements with a date after them. This is NOT source code control. Go to you primary business application and click on the Create menu item. What do you see? Artifacts that some developer forgot to click the do not show in create menu box. How about the Actions menu item? How many actions show up that you wouldn't want a user to try? How about View, then Go To...? All of those 'extra' views get indexed, taking up resources - both CPU and disk space. Multiply that by the number of replica copies and you get the idea.

Now, knowing that I was a Technical Director at Teamstudio, you might think I would be advocating for a source code control system like Teamstudio CIAO, but you'd be wrong. That is an excellent tool but it is misused as much as turn signals! One of the things CIAO provides is design element locking. These days, that is less of an issue because of the decline in the number of teams of developers. And how does this get misused? Check out a design element and never check it in! You get no history of the changes you make along the way, so no real benefits.

Maybe you prefer an open source product like Git. That's great too, but you have to configure it and use it.

All I'm suggesting is something as simple as making a design only copy of the database before you start making changes. Now you can just make your enhancements because you now have snapshot of the design elements before you started making changes! Even better, this can be reduced to a single button that also stores the copy in a database, getting it out of the file system in the process.

If you want to know more, contact me. My email these days is jkingsley.ma at gmail.com.

Tuesday, March 4, 2014

Introductory special offer

After 22 years of Domino development, I find myself once again working for myself.  And do you know what that means?  No corporate overhead, no middlemen taking a cut for my work.  Which means I can offer lower rates than ever.  In fact, to introduce you to what I can do, for the month of March, I am offering my services for half my normal rate.

Why should you use me?  How do you know me?  Maybe you attended one of my sessions at a user group meeting, including MWLUG last year.  Maybe you were in one of my training sessions or demos during my time as a Technical Director at Teamstudio.  Maybe you have read my blog before - such as the time I hit the What's Hot corner on PlanetLotus.  Or maybe you attended one of my webinars, including the one I did with Rocky Oliver.

So if you have some enhancements or maybe bug fixes that you have been delaying because of rates, this is the time to act.  I have done work for clients in many states, and can VPN to any network.  I even had one client send me an encrypted laptop to access their network.  If you prefer to have someone on-site, I am available for travel, but that costs extra.

If you want to discuss your situation further, contact me by email - jkingsley.ma at gmail.com

Wednesday, August 28, 2013

And the correct answer is...

Last time I wrote about Designer Help.  One reader correctly pointed out that if I wasn't so lazy, I just had to add the word 'formula' to my search string.  An even better answer came from Julian Robichaux at his session at MWLug last week.  It is to set the search scope.


It is not real intuitive, but click the link, select 'Search only the following topics', click 'New', name your list, and select only the stuff you want.  I always wondered how items for Workbench and Sametime showed in my search results.

Monday, August 19, 2013

This is not a trick!

Go to Help Contents with your Social Edition designer client and enter '@Member' into the search box.  The old, familiar, formula language reference is the 15th entry on the third page!  And why did I notice this?  I use Help all the time.  I mean, does the value or stringlist come first?  Depends on the function.  And whats the difference between @IsMember and @Member?  If I had to remember all this, I might not have room to remember my wife's cell phone number, which is pretty important.

So have you noticed the reformatting of the help file?  It looks like a lot of work went into this, but I wish they spent more time improving the run time error handling engine.  I mean, really - "Object variable not set"? Can you please tell me what variable?  And they same for "Type mismatch".  Although I do this so often I tend to find this pretty quickly.  And here is where the help files could be improved - the examples are too simplified.  They use constants in a lot of places where real developers might use a variable.

And I know everyone is focusing on xPages, but I still work with a lot of clients that have traditional Notes apps, and need to have small changes or even big fixes.  So, I still use help on a regular basis so I appreciate any changes, and keep them coming.

Wednesday, April 24, 2013

I am sorry I am a user...


Because someone can get a patent for 'slide to the right' to unlock.  My Android phone used to be 'slide down' to unlock to get around this patent.  I guess too many people slide their phones in their pockets and 'butt dialed' too many people so now it is 'slide up' to unlock, meaning my phone is now in my hand.  All of this is completely arbitrary, non-intuitive, and in no way inventive or unique!  But to be safe, I have filed a patent for a motion sensitive method of unlocking a phone which involves a one finger salute.  I am going to be rich!  It is only a matter of time before you can just wave at your phone, or point at it, or whatever, to unlock it, so I am just getting ahead of the curve.

My real point?  The 'X' to close a window on Microsoft machines is on the top right, and on the top left for Apple machines.  WTF?  Did studies show too many users closed their windows when they were trying to get the Edit or File menu?  A user interface should be designed for consistency so users don't have to think about how to accomplish a task.  Is it a button?  An action menu item?  A tool bar button?  What does that icon mean anyway?  All I am saying is spend a few minutes thinking about your buttons and actions.  Does 'Close' do a save and close?  How do I get out of this document? Why is it different than all the rest?

This is one of those issues dating back to the early days of Notes.  Hitting ESC closes a window.  So does clicking the 'X' on the top.  So do I need to include an action to close a document?  Well, if you do it for one form, you have to do it for every form.  Consistency is all it is cracked up to be.

Make it easy for your users to accomplish the task your application is supposed to help them achieve, and everyone will be much happier!  It is not Notes that sucks, it is your UI!

Friday, January 25, 2013

And for those of us not going to Connect 2013...

Which pretty much means this won't apply to anyone who reads this.  In my experience, the people who need the most help don't tend to seek it out in either blog posts, PlanetLotus.org, any of the forums or at user group meetings.

In any event, I was recently asked by a client why I sent him design changes in an NSF versus an NTF.  This is a topic I dealt with rather frequently when I was a Technical Director at Teamstudio.  Many people think it has to do with design inheritance, but it doesn't.  The biggest differences are an NTF will not show up in an 'open database' dialog box, hiding it from every day users.  Also, any scheduled agents will not run.  And lastly, design elements in an NTF can not be previewed in a web browser.  Which all make an NTF a great way to manage design changes.

But from an inheritance view point, that is controlled at the database level by the fourth tab on the properties dialog, indicating either inherit from template or it is a template.  At the design element level, it is controlled by a setting in the design tab of the elements properties.

At design refresh time, either manually invoked or by the Design task, databases are refreshed at the database level by the inherit from setting, and then at the design element level.  And as was the case with my client, I was making modifications to the mail template, and wanted to be sure the process was repeatable for the next release of Domino.  So my changes where in a database that could be an NSF or NTF (but best practice says design elements should be in an NTF).  These changes were used to refresh design elements at the element level in the mail template.  This results in a cascading design refresh situation - the template gets refreshed from the custom design element database, and then the user mail files get updated by the mail template.  Note that this element level inheritance is not inherited.  So, the user mail files get ALL their design changes from the mail template, not some from the template and some from the custom design element database.

And in a final comment about design inheritance, a review of what databases are being used in your environment (a common precursor to upgrades, server consolidation, or migration from Notes), needs to include design element level inheritance, and not just database level inheritance as shown in the database Catalog.

I usually recommend a manual refresh of the template from any updates I send, and then allow the design task to refresh all the user files.  This is the cleanest way to ensure updates take place in a controlled manner.

I hope this helps.  And if you are going to Connect 2013, have a great time!