Business Achievements – XBox Style16:32:24

30
Jun
0

I have always enjoyed the Achievements system in XBox games. They add a competitive twist to the games and encourage you to do things in the game that you may not have otherwise thought to do. Some players are so obsessed with earning every single achievement point in their games that there are entire websites, such as http://www.xbox360achievements.org/, devoted to helping people get every last point.

So, I have created my own list of Achievements (and corresponding points) to turn running a business into more of a game. It is the “Achievements” page for this blog. They are listed in no particular order, and I have assigned points according to my perceived complexity of completing each Achievement.

To date, I have earned the following Achievements:

Quit Your Day Job (5 pts)
Create a legal business entity with the state (5 pts)
Get an EIN from the IRS (5 pts)
Open a bank account (5 pts)
Get a business credit card (5 pts)
Print business cards (5 pts)
Give your business card to somebody (5 pts)
Expense a business lunch (5 pts)

Quit Your Day Job (5 pts)

Create a legal business entity with the state (5 pts)

Get an EIN from the IRS (5 pts)

Open a bank account (5 pts)

Get a business credit card (5 pts)

Expense a business lunch (5 pts)

So far I have 30 points out of 3145 possible points. Check out the rest on the Achievements page.

Popularity: 30% [?]

Filed under: Uncategorized

Visa Card – DENIED!15:58:18

30
Jun
1

During my first week, I applied for a Small Business Visa card and then one week later was told it would take 10 to 14 business days until I would get a decision on my application by way of snail mail.

Well, one whole month later I got the decision letter in the mail. Guess what. I was denied. Want to know the reason? The letter said, and I quote:

We have made ever effort to approve your request; however, after careful review, we are unable to approve your request because:

Your business has not been open for a sufficient length of time.

Of all the reasons to deny a credit card application, this one seems like the dumbest. This goes right back to the bootstrapping problem. How am I supposed to get a business started if you don’t give me a credit card to make initial purchases, etc?? My business certainly won’t be around for long that way.

You don’t want to give me a credit card? Fine. I can easily find another bank that will issue me a Visa card, no problem. Guess what, when they issue me one, I will have no need to get one from you anymore. Where is the logic in this decision?

Please note, I’m not upset about being denied. I wasn’t holding my breath on a positive decision after not hearing from them for 2 or 3 weeks. I have good credit and will get a card from somebody. I’m just confused on behalf of the bank about how they get any business this way? I’m a shareholder of this bank… maybe I should reconsider…

The solution to my current plight may be easily remedied since I have a consumer Visa card I have never used that I could just re-appropriate for the purposes of my company. I don’t think the fact that it’s not specifically labeled a “business credit card” will stop anyone from accepting it.

Color me confused.

Popularity: 37% [?]

Tagged as:

Cryptonomicon23:13:30

23
Jun
3

I don’t read a lot of books.

Most of the books I have read are technical manuals, programming books, science textbooks, and math textbooks. I really enjoy learning, and there’s nothing like a good physical book to teach me. I don’t usually like to read fiction because in my mind it seems like my time would be better spent learning something else. I also don’t read a lot of non-fiction because most non-fiction texts are based on history, a subject I sorely neglected in favor of math and science.

I pride myself in being a pretty big nerd, but I will risk losing major nerd points by openly admitting that I have not read nearly any of the essentially nerdy SciFi books that all nerds are assumed to have read. The only ones I can think of straight away that I have read are Ender’s Game and Watchmen. I read Ender’s Game about 9 years ago, and I honestly enjoyed it a lot. I meant to read the rest of the series, but I never made time for it. I just read Watchmen this year right before the movie came out. I also really enjoyed reading that (along with the movie, which did a great job staying true to the source).

So, clearly I can enjoy reading fiction, it’s just that I don’t take time to do it. I think it stems from being forced to read countless books in school, most of which I did not enjoy (there were a few exceptions – Catcher in the Rye being the most notable one). I kind of got turned off by the idea of investing a lot of time in something I might not like.

About a month ago, I took a trip to California and stayed with my aunt, uncle, and three cousins. My uncle has recently started a company of his own (with a few partners). He is a brilliant business man, and I have a lot of respect for his insights.

My uncle, one of my cousins, and I took a trip to a bookstore. I wanted to get a book about Scala (a semi-new programming language).  While I perused the Programming section, my uncle directed my cousin over to the Children’s Fantasy section (which was adjacent to the Science Fiction section). After discovering that they did not have my book in stock, I wandered over to meet my uncle. He was walking up and down the SciFi aisle pointing out to his son the books he had read and how great they were. This left me a little confused. My uncle is a History major and works in the finance industry. When (and more importantly, why?!) had he read all of these SciFi books? I never quite got the answer because before I could ask, he was quizzing me on the books that I had read (incidentally, he had lent me that copy of Ender’s Game I read). After about my fifth embarrassed reply of “No” to his “Have you read … ?” questions, he gave me the familiar incredulous glance I have come to expect from fellow nerds who learn my dirty little secret.

“You really should read these books!”

For some reason, this assertion really struck a chord with me. If he, a very busy (and successful) businessman, could make the time to read all of these classics, then so should I. It was at that point that I decided to start then and there. I bought two books: Foundation by Isaac Asimov, and Cryptonomicon by Neal Stephenson.

Foundation was at my uncle’s suggestion, and Cryptonomicon I picked of my own choosing. I am a huge cryptography nut, and I had heard of Cryptonomicon several times since its release and thought now is when I would finally read it.

Each day since I started out on my own, I have forced myself to take one or two ten-minute breaks and read a few pages. So far I am up to page 215 (out of 1100 or so), and (surprise!) I am really enjoying it. There is a big focus on World War II era cryptography, which is very cool because the Enigma machine was something of great interest to me, and I have done lots of research on it out of pure curiosity. There is also a story line about two guys starting their own company in the information technology business. This was a happy coincidence, and it has been fun to follow along with their story line as my days progress.

In the end, will my new found desire to read more books be worth my time? I do think so, though I’m not quite sure why yet. If nothing else, it has been nice to take a couple short breaks during the day to let my mind concentrate on something else, if only for a short while.

Oh, and even though I haven’t finished it yet, I highly recommend Cryptonomicon.

Popularity: 36% [?]

Tagged as:

The Bootstrap15:46:34

23
Jun
0

Yesterday I performed what I consider to be the most significant act in starting a bootstrapped company: The Bootstrap.

This is the act of deciding upon, and then depositing, the amount of money the business will need to start and then turn into a self-funding operation. For me, that initial amount is $3,000. In truth, this number may be higher than necessary if I play my cards right (my current overhead is low), but I want to have a good cushion just in case. My business account had $50 in it from the initial deposit upon creation, so actually I now have $3050 to get my brand new company off the ground.

This is a big step because I had to take my hard-earned savings and devote it to my new venture. This means I now have funds to make business-related purchases and will have to be disciplined about the things I deem necessary to buy. Here’s hoping that a modest sum of $3050 can grow into something much bigger!

For those that already know what “Bootstrapping” means (either in business or computers), you can stop reading here. For those that want to know a bit more about the history of this phrase can continue. I feel some explanation is in order, and it’s always fun to learn something new.

So, what is all this about boots and straps?

You have probably heard the phrase “Pull yourself up by your bootstraps.” This is an ironic idiom because, literally, it is an impossible task. You can try and try, but no matter how strong you are, you cannot lift yourself up.

In computing there is a similar problem. How do you start a computer running? The computer needs to load the program loader so that it can know how to run the initial program. But, wait! The program loader is a program… what tells the computer how to load that??

In starting a new business there is a similar problem. I can start a business that is able to make more money each month than it costs to run, so I can take the money from the business itself to run it. But, how do I get the initial money to start it?

There is a similar answer to all three of these paradoxes: you “cheat” a little, and all by the same mechanism.

In the basic “bootstrap” problem, you use the ground as leverage to push yourself up.

In the computer problem, there is a bit of hardcoded information that tells the computer how to load the program loader, and from there the computer can learn for itself how to load other programs and run them. Did you know that when you “boot  a computer”, it is really just a short-hand way of saying “bootstrapping a computer”? Now you know!

As for the business bootstrap, the initial money comes from personal savings or a small loan – a small source of funding that will be enough to start a business that can then quickly be able to fund itself. The initial funding should be able to be paid back in a short amount of time (or in the case of a personal savings investment, can just be left in the company).

My goal is to take my $3050 and launch a successful, self-funded business from it. It won’t be easy, but now I have a definite financial starting point.

Wish me luck!

Popularity: 35% [?]

Tagged as:

Bootstrap’d Update01:40:43

23
Jun
0

So, it has been over a week since my last update on what is/was supposed to be a daily log of my goings-on.  Clearly my strategy needs to be re-thought.

There are a couple of factors that play into this situation:

  • I have been busy doing stuff.
  • Writing takes a lot of time and energy out of me.

The good news is, I have been busy working; both on freelance projects and on my own projects. I usually end my work days late at night (or very early in the morning), at which point I can no longer think clearly and the thought of writing a summary of the day is furthest from my mind. The bad news is, I don’t write many posts because of this.

Quite honestly, in the last week I have been focusing my time on development of products and not so much on the business-administration side of things. It would be pretty boring to write (and for you to read) about “I wrote a bunch of code today. The End.” Nothing really significant happened, and so I decided not to report on “making license plates” (a Cryptonomicon reference meaning the basic activities needed to keep a business going).

The process of writing takes a great deal of time and energy from me. I know I will never win a Pulitzer for my writing, but I do take great pride in what I do write. I like to proof-read every post at least twice, checking for spelling and grammar errors. Nothing bothers me more than reading articles (read: blog posts) online that contain easy mistakes, so I try not to do the same. I can sit and write code for hours and hours and days and days, but when it comes to prose I am good for about an hour before I feel drained.

So, instead this blog may become more of a weekly summary with major business-related posts in between… or it could be lots of smaller posts that come more frequently. I am still trying to decide, but I am deciding right now that I am not going to fool myself (or you!) into thinking that this will continue to be updated daily (at least in the near future). I’d rather concentrate on doing what I love (coding and product development) than continue to feel guilty about not writing the previous night’s post.

Ok, I feel better for having written that. Thanks for reading along. I’m definitely not going away, just trying to improve the overall quality of the content here.

Popularity: 35% [?]

Tagged as:

Day 12 – TweetGrid Fights For Its Life20:30:29

14
Jun
5

Editor’s Note: Day 12 was Friday, June 12, 2009.

After a very productive previous day, I decided to sleep in just a little bit and then keep the momentum of my progress going. Unfortunately that plan went out the window the second I woke up. I awoke to messages in my inbox and on Twitter asking me “Why is TweetGrid down?” and “When do you plan to bring it back?”

TweetGrid has had some hosting issues before; it would be down for a few minutes or so and then things would go back to normal. About six weeks ago I got a phone call from GoDaddy saying that TweetGrid was using too many resources on its Shared Hosting server and it would be moved to its own server for one month while I was supposed to figure out how to fix it.  If the problem was not solved by then, my account would be suspended. Well, that’s great, but they didn’t tell me what the actual problem was, much less how to fix it. This left me utterly confused.

Some stats:

  • TweetGrid has about a total of 24 MB of source code and images that comprise the entire site. I am allotted something like 150 GB of space on a Shared Hosting account, so I am using 0.016% of my quota.  So, that isn’t the problem.
  • My Shared Hosting account is allotted 1.5 TB (1,500 GB) of bandwidth usage each month. I have never even reached 50% bandwidth usage in any given month.  So, that isn’t the problem.

What’s going on then? After some prodding I was able to learn that for some reason TweetGrid was using 3 GB of RAM on the server and using a “disproportionately high” percentage of the server CPU cycles.

There really was nothing I could do to change anything about the situation (except for moving the site to another host; which can be an expensive and time intensive process).  The site had been running fine for over 6 months without incident. Growth was steady, but it wasn’t exponential. What was going on?

A month passed, and the site continued to run normally. I thought things had sorted themselves out and I had averted a crisis. Then about two weeks ago I get another phone call. The problem had not gone away, and it was time for me to either upgrade my account to a dedicated server (very very expensive) or remove TweetGrid from my account. After reminding them of my disk usage and bandwidth stats, I argued that getting a dedicated server would be overkill, and that I couldn’t afford it. They got back to me and asked if I would mind trying their new Grid Hosting offering. The normal price is something like $19.99 per month (still about 4x more than I was paying for my Shared Hosting plan, but much less than a dedicated server), but while Grid Hosting is in Beta it would only be $4.99 per month. That sounded like a good deal to me, so I said sure let’s try that.

That night they migrated the site over to their Grid Hosting servers. I really have no idea how their Grid Server implementation works, but I was told that I would have 100% of the grid CPU cycles (which seemed like a non-sequitur to me), and I wouldn’t have to worry about excessive CPU cycle usage anymore.  TweetGrid + GoDaddy Grid. Sounded like a perfect match. I logged into the administrative panel and saw that there were, in fact, several nodes running the site. This still didn’t exactly explain how it all works, but at least there was an actual grid I could look at.

Flash forward to Friday. TweetGrid was down. And it stayed down. I logged into the administrative panel at GoDaddy, and all of the nodes I had seen before had vanished. Not good. I called support.

“Hello, I’d like to know if you have any information about the state of my Grid Hosting account?”

“One moment please, let me call the Grid department and see what I can find…” Insert hold music for about 5 minutes. “Hello, sir. I was told that there is a known issue with the Grid and that they are working on it.”

“Any other details? ETA on a fix?”

“No, sir. It will be back as soon as possible.”

“Ok, thank you.”

At this point I was basically at the end of my rope with GoDaddy’s hosting of TweetGrid. Having played around with several server instances on the Rackspace Cloud, I decided to just host TweetGrid there and maintain the server administration myself. I spun up a server and quickly installed a LAMP stack on it. I transferred all of TweetGrid’s files to the new server from my computer (I have a complete mirror backup of the site at all times) and started testing the new site to make sure everything worked.

When I was satisfied with the new server’s functionality I was prepared to update the DNS entry to point all of the traffic there. As soon as I was about to hit the button I started seeing messages that “TweetGrid is back!” Sure enough, the site was alive again on the GoDaddy servers. I held off updating the DNS entry to see if things would actually settle down and become stable again. Hosting TweetGrid in the Rackspace Cloud would cost about $22.00 per month, but at least I would have total control over everything. I was happy to see the site come back to life, but I left the new server running as a hot stand-by just in case. That was a smart decision.

Twenty minutes later GoDaddy’s servers were down again. My head exploded. I clicked the “Update DNS” button so hard I think I broke my mouse. Seconds later I started seeing traffic pour into the new server and the site was live once again.

That was all well and good, but the most frustrating part came several minutes later when I had the ultimate epiphany.

The TweetGrid Widget gets several million pageviews per month. Yes, millions. I still cannot believe this number, but I have to admit it’s pretty cool to see it pop up around the internet. The widget is just one 20KB javascript file, but it gets served over, and over, and over, and over… Since I host the file on TweetGrid’s server itself, I get the traffic and bandwidth hit from all of the other sites using it on their pages. This has pros and cons, but the biggest advantage of the other sites letting me host it is that they get upgrades to the widget automatically. I don’t have to tell anybody how to upgrade their widget or tell them to install the newest version. I just update the code on my site, and they get the newest version without having to think about it.

When it first launched, I hosted TweetGrid on my home computer. I had been hosting websites long enough to know that if you are going to have a high traffic website that only serves a few files per page load, you are better off disabling HTTP KeepAlives and only responding to requests with the HTTP/1.0 protocol instead of HTTP/1.1.  This means that when somebody loads a file (a page, an image, or the widget), the server closes the connection immediately (HTTP/1.0) instead of leaving the connection open to listen for more requests (HTTP/1.1).  This can have a HUGE impact on web server and site performance. If you have a file that gets served over and over and over (the widget in my case), it’s better to turn KeepAlives off to avoid tying up precious server resources that could be better spent serving other requests.

When I setup my new cloud server to host TweetGrid, I disabled KeepAlives instinctively before flipping the switch. When traffic started to come in, I was very curious to see how much RAM would actually be eaten up by the amount of traffic as well as how much CPU was being used by the server, especially to compare with the GoDaddy stats.

The numbers were alarming:

  • Total amount of RAM used by the webserver processes: 77 MB
  • Total CPU utilization: < 1% (meaning, the CPU is over 99% idle).

I could actually host the site on a 256 MB computer with a 500MHz processor with no problem if I wanted.

That’s when it dawned on me. GoDaddy must be using KeepAlives. I never had a reason to know or care before now, so I never really checked. Everything had worked and it didn’t matter. Now I had to find out.

Sure enough, I did a raw socket connection to another one of my GoDaddy hosted sites. The response header came back with “HTTP/1.1″ in it. Then I tried to force a HTTP/1.0 connection by specifying it explicitly in the GET request. The response still came back “HTTP/1.1″. That must have been the problem. With the frequency of connection requests for the widget, it must have been chewing up connection resources on their server and thus creating a memory and CPU hog on the shared server. I’m still not sure what the issue with their Grid was, but since it is in Beta I’ll chalk it up to early stage technical issues.

I am going to see if there is a way to ask them to put me back on a shared server with KeepAlives disabled (since that is not an option anywhere on their hosting administration panel), but I am not very optimistic about their response.

Long story short, I basically burned all of Friday battling with this. However, this story has a silver lining. I was encouraged by the fact that it is pretty darn easy to get a cloud server up and running and that my Linux admin chops are good enough to get it done. This will most certainly come in handy when I am getting ready to launch other sites with Rackspace that will most definitely need more than 77 MB of RAM and 1% CPU to run the backend of the sites.

TweetGrid has been running in the RackSpace Cloud since Friday with no issues. I am not sure if it will live there permanently as that is a business cost/revenue decision I will have to make. For now, I am just happy to have the stability and happy users once again.

Popularity: 94% [?]

Filed under: Summary

Day 11 – Working at Panera Bread19:02:01

14
Jun
0

Editor’s Note: Day 11 was Thursday, June 11, 2009.

Thursday marked the official start of my freelance gig after several days of phone conferences. The schedule is tight but won’t require my full-time attention to complete by the deadline. I am thinking of how to handle the daily scheduling. I will try to dedicate the morning hours to this task and then work the afternoons/evenings on my personal projects. If that needs to change, then it will.

I spent the afternoon with my web designer (Daniel) at a Panera Bread location between our homes (and had a very nice lunch, to boot). The wifi wasn’t incredible, but it was good enough to allow us to work there for quite a while (until our laptop batteries ran out). Since I couldn’t do any heavy duty coding while I was there, I took the time to research some of the technologies I am using and learn more about them. Since Daniel was doing graphics design on his laptop the wifi issue was not much of a concern to him. After I described the direction of my first product, he set about creating some concept designs and got the creative juices flowing. The initial draft is pretty cool, and I can’t wait to see how it matures.

We both learned something during our stay at Panera. They have a daily schedule wherein a server will wander around the store with free samples of different items on the menu. This happens every 30 minutes or so. During the course of our work session, we sampled Strawberry Smoothie, Frozen Lemonade, and Frozen Mocha beverages. They were all very good, but the Mocha was so good I was enticed to actually go buy one. I shelled out an extra $4.00 for something I didn’t even know I wanted. That was a marketing win for Panera. This little experience was a good reminder for me that free samples and free trial periods really do work in the real world. As I go about thinking how I will market my products and how to introduce them to the public, I need to keep an open mind about free trials… something about which I’ve been a bit skeptical.

Daniel and I parted ways from Panera. I arrived home for a short break and then dinner. After that was a nearly all-night coding session using the information I had learned from my research at Panera. I stopped myself at 4 am and forced myself to go to sleep. I can easily flip my sleep schedule upside-down, something I need desperately to avoid. The code I wrote that night has been running stably, and I am about to add another few layers on top of it tonight and tomorrow.

All in all, it was about a 16 hour work day; the first of many to come, I’m sure. That would not have been so bad unless I had known what was to come Friday morning… You’ll have to read the Day 12 summary for that epic tale.

Popularity: 53% [?]

Filed under: Summary

No Thurs or Fri Summaries… Yet.23:20:59

12
Jun
0

Between working 16 hours yesterday and battling The War on TweetGrid today, I am wiped out.  The two days are full of interesting things to report, but I am just too exhausted to do them justice by writing about them at the moment.

Tomorrow I will be attending WordCampRDU.  I might pick up a few good bits of advice for this blog.  I have done lots of WordPress codex hacking in the past, so it will be fun to see what’s presented during the camp.  It will also be nice to meet up with some friends in the area and have some human interaction.

I plan to give a recap of the past few days when I am a little more coherent.  I just didn’t want my loyal readers to think that I vanished :)

Popularity: 54% [?]

Tagged as:

Day 10: Search for a UPS23:55:41

10
Jun
1

I left off yesterday declaring that I would go out and buy a UPS battery backup first thing this morning.  What I soon learned was that I didn’t know anything about UPSs (UPSes? UPS’s?).  I also learned that retail clerks don’t know anything about them either.  I came home and decided my time was better spent researching UPSs online and probably ordering one from NewEgg.  I’ve narrowed my choices down between two models, but I haven’t pulled the trigger yet.  The prices are definitely cheaper online, and NewEgg’s free shipping would be worth the wait (forecast is for sunny skies for the next several days).

This next topic is goofy, but I think it’s cool. I’ll tie it in with the whole starting-a-company thing in a minute.  For my birthday, my parents gave me a series of 5 bowling lessons with the pro at my local lanes.  I can’t really explain why, but I love bowling.  It probably has to do with all the physics involved, and being a nerd, it was one of the few sports I was pretty good at as a kid.  I called the pro today and scheduled my first lesson for next Monday.  He said the lessons are usually scheduled two weeks apart and that I should practice between lessons.  Makes sense to me.

How does this relate to business stuff?  One word: distraction.  For the last 10 days I have done nothing but eat, sleep, drink, and breath this new company.  That is, of course, to be expected.  However, if I don’t come up for air once in a while I will surely drown in it.  Having these bowling lessons, and then taking the time out between them to practice a bit, will provide a healthy break from the work.  Sometimes you need to let your brain switch gears and let your subconscious focus on things for a while.  Ever wake up in the middle of the night remembering the name of the band that sang that song on the radio earlier in the day?  That’s your subconscious sorting things out while your brain rests.  I certainly have plenty to think about with this company, and I fully trust my subconscious mind to figure out the really hard stuff.

So, long story short, I’m excited about the lessons.  If you need me next Monday at 3pm, I’ll be unavailable.

I played with some new server technologies for web apps today (the tech isn’t new itself, but it was the first time I had learned about them).  This took the bulk of my day.  I left several things on my ToDo list undone today, and this was the reason why.  I felt it was worth it, though.  It prompted me to spin up another VM image to mirror my cloud server so I can do local testing before pushing things into production.

That’s about it for today.  I’m calling it quits earlier than normal tonight becuase I’ve started to stay up too late working on things.  If I had my druthers, I would sleep all day and work at night.  Alas, that won’t work when I have to interact with other people.  Looking forward to meeting with my web designer tomorrow.

Popularity: 57% [?]

Tagged as:

ToDo: June 10, 200912:28:26

10
Jun
2

Carry Over:

  • Work on setting up Mosso The Rackspace Cloud instance
  • Design business card graphic

Added Today:

  • Look for a UPS
  • Buy UPS
  • Client project scoping
  • Decide on the bootstrap
  • Coding
  • Call car dealership – call back Friday
  • Call bowling instructor – around 4:30
  • Research The Rackspace Cloud DNS settings
  • Research some web server technologies
  • Buy ticket for WordCamp
  • Spin up new VM image

Popularity: 44% [?]

Tagged as: