Grinder is my first product and my first lesson in the joys of running a business. In particular: how to sell and market software.
Switching from being the Geek in the box to Business owner is an interesting experience. In the past I would write something like Grinder and hand it to my client and ride off in to the sunset on my way to the next gig. This time I get to live with it. I also get to deal with stuff most developers don’t really think about.
My first hurdle in marketing is creating a crisp clear message about Grinder. To me Grinder makes a lot of sense, I’ve seen the need for it (and written programs like it) all over the place. However, articulating the problem that Grinder solves is proving to be a challenge to me. Why? Because to me it solves a lot of problems that my previous customers had.
To paint a clearer picture the original name of Grinder was “File Processor”. The problem with that name is that it is too obvious and won’t show up will to Google. A product name that also describes the product? Lunacy. So I did my usual and came up with a name that is somewhat odd by also evocative.
Grinder is a file system monitoring tool that uses Windows Workflow to process files. You create workflows using the custom designer and activities provided. You then use the configuration editor to create file types and associate the file types with the workflows. Finally you configure the directories that will be monitored and associate the file types to look for in those directories. Whenever Grinder finds a file that matches a file type it will process that file using the associate workflow.
There are a couple of things that I did in Grinder that I think are really cool. First is the custom workflow designer. It doesn’t have anywhere near as many features as the designer in Visual Studio but I didn’t want it to. My goal was to make it really easy for somebody who is not a programmer to build a workflow. As such the designer doesn’t allow any branching or looping and it doesn’t support the code activity. It does however provide a library of custom activities specifically designed to process files. Things like copy, move, run program, zip/unzip, send email, and FTP are included along with a few others.
With this approach it’s pretty easy for somebody like a system administrator to throw together a workflow that takes an incoming file, unzip it, and then run a program that processes the file. You can throw together that workflow in about ten seconds.
Grinder is also a great replacement for BizTalk’s File adapter. There are two problems here that Grinder solves. First, a lot of the time it makes a lot of sense to put BizTalk right on the file server where the files are, but that can cost a lot of money. Second, you usually need to monitor a lot of directories which means BizTalk end up having a bunch of receive locations that have to be managed and can have an impact on performance. Grinder has a much smaller footprint BizTalk and is a lot cheaper so you can throw it on the file server without as much impact. Because Grinder’s configuration is stored in XML it’s really easy to write a script that can add all the directories you need to monitor. Actually – I’ll see if I can make a tool for doing that. To get the file in to BizTalk’s message box you simply use the HTTP Post activity to post the file to a BizTalk receive location. In the context of BizTalk, Grinder can be thought of as the BizTalk File Adapter on steroids.
Another use for Grinder is in EDI scenarios where companies are moving files back and forth. In this situation one organization may have a dozen different trading partners each deliver three or four different files. Often each organization will have a home directory and then subdirectories for each file type. In this case you configure Grinder to watch the subdirectories and process the files as they arrive. To make things as flexible as possible Grinder has a mini-language for passing parameters to Workflows and activities. So each directory could have a property added for the clientID and inside the workflow the clientID could be used as part of the processing.
Further flexibility in Grinder comes from the fact that it is based on Windows Workflow. If Grinder’s designer won’t let you do what you need then you can write a workflow using Visual Studio. Grinder provides an interface to workflows that allow them to access the work item information so your workflow can determine the name of the file being processed and the properties for the workflow (clientID for instance from the previous example).
You can also write your own activities that are specific to your company. For instance if you need to send the files to a web-service you can write an activity that handles using the file’s contents to call the web-service. I already have plans for additional activities that I plan to release in the coming weeks.
So what is Grinder? Grinder is a service that processes files using workflows. What problems does that solve? If you have Grinder in your arsenal you don’t have to write the code to monitor directories and then process the files that get found. This means less code to support, maintain and change when new requirements emerge. It means you can respond faster to changing requirements. You can provision new trading partners in a few minutes w/o writing any code. It means your programmers can work on cool stuff WCF, WPF and Silver Light. It means your system administrators can have a nice tool that keeps the file processing centralized so they don’t have to keep track of hundreds of little programs and script files scattered all over. It lets you do more in less time with few resources so you can use what you have to tackle the big important problems.
Without Grinder your environment ends up with hundreds of little programs to process the files your business relies on. These programs require maintenance and support. They are almost never documented; eventually nobody is clear on what they do and how they relate to the bigger environment. Most of the time you aren’t aware of them until they stop working and your systems fall over on their sides and then nobody knows what to do. Grinder fixes that by eliminating those programs and making them easier to maintain and support.
As a final plug for Grinder: Right now I'm giving away a limited number of free licenses. I want to get it in the hands of users so I can get some feedback. I wrote Grinder for me and I know how to use it. Now it is no longer about me. It's about you my customers. Included with the license is a free 1 year support contract which includes updates, enhancements and technical support. So by registering now you get to help steer where I go with Grinder - for free! Go here: http://www.engineofprogress.com/Products/Grinder.aspx and click on the "Register for a free license" in the upper right corner.
The real problems for Engine of Progress
So I think I’ve done an OK job describing Grinder, what it does and what problems it solves. But the real problems for Engine of Progress are different. First is learning to communicate about my products in a fashion that makes people purchase them. Second is getting that communication in front of people.
Based on what I’ve learned over the past month or so there are three things to communicate: what problem is being solved, what the benefits of the product are and what the features are. Which really boils down to one thing: “What problem is being solved?”. The benefits and features of the product are the solved problem – end of story. If you’ve read this far then you know figuring out how to articulate this is a real challenge to me. I don’t think it is because Grinder is a product in search of a problem, I think it is because Grinder is too basic in that it solves a class of problems. I think the next few products I have planned won’t have the same issue for me.
The next problem is learning how to get in front of people so I can deliver my message of Grinder goodness. We live in a wonderful time for marketers because the internet is the world’s greatest combination of Want Ads and Yellow Pages. The only challenge I have is that I don’t have much of a budget for marketing so whatever I do has got to be cheap and effective. I already have some ideas, we’ll see how they work out over the next few weeks.
While I’m a bit overwhelmed by this transition I’m also very excited. I think 2008 is going to be one of the most interesting years of my life. Completely life altering. For the better – just to be clear. ;)