Close, more changes, maybe not close yet, but close.

February 23, 2010

Between my last post and this one, with regards to where I am with incorporating, nothing and everything has seemed to have changed.

Once I finally got close to integrating my web apps with PayPal, I ended up having to go back to the drawing board with licensing — since the way I’d written my licensing code and the UI to actually get an activation key after buying a license from PayPal were totally asymmetrical.  I’m rolling my eyes as I write this because, again, I know my limitations and weaknesses when it comes to running my own company, but on top of that I now have a wish list of the types of people I’d hire if this company ever actually incorporates and goes somewhere.  I could envision a company of three: me, the person who writes billing apps, and a general software engineer who can handle any kind of integration task that I give them.

With regards to the PayPal fiasco, I’d somehow neglected usability.  That is, how would someone actually generate a license key for their system after having purchased software through the site?   My original licensing model had added a couple of extra steps for someone to be able to actually use the software and I felt the level of annoyance of these extra steps wasn’t worth the trouble of buying the software.  I frittered about this conflict for a couple of days before I decided to rewrite the entire licensing scheme in the software.  I wrote a completely new hashing scheme for license keys and a single way for the person to enter a system identifier in the PayPal app so that, after a confirmed purchase, a challenge key could be copied ‘n’ pasted from the software into a web application, an activation key would be generated in the web application, and be copied back into the software’s activation key box.

On one hand I am really pleased with the new licensing scheme and it should be relatively easy to finish my billing apps as a result.  On the other, this is yet another misstep in a venture that I thought I’d had a complete grasp of.  I’m really frustrated and disgusted with where I stand practically everywhere in terms of this business.  It’s been six months since I decided to go it alone and there are still so very many loose ends.  I fear that I’ve lost touch with what I want to accomplish and that maybe it would be best if I divest from this venture entirely because I’m in over my head.  It’s more than frustrating.

All of this is exacerbated by the fact that an old friend, who was interested in seeing my business plan to decide if he’d wanted to be involved with the company, labeled the effort as something that was done as a “hobbyist”.  I suppose that given what you’ve read so far in these postings this might not sound so far from the truth.  I’ve always felt that the business would grow from something small to something slightly bigger until it became something large and hopefully substantial — because it would seem to make the most sense that growing a business takes time.  I’m not a big believer in Gee Whiz types of successes, so when my idea was likened to spending time on a hobby, I bristled.  And then I started to believe the critique since technically after all these months nothing is done except for the product itself.

If you want specifics as to what remains to be done, here they are:

  1. Finish website.  Still needs content everywhere.
  2. Finish billing application.
  3. Finish billing->activation key gateway.
  4. Repackage Windows installer.
  5. Incorporation.

I think I’m giving myself until mid March to put this all together before I finally throw up my hands and call it quits.

Web (2.0) of Deceit, Another Principal (?), and Scratching my Head Over a Big-Giant Idea

January 8, 2010

I think I may have mentioned this already, but if not, here it is again.  When you’re a sole proprietarship, or arrogant enough to think you can run the entire show, and/or both of those things, you’re frequently the victim of your own faults, quirks, and lack of knowledge on various subject matter.  This is because you’ve put yourself in a position of being responsible for managing and delivering every aspect of your product. Having a lack of knowledge on any single piece of subject matter is a real time killer.

Outside of holidays, legal proceedings, and actual incorporation, my current time management problems are related to finishing product purchase and customer management code for the website.  Awhile back I made the decision to run everything under the Microsoft platform since most/all of the software I’d be selling and licensing would be for Microsoft/.NET and it just didn’t make sense to throw Linux into the mix as I’d hoped to avoid complexity by not mixing computing platforms.  Ironically, the problem with this design decision is that I know Linux — specifically web hosting under Linux — extremely well where I know its Microsoft counterparts exactly barely.  I wrote some sample code for webstuff under Windows before Thanksgiving and it seemed to work very smoothly, but everything I’ve attempted since then has been a siege.  This is not a knock on the software that Microsoft provides, although on the other hand, it is not without its own quirks that have taken me a lot of time to get used to.  This is a knock on me for deciding to go for it and underestimating the fundamental differences between webstuff under Linux and webstuff under Microsoft.

When things go bad for a computer scientist, I’ve often remarked, you spend days and days cursing your program and trying to debug it until you finally realize that you forgot to add 1.  Once you add 1, everything works fine!  In the context of my issues I wrongly assumed the Microsoft webstuff behaved the same way as Linux webstuff so I wasted 2-3 days looking at the same dozen or so lines of code only to realize that my assumptions were wrong in the first place and a complete rewrite was necessary.  Things are finally making forward progress in this department but there is much to do.  At least I have a decent enough understanding of the Microsoft webstuff now that I can reuse a lot of the stuff I’ve written and hammer out the rest of my apps.  Hopefully this won’t take more than another couple of weeks, but we’ll see.

The other nagging issue with webstuff is Web 2.0 and billing APIs.  I won’t unfurl the rant I’ve been keeping rolled up in the attic but programming a product->purchase->billing interface against one of the billing APIs from a major provider of secure credit card/purchase transactions is unnecessarily difficult if you want your web *interface* to look sane as you transition from a shopping cart to a final purchase window.  I could’ve done things in the silly way where you have a shopping cart, you redirect to a complete disparate webpage on a billing website, the person fills out their personal information Yet Again, clicks a submit button to charge a credit card, then returns to your website to finalize their billing and licensing steps, but the lack of transparency of doing things this way really got to me.  At the end of the day I just want the customer experience to be simple and clear; click this to add to cart, click this to checkout, click this to get your license keys, done.

(Yes I know I could’ve hired someone to do this for me.  I’m not hiring people to do things since it will cost thousands of dollars to hammer out the remaining steps for a company that (a) hasn’t made a single cent yet and (b) may not recoup thousands of dollars for awhile if at all.  Until I actually incorporate and start selling I have no idea how correct my projections will turn out to be.  In the meantime, it’s a matter of time and persistence.  I cannot speak for patience.)

- x -

An old friend of mine, an MBA, called recently and wanted to know more about the business as his job has been difficult at best (his work involves real estate and properties and we all know what the state of that market can look like these days).  I’d love to work with him since I trust and admire him — and I really need someone to drive the business part of the business, but we’ll have to see how it goes.  Between proximity and scheduling and my self-driven desire to incorporate in February 2010, most likely as a single-member LLC, I have strong doubts that anything will pan out.  Plus, going back to an old sentiment, it’s really, really hard to ask someone to work for free, if only for a partnership stake alone.

-x-

Partner #1 posted to Facebook recently that he’s “finally” (his own word) come up with a new, Big-Giant Idea for a business.  I have mixed feelings about this.  On one hand, it’s true that after a certain point in time I didn’t want to incorporate with Partner #1, and pulled the trigger on dissolving the partnership before we ever became legally joined at the hip.  On the other hand, as you may recall, Partner #1 kind of stringed me along for 3 months and dragged his feet when it came to writing a business plan, showed lack of enthusiasm and doubt about the viability of the product, claimed that he didn’t have that much time to dedicate to our new company (he would’ve been CEO, no less!), that his involvement as CEO should be put on the back burner until his full-time job got back on track, and finally kind of ho-hum agreed to a Skype-based (but billable) meeting with a business lawyer as our final step before incorporation.  While I’m glad that Partner #1 found something that struck his fancy I wish that it didn’t come at my expense to a certain degree, or at he made his intentions more clear in the first place.

I do hope that Partner #1 is successful with his idea.  I have absolutely no intentions of becoming a business rival, bitter enemy, or a stone thrower.  I just wish that things had played out differently.

Delays, more delays, success, back on track (but delayed).

November 23, 2009

After lots of scheduling with Google Calendar I ended up reviewing everything I’d put in the Google Calendar and ticking off most of the events as complete.  I even managed to produce enough “artwork” myself for my product installer, the product UI, and for the company website that I’ve started to develop again.

I didn’t test the main case study I’d established for my software before I branched from the trunk of my source code repository to versions 1.0.0 and 1.0.1 [1].  I’d use this case study both as documented examples in the product documentation and as screencasts that would be available either via YouTube, the company website, or perhaps even to purchasers of the software (haven’t decided which or any/all of those yet).  Not testing the case studies was a mistake.  A huge mistake.  It is in large part why my last blog entry was almost a month ago.  You see, I finally did get around to testing my case study and the sofware just didn’t work in proving the case.  At all.  Not even close.

I spent that evening sipping a glass or two or three of wine while reviewing potential changes to the source code for Product 1.  I spent the next couple of days procrastinating and moping, partially because I knew that I should’ve implemented things differently the first time (instead of the way I ended up doing them) and partially because implementing changes for Product 1 to prove the case would require a lot of work and substantial changes to the code as I’d written it.  Plus I’d have to regression test everything after I made the code changes and as a result there would be major delays in moving forward with the website and all the other important details of incorporation.

I ended up doing lots of code rewrites over a 2-day period.  At the end of the second day everything seemed to be working, well, unless you consider my encryption code was completely non-functional and I was getting UI crashes where there were formerly no UI crashes.  A friend was coming over to dinner on Saturday so while he chatted with my wife I pounded away at the encryption code (like a gorilla) for another 1-2 hours.  In the end, the encrypted hashes matched up but authentication was still failing.  I called it a day on Saturday and decided to revisit fixing things entirely on Sunday — but this time at my leisure, when I was ready.

After a Saturday night of heavy fun, our friend stayed in the guest bedroom, and stayed around for a bit on Sunday.  For my part, I watched a little bit of football (and when you follow the Buffalo Bills as I have my entire life, a little bit of Buffalo Bills Football these days is more than enough), hung out with wife and our friend, played some Wii, and ate leftovers.  I didn’t really start coding/fixing again until about 8pm on Sunday.  At first I was feeling anxious that I hadn’t started working earlier in the day, but lo and behold having a break from code, code, code, coding turned out to be a really good idea.  I introduced further changes to the extent that my encryption started working again (always check your salt, people, in particular if you’ve changed the naming scheme in your directory.  That is all.) and the UI was stable overall by around 11pm or so.  There were still some UI quirks to address, but I decided to watch mindless stuff on YouTube instead and backburner further code fixes until Monday.

I slept in a little bit on Monday, until 6:30am, then started to sip on coffee and re-run Product 1 tests to re-acclimate myself as to where the pain points existed in the UI code/behavior as of 11pm last night.  I did some more code fixes to both accommodate UI changes that came as a result of the previously mentioned 1.0.0 code changes and to address UI issues that came up as the result of cms’s UI testing in the previous week.  By the time I left for work, things seemed to be in decent enough shape.  I asked cms to retest and am waiting to hear results.

[1] I decided not to touch the source code in the trunk anymore.  If I really needed to integrate changes back into it, I’d do so at my discretion but without branching now using common code for Product #2 would be near impossible.  1.0.0 and 1.0.1 initially were the same exact code after the branch.  1.0.0 would be the first version of the product I’d sell.  1.0.1 would incorporate minor bug fixes and improvements that weren’t worth rolling into the next major version of the product (that I’d sell).

Encry’ing Game

October 7, 2009

I’ve been doing the “math thing” for many years.  That is, computer science and math are like two great tastes.  If you don’t know math, you won’t be able to program.  If you don’t know how to program it’s probably because you don’t know the math that’s fundamental to writing effective programs.

That said, and in spite of all this math, my understanding of encryption I’m learning is way under what it should be.  Technically encryption is a math problem: “I have this word that I want to obscure/encrypt.  Shift this and that character against this and that other character and/or number and it’ll do what I want”.  But there’s way more to it than that.  There are standards for encryption and roadmaps called RFC (request for comment) that allow a programmer to implement based on spec (the RFC).  A well-written RFC will offer enough details for the programmer to implement their program easily, hopefully, and in their language of choice.  Not this time, unfortunately.

I’ve been reading RFC 4757 and 2104 and I’ll be damned if I can fit all of these pieces together.  It seems like each part of my code is working separately, but I’ve been running packet capture tools to see how my program interacts with the server versus how a known-working-program interacts with the server and what my program is sending is just dead wrong.  I’m certain my implementation is incorrect in some way and I’d really like to implement this one encryption type that’s native to the Microsoft platform but it’s just not working out.  I fear that if I omit this encryption type people will not buy the software.  I must’ve swallowed a brick.  You can infer how that’s going to work out.

I should note on the plus side that I’ve actually tested and “certified” the software under Windows 2008, so that’s a major win.  As you recall, the baseline for OS support is Windows 2003, but Windows 2008 support was crucial to the lifespan of the product, or heck, even early adoption by customers.  The only other major sticking point for the software to be considered done for v1 is the remainder of encryption support.  I procrastinated earlier since I figured “I’ll have time later” but that was obviously when there were other principals involved with the company.

Now I’m bogged down in this silly encryption issue and I have not had a chance to finish the incorporation, art, or commerce bits of the company.  And I’m only slightly started on the v2 product.

Wish me luck.

Rebranding and Graphic Arts @ Home

September 4, 2009

Partner #1 and I decided that I was going to seek a new brand for the company and that he was going to keep the old brand as well as the hosting server that was named for the old brand.  Doing a changeover from the old server to a new brand was impossible, and I already had a hosting plan in place, so wiping out the old brand’s source code from Partner #1′s server and moving the stuff to my own was the first step.

I also ended up doing 3-year registrations for all domains (.com, .net, …etc…) related to the new brand.  This will save me trouble later on, I’m sure.

While I believe that technically nobody “owns” the original brand and I also trusted Partner #1′s integrity to not shake me down with regards to possible mentions of the old brand somewhere in the source code, I decided that it would be the best idea to sanitize all of the production code in my source code repository of any/all mentions of the old brand name.  This includes text that appears in the application, messages sent to log files, variable names in the code, and even changing the file naming scheme in parts.  In short, it took two full days to sanitize the code so that it reflects the new brand name and is definitely clear of any references to the old brand name.  Then I had to reimport all sanitized versions of the code back into the source repository to ensure that even old versions didn’t have any mentions of the old brand.  It was an unenviable task and I’m glad that it’s done since there’s still so very much to do — far and beyond what actually involves the application(s) I’ve been writing and their functions/features.

I’ve managed to put together a list of things that need to be done, excluding the actual act of incorporating itself, and this involves:

  1. Hiring a graphic artist (read more below).  I realized that since I’m at the point of both creating a Windows “wizard” type of installer for the application(s) and a www storefront, it’s really high time that a consistent design is applied to both items.  This shouldn’t stop development from continuing, but is definitely a gating factor for the packaging and business end of things.
  2. Acquiring and testing the licensing software.  I found a company that had the license key generator/validation software I was looking for since I had zero intentions of releasing completely unprotected software over the internet and I didn’t have the time or energy to develop licensing software myself.  Note that a fair amount of coding/testing will need to be done with my application(s) to facilitate testing of the licensing software’s API.
  3. Windows hosting.  I’m going to sell a Windows application that uses a licensing scheme for the Windows platform.  It makes practically zero sense to shoehorn my licensing solution into a Linux hosting environment and hope for the best once license keys are used on Windows hosts.
  4. Building a website.  I currently have zero storefront — not even a mock-up.
  5. Settling the details about e-commerce and integrating them with the website.  I think I’m going to go with the Google stuff here since it’s totally flexible, but a lot of coding and testing will need to be done once I get the website going.  Outside of the coding I’ll need to do to get my storefront to work w/Google, I’ve been mulling a few problem areas around in my head for a few days and I realize that there’s a conflict in policy between Google (refunds must be provided) and selling unbundled/downloaded software where the customer getting license key(s) is part of the purchase process.  You simply cannot give someone a software download and permanent license key for software only to turn around and refund their money; this is practically like not licensing your software at all and giving it away for free to boot.  I figure that I have two choices: hope that I’ve interpreted the Google policy correctly such that I implement a one-stop shop to get the software/license — and as a result refuse refunds on software purchases – or I make the purchasing part of the transaction separate from the licensing part.  Maybe it’s a non-issue, but I’m really trying to have things be dirt simple for the buyer here.
  6. Licensing verbiage.  My wife is a lawyer.  I am not.  I have seen programmers do their own renditions of the Ruby, Perl, MIT, GNU, etc artistic licenses and I am not inclined to do so myself.  I do not purport to have any legal skills, and after living the experience of watching my wife go through law school, I firmly believe that the law is not written in “plain English” as some may claim.  With this in mind, I really need to have both a mock-up of both the website and the “wizard” applications and take both of these items to a lawyer who specializes in technology.  This lawyer will write an appropriate license for me and tell me exactly where to place this text or mentions of it in both my website and my application(s).

So as you can tell, I have all the tiny pieces of getting the company together.  Now I have to choose which one(s) to work on first while still bringing the product(s) to fruition.  I’ve decided to do a rough cut of the artwork myself.  I know, it’s probably folly, but I got tired of having nothing to look at when coding/scaling application windows and installation wizards and such.  I really need to know how a “real” graphic will look and maybe, just maybe, I can save a couple hundred bucks in the meantime if I get something passable and functional out the door.

One-Man Show: So, Now What?

August 18, 2009

No doubt I am concerned about this company being a one-man show, at least for the foreseeable future.  The main reason for this is that I have no formal business training.  I have confidence in my ability to plan and execute software development, in particular at this scale, but I’m really concerned about missteps early in the business process.  Unfortunately for me, very few of these missteps involve overspending which is next to impossible for a company of this size; almost all of these missteps involve failing to market and sell the product properly.  Marketing and selling is just not what I do, so I’m going to have to proceed with caution while not losing focus of bringing the product to market.

For those who’ve read up ’til now and thought that I took pleasure in parting company with Partner 1, that’s simply not true.  To be brutally honest, I don’t want to run a company by myself but at the same time I can’t participate in a company where the business end is a non-starter.  A company without business operations isn’t a business at all, so it was time to refocus the whole thing.  Being on my own allows me to step back and do that and I’m less concerned than I was two days ago since I’ve had the chance to settle things down in my head a bit.

For starters, I think I have to revisit 100% of the cost structure.  Partner 1 had a good grasp of this and I think his initial, rough numbers were pretty accurate in the grand scheme of things. He’d estimated startup costs of $6000 divided by 3 principals and later $6000 divided by 2 principals.  I know that I have to rewrite the business plan and as part of this I will have to revisit the startup costs; my next task after finishing testing of the v1.0 product will be to re-do the budget.

I believe that since I won’t have that much in terms of production costs for our software (i.e. I’m not selling shrink-wrapped software that would have the associated costs) most of the costs will actually be related to incorporation and legal fees.  The rest of the other costs shouldn’t be more than $1000 combined — if that.

On a humorous (dark, but humorous, hopefully) note, I’m beginning to understand why somebody would want to send work overseas or why running a sweatshop is attractive financially.  Why?  Because everything could not be cheaper and that makes the bottom line great!

Anyhow, there is decidedly a bright side.  Assuming that I can get my costs down to $3000 (it’s possible but it will be tight and much of this will have to do with where I incorporate and what their fees look like), I believe that I’d be able to sell enough software within the year (no, not by January 2010, but by September or October 2010, depending on when I officially start selling the software in 2009) to make up those costs: Google Alerts be damned!  Seriously, tho, at $75 a seat for software v1.0, I’d need to sell 40 copies of the software to break even.  Even if I charged $50 for the software, I’d have to sell 60 copies to break even.  Given how little software I’ll actually have to sell to break even, the real issue is how things get to market.  I still haven’t fully understood how this is going to work.

In spite of the lack of hits for the buzzwords for my product on Google Alerts, you’d hope that strategic placement of buzzwords on Google Ads could actually reach more than 60 people and thus I’d sell more than 60 copies of the v1.0 software.  If I was able to produce a v2.0 offering at approximately the same time and at 2x the price, it would entirely be possible to break even with even half the amount of copies sold.  Ironically, it’s really hard to get excited about money at this point since it’s all Monopoly Money right now.  I just threw the numbers out there so I knew what I’d aim for in 2009-2010: to break even.

In 2010, I’ll take it from there.

Hmm, testing, and Wow!

August 17, 2009

When I spoke to Partner 1 on Sunday, he assured me that everything was cool between us and I was fine with that.  I didn’t want things thing to be un-cool between us.  I know this sounds like dialog you might find in a movie starring Freddie Prinze, Jr., but it’s true.  I have been friends with Partner 1 for 10 years and while I wasn’t happy with what transpired with our business venture, I’d also realized that starting a business is hard: really, really hard.  If I had to put my finger on why I’m the last one standing out of the “original 3″ principals, it would be:

  1. Given our business model, we didn’t replace our salaries with bank or venture capital dollars, so we had to work for free.  Working for free is very hard.
  2. Given our business model, even if we were selling software today, the chunk of returns would’ve happened 2-3 years from now.  Waiting for returns and working for free is very hard.
  3. Given our business model, we didn’t want to borrow or reuse anyone else’s code.  Doing so, while not only morally suspect could also have been a deal-breaker if it came to acquisition of our company.  No company will buy code that has dependencies on anybody else’s, or at very least you run the risk of losing the deal if the acquiring company has fear about licensing the borrowed code from a third party.  Seeing this, I had to write tons of code from scratch and this took a long, long time.  Working long hours, waiting for returns, and for free is very hard.
  4. I had a solid knowledge of the problem and after studying lots of specs (tech notes) and code, I developed a solid understanding of the solution.  Partner 2 definitely had no clue and Partner 1 didn’t fully come up to speed.  Working long hours, while needing to come up to speed, waiting for returns, and for free is very hard.
  5. I’d had spare cycles to do it since my wife was studying for the bar in two states, but that can’t be said for everyone who has commitments at home.  Working long hours, while needing to come up to speed, with commitments at home, waiting for returns, and for free is very hard.
  6. Doubting the available market.  Once I got the feeling that Partner 1 was losing faith in our potential market (i.e. the concern about lack of hits on Google Alerts), I think that on top of everything else he lost faith in what we were trying to accomplish.  Working long hours, while needing to come up to speed, with commitments at home, with lack of faith in the potential market, waiting for returns, and for free is very hard.

The one glaring thing that was lost in this whole mess was… testing.  When you develop software that you intend to sell, you’ve got to test it before it goes to market.  It’s almost always the case that even the best of programmers overlook something that will shake out during testing.  In this case, I relied on Partner 1 to do the testing and we never got to that.  When I’d met with my friend at dinner last Thursday he graciously offered to test on a home network he’d build and to offer feedback as he had it.

As of this morning, testing has taken place and results have been mixed albeit far from terrible.  I had to do some code fixes and my friend had to re-test.  The end result is that we have a “working program” but I’m aware of what needs to be done to solidify things into a release… before we re-test again.

I think I’m going to finish the product (both v1 and v2) first, then do the business (IP, packaging, website, etc) stuff.  This will probably push everything back by a quarter but this is probably how much time it will take me to regroup.

Prototype 3, August Drop-Dead, and Then?

August 2, 2009

In the final days of July, Partner 1 asked that I prepare a visual presentation of the GUI (graphical user interface) for Partner 2 to review for their “last chance” meeting on the first Monday in August.

Unluckily for me, no GUI existed as I’d been in a holding pattern since mid-July.  I started to feverishly produce Prototype 3 (that’s Prototype 2 functionality plus graphics on top of that) on the Thursday night before the Monday meeting that was to take place.  Bear in mind that I had no experience creating these GUIs in this programming language, so it was an adventure.

I worked late into the night on Friday then all day on Saturday to produce the GUI.  I finished the work shortly before 1am on Sunday and produced a PDF of screen captures and text that I then forwarded along to Partner 1.

I woke up early Sunday and started to hammer at the PDF document again as I’d found some mistakes on proofread on Sunday morning.  Within a few hours I’d hammered out a new PDF and sent it to Partner 1.  He thanked me for my work and said that it was exactly what he was looking for.  Phew!

Partner 1 later went on to explain that while a valiant effort to get the presentation going for Partner 2, the GUI he was looking for looked more like “a traditional wizard program” than what I’d designed.  I ended up doing substantial rewrites to Prototype 3, and it took two days, but in the end the code was way shorter and cleaner and Partner 1 was pleased with the results.  Granted, it took two days of prompting from me for him to check, but still, at least he did look at it and I was on the right track.

Partner 1 called me on Monday afternoon and confirmed that Partner 2 was out.  I totally expected this.  Like the girl you want to date who never returns your calls, the outcome had been clear all along!

And then there were two.  Partner 1 didn’t seem that positive this time around, but tried to suggest that the two of us could run the company.  On top of that he kind of pointed out that he wasn’t getting any hits for <our product buzzwords here> on Google Alerts, so while “not a showstopper, he was kind of concerned”.  I can’t begin to tell you how chafed I was that the worth of our prospective company’s idea was tied to hits from Google Alerts, or if Google Alert hits were important to Partner 1, why didn’t he track hits from Google Alerts back in May before another principal was ever considered for the business?!  This would’ve been a real time saver for me, you know, before I started putting in 19-hour workdays between my career job and developing the prototypes for our company.

Anyhow, after the departure of Partner 2, in our new, two-person business he’d handle all of the business stuff and I’d continue doing what I was doing.  We’d move forward and incorporate as planned.

Over the next 10 days I heard next to nothing from Partner 1 and I was concerned since we were nearing our 8/18/2009 meeting with the attorney and still didn’t know when or where we were going to meet.  Partner 1 wasn’t returning my calls and wasn’t responding to email more than once every day or two.  I was very, very unhappy in particular because we were probably going to have to cough up at least $1000 for lawyer costs to get the incorporation straight.  Given all that had (or more to the point hadn’t) taken place up until now, I wasn’t even sure I wanted to incorporate with Partner 1 at this point!

I ended up meeting with an old friend of mine and his wife on Thursday night for dinner (a social visit) and happened to mention the (broken) state of incorporation and he said that he was willing to help test the application.  Excellent!  This was even more excellent since to date I was the only one to have tested it and heaven knows if it was going to work on any systems other than mine!

The Thursday before our meeting with the attorney I called and emailed Partner 1 about the attorney meeting and if we were still doing it.  It took him 24 hours to get back to me, so Friday night I tried to call him again.  Still nothing.  Damn!  Shortly after I’d emailed him, Partner 1 dropped me an email sending me a time and place for the meeting and also noted that he was about to get a new job and that his time to dedicate to the company would be limited.

So, let me get this straight: we waited for one principal for almost two months and now you’re out, too?  Is that what I’m reading here?

I started writing a rant to Partner 1, then stopped and rewrote, then stopped and rewrote again, then stopped and stepped away.

Eventually I ended up sending an email with details something that read like (summary): “I don’t think we should incorporate.  Details here.  … etc …”

I heard back later Saturday afternoon with an email that essentially said “we’re on the same page and I’ll talk to you tomorrow”.

We’re on the same page?

We’re on the same page?!

Wait, weren’t you ready to spend like $1000 on an attorney two days ago?!  Someday I’d really like to know why Partner 1 soured on the business so solidly over the month of August.  Did something happen at home?  Was it the lack of Google Alerts hits after all?  Was it me?  I don’t really want to know now because I have way too much to do and can’t afford to lose focus.

Lesson learned is: starting a business with friends is probably no different than starting a business with other associates.  Sure, you can trust and admire your friends as friends but the rules change when you become co-workers.  This doesn’t mean you shouldn’t become business partners with your friends; this does mean that you can probably expect everything to change for better or for worse.

Solving Problems in A, B, C, More Waiting, Breakthrough, and More Waiting

July 15, 2009

Surprisingly, very little changed or was accomplished between late June and mid-to-late July.  Partner 1 hadn’t looked at the Prototype 1 code I’d sent him and seemed to be idling as not much else had been completed on his end.  Partner 2 was still incognito waiting for the other shoe to drop with her company.  I was idling as a result of both.  This was frustrating and I feared that we were losing momentum, that we were nowhere near incorporating and that all would be lost.

I ended up speaking with Partner 1 about this and his spirits were still high.  We decided that screwing over Partner 2 was not the way to go, that if necessary we could run the company with two people, and that I should take a week off, which I did.  In the future, I should note that when starting a business things that involve the product and the organization must take precedence over personal setbacks or indecision.  It’s only fair to those who want to move forward.

(At some point along the line, Partner 2 sent us a matrix of company types and noted her interest as us incorporating as an s-corp.  I forget when this took place exactly.)

I decided in July 2009 that product 1 involved the solution of problems A & B.  Product 2 involved the solution of problems A, B, & C.  I realized that Prototype 1 only involved a partial solution of problem A, so I rewrote it.  Then I started to tackle Problem B but got stuck.

Partner 1 and I had a meeting somewhere in July and mapped out what our v1, v2, and v3 products would look like.  During this meeting, we solved the sticking point, and looking back I should’ve been able to solve it myself — and way earlier.  But whatever, at least I was able to solve problems A & B in their entirety after another week.  I did a super rough cut of problem C to meet the deadline for a meeting I had with Partner 1 in mid July but it was nowhere near completion.  I just needed something to show.

By mid-July, we were still missing a business plan.  It’s not my forte to do things like business plans, and even though I should learn, both Partner 1 and Partner 2 had executed business plans in the past, so there was no reason for me to be spending cycles on a business plan at this point — since I was already spending 3 hours in the morning and 6 hours at night (before and after a day at my career job) to write code for Prototype 2.  At this point I just didn’t have the cycles or inclination to write a business plan.

During his visit a few days later, we walked through Prototype 2 and its code, and Partner 1 produced a business plan to show me.  To be honest, I was shocked as practically nothing had happened on the business end: EVER.  We reviewed the business plan and I actually found it to be great.  I started to be excited again and felt not so weary as I’d had for the past 2-3 weeks.

The only gating factor now was with the availability of Partner 2.  I explained to Partner 1 that we needed a drop-dead date from her since two months had passed with zero change in her status and that we either needed to find a new businessperson or we needed to go it alone.  It was agreed that the first Monday in August would be the deciding day.  I figured I already knew the outcome, but fine, what was another two weeks?

Prototype 1, Calamity, and Change

June 15, 2009

After our meeting on 6/6/2009, Partner 1 and I exchanged a lot of email about what we should do next.  It was decided that we should write a prototype and that our prototype should be (a) informal (not written in one programming language versus another for the sake of getting the job done) and (b) illustrative of what we were trying to accomplish to the point that we’d agree our concept would work in practice, but hardly complete in terms of what we’d sell.

(Partner 1 and Partner 2 also met with a sales guy at this point and he was into the idea of selling for us, but obviously with no product to sell it was all arbitrary at this point.)

I got down to work in reviewing lots of programming notes and Partner 1 started to build his test environment.  He let Partner 2 in on what we were up to.  I didn’t hear anything back from Partner 2 but Partner 1 and I kept going, until…

Partner 1 called me one afternoon to express that he was installing his test systems only to discover a bug that totally corrupted his system such that he’d have to start over.  Uggh, okay.  This happens, I guess.  Anyhow, we exchanged a few more productive emails about what the prototype should do and what the product(s) should look like.  There were a couple of scope changes but I was still comfortable with that we were trying to accomplish at this point.  And I was motivated.

It occurred to me that during our chats that writing a prototype for the platform that we were developing the prototype, and in a programming language not native to the platform where we were doing the implementation, was far tougher than just writing a prototype in a native language supported by the platform.  To those who don’t get the gist of what I’m saying here, I can sum up as follows: right tool for the job.

I ran this change in language by Partner 1 and he basically said, “if you feel that’s what’s right, do it.”  I did some more studying about how we’d implement our prototype in this language while Partner 1 got his test system going again.  About a week passed, and I’d not heard from either Partner 1 or Partner 2.

I waited a few more days and started to develop Prototype 1.  It proved how much less work it took to do the development work with the right tool and I had a working prototype in less than two days.  I was highly encouraged by this development and decided to ping Partner 1 about his status.  Still nothing, test system not built, no testing done on his end.  I was concerned, although not annoyed, that no test system had been built/rebuilt in almost a week.  I figured it was a matter of time.

A couple days later Partner 1 started to ask questions about the manual process of solving the task at hand.  I was delighted by this as it meant that Partner 1 was back on track again, and once he learned how terrible the manual process of solving the task at hand was, it’d be a matter of time before he’d jump in and start coding or testing Prototype 1.  Partner 1 ended up getting the manual process solved (just like I had months before ever mentioning the business plan to Partner 1) and agreed that I was on to something with wanting to make this process easier with our software.

Partner 1 also let me know that it might be several weeks before Partner 2 could commit as her company was potentially going to be going through an acquisition of its own and she may have a stake in that.  Plus she has four children at home so she could not uproot without an exit plan with her existing employer.

I’m fine with waiting at this point since there’s still so much to do with prototyping and Partner 1 still hadn’t reviewed the code that I’d sent him.  Plus, I’d anticipated we’d be meeting with a graphic artist and a lawyer soon (RE: incorporating) so time would probably not be lost.


Follow

Get every new post delivered to your Inbox.