Blog

Getting Things Done

Monthly Archives: September 2009

New in Teambox 2.0: Twitter feed with attachments

Tye surprised me this morning pushing a smarter code for file uploads, which selects the right file icon for each uploaded file.

Take a look, images from the upcoming Teambox 2.0!
The file icon set was released with an open-source license some days ago.

Subdomains? No, thanks!

Teambox 1, as many other apps of the 2.0 age, used subdomains for client accounts. Not any more.

We’re moving to paths for every project.

  • Teambox 1: http://project.teamboxapp.com
  • Teambox 2: http://teambox.com/project

Why? Project subdomains suggest the web will only contain pages related to it, as if it was an isolated site. People would think about one.teambox.com and two.teambox.com as different sites, that have nothing to do with each other.

On the contrary, having paths makes more sense. Look at the url carefully, and read it aloud:

http://teambox.com/trip-to-barcelona/conversations

You’re first of all in teambox.com, next in your project “A trip to Barcelona” and inside its conversations. It’s easy to imagine that you can move to other projects in the same level, like “Garage Sale”.

Beyond that, it sets your subdomains free: You can now use http://blog.teambox.com, http://help.teambox.com, and others. You can use extra long project names without it looking ugly (a-very-long-project-name-is-hard-to-read.teambox.com), and cookies relate to all your additional services in other subdomains.

So maybe the time has come to abandon this subdomain trend, like some have already done.

CSS tip: Remove the dotted line for links

Padded links are a great idea, as they make links easier to click. Navigation bars and important actions in your page can be greatly improved with some padding.

But then you get this ugly outline when you click the link, which stays there until the next page is loaded. Luckily, CSS has the answer for this!

Just add a outline: none to any links where you want to avoid the dreaded dotted line.

But beware: If you disable outline for focused links, accessibility for users without a mouse will suffer, as they won’t see the active link when hitting tab.

Screenshot from the upcoming Teambox 2.0

Quote: Ideas and money

It all begins with an idea (ideas make money: money doesn’t make ideas) and you respond to that idea, using your knowledge to present it in most seductive, engaging manner possible.

Fernando GutiƩrrez, partner of Pentagram

Makes me think of how innovation gets forgotten with the everyday processes in corporations, trying to dominate the complexity of growth.

You certainly can’t buy innovation. Hiring the right people and encouraging creativity over processes seem to be the only way to go.

Scaling Masterbranch with Siena

I’d like to share with you some of the amazing technology the guys at Masterbranch are putting together. They were so kind to accept an interview from our team.

Masterbranch is a new web application that builds an online CV based on your activity as a programmer in the Internet in a graphical and easy way. Open-source contributors can show and prove all the work they did for all those projects.

As a programmer, what matters is not what you say about yourself, but what you actually did. The facts prove your experience.

In Open Source projects the work is public. It is possible to know exactly the contributions of each programmer. Masterbranch tracks the activity of the Open Source contributors, as well as activity in Q&A, blogs, mailing lists, etc. With all this, Masterbranch builds an online CV continuously updated with your real experience.

It’s also possible to follow the activity of interesting people or projects, in a twitter-like way.

But then, the scaling problem arises. Masterbranch is tracking, from day one, 130,000 projects. Updates are gathered in real-time and there’s tons of data involved to process and display. In order to avoid the fail whale when dealing with big data sets, Masterbranch developed their own persistence API. They required good performance even with big datasets of information and, as a startup company, development times are critical.

That’s how Siena, their own ORM, was born. Scaling and ease of use have been the main goals for it.

What is a persistence API, and how is it used?

A persistence API is a piece of code that helps programmers develop against a database. The persistence API abstracts you from the database letting you write the same code no matter wich kind of database you are using. It also hides the complexity of the database so you will make less errors and you will develop faster.

In which ways is Siena different to other persistence APIs?

Siena has been designed with the ease of use in mind. Siena has less features than other persistence APIs, but it’s far easier to use than other persistence APIs. Less code means fewer errors and faster development.

Siena purposedly avoids “features” that are considered as bas practices for big databases, as they’d decrease performance and make scaling impossible.

Why did you develop your own persistence API?

Other persistence APIs make you write boilerplate code so developing with them is error-prone, and it takes a lot of time even to develop the simplest tasks.

We realized that we needed a better persistence API. We wanted a simpler persistence API to develop faster and without errors, and we also wanted a persistence API that let us do only those things that perform well with big datasets.

Which kind of projects would Siena be best suited for?

Siena can be used in any kind of projects that need a database to store data. But is best suited for web applications that need to handle a lot of data. If your application is going to handle a small dataset, you are better off with other persistence technology.

Free file-type icon set for your web application

As an extract from Teambox 2.0, we’re releasing our file icon set with an open-source license.

The icon set comes with vector images and PNGs in several sizes for popular file-type extensions: DMG, RAR, ZIP, TGZ, ISO, JAVA, RB, PY, PHP, C, CPP, ICS, EXE, DAT, XML, YML, SQL, ASP, H, CSS, HTML, PPT, PPS, KEY, ODP, OTP, TXT, RTF, DOC, DOT, DOCX, ODT, OTT, ODS, OTS, XLS, DOTX, XLSX, GIF, TGA, EPS, BMP, PNG, JPG, TIFF, AI, PSD, DWG, DXF, PDF, MP4, AVI, MOV, MPG, QT, FLV, M4V, MP3, WAV, AIFF, AAC, MID.

Every icon is platform agnostic and not tied to a specific program or version. This way, they will look alright for people in Windows, Mac or Linux and never feel outdated if a new version of Excel changes the icon.

Feel free to use them in your own web app, or contribute if you come up with any missing extensions!

File Type icon set

Upselling as a business model

In the same way there are many ways to run your business, choices for your business model are not limited to subscriptions and ads. Some popular business models for web apps are:

  • Subscription: Users pay a monthly or yearly fee to use your service. A good idea for project management tools, magazines or porn sites.
  • Transactional: You get paid for each time a transaction takes place. Paypal charges for each payment, you pay each time you buy an iTunes song or an app.
  • Ad-supported: The site makes money by generating traffic for other sites. Blogs and free newspapers run based on this model
  • Lead-generators: Sites seek to attract customers for third-parties, and get paid for it. Interesting for specialized sites about hotels, traveling, sport, etc.

Some go all the way to subscription. You pay an entrance fee and you get all you need. Internet companies offer this kind of service. Others go completely for ad-supported, so it’s free for the final user but advertisements are paid.

But there’s still another interesting option: Up-sellings

I read about a Rancho Bernardo Inn offering $19/night rooms, bed not included. If you want a bed, that’ll be $20 more. If you want linens, $20 more. For lights, $30 more. And so up to $219, where you get the full thing! Everything is optional.

GoDaddy’s domain names follow the same procedure: Domain names are quite cheap (good for us who only want a domain), but through the sales process you get tons of offers for upsellings: Would you like that with a hosting? With extra protection? Super-size your order.

So it’s possible to combine different models, or put much more weight in your up-sellings to keep a low entry-point for your products.

How would you apply these ideas to your model? Is it possible to offer more for less, and keep features for those willing to pay for them?

Interruption Sales and Pull Marketing

When being contacted (interrupted) by marketers, ads come in three flavours:

  • One dimensional messages, like TV spots and radio ads. The message is streamed in time, and is interrupted by an advertisement. This can be frustrating for the receiver as it can not be ignored or skipped.
  • Two dimensional messages, like newspaper’s ads and Google’s AdSense. The ad is displayed by the information, so it partially draws user’s attention.
  • Three dimensional messages, integrated with the environment in some way. These are the least intrusive.

Marketers will always want to get the biggest possible share of your attention, so they’ll prefer one-dimensional messages. One-dimensional means interruption. It means stopping what you’re doing to pay attention to what they’re trying say.

But it comes with a drawback: When you’re forced to pay attention, you’ll be less willing to listen. Being interrupted makes us angry and uneasy. We hate full-screen banners that make us lose time, but nobody cares about a little text in the sidebar.

So what about salespeople?

Salespeople will try to get a hold of you on the phone. They’ll call and interrupt whatever you’re doing in that moment. They’ll call back, or ask you to go on a Chat. They’re pushing their message.

Because they already know that an email is easy to ignore when you’re not interested, but a phone call is hard to dodge.

I bet there’s a better way of doing sales than interrupting your would-be customers. Your goal should be to get them to call you. Get customers to pull for your guidance. Rackspace’s customer chat gets this right. Check out their “fanatical support” and sales chats.

Unobstrusive ads are the way go, and sales should look for a pull from the customer, rather than a push from the company.

How do you manage the sales process in your organization?

Migrating to EngineYard's Flex

Teambox’s servers have been upgraded to EngineYard’s Flex, a very exciting hosting product for Ruby on Rails.

Flex and EngineYard’s friendly and responsive staff made it easy for us to migrate from the old server. The whole migration took 25 minutes, and the site was down to avoid data loss.

The package includes features to make scaling easier, multiple environments to test apps before deploying to production, monitoring, and it’s been specially important for us for its integration with Amazon Web Services for cloud computing and storage.

We hope you’ll enjoy these snappier servers! During the next days, we’ll start taking advantage of the possibilities that Flex offers, like mounting Amazon S3 for local access. This means that, in the following weeks, files will be accessible as http://www.teamboxapp.com/files/something.png

These changes will affect Teambox community release, which will use only normal file uploads instead of Amazon’s S3. This way, it’ll be easier to install and maintain your local copy of Teambox!