Archive for the ‘Open Source’ Category

Solving the wrong problems

Wednesday, October 17th, 2012

As a power user and an entrepreneur (not to mention a developer), I often look at a software product or service and think how I would've done it differently. If the concept is interesting enough, I might dive into some initial research to understand the market and the needs of the target audience.

Most often the process stops at that point as I realize that -

  • The product is not as simple as it seems on the surface,
  • There are reasons it is built the way it is, which were not immediately apparent,
  • There is already strong competition in that space

I went through a similar progression when I came up with the idea for my startup, Binpress. I had just finished yet another client project rather quickly, thanks for the most part to the mature code-base I've been building for several projects up to that point. I was thinking to myself - instead of continuing to provide custom development for one project at a time, wouldn't it be more efficient to just license the code stack I've been using as reusable components?

That was the initial idea, anyway. From there it grew to an idea of building a marketplace for developers to do the same, with the major competition at the time being codecanyon. The reason I felt codecanyon were "doing it wrong", is that they focused on low-end, low-cost components mainly for designers and beginning developers, without any kind of quality control. They did seem to be making significant revenue (I scraped all their sales data and I can say with confidence it is significant).

Understand first, build later

Alright, so why am I bringing this up now, and how does it relate to the title of the post?

The research process I went through when I decided to build Binpress took close to a month. I used codecanyon for a while as a publisher and sought out additional similar services. I talked with freelance developers and codecanyon sellers, gathering as much insight as I could. The goal was to understand why codecanyon was built the way it is, and if my take on it is valid.

Not everyone shares the same process - I just read a blog post on a new service called Gitiosk, which is termed "Building a Binpress challenger in 48 hours". In it, the team explains why they think it is better than Binpress -

  • It is not a marketplace
  • They don't do any marketing for you
  • No review process or quality control
  • You basically sell your code yourself

Basically, they looked at all the main value points of  Binpress and decided they are expendable. As someone noted in a HN thread on the blog post, the value offered by such services is everything but the actual sale. There is marketing and reach, which is difficult for everyone and developers especially suck at it, there is licensing which is difficult and confusing and you better have some legal authority, there are conversion and trust issues with prospective clients, if your code component costs something significant (we have components on Binpress that sell up to 1500$), or even if it costs at all - don't underestimate the barrier of getting someone to hand over his credit-card details online.

We solved all of those problems (through a long, iterative process), and despite the opinion of the commentator on HN, we did take off - since the value of quality, ready-to-use code is not zero as he suggests (a surprising viewpoint). Gitiosk looked at the same market and decided to solve a very different problem. In my opinion, as someone with close to 2 years of experience with this market, they solved the wrong problems - and it's probably only because they didn't understand it enough.

On the bright side, it did take only 48 hours for a team of 4, so no major time loss there. Time will tell if their approach is better than ours (though I feel we already made our point, with many developers making a living from being Binpress publishers).

 

Building an app does not make you a startup

Thursday, August 16th, 2012

I just read Andrew Chen's Mobile app startups are failing like it’s 1999. He raises a good point about the closed nature of mobile app development, which for the most part is a reflection of the Apple way of doing things and especially the appstore review process.

Most software products are not a billion dollar business

Before I touch on how that process can be improved, I want to talk about what I see as the core problem here - many of those VC backed apps, are not in fact, startups. They are startups in the old-school sense, in that they are a new business starting up, however they are not what VCs are claiming they want to back - in short, they are not appropriate for VC funding.

Once you take VC money, the game and expectations change completely, and the vast majority of those failed mobile "startups" never had any chance of living up to those expectations in the first place. Some of those actually have decent launches in relative terms, if they were considered as normal software products and not as startups that were hailed as the "next big thing". If they had just raised regular funding, via friends and family, loans and personal funds, they could have been a nice small business that generates a decent revenue stream for their founders.

As it stands though, with VC money, those apps will be considered a failure, which is too bad. The mobile trend, just like any other funding trend (social, local, offers etc), makes VCs take a leap of faith and buy into the dreamy future the creators of those apps are painting, while in fact they are just building regular software that is derivative of existing products with a small, fairly insignificant twist. There are exceptions, but most of the apps I see founded leave me wondering how someone can consider them a possible billion dollar business.

In fact, I'd go further and say that the fact those founders have no initial product actually helps them raise - as it's easier to sell dreams than reality. I have a post coming up on that exact topic, which I call the funding paradox.

Reducing costs and time to market

What can do we do to combine the agility we learned in the past decade with the requirements of the App Store?

Back to the original point of Andrew's article - lack of agility and relatively high time to market in the mobile space. This problem is not unique to mobile and many software products have this process - despite the introduction of more agile development models in the last couple of decades.

I co-founded my current startup, Binpress, to counter that exact problem. While each app has its own concept and core features that are unique to it, the fact of the matter is that many features are shared across apps. Things like in-app notifications, sharing options, review reminders, UI elements and so forth - are developed from scratch at each company. Those are solved problems that do not need to be developed over and over again.

At Binpress we build a curated inventory of code components for any development vertical, including mobile apps (our fastest growing category right now). We are a marketplace and a discovery tool for free and commercial mature code solutions that solve common needs in software development.

Our main goal in building such a service is to promote code sharing as a business that improves the software industry as a whole. There's no need for every app dev team to build their own solutions for everything, when much of it has already been done to death before. You waste time and money building it, and you waste time and money debugging and QA'ing it, when mature solutions are already available.

I like to make the analogy to car manufacturing which is a mature market compared to software development. Consider that no car company makes their own wheels, or their own screws, and some don't even make their own engines. They focus on designing cars that best integrate those various components which are built by companies that are experts at it.

I am convinced that this kind of component-based development is the future of the software industry. Cherry pick mature solutions to fill out necessary but not unique core features, shorten your development cycle and concentrate on the unique value your product delivers to your target audience. It's really a no brainer.

Check out Binpress and let me know what you think is the solution to the app development life-cycle.

 

Zend Framework dependency manager

Tuesday, November 2nd, 2010

Reusing Zend Framework based code can be a bit of a pain - you do not want to include the entire framework just for a few classes, yet tracking down the dependencies needed to run your code can be time consuming and it's hard to tell if you aren't missing anything.

To overcome those issues, I wrote a utility class to automatically resolve Zend Framework dependencies by fetching them from the online SVN repository when they are needed (and then storing them locally). The class is available for download from Binpress under the MIT license.

(more…)

Software licenses for dummies

Tuesday, October 5th, 2010

The legal aspects of selling software are, for the most part, pretty vague for most developers. During preparations for launching our software market, Binpress, I absorbed a lot of information from our very good copyright  attorney and got to understand much better the nuances of software licensing. Here are some of the lessons I learned.

(more…)

Optimizing OR (union) operations in MySQL

Wednesday, October 15th, 2008

In my last post on database optimization, I focused on improving query performance by optimizing schema - exploring indexing strategies by reading the execution plan. In this post I'll show how different query structures can also have a major impact on performance.
(more…)