Delphi Helpinator

Delphi Components That I Use In Helpinator

Unfortunately Delphi community is very quiet nowadays, the most loud voices are the voices of criticism, and authors of excellent components do not get the praise that they deserve. In this post I will try to give the proper credit to components that I use in Helpinator.

TRichView (commercial) – an excellent rich editor component. Comes with a set of actions, that you can use to create a rich editor with just a few lines of code. There are also add-on components for XML input/output, a bunch of spellchecker integrations and etc. The product forum contains answers to almost all questions possible and the author is very responsive to requests.

NextGrid (commercial) – a neat grid component that I like a lot. Not overbloated with features like other grid components from large vendors, just does what it has to do for the money. Has “grid” and “slide” layouts, with the latter each line is like a card. There are also specialized column types, like for showing images, HTML and etc.

SimpleGraph (free) – a killer free component from Kambiz R. Khojasteh that allows to create a diagram editor. Very easy to use like other projects of Kambiz, the code itself is pure genius.

PrintPreview (free) – another great free component from Kambiz that allows to create custom print previews.

JVCL & JCL (free) – actually needs no introduction, a fundamental work of Delphi community, covering all aspects of app development, that will live as long as Delphi lives on.

SynPDF and SynGDIPlus (free) – another work of coding genius, Arnaud Bouchez, that did an unimaginable amount of work with mORMot and infrastructure around it. Seriously, if there’s a Hall of Fame for Delphi devs, Arnaud should lead it, along with Kambiz and Angus Johnson.

Business of Software Helpinator

Why I like what I created and hopefully you will like it too :) (Part 1).

Helpinator grew naturally out of my own frustration. I was a team lead of a medium sized team and as such I was the one that was responsible for maintaining the project documentation and user manuals. Of course there should be a technical writer for this, but the project was not that large, with a limited budget, and historically team leads were the only ones who knew all the business process inside out and how they were implemented in the system.

Technical writing is hard by itself, especially if you are a programmer by nature. All paperwork and no play make you a dull boy… And then you have to update what was already written and this is when all hell breaks loose. A little change is UI required a massive update of screenshots, that were scattered all over the docs, a time-consuming and exhausting work, that has to be done just to be redone next month all over.

Docs consisted of two parts – context-sensitive help of the CRM/ERP app itself and user manual in PDF. To further complicate things, my predecessor used an unorthodox toolchain of MS Word/MS HTML Help Compiler and some obscure PDF printer. Compiling docs was really time-consuming. He was from the old school soviet “workers” that were raised with soviet corporate culture where you have to be busy all the time to show that you actually earn your paycheck. Optimisations were redundant and people who tried to make things better were called “rationalizers” with negative connotation.

One day I decided that I just can’t carry this weight anymore. This is when Helpinator was born some 11 years ago. It was obvious that I needed another tool and quick search found some help authoring tools that were all cool but didn’t improve anything over doc update process. Over a weekend I put together a simple word-like editor that had a killer feature for me – “Image library” of reusable images and built-in annotation tool for screenshots. In this way all project screenshots were in the library, I also designed a naming system that allowed me to quickly identify images that were about to be updated when something changes in the UI. No more scanning through the topics! My workload reduced by something 50%.

The next moment of enlightment came very soon. A lot of screenshots were duplicates with only callouts differing. This is where I can also save time updating and “cloned images” feature was born. Instead of having a dozen of identical screenshots with defferent callouts explaining different tasks you can have one “donor” image and a dozen of “clones” that inhirit donor screenshot and have their own callouts. And you only need to update one image!

Then I needed code snippets with syntax highlighting and added them to Helpinator pretty in the same way as image library.

One day I was talking to a our ERP/CRM system user of high profile explaining to him how to generate the report that he needed (we had a versatile report generator also created by me). At one moment he stopped me and told me quietly: “I know that your report generator is super cool and feature-rich, but just give me a step-by-step instruction how to get what I want from it”. It struck me like a bolt of lightning. Why waste time writing about features and how one can construct a solution to almost any problem from them, when people in our company are too busy to get accustomed to it, they need solutions. I added “step-by-step guides” feature to Helpinator probably the next day, and the number of tasks explained in a step-by-step manner started to increase exponentially.

That was the moment when midlife crisis came into my life. I got divorced and grew consistently unsatisfied with my job. At that time I wasn’t keen on working remotely (I am now), and there were no interesting job openings in Arkhangelsk (there are still none). I was reading Patrick McKenzie and Peldi from Balsamiq blogs for a while and I think it was them who led me to the business of software. I quit my job and started Helpinator as my primary project.

I can’t say that my life became easy then, it was a tough journey, both in business and personal terms, but this post is already too long, and this story is for the next time.

In case you are still interested, there’s a list of recommended Helpinator blog posts to read: