bootstrap-components-helpers as a full blown gem

Just a quick note to let any passer-by know that the previously mentioned micro gem bootstrap-components-helpers has been turned into a full blown gem.

The reason for this is that the gist had had a few forks, some with additions, and one of the contributors left a comment on the original gist asking me to pull in those additions. However I wasn’t aware of it until a friend of mine using the gist pointed it out to me.

The repo now lives here and pull requests are welcome.

Alternate Heroku Add-on Marketplace retired

Last year I wrote about the shortcomings of the Heroku add-on marketplace and proposed an alternative that I had quickly prototyped.

I have just retired this app.

Aside from the fact that it did not attract enough add-on users to become a useful resource, Heroku deployed a new and improved version of the official marketplace a few months back. It now features search and categorization. User ratings and reviews are still missing but are supposedly in the works.

Below is a screenshot of the retired app for posterity :

The missing bits of the Heroku Add-on marketplace

Update June 1st, 2013 : The official Heroku add-on marketplace has been updated a few months back, the alternative has been retired.

As I explained at length in a previous post, DbInsights started as a spare time project destined for internal usage in the previous company I was working for. Once I got the basics working and some colleagues started using it, I thought about turning this product into a business.

Selling it as an add-on for Heroku seemed like a pretty good option to me for various reasons. For one, the clients there seemed the right ones for me ; mostly startups, which are encouraged nowadays to be metrics-driven and most likely okay with the concept of Software as a Service. Secondly, the integration was quite simple and it brought along with it recurring billing, allowing me to focus solely on developing my product. In short, the benefits of a marketplace in exchange of the usual 70/30 revenue split.

However, think about any marketplace for a few seconds (iTunes store, Google Apps Marketplace, Chrome web store, …) and then go back to the add-ons listing on Heroku. All we have there is a dull alphabetically ordered listing containing 78 add-ons to this day. Personally I’m a long time Heroku user, I’ve seen this listing grow and I’m pretty knowledgeable about the current Heroku add-ons offering. But what about a newcomer ? Is he supposed to read from A to Z the add-on names and short descriptions ?

Isn’t it reminiscent of the beginning of the internet, before the search engines, the time of web directories ? Don’t you think there are a few bits missing from the marketplace experience ? This is obviously not how we do these days, there is a blatant lack of all the marketplace frontend basics ; search, categories, ratings, reviews. As an add-on provider it is in my interest that Heroku users can find easily the add-on they are looking and benefit from the recommendations of other Heroku users. I don’t want my customer acquisition to entirely rely on a few paragraphs of marketing pitch.

The Heroku Add-ons catalog is my proposal to improve things. It supports the missing bits previously mentioned, now all it needs is Heroku add-ons users to make it useful. So if you’ve got a few minutes to spare, go write a few reviews about the add-ons you use on Heroku and help me spread the word about this catalog so that it can become a useful resource.

Tabs Rails helper for Twitter Bootstrap

I updated the micro-gem I mentioned a few days ago. It now does tabs as well. A view helper that does all the boilerplate for you (tabbable, nav-tabs, data-toggle, matching hrefs and ids). You just worry about your tabs title and content.

= tabs do |tabs|
  - tabs.pane 'My first pane' do
    = render partial: 'my_first_pane'
  - tabs.pane 'My second pane' do
    = render partial: 'my_second_pane'

There is an option to switch from tabs to pills and another one to position the tabs (although there is a bug in the last release of Twitter Bootstrap which causes the left and right positioning to not display properly). Head over to the micro-gem gist for the full usage indications.

How DbInsights came to be

Before working on DbInsights, I was an employee at a company developing a skill gaming platform. Following the current trend among startups, there was a will to be metrics-driven. Ideally, an idea for further development would be backed by a current metric and an estimation of the improvement expected on this metric.

This objective needed us to be able to answer various simple questions like “which game is performing the best ? which kind of competition ? how about the fees ? the number of players in a competition ?” and so on. And for each of these questions / metrics we needed to be able to plot them in order to see their evolution. In other words we needed to produce charts out of the data we already had in our database.

Pretty basic right ? Well… not exactly it seemed. The boss, who dedicated a certain amount of time to crunching numbers, took the time to do his research and ended up buying a license for Spotfire ; it was a costly single user desktop app, requiring a daily dump of the database to be loaded on his personal computer. The product manager resorted to the Rails console where he ran queries to get numbers that he stored in a spreadsheet along with the queries, to be able to rerun them the next week and plot the evolution.

This seemed pretty unsatisfactory. This ought to be more affordable and collaborative than the Spotfire solution and more human-friendly and efficient than the Rails console alternative. Being a smart-ass I thought “how hard can it be ?”. It’s just bars and lines, a few SQL queries with some GROUP clauses with a CRUD interface on top of it. I started working on it in my spare time and was soon able to plug my tool to the staging database. Soon after, a few of my colleagues were using it, non technical users could ask for help to create a graph and then refer to it and I started getting feature and improvement requests.

After a few weeks of development I had quite a decent product and thought about making it an add-on for Heroku since the barrier to entry was quite low and there was no direct competitor on Heroku. The feedback from the first beta users was good and they told me about some of my competitors like RJMetrics (which is rather costly) and Chart.io (which was still in private beta at the time). DbInsights felt like a good contender to me so I decided to develop further my project.

And here we are now, DbInsights is a Generally Available add-on on Heroku since February. My first users provide a lot of interesting feedback configuring their charts, triggering exceptions and asking questions (as well as submitting regular feature requests of course). Since the beta days, the UI has been improved, the feature set has expanded and there is a lot more to come.

Accordion Rails helper for Twitter Bootstrap

Like many, I’m living the Twitter Bootstrap craze in full these days. It’s applied to several applications I’m currently working on and two of them needed an accordion.

The Twitter Bootstrap accordion is great but requires quite a bit of infrastructure (divs, classes, hrefs and data attributes) so I set on writing a helper to clean up my views. I ended up with a 40 line helper module that I wanted to use in two different projects.

Following the micro gems trend, I bundled this in a gist. It can be used as follows :

In your Gemfile :

gem 'bootstrap-components-helpers',
        :git => 'git://gist.github.com/2117187.git'

In your views :

= accordion do |accordion|
  = accordion.pane 'My first pane' do
    = render partial: 'my_first_pane'
  = accordion.pane 'My second pane' do
    = render partial: 'my_second_pane'

Update: it now does tabs as well.