The Bee

Today we are proud to announce the launch of our maiden product CurdBee. While regulars will know what it is, new readers will be pleased to find out that it’s a simple and efficient tool to bill your clients and get paid online.

During the early days at Vesess, we had just a hand full of clients and it was only I who really worried about sending invoices and collecting the money before our bank account dried up. Being a start-up, we couldn’t afford to spend much for a great accounting application such as QuickBooks, even though it was not that expensive in the big scheme of things. As far as I can remember, this was around the time 37Signals shifted gears and went from web design to web apps, with some cool yet simple ideas.

In any case, in the early days of Vesess, I had a spreadsheet along with a .doc file with our sweet logo on top, and it was this which I used to send invoices (and rather good looking ones, if I may say so myself) to our clients. The process was simple – copy and paste the client details from the spreadsheet, type in the amount, and use one of the free PDF converters to finish the job.

A Vesess invoice, circa 2004.

One of the actual invoices we sent in August 2004. Still looks nice and simple, doesn’t it?

Some of our clients thought we are using cool software and a couple of them actually inquired. Then again, a few discovered the truth when they noticed some stupid mistakes only a human can make, such as the total being different to the cumulative value of the items. ;-)

As we grew, the number of clients we handled started to increase, and more invoicing was required as some projects now involved monthly payments, others quarterly billing, and so on and so forth. This prompted us to consider developing a system to make life easy and save the unnecessary time we spent on manual billing.

So, one evening, I started to sketch a simple application which could allow us to send invoices directly via email. Thanks to Laknath who joined Vesess during that time as an intern, we solved the issue in couple of days with just a few lines of PHP.

The first Vesess invoice app, written in PHP.

The first iteration of our billing app. From adding a client to modifying an existing item, everything is handled on the same screen using AJAX.

Towards the latter part of 2007, we thought it’d be a good idea to work on a few products aimed at Small Businesses (SMEs) globally and perhaps let our developers start on some pet projects as well. With these ideas in mind we ran a survey to capture some of the problems faced by SMEs and find ways to overcome them using simple web apps. The number of respondents was quite satisfactory and to our surprise, we found that a good majority were interested in web apps which would help them in their accounting, billing and cash collection activities.

As our resident Ruby on Rails addict, Lakshan was well suited to re-engineer our simple in-house billing application using the new web application framework. Although we haven’t done anything particularly new or revolutionary with this application, we know that there are enough people out there, looking for a simple, hassle-free solution that will make their lives easier. CurdBee is for them.

The invoice reloaded, using the power of CurdBee.

The awesome invoices that The Bee creates. Start sending professional invoices today.

From the Boiler Room
So the application is released, you’ve signed up for an account, and are happily sending invoices to all and sundry. Knowing our readership, however, many of you are going to want to know more about how The Bee came to be. Yes, we do read your minds, dear readers. It is thus with great pleasure that we present a short interview with Lakshan, the CurdBee lead developer and hacker extraordinaire, who will tell you more about just how this baby came together. Go on, have a read – you know the inner geek in you will thank you for it.

Lakshan Perera was the lead behind CurdBee, and was responsible for putting the application together from scratch. A student at the University of Moratuwa, Lakshan has been with Vesess for a while now, and in essence embodies the spirit of Vesess – small teams, big ideas, and people with a passion for what they do, all merged together by rapid Vesessination. Here, Mahangu sits with him for a small chat about everything CurdBee.

Tell us a little bit about how you planned for this project, and why you chose RoR as your development platform
CurdBee was actually the brainchild of Lankitha. At first, it was designed to be a solid billing solution for Vesess, but later we realised this solution may have a general appeal as there are many small businesses and freelancers like us. We didn’t wasted time on writing specs and went ahead with rapid prototyping.

There was no better framework for rapid web development than RoR, so the choice was obvious. RoR’s has a rich plugin set which covered all the requirements of the CurdBee so that gave more confidence on the framework.

What challenges and obstacles did you face when designing an application for the web?
The main challenge was deciding on what features and capabilities the app should have. We wanted the app to be minimal yet effective. We always tried to look at it from the perspective of the end-user – how clear is the process to him, how could he perform the task at hand easily, and what information he’d want to see and which info he’d rather have in the background. This was not simple as it seems and it’s definitely a continuous process, and is not over just because the application goes public.

Different users has different needs and see things differently. Building an app which could cater to all levels of users is the main challenge, and that’s the goal I’m still striving for.

What is your coding setup like? What tools do you use, and what times of the day do you do most of your work?
I normally prefer lightweight tools over IDEs to get things done. Actually IDEs aren’t resoucre hungry and controls your coding process too much. I love the flexibility of just a text editor (gedit) and terminal. This style of development is greatly supported by RoR itself (actually they recommend it – following the pragmatic programmer’s concept). Apart from that I had Firefox opened throughout the development period for previewing the app, but that’s obvious.

For source code management we went with Git – it really proved how productive it could be. While I work with the backend, Amila was working on the front-end design. Both concentrated only on their local versions and and once we were happy with a revision we could push it to the repository. The rest was taken care of by Git, which simply merged the changes without any conflicts. Also, using Capistrano with the git repository made releasing these updates to the live site a breeze.

Regarding working hours, I tend to prefer short stints than late night hackerthons. Mostly, my work task oriented. I decide in the beginning at the day which tasks I’m going to complete today and try to finish them by the end. I concentrated on one task at a time, so it never exhausted me and allowed me to stay focused throughout.

When looking at the development process for CurdBee, where did the other Vesess team members come in?
Well, Vesess is a small team and each member leads a separate project. When one project is ready to come out of its cocoon, the whole team gathers around and ensures the safe delivery of it. Actually if not for Lankitha’s brainstorming, Amila’s sweet templates, and Mahangu’s enganging copy, CurdBee would not have been the app you see today.

Any parting advice for young coders looking to write their first web app?
A web app is not a Christmas tree, so don’t try and decorate it with all the little snippets and libraries you know. Try to keep things simple and always stay focused on what you’re building. Don’t try to overdo the app to show your coding supremacy.

Also, don’t reinvent the wheel. Reuse code wherever possible. If you can find a plugin to simplify a certain process, use it.

Look for design patterns and try to follow them, but don’t cargo cult – that means don’t just copy and paste other people’s code without understanding it. Code found on Dzone, Pastie or on developer blogs is not always correct. Always be aware what you are doing so you know where to look if something goes wrong. I actually made most of these mistakes, so I’m talking from experience. :)

A Happy Ending
Well, that’s the story of The Bee. Please visit our forums or drop us a line, and let us know what you think. A big thank you to every one who took part in the beta programme, and we hope you enjoy the app!