Thursday, October 16, 2008

New Developments

It's been awhile since I've posted because I've been bogged down in trying to get a release out. I keep running into technical problems with the API I am using for my former company's product. I finally gave up and have written a parser to get some of the information from their text file that I cannot access through the API. I don't know why I didn't do it sooner. It's very liberating not to be at their mercy.

Recently, several good developments have come up. A few weeks ago, I was asked to write an article for a new trade publication that is focused on users of the application I develop for. This is great publicity for me and thanks to Thom, I pitched a great idea for the article that was well received.

The publication will debut at a trade conference later this year that I am hoping to attend. I can't afford a booth or even full conference attendance, but I can get tickets just to the exhibit hall which would give me a great chance to network. Some of the guys who have helped with beta testing my add-in will be there, along with other key players, such as resellers that I am hoping to forge relationships with to help sell my software. I just need to work out childcare with Thom and Kim for the time I'd be gone. Hopefully I can work it out, especially since I hope to have my release out by then, so the timing would be great. Plus I can grab extra copies of the trade publication with my article.

Another great development is that I am talking to a woman who wants to work with me. She is a former colleague of Thom's and he speaks highly of her. She is looking to work part-time from home, which works perfectly for me. She is a developer and has project management experience and could be a huge help in getting the company off the ground. She has so much more experience than I do, including experience working with start-ups, so I am just thrilled she is interested. She hasn't developed in C# before, but she is getting up to speed now. We'll see how things go, but after our initial talk a couple weeks ago, I have a good feeling that we can work together.

And just this week, I lined up another contract job that will help continue to fund the company until I can get sales revenues coming in.

Now I need to go write that article and finish my release.

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.

Monday, April 21, 2008

Error code 2869

I was about to release my second free product last week when a new version of the 3rd party application my product runs on came out. So I am in the process of creating a new install for the new version of that application. I am planning to release two versions of my product, one compatible with the older version of the 3rd party application, and one compatible withe the brand new version.

So I'm testing the installer today and I keep getting this error message:
The installer has encountered an unexpected error installing the package. This may indicated a problem with this package. The error code is 2869.

It sounds vaguely familiar like I ran into this when I did the original install. I do a google search and see that it is related to running installers on Windows Vista. That figures. When I got my new laptop, choices for new laptops running Windows XP were limited, so I got a Windows 64-bit Vista operating system. Maybe someday when the software programs I use take advantage of the 64-bit-ness, I will appreciate it, but mostly it just seems to cause me problems like this. The install ran fine the first time I ran it on my old Windows XP machine.

Misha Shneerson's article makes me think the problem has to do with the custom action I'm calling during the installation to edit an INI file. But I don't know what to do about that. Then I found Paulo Reichert's blog where a user's comment suggests calling msiexec /a "path-to-package.msi", which runs the setup program as an Administrator, and that solves the problem. But I hate for my users to have to go to that trouble. Hopefully they have Windows XP.

Thursday, April 10, 2008

Corporate Use

I had a woman at a large firm yesterday contact me about using the free tool I have for download on my website in a corporate setting. My click-wrap license agreement only allows for individuals to install the program on one computer, and for a large company, it would certainly be a hassle for each user to register on my site and download it separately.

I was so excited that they wanted to use it on so many computers in their office. When I went to their website today, I realized they actually have over 150 locations in 41 states and a few international locations!

But as excited as I was, I also feel totally clueless! At first she asked for documentation on our corporate use policy, which I don't have. I didn't exactly want to say this was the first request I've had for corporate use, so I just wrote back and said she had my permission to distribute the software within the company, but that the x months of free support I (actually I think I said "we" since that sounds more like a real company) offer would be counted from when she downloaded the product. I also offered to give them a more specific site license software agreement if she wanted.

So she wrote back to confirm that after the x months were up, they would have to compensate my company for further support, which I confirmed. And was even more excited that they might actually purchase a maintenance agreement at some point.

At that point, I thought we were good, being as clueless as I am. But then she wrote back and indicated that so-and-so would contact me about corporate use. And when so-and-so did contact me, he explained that as a large company, they like to keep copious records on their software license agreements, so he asked me to please send them a site license.

And that was when I opened my book on software contracts (the current version is called Legal Guide to Web & Software Development but I have an older copy) to find a sample site license. I saw a sample that gave license to a business at a specific address, so I went to the company's website and saw how many offices they had, and realized I would have to do something else.

I just told my husband how big this firm is and he said it isn't a site license, it is an enterprise license and thinks I could charge them for it. But I've already indicated that I wouldn't charge them. He commented that support could get out of control, but I pointed out that they had told me that they would funnel all support through their in-house software support team.

This is when it would really help to have a partner who knows business. I may have just lost an opportunity to make some recurring revenue from this company. Live and learn, I guess.

Saturday, March 29, 2008

Help files

One of the tasks I need to finish up for my public release is to complete my help file. I put together a rudimentary help file for the beta version with just enough topics for each dialog in my application, but I need to better document the program and its functionality.

For my help documentation, I'm using a compiled help file (CHM) which is a common standard for help files. It basically takes a bunch of html files and compiles them into one help document which has a table of contents, index and search feature in a left-hand pane and the content in the right-hand pane.

At my old job, we used RoboHelp to create our chm files. I like RoboHelp. It has a great WYSIWYG ("what you see is what you get") editor and makes creating help files as easy as using Microsoft Word. But... it costs $999. I don't like it that much. I was even considering just creating HTML files for my help topics and opening them in the user's browser so I could avoid paying for a Help authoring tool.

But then I discovered Microsoft's HTML Help Workshop. It's this bare bones utility that does not have a WYSIWYG editor and is not as intuitive to use asRoboHelp, but it is free. And it does everything I need to create a CHM file that I can call from my code to pull up specific topics, as well as create an index and table of contents the way I want.

Since it wasn't intuitive to use, I relied on this great tutorial someone wrote on how to set up a help file for a sample C# application. It gives you the code for the sample application and talks about not only using HTML Help Workshop to create a CHM file that you can call from your application, but also covers other types of help, such as status bar messages and tool tips.

Guess I should get back to actually writing my help documentation rather than writing about it.

Sunday, March 23, 2008

Installation

I've been working on my installer recently, a task I'm not fond of. In addition to installing files, I need to register a 3rd party type library (don't get me started) and edit a different 3rd party INI file. At my old company, I used Wise Installer to create installations which I found pretty easy to use. But the version I used didn't create MSI files, and for that, we had started to use InstallShield which I hated. It seemed clunky and hard to figure out.

So in keeping with my bootstrapping plan of keeping my costs as low as possible, I decided to try out a Micorosft Visual Studio's setup project since I already own Visual Studio. You can create a setup project similar to the way you create any new Visual Studio project. I can't say it was super easy to use, but with the help of some online resources, I managed to create a pretty good installation, and I think I even understand the whole "Product Code" thing now (which I had a hard time with in InstallShield).

For my purposes, I created separate dll's for editing the INI file and for registering the type library. By using Installer classes in those projects, I'm able to call the code in my dll's from my installation using custom actions. It works great.

Here are some resources I found useful when I was putting my installer together:
A Code Project step-by-step tutorial on creating a setup project
An article on simple-talk using custom actions
FAQ on Windows Installer

Wednesday, March 19, 2008

Virtual PC

After I released my beta, I sent it to a friend of mine who is going to be doing some testing for me. The program wouldn't run on her machine. Then I realized - I hadn't tested my program on a non-development machine. I had tried it on my current laptop and my old laptop, but I had been developing on both and had, as it turned out, I had registered a type library I was using. The type library is part of a 3rd party program I am working with and they told me it did not need to be registered, that their program would register it automatically. That was not the case, however, as we verified with a Windows Live Meeting with my friend. So my installation will need to register this file.

Obviously I need to test in more environments. But I have a limited number of computers. So I set up Microsoft's Virtual PC 2007. It's a free program that lets you install multiple copies of Windows operating systems on one computer. Unlike a dual-boot setup, you install the operating systems on a "virtual" PC so that you can open the virtual PC in another window, without having to close your other open applications. (You do have to buy copies of the operating systems you install.)

I installed Virtual PC without any problems and then installed Windows XP on it (the same system my friend has who was having the problem). But I ran into a problem trying to connect to the network from the virtual Windows XP. It didn't seem to see my wireless network card. I spent several hours on it before giving up. But today, I e-mailed a friend of mine who has worked with virtual machines before and he had a solution for me. Now I am all set up and ready to install my program on this virtual machine and see how it goes.

Monday, March 17, 2008

At home childcare

One of the reasons I started my business from home is that I wanted to keep my son at home, at least for the first couple of years. So in order to work, I hired a college student to nanny 18 hours a week, and later I hired my 16 year old niece to babysit twice a week after school. Between that coverage and my son's naps, I can typically get in 20-30 hours a week.

Unfortunately, last week my niece told me she has too much going on and needs to stop coming. It may not be permanent, but it is indefinite. And Julie, the college student, who watches Aaron is graduating in May and I need to find a replacement for her. I've been procrastinating on that, even though I know I want to have overlap beween her and the next nanny. And last week, she tells me that the company that interviewed her, and to whom I gave her a very good reference, wants her to start part-time before she graduates if they hire her. And they called her back for the "next step" so it looks like they are serious. Meaning I could soon find myself without any childcare in the near future.

So suddenly I need to find someone quickly. We lucked out with Julie. She worked at a local take-out place we frequented when I was pregnant and after Aaron was born, so we had a lot of contact with her before we hired her.

I started looking on craigslist last week, but when I only found a couple of people worth contacting, I looked around and found Care.com, which looks like a great website for finding childcare (or other types of household employees). I signed up for 1 month ($25 + a one time $15 registration fee). If it helps me find someone within the next month, it is worth the $40 I spent. They help pre-screen applicants by not only taking all their relevant information, but they even do phone interviews with their references which you can listen to (or read the transcripts of) before contacting those references on your own. And more importantly, they do background checks which you can access for free with your paid membership. It isn't an extensive background check, but they do verify that their SSN matches the name, they verify the address and they do a criminal background check. And another thing I like about this service is that I can contact someone through the website and they only see my first name and last initial - I don't have to reveal my phone number, e-mail address, or last name unless I am ready to interview someone.

Since Friday, I've spent hours looking at profiles, contacting people, responding to applicants to my job posting, and continuing to search on craigslist. Wish me luck!

When my release is late, you'll know one of the many reasons why.

Friday, February 29, 2008

Banks

I had the good fortune of having a largish check (for a long term consulting project) to deposit in my new business account. In January, I opened a combination checking and savings business account for my company with Union Bank of California. I have my personal account with them and although I haven't been overly impressed with the service at my local branch, I decided to ask about small business accounts when I was looking to open one late last year.

It turns out they waive fees for new accounts for the first two years, if you open a checking and savings account for your business. Since they waive the fees, there is no minimum monthly balance requirement, and my first set of checks, plus deposit stamp, were free, too. Seemed like a good deal to me, so I signed up. And the monthly fees are waived after two years as long as you keep a minimum balance that seemed low enough to me, that I figured if I couldn't keep that amount in 2 years, I shouldn't still be in business (something like $3000 combined).

I've deposited a few smaller checks in the account but have reimbursed myself for some expenses, leaving a small amount in my checking account, so I was excited to deposit my new check. It turned out to be a bigger hassle than I expected. I had 3 counts against me, apparently - the check was a large amount (compared to my average daily balance), my account is relatively new, and the check was drawn on an out-of-state branch of Citibank. So they are holding $5000 (their threshold apparently) for a week and the balance for 2 weeks!

I understand that they don't want me to withdraw the money before the check clears, but does it really take 2 weeks to clear a check from a major national bank like Citibank?

I'm not impatient to spend the money, but I am eager to move it over to an ING Business Savings Account where I can earn a respectable interest rate on the money. I don't know what the current business savings rate is, but it has been higher than the personal savings rate they offer which is currently 3.4% (it was over 4% before the Fed kept lowering the rates). Either way, it is better than the paltry 0.25% I could earn in my UBOC business savings account.

Wednesday, February 27, 2008

Multi-function printer

I just tested out my new Canon PIXMA MX700 today. I have had it for about 10 days, but haven't had a chance to test it out. But today, I needed to sign a contract and scan it back in to e-mail to a business contact, so it was a good time to finally hook up my new toy.

It has a flat-bed scanner which I'm excited about because I can scan in things I couldn't scan in with our old HP all-in-one printer (like business cards or photos that I was worried about getting jammed). Anyway, I printed out the one-page contract, signed it, and scanned it back in. I tried 300 dpi first, which was pretty good, but then went with 600 dpi which seemed to be the best resolution for a black and white document.

I couldn't believe how fast it scanned in! Under a minute and much better quality than the HP (I'm not trying to knock HP - it is fairly old technology at this point and I'm sure a new HP all-in-one printer would be comparable to the Canon). I easily saved it to a PDF and went on my merry way.

Merchant Madness

My latest headache is trying to figure out how to sell my software on my website. Since I don't have any staff, I don't want to have to run credit cards by hand (which seems to be the cheapest route). I want the credit card processing done automatically online. Ideally, the user would then be able to download the software without further delay, but it's not essential that that part is automated right away. I can still ensure they get the program within 24 hours if I have to send them something once I'm notified of the payment.

I'm a Costco member, and I saw that they have partnered with NOVA Information Systems to provide members with good rates on merchant accounts.

My web host recommended osCommerce, an open-source eCommerce solution, for my shopping cart.

So there's a shopping cart and a merchant account. But how do they talk to each other? osCommerce has a list of Supported Gateways. So I guess the gateway links the shopping cart to the merchant account?

NOVA isn't listed as a supported gateway, but further research (by my web designer) discoveres that NOVA merged with ViaKlix, which is a gateway that someone using osCommerce uses with their NOVA account.

I'm so confused!

I saw another service called Share*it! that seems more geared for software publishers than the other shopping cart solutions (which are more geared for selling many products that you then ship to customers). Share*it seems to include the merchant account part, as well as distributing my software to customers after they pay for it. Sounds good to me, but how reliable are they? And will it look professional to my customers?

The research continues...

Friday, February 22, 2008

Beta release!

I have just released my first beta! I had 18 people sign up to participate. I'm very excited. I'm hoping to start getting feedback next week, although beta testers are hard to predict. Although they are eager to get the any version of your software, even a beta version, they don't always have time to test it out when they get it, or they don't find time to provide feedback. Since many of my beta testers are overseas, I am curious to find out how the program works for them.

It's a small world

I use Google Analytics for website statistics on my company website. It's free (up to a million page views I believe) and easy to set up. In the last month, I've had 357 visits from 250 unique visitors. That alone surprises me since I am only using viral marketing at this point - no Google Adwords campaign or other advertising. It is all from online forums, user blogs, Google searches, word of mouth, etc.


But what really surprises me is that only 151 of those 357 visits came from the US. The rest came from 40 other countries! The map from Google Analytics below uses darker shades of green to represent the proportion of visitors from each country. This map is for the last month.

The US had the most visitors from one country, followed by the UK, India, Poland, the Netherlands, and Canada, all of which had visitors totaling in the double-digits. It's amazing to me how easy it is to reach people around the globe.

Below is a map from Nov 1 to present. It represents 54 countries.

Tuesday, February 19, 2008

Starting a company on limited resources

I knew from the start that I wanted to bootstrap my company. I had some money saved up, but I still wanted to spend as little as possible to get up and running.

Software is one essential that can get expensive. Fortunately, a year and a half ago, I discovered Microsoft was offering a free copy of Visual Studio 2005 to anyone who watched 3 tutorials on ASP.NET. I signed up fast and watched three tutorials and in about 4-6 weeks received a full copy of Visual Studio 2005 Standard edition. It was worth several hundred dollars, so a very good deal.

Then last year, I attended a free Microsoft conference on Office 2007 and received a free license of Office 2007 Professional. Another huge savings. Visual Studio and Office were two pieces of software that I had to have to start a business. (You may argue that I didn't need Office, but I've tried several of the competitors and despite the issues with MS software in general, I still think Office is the best suite of products).

Granted, I got lucky with the MS freebies, but I've also found that a startup company can negotiate some good deals. For example, in order to write software that works with my former company's products, I needed to join their developer program. Normally it is $5000/year, but after inquiring, I discovered they have a small business price of $1500/year. (You might wonder why I couldn't get a special deal as a former employee - I wonder that myself. Although, they did let me work off the first year in consulting work.)

I have also found that some software companies, when I explain that I am a startup with limited funds, are willing to provide a discount in exchange for a testimonial or a case study of my implementation of their solution. This can potentially save thousands of dollars depending on the software products in question.

All-in-all, I have spent about $5000 on startup costs so far. Roughly a third of that has gone to my web designer, which I think has been money well spent. Another third went to a faster laptop (which was 30% off at the end of the year), a new all-in-one printer, and miscellaneous software. The rest has been filing fees, taxes, accounting services, web hosting, and misc office expenses.

Wednesday, February 13, 2008

Child labor

I was recently dreading a tedious task I needed to do before I could release a beta of my program. I was even considering coming up with a more elaborate solution for the problem so I could avoid the tediousness, but unfortunately, the simple solution was really the better solution for the end user.

But I had a stroke of genius in the shower the other day. I could hire my teenage nephew to do the task! He is 18 and off at college and I correctly guessed that $10/hour for a job he could perform on his computer in his dorm room in his spare time was too good to pass up. The job requires no programming skills or even typing - he could cut and paste everything he needed to do.

I did have to take a couple of hours to start the project for him and write instructions, but it is easily saving me several more hours of my time. Although I didn't think he'd have time until the weekend, I sent him the files and instructions last night and told him to let me know if he had any questions, preferably before the weekend, so I wouldn't hold him up if I wasn't available then.

I had an e-mail from him this morning saying he'd spent an hour on it last night and he sent me the work he had done so far to confirm it was what I expected. It was! I have a few more similar tasks I hope to send his way. Best of all, as long as the work is under $600 (for the year), my accountant tells me I don't even need to do a 1099.

Benefits of blogging

I started this blog just to record my experiences so I could look back later and remember what the early days were like, and to share my experiences with friends and family who are interested in what I'm doing. But I have already discovered a real benefit of blogging.

After reading my blog entry on source control, a friend of mine e-mailed me to tell me that he uses a program called Visual SVN which integrates source control into Visual Studio. I don't need that right now, but it is a good tip.

Then, my Dad read the entry on my needing a good all-in-one printer and he wrote to tell me about a review he read in Money Magazine on all-in-one printers in case I hadn't bought the one from Costco yet (I hadn't - my coupon had expired 2 days before that blog entry). After doing some research on the two favorite printers from the review he read, I ended up buying a Canon PIXMA MX700 which my dad found on sale with an instant rebate from one of the big electronics stores in town (only $129!). He even picked it up for me since it's hard to shop with baby in tow and I wanted to get it while the rebate was in effect. I am going to pick up my new toy this weekend.

So many thanks for the useful tips and please keep them coming!

Thursday, February 7, 2008

What to say?

This morning, after putting Aaron down for his morning nap at 8am I called a guy who had e-mailed me about the possibility of doing some contract work for their company.

I'm currently doing some contract work for a large software company, let's call them Acme. The guy I talked to this morning is a client of theirs and had gotten my contact details from them as someone who may be able to do some customization of Acme's software, of which they own many seats. As we were discussing some details, the gentleman I'm talking to says that if I end up doing some work for them, "We'll want to fly you out to our office so you can meet with some of our staff."

Well, I work from home with part-time childcare while my husband works full time. Travel would be really difficult, so I'm debating what to say. Should I just wait to explain this until we are further along? Will he think less of me knowing I work from home and have a baby here?

In the end, I decided to be up front about it. I told him we could discuss that later, but that it might be difficult for me and explained my work situation. He was completely understanding! He immediately said that someone could probably meet me out here since they do work all over the country. He must have kids because he was so nice about it.

We are going to talk more in a few weeks. I couldn't do anything for them anyway until I finish up the contract job for Acme. Which I better get back to now.

Wednesday, February 6, 2008

Business advice

I went to my old office yesterday to check in code for some contract work I did for them. Since I was going to be in the office, I had made an appointment with my old boss, who use to be the president of the company I worked for until they were acquired by a bigger company. I wanted to get some business advice and he had offered to help me out when I first started out, so I took him up on that offer.

He's a very smart guy. He has degrees in math and computer science, and although he successfully ran the company for years, he went back to school (while working full time) to get an MBA. My primary question for him was on how I should structure a business partnership I am negotiating with a company. Although he had a partner when running our former company, he was the one that decided who to create partnerships with and how best to arrange them, so I knew he could help me out. And he did give me some good advice in that area.

The other question I asked him was whether I needed a partner. I knew he had a good partner that focused on the sales side and wondered if he could have done what he did on his own. I often wish I had a partner to share ideas with and take over certain parts of the business. He said in his case, he needed someone to do sales. It wasn't his area of expertise. He told me "Don't get a partner because you're lonely."

He said I don't need a partner unless the business is growing and there is an obvious void that someone could fill, more than just an employee. An area of the business they could take over. It makes sense. And at the moment, all I really need is some help with development, which Thom is going to try to do (or which I can hire a contractor to do). And I've got a friend lined up to help out with QA and support (if I'm lucky enough to need it). So for the time being, I'll stop thinking about wanting a partner and wait for it to become obvious I need one.

Tuesday, February 5, 2008

Administrata

I almost forgot what else kept me from writing code yesterday. Before I got hung up with trying to set up my svn repositories, I was trying to fill out a form that I needed to either e-mail or fax back. (It's a license agreement for a tool I want to use with my current project and is free to distribute if I fill out this form.) But my workspace is so small, I had virtually no room to fill out this form on my desk, so I got frustrated and tried to clear off my desk, reminding me that I don't have an office waste basket. I also was getting fed up with the pile of unfiled papers related to my business. So I went online to OfficeDepot.com and found a waste basket, stacking letter trays (for unfiled papers), and a portable, locking file holder to file all those papers and documents. By spending $50, I got free next business day shipping.

I also wasted a good amount of time trying to scan in the filled out form so I could e-mail it in. I wanted to e-mail it in rather than fax it because our all-in-one fax/scanner/printer is not so good about faxing one page at a time. So although I only needed to fax 2 pages (the form and a cover sheet), I knew chances were good that the fax would suck both pages through, sending only my cover letter.

To avoid that frustration, I tried to scan the document in. My husband had scanned in something for me a few weeks ago and it had come out pretty well, but my three or four attempts all resulted in an unreadable mess. But since I was going back and forth between his computer to do the scanning and my computer to work on the source control system, it wasn't until he got home that I realized I had forgotten the scanning project completely at some point. So today, I will try to fax it over. That is starting to look like the less aggravating option at this point. I think Costco has an HP all-in-one machine on sale (with coupon). I need to look into that, if the coupon hasn't expired.

I also went to Amazon.com yesterday to buy my husband a copy of Visual Studio 2005 so he can help me with the code I never seem to get to.

Monday, February 4, 2008

Source control

I had planned to write code today. I really did. It is Monday after all and my sitter is here for 6 hours. But my husband has decided to help me out on my current project and suddenly it became necessary to set up a source control system to share my code and to allow him to make changes. I had wanted to set up source control anyway so that I could save versions of my code. So when I run into problems like I did this morning where something isn't working that used to work, I could go back to last week's version and see exactly what I changed.

I chose Subversion (svn) for my source control system since it is well regarded and free, but I don't know the system that well, so I didn't want to try to set up and host my own Subversion repositories on our network. So I decided to use ProjectLocker, an online svn hosting website. For my needs, I was able to set up a hosted repository for $30 for the year.

That was the easy part. Then I had to install an svn client (I chose TortoiseSVN) and now I am trying to figure out how to upload my source code to my new repositories. I was a die-hard Visual SourceSafe user at my former company and SourceSafe and svn are nothing alike. So the learning curve is steep.

Maybe tomorrow I will write code.

Blogging as a form of procrastination

Over 6 months ago, I quit my job of nearly 9 years to stay home with my son (now 9.5 months old) and start my own software company. As I struggle with the day-to-day realities of starting a company, I find myself wanting to write about my experiences. It will give me one more thing to do when I'm procrastinating over some task. And maybe my friends and family will find some of this interesting.