Dual Writer

About Dual Writer

Dual Writer is a new product, released the 1st of December of 2013. It is a word processor for Windows with integrated speech recognition. Dual Writer uses the .NET System.Speech Namespace to power speech recognition and speech synthesis. Dictation is entered directly into Dual Writer documents as text, or parsed as editing commands to select and edit text, or navigate through the document.

Why did you choose Developer Express?

As an Independent Software Vendor (ISV), my goal was to build a speech recognition application for Windows desktop users. I was already familiar with DevExpress WinForms controls from previous projects and so it was a no-brainer to choose the DevExpress RichEdit control for this project. The DevExpress controls provide a solid foundation to build on.

Rich Edit Control

The most important consideration for my speech recognition project was the command set that is available with the RichEdit control. The RichEdit control has hundreds of commands that can be accessed programmatically to insert and select text, search for text, move the cursor, copy and paste, apply styles, scroll the screen, etc. Everything you can do with the keyboard can also be done programmatically. This greatly simplified the development of Dual Writer. Once the user's speech was parsed as a command, it was just a matter of calling the right API to execute it.


Documentation was also a critical factor in choosing the RichEdit control. All the commands I needed to access in the RichEdit API were documented and many examples were available. For example, using Dual Writer you can say, "Select the word 'house'", the code uses the RichEdit API to search for the word "house" within the visible text area of the control, find the closest 'house' to the cursor, and then select it. All the APIs required to do this were clearly documented. Another example where the documentation was extremely helpful was in creating the “Correct that” command. When the user says "Correct that" a floating menu of options appears below the selected word. How to find the screen location of the cursor was in the documentation.

Sample Applications

Along with the DevExpress documentation and code samples, there are many sample applications that are very informative. I love the DevExpress sample applications. I have personally downloaded many application files from other companies and the one thing that always happens is that they do not run. They always crash. It's very frustrating. But DevExpress has a sample application download tool that sets up the sample applications for me and they always run. Just click download and then open the application in Visual Studio. It's fast and easy, and it really makes a difference when trying to find an answer to a question. Plus they are full of coding ideas written by the people who really know how to use the controls. They were a great help.

What project challenge did you overcome using Developer Express?

I am primarily a programmer, not a designer. One of the best things about the WinForms controls is that they look great and require no design work. With the Ribbon control and the Backstageview control (not to mention the skins!), Dual Writer looks very professional, every bit a commercial product that gives potential customers confidence to try it out and buy it. About the only design work I had to do was the product logo.

What are the benefits of using Developer Express?

It's difficult to calculate the time and money saved by having so many WinForms controls available in one package that provide immediate solutions to creating an easy-to-use interface for Dual Writer. But even more than that is the flexibility the controls provide. There is a WinForms control for just about everything you could want to do. But when needed, you can also build custom controls. In Dual Writer you can say, “What can I say?”, and a menu drops down from the Ribbon bar with a voice-searchable list of commands. For a number of reasons, I could not use a new window to hold the command list. The main form needs to keep the focus so that speech control is not interrupted. So I made a custom control for the dropdown. It's made of various WinForms controls, including a popup control, splitter control, list box, text box and buttons. It was easy to make and does exactly what I wanted.

End-User Documentation

Programming is a lot fun. But there are certain jobs that are required for a commercial product that are truly awful. And the most horrible task of all is writing end user documentation. Most of the time it just doesn't get done, but DevExpress provides complete end user documentation. Dual Writer uses the WinForms controls, and the complete end user documentation is available on the DevExpress website and for download. I just went through all the WinForms documentation and grabbed the relevant pages. And then I wrote some additional pages regarding speech recognition and setup. Finally, I used the standard HTML Help Compiler to create the finished Dual Writer help file. It took a couple of weeks to do, but it would have taken several months or more if I had to write the whole thing myself. And it's complete with images and internal links that make it very useful to answer end user questions.

DevExpress Support

I cannot say enough about how great DevExpress support really is. I used DevExpress WinForms controls for about 3 years before starting on Dual Writer, and during that time I never needed to put in a support ticket. But while working on Dual Writer, I found a certain control setting that caused an Argument Exception. So I put in my first support ticket on 8/25/2013. On the same day, I got an email back saying that the problem had been duplicated by the support team and would be sent to R&D. On 8/26 I got an email saying the problem had been fixed and would be in the next maintenance release. And then on 8/27 I got another email that a hot fix was available, along with a link to the fix which I could download immediately and update my system. I cannot remember ever having a tech support experience like this before. I was amazed at the professionalism and the urgency they put into making sure the problem was taken care of quickly and to my satisfaction. I didn't know this level of support was even possible.

A few days later, I had question about the styles in the RichEdit control. It wasn't a problem report, but just a question about how the default paragraph font interacts with the style that is applied to the paragraph. In response, my original ticket was split into three different support tickets that that were all given very helpful and detailed responses that fully answered my question. On top of that, in response to my question, an improvement was made to the RichEdit control's style logic, and another hot fix was available a few days later. Wow.

Ongoing Maintenance

End-user support can be a huge problem for software companies, especially small ISVs like me with limited resources. But with DevExpress, I know that maintenance of the controls is an ongoing process. There are many other developers using WinForms controls and they provide feedback to DevExpress that I know, from my own personal support experience, gets acted on. Problems get fixed in a timely manner, and updates are released on a regular schedule. So I am very comfortable building Dual Writer on WinForms controls. I get very few support questions for Dual Writer, so I know I made the right choice with DevExpress.

DualMinder Software