Micro-ISV Insights BlogLooking for the Swift To-Do List Blog?

What we learned during our Micro-ISV startup journey
A blog for mISVs, startup maniacs, and everyone in the software business.

Interview with Embarcadero about FireMonkey, mISV business and Delphi

This is my recent interview with Embarcadero. While we don’t use Delphi, their technologies are probably the most interesting alternative to Microsoft .NET technologies, and Delphi Prism can be used even inside Visual Studio. Their hot new multi-platform FireMonkey technology is very interesting as well.

I’ll be asking some questions related especially to mISV business, too.

Could you please quickly introduce yourself?

I’m Andreano Lanusse, Technical Lead Evangelist for Embarcadero’s Developer Relations organization. I spend a great deal of my time with developers, both onsite and at conferences and user groups, to ensure the company’s tools meet the expectations of customers. Prior to Embarcadero, I worked at Borland for thirteen years in numerous roles, including support coordinator, engineer and product manager. I also worked as a principal consultant for Borland Consulting Services on the development and management of critical applications. I hold a bachelor degree in business administration from Sumare Institute (Brazil) and an MBA in project management from FGV (Brazil). I’m also certified in Product Management from UC Berkeley, have Borland and Microsoft Certifications, and I am a Scrum Master.

Your new FireMonkey technology allows developers to create multi-platform apps. Do these applications look exactly the same on Windows, Mac and iOS?

It is the choice of the developer and what they are aiming for. FireMonkey is designed to be a rich platform and applications can look fully native on each platform. Or applications can take advantage of FireMonkey’s capabilities to deliver fully custom experiences and the same custom appearance on all platforms.

The exception is platform specific characteristics such as menus, common dialogs, etc – for example Mac menus are part of the desktop whereas Windows menus are part of the app, and iOS does not have menus – in these cases FireMonkey always yields to what’s correct for the particular platform.

FireMonkey applications use the GPU to render user interfaces using FireMonkey’s scalable vector powered “style engine” and FireMonkey’s 3D forms. These capabilities allow developers to build “rich” applications with GPU powered effects, transitions, animation, and image processing.

Is it usually necessary to write any platform-specific code when developing FireMonkey-based applications?

It’s usually unnecessary to write platform specific code, but you may need to if there is a platform specific API or library that you wish to use that is not available or is different on other platforms.

The difference between FireMonkey and native Delphi is probably larger than between .NET WinForms and WPF. Would you agree?

Yes, I would say so. Certainly FireMonkey’s multiplatform support is a significant distinction compared to VCL. But, FireMonkey is “native” Delphi. FireMonkey, like VCL, is not a JIT or dynamic language platform. FireMonkey is not aiming to be an entertainment or media platform – it is designed to bring “rich” content and user experiences to business and industry application solutions. But where VCL is a Windows only, FireMonkey is designed to run Windows, Mac, and Mobile devices.

Delphi Prism is a plugin for Visual Studio, which allows you to use Delphi syntax in the .NET environment. What cool things can you do with Delphi Prism that are difficult to do with VB.net/C#?

Like Visual Studio’s VB.NET and C#, Prism supports all Microsoft .NET Technologies and Windows platforms, but Prism also supports Mono and MonoTouch platforms on Linux, Mac, and Mobile devices. Our partner RemObjects will soon be offering a Prism language compatible compiler that outputs Java byte code. The Prism language has advanced language capabilities not available in VB.net or C# such as deep integration of parallelism into the language, full language integration of nullable types and Aspect Oriented Extensions via Cirrus support.

What are the coolest things that one can do with Delphi XE that are not easy to do with C# or VB.net? I’m specifically asking about Delphi XE here, because if I get this right, Delphi Prism can do *everything* that C# and VB.net does (and more).

Build applications for all versions of Windows, which support keyboard, touch, gestures, styles, mouse, etc., based on visual development.

Do you believe native applications will become fashionable again, and that mobile applications will drastically slow? Why or why not?

Native applications have never been out of fashion. Look at Microsoft Windows, Office and games – they are native. Or, look at the iPhone apps – they are also all native and running in mobile devices. The Mac is growing, but lacks the applications necessary to support the users. Windows is a winner in this area, since there are already millions of applications available. The mobile application market is only in its early stages and there is still so much to explore in this area. Five years ago, we couldn’t imagine what we are doing with phones today and, next year, new devices will come out doing things we could not imagine. New devices, social networks and consumer behavior will drive the future of mobile apps.

Do you think that it is still usually unnecessary to think about mobile apps, companion web-apps or multi-platform applications, when running a mISV business with a native desktop app being the main product?

No. Today, end-users make decisions from anywhere, and access to the data is key part of their decisions. If a mISV doesn’t provide an interface, they are quite simply out of the game. Interfaces could be a mobile app, web interface or multi-platform app. The important thing is to allow the end-user to access the data.

In RAD Studio XE2, you can use DataSnap to write and expose business logics through Server Methods, enabling iOS, BlackBerry, PHP, Delphi, C++, .NET and JavaScript applications to call and interact with the server methods. Using this architecture, you don’t write the business logics for each client, you just write the client UI and interact with the business logics on the DataSnap Servers.

Could you name some of the biggest challenges presented by interface guidelines, and how developers can overcome them?

I don’t see specific challenges related to interface guidelines, the challenge today is to support so many different devices: PC, iPhone, Android, HP WebOS, Web, etc. Users do not exclusively sit in front of desktops anymore; they use all kinds of devices to communicate. The need to support multiple devices became a challenge for developers, since it forced them to use different IDEs and languages. Today with FireMonkey, we allow developers to create business application for Windows, Mac and IOS very easily, and in RAD Studio XE2, they are able to create web-applications optimized for iOS and Android.

Do you think that violating the interface guidelines can sometimes be a good thing? Could you give us an example?

Yes, in order to improve the user experience, sometimes it is necessary to violate the interface guidelines. As example, a Windows request to support 800×600 as minimum resolution. You can organize and provide more information in a 1024×768, improving the user experience. In fact, the majority of developers today use 1280×800 and higher.

And the last question – what do you have to offer to mISVs and hobbyist programmers?

We provide the fastest IDE in the market – the Delphi language, which is easy to learn and use. We also provide the C++Builder IDE for C++ development. Both IDEs are based on the component development, drag and drop, easy to deploy, maintain and run.

We offer the Delphi and C++Builder Starter Edition for mISVs and hobbyists. This version includes a streamlined IDE with a code editor, ultra-fast Delphi compiler, and integrated debugger. It also offers two-way visual designers to speed development, hundreds of visual components, and InterBase Express for connectivity with the InterBase database.

Getting started on realizing a product vision or getting a startup off the ground can be difficult without seed capital or sales revenue. Outfitting developers with professional level tools can be cost prohibitive before they have product to sell. So the Starter Editions have an “indy“ license, which allows developers to build software for themselves, non-profit organizations, friends and so on. If their revenue level reaches a certain point, they can upgrade to a specially priced Professional Edition license.

About Andreano Lanusse
Andreano Lanusse is a software development expert who is enthusiastic about the industry. At Embarcadero, he is focused on helping to make sure the products being developed meet the expectations of Embarcadero’s customers, as well as defining market strategies for Latin America. You can find his blog at: http://blogs.embarcadero.com/andreanolanusse

Related Posts:

Better ListView

Better ListView

Ultimate .NET ListView replacement control
for WinForms (C#, VB.NET)


Swift To-Do List 11

The ultimate to-do list and notes software for Windows.

Uninstall Surveys

Software uninstall surveys are an invaluable marketing, sales and feedback tool. If you are currently not collecting uninstall surveys, this post might make you reconsider.

What is an uninstall survey? It is a form that users who uninstall your software are asked to fill and submit, and the results are sent to you. The survey should be always optional and non-obtrusive.

Why should you do uninstall surveys

As with almost everything in business, the main reason for doing uninstall surveys is to increase your profit, and spot any issues that prevent your users from being happy with your products.

Uninstall surveys help you boost profit in multiple ways:

  1. You will get useful, actionable feedback. (More on this later)
  2. You can make a sale by offering a discount or another special deal.
  3. You can offer the user an alternative product.
  4. You can collect email addresses, to get back to your users.

Uninstall surveys allow you to take advantage of many monetization, business development and customer relationship building opportunities.

How to do uninstall surveys

The best way is to probably create a hidden “Why have you uninstalled My Awesome App?” page on your website. Do not link to it from anywhere on your website, open it only directly from the uninstaller of your software.

When someone uninstalls your software, simply launch the URL from the uninstaller. ShellExecute will do.

If you use Inno Setup, you can use the following code:

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var ErrorCode:integer;
if IsUninstaller and not UninstallSilent then begin
  if CurUninstallStep = usDone then begin
    ShellExec('open', 'http://www.mywebsite.com/why-uninstall-my-awesome-app', '', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode);

There is also an Inno setup .dll plugin which allows you to do the uninstall survey directly from the uninstaller, but I do not recommend it for two reasons – first, it is prone to firewall issues. Second, it doesn’t give you the same flexibility as a page on your website, which you can change at any time to introduce new promotions, tweaks, etc.

You probably shouldn’t launch the URL for users that have already purchased your application. Check for the presence of a valid registration in the uninstaller, and when detected, don’t launch the URL with the uninstall survey. (You do not need to validate the registration, just quickly check if the reg. info is stored.)

If you want to get fancy, you can also submit the Windows version to the uninstall survey page via HTTP GET method from the uninstaller.

Designing your “Why Uninstall?” Page

If you are selling multiple products, you should have a separate why uninstall page for every of your products.

The design of the why uninstall page depends entirely on your goals. Our uninstall form looks basically like this:

Reason: [Dropdown list of possible reasons]
Comments: [Multi-line text area]
Email address (Optional):

But, for example, if we were offering a mature enterprise product, I would probably remove the Reason dropdown, and make email address non-optional.

The “Reason” dropdown can include these reasons:

  • Can’t start the program (What happens?)
  • Expensive
  • Complex
  • Hard to use
  • Missing features (Which?)
  • Too short trial
  • Crashes, errors
  • Found another program (Which?)

Customize this list. E.g. if you are aware of some very important feature that is missing in your product, add it to the list of reasons.

It doesn’t hurt to include some graphics or stock photo to capture attention. It can be a sundown, a sad puppy, sailboat disappearing in a distance – just about anything that represents “leaving”. Making it emotional will probably slightly increase the number of answers you will receive, but do not try to induce guilt in the user. It is okay to say “We are sorry to see you go”, but don’t communicate exaggerated despair or be manipulative.

Furthermore, your uninstall survey should communicate trust, just like your buy page. You can include your mailing address, assure the user that you won’t share or spam his email address, include any “trusted” badges/logos that your site has, etc. You can also place a little “shield” icon into the “Submit” button of the uninstall survey, which conveys trust and confidentiality.

You can also make it personal – include your photo and signature, and communicate that you really care about offering the best possible product, and give the user the opportunity to help you out.

Getting the most out of the uninstall surveys

The cool thing is that you can take an action based on the uninstallation reason the user has reported.

Some of these actions can be even automated.

  • Trial is too short? Extend the trial for that user.
  • The program is too expensive? Offer a discount.
  • Errors are present? Make a fix and send it to the user.
  • The program is hard to use? Educate the user, and update your help files and guides.
  • The program is too complex? Offer your simpler product.
  • The program is too simple? Offer your more advanced product.

You get the idea.

If your application is priced low (below $50), consider utilizing TrialPay.

TrialPay allows your users to get your app for free, in exchange for signing-up for a trial of a 3rd-party product, or completing some offer from one of the TrialPay partners. You will then be paid by TrialPay. You will most likely get higher conversion rates with TrialPay than by offering a discount yourself, but the average payout will be probably lower. You need to test this yourself – it depends on your product. I would say that popular, broad consumer-oriented products would work best with TrialPay.

The most important thing is to reply to everyone who left their email address, either automatically, or personally, and try to “save” the sale. It might seem like it’s not worth it, but you can achieve pretty amazing conversion rates.

Think about the survey participants as folks who are sitting on the fence. Reaching to them and showing that you care is sometimes all you need to do in order to win them over, especially if you also offer them a discount.

Feedback full of golden nuggets

The feedback you will get from the uninstall surveys can be extremely valuable.

Just think about it – when multiple users say “I would purchase your product if it had a feature X”, then it is almost guaranteed that if you include the feature X, your sales will increase.

Or, if only a small fraction of the survey participants state that the product is too expensive, your pricing is probably too low.

A typical participant of the uninstall survey will probably be different from a typical user that emails you directly. There is some overlap, but getting the feedback from the former group can be very, very valuable.

I’m always happy to help. If you have any questions or comments, reach me at novotny@dextronet.com

Related Posts:

Better ListView

Better ListView

Ultimate .NET ListView replacement control
for WinForms (C#, VB.NET)


Swift To-Do List 11

The ultimate to-do list and notes software for Windows.

Collecting charity donations on your order page

When we launched our new website, we’ve completely redesigned everything. Our order form naturally went through a major overhaul as well. One of the improvements we’ve implemented has proven to be very beneficial: We now allow our customers to make an optional $1 donation to a charity whenever they purchase something from our secure online store.

At first, we’ve not received many donations, but more and more people are now choosing to add the one dollar donation to their purchase. In about 6 months, we’ve collected first $50, and sent them over to WWF.

It looks like we are going to collect the next $50 much more quickly.

If you are wondering why we’ve done this, let me tell you that there are many, many reasons. I will list some of the benefits at the end of this article. But first, let’s talk about the practical implementation.

How we did it

Basically, we’ve added a checkbox “Add $1 to my order as a donation to WWF” to the bottom of our order page. You can see it live in our software store.

It looks like this:
$1 WWF donation

We’ve chosen WWF charity because we like its cause. However, if your business is based locally, you could choose some non-profit that is functioning in your community. There are a lot of non-profits to choose from, you can check out www.charitynavigator.orgfor some ideas (Charity Navigator also provides organizational efficiency ratings, etc.).

We’ve also added a small text link upon the checkbox, which pops-up a window with explanation – what is WWF, and how we process the donations. It is crucial that it is a pop-up, and not another page, because you do not want your customers to leave your order page. This is very important – when you include links to other pages that can distract your potential customers, you can easily lose sales.

We’ve created a new product “$1 donation” at our payment processor (BMT Micro). This product is included in the cart when the checkbox described above is checked. This product can’t be purchased as a stand-alone purchase. It must be always purchased together with another regular software product of ours.

There is one thing to be careful about when setting this up with your e-commerce provider – the minimum commission. Many e-commerce providers will charge you a minimum commission for each product sold. BMT Micro has incidentally $1.25 minimum commission. However, BMT Micro was kind enough to disable the commission for this $1 donation product altogether. I’ve just contacted them and asked for this. Their support is absolutely stellar.

And that’s about all you need to do.

Once you collect some larger sum (it doesn’t really matter how large it is, because many non-profits can accept even tiny donations), you can send it to the non-profit that you’ve chosen. If you are feeling generous, you can round it up or even match it.

The benefits

OK, so why should you do this *at all*? There are many benefits. The major ones include:

  • You are doing a good thing.
  • You are enabling your customers to do a good thing.
  • You are making your business “socially responsible”.
  • You are going to appeal to female customers a lot more.
  • You can generate extra buzz and content.

You are doing a good thing – well, a charity of your choosing is going to receive more money. That counts.

You are enabling your customers to do a good thing – it really feels wonderful to give. I’ve made some donations like this myself, and it has always felt great. I think that many people would like to donate, but it’s just not easy enough. You can fix that part – checking the checkbox on your order page is super-simple. Your customers are making a purchase anyway, so why not give them this option? Everyone who makes a donation will feel great, and will associate that good feeling with your business and products.

You are making your business “socially responsible” – basically, your business will look like it still cares. That is very important in this age of faceless corporations. Savvy users can really appreciate this.

You are going to appeal to female customers a lot more – it is a known fact that females are much more social creatures than males, and they feel that “giving back to community” is very important. This is a great way to engage the female audience – I bet that majority of your customers are males. Things like this can shift this unbalanced ratio a bit, and win you more customers.

And lastly, you can also publish news, announcements and blog posts about your initiatives to support non-profits. If you choose some tiny local non-profit, they might even list you on their website as a donor, or let you make an interview with them and publish it on your website or blog, etc. Non-profits can be very grateful.

Also, you could change the non-profits/causes based on what’s going on in the world at the moment. For example, right now, it would be still a good time to support the Japan’s disaster relief. A few years ago it would’ve been Haiti, and before that, Tsunami victims relief, and so on. Supporting what seems to be the most discussed cause at the current time is good – it’s actual, and it enables you to “ride the media wave”.


Letting your customers donate one dollar to a non-profit when making a purchase from you is not something that you want to implement early on, when your business is just taking off. However, once your business is mature, it is a great way to do some good, get positive PR, engage female audience, and generate extra buzz and content. Plus, it feels great both to you and your customers. It’s a win/win/win.

If you have any questions or comments, I will be delighted to hear them.

Related Posts:

Better ListView

Better ListView

Ultimate .NET ListView replacement control
for WinForms (C#, VB.NET)