Hello Posterous!

We took advantage of the Wordpress importer to migrate this blog. Not quite the same as flipping a switch, but overall, quite painless.

Definitely worthwhile, with one less moving part to worry about in our infrastructure. And awesome features like post by email.

Sent from my iPhone

Posted by

Comments [0]

Mixing in MongoDB

I have started using MongoDB for specific use cases in production. I don't see the world in black and white, and neither should you. My goal in writing this post is to note down the rationale and list some gotchas when using it with MongoMapper.

MongoDB provides document-oriented storage, with replication, indexing and rich query support. It blends aspects of distributed key-value stores by keeping most of the data in memory, pulls in fine-grained indexing and query language reminiscent of relational databases, provides map-reduce support for data processing similar to Big Table, while optimizing for fast in-place modifications. In the near term, it will provide horizontal scaling and sharding.

The tradeoff for MongoDB is in lack of transactions and being not fully ACID.  This means MongoDB does not offer single-server durability. Data is only eventually consistent. Due to filesystem operational choices (fsync vs. append-only writes, commit log, etc.) MongoDB can lose data during hard server loss.

Realizing all theses aspects, why did I choose to go with MongoDB?

Read the rest of this post »

Filed under  //

Posted by

Comments [1]

Twilio on Rails

A few weeks ago, I looked up Twilio in conjunction with a telephony project. I was intrigued by the promise of a simple REST web API for building SMS and voice based interactions within web apps. In prototyping, I ended up developing a Rails plugin called Twilioflow which allows simplified development and testing of telephony apps.

Having spent some time at AT&T/Lucent Bell Labs, I had heard my share of war stories from the programmers and managers who worked on the venerable Audix system. From that perspective, Twilio is yet another example of creative destruction made possible by improvements in the general purpose computing platform coupled with an extensible network protocol (HTTP). Operationally, Twilio goes even further by harnessing Amazon's EC2 infrastructure and we can be sure they have numerous other tricks up their sleeve.

Read the rest of this post »

Filed under  //

Posted by

Comments [0]

Rebalancing and Culling

Two years ago, over the summer, I put out several social games on Facebook, Hi5 and Orkut. It was fun to brainstorm ideas, get something out, and watch the rush of users hitting your servers. The whole process of maintaining, updating and expanding your apps and increasing user engagement was instructive. Another bonus was understanding the intricacies of building on top of other platforms and the headaches of dealing with ever-changing API and policies.  In short, it was a great experience. Experience is what you get, when you didn't get what you wanted.

Read the rest of this post »

Posted by

Comments [0]

AirDB can has_many_through

We now have a better, declarative and richer mechanism of specifying model relationships. In the process, AirDB now has support for has_many_through associations. As discussed earlier for join table attributes, the cleanest way to express the association is a has_many_through, where two models have a many to many relationship through an intermediate model. Join table attributes are a nice hack for someone who does not want to rewrite their application code to introduce the intermediate Model class. In some cases, such as self-referential many-many associations, or when you are in the early stages of designing the schema and the application, you may find it appealing to manage the join table as a first-class Model. If so, then has_many_through will help you.

Read the rest of this post »

Filed under  //

Posted by

Comments [0]

Bootstrapping Stories - TiE Panel 2

Within just 3 months into the new year, the TiE Oregon SW & Internet group has organized two great events for entrepreneurs, gathering together six successful veterans who shared their stories, recounted lessons learned, mistakes made and the opportunities taken. Both events were packed with an engaged audience, resulting in informative and honest Q&A.

 

Sudhir BhagwanMatt ComptonRyan BuchananTaizoon DoctorNitin Khanna

 

The first event in February featured Nitin Khanna, former Chairman and CEO of Saber Corp, Sudhir Bhagwan, former Chairman and CEO of SnapNames and Matthew Compton, then venture partner at Madrona and now CEO at ShopIgniter. That discussion was about getting big and growing fast with venture capital, and was covered by the Oregon Business magazine. The second event held yesterday was focused on bootstrapping your startup into generating solid profits, and included Mona Westhaver, President of Inspiration Software, Taizoon Doctor, former CEO of Xovix and Ryan Buchanan, CEO of eROI. Both of these events were hosted by Brent Bullock at Perkins Cooie who did a splendid job of moderating and directing the flow of discussion, as well as elaborating on some of the legal aspects to issues faced by the panelists. Starting Out For those wondering about starting out, there were three diverse beginnings, each with a unique mindset.  

Read the rest of this post »

Posted by

Comments [0]

iPad Strategy

 

This weekend, tens of thousands will get their hands on the iPad. Several people have been playing with it already. John Doerr has been widely quoted with his lusty lines:

“I’ve touched it, I’ve carressed it and I hope to sleep with it this Saturday night. It’s not a big iPhone. It’s the future.”

That coupled with an announced doubling of the iFund has a lot of developers and companies considering iPad as a must-have checkbox platform and a potential moneymaker.

Read the rest of this post »

Filed under  //

Posted by

Comments [0]

gClouds and iDevices

The recent unveiling of the Apple iPad is portent for the evolution for Mac OS X towards the iPhone OS. Existing iPhone apps will run on the iPad, with presumably the same App Store model. Apple has also (carefully, purposely) not included Adobe Flash support for the iPhone and now the iPad. This implies that Apple is deadly serious about creating a third party developer ecosystem that is tied to its own SDK, licensing, runtime and payment mechanism. While Webkit and Safari remain at the forefront of web, HTML5 and Javascript support, given the evolution of Apple devices and custom interface gestures (e.g. pinch, expand, hold, etc.) as well as new revenue models through App Store downloads and in-app purchases, there is an emerging Dilemma for software developers and small companies to consider. Do you want to be in the cloud or on the device?

Read the rest of this post »

Filed under  //

Posted by

Comments [0]

UI-driven Database Snapshot & Restore

For most people, backing application databases is usually (touch wood) a one-way operation. You take your precautionary measures, employ some kind of hosted or scripted backup solution, and hope that you only infrequently, if ever, have to restore from an old database.

But, what if you want to take a database snapshot at any time, keep a list of such snapshots and restore at will from any of them at any time? And you want to do it from the UI? Sounds far-fetched?

Here is one scenario.

  1. Your sales guy has lined up multiple demos for your app and he wants to tailor the data and demo aspects for each client.
  2. Your dev team is too busy to spend time crafting a whole new admin console just to make a whiz-bang demo.
  3. ssh? mysqldump? redirect output? >, < #@*?

With Rails and Rake, here is how you can make your sales guy happy and get him to buy you some Mai Tais.

Read the rest of this post »

Filed under  //

Posted by

Comments [1]

Rails-style jQuery UI Menu

Some people love the drop-down, drill-down fly-out menu, which is now working its way into the official jQuery UI code-base.

The menu looks great, but is a bit tedious to construct. In fact, its downright onerous for the railszers used as we are to select_tag and options_for_select.

Ruby to the rescue!

The rails-jquery-dropdown helper generates the drop-down HTML markup, places menu items and values and optionally sub-menus using a passed-in Array, and wires up the Javascript behavior using jQuery.

Get it from GitHub: http://github.com/dkeskar/rails-jquery-dropdown

Filed under  //

Posted by

Comments [0]