In the Flow » Posts in 'microISV' category

Free Inno Setup Skins from CodeJock

Free is good. Free that makes my product look better is great.

If you’re an Inno Setup user, take a peek at the free skins from Code Jock. The gallery of styles is here. They add a bit of polish and take only a few minutes to add it to your setup. It does add about 300 kb, so if you obsess about download size, it may not be for you.

I used the Office 2007 skin. Here’s the before:

Normal FlowBreeze setup

Here’s the after:

Skinned FlowBreeze setup

I wonder if I can get Skinned for Vista Certified.

[Mis]Information Technology

Following MacWorld, Reg Developer started a rumor [1] that VBA would be going away from future versions of Microsoft Office for Windows. The speculation was based on Office 2008 for Mac dropping VBA (a big blunder by Microsoft, IMHO) and on Microsoft dropping their licensing program for 3rd parties to incorporate VBA into their applications.

Sometimes the internet is like a Petri dish for The Stupid Virus. Rumors grow and spread rapidly. This rumor spread wide enough that it even caused Microsoft to take notice. The Excel team at Microsoft posted a clarification [2] that VBA for the Windows based version of Office won’t be going away in the foreseeable future.

This is a good thing.

I’ve read speculation here and there about the future of VBA for a while now. Partly, this was due to the Mac 2008 VBA issue [3] and partly this was due to the huge push Microsoft is making for SharePoint services, relegating Office VBA development to the role of the red-headed stepchild. But no official word from Microsoft was issued until now. It took a widely read site like The Reg to make Microsoft stand up and take notice.

This started me thinking. What about all the other things developers wonder about?

I’d like to port FlowBreeze from VB6 to .NET, but there are still some stumbling blocks. The biggest hurdle is the lack of official support for Excel 2000. The next biggest hurdle is that COM add-ins run in the Excel process, and only one version of the .NET framework can be running in a single process space. If you develop using .NET 2.0 and the customer also uses an add-in based on .NET 1.1, then problems can occur. There are ways of dealing with these problems, but it would help if I had more information on which to base decisions.

I, and a lot of other developers, would love to know the penetration stats for the various .NET frameworks. And what about the user stats for Office 2000, XP, 2003, and 2007? Solid market data on that would be great.

Maybe The Reg can help us out. I’m sure other people could think of more data Microsoft could share to aid the developer community. Could we get a few more rumors out there?

[1] http://www.regdeveloper.co.uk/2008/01/14/office_mac_08_vba/
(See the footnote that the article has been updated. In this case, ‘updated’ means ‘completely rewritten’.)

[2] http://blogs.msdn.com/excel/archive/2008/01/16/clarification-on-vba-support.aspx

[3] http://www.schwieb.com/blog/2006/08/08/saying-goodbye-to-visual-basic/

Building to Schedule vs. Building to Features

Fog Creek released a new version of FogBugz this week with something called Evidence Based Scheduling. It feeds project tasks and developer characteristics, along with historical data, into a Monte Carlo simulation then builds a probability distribution for project completion.

By coincidence, I was reading about statistical methods for project estimation several months ago. (All I was looking for was a probability distribution that a typical project would meet a set timeline, but you know how easy it is to get sidetracked on the web.) It turns out there are a number of stochastic project scheduling techniques that use Brownian motion (aka random walks), Kolmorogov extensions, and a number of other things that bring about bad flashbacks to my Applied Statistics class (hint: “Applied” in academics means “Theoretical” in the sane world).

In short, it’s the kind of stuff that makes my brain throb. So kudos to Joel Spolsky and the team at Fog Creek for pulling this off (assuming it works as advertised).

But, one of the things that I told myself when I started BreezeTree Software is that I would build to a feature list, not to a set schedule. I never wanted to feel rushed to get a new version out the door before it was feature complete.

I’m starting to realize, though, that this philosophy makes no sense. The problem with it is that the list of planned features exists in my mind. If you don’t make any commitments about a particular feature, releasing a new version without the feature wouldn’t disappoint anyone or break any promises.

As I’ve said in other posts, the road to FlowBreeze 2.0 was pretty rocky. I had “completed” version 2.0 back in early March.

Then I threw it all away.

And I feel fine.

I made the decision at the earlier juncture to pull back 2.0 and refactor the core for a variety of reasons. They were are solid reasons from both a technical and business perspective, so I don’t regret them. As the months wore on, several epiphanies sprang to light and complications like the Software Passport (Armadillo) compatibility problems arose. These pushed the schedule out again.

When I sat down to write up the 2.0 release announcement, I looked at all the features I’ve added. Many of them were completed months ago. Of those, most relied on the new core but others didn’t. So this begs the question, by not releasing the features that were already complete, was I depriving existing customers of valuable improvements just so I could feel it was “feature complete”?

Understanding Opportunity Cost

I made the mistake of telling several customers that FlowBreeze 2.0 would be released by the end of the August. I missed that target date. If I had cut a few features I could have made the target date. As I said, one of my goals was to release to a feature set instead of to a schedule, so I chose not to.

I think this is one of the toughest decisions indie software developers face. It’s easy to become emotionally attached to a feature or two and think they must make the next release. It’s also easy to always view your application as feature incomplete compared to the long term vision you have of it. Meanwhile, customers are blissfully unaware of that feature complete vision in your head.

And that’s where the concept of opportunity cost comes in. Opportunity cost is one of those basic concepts you learn in school or on the job. In a nutshell, allocating resources to one thing means you can’t allocate them to some other thing. That plus the unrealized benefits from the path not chosen are the opportunity cost.

There are probably better definitions out there, but it doesn’t matter. Because you’ll never really understand opportunity cost until you run your own business. When you work for a company or organization, those opportunity costs get absorbed elsewhere, and you usually don’t feel the consequences. When you run your own business, you feel the consequences right in your pocket.

So spending more time on development means spending less time on marketing. Likewise, having longer release cycles means less marketing bursts in the form of press releases, announcements on your blog, site submissions, or simply cool new benefits you can showcase on your product page.

If you don’t work to a schedule, you are not controlling your most valuable asset. The biggest opportunity cost decisions you face are for the allocation of time.

That Damn Monkey

So having already admitted that the cymbal-banging monkey in my brain was wrong about the “build to features” scheduling mentality, I will try (it’s hard!) to switch to a time based release mentality. Ultimately, it would be nice to build a given feature set in a given amount of time, but past history leads me to believe that I would be wrong 99% of the time.

So I will monitoring the airwaves to see what others are saying about FogBugz’ Evidence Based Scheduling. I’d especially be interested in any one or two man shops that use it. Hopefully the feedback will be positive, and it won’t take forever to build up a sufficient data bank of historical inputs.

How to Stop IE6 Caching Downloads

Update: The method described below will cause IE7 to drop the extension. A modified version is pending.

Until recently, I had no idea that IE6 cached downloads. I knew page and image caching were issues, but I didn’t know if affected exe’s and zip’s as well.

FlowBreeze 2.0 was released 11 days ago, putting some of the 30-day trial users in the bubble. They were using the 1.4 version, so they’d come to the site, download the new version, and install … Version 1.4?!?

One customer didn’t think I’d believe him, so he took screenshots of each step: clicking the download button, saving to the Desktop, and running the setup file, which clearly said version 1.4 on the screen.

Thanks to the folks on the BoS forums, I figured out the problem and wrote a little Javascript to resolve it. If you are running dynamic pages, server side scripting would be more robust. But if you’re all HTML like I am here at BreezeTree then this should work in a pinch:

function UpdateDownloadLinks() {
var i;
var linkLength;
var linkType;
var linkCount = document.links.length
var randNum = Math.round((Math.random()*10000));
for (i = 0; i < linkCount; i++) {
linkLength = String(document.links[i].toString()).length;
linkType = String(document.links[i].toString().toLowerCase()).substring(linkLength, linkLength - 3);
if ((linkType == "exe") || (linkType  == "zip"))
document.links[i].href += "?fid=" + randNum;
}
}

(N.B.: I haven’t played with Javascript in years, so if this code sucks, leave a comment below and let me how to make it unsuck.)

The script downloaded by clicking here.

How I Finally Got AdWords Tracking To Work

Until this past week, I’ve never been able to tell whether AdWords was paying for itself or not. Somewhere between my ads and the payment processors, my tracking lost its way. It all hinged on a) the tracking working through the payment processors or b) the customer clicking the link to return to the BreezeTree web site after the transaction. Based on what I’ve seen in the past week, I’d estimate that those two methods were working about 10% of the time.

Tracking concerns anyone running a web based business because the cost of Google’s advertising is going up up up. They just reported a 46% rise in 3rd Quarter profits. While the boys in Mountain View are getting richer, the rest of us are wondering whether we’re just throwing money away. You think that the Chinese government is rerouting Google traffic to Baidu today in retaliation to Bush’s meeting w/ the Dalai Lama? Nah! My money’s on some Chinese hacker ticked off over the rising cost of AdWords.

To improve tracking, I decided to change the FlowBreeze order confirmation email. The old FlowBreeze confirmation letter included the registration information and a long list of instructions for downloading, installing and registering the software. It also contained a mini getting started guide. I decided to go with a minimalist approach in the email but link to a confirmation page (where the tracking code is). The new email looks like this:

###

Dear [BUYER'S NAME],

Thank you for purchasing FlowBreeze flowcharting software. Your product registration information is as follows:

[REGISTRATION INFO]

If you haven’t already done so, we strongly encourage you to visit the confirmation page:
[CONFIRMATION LINK]

On the confirmation page, you will find…

  • A link to download FlowBreeze (if you haven’t already done so).
  • Installation and registration instructions.
  • How to get started with FlowBreeze.
  • Over 100 flowcharting templates.
  • Links to help and support.


Again, thank you for your order. If you have any questions, please don’t hesitate to contact us.

Sincerely,

BreezeTree Software

###

With this system in place, I’m estimating that close to 100% of my customers have visited the confirmation page. Suddenly the light is on. AdWords is actually paying for itself - much better than I thought.

There are some flaws with the system. I’m using both Google Analytics and Google AdWords tracking systems, and neither does a great job of tracking. So I have to look at them both. My Venn diagram isn’t as cool as any of Jessica Hagy’s (my fav), but basically the tracking looks like this:

Analytics vs AdWords Venn Diagram

I’ll admit I don’t understand this because both systems are javascript based and placed at the bottom of the confirmation page. I cross referenced my own sales data vs. my server logs vs. Analytics goal tracking for AdWords vs. tracking shown on the AdWords Campaign Management page. Of the sales that come from AdWords clicks, some are tracked only by Analytics, some are tracked only by AdWords, and some are tracked by both.

So to get an accurate total you would need to determine A + B - A Intersect B. Figuring out that Intersect number on a regular basis is going to be a real pain.

Overall, I would say the conclusions to be had are:

  • Give your customers a reason to visit your confirmation page.
  • Offer something free for their effort (in my case, the 120 flowchart templates).
  • Don’t rely on just one of Google Analytics or Google AdWords tracking systems.
  • Don’t rely on Google Analytics for your web traffic analysis (the holes in this data reaffirm my opinion that Analytics sucks).

MicroISV Survey Results

The Business of Software blog posted Part II of their microISV survey. (Part I van be found here.) I have to admit that I was surprised by some of the low revenue numbers. But I’m one of those obstinate people who refuses to believe something when it doesn’t fit his world view. At least for a while, anyway.

Successful people are often too busy to spend time on forums, so they wouldn’t even be aware of the survey. Others just wouldn’t be interested. Business is war - why share data? My neighbor runs a successful microISV, and he doesn’t hang out in any online communities. He’s too busy. Scale that to the globe and you’ll have a good idea why I think the results of the survey may be skewed to the low end.

Still, I’m a data junkie and there are several data points I’d be interested in seeing. Are the microISV’s with two or more people more successful than one person shops? How do revenues correlate between B2C versus B2B apps? Of the successful companies, what’s the breakdown between those selling a small number of flagship products or a handful of smaller products? I have a gut feel for each of these, but I’d love to see the numbers.

The Piracy Loss Formula

Due to the recent incompatibilities between Vista and the crappy 3rd party licensing tool I use for FlowBreeze, I have been re-examining how I look at anti-piracy protection. I’ve decided it all boils down to a simple formula:

PL = F(SLS + SE + LS - DT)

Where, PL = Piracy Loss (i.e. the revenues lost due to software piracy) is a function of:

SLS = Support Labor Savings
The support time savings by NOT having to deal with crappy 3rd party licensing tool problems.

SE = Software Expenses
The money saved by not buying the forced upgrade to the just-as-crappy new version of the crappy 3rd party licensing tool that still fails on Vista.

LS = Lost Sales
The lost sales caused by installation and runtime problems which are due to the crappy 3rd party licensing software.

DT = Development Time
The labor to develop my own licensing tool and delivery mechanism to replace the crappy 3rd party licensing software.

The question is, should the formula be…
(a) PL < F(x) or
(b) PL = F(x) or
(c) PL > F(x)?

Obviously I wrote this piece because I think the answer is (a).

In the past few months, there’s been an spike in user-reported problems. First, there’s Vista. Putting a crappy 3rd party licensing wrapper around a DLL justing isn’t working on Vista. In fact, FlowBreeze won’t even install on Vista 64. Unfortunately, there have been a number of reported problems on XP as well. I haven’t been able to pinpoint the cause of the problems, other than sending users an unprotected version of the software resolves everything.

Did I just say that I was sending out unprotected versions of FlowBreeze? Yes, I did. In fact, I’m candid when people ask about it.

It’s a trust based system, and conversions for those who request a copy are much higher then the standard conversion rate. I think that there are two reasons for this. (1) The people who take the time to inquire are more interested than the casual downloader. (2) Most people are pretty honest.

Granted, the release of FlowBreeze 2.0 is just around the corner, so the risk of sending out unprotected copies is low. But it’s still nice to know that most of the people I deal with are willing to pay for something they value. Not only does that re-affirm my belief that (a) is the correct formula, but also that nascent microISV’s are better off implementing their own simple licensing system than relying on 3rd party tools with potential side effects.

Traffic, Downloads, and Sales - Search Engines Compared

Everyone knows that Google is king when it comes to generating traffic for your website. In fact, many webmasters practically disregard Yahoo and MSN altogether in their SEO efforts. And software download sites? Their time has passed, right?

I’d be lying if I said I didn’t agree with those statements. I look at my stats everyday, and the traffic from Google dwarfs all other sources. And download sites? I barely see a trickle from them. But most of the time when I look at my web stats, I’m looking at daily or weekly snapshots. I hadn’t run any long term numbers in a while, so tonight I decided to look at the year-to-date stats then slice and dice the data. What I found surprised me:

Traffic, downloads, and sales

Looking at just traffic and purchases, I assumed there was a gap in the data because Google visitors came back at some later point, after trying the software, and then made the purchase. But when I added the Download stats to the chart, the equation changed dramatically. MSN and Yahoo remained consistent between the three metrics, but Google dropped off significantly. This is a complete reversal of my last long term stats look-see.

And what’s the amorphous blob called “other”? Google Analytics doesn’t let you track external referrals for downloads, but luckily the stat package provided by my web host does (SmarterStats, in case you’re interested). Surprise, surprise. In the Downloads data, “other” is made up mostly of download site referrals and the rest is direct traffic.

I’m not going to jump to any conclusions yet, but I thought the data was interesting enough to share.

Great Tax Advice for Small Business Owners

Thanks to Matt Inglot for writing my belated New Year’s resolution for me. (Yeah, I’m running a little behind on that one.) The recent tax season has convinced me his 5 Tips for Staying on Top of Your Books for Small Business Owners is just the sort of advice that I should be implementing. Especially the automation. If there’s one thing I hate doing as a small business owner, it’s keeping my books straight.

Introducing the Worlds First Website Created with Excel 2007

It may sound nutty, but I decided to use Excel 2007 to re-design my website. OK, the title of this post is a bit misleading. I didn’t actually design the web pages themselves with Excel 2007, but I did use it to create all the new graphics.

The Excel 2007 development team did a wonderful job re-writing the Office Drawing Tools from the ground up. The new AutoShape formatting capabilities are really impressive. Not only are the default formats stylish, but they also allow you to add some nice effects, including reflection, drop shadows, glow, 3D, and more.

Since BreezeTree Software is build around the convergence of data and (most importantly) diagrams in Excel, I wanted to emphasize the graphics capabilities of Excel on my site. So what better way than to use Excel 2007 itself to create the graphics. The re-design started out as a proof of concept, show casing that you really can create professional and stylish flowcharts in Excel. Then I decided to go for it. Hopefully I pulled it off. :-)