Dec 8, 2012

Its A Cash-Flow Game

The appalling truth is, you have to have money. A business can be noble, well intentioned, make a good product, have high ideals, serve its community, build great relationships with its members - all of those great things. But if it doesn't have cash flow it is dead.

This has been my experience with Geek In A Day. I think it was a great idea, and apparently the Grow America competition did too. However, after I sold people on my idea at Grow America, I effectively stepped down from my founder and CEO position, and tried to make myself an IT guy within my own company (its hard to get the IT guy out of my system). I then left it to my partner to take on the sales/business development part of getting things going. MISTAKE! 

It wasn't that he didn't want to make a go of it either, in fact he did his best, but when it came down to it it was MY idea, it was MY company, it was MY responsibility to sell the idea; and well, I didn't. I put work into the course curriculum, I put work into the website, I brought on a couple of talented people to help with the nuts and bolts of everything, but in the end, I stuck my head in the sand and failed to sell a single person on taking a single course!

Its been 11 months that I've been nursing this idea, and I have to be done having a hobby business. Frankly my family, my friends who went in on it with me, my friends I've ignored this whole year, and even I myself deserve better.  If I have a business at all it has to be a revenue generating business, not a hobby.  I've been really grateful to have this experience, I've been grateful to be at a place in my life where I can take some time to try my hand at business. Its taught me a bunch about myself, and I need to capture those lessons in writing in a less public space, but here's today's action:

I need to grow my inner salesman.  To start I'm putting a survey up on the website in the next couple of days - some primary market research. I want to feel out people's interest level, what they're willing to pay, and if they'd like to pay, throw out some pre-order opportunity.  So look for that by next week.

Great business lessons to be learned!

Merry Christmas!

Nov 6, 2012

Got an idea? It's time to make money!

More than ever in my line of work, I see how innovation can be infinately rewarded.   The ability for people to share information, collaborate together, and back intriguing ideas with financing has exploaded in the past few years.  Peer-to-Peer lending and Crowdfunding have absoltuely changed the game for budding inventors. 

Take Phil Bosua for example.  A college drop-out rockstar wanna-be.  He's sitting in a bar, half-way drunk when a friend says "Is there a way I can get, like, a wireless light bulb?"  Just then, a light turns on in his head, no pun intended. 

He leaves the bar and begins working on a lightbulb that can be controled by your smartphone.  Of course a lightbulb can be controled by your smartphone.  Is there anything that cannot be controled by your smartphone?  I dare say not.  Anyway, after a few months' research, he posts a video on www.kickstarter.com asking for the masses to fund him $100,000 to bring this thing to fruition.  Is the bulb energy efficient? Yep.  Does it last a rediculous amount of time? Yep, 25 years..  Can it change colors? You bet.  Can you syncronize all the bulbs in your room to change colors, strobe-light, and 'dance' to the music playing on your smartphone? Check.  Since it's controled through a smartphone, can the lights go ahead and blink when I'm receiving a text message or phone call? You got it.

So, did the masses respond?  In spades.  The bulbs passed the $100,000 mark in their first day on kickstarter.  When the project reached $1.3 M, Phil cut it off.  Long story short, you'll see these things on the shelf sometime early next year. 

That's the power of current technology.  If you've got an idea, it's time to make money.

Jun 26, 2012

Open Garden

Each week I receive the latest issue of Bloomberg BusinessWeek Magazine.  I always enjoy the half hour or so it takes to skim through the various articles.  Without fail, I learn about some new start-up technology company that's going to change the way the world is the world.

This week's issue has an article about a man named Micha Benoliel, who started a company called Open Garden.  The general purpose of his company is to open up computer tethering.  Currently, if I want to tether my Android phone to, say, my computer, I have to pay Verizon Wireless something like $20/month for the service.  Not anymore.  Now, all I do is download the Open Garden app to my phone, Open Garden software to my laptop & other wireless/bluetooth enabled divice, and whamo!  I've got an ad-hoc wirelessly tethered connection for internet services on all my electronic devices. 

Pretty cool, I'd say!

Quick disclaimer;  this app and software are in beta stages.  If you decide to try it out read through the user agreement.  Open Garden is pretty honest about what could possibly happen to your electronic devices, and what liability they have (none) should something catastrophic take place.

Jun 14, 2012

Tech Megaliths Are Hurting Consumers (A Rant)

That's right Google, Apple, Facebook - I'm looking at you.

This week at WWDC Apple announced their newest iteration of their iOS mobile operating system. As part of this announcement they announced a new maps application that no longer uses Google's maps data, but is a 100% Apple product. Sounds great right? Perhaps you didn't know that Apple had Google Maps running in its flagship iPhone, but its true. Its a kickback from a simpler time. Ah, 2007, when Eric Schmidt then CEO of Google sat on the board at Apple, and a magical thing happened: When the iPhone needed a great maps solution, they used software from someone who ALREADY had a great maps solution. Genius!

This reminds me of a great joke from comedian Brian Regan. He tells a bit about seeing log trucks pass on the highway and thinking, "I've never understood log trucks. You'll be out on a highway and you see two big giant trucks, each loaded up with logs, and they pass each other on the highway. I don't understand that. I mean, if they need logs over there... ...and they need them over there (points the other way)... you'd think a phone call would save a whole lot of trouble.  You had logs?.. But I was told to bring... I got a order form... ...says to bring logs... Its what I did, I brung the logs...."

And this is JUST what Apple has done by creating their own maps service. But Apple added some cool new 'fly-over' features. You mean the features that Google announced just the week before!?

Some may say that Apple has been trying to force people to drink its kool-aid for quite some time, and they're probably right. But Apple isn't the only perpetrator! Google created Google+ to what? Do all the same things Facebook does and add yet another icon to the bottom of this blog post, and yet another layer of complexity to our lives. As much as people speculate that Facebook is losing its grip, Google+ is so lame my work doesn't even both blocking it.

Or, lets talk about how Google turned a perfectly wonderful solution called Google Docs, into a nightmare of confusion called 'Google Drive' that is supposed to rival Apple's iCloud, or Amazon's Cloud Drive.

Speaking of Amazon. Amazon created a tablet that is a pretty awesome price conscious alternative to the iPad. Is it an iPad? Nope. I don't think its trying to be, but it gives the consumer choice by providing a $200 alternative to a $500 iPad. Now Google is intending to create a similar tablet at a similar price point.  But Amazon's Kindle runs on Andriod you say. Yes it does. And that was the point of Android, to be an open technology that anybody could pick up and use. That's the point of open source!

To my point: As these companies build higher and higher moats between each other, as these companies try to sell consumers on the idea that there's no need to leave the castle, the only people who get hurt are the consumers who can no longer have a great looking phone AND a great maps solution. Why can't I have a great social experience AND a great search experience? Why can't I watch all the movies I want from Amazon on my iPad?

Do these companies expect that I will give my allegiance to their product family so completely that I will never look over the wall to see what else is out there?

An argument against what I'm saying here might be, "Stephen, don't gripe about Google when they're providing their free maps, mail, docs service to you."  While I am really thankful for the great contributions to the web Google has made, the idea here is that Google is NOT a technology company! They employ technology people, and have their name all over the tech industry, but Google in its heart of hearts is an ADVERTISING company. With that thought simmering in your brain, I will leave you with the picture at left.

Thanks for reading my rant. If you agree or disagree please post a comment below!

Jun 12, 2012

Generate a Random Number in Javascript

This is a post for the more technically inclined, but is not beyond the scope of someone who has been through the Geek In A Day workshop.

There are many other blog posts out there about how to generate a random number. To someone familiar with javascript the syntax is really simple.  To generate a number between 0 and 10, I would write something like this:
var randomnumber = Math.floor(Math.random()*11);

But here's the problem:
  1. I have never in my life said to anyone, "Pick a number between 0 and 10." It just sounds weird! Javascript is a language that starts counting with 0. Which is fine, except I don't count my fingers starting with finger '0', and if I did then I'd only have 9 fingers (points to you if just tried that). 
  2. The syntax of this might be a little confusing if you aren't already a programmer, so we should go over it.
If you want to follow along at home, you can open up a console in your favorite non-internet-explorer-browser.  For Chrome and Safari, go to Google and type "Opening the console in (your browser here)" For Firefox install the FireBug plugin, and then click on the firebug icon that appears in your toolbar, and click on console. You can then enter these commands yourself and see the results.
Lets start going over the syntax. Lets start with Math.random(). Math.random() is a built in JavaScript function that generates a random number between 0 and 1.

If I were to type this into a console I would get something like this:

 
Math.random()
0.576304082237184

or 
 
Math.random()
0.31910295924171805

but I can't USE that! Which is why this number gets multiplied by the upper bound of the random range. If I wanted a random number between 0 and 10, I multiply these by 10  to get 5.163 and 3.191 respectively. But these aren't whole numbers so I use Math.floor to round them off. This is how Math.floor() works:
 
Math.floor(5.76304082237184)
5

Math.floor(3.1910295924171805)
3

We see that 5.7 (which would usually round to 6) rounds down to 5 when I use Math.floor() because it essentially just takes off whatever decimal part of the number its given.

This is all fine and well, except that we want our random number between 0 and 10, not 0 and 9, and doing what we've done so far we will never get 10, because 0.999999 * 10 is still 9.9999 which gets rounded to 9. So, we add 1 to our upper-bound and putting it all together we get what is stated above:
Math.floor(Math.random()*11)

Copy and paste that into your console a couple of times to try that out.

Now to solve our first problem: I want to be able to tell the computer something natural like, "Get me a random number between 1 and 100, or between 10 and 30."  To do this I am going to make what is called a JavaScript function.  You can Google what functions are to get a good explanation of those, but I am going to assume some background. First, I will define my function to accept two parameters, a lower and upper bound. The code below can be cut and pasted into the console.  
// Anything on a line that comes after double slashes like this is a comment. 
// I will use comments to explain my code.

getMeANumberBetween = function(lower,upper) {
    //I'll add 1 to my upper bound to make sure my upper bound can 
    //possibly be returned.
    upper = upper + 1;

    //I'll subtract my lower bound from my upper bound because I'll 
    //be adding the two together later. You'll see what I mean below.
    upper = upper - lower;
    
    //Using the code I explained above, I will return my random number. 
    //See how I add the randomly generated thing to the lower bound?
    return ( lower + Math.floor(Math.random() * upper) );
} 
I included a ton of comments to make it easier to understand, without all of the comments, it would look something like this:
getMeANumberBetween = function(lower,upper) {
    upper = upper - lower + 1 ;
    return ( lower + Math.floor(Math.random() * upper) );
}
So now I can tell the computer to get me a random number between 1 and 100 like this:
getMeANumberBetween(1,100)
And my result is:
67
And now without writing a whole lot of confusing code, I have used a function to simplify my code, and make it readable. So I can do this all day, and use different numbers if I want to, and its very easy:
getMeANumberBetween(1,6)
6
getMeANumberBetween(1,6)
2
getMeANumberBetween(1,6)
5
getMeANumberBetween(1,6)
4
getMeANumberBetween(1,6)
5
getMeANumberBetween(1,6)
1
getMeANumberBetween(1,6)
4
getMeANumberBetween(1,6)
1
getMeANumberBetween(1,100)
43
getMeANumberBetween(1,100)
35
getMeANumberBetween(1,100)
76
getMeANumberBetween(1,100)
100
getMeANumberBetween(1,100)
32
getMeANumberBetween(1,100)
11
getMeANumberBetween(1,100)
37
getMeANumberBetween(1,100)
26
getMeANumberBetween(1,100)
41
getMeANumberBetween(1,100)
30
getMeANumberBetween(1,100)
19
getMeANumberBetween(1,100)
67