08/27/2010

Help Us Help You



Back in my days of Notes Application development at Iris, when we were first developing Web-based Domino applications with LotusScript, the general feeling was that they were too slow.  We never felt that we could improve the performance except by trial and error. Countless hours were spent changing field names, view names, form names, any design element name to the latest company "standard."

By far, one of the most frustrating issues the Iris template team faced was how a team of developers could work on the same Notes application at the same time.  We were quite jealous of the core Notes developers and their fancy source code control system. They could easily pinpoint when a change was made, what the change was, and then easily roll that change out. They also had a plethora of tools to choose from, for performance tuning, unit testing and coding standards.

Obviously the rest of the Notes application development community was also sharing the pain of the core Notes developers, because in 1996, Teamstudio came along with their initial set of tools to help the poor frustrated Notes developer get a little more sleep. Teamstudio seemed to have a tool for every pain point, so why didn't our Notes application development team use them? We were aware of Teamstudio CIAO!, but always felt that we couldn't use it because it wouldn't work with new design elements, or with any modifications which may have been made to existing elements. However, in hindsight, we could have used it for our maintenance stream.

We could have also used other tools, such as Teamstudio Analyzer, to create a snapshot of templates which had shipped. We could have used the reporting mechanism of Teamstudio Delta for creating a list of differences in our templates between releases, which could have showed what we had fixed. And Teamstudio Profiler could have been used to show us the things we *shouldn't* have been doing with LotusScript...  

Obviously, I could go on and on here, and we all know that hindsight is 20/20. But my point is that the Notes community needs to be a bit more adventurous when seeking out tools that could help get the job done. Instead of making excuses about why tools won't work, I encourage everyone to try them. They may not fit your needs perfectly, but they may save you enough time and money to justify their expense. And finally, when you find something you like, spread the word! How about right now: What's your favorite Teamstudio tool?



O Category :

08/18/2010

Such A Shame There Is So Much Corn To Harvest Out There...



Have you ever heard an independent Notes consultant complaining about the quality or lack of options for implementation, configuration and training with the latest release of Notes or other Lotus products?  It's almost like hearing a farmer saying, "It's too bad, there's a lot of corn out there that needs to be harvested this year."

This always strikes me as funny, because I'd think that would be cause for rejoicing. After all, it only means more work for them!

A consultant I've known for years has a different and more refreshing perspective on this situation: He says that the day IBM Lotus releases an absolutely perfect product that's easy to configure and understand is the day he is out of business. He's happy when Lotus releases a new version, and he's confident that they will continue to do so. In fact, he's counting on them to help fund his kids' college education - and they're currently in grade school!

This is not unusual in the IT world. There are bigger software companies out there that release products that do not meet customer expectations - but this is exactly why consultants are out there, making money.

Teamstudio has been in the Notes business for many years, and we've made our living by filling functionality gaps in the Lotus products and assisting customers with automating difficult development and administrative tasks. In recent years, we've seen the market shrink, mainly because of the centralization of development and administrative efforts by our clients - and of course, the changes in the overall global economic situation. We've come to see the consulting area as an opportunity to round out our portfolio of offerings in order to provide our customers with more complete solutions to their issues.

Using our unique tool set as the basis for providing technology enhanced services to automate mundane tasks, we've defined many service offerings on both the development and administrative side of the house, We've also opened up the opportunity to partner with some consultants in the Notes world, in order to help them automate tasks and make it easier for them to provide their customers with complete solutions.

In other words, we can help make harvesting all that corn faster and easier!


O Category :

08/09/2010

Debugging Java (and XPages) in DDE



I've been experimenting with debugging Java in Agents, Java Script Libraries, and XPages directly in DDE using the Eclipse debugger and remote debugging.   Since I haven't seen much on the topic, I thought I'd post what I've learned here, in case it's of use, and out of curiosity if others had tips to share.

Ever since Java was introduced to Notes we've been without an integrated debugger for Java.  I'm sure I'm not the only one who hoped we'd finally see it in Domino Designer in Eclipse (DDE).  True, the Eclipse/Expeditor foundation of DDE includes the Eclipse Java debugger, but to date we still have no easy way to launch it to debug Java in the context of a Notes database.
(  read more...)
Read More


O Category :

08/05/2010

To See Or Not To See? That Is The Question.



XPages are now becoming the way that developers are writing and extending apps to the Web and beyond. One of the (many) quirks I've found, which cost me several hours, was the ‘visibility’ property for each control.

visible.png

Generally, there are two reasons for using this property on controls. The first is to show or hide a control, depending on who is logged in and using the application. For example; an approval button may only show up for managers, not general users.

This can be achieved by entering something similar to the following code in the ‘computed’ value for the visibility property:

var roles:Array = database.queryAccessRoles(session.getEffectiveUserNAme());
@IsMember(“ole, roles);

The other main reason is to hide or show a control, depending on the input from another control. For example; a text box displaying when a option for a combo box is selected, or if a check box is checked.

In this case, I would create a comb box with some options, such as ‘approve’, ‘approve with comments’, ‘deny’ and ‘deny with comments’, and  uncheck the visibility box of the text box. Then, I'd write some code in the event handler for the combo box (or check box, or button, or whatever) to display the text box control when appropriate.

However… this does not work! The text box never appears on the page (no matter how many times I select different options ;-))

After thinking this was a problem with my event handler code - I tried to set several properties, visible=true, rendered=true, etc.- I was about to give in and try a different method. Instead, I decided to look at the source code for the control and found the following:

<xp:inputText id=”inputText” rendered=”false”></xp: inputText >

Aha…. What’s this??? “rendered=false”!!!! The light bulb above my head went on!

‘Rendered’ is not the same as ‘visible’! No matter what you do, the web page will never be able to show this control, as it is never rendered at run time.

Metaphorically speaking: If I don't see a car coming while I'm crossing the street and it hits me, I get killed. Although the car is not visible, it's still there, and it still hits me - I just didn't see it.

For Xpages to dynamically display controls, or contents within control containers, the web page has to use Javascript in the event handler and round trip to the server. Therefore, the following code entered in the onchange event of the combo box is one way to achieve this:

var cBox:javax.faces.component.UIComponent = getComponent("comboBox");
var option= cBox.getValue();
var textBox:javax.faces.component.UIComponent = getComponent("inputText");
if ((option == "approve with comments") || (option == "deny with comments"))
textBox.setRendered(true);
else
textBox.setRendered(false);

For the scenario in which you require hidden fields, there is a control that is, for some ironic reason, hidden. You can access it in the Preferences menu of Designer 8.5.1, and you can bind this to any field in your Notes documents, just as you would with other types of controls.

hidden_input.png



O Category :

07/30/2010

Which is Your Favorite Notes Release?




A customer recently asked me that question were waiting for his Notes client to finish crashing and restarting. His favorite was 6.5.8.

For me, the correct answer is: All of them!  I don't know if I could name my favorite, but I do know the release I couldn't wait to get - Release 3.  To me, this release greatly expanded the automation of applications over what was possible in Release 2.  Release 2 seemed like discussion databases with notifications (think Sharepoint without the security or offline operation, only 18 years earlier).    

How about you?  What was your favorite release?


O Category :

Feeds

Custom Button Custom Button

Category Cloud

Disclaimer

The views expressed by the authors on this blog do not necessarily reflect the views of Teamstudio, those who link to this blog, or even the author’s mother, father, sister, brother, uncle, aunt, grandparents, cousins, step relations, any other blood relative - and sometimes not even the author himself or herself.

Comments on this website are the sole responsibility of their writers and it is assumed those writers will take full responsibility, liability, and blame for any libel or litigation that results from something written in, or as a direct result of something written in, a comment. The accuracy, completeness, veracity, honesty, exactitude, factuality and politeness of comments are not guaranteed. Oh, how they are SO not guaranteed.