REQUEST A DEMO

Blog

A free wiki has become another tool in my consulting toolbox

May 24, 2007 I've been working on a web services project for a customer over the last few months. I'm in Austin, the customer is in Atlanta, and the developer on the project is also in Austin (but not in the same physical office as myself). I needed a way to work with the developer and the customer on defining the web services, the interfaces, and the logic within. As I mentioned in an earlier post, I was drowning in the customer's waterfall documentation. I needed a better communication vehicle than emailing Word documents back and forth. I created a free wiki at pbwiki, which was super easy to do. Then, I started writing. From the office. From home. It was great. I created just a couple of pages at first. Defined the work to do for the first iteration. Marked it as…

Elevating consulting-ware

May 23, 2007 Back when I was working at Clarify, a good chunk of my time was spent doing custom development work, i.e. consulting-ware. We developed the code, and handed it off to the customer. We (the consultants) did some testing, but the customer was responsible for the bulk of the testing. There seems to be some sort of difference in mindset when developing a product versus developing consulting-ware. I'm not sure why. I've been working with one of our developers on a customer engagement for the last few months, working on some custom web services, amongst other things. For this project, we've incorporated some of our standard development practices into the consulting project. Unit Tests and Integration Tests The biggest practice we've pushed into custom development work is tests. We're delivering to the customer a set of Unit Tests, and a set of Integration…

Expanding your varchar columns beyond 255 in Clarify is easy with the right tools

We had a support case that came in this week asking if there were issues with expanding a varchar(255) field to a larger value, such as varchar(500). Specifically, this customer was asking about expanding the internal notes field on the notes_log table (table_notes_log.internal). This customer is on an older version of Clarify (version 8 or version 9, IIRC), but they're using a more current version of Microsoft SQL Server (either 2000 or 2005, I forget exactly which one). These versions of MSSQL can handle much larger varchar lengths. I believe MSSQL 2000 can handle up to varchar(8000). I think the 255 limit is left over from the Sybase and Microsoft SQL Server 6.5 days. It should work, I thought. One way to find out: let's try it. My environment for this test is Clarify 9 with MSSQL 2000. Clarify Data…

DevTeach 2007 Begins

I am a lucky nerd. I work at a great company that believes in continual personal development and investing in their employees. Dovetail sent me to DevTeach and I am having a blast. The quality of the talks and general braininess quotient is very high. Excellent conversations in a lovely city. I got here Sunday night and Scott was kind enough to introduce me to little known Canadian traditions and playing tour guide around Old Montreal. This city is amazing and beautiful and vibrant and invokes wonder.  Pre Conference I attended the Monday Pre-Conference workshop(s). I actually sat in on both Design and Optimization Best-Practices with SQL Server 2005 and Introduction to .NET 3.0 workshop both speakers were good and knowledgeable. In hind-sight it would have been better for me to have stuck with the SQL content.  Nothing against Kevin McNeish's .Net chops, but I had been exposed to…

Knowledge in Motion

Static image May 15, 2007 Knowledge only works when it’s in motion – being consumed, or expressed, or else being analyzed, sorted and ordered. The data components of knowledge arise out of motion, and are captured by information systems.   The greatest technical challenge for the development of enterprise-wide knowledge management lies with integration of legacy systems and newer information tools.   Key tools in this effort are ETL products. ETL (extract, transform and load) refers to the extraction of data from active systems, classically for importation into a data warehouse for cleansing and (re)processing, but generally for any reason, such as a mashup or entry into another application for further recalculation on the fly.   “the reality of BI for most enterprises is far murkier, with massive investments in technology for data warehousing, data integration, and analytics, but payoffs that are sparse or hard to calculate. What’s needed, experts agree,…

Configuring logging in the fcSDK without a config file

May 14, 2007 I banged my head against this for a while today, so I figured a post was in order. I was writing a PowerShell script to re-create a customer scenario today, and I needed to enable debug level logging. I was building the config on the fly, such as this: $config = new-object -typename System.Collections.Specialized.NameValueCollection $config.Add("fchoice.connectionstring",$connectionString); $config.Add("fchoice.dbtype",$databaseType); $config.Add("fchoice.disableloginfromfcapp", "false"); $ClarifyApplication = [Fchoice.Foundation.Clarify.ClarifyApplication] if ($ClarifyApplication::IsInitialized -eq $false ){ $ClarifyApplication::initialize($config) > $null; } I created a logging.config file that looks like: Then added to my config: $config.Add("fchoice.logconfigfile", "C:\customers\test\logging.config"); I ran my script, but I didn't get a log file. I went back to the fcSDK docs on logging configuration, and realized what was happening. The LogManager is a singleton, and only gets its LogConfigFilePath set upon initialization. So, it has to be set before its initialized. However, the fcSDK does logging when parsing…

Are your code comments a way to say I’m Sorry for the actual code?

May 11, 2007 There's a great post on perlmonks focused on the topic of comments in code. It fits with a lot of what we've been practicing here at Dovetail lately. We often talk about the benefits of loose coupling, but I never really thought about the coupling that occurs with code and comments. The original post sums it up nicely: One of the high priority goals in programming is the removal/avoidance of codependencies. We avoid using parallel data structures (eg.parallel arrays), because it becomes a nightmare to maintain those parallel arrays in synchronisation as algorithms and projects evolve. One of the key attributes of well designed classes (and other abstractions), is that they are as fully independent of their peers as possible. As decoupled as is possible to achieve.By relying upon both code and comments to describe our algorithms, we are purposely…

Making the app work the way the user expects it to work

May 9, 2007 Every morning I get an email report containing all of the Full Text Searches that our customers performed within our SelfService application, along with how many results each search resulted in, and if there were any errors. Our volume is low, so it's not too much information for me to process on a daily basis. This report allows me to gain some knowledge of who's using the app, what types of things they're searching for, and if they are finding answers to their inquiries. This morning's report showed that a customer searched for just an integer (for our example, we'll say they searched for 12345), and came up with no matches. Knowing the  customer, I knew they were searching for a case number. However, our search is currently setup to perform full text searches on the textual information with a…

Asp.Net Controls vs. View Components

May 8, 2007 During my Monorail talk a lot of people were asking about whether or not you could use Asp.Net controls with Monorail. I think the question translates to I love my 3rd party web controls yet I hate ASP.Net enough to look into alternatives. I think we need a clean break here. Can you do it?  The answer is... sort of. First, you need to be using the Asp WebForms view engine. After reading the documentation and seeing comments like: With WebForms you can use all your existing skills to develop MonoRail applications, however its integration with MonoRail can be quite tricky ... Let's take a look at an example of perfectly decent controller code and explain when it does not integrate with WebForms. ... So, many simple scenarios can get really hard with WebForms. You will likely back away slowly and start…