REQUEST A DEMO

Blog

Twitter Agent – Decoupling From Dependencies

May 15, 2008 Lately I have been posting about a Twitter/Dovetail CRM integration we have been working on. Recently I made some architectural changes that I will hopefully get to in a future post. This time around I wanted to talk about how a problem with the jabber-net XMPP library led to a better more testable design. Connection Stability Last post I talked about how we are using XMPP to send and receive direct messages with Twitter and when Twitter's XMPP presence is up it works great. Really well in fact. The main challenge has been keeping the connection to our Jabber server stable. The jabber-net library has an auto-reconnection issue when DNS cannot be resolved it gives up trying to reconnect. I did get some guidance from their Google Group on correcting this issue but unfortunately had already moved to a different…

Web Developers: Make sure you're displaying script errors

May 14, 2008 By default, Internet Explorer doesn't display script errors. Most of the time this is fine, but when developing web applications, you want to be aware of any script errors. For example, lets say you have this line of JavaScript: var foo = document.getElementByid('bar').value; Notice that the "i" in getElementByid is lowercase, which isn't valid. By default, IE won't display an error. The only indication that an error occurred will be an icon in the status bar (if you even have the status bar displayed, which you may not): Double-clicking the icon will give you more details: When I'm developing web apps, I want to know when there's an error, so I configure IE to always display errors. IE - Tools - Internet Options - Advanced Tab Make sure the Display a notification about every script error option is checked. In…

Fun, fun, fun with ADO and Unicode characters

May 9, 2008 We recently ran into an issue with ADO rendering Unicode characters. To be honest, we're doing some pretty weird stuff inside the fcSDK. We're performing database queries using ADO.NET, and then we take the DataRow and convert it into an ADO Recordset, which we return to our COM based applications. We're using ADO recordsets to maintain compatibility with previous objects that were written in VB6 that returned ADO recordsets. When we were populating the ADO recordset, if the data was basic, standard English characters, then all works perfect. ADO recordsets with Unicode data But if the data contained Unicode characters (such as じゃらん), then we would get the ever-so-helpful error: Multiple-step operation generated errors. Check each status value. Basically, this is ADO throwing up its hands in failure. The issue came down to the fact that when we were building…

Notify the case owner when someone else logs a note to their case

May 7, 2008 In a previous post, we learned how to use a variable on either side of a business rule condition. Now, we'll create a business rule that uses this type of condition.User StoryWe'll start with a story:As a case owner, I want to be notified when someone else logs a note to my case, so that I can be kept informed of any activity on my cases.The business ruleHere's the business rule which satisfies the user story.Object Type: Case Rule Name/Description: Notify the owner when someone else logs a note to their case Start Events: Log Note Cancel Events: None Conditions: Logger != [Current Owner] Action Title: Notify  Owner Who to Notify: [Current Owner] Start Action: 0 minutes From: Event Creation Using: Elapsed Time Repeat : Never Message:RE: A note was logged to [Object Type] [Object ID] by [Logger]A note was…

Using variables on both sides of a business rule condition

Most people know that you can use a variable on the left side of a business rule condition, such as:Case Type = New EmployeeThe left side of the condition, "Case Type", is actually a business rule property that gets evaluated at runtime.The right side of the condition, "New Employee", is a string constant.Here's what it looks like in DovetailAdmin:and similarly in the Clarify Classic Client:Using variables on both sidesWe can also use a business property on the right side of the condition as well. Simply type in the exact business rule property, and surround it in square brackets.For example:Logger != [Current Owner]Here's what it looks like in DovetailAdmin: and similarly in the Clarify Classic Client:Next up - an example of a rule that uses this type of condition....

Pretty Dates in JavaScript

May 5, 2008 A common way of expressing dates nowadays is to represent them as an approximate age.For example, rather than saying something happened at 5/5/2008 4:21:01 PM, we can say it happened one minute ago.I wanted to use this in DovetailAgent to show the age of the Search indexes. A little Googling brought me to John Resig's implementation of prettyDate() in JavaScript.I tried it out, it was OK.Looking through the comments on John's post, I saw that Dean Landolt posted an updated function that I liked better.I tried it, but it still had a few issues.Finally, Zach Letterman commented that he updated Dean's script, and posted a newer version.Success! Exactly what I was looking for.Now when I see my search results, I can also see how current my search data is, in an easy to consume format, without having to do any…

Having Rulemanager send SMS notifications via Twitter

Kevin had an earlier post discussing how Rulemanager could fire a script that would notify all queue members via Twitter when a case is dispatched to a queue. The script took the queue name as an input, queried the database for the queue members, and then sent a direct Twitter message to each queue member.I liked what he did, and wanted to see if we could take it a step further, and make it more in line with Rulemanager notifications.Making Twitter a first class Notification methodRuleManager already knows how to resolve queue members into individual users, and it knows how to resolve a notification preference of each user, depending on whether the user is on or off work hours, and also based on the urgency of the message.Years ago, many people carried digital pagers, which allowed text messages to be…

My favorite web apps

May 2, 2008 ReadWriteWeb published the results of their survey on what web apps most excited their readers.Here's my list of the web apps I use frequently:TwitterFlickrGoogle Readerdel.icio.usRemember The MilkGMailGoogle DocsCampfireBasecampA few more that I like, but just use occasionallyStumbleUponLinkedInMintSlackerPandoraSkypeTripItDovetailAgentAnd finally a few I'd like to get to know:FriendFeedTwineSlideRocketWhat about you? What do you use?

Spring Alt.Net Pledge Drive

April 23, 2008 I just wanted to take a moment out of our regular blog-cast to tell you that Alt.Net is supported by listeners readers like you. Smart people work really hard volunteering all their free time and energy to put out great open source software for our community. We need to keep these people coding not wasting their time drumming up consulting gigs or looking for jobs. Just wanted to read off a couple names of people that just contributed. Thank you Ray Houston for donating. You must have deep pockets with that sir name. Oh, and I see Chad Myers donated he is always a regular contributor. I see that Anders donated. Thanks Anders for your donation and for C# we all love it. You TOO can make a difference and if you act right now we have a matching pledge…

Clarify 6 – still running after all these years

April 22, 2008 I'm currently working with a customer who is running Clarify version 6. Not Amdocs CRM6, but Clarify version 6, or as the marketing brainiacs tagged it - CFO98 (Clarify Front Office 98). I'm amazed that they're still running a 10 year old enterprise application, and haven't upgraded at all in 10 years. On the other hand, it speaks to the power of the system that it continues to work and provide value, despite its age. They're now working with us, so that they can upgrade their database to something more current (Oracle 10g), and they're looking into using out toolset (SchemaEditor, ArchiveManager, fcSDK, BOLT, etc.) so that they can continue to reap value out of their system. Pretty cool.