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?