REQUEST A DEMO

Author: Gary Sherman

Chief Technology Officer, Vice President of Products

Posts by Gary Sherman:

Fog Creek Copilot 2.0

January 26, 2007 Fog Creek released version 2.0 of their very rockin Copilot application today. Congrats to the team at Fog Creek! For those that don't know, Copilot is a remote assistance application that allows one person remotely take over another computer. The Copilot website has a good overview. I've used this app a few times over the last year. I've used it to help my parents out on their home machine (they live a thousand miles away), and I've also used it to assist some of our remote Dovetail employees. Each time I've used, it's worked perfectly. It always installs simply, and connects without issue. To put it simply: it just works! That's what software is supposed to do - just work. The $10 price was so worth it. It would have taken me hours on the phone with my Dad to…

Dell service tech: I've never heard those beeps before

January 24, 2007 We had one of our developer's workstations fail on startup this week. Upon powering on, it would emit a series of beeps, and then power down.We took note of the series of beeps: 4 beeps, pause, 4 beeps, pause, 4 beeps.A call into Dell support, explain the problem, and they say they've never heard of that sequence of beeps before, so they don't know what that means. The developer even put his cell phone up to the computer and powered the PC on, so that the phone support person could hear the beeps for himself. It was very comical to observe.The phone support person schedules an onsite technician for the next day, but lets us know that he'll only be bringing enough parts to get to the BIOS screen. Additional parts may be necessary beyond that, but he won't have them…

Too many angle brackets make my head hurt

January 23, 2007   Saw this code sample on the Microsoft Dynamics CRM blog, listed under Customizing CRM made easy:     var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");   xmlhttp.open("POST", serverUrl + "/crmservice.asmx", false);   xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8") ;   xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2006/WebServices/RetrieveMultiple") ;   xmlhttp.send("<?xml version='1.0' encoding='utf-8'?>"+"\n\n"+"<soap:Envelope"+ ' xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"'+ ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'+ ' xmlns:xsd="http://www.w3.org/2001/XMLSchema">'+ ' <soap:Body>' + ' <query xmlns:q1=http://schemas.microsoft.com/crm/2006/Query’ + ‘ xsi:type="q1:QueryExpression" xmlns="http://schemas.microsoft.com/crm/2006/WebServices">'+ ' <q1:EntityName>pricelevel</q1:EntityName>'+ ' <q1:ColumnSet xsi:type="q1:ColumnSet">'+ ' <q1:Attributes>'+ ' <q1:Attribute>pricelevelid</q1:Attribute>'+ ' <q1:Attribute>name</q1:Attribute>'+ ' </q1:Attributes>'+ ' </q1:ColumnSet>'+ ' <q1:Distinct>false</q1:Distinct>'+ ' <q1:LinkEntities>'+ ' <q1:LinkEntity>'+ ' <q1:LinkFromAttributeName>pricelevelid</q1:LinkFromAttributeName>'+ ' <q1:LinkFromEntityName>pricelevel</q1:LinkFromEntityName>'+ ' <q1:LinkToEntityName>account</q1:LinkToEntityName>'+ ' <q1:LinkToAttributeName>defaultpricelevelid</q1:LinkToAttributeName>'+ ' <q1:JoinOperator>Inner</q1:JoinOperator>'+ ' <q1:LinkCriteria>'+ ' <q1:FilterOperator>And</q1:FilterOperator>'+ ' <q1:Conditions>'+ ' <q1:Condition>'+ ' <q1:AttributeName>accountid</q1:AttributeName>'+ ' <q1:Operator>Equal</q1:Operator>'+ ' <q1:Values>'+ ' <q1:Value xmlns:q2="http://microsoft.com/wsdl/types/"'+ ' xsi:type="q2:guid">' + id + ' </q1:Value>'+ ' </q1:Values>'+ '</q1:Condition>'+ ' </q1:Conditions>'+ '</q1:LinkCriteria>'+ ' </q1:LinkEntity>'+ ' </q1:LinkEntities>'+ ' </query>'+ ' </soap:Body>'+ ' </soap:Envelope>') ;   var result = xmlhttp.responseXML.xml;       I don't…

Ubiquitous language is for all of us, not just the geeky developers

January 22, 2007 One of the concepts used in Domain Driven Design is Ubiquitous Language. What this essentially means is that everyone involved in the project uses the same terms to describe the system. And by everyone, we do mean everyone: developers, testers, business users, writers, sales, marketing, etc. When we all talk the same language, to each other, and to our customers, it helps us break down communication barriers. Like other agile ideas, we need to constantly be inspecting our language, and adapting, so that our communication continues to improve. We need to inspect for terms that are confusing and unclear, and adapt our language (spoken, written, or coded) to continuously improve.The technical team here at Dovetail Software tries hard to keep our language ubiquitous, so whether it's a developer, a writer, or a tester, we use the same words, which makes a big difference…

Automated Testing benefits more than just the tech team

January 19, 2007  We've made a fair number of process changes here at Dovetail over the last year, and one of them is really tightning up our automated testing. We used to have some automated tests, that we ran sometimes, and we were happy to have that. But over the last year we've made a big push towards solid continuous integration and automated testing, where hundreds upon hundreds of tests get run on every code check-in, including fast running unit tests, and slower running integration tests. In addition to these developer tests, we've also automated most of our customer acceptance tests, which typically falls into the realm of our software testing group. Towards the end of last year, we made strides towards having customer acceptance tests written before development work. That way everyone knew when a story was completed - when it passed the customer's test, which the customer defined even before any coding work…

Yank Notifications via Email

January 16, 2007 Clarify's Business Rules + RuleManager is a pretty robust and generic event processing system. Admins/BAs configure rules for who to notify and when, and each user can even decide how they want to be notified (email, pager, within the app itself (the Integrated Notifier), etc.). Most of us here at Dovetail use email as our notification preference. I don't believe any of us the integrated Notifier.There has always been one desired business rule that I couldn't make work with the existing Clarify infrastructure - yank notifications by email.Note: in later versions of Clarify, Yank has been renamed to Retrieve. After many years of snickering over the term Yank, it's just now a natural part of my vocabulary.  But I digress...For example, if someone yanks a case from me, I would like to get notified that it happened. And I want the notification to…

Let the system tell you where potential performance bottlenecks exist

January 15, 2007 A common cause of performance issues in database backed systems is poorly defined SQL, either a SQL operation that takes a long time to execute, or a SQL query that returns a large number of rows.Operations that take a long to execute can typically be corrected by database tuning, such as adding indexing, or changing the application logic so that the database can better optimize the operation.Queries that return a large amonunt of data can stress the application server & network. All that data needs to be transferred from the database to the application server, and in web applications, that data needs to then get transferred from the web server to the web client (browser).Typically, it's not that difficult to tune the database or tweak code once these situations are identified. However, it's not always easy to figure out where…

Email Integration with Clarify

January 12, 2007 Over the last 12 years of working with Clarify, email integration always seems to be a key topic of conversation, and I get many questions about email integration capabilities. So hopefully this post will answer most of these questions. I'm sure there will be details I've missed (especially on some of Clarify's later version capabilities), so please leave a comment. Outgoing Email Outgoing email is typically initiated via a Log Email action (for example, from a case) within the Client. When a email is "sent", the client saves the email details to the database, and then also adds a new time_bomb. This time_bomb tells RuleManager that it needs to send out this email. The Clarify client does not connect to a mail server or service, so it can not send the email, so RuleManager does it. On Windows, RuleManager connects…

Hello, world

January 11, 2007 The proverbial first blog post. I guess introductions are in order. Hello, my name is Gary Sherman, and I'm a Certified Clarify Developer...   Where to start? Perhaps with a just a touch of history. In 1995, while working for The MathWorks as a Technical Support Engineer (bonus points for identifying this image), I got involved in an implementation of our new Tech Support software - Clarify's ClearSupport. We purchased Clarify when it was version 2, but waited til version 3 (the Camelot release) before going live. Before long, I was the "Clarify Guy", responsible for all aspects of the Clarify system, from daily administration, upgrades, reporting, integration, customizations, etc.  In 1997, I went to work for Clarify as a technical consultant, where I spent the next 4 years working on Clarify implementations, including Made2Manage, Best Buy, Guaranty Federal Bank…