How to Enable Real-time Web Development

Startup Weekend puts your team in the same room for a reason: to facilitate real-time collaboration. With the right setup, your team can develop a web application live. Let’s assume you have a mixed team including developers, designers, teachers, and entrepreneurs. Assume everyone has a laptop on the same network. Using git and Ruby on Rails (the example can apply to any source control and web framework), you could have each laptop run a local web server. Everyone would be able to connect to any team member’s server and view the application as it changes with every code tweak. Now the developers can build the infrastructure and add styling, the designers can drop in images and icons, the teachers can edit the content, and the entrepreneurs can proofread the text and give feedback on design–all at the same time.

This is possible today because my team did it in a limited way. The designers didn’t run their own copies of the server but merely connected to one of the development machines to view the live changes. Teachers and entrepreneurs watched changes happen live as well, suggesting content and copy fixes in realtime. Furthermore, although some team members did not change the code directly, with minimal setup and training, I believe anyone should be able to easily update content or copy at least since web frameworks strive to separate logic from static content. With this level of collaboration, product development can happen in real-time.

Know Your Tools

Startup Weekend is a battle. There is no time to familiarize yourself with tools in the heat of battle so be prepared to use what you know best and leave everything else at home. Let me familiarize you with my weapons of choice:

  • Google Docs (real-time collaboration) – Essential to working well as a team
  • Skype (chat) – Sometimes you do need to IM even if you’re in the same room
  • Github (source code management) – Code as a team
  • Ruby on Rails (web framework) – Build your core apps quickly
  • Bootstrap (UI libraries) – Style your apps quickly
  • Heroku (cloud hosting platform) – Deploy your app quickly
  • Unbounce (landing pages) – Have a non-technical person setup a landing page
  • Prezi (presentations) – Powerpoint is for losers
  • Dropbox (cloud storage) – Share files within the team

The tools you use can depend on the composition of your team. For example, if you don’t have enough developers, consider just using Balsamiq to create mockups but spend more time on doing customer validation and putting together a winning business model. Tools will get better over time so stay ahead of the game by taking the time to checkout the latest and the greatest. If a tool just isn’t getting it done, it’s time to find a better one–if you can’t find it, maybe you should build it.

Startups and Education

I’ve always been passionate about education and last weekend I finally did something about it. I spent 54 hours at Startup Weekend EDU immersing myself in the world of EdTech. At first I didn’t know what to make of it: 56 random people from diverse backgrounds giving 1-minute startup pitches ranging from a browser plugin for MLA citations to a “Million Student March”. Since none of the 3 ideas I voted for made the cut, I was disheartened. Was my gut really that far off??? Fate had other ideas apparently because the team I eventually joined won the whole thing.

The prize is a meeting with Andreessen Horowitz, but I already got my money’s worth. I had a candid chat with my teammate Ben, a high school teacher from rural Mississippi, who effortlessly shot down all my over-engineered and ungrounded ideas on how to “fix education”. I was inspired by an elderly woman and her son from Minnesota who combined her original songs with animated caterpillars to teach music and concepts together. Most valuable of all, I learned that we each hold but fragments of complete solutions.

At the end of our presentation, we whipped out an iPad and quipped “There’s an app for that!”. It was our flourish, demonstrating that what we built works seamlessly on the iPad as well as the web. I am simultaneously proud and embarrassed about it. I’m proud that we were able to build something that would have taken many times longer in the past but embarrassed that we spent the majority of our time building and not thinking. One day, Startup Weekend will produce startups that will build products, mature in the market and get acquired all before the 54 hours are over. Until then, I’ll be working on building the tools and improving the education needed to get us there.

 

Open Source and The Evolution of Full-Text Search

Image

A few months back, I was asked to estimate how long it would take to implement scalable full-text search. I instinctively cringed and started to give my standard expectation-setting reply where references would be made to the complexity of Google and keywords like “stemming” would be floated like mines in the ocean. But I caught myself–instead, I replied “I have a few options in mind but let me do some research and get back to you”.

With Open Source software today, the pace of innovation is so fast that in many situations it makes sense to spend time researching the latest and the greatest even it’s only been months since you last checked. This was my third run-in with seach. The first was with Ferret and its infamous fling with the Rails community a few years back. Because of performance reasons, Engineyard added it to a naughty list (as seen above) and there it has remained. My second involved Sphinx. It took me months to write integration tests, tweak performance, and configure the options. With elasticsearch, it was like using an iPhone for the first time minus the $299 + 2-year contract.

What can Open Source do for me (an engineer)? Full-text search is one of many tools that has matured after years of iteration within the community. Instead of continuously reinventing the wheel, we help each other build ever more powerful components. In fact, joining the effort could mean as little as using software and reporting bugs. Open Source is also a great way to learn new techniques and shed bad habits. Because everyone is watching, transparency encourages accountability.

What can Open Source do for me (an entrepreneur)? In the past, Open Source software meant unreliable software to entrepreneurs. Today, it’s our ticket to a quick launch and fast iteration. Along with its commercial cousin, Software as a Service (Saas), Open Source can take care of many non-core parts of your application like talking to the database and rendering pages (Rails), sending emails (SendGrid), and now search (elasticsearch). No matter how impressive it would be for your engineers to build you a custom email solution, their time would likely be better spent figuring out how to get those pins to stick to the board.

Demystifying the Cloud

Image

One of the hottest buzz words in the Valley today is “Cloud”. You see it on accident-inducing billboards like Microsoft’s “Virtualization alone does not a cloud make”. You hear murmurs while grocery shopping like “Omg, Apple’s coming out w/ the iCloud–it’s gonna be sick!”. But before you call Microsoft for some meditation lessons or march down to the Apple store for an iCloud 5, take a reality check with me.

The Cloud will not make your web application better. If your application sucks now, it will not get any better in the Cloud because normally the code for your application will be exactly the same whether you run it on your own servers or on Amazon’s. There are many ways the Cloud can help your cause but most of these relate to infrastructure and not your core application.

The Cloud isn’t for everybody. There are cases where you shouldn’t leverage Cloud Computing. For example, if you’re feeling adventurous with the law and start a gambling website where latency and security are top concerns, it might be prudent to your buy your own hardware up front. With your own hardware, you always have more control.

The Cloud isn’t always cheaper. Depending on your needs, it might be more expensive to host your application in the Cloud than on your own hardware. For example, Amazon’s rates for various instance sizes scales with CPU and memory. In many cases, your application will need some of the more powerful and expensive instances. At some point, it will make more sense to ‘buy’ than to ‘rent’ these instances.

Some of the hype is true.

What can Cloud do for me (an engineer)? The Cloud allows web developers to abstract further away from the hardware we see as less predictable and more frustrating than code. Just as programmers have moved beyond writing less code (think 70s and punch-cards) and beyond worrying about memory allocation (think coding in C), the Cloud allows us to worry less about infrastructure. The Cloud allows us to easily setup as many environments as we need for our code. For example, in a typical web startup, you probably need a “staging” environment where developers can experiment, a “qa” environment where QA can verify release candidates, and a “production” environment for the real deal. Depending on your needs, there can be other variations of code + data required (e.g. a “sandbox” environment for partners), but the Cloud, in conjunction with services like Engineyard, gives us the ability to easily manage this complexity. The Cloud helps engineers focus on the important stuff.

What can Cloud do for me (an entrepreneur)? The Cloud is a driving force for lowering the barrier of entry for new web-based technology. More importantly, the lower costs allow entrepreneurs to test ideas overnight with practically beer money. In my first startup 5 years ago, we paid over six figures up front to buy our own servers. Today, you could launch for 1000s if not 100s of dollars a month. Beyond the initial phase where we can quickly test our ideas, the Cloud also allows us to scale our application and business if the architecture is designed well. With proper planning and frameworks like Ruby on Rails, entrepreneurs can give birth to ideas and help them mature into a business or die a quick death. Yes, “fail early and fail often” is brought to you inexpensively by the Cloud.

The Cloud means progress for engineers and entrepreneurs. It can mean the difference between evaluating 1 or 10 ideas a year by reducing development time and costs. With a potential order-of-magnitude boost in the evolution of ideas, we are moving forward indeed.