Sunday, December 16, 2007

Llama Carbon Copy Sales and Core Customers

My backup software, Llama Carbon Copy, is getting off to a decent start at the end of the year. I have about 500 downloads, 2 sales and I've started to put together a group of testers and customers that are using the software on a daily basis. The last part is the most important. Customers are really good at telling you when they find bugs and when they want new features. I've put out 5 releases since late September, each of them incorporating things that the customers have specifically asked for. It is easy to motivate yourself when your customers are asking about features and promising to buy your software when those features get finished.

I cannot understate the fun that comes with making something for people who are waiting for it and happy to get it. Get some customers for your product as quickly as you can, they make all the effort worthwhile.

Friday, October 05, 2007

New Version Potential

I recently released Llama Carbon Copy v1.2. I'm extremely happy with how the user interface changes turned out. I've uploaded my PAD file to hundreds of download websites, but I haven't yet started my AdWords or SEO marketing campaigns.

Here are the download numbers (since Sept 23rd, 2007):

Visitors: ~500
Downloads: 95
Sales: 0

While these numbers aren't going to accidentally crash the internet, they are pretty good compared to what I was getting before I made the adjustments to the user interface. I'm encouraged by the download numbers and visitor counts this month especially because I haven't started any marketing.

I am in an extremely tough market. Llama Carbon Copy is backup software. Everybody has already told me that this is the worst market to get into because there is so much entrenched competition. I almost believed the critics and started to wonder if this was the right software to be working on. Then, something happened. I got an email from a customer. It read, in part:

"One of my pet peeves is overly complicated software. The engineers typically get so carried away with their ideas of features that they think people might want that they never stop to ask what real world people actually do. "

This energized me. My software was specifically designed to be simple. It is the simplest possible thing that could work for real time backup. It's even simpler to use than some freeware. This customer indicated that he thought the user interface was easier. That's my value proposition. I have an easy to use product with no fluff.

Most backup software products these days are written for programmers and other IT workers. I thought there might be a market for a product that was for normal people that just wanted to keep a copy of their work. Those people don't need compression. They don't need a complex mechanism to schedule their backups. They don't need to do more than just copy their files when they change to a USB drive or other external hard drive. I wrote my software with this in mind. Of course, when I showed it to my programming peers, they said that it didn't do enough. Naturally, it's not for them.

My intention is to make one final alteration to the product. It is something that I was not sure if people needed or not, but I've heard now from a couple of customers that it is needed. Once I make that alteration, I am going to be very careful about what other things I add to the product. I do not want to turn away users seeking an automatic person backup system.

Friday, September 21, 2007

Infralution Revolution

Infralution is an Australian software company that puts out a variety of products to help developers. I recently purchased their Infralution Licensing System (ILS). It has a companion component which will send out registration keys and works with Paypal's shopping cart called IPN.NET. Total cost for both products, including the source code of both (which is extremely important as I'll explain in the next paragraph) is only $180. I've implemented the licensing scheme in one of my products and it was easy to do, so easy in fact that I was able to do it in the middle of the night, tired and it compiled the first time, and worked the first time. When was the last time you had that happen to you? Thank the good example code that is included in the install.

The reason that it's important that you get the source code is because you can then integrate that source code into your own. This allows you to use your normal obfuscation techniques without creating any problems. Since obfuscation software is also somewhat expensive (relative to $180 for ILS and IPN.NET) it's excellent that they work together.

In short, I'm happy and if you are in the market for a licensing solution check out Infralution.

Friday, September 14, 2007

Free Program to Paid Product

I'm considering putting out a "Pro" version of Vizonware Organizer. The free version has met with good success and several people have taken the time to comment on the product and help me with reviews. Over the last four days, about 235 unique visitors have come to the website with 36 of those being Google or Yahoo bots. 36 copies of the product have been downloaded. That's about an 18.1% download rate, which I feel is pretty good for a product this young from an unknown vendor with almost zero search engine positioning. I'm expecting to add a couple of pretty useful features to the Professional product that the Standard (free) version won't have.

People seem to like the product, at least enough to engage in multi-day discussion with me about how it could be improved. My hope is that I can continue to provide functionality that will keep them interested in and using the product.

Have any comments on the product? Suggestions and constructive criticism is always welcome. Email me here, at volzsoftware.com or josh {@} vizonware.com.

Vizonware Organizer v1.0.2.0 Released

Today, Vizonware Organizer v1.0.2.0 was released. It provides a couple of bug fixes and some new data exporting features. It now exports all your data to XML and to a tab delimited file that works nicely in Notepad and Excel.

If you are reinstalling the product uninstall the previous version first, and then install the new version. This will not delete your data, but does ensure that you get the proper version of the software installed without incident.

Thursday, September 13, 2007

.NET Deployment is a Failure

Deploy a .NET desktop application lately? I have done several; it's really annoying and expensive. Here's the things that you need to make a deployment happen for a shrink-wrapped desktop software product.

1. Obfuscator - you have to hide all that code you spent months working on. Especially since you don't want your software to be so easy to crack a four year old can do it. It'd be even cooler if this thing also acted like a linker and then compiled your .NET stuff to native code for Windows, but I digress.
2. Licensing - I believe you need three features from licensing: (1) timed evaluation, (2) ease of integration and (3) the ability to produce in an automated way through your payment processor (or even a 3rd party) a license key which will get rid of the time evaluation.
3. .NET Framework - Your customers are using Windows XP. Sorry Microsoft, I know that everyone was supposed to be using Windows Vista, but that plan didn't pan out. So, you have to make sure that the proper version of the .NET Framework is installed, and ideally you'd like to do that before your customer downloads your application (so you know whether to include it in the install or not). Alternatively, you can have your install download it, but then you're writing custom install stuff and not really following the "keeping clicking until it's installed" plan of your customers. How many cancel the install at that point?

Now, the fun part begins. You have to get all of these things to work seamlessly with each other. You'd best hope that your obfuscation doesn't mess up your third party libraries (are they themselves obfuscated, and if so, by the same program, and if so, will it still work) especially your licensing 3rd party tools. What? You wrote your own! Good luck. You have to hope that your licensing has a command line application you can install on your $9 per month server that you are renting (that's undoubtedly Linux, and thus doesn't support the Windows based license key generator that comes with your licensing 3rd party component). You have to hope you can find a linker than will link your obfuscated code, or compile it to native form. Do you know how much those are? Well, let's put it this way, I have to sell like 60 copies of my software in order to pay back the cost of the one I finally settled on (Yay consulting revenue for picking up the tab). Seriously, will the suffering ever end?

No, because now, even if you manage to have overcome all of that, you have either a 3rd party anti-virus product or Microsoft Vista to contend with during installation and during the running of your program. You did put your application data in the application data folder, right? You did move it from Program Files (where it lived forever with your executable because you're naughty)?

Okay, now I am just complaining. It's how I feel though. If I could buy one solution that would link my code, compile it to native form, provide secure licensing and generate license keys from the command line of a Linux machine (or even from within a PHP webpage or Python or something) I certainly would. I've already handed over about $1750 to try to get this sort of thing worked out across a variety of different products and projects. I'm certain that I would at least consider a product that did all of that in that price range.

Get to work MicroISVs, save me from myself. At one point I was seriously considering writing my next application in C. It's fast and distribution is a snap. Not to mention all the libraries and support for it. Am I actually considering this? Are we going forwards or backwards in terms of functionality and ease of use for programmers?

Vizonware Organizer Download

I've just released an entirely free application based on Marc Andresseen's Productivity blog post (here). It basically lets you easily track the 3 lists he mentions. It also lets you add notes to tasks (or projects, whatever you want to call them). Additionally, it saves everything every 1 minute, so you don't have much chance of loosing data. It runs on Windows 2000/XP/Vista. Conceivably, you could run it under Mono on various forms of Linux or OSX, but I haven't tested that, nor do I make any claim it will work.

Did I mention that this program is *FREE* to download and use forever? Here's the URL:

http://vizonware.com/downloads.html

If you have any questions, requests or ideas, please do not hesitate to email me.

More Articles on HippoFondue.com

If you find this blog, and it looks like it's completely dead, then that means I wrote and posted stuff on my personal blog instead. It's at:

http://www.hippofondue.com

I will be posted to both locations (when appropriate for the article) from now on.

Saturday, June 24, 2006

Long Programming Short

I have often wanted to equip myself to do programming in short bursts. I often think I can accomplish this in the check out line at the grocery store, or while commuting (voice recorder for driving, or handheld device for bus/train/carpool). I often think, "if only I could use all this dead time to get something done." Here's the problem: that dead time is dead because you don't have something to program that is small enough to fit a unit of it into that time, and still interesting enough to be worth doing.

Sure, I can write "Hello, World" applications all day at the 7-11, but I can't really implement an object relational mapper, or a compiler while waiting for my meal at Del Taco. Interesting problems are by definition hard. Anything that could be done in the "off time" of some other activity has already been done in every programming language, most of which you can just download from the internet for free, because the authors know it only took them 20 minutes to do.

How can we combat this problem and still end up using those lost minutes productively? One thought is parallelism. If you can break your huge task into millions of little tiny (different) tasks then you could conceivably just do a single miniscule task while you wait for your quadruple espresso. You have to maintain a list of the tasks, unify the code somewhere, and make the entry reasonable enough that you can do it anywhere.

Another idea is to use an iterative approach. Just do one small change. Refactor a single line of code, change an error message, rename a function in your program, put a copyright header on yet another file, adjust your make file, write a single test within a larger unit test framework, just do something. Squeeze in commenting the "why" of a function or portion of a function while the $3.50 gas flows from the pump to your eternally thirsty gas tank.

Can it be done? I'm not sure, but it's worth a college try at least.

Wednesday, June 21, 2006

Web Programming and Interpreted Languages are the same thing.

Client side web programming and interpreted languages are the same thing. Each runs on top of a platform that provides a layer between the operating system and the application you write. Each requires the user to download (or have already installed on their machine) some sort of "virtual machine" that intreprets text directly or some form of middle language (CL in .NET, bytecode in Java, etc.). The only real difference (and it is a biggie) is that Internet Explorer or Firefox is effectively installed on every machine connected to the internet. Both of them sufficiently support a content language (HTML), a positioning language (CSS), and a scripting language (Javascript). Why aren't we writting application servers that deliver code (in a text form, like HTML is delivered) to the browser that can then be interpreted by a plugin for the specific scripting language it's intended for (Perl, Python,Lisp,Ruby,etc.)? This would give you the centralization available with web applications, and the GUI reaction speed of an interpreted program running on your local machine. Am I the only one who thinks this would make the delivery of programs really easy while also making them user friendly?