Sunday, May 06, 2012

If Business Takes the Startup Path

When you start a business, there are two well defined paths. One is the startup path with angel investors and venture capital. The other is self-funded, but that is a subject for later.

Assuming you want to take the startup route, in the past couple of weeks there have been two excellent posts about how to structure the company. This question has bothered me since I started my software business in 1978. First, was this article in PandoDaily by Dan Shapiro: "Founders Should Give Their Stock Back: Why Vesting is in Your Startup's Best Interest". He provides a well thought out suggestions for vesting schedules.

Second were notes from Peter Thiel's Startup Class from Blake Masters. Again discussion of vesting and equity in a startup. "It's not ideal to have founders who are fully vested from the outset."

APP IDEA: I'd love to see an app along the lines of Sid Meier's Civilization, where you build a startup. It could reenforce the principles of these vesting articles. Just like Civilization where your first few moves has an enormous impact on your success, so should the startup app.


Wednesday, April 18, 2012

Intersection of eBooks and Apps

In the space between eBooks and Apps, there is a product. It was suggested to me that this is not obvious.

Historically, books and software are very different things. One physical and the other digital. So we think about them as different even though we now call them eBooks and Apps.

Currently the same screen is used for eBooks and Apps. Already, it is sometimes hard to tell the difference just looking at the screen.

But we still talk about the two as very different products. In doing so we leave a gap. There is no reason you could not take the content of an ebook and put it into an app. On the converse a feature of an app would be useful for telling stories in eBooks.

There are already many titles in this space. Eloquent JavaScript a print book and a pdf eBook, but the "web site" is more engaging because it is interactive.  

Saturday, April 07, 2012

JavaScript Community is Real and Growing

Several people have poked at the phrase "JavaScript Community" since JSConf 2012. David Flanagan has said that "it is too big to be a community." Ryan Funduk has said there is a "Culture of Exclusion". There have been lots of tweets and comments. I strongly disagree with both views.

There is a JavaScript community. Fact. There are people working together on JavaScript projects and that makes a community. No matter what you say or try to do, people working together form a community. Recognizing that there is a community is healthy and trying to deny it is harmful in my opinion.

If we did not talk about the community it would certainly be exclusionary. Only by recognizing the community can we make it better and inclusive. Discussion of -isms are welcomed. Talking about the role of alcohol is appropriate. Debates about events are healthy.

Rebecca Murphey, Marco Rogers,  Tim Caswel (in comment to David Falanagan) have already pointed out that a community does not necessarily mean that everyone has the same beliefs. In fact, accepting divergent beliefs in a community are a strength. For example, my strong pro-union views certainly are different than most, but I feel quite comfortable discussing them with anyone at a community event. Divergent views is one reasons I join a community.

None of this introspection should overshadow the tremendous good that the JavaScript community can do and has done. For example, JSConf.eu has strongly promoted Coder Dojo with attention and money to help kids around the world. I look at the great careers that the yayQuery group and others have been able to build with the support of the community. Personally, I've made many new friends thanks to JSConf and have professionally gained. The positives are overwhelming.

When this community started it was very small. In many ways the first JSConf and JSConf.eu started the community. JSConf started inclusive of world, but only a few hundred people were interested in participating.

Today the JavaScript community is huge. With that growth come growing pains. How do we be more inclusive? How can events scale? How do the norms change for a larger community? What are the values? Other communities have faced similar problems. The JavaScript community is very receptive to finding answers to these and other questions. We should be thankful of that value.

Also defending the community is proof that we have a community.

Finally, a community is what you give to it. If you don't contribute it is hard to get anything out of it. So please contribute in ways that are appropriate for you. Let's do even more good.

Sunday, March 11, 2012

How Givingline Transformed on The Startup Bus

The learning experience on The Startup Bus is hard to imagine in any other format. Three long days together on the bus and a few in Austin gives you a much more time to devote to your startup effort. You pitch your product over and over again. Product ideas have more time to transform, iterate and pivot. My biggest take away from Startup Bus is how much the concepts can change.

Our project started as a points system for doing good deeds that feed into LinkedIn. We added the "pay it forward" aspect very quickly. A few hours later I drew on the bus window what was to become the Givingline infographic. For a few hours it was difficult to move forward. There was a problem with the team meshing and with the point system. We knew that many people don't want to boast about their giving.

We simplified. We pivoted. We worked on a viable product. The point system was gone. LinkedIn was no longer a consideration. Our team also reduced from three to two. It was uncertain how the revised concept would work, if at all. The bus schedule pushed us to do a prototype.

After about four hours on the first day we had our slim, working mobile prototype. It did not look like the idea that was presented 18 hours earlier. We felt better with something concrete.

On the second day the other teams on the bus really helped us refine the Givingline concept. They heard our pitch several times and offered feedback. They also became a great resource. For example, we were looking for the types of help where Givingline would be useful. We created a list of 10 different examples and passed it around the bus asking busmates to check what they thought we the two best. We also got some great additions.

The Startup Bus ends with making pitches to Venture Capitalists who need a big return on their capital. How does a social good concept fit? How do you monetize it? At the end of the second day there was a party in Baton Rouge. We threw out the sponsorship model. First, we'd open source the project. Second, we would sell it using the software as a service model to non-profits, religious organizations and civic minded companies in local communities. In addition, I came up with a method of users being able to input request via twitter.

At the start of the third day it felt like the clock was winding down so we set priorities. In the morning the prototype wording was cleaned up and we launched the product by uploading it to a public web server. http://bit.ly/givingline was live. Then we focused on the Givingline graphic or inforgraphic. I got some technical help from my busmates and started to work. From our pitches it was clear that this was the secret sauce, the sex appeal or the eye candy. Because of a lack of internet connection, I was never able to complete the coding of the twitter feature that I had hoped to demo on stage. Regardless, we had a slightly more that minimal viable product that looked very good on mobile.

The fourth day was not going to be a product day. The morning was spent at Rackspace, another wonderful host, listening to several all-start startup experts: Robert Scoble, Guy Kawasaki   and the two founders of Rackspace. Then there were selected pitches to all-start judges. Then a bus ride in the rain to Austin. Then trying to figure out housing. Our product saw no additions that day. Finally at the end of the day, I did get our screencast of the prototype completed and posted. In addition I finalized the two minute pitch to include the open source and software as a service model. We had a completed product ready if we were one of the 16 teams to be selected to make the semi-final cut. With 60 other teams competing and a social good model, I wasn't hopeful. I was very proud of the product we created.

Thanks to my partner Zainab Zaki, all of our DC busmates and conductors and all of the Startup Bus people that made it possible.


Tuesday, March 06, 2012

On the bus! On the Startup Bus!


Venture capitalist and true rock star Bono speaks the truth about the bus.

Early this morning I got on the Startup Bus to South By Southwest Interactive in Austin, Texas. On the way 30 of us will break into teams to prototype a new startup venture and present it to a panel of investors at SXSW. 

Look for my post here and in the Washington Post for the next week. There will also be tweets, pinwheels and a few other social messages along the way. Comments and encouragements are welcome.

Thursday, January 19, 2012

Reading, Bookmarks and Pads

Somewhere between the Zite app, favorites on Twitter and Read It Later is an opportunity. For example, I often discover stuff on my phone using twitter but I want to read it on my tablet or desktop. Why not every time I favorite a tweet it now shows up in Zite on my tablet. This is how bookmarks are suppose to work between synced browsers.

So as a developer I should probably be asking "Should this event, like pressing a button, trigger a sync that would show up on my other devices?"

BTW: Love Zite on my Touchpad.

Friday, January 13, 2012

How to get a mobile phone developer job - Part 4 #learnmobile

I was asked to write up my recommendations for learning mobile. All four parts are listed at the end.  Please leave comments of other favorite blogs or online magazines.


There are several recommended online magazines. When you read a good article, remember to use twitter and post to your blog. In no particular order:
smashingmagazine.com - especially appropriate is the coding tab. Also articles tagged with css. Like several other magazines, they are now publishing ebooks, but they will cost a few dollars. 
listapart.com - there are so many articles enjoy exploring. CSS articles are a strength. Also ebooks. 
net.tutsplus.com - good source of tutorials both for free and for a fee. They also sell books. 
dailyjs.com - generally for the advanced javascript user, but enough articles on learning that you should not ignore. 
html5rocks.com - good tutorials about the latest features you can get in a browser. If nothing else, it should give you inspiration for your own apps.
Are you overwhelmed? Everyone is. You don't have to read all of the articles. Find the ones the interest you and written in a style you like. Take your time. And you don't need to know everything. Just do something everyday.

The important thing is to create and contribute. It is easy to gain experience at no cost, have some fun and join the world of mobile developers.

Comments welcomed.

Intro | Part 1 | Part 2 | Part 3 | Part 4

Thursday, January 12, 2012

How to get a mobile phone developer job - Part 3 #learnmobile

I was asked to write up my recommendations for learning mobile. This is Part Three. Part One is here and Part Two is here. In this part I give you some ideas for simple mobile apps. Please leave ideas for other simple apps in comments.


Next round. You'll have to write some code. To do so you'll need to learn a computer language, storing data and about browser styles. For mobile you need to learn some JavaScript.
eloquentjavascript.net - to this point everything has been fairly easy. Learning JavaScript is the one requirement for any mobile app job. You could buy books or pay for courses, but one of the best books is free: Eloquent JavaScript. And if you use the web version, it is interactive. Highly recommended. (Update: Stackoverflow no longer has other recommendations. This was recommended.)
json - you'll often have to read or store data in your JavaScript apps. Json is the format for data in JavaScript. You should master how to read and create Json. It is fairly simple, but it may take a while to grok it. After you do, you may be struck at the beauty of it. Using json in your early projects is a good way to master it.
css and HTML5 - you'll have to know basic CSS in a mobile job. Few people know CSS very well - you need to know the basics like setting colors. Move on from there to HTML5. 20 sites to help you.
Again, don't be overwhelmed. Just learn what you need to get your weekly mobile app published. You don't need dancing, modern fonts to make your app useful. Getting your first JavaScript Ajax code to read a Json file and display it in your HTML page will be thrilling.

There are lots of different ways to learn how to code. Here are a couple to consider.
codeyear - sign up to get weekly emails to help you learn to code. This is the only service that I have not personally used, but it backed by some high profile organizations. Thousands have signed up.
lifehacker - the learn to code series is short set of articles to teach you the basics. It makes it look less overwhelming than the long books.
jquery - I've recommend jquerymobile without specifically mentioning jquery. It is helpful to learn basic jquery stuff like Ajax and html(), but before learning basic javascript first is required. The jquery website recommend some tutorials.
Do a search if you want to find others. Don't concentrate on mastering JavaScript, CSS, HTML for jQuery. These are just tools to help create that weekly web app.

Just keep at it everyday. Everyday use git. Everyday write some code from a tutorial or your own project using git and github. Everyday blog about what tutorials you read, what you coded and what you learned. Everyday tweet about your blog post or highlight a good tutorial. Some days you may have several blog post and tweets. Everyday.

There is a fourth part about recommend daily reading. 

Intro | Part 1 | Part 2 | Part 3 | Part 4

Wednesday, January 11, 2012

How to get a mobile phone developer job - Part 2 #learnmobile


I was asked to write up my recommendations for learning mobile. Part One is here. In this part I give you some ideas for simple mobile apps. Please leave ideas for other simple apps in comments.



Every week publish a mobile app. This is not impossible especially using jQueryMobile and tutorials. It does not have to be 100% unique. Pick a tutorial. Do the step-by-step coding. Then modify if you want. Push it to github and put it in your public dropbox account. Blog about it. Tweet about it. In no time you'll have a portfolio of apps to link to in your resume.

Besides doing the tutorials, here are some simple mobile apps you can do without any JavaScript coding. Basically any list can become a mobile app.
  1. Your mobile resume. Rewrite your resume into jQueryMobile.
  2. Learnmobile. Rewrite this post into a mobile app.
  3. Your mobile apps. Link to all of your mobile apps in dropbox. Update weekly.
  4. Favorite recipes. Make a list of food you make often with pictures or videos.
  5. Best articles. Instead of just bookmarking resources you like create a mobile app.
Once you have a little JavaScript under your belt you there are more options.
  1. dynamic list - store data in Json, read Json and create list. Convert you mobile apps dynamic.
  2. add to list - create a list that can be added to and stored in local storage.
  3. todo - perhaps the most common app people try. Keep it simple.
  4. rate it - provide a list of items to be rated and resort list after each rating
  5. #learnmobile tweets - use the tweeter search api to get the latest tweets with the hashtag.
Your next steps are in Part 3.

Tuesday, January 10, 2012

How to get a mobile phone developer job - Part 1 #learnmobile

Over lunch I was talking with a friend about how difficult it is for young people to find jobs. After mentioning the hiring I see for mobile development, she asked me to write up my recommendations for learning mobile.  This is Part One.

Like most things, you have to show some experience before getting hired. Here are the steps I recommend you take to start gaining experience.

Meetup.com - Get an account and look for meetups in your area related to mobile. Attend some, listen and say hello. At many of the mobile ones that I attend mobile companies are hiring. In the Washington DC area there are probably a couple mobile related meetups per week. Lots of people go with no experience just hoping to learn. You'll figure out in a month which ones are for you.
chrome - I strongly recommend you start using Chrome as your browser. It is the best desktop browser for developing mobile apps. View source on web pages to learn how designers put together some HTML features. Leave the developer tools enabled to see css and javascript. Try changing some css on a live webpage to learn css better.
Git - You are going to need git on your computer. Every time you start a project you use git to create a repository. A repository gives you version control - a safe way to revert to an old version of your code if you need to. This makes it all the easier to experiment with you code. The easiest way to setup and learn git is on help.github.com (see next).
Github.com - If you are going to be a developer, you'll need a github account and get good at using github. Set up a free account. There are over a millions users and even more repositories. Follow a couple and contribute. The great thing is that you don't always have to contribute code. Even documentation is welcomed. 
Dropbox.com - Set up a free account and set it up on your laptop. You can also set it up on your phone and tablet, though this is optional. Do NOT develop code in your dropbox folder. Instead use git on your local hard drive and github. What you'll be using dropbox for cheap web hosting of your code. Put a file in the public folder  (video) and you'll then be able to access that file from the web. Very handy for testing on phones and tablets or sharing with a friend.
Text editor - If you are coding you'll need a text editor. You can spend lots of money but no need to do that yet. If you want to take the full plunge get the free IDE called Eclipse. But for now, all you probably need is something like NotePad++ for windows. 
HTML - Learn very, very simple HTML. To start all you need to know is how to type in a simple page with a title and a couple of paragraphs. HTML5 will come later. 
jQueryMobile.com - You can write a mobile app in 4 hours using jQueryMobile. Really. It won't very graphic, but few non-games are. All you need is a web browser and a text editor (not Microsoft Word). The quick start guide should be enough, but there are many tutorials on jQueryMobile. When you have finished writing it, post it to github. Then do one a week (see Part 2).
blog - Any blogging service will do. I use blogger.com and posterous.com. Others use wordpress, typepad or tumblr.  Every day - repeat - every day write a short post about what you did to learn mobile apps that day. While not many people may read your blog, you need a place to capture what you are learning and share it with others. Your potential employer will also see that you are serious by working everyday.
twitter.com - You'll need a twitter account. Write up what you are trying to do in the profile. Tweet daily. Point out good tutorials you've found. Highlight good blog posts you've written. Thank people. You'll also find a few people to follow. Use the hashtag #learnmobile so others can follow your tweets - and maybe develop a community of learners.

When you do all of the above, you will start building up some experience. People will know that you are serious about learning how to become a mobile developer. You'll also have your first app published on github. And hopefully, your contribution to another github project was accepted which you now add to your resume.

You should be able to start all of the above within 8 hours. Perhaps 4. And at no cost. You'll be on your way.

Keep at it everyday. Everyday use git. Every day write some code from a tutorial or your own project using git and github. Everyday blog about what tutorials you read, what you coded and what you learned. Everyday tweet about your blog post or highlight a good tutorial. Some days you may have several blog posts and tweets. Everyday.

After you do the above, you are ready for Part 2.

Intro | Part 1 | Part 2 | Part 3 | Part 4