About Me...

NotesRunningLogoRSmall.png

I'm Kathy Brown and I've been an application developer in Lotus Notes/Domino since 2005.

Prior to working in IT, I've had numerous careers including an Investment Analyst and even an Actress (long ago and far away).

And I (try to) love running!

me.jpg

kathy (at) runningnotes (dot) net

On Twitter, kjbrown13

Upcoming Races

Looking 4 Something?

Disclaimer

This is my personal blog. None of the opinions shown here represent those of my employer. In fact, forget I even have an employer. Any examples given here are strictly fictional and hypothetical and it is pure coincidence if they in any way seem like anything in real life.

05/25/2010

Transform Yourself or At Least Your Code

Category Formula Lotus
I think @Formula is a frequently forgotten art of Lotus development. Many people start out learning @Formula, then move on to LotusScript and don't look back. That can be a mistake as @Formula can sometimes be more efficient than LotusScript. There are @functions that just don't exist in LotusScript, or require fewer lines of code, or take more parameters.

Today I bring you @Transform. @Transform can be used to transform a value, or even better, a list of values. Take for example a list of user-entered values. The values were supposed to be in percentages. Some users entered "50" meaning 50% and others entered "0.50" also meaning 50%. How can we take the list of values and only change those that were in the incorrect format? @Transform, of course!

We'd like to show all of our values in decimal format, so all we need to do is use the following code:

@Transform (valueList; "x"; @If (x>1; x/100; x) )

This translates into: for each value in "valueList", which we will call "x", if that value is greater than 1, then divide it by 100, otherwise, leave it as is.

Another example is my running log. Say we would like to transform all the values in a list of running times from minutes to seconds. But again, we are concerned that some users may have already entered the data in seconds. TRANSFORM! (Picture me like Harry Potter with my wand when you read that).

@Transform (valueList; "x"; @If (x<60; x*60; x) )

This formula assumes that if the user entered a value greater than 60 then they must have entered the value in seconds, not minutes.

As with many @Functions, you are only limited by your imagination and creativity in coming up with ways to utilize the formula. Any formula can be used as the third parameter in @Transform, including @Nothing:

@Transform (valueList; "x"; @If (x<60; x*60; @Nothing) )

Similar to the previous examples, but returns nothing for a value if the value does not meet the criteria, effectively removing the value from the list.

Happy Transforming!

05/04/2010

Conferences, Conferences, Conferences

Category Conferences Lotus
I am looking forward to several conferences this year and have been planning/making travel arrangements/writing abstract submissions like crazy. I hope to see you at some or all of these events.

So where am I going?

Next week, as you may recall, I am speaking at the View's Developer2010 conference in Boston. I have two sessions, one on @Formula, and the other on tips for developers.

In early August, I am headed to IamLUG. I had a GREAT time last year and am really looking forward to this year. Last year I attended some really great sessions, and I'm sure this year will be no different. I am especially excited about the extra day they have added, TackItOn, with a chance to attend Matt White's Xpages101 day, or SNAPPS iPhone Dev Day, or Chris Miller's Domino Optimization Tour.

"BrownBert" as we've been dubbed, will be speaking at IamLUG as well. That's right, Tom and I will reunite to present an updated version of our Lotusphere session. New & Improved - Now With More Short Jokes!

And lastly (for now), I'm planning to attend ILUG. I am very excited as I have never been across the pond. I've submitted an abstract to speak as well, but am excited to go no matter if I am speaking or not. I've heard great things about ILUG/UKLUG and can't wait to attend!

By then it'll be time to submit abstracts for Lotusphere 2011!!

10/19/2009

How did I miss this? WhichFolders

Category Lotus Domino Folders
Thanks to Charles Robinson's most recent blog post about the All Documents view in the 8.5.1 mail template, I saw that you can now see in what folder a particular document is located. While this is exciting for my mail template (and for many users when they find something in All Documents, but have no idea where the doc is located), it is even MORE exciting from a development perspective. HOW did they do that? A quick peek in the design of the mail template reveals, @WhichFolders.

Apparently, lots of people way more observant than me noticed this, like these guys... Steve Castledine Bastian Wieczorek and Adam Osborne

Anyway, apparently it doesn't work well in agents, or @If statements, or well, anywhere other than a view column formula. BUT STILL, this solves some user requests I've had and does it quickly and easily. Woohoo!

Disclaimer: I am easily impressed when it comes to code that makes my life easier.

07/16/2009

I AM IAMLUG

Category IAMLUG Lotus Conferences
I AM IAMLUG

Cue Ironman (Black Sabbeth, not the movie)

I’m not the only one that sings Ironman when I think of IAMLUG, right? Right? Anyone?

Anywhoo, I am going to IAMLUG in August. Details HERE.

I am really looking forward to it, lots of great sessions, lots of great speakers, and it’s FREE!

If you’re going, don’t forget your running shoes! I heard there are some beautiful routes to run along the river.

05/14/2009

DXLMagic for Dummies

Category DXL Lotus
I recently needed to look through an application to determine if a view was used anywhere in the application. A common requirement, right? A quick Tweet, and several people said DXL was the answer to my question. Dump out the design into a file and search through it for the view. Done. But how to accomplish it?

A few posts ago I dabbled in DXL. Just one folder, which I manually exported to a file, but used DXL to create a new one from the file. So, how to export the design of an entire application? Enter Stephan Wissel's completely awesome DXLMagic. I missed this session at Lotusphere, but lucky for me and others that missed it, he's got a ton of great information on his blog.

So I titled this entry DXLMagic for Dummies, because, well, I am a dummy. He has very detailed instructions on his blog about how to get started and I still managed to screw it up. I'm blogging about it in the event someone else is a dummy and runs into the same problem.

Okay, so if you're interested. Go look at Stephan's instructions. Pretty detailed, right? Go to Openntf.org to download the latest and greatest (and it IT great) jar file of DXLMagic. Now, Stephan's instructions say that if you are using a Windows machine (I know, my first mistake) to add three lines to your autoexec.bat file. I can follow instructions pretty well, so I did that. File, open, type type type. Save. Reboot for good measure. Now he lists several commands at our disposal. I was first and foremost interested in DesignExporter.

Note to Dummies: we are going to enter the commands at a command prompt. (You know, Start, Run, cmd).

Another note to Dummies: Stephan's instructions say to start the command with java [command] [parameters]. In my excitement, I missed this for my first several attempts. Surprisingly, it doesn't work if you forget the word java at the beginning.

I got an error. Shocking, right? I checked my Java version. Stephan's instructions do say that this will work with 6, maybe 5, but definitely 6. Okay, I had the latest and greatest from the Java site. Now what? Check my typing in the autoexec.bat. Yep, it all looks good. Per Stephan's instructions, I have my file paths in quotes since Notes is buried under "Program Files", which has a space in it. Still nothing, still getting "NoClassDefFoundError" "java.lang.ClassNotFoundException".

Around this point, I sent out an SOS on Twitter, which Stephan was kind enough to respond to himself. He tried to help me out a bit, but since this wasn't a problem with his code, I felt a bit bad about pestering him. I kept trying on my own. Still nothing. Still the same error.

Messing around a bit more and typing SET in the command prompt showed that the other settings from the autoexec.bat were in effect, except CLASSPATH. For reasons uknown to me, they didn't take. So, I manually typed SET CLASSPATH=[stuff from Stephan's instructions]. This was a test box, so I didn't really care if I broke other things. You may feel differently. I navigated to the directory where the DXLMagic.jar file was located. I have no idea if that mattered, I'm just tellin ya what worked for me. And that did indeed work!

Can I say how fabulous this tool is? IT IS FABULOUS. And so easy to use (you know, once you get it working). And so useful! I had a blast (yes, I am a geek) searching through the design of my application just looking for stuff, because, you know, I could. So newbies/dummies, don't be afraid of DXL, jump in! Have fun! Check out Stephan's blog! [ETA: actual error message above]