Hosted By

Contact Me

Misc Links

OpenNTF BlogSphere LotusGeek CoComment Custom Button

Ads by Google

Welcome to keithstric.com!

I hope you find this site useful in some way or another. I strive to bring you all sorts of geeky information and solutions to your most frustrating of issues with the occasional rant on whatever topic, technical reviews and weblog. You'll also find many products that I've developed and make available for you to use however you like. So, grab a cup of coffee, sit down and visit for a while.

Very Cool Application

08/27/2010 12:03 PM By Keith Strickland

I had downloaded the Source Sniffer from OpenNTF a while back but never had the chance to mess with it. So, today I installed it and I'm very impressed. This is an awesome app when you have to search for something and don't have access to tools like the Ytria and Team Studio set of tools. Another bonus is it's available right in the Domino Designer client, just a button or right click away when you need it.

Another cool feature is the "Unused Variables" tab. It shows you all the declared variables that are not used. I don't like to leave these in an application, so this is a very welcome feature. Also the "Get All References" functions, these let you pick a design element from the Applications pane or from the Source Sniffer tab and it will show you all the references within the application for the selected element. Very cool! I'm sure there are even more features that I just haven't found yet.

The documentation for Source Sniffer is very good, it walks you right through installation and use. I've only used this for an hour or so and so far I really like it and think it will become an invaluable tool. So, go check it out, I bet you'll like it also.


Dynamic navigation in the Lotus Notes client?

12/14/2009 6:43 PM By Keith Strickland

I'm currently working on a project at work where we need to come up with a dynamic navigation structure for the Lotus Notes client, not the web client. This application that we're modifying currently has hard-coded views with hard-coded navigators pointing to said views. They also want the navigation to retain it's current looks, but that's another issue for another time.

One of the things we've been trying so far is using a categorized view in the left most "Nav" frame with code in the OnSelect event that fires off an agent that goes out and gets the appropriate documents and places them in a Shared/Private on First Use folder and then opens that folder in the "View" frame. While this works, performance is lacking while waiting on the agent to get the docs and put them in the folder.

Another idea we're working on is building a caption table in the Nav frame with an embedded view (the same view as above) only showing a single category and each caption row being the category that is shows. This actually looks just like the current version, however the issue with this is that the Caption rows will need to be hard-coded as will the "Show Single Category" option. Also, the OnSelect event doesn't seem to run in an embedded view. I may be wrong but that's the result we're getting. I need to re-read some of the posts out in the blogosphere about building programmable tables, if I remember correctly these were using the Caption style tables, I just have to find those posts.

The last thing we're trying is using an outline, with "Action" entries that opens a shared view instead of a Shared/Private on first use folder and uses @SetViewInfo to filter what is shown in the view. This is actually showing some promise but we still have the issue that the outline entries will need to be hard coded. Maybe we can build some hot spots on a form on the fly that will be able to replace the outline, I haven't tried this yet. As for @SetViewInfo I'm not entirely sure if using that formula on a shared view filters the view for the current user or if it actually filters the view for everyone that looks at it. We'll have to test that tomorrow.

Something else I would like to take a look at is using inline html to build the navigation structure dynamically, but this too may produce performance issues and my success ratio for displaying dynamic HTML in the notes client is somewhat waning. Now, the solution we end up with will have to be dynamic and retain the looks of the current application. Caption tables meet the looks criteria perfectly.

As this progresses I'll post our results so someone that needs to do something similar in the future can use the same technique if they so desire. So, have you ever implemented any dynamic navigation structures in the Lotus Notes client? If so, why not share with the class?


Top 10 Developer Software packages...

12/02/2009 11:32 AM By Keith Strickland

Today Bob Balfe posted about his top 10 Open Source developer tools, so I thought I would follow suit. Here are my top 10 open source developer tools not in any particular order:

  • Eclipse - This is a great open source programming tool. With it's many plug-ins you can develop in just about any language. I use it for Java, PHP, HTML, CSS and SQL programming. As Bob mentioned there are several commercial applications built on top of Eclipse and I thought I would mention another such as XMind
  • TextWrangler - This is a feature rich text editor which has formatting capabilities for most web languages. It's a great tool to just look at something real quick when you don't need a full on IDE
  • XMind - This is a great Mac OS X mind mapping package. While any mind mapping software is very useful for laying out the goals, requirements and steps needed to produce an application, I showcase XMind because it is for the Mac
  • Ditto - This is an application that runs in the background and captures everything you copy to the clip board. No more need to open a text editor to paste the things you copy so you don't loose it. I find this tool invaluable and use it daily. Not to mention, it's great to copy something I'm changing and then if I screw it up I've got a backup readily at hand, but this one is Windows only. For Mac the only one I've found that's worth anything is QuickSilver but it's kind of heavy duty just for the clip board manager, I never could get into all the keyboard shortcuts
  • The Gimp - This is an outstanding image editor. If you don't want to fork out the cash for Photoshop, the Gimp is the best alternative
  • WinMerge - This is a differencing and merging tool for windows. It allows you to compare the text of 2 different sources. This is an invaluable tool for finding the difference between two Text, PHP, Java or HTML files. However, this one is Windows only. For Mac take a look at DiffMerge
  • Firefox - An outstanding open source browser, combine it with Fire Bug and the Web Developer plugin and you've got a very powerful web development tool
  • Balsamiq Mockups - This is a great low fidelity prototyping tool. While this isn't really open source I'm listing it here because you can use the web based version or the trial. It doesn't allow you to do some things, but it will work
  • DimDim Web Conferencing - While not really on par with GoToMeeting it will work for screen sharing. You can't take control of a remote machine with it, but for getting several people together to look at a computer screen it's hard to beat. You can also setup your own DimDim server, however the support for this is very much lacking, I never could get it to work as I tried just for something to do one rainy weekend
  • Google - This is an invaluable tool for finding solutions to problems, inducing ideas and finding new techniques to try

Some honorable mentions that may/may not be open source:

  • All the Elgugi Software Products - These are great tools for a development shop, driving ideas, features, collaboration and community knowledge
  • W3Schools.com - A very good reference for CSS, HTML and Javascript
  • ColourLovers - A good resource for coming up with appealing color palettes
  • Apple Time Machine - A great backup utility. Can't say how many times it's saved an image or PHP file I screwed up

I know some of the things I listed aren't really open source but may just be free or just great tools that are worth the money. But all of these things I've listed get used a lot on all of my computers and are some of the first things I install on a new computer. So, I hope you enjoy these tools and while you're here, share your "can't do without" tools.


Private Calendar Folder - Display issue

11/20/2009 11:43 AM By Keith Strickland

I'm not sure if this is a bug with a calendar or with my thinking, I'm sure it's the latter. So, I turn to you oh gentle reader, to guide me to the proper technique or point out something that I've obviously missed.

So, here's the scenario... I've got a Shared/Private on First Use folder that displays as a calendar. Users pick what they want to show in the calendar which kicks off a script that goes and gets the requested documents and puts them in said folder and then displays the contents of the folder. So far, so good, the script is working as expected. The problem comes in though in the display of said documents, which I'll get to in a second. First, here's the design setup... the first column displays a multi-value field which contains date/times and the column is set to show multiple values as separate entries, which it does. Now, the field that is displayed in the first column for the document in question has a value of "11/17/2009 08:15:00 AM EST";"11/18/2009 12:00:00 PM EST". When viewing the contents of the folder from the designer client the folder shows what it is supposed to (see screen shot #1). However, when viewing the folder from the notes client, instead of 2 entries (one on 11/17/2009 and another on 11/18/2009 which is what you would expect) it is showing 4 entries, 1 on 11/17/2009, 2 on 11/18/2009 and 1 on 11/19/2009 (see screen shot #2). I have verified the UNID and it is in fact the same document and I can't figure out why the calendar display is working this way. So, hopefully someone can point me in the right direction, if you can possibly make sense out of what I just wrote.

{EDIT - Screen shots moved - Click Read More}
Continue Reading...

LotusScript, Dates and Times... Oh my

06/18/2009 3:26 PM By Keith Strickland

I've been messing with Date/Times here a lot lately and it's behaviour is rather inconsistent to say the least, especially NotesDateTime.LSLocalTime Sometimes it returns 06/18/2009 01:00:00 PM, other times it returns 6/18/2009 1:00:00 PM. I was wanting to use the Date/Time to do a lookup in a view, but due to the inconsistenc of LSLocalTime I've resorted to converting the Date/Time to a double and using that instead. This behaves much more reliably as you get the same number no matter what. What gave me this idea was this post over on Tim Tripcony 's site which is a rather interesting post and a nice shorthand way of handling date adjustments.

But sometimes I just get frustrated with the way Notes handles Date/Times.


Old App blues...

06/10/2009 8:03 PM By Keith Strickland

I'm currently working on a very large project that involves re-writing a bunch of apps that are part of a suite of applications and this suite is being used at multiple sites. These applications were written in the early 90s I assume, probably version 4.5? But this thing is full of hard coded references to many of the other databases and hardly any of the code is reusable in any way. Also, there are little pieces of code that reach out to these various databases from the various databases. So you may change something in one app and break god knows what in another app. Also, coding practices within these apps are very poor. For example, a variable is set to the value of another variable that got it's value from another variable which got it's value from a field in another database and so on. To say the least, this whole thing has been nothing but a mess, a rather big mess at that.

But the team I'm on developed a brand new version of one of the applications because that would be faster and more cost efficient than fixing all the hard coding. The old app had some of the design elements that are based on the data within the app, so if the data changes the design has to change. But this new app we developed had a more modern user interface, more features and if data changed the design didn't have to change. Nothing was hard coded and it is very configurable to operate the way the customer wants it to operate. We deployed this app and it has been being used for a few months now, which of course has a few months worth of new data in it.

Fast forward to today, the customer now wants to roll back to the app that we didn't remove the hard coding from, change the design elements to match the new data and change the hard coding to still be hard coded but work for the current site. This decision is based on the behaviour of one button and one feature. These are things that can be changed rather easily. I've never experienced a customer wanting to go back to a design that's impossible to maintain, performs poorly and by today's UI standards is butt ugly. They're going to end up paying twice as much as it would cost to just fix the few issues they have with the new version, not to mention the fact that they already paid for the new app which is now being trashed. Also by doing this, the other apps that interact with the new app will now be broken and have to be fixed, it's a rather nuclear reaction that results from this decision.

But what I really don't understand is, from a business point of view, why a decision like this would be made? I assume they've already paid a couple of hundred thousand dollars on this project (salary for a team of 4 developers, 2 project managers, among others for the past 8 months) and are getting ready to dump even more money into it by making the decision to go back. I'm just dumbfounded as to the reasoning behind this. We probably could have re-written the entire suite with this much man power and time for much less money. I may be wrong for posting this rant, but I'm hoping someone can provide me some of the reasoning that I'm obviously missing.

On another note, I'm currently working on a new Open Source project in my spare time, as code starts to come out for it I will post more about it. But for now, I'm going to keep it under wraps at least until I have a workable demo to highlight the initial idea. So, stay tuned for a useful (I hope) freebie in the near (again, I hope) future.


Layers bug in Lotus Notes 8.5 for Mac?

05/20/2009 10:24 AM By Keith Strickland

I was working a little bit last night on an application for work which I developed. I was testing to ensure the content on a layer was correct. But I noticed that the layer didn't display properly, it shows up behind the fields. I tried it on a different form and got the same experience. So, is this a bug?

Here is a screenshot from Lotus Notes 8.5 on Mac OSX 10.5.7:
LayerBug-MAC.png

Here is a screenshot from Lotus Notes 8.5 on Windows 7:
LayerBug-Windows7.png


SnTT: Using the Google Charts class to put Charts in a Lotus Notes application

04/29/2009 4:11 PM By Keith Strickland

The other day I posted about a Google Charts class I created to make it easier to put a Google Chart in your Lotus Notes/Domino application. Well, this SnTT will show you how you can incorporate this class and display some pretty charts in the Lotus Notes client. I've done other articles about using charts in your Lotus Notes applications, but I think this is probably the easiest and most elegant way of showing a chart. But, let's get to it shall we...

OK, we'll keep this simple so this article will fit within the 65k limit of lookups and such. But we'll need the following:

  • A form to display the chart on inside a Microsoft Web Browser control. Actually this could probably be a page without any ill effects
  • A form to store our HTML in
  • Some views properly sorted to get our data from
  • A view to store our HTML form in sorted by UNID
  • About an hour to put all of this together
  • A server to place this db on, this does not work locally!

Now, we'll start with our first form and call it GoogleCharts. We need to put a Computed field called SaveOptions and give it a value of "0". We then place a Microsoft Web Browser control on the form with the properties displayed below:
google-chart-browser-properties.jpg

The "SizeBelowFields" property will make the browser take up the entire window. I do this because I usually open these types of things within a frame and I want it to take up the whole frame so it looks nice. So, this is all that's needed for this form.

We now need another form which we'll call HTML. This form will contain 1 field named GoogleHTML. This should be hidden from web browsers. Now add below that field (ensure no hide-when is enabled) a computed text item with a value of "GoogleHTML" and mark it as Pass-Thru HTML and that's it for this form.

OK, let's create our view that will hold the HTML documents. This view should have a selection criteria of "SELECT Form="HTML"" and have one column with a formula of "@Text(@DocumentUniqueID)" and sort it ascending.

So our framework is there, we just need a view that we will get the data from that we want to use to populate our chart(s). Since we want to keep this simple we'll just create 2 views, one for categories (luCategories) and one for data (luData). The categories view will contain 5 documents so our chart isn't too cluttered and then the (luData) view will contain the data that we will get the raw numbers from.

Keep reading for the rest of this...


Continue Reading...

Google Charts Class

04/13/2009 1:28 PM By Keith Strickland

I created a class for building the URL for a Google Chart. It's kind-of a simple little class and is only for Line charts, Bar charts and Pie Charts. While the properties will support multiple data sets, the function that builds the actual URL doesn't currently support multiple datasets. Hopefully this will be a future enhancement. I got the initial idea from a post over on Jack Dausman's site after seeing that Google Charts now supports gif images.

But you can find the class in the downloads section of the website over there on the left. Let me know what you think and if you encounter any issues.

EDIT:
Seems I added the wrong .lss file, it didn't include the title and legend stuff. I apologize about that, but the version that was there is functional


Lotus Domino Designer 8.5 - Initial feelings/thoughts/etc.

03/31/2009 11:05 AM By Keith Strickland

I've been messing around with Lotus Notes 8.5 here lately and I must say this is a much better release than the 8.0.1 (never messed with 8.0.2) release. The designer client is also nice but I have run into a couple of things that are irrating to me.

  • Takes forever to open an application. This might actually be an issue with my machine as I only have 512MB of RAM
  • When you highlight a form or whatever in the main perspective/window/whatever and then in the properties that are shown below, select the fields tab and there is no scroll bar and using the arrow key doesn't move the list so you can see what you're selecting. However, highlight the form in the Application list perspective and you do get the scroll bar on the fields tab. OK, was trying to get some screenshots of this but now it seems to work since I highlighted the form in the Application list perspective, so it's kind of flakey
  • No custom class browser or type ahead support for custom classes. I thought I had read somewhere that this would be included but I may be wrong
  • Have to double-click a design element type (i.e. Forms) to open them up in the main perspective. This is really a non-issue, I just have to get used to it
  • The design element types in the application list perspective are in different places and categorized differently. Again, a non-issue, I just have to get used to it

Now there are quite a few things that I really like.

  • The properties perspective/frame/window/whatever is very handy indeed. It's nice to be able to see the fields, properties, etc of a design element without having to right-click and pick properties
  • Being able to customize the layout is awesome!
  • The help system opens in it's own perspective over on the side, a very welcome feature indeed, like I didn't already have enough windows open.
  • Highlight two forms in the application list perspective, right click and select Compare/Each Other. Very cool!
  • Highlight a form in the application list perspective, right click and select Edit with DXL. This brings up a DXL tree/editor of the selected form where you can edit the items. Another cool feature
  • Better support for web services
  • Theme support. I haven't messed with this yet but looks promising
  • Toolbars seem to stay where I put them

This is really a very short list as I've only been messing with it for a day or two, but my initial feelings are it's a very good release. I'm sure I'll probably find more after I've been using it for a while. The designer client seems to be very robust and offers a lot more features than previous versions, not to mention the eclipse IDE being very nice. I haven't been able to play with XPages yet as I don't have a Domino 8.5 test server yet, but hopefully that won't be too long from now. I'm also anxious to dig into the Theme support and see what's possible there. To say the least I'm excited about this release and I'm looking forward to digging into it deeper, of course as I find new cool stuff I'll report those findings here.


Subscribe to keithstric.com

OpenNTF

Disclaimer

The opinions and ideas posted on keithstric.com are not necessarily the opinions and ideas of my employer. The solutions, techniques and code provided here are not guaranteed or warranted in any way and are free for you to use at your own risk.