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.

The new iMac CS (Coffee Sub)

12/24/2009 9:20 AM By Keith Strickland
QuickImage

From LifeHacker today:

Have you ever wondered why the coffeemaker in your kitchen doesn't have a subwoofer attached to it? Us too! And if you're going to put a sub on there, you might as well include a Mac mini, right? And when you really think about it, isn't the only case worthy of holding all that stuff an iMac DV? It just makes sense.

I just thought this was a cool idea, I don't think it would be useful for much really, but just goes to show how imaginative some people can be. But here is the site. for the guy who came up with it. He also has some other gadgets he came up with there also.


My year in review

12/23/2009 9:36 AM By Keith Strickland

This year has been something else, both technically and personally and has been quite a ride. So without further ado and not in any particular order...

  • The recession really hit home, with the new year both my wife and I labelled 2008 as the year from hell and that continued through 2009. We will get somewhat of a break come Feburary 2010
  • Got my first real smart phone, the T-Mobile My Touch. This is the greatest gadget I've ever owned and it gets used a lot (Thanks Baby!), not only as a phone but also an internet device, portal to all things Google, data modem in a pinch, game platform (makes waiting in a waiting room almost bearable), shopping assistant and resturant finder
  • Started using Lotus Connections Activities to keep track of my professional to-do items. This is a great product
  • We became a Mac family with the purchase of 2 27" iMac computers and we wish this had happened sooner
  • My family went and saw Sugarland (the country music group) and it was my daughters' first trip to the Fabulous Fox Theater in Atlanta. If you live in GA you really should visit the Fox. It's a very historical theater and a wonderful place to see broadway type shows, concerts and anything else that requires a stage
  • My family went and saw the King Tut exhibit, which was amazing!
  • I developed and continue to tweak the Google Charts class, what a handy-dandy tool that is, and the price is right
  • I delved into the inner workings of BlogSphere which gave me all kinds of content for the blog and I think I ended up with a very good layout for keithstric.com in the end. I also supplied my changes to Declan for inclusion in the next version, hopefully and made the theme used for keithstric.com available for download
  • The team I work with "finished" up development on the project from hell, however some develoment is still ongoing and probably always will be
  • I started working on an Open Source project that will get finished at some point in time that is driven by XPages. This was/is quite the learning experience
  • I worked on a PHP project for one of my other customers which may turn into a money making opportunity with a package for Zen Cart (an online store Open Source platform). I just have to get off my butt and document and then publish it
  • While politics at my flying club have started to wind down, drama still manages to push it's way into our club meetings and club operations
  • My Grand father gave us quite a scare and showed us just how tough he still is. At 93 he's still out farming and working. Hope I'm able to do half of what he does if I reach his age (there is a side story if you care to "Continue Reading...")
  • This is the first year that our daughters will not be home on Christmas morning. One will be at her dad's and the other is in Michigan
  • I labelled this year as the year of Family surgery with my Grand father, Mother and Dad having surgery this past year
  • My daughters were involved in their first car accident which scared me to death. They were un-injured and handled it better than I did, even though the other motorist was a jerk
  • I made my first custom computer background that was good enough to publish, and it gets quite a bit of traffic both here and at deviantart.com

Well that wraps up my year in review, everyone have a very Merry Christmas and Happy Holidays


Continue Reading...

SnTT: Put Google Site Search Results in the Content pane of BlogSphere

12/21/2009 10:06 AM By Keith Strickland
QuickImage

As you are probably aware of, I've been revamping keithstric.com. In that revamp I wanted to add a Google Custom Search (CSE) engine to search only my site. Making the CSE was easy enough with the wizard Google supplies but, I didn't like the way that it either redirected you to a google page or you had to submit the search to another dedicated page on your site. So I set on the quest of getting the results to show up where the content of my website usually shows up. Below I list all the things I tried and then what finally succeeded.

First I tried the default of showing the results on a google hosted page. I just didn't like that at all, I could customize it a little bit but not really.

Next, I tried having the results show up in an article type document, however, the url that gets appended to the search results page starts with "?", seems Domino didn't like this at all and kept dying with an error 500. I tried all sorts of ways to prevent the "?" from being the start of the appended URL to no avail. I did some research on what the subject and it seems when a url contains a "?" Domino expects a domino url extension (i.e. OpenDocument, OpenView or whatever) to come right after the question mark, if it's not what Domino expects, it throws an error 500. To get around it you can create a rewrite rule, but with this blog being hosted by Prominic, I really didn't want to go this route. So, this didn't work...

The last option for displaying the results from a Google Custom Search engine is to display the results as an element. This actually worked with no changes really needing to be made as far as just displaying the results. However, the results just pushed the rest of the blogs content down below the search results. While this worked, I didn't really like it, I think only the search results should show up. But I really liked that the results were "wrapped" within my website. So, how to make it so that when someone performs a search the div which contains the website content is hidden and only the search results are shown? Well, I messed with this for quite a while and never could get it to "really" work. I could hide the div which contained the content but not when the "Search" button was clicked. So I had to post a question over on the Google Custom Search Implementation Forum. The guy that answered didn't leave his actual name, only "omr" is his username and is who really got this to work and who deserves the credit for it.

Now we just need to put this within BlogSphere and we're ready to go. So without further rambling...

  • First, setup your CSE to only search your site. When you do this if you go through all the options in the wizard you should find your "CSE ID" which is a long number which basically identifies your CSE.
  • Once you get your CSE ID we're ready to put everything in BlogSphere.
Click the "Read More" link...


Continue Reading...

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?


Cool Tool...

12/11/2009 2:41 PM By Keith Strickland

While looking to see if I could find some kind of emulator for mobile browsers I came across BrowserShots.org. This is a tool which allows you to select browser versions to test your website with. Once the test is done screen shots of the results are published on a web page that you can look at and then download all the screen shots. It takes a little while to run, but it seems to do what it advertises. Best of all, it's a free service!


BlogSphere tags defined

12/10/2009 5:09 PM By Keith Strickland

Over the past month or so I've been working on making keithstric.com a better looking BlogSphere blog. During all the tweaks, changes and fixes I've come to learn a lot more about all the tags available within BlogSphere.

Tags are used to put dynamic content within your BlogSphere template which is what allows you to fully customize the way your blog is laid out and also allows you to build links and use common text throughout your site to give it a more consistent look and feel across all areas of the site. Without the tags all of the things listed here would be hard coded or be done via clunky lookups all over. The tagging system of BlogSphere is a very elegant way to accomplish the task of customizing your blog.

The tagging system is basically made up of a LotusScript library called RenderEngine.Tags. Within this LotusScript library are functions for each of these tags which returns the proper value based on the context of the request. Like I said above, it's very elegant. So, I took all of those functions to come up with this list and hopefully make it easier for you to customize your blog. If you come across something I misrepresented or just plain got it wrong, please let me know and I'll fix it.

While writing this I discovered that the appropriate tags can be used within a blog entry, article or download also. When placed in one of these other elements the tag will be rendered as it should, which is a bonus for BlogSphere. But I had to modify the tags below to be formatted as <$ Tagname $> instead of <$TagName$>. So, when using these tags in your blog, just take the spaces out.

  • <$ BSAlbumURL $> - The URL of a photo album
  • <$ BSAttachments $> - Display the attachments on a download entry
  • <$ BSBlogDesc $> - The description that shows up underneath the Blog Name and is defined in the BlogSphere configuration document
  • <$ BSBlogName $> - The name of the blog and is defined in the BlogSphere configuration document
  • <$ BSCategoriesURL $> - The url for a blog entry's categories. This link opens all the blog entries for whatever category is clicked
  • <$ BSCommentAuthorLink $> - The link to a comment author's website and is defined when someone leaves a comment
  • <$ BSCommentAuthorName $> - The name of a comment author and is defined when someone leaves a comment
  • <$ BSCommentBody $> - The body of a comment and is defined when someone leaves a comment
  • <$ BSCommentCount $> - The number of comments for a particular blog entry, download or article. This is incremented when someone leaves a comment
  • <$ BSCommentDate $> - The date a comment was left and is defined when someone leaves a comment
  • <$ BSCommentID $> - The number for a particular comment and it is defined when someone leaves a comment
  • <$ BSCommentNumber $> - I can't figure out what this tag is for
  • <$ BSCommentsURL $> - The URL to the comments for a particular blog entry, download or article
  • <$ BSCommentTime $> - The time a comment was left and is defined when someone leaves a comment
  • <$ BSEmoticons $> - The emoticons that are configured for your blog. Emoticons are configured in the configuration view under Resources\Emoticons
  • <$ BSEntryAuthor $> - The author of a blog entry, download or article
  • <$ BSEntryCategories $> - The categories of a blog entry which is defined when a blog entry is created
  • <$ BSEntryDate $> - The date of a Blog Entry, download or article
  • <$ BSEntryHTML $> - The html of a blog entry, download or article
  • <$ BSEntryImage $> - The image that is defined for a blog entry, download or article
  • <$ BSEntryLocation $> - The location of the author as it is defined in the author's profile
  • <$ BSEntryMoreHTML $> - The html of a blog entry's "More" field. This is available when some text is placed in the "More" section of a blog entry
  • <$ BSEntrySubCategory $> - The sub category of an article
  • <$ BSEntryTechnorati $> - A link to technorati for the category of a blog entry
  • <$ BSEntryTime $> - The time a blog entry, download or article was created
  • <$ BSEntryTitle $> - The title of a blog entry, download or article
  • <$ BSGravatar $> - Displays an image based on an MD5 hash of the commentors email address. Check out www.gravatar.com for details.
  • <$ BSHomeURL $> - The URL of your blog
  • <$ BSMediaPlayer $> - I'm not entirely sure about this one, but I believe if you attach some kind of media to a blog entry, this will show the appropriate media player
  • <$ BSMenu $> - Displays a menu which you define in the Blogsphere menu under Resources\Navigation Menu. It must be enabled in the BlogSphere configuration document
  • <$ BSMonthName $> - The month name as listed in the language translation document
  • <$ BSNextEntryPermalink $> - The next blog entry's permalink url
  • <$ BSNextEntryTitle &> - The next blog entry's title
  • <$ BSPhoto $> - The html img tag of a photo
  • <$ BSPhotoAuthor $> - The author of a photo in a photo album
  • <$ BSPhotoDate $> - This will display the date a photo was added to a photo album
  • <$ BSPhotoDesc $> - The description of a photo
  • <$ BSPhotoEXIFInformation $> - This will display the EXIF info from an image in a photo album
  • <$ BSPhotoLocation $> - This will display whatever is in the Location field of a photo
  • <$ BSPhotoTitle $> - The title of a photo
  • <$ BSPlinkURL $> - This is the URL for a permalink for blog entries, downloads and articles
  • <$ BSPrevEntryPermalink $> - The previous blog entry's permalink url
  • <$ BSPrevEntryTitle $> - The previous blog entry's title
  • <$ BSRating $> - I haven't been able to get this to work and it may be a future enhancement. But it displays the rating of a blog entry, download or article. This must be enabled in the BlogSphere configuration document
  • <$ BSReadMoreLink $> - This is the link that shows up when something is present in the "More" part of a blog entry
  • <$ BSSearchScore $> - This is the score of an entry that is returned from a search of your blog
  • <$ BSThumbnail $> - A photo's thumbnail
  • <$ BSTrackbackCount $> - This is the number of track backs for a particular blog entry
  • <$ BSTrackbackURL $> - This is the URL for a track back
  • <$ BSUniqueID $> - This is the unique id of a blog entry, download or article
  • <$ BSYear $> - The year for an entry
  • <$ BSYYMM $> - I'm not sure what this is

I will continue updating this post as I find more tags. For the <$ Trans_xxx $> tags, continue reading.


Continue Reading...

keithstric.com BlogSphere Theme available for download

12/10/2009 3:13 PM By Keith Strickland

I went ahead and exported the DXL for my BlogSphere template and skin and made it available in the Downloads section for your enjoyment.


Last Tweak to keithstric.com for today...

12/10/2009 2:53 PM By Keith Strickland

OK, I found one last issue. On the Downloads page/view, the comments link pointed to /d6plinks/ instead of /downloads/. So, I modified the "RenderEngine.Tags" script library, "TAG_BSCommentsURL" function to the following...

Function TAG_BSCommentsURL(blogDoc As NotesDocument,cfgdoc As notesdocument,debuglevel As Integer)
	On Error Goto LogError
	If DebugLevel > 3 Then Call LogEvent("Process Tag: BSCommentsURL",0,Nothing)

	If blogDoc.Form(0) = "content_Download" Then
		TAG_BSCommentsURL = cfgDoc.cfg_Basic_HomeURL(0) + "/downloads/" + blogDoc.PermaLink(0) + "#Comments"
	Else
		TAG_BSCommentsURL = cfgDoc.cfg_Basic_HomeURL(0) + "/d6plinks/" + blogDoc.PermaLink(0) +"#Comments"	
	End If

	Exit Function
logerror:
	Call LogError
	TAG_BSCommentsURL = "TAG ERROR : Check Debug Logs"	

End Function

The change here is that I just check if the form being processed is a download form, if so I use /downloads/ instead of /d6plinks/, and that's it


More Tweaks to keithstric.com

12/10/2009 1:25 PM By Keith Strickland

If you visited the downloads link above since the site change, I guess you noticed that the attachments weren't available unless you visited the Permalink URL for the download. Well, this has now been fixed.

I noticed this issue when looking at the search results on Nathan Freeman's website, that his search results showed the attachments in his download documents that were returned by the search. Got to looking on my site and mine was doing the same thing. However, if you visited the /downloads view, the attachments didn't show up, you only saw the BSAttachments tag. So, I got to digging in the code a little bit to compare the differences between the rendering of all downloads and the search results. There is quite a difference here, but it wasn't too difficult to figure out.

In the "RenderEngine.Blog" script library, "RenderEngineAllDownloads" function, there are a few arrays there that contain the tags and values of each download document. The tags array contains all the tags that the script will look for and the values array contains all the values for said tags. Looking at this the BSAttachments tag wasn't listed in the array. However, comparing to the "RenderEngineSearchResults" function these arrays weren't present at all, but a call to the "RenderEngineProcessTags" function was used instead and this wasn't in the "RenderEngineAllDownloads" function. So, I replaced the line of code in the "RenderEngineAllDownloads" function for "RenderedText" to read:

RenderedText = RenderedText + RenderEngineProcessTags("SingleEntryTags", templateDoc.template_Plink_Download(0))

This seemed to have corrected the issue and now the BSAttachments tag gets processed in the /downloads view.


Performance Tuning keithstric.com...

12/08/2009 5:00 PM By Keith Strickland

Today I worked on tuning the performance of keithstric.com. I don't know if you'll notice a difference when using broad band, but, if you're using dial up, you should notice a significant difference.

Some of the things I changed....

  • Reduced the size of some of the larger images
  • Reduced the number of images being loaded
  • Optimized some of the < head > html and CSS

Like I said, don't know if you'll really notice any difference, but I guess it makes me feel a little better that I at least tried to speed things up a bit


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.


Google Abandoning Google Gears?

12/02/2009 10:00 AM By Keith Strickland

In an LA Times article Google states

We are excited that much of the technology in Gears, including offline support and geolocation APIs, are being incorporated into the HTML5 spec as an open standard supported across browsers, and see that as the logical next step for developers looking to include these features in their websites

We're continuing to support Gears so that nothing breaks for sites that use it. But we expect developers to use HTML5 for these features moving forward as it's a standards-based approach that will be available across all browsers.

I know that they say they will continue to support Gears so that it doesn't break applications, but for how long? I don't personally use Gears nor have I written any applications using Gears but I do know some of the Lotus Bubble bloggers have.


Ideas?

12/02/2009 9:46 AM By Keith Strickland

Yesterday Bruce Elgort posted a video about what to do if your idea is rejected by your boss. I thought this was an excellent video as I am guilty of some of the things mentioned in this video. So, go check it out, it's a good watch, is informative and isn't very long.


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.