Thursday, August 14, 2008

Copy Protection Follow-up

If you saw my post last month on copy protection you know I was a bit frustrated with Aladdin. And in the heat of my frustration, I vented. I still stand by my comments on their documentation and lack of support for 64-bit Vista, but now that I've calmed down, and made some headway in implementing their copy protection solution, I wanted to elaborate on why I chose them.

One reason I went with Aladdin is my sales rep, Krista McCormack. I met her years ago at an Aladdin presentation that I was invited to when I was with my old company (who was a client). She was our sales rep for years and I always enjoyed talking to her. So when I needed a copy protection solution, I thought of her as much as I thought of Aladdin. She is helpful in making sure I get the answers I need. And not long after my ranting post, we talked and knowing how upset I was, she made sure I got the technical support I needed. And I've been relying on that support as I get ready for my release. (I probably could have avoided some headaches by just calling Krista in the first place.)

But the main reason I went with Aladdin's SRM solution is that it offers the flexibility I'm looking for. Although it does have a quick "wrapper" type of technology where you can just "wrap" your compiled project up without making any API calls, that is not what I wanted. I have a bunch of .NET dlls being called from a 3rd party program and I wanted to use an API to control my copy protection from the inside. I didn't want a simple run/don't run solution. I wanted to copy protect individual features. And the SRM API gives me that ability, that detailed control.

Aladdin also provides APIs for all of their functionality - not just the runtime copy protection. They have a separate API for license activation so I can create a way for users to activate new licenses right from inside my application without having to rely on an out-of-the box solution (although if their out-of-the-box solution for this had been less kludgy, I may have used it initially to get to market sooner). And there are a few other APIs that I haven't needed yet.

I also like the flexibility when it comes to licensing. Although I don't want to use hardware locks, I have that option down the road. I know from past experience that some companies prefer a hardware lock and I might want to offer that option someday, and with SRM I can do that without having to change my application. But for now, I am going to offer node-locked licenses and network or floating licenses. And my application will come with a 30-day trial by default. There are even more options that I plan to use, and I like that it is so flexible.

I spent a lot of time doing technical support at my last job related to copy protection, which is why I'm trying to make sure I make it as easy on my users as possible and give them ample licensing options to suit their needs. Which means using some of the more advance features of SRM. Which means running into the shortcomings in their documentation as I'm trying to figure out how to do more advanced things. The downside of having so many ways to customize their product is that it requires a lot of documentation. And unfortunately, documentation doesn't seem to be their strong suit.

The good news is that the support person I'm working with now is a HUGE help. She has all the right answers and has been very responsive. Ideally, though, they would overhaul their documentation so I don't HAVE to rely on support to get my job done.

I'm still not ready for release. I'm still struggling with my implementation of floating licenses and installation of the runtime dlls, but I'm making progress. And in the end, I think it will pay off. Or Krista will never hear the end of it...

Wednesday, July 16, 2008

CA Franchise Tax Board

I'm ready to pull my hair out. I got a notice in the mail Monday from the CA FTB saying I owe $48.80 in penalties. It is for the tax year ending 12/31/07. I formed my LLC on August 13, 2007. CA charges a minimum annual tax of $800, even if you don't make any money in that tax year (I did make a little). Normally the tax is due by April 15th, same as income taxes, but when you form a new LLC, the tax is due the 15th day of the 4th month following the formation of the entity. Four months from August 13th is December, so I paid $800 by December 15th.

Now, 6 months later, I get a notice that shows my payment of $800 and shows that I owe a Monthly Penalty of $4, and Underpayment Penalty of $40, and Interest Due on that of $4.80. It doesn't say when my taxes were due or when I paid them.

I am assuming that either this is a mistake, or my taxes were due on November 15th, not December 15th. When I formed my LLC, I never received a tax notice with a specific due date, I just knew I had to pay by the 15th of the 4th month following formation of the LLC.

So I'm trying to call the FTB to find out why I got this bill. The first time I call, I don't even get the automated system, just a message that all circuits are busy. Today I called again and got through to the automated system, went through the menu options and then was told the estimated wait time was 28 minutes. Sigh. So I've got it on speaker phone and I'm resigned to wait it out. But then a recorded voice tells me that they are experiencing a high volume of calls and to please call back later. They apologize for the inconvenience, blah, blah, blah. Click.

So I don't even have the option to wait half an hour. Maybe that is how they cut down on complaints about the long wait on hold - they just don't let you do it. I might be less frustrated, but after waiting 6 months to tell me I underpaid, I only have 10 days from the time I got the bill to when it has to be paid. And if I don't pay it on time, they are threatening to assess a $187 collection fee - on top of additional penalties and interest that will accrue.

Which makes me wonder if they just send out these bills in the $50 range hoping people will just pay them rather than try to get through to their obviously understaffed phone lines.

P.S. I just heard back from my accountant (who I e-mailed when I couldn't get through to the FTB) and he said I should have counted August as the first month. So I did pay a month late. Maybe that is what the Monthly Penalty was for - I was one month late with payment.

Friday, July 11, 2008

Copy Protection

If I wasn't planning to copy protect my software, I'd have released my paid version by now.

At my old company, we used hardware locks, aka "dongles". I am planning to provide my software electronically, so I don't want to have to ship locks around. Especially since a good number of my clients will be overseas and shipping costs can really add up.

So I decided to go with a software solution. I chose Aladdin's HASP SRM solution. I had worked with their hardware locks before and trust the HASP technology. I also considered Crypkey and not a day goes by that I wonder if I wouldn't have been better off doing that. But I already invested in Aladdin, so I'm stuck with it for now. And based on past experience with copy protection, I suspect I'd just have different problems with Crypkey.

There are other solutions out there. A lot of high-end expensive solutions. But my products are going to start in the $200-300 range and I can't afford an expensive solution. Not to mention I have a limited start up budget. And I didn't want to go with the quick and dirty solution of just requiring a license key on installation because it is too easy for someone to share that around the office without some kind of an online verification system. Which seems to get back into the expensive solutions. Not to mention I don't have my own server.

So I went with Aladdin since I trust them and they are familiar. Or at least I thought they were. The SRM technology is a generation newer than what I worked with before. The API is different and the process for issuing licenses seems more confusing to me. So I'm procrastinating, looking at everything else I need to do besides getting the copy protection set up, even though that is the highest risk item.

Not only is it more confusing, but their documentation is in need of an overhaul. I'm a developer. I've worked with a lot of APIs and read a lot of API documentation. And Aladdin's leaves something to be desired. And suddenly, their technical support, which was great a few years ago, has been a big disappointment. A couple of times, when I've followed up on an issue, even though the same guy is replying, the response doesn't sound like he reviewed the original issue I'm following up on!

And don't get me started on their lack of support for 64-bit Windows Vista. The copy protection will work on 64-bit Vista machines, but don't try to develop on them.

My latest frustration is that the tool they provide to activate end-user licenses is so kludgy that I feel forced to use their separate activation API to write my own. But that API only comes with an unmanaged C++ sample. Which I couldn't even get to compile in VS 2005! (It was created in VS 2003 and the release notes says that they have tested the converted version in VS 2005 and VS 2008, but they couldn't bother to include those versions). Their main runtime library comes with samples in many languages, including C#, which is what I use, so why not the activation API?

I did find a .NET activation sample on their website, but when I asked their support team about it, they seemed clueless. I am now in the process of trying to incorporate an activation dialog into my product, borrowing from this seemingly unauthorized .NET activation sample I found on their site. I just hope this hassle pays for itself in the number of licenses I sell because I'm starting to wonder if copy protection is worthwhile..

Thursday, July 3, 2008

Business Contact Manager for Outlook 2007

It's been awhile since I posted. I've been spending all my time looking for a new nanny, but I think I've found someone who will last for awhile. (More on that in my other blog).

At work I've been busy learning Business Contact Manager for Outlook. It came with my free copy of Office and since I already had it, I decided to give it a try for contact management.

My process so far: Every time someone registers on my website, I get an e-mail notification with their contact details. I then use anagram (a very cool tool by Textual to create new Outlook items like contacts and calendar events from highlighted text) to create a new Outlook contact from the information. Then I go to my website to see what programs that user has downloaded and then set categories on the contact to indicated which of the 2 free programs they have downloaded, and another category to indicate whether they have indicated they want to receive notifications of updates and new product offerings. I've had well over 200 people register on the site that I've created contacts for, so the contacts are quickly adding up. (There is also a backlog of registrations I haven't added.)

This process has a couple of limitations. One is that I cannot easily find all of the people who downloaded product X AND want to receive product updates. There is also no way to add new fields for storing things like the username they created for the site (that data just goes in the comments field) and there is no way to track sales once I get to that point.

This is where Business Contact Manager (BCM) comes in. It's nice because I already use Outlook and it is built right in. I bought myself a book to learn more about it - Business Contact Manager for Dummies. I have found it very helpful for looking up things I need to learn, rather than sitting down and reading right through it.

So far, I have customized my contact form by adding checkboxes to indicate if someone wants product updates and whether or not they have downloaded the free products. Then I added a number field for tracking the number of licenses they buy of my first product (hopefully coming out in a couple of months). I also added a text field for their username.

The next step was to drag all of my regular Outlook contacts into my Business Contacts folder. This turns them into business contacts with all of the extra information that comes with BCM, plus my custom fields. I also was able to set up anagram so that new contacts I create will automatically be created as business contacts.

Now, I need to go through all of those existing contacts and set the new fields based on the categories I had set. So if the Update category was set, I need to check the box for wanting product update notifications. I also need to take the username from the comments box and put it in the new text box. And there are a few other fields I need to set.

I have already created custom searches so once my contacts are set up correctly I can quickly find everyone who wants update notifications AND has downloaded product X. So when the paid version of product X comes out, I can quickly find those contacts and send an e-mail announcement to them. (I think this also might be what is called a "marketing campaign" - something BCM can help manage).

The next problem is that I have so much to do, I haven't found the time to go through all those contacts to set the new fields and I've had nearly 100 new users register in the past 6 weeks that I haven't even created new contacts for. So I've been trying to figure out how to share my BCM database so I can find someone to help me out (my niece or nephew perhaps?) Although I'm hoping that I can share the database over a VPN connection (so someone can work from home, or a dorm room), I first tested it out with my old laptop. My Dummies book came in handy, but I followed the directions there and when I went to connect to the shared database from my old laptop, I got a message that it couldn't connect to the database.

So I searched online and found lots of suggestions about making sure my BCM computer was online (duh!), making sure my Windows Firewall settings were set properly, and several other things that did not help.

Finally, I wondered if it was just using the default login for that computer to try to connect (I had to add specific users to BCM when I set it up to be shared). I have Liz as a user on my computer and my login on the old laptop was Liz. But I didn't have a password on the laptop and I did have a password set for user Liz on my computer. So in desperation, I went to my Control Panel on the old laptop and changed the password for my Liz login. Lo and Behold! Now I was able to connect to the shared BCM database. How is it that no one has come across this simple problem before?

Thursday, May 15, 2008

Viral Marketing

One aspect of my job as the founder of a software company that I find surprisingly interesting is marketing. I have no marketing budget, but I informally committed to using viral marketing to generate traffic to my website. I knew I couldn't afford magazine ads and I wasn't ready to pay for Google Adwords or banner ads on industry websites.

At first, I just used an online forum in my industry that reaches my target audience. I looked for posts where I felt that I could contribute something to the discussion, but I never mentioned my company or my products. I didn't want to be spammy. I put my name and a link to my website in my signature, though, and I started getting traffic to my website from the forum. In the beginning, about 40% of my traffic came through that website.

Then, a guy on that forum with a website and blog dedicated to the product I develop for noticed my freebie and e-mailed me, letting me know he wanted to post something about my product and my company. He put a link to my website on a page where he has other links to products related to the product I develop for and he posted an announcement on his blog. I got a handful of links from his site every day for a few days and even though it has been months since his blog posting, I still get a few referrals from him per week.

Better still, some other bloggers who just re-broadcast other people's blogs in the same industry made mention of my website. I was surprised by how quickly news spread about my product and company. I had heard of viral marketing, but didn't realize how successful it could be, with very little effort on my part. Back in December, 35% of my web traffic came from the online forum I mentioned, and another 25% came from blogs. I had 234 visits from 166 unique visitors

But recently, I've gotten the product managers for the product I develop on to announce my product releases on their blog and when they do, I get flooded not only with web traffic, but I'll have a dozen people register per day on the site after their post and download the freebies (vs 10-20/week on average). And since they have the most popular blog for my client base, other bloggers and forum users from around the globe then re-broadcast their announcements and now I'm getting referrals from all over the web.

Looking at my stats for the last month (ending yesterday), during which I had two product releases (one was just an update for the new version of the product I develop on), I had 726 visits from 459 unique visitors. More than 50% of my traffic was direct (in part because I sent out e-mail notices to my list of users). 23% of visitors came from the product managers' blog. The rest of the traffic is split up over many sources - 37 more to be exact. Various blogs, online forums, and a few things I cannot decipher.

24 visits, or over 3% of total visits, originated from google searches (not counting google searches from foreign google websites like google.co.uk). I never implemented a Google Adwords campaign because people googling the terms I would use are already finding my site for free.

Viral marketing is my new best friend. Some days I wonder if I might like my next career to be in marketing. Until I started this company, I never would have guessed how interested I would be in marketing. Especially viral marketing where I can watch the message spread over the Internet. It's fascinating!

Friday, May 2, 2008

Are internet sales taxable?

This is the question I was trying to figure out. My business is located in California and I expected I would at least have to collect sales tax from customers in CA (once I have a product to sell, that is). But when I went online to confirm this and to find out what the sales tax rate is exactly, I found a document on the California State Board of Equalization website that surprised me.

If you sell electronic goods, such as software or a database, that are distributed to customers over the internet (as I am planning to do), the sale is not subject to sales tax. If, however, your clients download the software, but you also send them a copy on CD, then the entire transaction is taxable (I take this to mean that you cannot just charge some nominal fee for the CD and tax that).

Here's the source document: http://www.boe.ca.gov/pdf/pub109.pdf

Friday, April 25, 2008

Finally!

I finallly released the first version of my second product. It is a limited version and is available free to anyone who registers on the website. I'm only a couple of months late..

The next step is to create a paid version. That will be the real test. It will be the first time I am attempting to sell my software to users. Although I've gotten funding for this project, I need to be able to sell it to develop a viable business. I figure I'm a couple of months from that release, assuming no more child care snafus.