Tutorial: Node.js and MongoDB JSON REST API server with Mongoskin and Express.js

Tutorial: building a JSON REST API server with Node.js and MongoDB using Mongoskin and Express.js utilizing Mocha and Super Agent for BDD/TDD.

Update3: Expess 4 version of this tutorial is available at Express.js 4, Node.js and MongoDB REST API Tutorial, and github.com/azat-co/rest-api-express (master branch). This tutorial will work with Express 3.x.

Update2: “Mongoskin removed ‘db.collection.id’ and added some actionById methods” from this pull request with this code changes. To use the code in this post, just install an older version of Mongoskin (0.5.0?). The code in the GitHub will work with Mongoskin 1.3.20.

Update2: “Mongoskin removed ‘db.collection.id’ and added some actionById methods” from this pull request with this code changes. To use the code in this post, just install an older version of Mongoskin (0.5.0?)

Update: use the enhanced code from this repository github.com/azat-co/rest-api-express (express3 branch).

Note: This text is a part of Express.js Guide: The Comprehensive Book on Express.js.

This tutorial will walk you through writing test using the Mocha and Super Agent libraries and then use them in a test-driven development manner to build a Node.js free JSON REST API server utilizing Express.js framework and Mongoskin library for MongoDB. In this REST API server, we’ll perform create, read, update and delete (CRUD) operations and harness Express.js middleware concept with app.param() and app.use() methods.

Continue reading “Tutorial: Node.js and MongoDB JSON REST API server with Mongoskin and Express.js”

NodeConf 2013

I’m just back from NodeConf 2013 summer camp at Walker Creek Ranch in Petaluma which is in Marin County, California just a half-hour north of San Francisco.

I’m just back from NodeConf 2013 summer camp at Walker Creek Ranch in Petaluma which is in Marin County, California just a half-hour north of San Francisco.

Continue reading “NodeConf 2013”

The Factory of Good Habits

Recently, I’ve read two great books about habits and it struck me: the difference between senior and junior software engineers is not only in the size of their paycheck; most importantly it’s in their habits!

Recently, I’ve read two great books about habits and it struck me: the difference between senior and junior software engineers is not only in the size of their paycheck; most importantly it’s in their habits!

Continue reading “The Factory of Good Habits”

First Six Months with Storify

Time goes fast! It’s been six months since I’ve joined Storify in December 2012. Many cool things have happened, including a bunch of new releases, a company retreat and a hackweek.

Time goes fast! It’s been six months since I’ve joined Storify in December 2012. Many cool things have happened, including a bunch of new releases, a company retreat and a hackweek.

Continue reading “First Six Months with Storify”

LeanPub Compilation and Sanitizing Tool Written in Node.js

LeanPub Tool — Node.js script for sanitizing and compiling a book’s manuscript. LeanPub uses multi-file book format and a special markdown markup (that confuses Marked app). I found that to convert to MS Word (for editing and other needs) this workflow is the best: 1. run leanpub-tool.js with node.js (node leanpub-tool.js) 2. open file in Marked app and convert to HTML 3. open HTML in MS Word and enjoy.

LeanPub is an awesome publishing platform, but often we need to communicate with other  team members involved in the book production, e.g., content and copy editors. In such times, I’ve learned that Guy Kawasaki was right — when we suggested in his book APE: Author, Publisher, Entrepreneur — that author must use MS Word!

The problem is that LeanPub uses multi-file book format and a special markdown markup (that confuses Marked app). I was wrapping up a new revision of the Rapid Prototyping with JS book and previous experience of handing a txt file to an editor was poor. Luckily, Node.js came to help! Through some trail and error attempts, I found this workflow to be the best for converting LeanPub manuscript to a one MS Word file (for editing and other needs):

  1. Run leanpub-tool.js with Node.js (node leanpub-tool.js)
  2. Open file in Marked app and convert to HTML
  3. Open HTML in MS Word and enjoy.

The full code of leanpub-tool.js which is also available at https://gist.github.com/azat-co/5674684:


var fs = require('fs');
//change these to YOUR filenames
//probably we can read it from Book.txt but I was too lazy to implement it :-) and somebody might want to compile only sertain parts of the book
var book =[
"frontmatter.txt",
"mainmatter.txt",
"part1.txt",
"chapter1.txt",
"part2.txt",
"chapter2.txt",
"backmatter.txt",
"acknowledgment.txt"
];
 
var sanitizeText = [
  '{frontmatter}',
  '{backmatter}',
  '{mainmatter}',
  "I>## Note",
  "T>## Tip",
  "W>## Warning",
  '{lang="javascript"}',
  '{:lang="javascript"}',
  '{lang="css"}',
  '{:lang="css"}',
  '{lang="json"}',
  '{lang="ruby"}',
  '{lang="php"}',
  '{lang="text"}',
  '{lang="bash"}',
  '{lang="html"}',
  "I>",
  "T>",
  "W>"
]
 
 
var str = '';
//read files
book.forEach(function(chapter){
  str +=  fs.readFileSync(chapter,'utf8');
})
//sanitize LeanPub specific Markdown tags
sanitizeText.forEach(function(text){
//  console.log(text)
  //this loops through while there is not matches
  while (new RegExp (text).test(str)) {
    str = str.replace(text,'','gm')
  };
})
 
//write output to a file
fs.writeFileSync('leanpub-tool.txt',str);

Day 6 of StartupBus 2013: All-Star Finals

On the sixth day six after departing from San Francisco, buspreneurs gathered to socialize and to let steam off at a happy hour organized by Twillio. GhostPost brought a projector to the bar to show their anonymous live chat. The funny story is that the projector was sold to them by of a fellow busmate (from the Grassroots.io team) whose Austin-based friend the Grassroots guy to handle the Craigslist projector ad. :-) Apparently the GhostPost team weren’t happy with their defeat (and who would be?) and hustled their way through the competition to become an All-Star wildcard — and by the evening they were indeed selected as a wildcard!

On the sixth day six after departing from San Francisco, buspreneurs gathered to socialize and to let steam off at a happy hour organized by Twillio. GhostPost brought a projector to the bar to show their anonymous live chat. The funny story is that the projector was sold to them by of a fellow busmate (from the Grassroots.io team) whose Austin-based friend the Grassroots guy to handle the Craigslist projector ad. :-) Apparently the GhostPost team weren’t happy with their defeat (and who would be?) and hustled their way through the competition to become an All-Star wildcard — and by the evening they were indeed selected as a wildcard!

StartupBus 2013 West Coast - random stop
StartupBus 2013 West Coast – random stop

Rackspace bought out the Champions sports bar in downtown Austin. GhostPost and other teams pitched during the evening to Dave McCure, Robert Scobler, and other important startup personas. The sound quality wasn’t very good. Every now and then somebody would shush the drunk, happy and tired crowd, but that didn’t help much. Despite it being very entertaining to watch Dave McClure rip apart startups and Robert (because he saw the evolution during the span of 3 days) explain and sometime defend them — in the end the decision was the same. They announced that the winner was CareerMob, and the runner up was NextChaptr.

StartupBus 2013 — Dave McClure and Rober Scoble
StartupBus 2013 — Dave McClure and Rober Scoble

Summary of StartupBus 2013

Overall StartupBus is a great experience but I can’t say that it has changed my life. :-) There are similarities to a real startup life:

  • Scarcity of resources, balance of risks and trade-offs, ample creativity to solve problems
  • Building, motivating and selling the concept to your team while pitching your idea to judges
  • Human drama: communication issues, interactions among team members in close quarters, under stress, without enough sleep, etc.
  • Startup lifestyle: exhaustion, abundance of stress

But some things are far from the reality. Mainly, in an actual startup:

  • Founders can focus not only on consumer segment, but also on small business and/or enterprise customers. Obviously, due to the lack of time and resource constraints buspreneurs targeted consumer audience.
  • Team needs to be serious and to pick not just fun and sexy ideas to get the most buzz. Solid business models usually come from ugly and boring, though concrete and painful problems.
  • These days, anyone who wants to start up a business has full-time reliable and even speedy Internet access without having to get stranded in the middle of a desert or having your mobile hot-spot picking up Mexican cell phone carriers. :-)

My conclusion is that a StartupBus trip was a good experience, but it’s not exactly the same as building a real startup.

Real StartupBus Tattoo by @claco
Real StartupBus Tattoo by @claco

StartupBus 2013 Day 5: Finals

On the final day of the StartupBus 2013, Americas hackathon competition, the judges had to choose two teams out of the six. Then, out of those two, they would pick one winner and one runner up.

On the final day of the StartupBus 2013, Americas hackathon competition, the judges had to choose two teams out of the six. Then, out of those two, they would pick one winner and one runner up.

Team GhostPost.io at StartupBus 2013
Team GhostPost.io at StartupBus 2013

Here are the six finalists from the previous day (to read more about that day and semi-finals go to my post: StartupBus 2013: Day 4, Semi-Finals):

  1. Grassroots.io (SF): kick-starter for activism campaigns (e.g., FixTheDMCA.org)
  2. GhostPost.io (SF): anonymous chat
  3. uSupply.me (Mexico): marketplace for construction industry
  4. NextChaptr (Chicago): book publisher with a kick-starter model
  5. CareerMob (NYC): website that helps military professionals find their civilian career
  6. Cloudspotting (Mexico): draw on photos of clouds
Team Grassroots.io at StartupBus 2013
Team Grassroots.io at StartupBus 2013

Everybody else was allowed to sleep in till 10am. An unheard of luxury, which came in handy for people who didn’t sleep well for the past week and went partying on the previous night in downtown San Antonio.

Then our pack rode shuttle buses to the same place at Rackspace HQ. We weren’t very lucky because our driver got lost, took narrow back roads, and drove in circles really slowly (more on this later).

StartupBus 2013 hacking
StartupBus 2013 hacking

The pitches of almost all of the finalists improved greatly. I especially liked how much improved Grassroots.io’s pitch (I wasn’t able to find the video but here is the GoAnimate clip). Unfortunately, I couldn’t say the same about the Cloudspotting or GhostPost teams’ pitches. They just weren’t able to replicate the success of the previous night. :-( It felt like the fun aspect of the crowd cheering and support wasn’t there. Maybe the audience wasn’t surprised any more?!

After some deliberation Robert Scoble, the famous racker evangelist, announced the runner up: NextChaprt; and the winner: CareerMob! The latter decision was unexpected for a lot of people (you could see it on their faces), and many complained that CareerMob doesn’t have anything live (even a website), and has no business model whatsoever. I guess the charisma of the Air Force lieutenant made the pitch and the whole idea sound reassuring. :-)

Famous Briefskate.com prototype
Famous Briefskate.com prototype

It was time to wrap up and go to South by South West (SxSW) interactive festival in Austin, Texas. Sadly for our West Coast team and other random people who joined our bus, we had the same driver that we had in the morning. We got lost a few times again, took the longest detours back to the hotel and around Austin airport and its military base. When somebody finally gave Google Maps to the drive, we arrived to the Austin Convention Center. This marked the final stop of the bus part of StartupBus 2013 adventure. Virtually all of us pledged not to ride any type of buses for at least a few months. :-)

GhostPost.io infront of the judges
GhostPost.io infront of the judges

Photos by Ruben Lemmens

Paste and Match Style on Mac OS X

Of course there are alternative combinations to ⌘ + V to Past and Match style but they differ from application to application and hard to use even if you can remember them.

If you don’t like the default behavior in Mac OS X which paste text with its styles there is a way to fix it! I personally find it very annoying when I press command + V (⌘+V) and text is pasted with all the formatting from the original source. Suddenly my beautifully picked font in an email or an Evernote note is ruined. Email looks like a decorated Christmas tree.

Paste and Match Style Mac OS X Shortcut
Paste and Match Style Mac OS X Shortcut

Of course there are alternative combinations to ⌘ + V to Paste and Match style but they differ from application to application and hard to use even if you can remember them.

Go to you System Preferences, click on Keyboard Shortcuts, pick Application Shortcuts and add applications (or make an “All Applications” rule): http://cl.ly/image/2j0Y283a3W1N

StartupBus 2013: Day 4, Semi Finals

The competition was set up that there would be one winner and one runner up from the pitch competition, two winners from the alumni bus (NYC) and two winners from the score competition. They selected six out of twelve teams for the finals…

On day four of our StartupBus hackathon we arrived in San Antonio, Texas. Unlike on the previous days, we settled in a nice Four Points by Sheraton hotel. The West Coast bus came first, then right after us came the bus from Mexico City, representing the whole country of Mexico. Despite being exhausted, buspreneurs filled the hotel lobby with loud voices and cheers in English and Spanish. In a few hours, the rest of the buses arrived:

  • Chicago representing the Midwest,
  • Tampa representing the Southeast,
  • New York City representing the East Coast,
  • Alumni bus from NYC representing people who participated in the previous years competitions.

Because semi-finals and finals were supposed to take place on the next day, after the dinner pretty much all the teams kept on working till late at night.
The next day, after breakfast in the hotel, we (over 150 StartupBus participants) were transported to the Rackspace HQ, a.k.a. The Mothership. It is situated in San Antonio, and was just a short ride from the hotel. Although our driver managed to get lost due to roads blocked by construction. The Rackspace HQ building is a huge box-like structure resembling a shopping mall. It is surrounded by parking lots and construction (they moved here recently) in a suburban area. We were met like rockstars, but were told not to explore anything outside of the huge hangar-like room. Knowing that most hackers disrespect any rules, Rackspace management wisely put lots of employees and security guards around us. The lunch food was subpar. Elias Bizannes (the founder of StartupBus) and other judges listened to each of more than 40 teams pitch individually. Here is a list of the teams:

StartupBus 2013 North Americacs
StartupBus 2013 North Americacs: facebook.com/startupbus
  • AdventureCo.de
  • BriefSkate
  • CareerMob
  • Chromatix
  • Cloudspotting
  • Coderswb
  • Deliverish
  • DrunkSpotting*
  • Dry Erase Web
  • Emplify
  • Eventee
  • ExVersion
  • Fitchallenge
  • FlightShuffle
  • Friends Judging Friends
  • GhostPost.io
  • Gifdme
  • Grassroots.io
  • InstaLodger (alumni)
  • Jobber.io
  • MyBestRx (alumni)
  • NextChaptr
  • Nomscription
  • Ovrviews
  • Payvine
  • Portioned
  • Producers
  • Readin.gs
  • RepCheck (alumni)
  • SkillMeUp
  • Storedrobe
  • TagSet
  • Thumbtrotter
  • uSupply.me
  • Wrong Credit Score
  • Yaank (alumni)

More information on each team is available at StartupBus.com LeaderBoard.

  • DrunkSpotting was formed after the main competition on the way from San Antonio to Austin.

The judges looked at a few criteria such as working prototypes (or the lack thereof) and team commitment, and chose twelve teams. Here is the list of the finalists and the descriptions of their projects/startups:

  1. CareerMob (NYC): website that helps military professionals to find their civilian career
  2. Usupply.me (Mexico): marketplace for construction industry)
  3. NextChaptr (Chicago): book publisher with a kick starter model
  4. Grassroots.io (SF): kick starter for activism campaigns (e.g., [FixTheDMCA.org]http://www.fixthedmca.org/)
  5. GhostPost (SF): anonymous chat
  6. Coders with out borders (SF): code for a good cause/experience
  7. Deliverish (NYC): marketplace for delivery tasks
  8. Portioned (Chicago): single portion food delivery
  9. Readin.gs (NYC): curated book recommendation and store service
  10. Cloudspotting (Mexico): draw on photos of clouds
  11. Exversion (NYC): GitHub for data
  12. Gifdme (Chicago): animated way to share emotions via GIFs.

Next, those twelve teams pitched on-stage to Robert Scoble of Rackspace, Nicholas Longo of CoffeeCup software and GeekDome, and other judges from sponsors such as Elance and Rackspace. That was probably the most entertaining part of the whole competition! GhostPost and Cloudspotting had killer presentations. The former had a live anonymous chat on huge screens with all the unfiltered messages from the audience shown in real-time. GhostPost grabbed everybody’s attention when Elias read a Cease and Desist email, and people fell in love with GhostPost’s beautifully crafted PAC-MAN-like avatars. The latter team spokesperson can easily perform stand-up comedy: e.g., he said that Cloudspotting is not the first company to make money on clouds (Google, Rackspace, Dropbox). To appreciate the joke, you need to know that Cloudspotting allows users to draw on pictures of clouds and share their creations. :-)

The competition was set up that there would be one winner and one runner up from the pitch competition, two winners from the alumni bus (NYC) and two winners from the score competition. They selected six out of twelve teams for the finals:

  1. Grassroots.io
  2. NextChaptr
  3. CareerMob
  4. GhostPost
  5. Cloudspotting
  6. Usupply.me

Tired but relieved (for most of the people the competition was over), we went on to celebrate. The six finalists kept on working for the second sleepless night.

Read more about the finals and the conclusion summary in my next blog post.

Look at social story on Storify storify.com/azat_co/startupbus-and-sxsw.

Asynchronicity in Node.js

One of the biggest advantages of using Node.js over Python or Ruby is that Node has a non-blocking I/O mechanism. To illustrate this let me use an example of a line in a Starbucks coffeeshop. Let’s pretend that each person standing in line for a drink is a task, and everything behind the counter — cashier, register, barista — is a server or server application. When we order a cup of regular drip coffee, like Pike, or hot tea, like Earl Grey, the barista makes it. While the whole line waits while that drink is made, and the person is charged the appropriate amount…

Non-Blocking I/O

One of the biggest advantages of using Node.js over Python or Ruby is that Node has a non-blocking I/O mechanism. To illustrate this, let me use an example of a line in a Starbucks coffee shop. Let’s pretend that each person standing in line for a drink is a task, and everything behind the counter — cashier, register, barista — is a server or server application. When we order a cup of regular drip coffee, like Pike, or hot tea, like Earl Grey, the barista makes it. The whole line waits while that drink is made, and the person is charged the appropriate amount.

Asynchronicity in Node.js
Asynchronicity in Node.js

Of course, we know that these kinds of drinks are easy to make; just pour the liquid and it’s done. But what about those fancy choco-mocha-frappe-latte-soy-decafs? What if everybody in line decides to order these time-consuming drinks? The line will be held up by each order, and it will grow longer and longer. The manager of the coffee shop will have to add more registers and put more baristas to work (or even stand behind the register him/herself). This is not good, right? But this is how virtually all server-side technologies work, except Node. Node is like a real Starbucks. When you order something, the barista yells the order to the other employee, and you leave the register. Another person gives their order while you wait for your state-of-the-art eye-opener in a paper cup. The line moves, the processes are executed asynchronously and without blocking the queue by waiting.

This is why Node.js blows everything else away (except maybe low-level C/C++) in terms of performance and scalability. With Node, you just don’t need that many CPUs and servers to handle the load.

Asynchronous Way of Coding

Asynchronicity requires a different way of thinking for programmers familiar with Python, PHP, C or Ruby. It’s easy to introduce a bug unintentionally by forgetting to end the execution of the code with a proper return expression.

Here is a simple example illustrating this scenario:

var test = function (callback) {
  return callback();  
  console.log('test') //shouldn't be printed
}

var test2 = function(callback){
  callback();
  console.log('test2') //printed 3rd
}

test(function(){
  console.log('callback1') //printed first
  test2(function(){
  console.log('callback2') //printed 2nd
  })
});

If we don’t use return callback() and just use callback() our string test2 will be printed (test is not printed).

callback1
callback2
tes2

For fun I’ve added a setTimeout() delay for the callback2 string, and now the order has changed:

var test = function (callback) {
  return callback();  
  console.log('test') //shouldn't be printed
}

var test2 = function(callback){
  callback();
  console.log('test2') //printed 2nd
}

test(function(){
  console.log('callback1') //printed first
  test2(function(){
    setTimeout(function(){
      console.log('callback2') //printed 3rd
    },100)
  })
});

Prints:

callback1
tes2
callback2

The last example illustrates that the two functions are independent of each other and run in parallel. The faster function will finish sooner than the slower one. Going back to our Starbucks examples, you might get your drink faster than the other person who was in front of you in the line. Better for people, and better for programs! :-)

Startupbus Day 3: Texas

Our west coast bus was the first to arrive to San Antonio. Mexico City bus followed shortly and the lobby filled with sleep deprived 20 and 30 year-olds. Buses from Chicago, NYC and Tampa are arriving to Four Point as well. Teams plan to pull all-nighters to present tomorrow their startups at Rackspace for the semi-finals.

Today we finished the biggest leg of our trip, San Francisco, CA — San Antonio, TX.

Giant chili pepper, Las Cruses, NM
Giant chili pepper, Las Cruses, NM

We took photos with a giant chili pepper, drove by the Mexico border in El Paso, ate at K-Bob steak house, and arrived at Four Point by Sheraton in San Antonio, TX. There wasn’t anything out of ordinary on the bus. Teams worked hard last night trying to launch their MVPs. Many thanks go to our driver Joe for driving us safely and comfortably.

Our west coast bus was the first to arrive to San Antonio. Mexico City bus followed shortly and the lobby filled with sleep deprived 20 and 30 year-olds. Buses from Chicago, NYC and Tampa are arriving to Four Point as well. Teams plan to pull all-nighters to present tomorrow their startups at Rackspace for the semi-finals.

StartupBus Day 2: Arizona

The journey continues. We entered and crossed Arizona stopping for a late lunch in Tucson near University of Arizona campus. The weather was nice and everybody got a chance to stretch legs and grab quality food.

The journey continues. We entered and crossed Arizona stopping for a late lunch in Tucson near University of Arizona campus. The weather was nice and everybody got a chance to stretch legs and grab quality food.

StartupBus and SxSW

StartupBus is a national hackathon on the way to SxSW in Austin, TX. I’m participating with West Coast/SF team, there are buses from NYC, NY, Chicago, Tampa, FL and Mexico City, Mexico.

Storified by Azat· Mon, Mar 04 2013 16:47:39

Coders Without Border’s Open letter to Developer community. http://www.coderswb.com #StartupBus #WestCoast… http://fb.me/1CTtOY9O6Prateek Gupta
Open Letter to developer communitystartupbus.com , travelling from San Francisco to SXSW, Austin, TX at 70 miles per hour, through the Arizona desert with intermittent wi-…
Arizona: more than just old people, old dinosaur sculptures too #startupbus http://instagr.am/p/WdHoTFObh5/Craig Cannon
65 mph on a bus or 9 mph on a skateboard. #StartupBus #StartupBusSE http://yfrog.com/esr6asyjStartupBus Florida
No stop til’ NOLA. #StartupBus #StartupBusSE http://yfrog.com/h2czoyqfjStartupBus Florida
Check out the awesome #startupbus promo video from @nowthisnews about @thestartupbus – more coverage to come soon! http://jmg.im/W0J9vRTheStartupBus
This year’s @TheStartupBus website is now live; check out the live updating map, and explore! http://americas.startupbus.com/ #startupbusMikeCaprio(╯°□°)╯︵┻┻
Mobile hacking with @Verizon #LTE #MiFi http://speedtest.net/result/2551036993.png CC @TheStartupBusAzat Mardanov
Random guy wants to come on the @TheStartupBus. Here’s his audition. And yes, that is a tree on our bus http://pic.twitter.com/pRYQQIFHN2adam peruta
Our conductor, Ray, on @thestartupbus has been keeping us on track and motivated! http://pic.twitter.com/c5JRB5JQTqElance
Bus window whiteboards on the #startupbus @TheStartupBus http://pic.twitter.com/OzRyxyYfrPLate Labs
Stay for the night @thestartupbus (at San Diego Downtown Lodge) — http://path.com/p/1rhLMKAzat Mardanov
Burning midnight oil on @thestartupbus http://vine.co/v/bHWKwTJ213KAzat Mardanov
http://Coderswb.com @katescisel http://vine.co/v/bHWmrnYrmVBAzat Mardanov
Stephan got left, we returned and picked him up with beer http://vine.co/v/bHBUtJQm1L1Azat Mardanov
Falon takes the stage @thestartupbus http://vine.co/v/bXlXgOwZa1xAzat Mardanov
Departing @thestartupbus http://vine.co/v/bXlvME0hJJmAzat Mardanov
Coffee at the cycle place CC @thestartupbus http://vine.co/v/bXlMAdHwBuUAzat Mardanov
The bus driver on @thestartupbus stopped to help a lady change her tire. What a guy! http://pic.twitter.com/LklDDDPRoYElance
@elance @thestartupbus #startupbus #killinit #youkno #wego #cantstop #dontquit #killinitinthecode http://pic.twitter.com/MPGe2tgId2Ray Land
Thanks a lot @Astreets for the feedback on @GhostPostApp at @TheStartupBusStefan Broda
@justinisaf @gsvitak @davidykay @gregdrm DOINNNN WERKKKKKK! On @TheStartupBus #startupbus @EliasBiz on the beatz http://pic.twitter.com/UtD9ftIQOFRay Land
Constantly supporting innovation and entrepreneurs – @LaunchpadLA housing the @TheStartupBus http://pic.twitter.com/sFhj4kkgEkMeredith Birchfield
We on the @TheStartupBus. It’s name is Fred. Or Snufulupugus, depending who you ask. #startupbuschi http://pic.twitter.com/z36C3GhGT9Zachary Price
Late start for the alumni @TheStartupBus. But our conductor ray is leading us forward http://pic.twitter.com/WEo1R92mdjadam peruta
The bus is ready #westcoast #first @TheStartupBus http://pic.twitter.com/Ez0kmqjC3uAzat Mardanov
Startup Bus is Not a Joke | Web App LogWhen my co-worker heard about StartupBus for the first time he thought that it was a joke. How crazy is to put yourself on a bus with str…
Good luck to anybody gearing up to get on @TheStartupBus this week. Red Bull, and a power strip. You’re welcome.Adam Kerpelman
@thestartupbus kickoff party #startupbus (at @ffvc) [pic]: http://4sq.com/ZOqa7DJonathan Gottfried
Headed to @ffvc for the #StartupBus NYC kickoff very soon. @TheStartupBusCurtis Kline
going to pack for @TheStartupBus SF in an hour. Any #pro tips? Send them my way. #please #6DayTrip #flyingbackPrateek Gupta
Buspreneur @foursquare badge!!!! @TheStartupBus http://pic.twitter.com/nR5UVrBJ0xMikeCaprio(╯°□°)╯︵┻┻
photoPath
Getting ready for @thestartupbus and #SxSW #leanstartup #RPJS [pic] — http://path.com/p/17pfToAzat Mardanov
Hey hackers/designers, don’t miss the ride of your life on @TheStartupBus departing March 3 – apply today at http://bit.ly/nytmbusTheStartupBus
Stocking up NYC team with Vitamin Water.
Thanks @vitaminwater!! “@jonmarkgo An endless supply of @vitaminwater for @TheStartupBus NYC. Oh man I’m excited! http://pic.twitter.com/sqcU4zSejS”MikeCaprio(╯°□°)╯︵┻┻
And with Kind snacks.
Just got our final delicious food delivery for @TheStartupBus from @kindsnacks – thanks! http://pic.twitter.com/aIq36Z2PVYJonathan Gottfried
Thank you @pretzelcrisps for making @TheStartupBus NYC so much more delicious! http://pic.twitter.com/muvwIGeU5ZJonathan Gottfried
I’m pregaming @TheStartupBus with Dane! http://pic.twitter.com/Ki8uWU1Ic5Jonathan Gottfried
Wondering how to prepare for @TheStartupBus? Here’s a list of suggested items to bring on the trip! https://plus.google.com/114275248428793781779/posts/cNh6YLnCH83MikeCaprio(╯°□°)╯︵┻┻
Riding @TheStartupBus again this year out of Tampa.Joe DeSetto
Mexican teams have 3 days to conceive, build and launch companies at 60mph @TheStartupBus @StartupBusMX Cc. @l1452¿Cintli?
Holy crap. I’m on @TheStartupBus. Cannot wait to meet some people and code like a mofo.Rui
Excited some new gear came in before I left for @thestartupbus http://pic.twitter.com/7FoDSOD3cmJosh Seefried
StartupBus 2013 Promises More Excitement, Bigger Surprises http://bit.ly/15RcxZv via @TheStartupBusAzat Mardanov
NYC team is getting all exited as well.
@azat_co @thestartupbus Yeah! I’m on the NYC #StartupBus. You??Erica Swallow
West Coast team got some nice stuff thanks to @prtkgpt.
@prtkgpt @jonmarkgo @TheStartupBus @GranolaLab @michiamoalice Try Eat24 because you know what they say…once you try us, after ya love us!Eat24
@jonmarkgo @thestartupbus @granolalab @michiamoalice Haha! We got @eat24 on our side. #BeatThatPrateek Gupta
StartupBusWe’re building an entrepreneurial ecosystem through unique experiences and inspirational connections. Our vision is to empower the people…

To the story-tellers, it starts with an Australian and a pub (fun story). To the people watching, it’s a annual competition that brings out tribal-like rivalries. But to anyone part of the experience, it’s a personal challenge with a lifelong impact.

StartupBus has a long term vision to encourage the creation of successful startups that improve our world. We do that, not by building startup’s directly but developing a global community of some of the smartest people in technology, bonded by one of the most intense learning experiences they will ever go through.

GhostPost Twitter account was blocked because they were tweeting to random people too frequently.

Coders Without Borders (coderswb.com) launched their website and PR campaign. They’ve got over 200 likes on the MSFT BizPark Facebook post!

Grassroots.io is also making good progress. Their campaign against making cell phone unlocking illegal is gaining momentum with over 115,000 signed-up.

Tonight we’ve stayed in Americas Best Value Inn in Las Cruces, NM. The hotel hosts are very hospitable. They made a special sign for us, arranged for mid-night snacks and drove Falon and Ruben to Sonic to get us dinner! Such an upgrade with a swimming pool and gym over our last night’s downtown San Diego motel.

We use GroupMe for text messaging buspreneurs, it’s an amazing tool.

Checkout our photos and tweets at storify.com/azat_co/startupbus-and-sxsw.

StartupBus Day 1

We’ve started at Falon’s house in San Francisco, CA, got awesome coffee in a cycling shop and pitched all the way till the stop at Walmart in Los Banos, CA. We broke into team and got supplies (neck pillows, fruits and booze) and left without one buspreneur!

We’ve started at Falon’s house in San Francisco, CA, got awesome coffee in a cycling shop and pitched all the way till the stop at Walmart in Los Banos, CA. We broke into team and got supplies (neck pillows, fruits and booze) and left without one buspreneur!

Next stop was at LaunchPad LA in San Diego’s beautiful Santa Monica. There were mentor sessions and pizza.

At 9pm were made it to San Diego and stopped at Downtown Lodge motel.

So far we have three team on the bus:

  • Grassroots — kick starter for kickstarters.
  • Coderswb (without borders) — teach coding for an experience.
  • GhostPost — anonymous geo-chat.

Thanks to 24eat for the dinner!

Startup Bus is Not a Joke

When my co-worker heard about StartupBus for the first time he thought that it was a joke. How crazy is to put yourself on a bus with strangers and try to hack together functional prototype without reliable Internet, time, outside help. But StartupBus is not a joke! Although it might have started as one in 2010. The main reason is to present something good and valuable to other people at SxSW in Ausitn, TX. You would be surprised how much can be accomplished in a close quarters riding a bus at 60mph. Here are the finalists

Storify story is at storify.com/azat_co/startupbus-and-sxsw.

When my co-worker heard about StartupBus for the first time he thought that it was a joke. How crazy is to put yourself on a bus with strangers and try to hack together functional prototype without reliable Internet, time, outside help. But StartupBus is not a joke! Although it might have started as one in 2010. The main reason is to present something good and valuable to other people at SxSW in Ausitn, TX. You would be surprised how much can be accomplished in a close quarters riding a bus at 60mph. Here are the finalists

StartupBus 2013
StartupBus 2013

Last year I was offered to join the New Orleans Startupbus team, but I decided not to go because Gizmo was about to finish 500 Startup accelerator program and it required my presence in Mountain View, CA. This year I’m going with a West Coast team and we’re departing tomorrow morning, March 3rd, from Fillmore in San Francisco, CA. There are three other buses going from NYC, NY, Mexico City, Mexico, Chicago, IL and Tampa, FL. We’ll have only 72 hours to form teams, take our idea to prototypes, test them on real customers and market the product. We got supplies from sponsors (24eat, Kind, VitaminWater, etc.) and media coverage from Venturebeat — Epic hack trip: Be one of 50 to join me on the Startup Bus.

Cerealize startup whose team was on SF bus won last year’s competition. So pressure is on our West Coast bus to defend the title. :-) The other 2012 finalists and StartupBus TV.

Here is our very intense schedule:

  1. Sunday, 3/3: SF -> San Diego
    We will be leaving SF on Sunday 3/3, stay in San Diego for the night.
  2. Monday, 3/4: San Diego -> New Mexico
    On Monday 3/4 we will drive through Arizona to New Mexico where we will spend the night.
  3. Tuesday, 3/5: New Mexico -> San Antonio
    On Tuesday 3/5 we will end up in San Antonio for the night.
  4. Wednesday, 3/6: San Antonio Semifinals
    Semifinals will be Wed 3/6 in San Antonio where we will spend the night.
  5. Thursday, 3/7: San Antonio -> Austin
    On Thursday, 3/7 everyone will be shuttled to Austin where semi-finalists will have time to prepare for Grand Finals.
  6. Friday, 3/8: Austin Grand Finals
    Grand Finals will be in Austin on Friday 3/8.

I’ll try to blog once a day about major events, help team with technical implementation and engineering. For live coverage, I also created Storify story — storify.com/azat_co/startupbus-and-sxsw, and will be adding the most interesting tweets, Instagram photos and vine videos.

My First Week At Storify

Last week I joined Storify — a destination for curated social media news. Storify helps you sort through the noise to find the voices online that matter.

Last week I joined Storify — a destination for curated social media news. Storify helps you sort through the noise to find the voices online that matter. To find more about Storify take a look at the guided tour.

Storify co-founder Burt and I met a couple months ago for the first time and I’m glad that we did. There were three main reasons for me to come on board: great team, awesome product and company vision, and cool tech stack that I’m passionate about: Node.js+Express+MongoDB.

Storify on Nodejs.org
Storify on Nodejs.org

The first week at Storify exceeded my expectations! So far there were: 4 team lunches, one birthday party, two (!) break-ins. In addition, I’ve worked on the front-page on my second day and had a chance to SSH to production servers.

A few word about the office, besides free snacks and espresso and being close to everything, there are two other startups, Buffer and HomeLight. The funny thing is that I’ve discovered and fallen in love with Buffer just a few weeks ago and now I’ve met with Leo and sit next to their brilliant team!

By the way, Storify is hiring bright minds: Operations Engineer and Front-End Engineer. If you want to do work on interesting things check out full job description.

Most Common Technical Questions for Early-Stage Startups

A lot of people like to pick my brain on technical things related to early stage startups, e.g., what framework to use, how long will it take to build an app or a website, should I hire or outsource. I decided to organize my answers to the most common technical questions in this post:

A lot of people like to pick my brain on technical things related to early stage startups, e.g., what framework to use, how long will it take to build an app or a website, should I hire or outsource. I decided to organize my answers to the most common technical questions in this post:

  • Don’t outsource your core product. Outsourcing to a digital agency is the best way to spend your money fast and usually fruitlessly.
  • Use frameworks, don’t write trivial things like URL parsers from scratch.
  • Use available solutions to your none-core components. Things like: CMS, blog, analytics, landing page, forum, version-control, bug-tracking/customer feedback, project management, etc.
  • Use PaaS or IaaS. Don’t use IaaS unless you really need to, for example when PaaS becomes cost prohibitive;
  • Make mobile your first initiative, if and when it makes sense for your business; don’t even build a website if mobile app is your bread and butter!
  • Code snippet: Learn Programming
    Code Snippet: Learn Programming
  • Use social connect APIs for smooth user on-boarding, most of your early adopter probably have at least Facebook or Twitter accounts; don’t make them type their emails and remember passwords.
  • Use the most appropriate programming language don’t rely on your geeky “guru” friend’s advice that programming language is a matter of personal preference, to go with PHP, or that Ruby on Rails and Node.js are just a fads.
  • Don’t over-rely on remote developers. It often leads to miscommunication; your teams will work longer, will have to spend more time and money; also, not everybody is disciplined well enough to work remotely without social interaction and direct supervision.
  • Don’t over-rely on part-time developers. It will take longer to execute, the code will be less efficient due to distractions and as a result harder to maintain and more expensive to run in the future.
  • Learn programming. Business co-founders without any programming knowledge will have a hard time understanding trade-off in features and available resources; expect longer sprint meetings and leap of trust between technical and business people.
  • Don’t have more that one language for your core-product on a prototype stage because code is not an asset, but a liability and maintaining fragmented codebase could lead to a disaster.
  • Start from scratch for your core-product or refactor your code often if you or your team are still learning a language or a framework; the longer you keep old spaghetti code the harder it will be to come back to fix it later.
  • Use Test-Driven Development and Pair-Programming.
  • Use peers and mentors help/feedback from fellow founders, programmer friends on meet-ups and at the office.
  • Involve developers in customer development process. Tech people just love to build things for the sake of building something complicated. It’s so hard to practice Lean Startup methodology, because you need a lot of self-discipline. And it’s just so tempting to go to your basement for 6 months, into your hacker/coding nirvana mode, instead of doing endless customer interview, landing pages, mock-ups, paper prototypes and face website! The problem is that you’ll usually end up with another useless app or website. I had similar a phat startup experience with what later became open-sourced project http://openList.co.

Best of the web goodies for agile web development, startups and Lean Startup startups:

If you like this post and want to lean more about building your web or mobile app using the latest tech and agile practices check out my new book on how to take your idea to a prototype with JavaScript, Node.js and MongoDB — Rapid Prototyping with JS.

LaunchRock vs KickoffLabs

KickoffLabs is a winner, in my humble opinion. I picked KickoffLabs for my Rapid Prototyping with JS book’s landing page because KickoffLabs offers more functionality than LaunchRock does. Although LaunchRock has better user interface interface and less clunky user experience.

UPDATE: KickoffLabs team kindly gave me one month worth of their service as a token of appreciation for spreading the word about them, I don’t think this in any way affected my review.

Tl;Dr

KickoffLabs is a winner, in my humble opinion. I picked KickoffLabs for my Rapid Prototyping with JS book’s landing page because KickoffLabs offers more functionality than LaunchRock does. Although LaunchRock has better user interface interface and less clunky user experience.

If you’re still bulging your own landing pages for whatever you’re launching, e.g., books, startups, apps, stop right now! Yes, I know, it’s not a big deal to throw together some PHP or Ruby on Rails, hook up email sign-up form and Google Analytics, and maybe even tinker with the design a little bit. Landing pages are all trivial but could be very time consuming especially if you’re a product perfectionist like I am. Lean Startup teaches us not to spend 10–40 hours putting together a landing page if there are solutions like LaunchRock, KickoffLabs and Unbounce!

LaunchRock

LaunchRock has seamless UI/UX
LaunchRock has seamless UI/UX

I’ve tried LaunchRock before they had a new design and multiple-site support, which is sadly unavailable for existing accounts, for CrowdSFX.

Pros:

  • easy step-by-step set-up and configuration;
  • user friendly design with live preview;
  • no hard selling.

Cons:

  • limited functionality and configuration;
  • no multiple-site supports for existing users.

KickoffLabs

KickoffLabs Dashboard is somewhat clunky
KickoffLabs Dashboard is somewhat clunky

Because I couldn’t set up new landing page with the existing account and I didn’t want to mess up with Google App setting up a separate email account for Rapid Prototyping with JS book website, I decided to try out KickoffLabs. I’ve heard about KickoffLabs from my designer friend, and she said that it had more features than LaunchRock, that’s even better I thought!

Setting up a landing page on KickoffLabs has started all right, but soon I realized that in order to get anything decent out of KickoffLabs service I needed to upgrade to a paid account. I went with the basic paid account which is $29/mo and got Google Analytics support, custom domain, no branding and something else. Google Analytics and custom domains are provided for free at LaunchRock, so it was sad to discover that I have to pay for those features at KickoffLabs.

Pros:

  • more features than LaunchRock;
  • easily customizable looks and feel;
  • free themes;
  • support multiple-sites.

Cons:

  • try to hard up-sell you on basic features like Google Analytics and custom domains (SRSLY?!);
  • some themes rely heavily on Twitter Bootstrap look and feel;
  • clunky user interface, easy to get lose in screens and menus.

In the end, I ended up using paid KickoffLabs account, for Rapid Prototyping with JS book with the unpaid old version of LaunchRock, for CrowdSFX project. Maybe I’ll try Unbounce next and write about it as well. No matter what service you choice to go with, just do NOT do your landing pages from scratch, or Gods of the Lean Startup movement will punish you! JK.

Follow up read on The Next Web — KickoffLabs beats LaunchRock out of the gate, throwing stones on the way.

PS: Scott Watermasysk, the founder of KickoffLabs, promised me a free month of service for this blog post. Let’s see if he keeps his promises :)

What We’ve Learned From Teaching the Trainings

A couple months ago, the team of StartupMonthly: Yuri Rabinovich and Vadim Slavin as instructors and facilitators, Micah McGraw as an assistant (thanks Micah!), and I as an instructor and author, ran another class of my Rapid Prototyping with JavaScript and NodeJS training.

From an idea to a prototype
Yuri Rabinovich – From an idea to a prototype

The training is a two and a quarter day intensive hands-on workshop designed for advanced beginner and intermediate programmers. The main goal is to take an idea to a functional prototype, known as Minimal Viable Product or just MVP in Lean Startup circles.

We cover agile software and business methodologies (Lean Startup), front-end development with modern tools (LESS, Parse.com, Git) and frameworks (BackboneJS, jQuery, Twitter Bootstrap), deployment to production with Platform as a Service (PaaS) solutions (Heroku, Windows Azure) and back-end development with highly efficient and scalable technologies (Node.js, MongoDB). You can find the detailed curriculum of Rapid Prototyping with JavaScript training: on WebAppLog blog, and on StartupMonthly website.

Rapid Prototyping with JavaScript training
Rapid Prototyping with JavaScript training

We’ve learned a great deal from our students. Here are some of the most important, in my opinion, things:

  • Trainees with different levels of programming skills have different interests and different questions. We had trainees who were asking questions about running NodeJS stack in production and on the other hand there were people who were struggling with basic examples, e.g., making AJAX JavaScript call.
  • We still stayed competitive as a business venture even after reducing the discounts by $100 to $200, e.g., classes at Marakana are 1.5–2x more expensive; therefore rising prices don’t often affect the sales.
  • Having more time to market and sell is more important than having a lower price per seat. We came to this conclusion when higher prices and two months marketing yielded better results than lower price and one month of marketing. The brand awareness of the training is still insignificant to account for it. We mostly used [StartupMonthly] network and social events, a couple hundreds of dollars on Facebook ads, posting on Hacker News, and emailing to JavaScript dev groups.
  • Full refund policy didn’t turn out to be a disaster; in fact, it might have helped us to sell out the tickets. There was only one student who requested the refund simply because he didn’t expect that the training would be so intense and not suited for total beginners in web development.
  • Setting up dev environment is not an issue with a good step-by-step manual. Thanks to the lessons we’ve learned from out previous training, more about it in this blog post — Pilot Rapid Prototyping with JavaScript and NodeJS Class, I had beefed-up the manual with more robust tutorials; and only 2 trainees showed up for our optional Friday night pre-course session to get help with setting up a development environment on their machines. This is a true Reverse teaching approach.
  • Examples usually are not interesting to some of the students. We had a more engaging class when the students worked on their own ideas rather than code examples from the manual. Because examples are boring, people copy/paste code instead of writing it. Which leads to…
  • Copy/paste students complete assignments faster, but some of them have no idea how basic stuff works :-( It came to no-surprise that those trainees experienced barrage of difficulties when they tried to work on their own ideas or to implement additional functionality on top of the examples provided in the manual.
  • Advanced students skipped the second day, on which we had fun with NodeJS and MongoDB. Bummer! They were only interested in front-end JavaScript prototyping to complement their Ruby on Rails or Java back-end skills, hence the demand for separate front-end training exists.
Rapid Prototyping with JavaScript training
Rapid Prototyping with JavaScript training

Recently, I had a conversations with a new technical education company, Catalyst, which takes people from zero to employment; something similar to Dev Bootcamp but for JavaScript, including technologies like jQuery, CoffeeScript, NodeJS, etc.
We concluded that with materials widely available in a form of books, screencasts, GitHub repositories, and other mediums, learning technical skills come down to motivation. And motivation comes mostly from self-identity. For example, if I self-identify myself as a developer (or engineer, programmer, hacker), I could stay up all night fixing bugs, hacking around an obscure platform limitation, or trying to meet a deadline; however, if I wear an entrepreneurial hat, I’m more inclined to look at the bigger picture and either to defer the issue or to delegate it to a more experienced person. Therefore, entrepreneurial types usually less motivated to solve pure technical problems.

In our next iteration of the Rapid Prototyping with JavaScript and NodeJS trainings we plan to change our approach from education to coaching by:

  • Extending the format from two days to three to four days;
  • Accepting only those teams of two to three people or one-man-band-type individuals who already have an idea;
  • Packaging training materials in a self-study kit starting with a Rapid Prototyping with JavaScript book.

Students will work on their ideas while tapping into mentorship and experience of industry leading practices in both technical and Lean Startup methodologies. Exact dates and location of the next trainings will be announced on StartupMonthly website and on my blog — WebAppLog.com.

What is Accelerator.IO?

It’s a new social network for entrepreneurs with productivity tools based on Lean Startup methodology. Accelerator.IO is a niche social network similar to dribbble, which is for designers, and Forrst, which is for developers. Main focus for us, team of Accelerator.IO, is to provide valuable tools and content for startupers, founders, hackers and hustlers by connecting them with mentors, investors and most importantly fellow entrepreneurs across the globe. It is important to state that Accelerator.IO is not a competitor to AngelList but rather a complimentary tool. In fact, we leverage AngelList API to gather entrepreneurial information about users such as company name and website URL. In a sense Accelerator.IO is a global online co-working space where smart and bright minds collaborate and learn from each others failures and successes.

Accelerator.IO
Accelerator.IO

The key features of Accelerator.IO:

  • curated access and content moderation to keep discussions interesting and engaging;
  • access to global network of like-minded people;
  • leveraging AngelList API for easier adoption;
  • reliance on the over 6,000 people network of StartupMonthly fund and startup accelerator, across Silicon Valley/San Francisco, Middle East and Europe;
  • productivity tools for entrepreneurs and startups founders based on Lean Startup methodology.

Right now Accelerator.IO is in beta testing. We accept early access sign ups and beta testers at http://signup.accelerator.io.

Last but not least, if you are looking for a side-project to pick-up a new skills in web and mobile development, or get a free access to startup social events and get exposure on web — Accelerator.IO is accepting volunteers: JavaScript developers, front-end or back-end (we’ll teach you Node.js if you’re only front-end dev right now).