Posts from Technology

Many make software… but far fewer make it well.

August 22

Development for Mobile Devices Part Deux

IDC has reported that it believes 1.3 billion (that’s about 1/5 of the world’s population) will be connected to the internet via mobile phone by the end of this year. With that much thin-client capability and connectivity, it’s hard to ignore the mobile browser as a very viable means of putting mobile applications in the hands of the consumer.

Developing for mobile browser however is a tricky business since the choice of browsers running on mobile devices is much greater than in the desktop world. The good news is that thin client development allows many organizations to reuse most, if not all, of the backend of their applications. Getting the apps to the device is also a lot easier. It’s the user interface portion of the application that needs to be addressed to support the mobile browser thin client.

Most of the mobile devices come with the built in browser however more and more devices allow you to download third party browser.

Here is the list of built-in default browsers:

(more…)

August 11

Shuttleworth on Project Management

Mark Shuttleworth, of Thawte fortune and Ubuntu fame, has some (IMHO) neat ideas on how to manage software development efforts that may be interesting to spend a few human processing cycles considering.

http://lwn.net/Articles/292031

Despite the article being written for Free Software and Linux, I think it’s incredibly relevant to all development efforts - read it as if he’s talking about Molecular projects, and not Linux distributions.

Here are two key paragraphs:

One of the key requirements that Shuttleworth sees is the need to “keep the trunk pristine”, by doing integration on the trunk and feature development on branches. Along with this is the need for more and better tests. While not necessarily believing in test-driven development, he certainly leans that way. In any case, all the tests should pass before committing to the trunk.

Many projects do not yet have an extensive test suite, but this needs to change. He quoted a Chinese proverb that “the best time to plant a tree is 20 years ago, the second best time is today”. He mentioned that he is working on a robot that controls the trunk of a development tree. Developers will request it to merge from a branch, so the robot merges the branch and runs all the tests. If the tests pass, it commits, otherwise it gets kicked back to the developer.

This approach sounds pretty good to me.

July 30

Say Good Bye To Database Schemas

Fast on the heels of Craig’s last post, I bring you a new tool which is currently undergoing Apache incubation, which has the potential to radically change how you think about databases. Google kick- started this by publishing a paper on their “BigTable” system, and just a short while back Facebook released Cassandra out into Google Code, but along comes CouchDB.

(more…)

July 28

Distributed services - the past, present, and future of the Internet

The Internet started as a distributed network - ARPANET. Its protocol, TCP/IP, was designed so that hosts anyone could communicate without relying on a central authority, and if any one host went down, it didn’t affect the other others’ ability to work. Gradually, as ARPANET evolved into the Internet, that distributed architecture became more important. Today, the Internet is pretty much everywhere, from nanny cams, to laptops, pda’s, servers, data centers, and telephones. And that redundancy and distribution is critical for the whole thing to work.

Great… so I’ve just wasted a paragraph telling you what you already know, right? The interesting part is that business doesn’t like distributed services, and has been trying since the beginning to stop them. For example, the World Wide Web is distributed. Anyone can set up a web server, and then anyone else can view pages on it. I can set up a web server on my PC and someone in China can take a look around. No reliance on Google, or Microsoft, or anyone else. But then, how do businesses such as Google and Microsoft make you rely on them, so they can charge you for their services, or force you to view advertisements, so they make money?

We have this constant struggle of the technology pushing towards decentralization, and the business interests pushing towards centralization. Let’s take Amazon S3 as an example. S3 is a very cool distributed computing technology. The basic idea is that one can write software specifically against S3’s API and then upload it to S3, and the service will dynamically provide more or less resources depending upon the site’s specific needs at any given time. If the site is hit by digg or slashdot - that’s fine, S3 will allocate more processing power. When the surge ends, the power is scaled back, and the payer of the S3 bill saves money.

So far so good, right? But now there is a situation where a vast number of sites have a single point of failure. They also have no portability to other providers. What if S3 goes down? All the sites relying on it go down. What if S3 raises their prices? The sites can’t change providers; they have no choice but to pay.

S3 is relatively new, so the technologists haven’t yet come up with a complete alternative, but some are in the works. But, consider Twitter. Twitter is a microblogging service that allows one to write 140 characters of one’s thoughts. It’s tremendously popular, having over a million users worldwide. But what if Twitter became unreliable? What if they stopped introducing new features, or broke existing capabilities? What if their terms of service weren’t to your liking? The answer to all these questions used to be “deal with it” or switch to another site just like Twitter, that inevitably evolved the same problems. Twitter isn’t distributed - you can’t just make your own Twitter and still communicate via your new site with your friends on Twitter (like how an GMail user can email a Molecular address), nor can you contribute the Twitter software. Your complaints fall on deaf ears.

It took a while, but the technologists responded with Identi.ca. Identi.ca lets anyone download the software the site runs (called laconi.ca), make changes, and run their own server. If identi.ca becomes unstable, the owner starts behaving badly, or anything else disagreeable happens - the users can simply leave. Their data comes with them, and they can still communicate with others on the OpenMicoBlogging network. Imagine that… if you don’t like the service, you can leave.

There are many examples of services changing from locked down to distributed, too. Instant messaging is one: there used to be many many protocols and clients people had to run, such as AIM, Y!, MSN, etc. Then XMPP (aka Jabber) came along. With XMPP, one provider going down only affects those users and not the whole network. For example, when AIM has trouble, every single user of AIM has trouble. When GTalk goes down, I only lose communication with those people on GTalk, I can still talk to my friends on other XMPP servers (for example, when the aol.com email server goes down, it doesn’t affect my ability to send email to gmail.com users from my Molecular address). The damage is limited, and people have choice. Those users of GTalk, who are now seriously annoyed with the service for going down, leave to another XMPP service, and they can still talk to all their friends, just the same.

Microsoft Passport failed for the same reason. People didn’t want to rely on Microsoft alone for their ability to log in to disparate services. Instead, OpenID came along, which allows users to pick, and even change later, who their identity provider is. And now bigger players are supporting OpenID.

These distributed services provide a huge incentive for service providers to keep providing quality services, that are stable, work well, and continue improving. With the constant threat of users simply leaving, these services must always be on the look out for improvements, and they can’t simply add tons of advertisements, or paid registration, when looking for money.

In the short term, the Twitters and AIMs of the world will continue to have huge user bases. But over time, they can’t keep up with the freedom and higher quality of the distributed alternatives. Look around - is the centralized Prodigy still around? How’s Delphi doing? For that matter, isn’t the walled garden of AOL in trouble? Yet the World Wide Web and the email system keep going.

July 24

Like this? Try these!

A few weeks after I came to San Francisco, I went to the Borders and saw something very interesting. It was a “Like this? Try these” sign, which worked as a book recommendation system.

I’m sure you all know the Amazon’s recommendation system called “customers who bought this item also bought”. I thought this is an offline version of recommendation system. At that moment, I suddenly wondered whether these recommendations by Borders are the same as Amazon’s list of recommendations. So I took a picture of the books and I tried to search those on Amazon.com. In conclusion, the results were totally different.

First, I tried to search the MARCH by Geraldine Brooks on Amazon.com. There were total 49 other books that were purchased with the MARCH. But no book matched the Borders’ recommendations.

Next, I tried to search the Snow Flower and the Secret Fan by Lisa See on Amazon.com. The result was the same as before. No book matched the Borders’ recommendations, again.

Why is the result totally different? Actually, Amazon’s recommendation system is based on the real sales data so that the recommendations are very trustworthy objectively. Well then, how does the Borders recommend us those books? Here are some possibilities that I thought of:

  • The habits that people buy a book at the offline store are very different from the online.
  • A book manager chooses the books with his (her) own experience.
  • Randomly choose in similar genre.

I like second one of the list even though this is pretty much subjective so that sometimes book that the manager has recommended is not interesting. I’m living on the cutting edge of technology and I can get everything from the internet or the data that has been accumulated but they don’t care about my emotional things. That’s why I prefer the analog works.

And also, this is a good example of expanding user experience from online to offline (Not offline to online). Recently, online experience is getting richer and richer. Even though much experience in offline still leads online experience, more and more it might have effect on each other. It doesn’t matter where we are in real life, online or mobile.

Browse posts by month

Browse by author

We're hiring!

Come take a look at careers with Molecular