Why this interview?

For our new series of interviews “Strumenta Talks” we host Rob Wunderlich.

Rob Wunderlich provides tools and training for users of Qlik software. He is the creator of QSDA Pro, it is a code profiler and code analysis tool for QLIK Sense Applications, so for applications that are written using the Qlik Sense software. We built together this application and we would like to tell a little bit about our experience.

[…] The value in my tool is this expert advice that’s given to developers of Qlik apps about how to tune their apps, how to make them perform better, better resource utilization, best practice recommendations.

[…] I was extremely satisfied. I was very pleased, and I’m happy to say that, and tell other folks about it. I did realize that it was useful to me, and a good strategy was to figure out, well, if I’m going to code this product, bring it up in terms of its quality and scale, what pieces would it make sense to farm out? I had been looking at building my own parser for some time, and realized this is definitely an area where expertise and experience is very valuable. So, that was a piece that I was very interested in finding somebody else do.

Federico Tomassetti:

Hi, Rob. Thank you for joining us today. How are you?

Rob Wunderlich:

Good morning. Thank you, I am well.

Federico Tomassetti:

Good.

Rob Wunderlich:

Thanks for the opportunity.

Federico Tomassetti:

My pleasure. I think will be interesting if we could start by explaining to our listeners what you do.

Rob Wunderlich:

Sure. Yeah. My name is Rob Wunderlichh, and I provide tools and training for users of Qlik software. Qlik provides analytics and data visualization tools for professionals around the world.

Federico Tomassetti:

Good, good. Why did you decide to work with us at Strumenta?

Rob Wunderlich:

So, when I created my latest product, QSDA Pro, I needed a first class parser, and I had experimented with ANTLR trying to teach myself it a couple times, and in doing research, I ran across your ANTLR tutorial, which I was very impressed with the quality of it, and the depth of understanding that it demonstrated. So, I reached out to you and it was a fit right away, in terms of how you worked, your pricing model, that fit with what I needed.

Federico Tomassetti:

Good. Good. Can you tell us a bit more about what we build together, maybe a few more details about your product that…

Rob Wunderlich:

Sure. So, my product is QSDA pro. It is a code profiler and code analysis tool for a for QLIK Sense Applications, so for applications that are written using the Qlik Sense software. The value in my tool is this expert advice that’s given to developers of Qlik apps about how to tune their apps, how to make them perform better, better resource utilization, best practice recommendations. So, I can do that by looking at the code, but what my tool does is encapsulates my years of experience, and the years of published experience from other developers and experts, and we want to do that at machine scale.

Rob Wunderlich:

So, to do that, I needed an in-depth understanding of the code that’s under there. I needed to be able to translate that into machine algorithms. To enable that, of course, I needed to have a good parser. I needed to really be able to break down the language into its elements, so I could map it to the knowledge, and map it back to the recommendations. So, what you did for me was create that excellent parser that allows me to focus on what my value is, which is my expertise and knowledge and best practices in the Qlik language, and you took care of that. What is for me a mechanical piece, but very important piece, which is being able to interpret that machine code to map it to my machine knowledge.

Federico Tomassetti:

Good, good. So, if I understand, well, you built a tool that encapsulates your expertise and help other people working with this language be much more productive. So, in a way they can leverage your expertise in a very scalable way and have access to your expertise in a very convenient form, so that when you are not around, they can have some sort of version of you in your tool.

Rob Wunderlich:

Correct. If anybody’s familiar with something like Code Analyzers and Visual Studio, this is very analogous to that. I’m looking at the code, making recommendations, pointing out errors. So, yeah. That’s a very good overview.

Federico Tomassetti:

Good, good. Can you tell us, why was this project important for you?

Rob Wunderlich:

Yeah. So, I’ve been working with the Qlik product for about 17, 18 years now, as a consultant.

Federico Tomassetti:

Okay.

Rob Wunderlich:

Yeah. Providing training, developing applications and installation for customers of the product, so I’ve developed this expertise over the years. I’ve also started a training conference, so I’ve become well known in this field. Providing the tool, I had a free version of the tool that used string pattern matching, so used a regular expression type analysis of the code. It was quite limiting. It provided a lot of value. So, I had a free version that I used in my… Or a public version that I used in my practice and gave away. So, this was just the next step of creating a fully supported commercial version, and taking it to the next level of quality, in terms of depth of parser.

Federico Tomassetti:

Good. So, I understand that you first built, let’s say, an MVP, proving the value of the approach. Then with this project we, let’s say, improve it, what you have already built, in a way.

Rob Wunderlich:

Yeah. Actually the product itself developed organically over about 10 years, the basis of the product, just through my use in my own practice as a consultant. In the last couple years, particularly when the pandemic hit, I already had one other product in the market, one commercial product. So, here I was no longer traveling and consulting with clients, and I decided, well, I’ve always wanted to make, I’ve always wanted to improve this tool, turn it into a supported commercial product and generate enough revenue that would justify that becoming my full-time occupation. So, now I’m only doing tool development and some training, so I’m no longer developing applications directly for customers. Indirectly, I’m seeing thousands of applications come through the tool. So, I’m a big time lurker still, in terms of what people are coding, what kind of challenges are coming up, and helping them resolve those challenges.

Federico Tomassetti:

Great. I mean, I find very fascinating both the domain in which you’re working, but also as a small business owner myself, I think it’s very interesting, your journey, and is an inspiration. Very good. Were you satisfied with the results of our collaboration?

Rob Wunderlich:

Yeah. I was extremely satisfied. I was very pleased, and I’m happy to say that, and tell other folks about it. I did realize that it was useful to me, and a good strategy was to figure out, well, if I’m going to code this product, bring it up in terms of its quality and scale, what pieces would it make sense to farm out? I had been looking at building my own parser for some time, and realized this is definitely an area where expertise and experience is very valuable. So, that was a piece that I was very interested in finding somebody else do. Again, so I could focus on what my value was, which was the experience and expertise, and take on frankly some of the more easier code. I was very impressed from the moment we sat down and talked about scoping. You communicated well, you understood my requirement, had good suggestions for a good path to proceed.

Rob Wunderlich:

You then proceeded to execute the schedule, on time, and communicated very clearly. We agreed that I would provide a set of examples, so I created a set of about 100 examples initially, as the specification for what the parser should do. I did that based on my knowledge of the language and what I wanted to do, and what challenges I knew I wanted to be able to address. You delivered a full set of test cases against those challenges. Then as I began to test, we iterated. I would open an issue, you would fix it, generate a new test case. So, it was very, very clean. It fit very well with how I was used to working with a group of programmers. So, yeah. I was very pleased with the outcome.

Federico Tomassetti:

Thank you. Well, thank you also for making our job easier by providing the examples very quickly, and also provide always very precise feedback so that we could improve things. Is there anything that you think we could have done differently or we could improve in the future?

Rob Wunderlich:

I don’t think so. Again, it worked very extremely smoothly. I was very pleased with the outcome, and any follow up communication we’ve had since then, has been very clear. You also provided excellent documentation at the end of the project, and I’ve been able to maintain the parser myself for the most part, just based on that.

Federico Tomassetti:

Yeah. I think this is important. I think when we have a collaboration on a tool that has strategic value for the organization for which we are building, we manage to put them in the condition to take over if they chose to. So, I’m happy to hear that, because I think it’s important. Can you remember, how did you find about us? Did you find out about us, sorry?

Rob Wunderlich:

Yeah. I was learning, trying to understand and learn ANTLR, and it was just a Google search and I ran across your ANTLR tutorial written by your brother, and it was excellent. So, that’s how I stumbled across you and did a little more work and had that initial chat. I did want to point out one more thing about the documentation and the handover. So, of course, after the project was complete, as I started using my product in the wild and had all of a sudden more examples, I came across more requirements. The Qlik language is evolving as well. The vendor adds to the domain language. So, it’s been important that you gave me such a good turnover, a good framework to work within and documentation, because of course this was not a static parser when it was done. So, being able to have clear code, good framework, build tools was excellent.

Federico Tomassetti:

Good. I’m happy to hear that. Of course we learn doing a lot of mistakes, so we understood what the framework that make parser maintainable in the long run. Unfortunately, it took a while to understand that, but I’m glad that now it seems to work. Can you tell people how they can find out more about what you do?

Rob Wunderlich:

Sure. So, for my latest product, they can go to easyqlik.com. That’s E-A-S-Y-Q-L-I-K.com. I’m involved in some other projects as well, but that’s probably a good start for most people, specifically related to this project that I did with you.

Federico Tomassetti:

Good. Thank you. Finally, is there anything else that you would like to add?

Rob Wunderlich:

No. I would, again, just like to thank you very much, and say I was very pleased and impressed with the quality of the work you did for me. It’s been a key piece of my product. Trying to find the right words. It’s important, the value in my product is my expertise, but that can only be expressed in code with code that is good enough to be able to map my knowledge into code. So, I needed that tooling to do that, and you provided that for me as a key piece of that, of the product. So, thank you very much for helping me realize my vision and taking care of that.

Federico Tomassetti:

Thank you also, because this resonates a lot with what we are trying to do. I mean, Strumenta means tools in letting, because we think when there is someone with very valuable knowledge, like you said, you spent 18 years building up this knowledge. If we can make some tool that acts as a multiplier of this knowledge, we think we can provide leverage to extract more value of that knowledge. This is our mission, so I’m happy to see that we had the possibility of working on a project that was meaningful. So, thank you very much, Rob. It’s been a pleasure.

Rob Wunderlich:

Thank you. It’s been a pleasure talking with you.

Federico Tomassetti:

Good. Have a good day. Bye.