CATEGORY: Software

Some weeks ago, I heard about Redis from Chu Yeow’s tweet. Redis is a key-value database, similar with memcached, but with the persistence feature. And one of the first things that popped up into my mind was, this is going to be handy to extend Singapore National Library Board (NLB) catalog search on BookJetty.

So I stopped my adventure with iPhone for a while to work on this hack. After all, BookJetty was built to be a proxy to plug-in other catalogs easily. With the plug, all vertical features found in BookJetty such as importing books to your shelves, tagging, book reviews, ratings, the social networking features, Google Books preview, author pages, cross libraries search, and other vertical features will be immediately available for the catalog. Well, with just a plug or an adapter.

BookJetty Services

I was lucky that Redis 0.900 (1.0 RC 1) was just released, though not a production release, I took my chance. It was very Ruby to work with Redis; download the codes, read the documentation, bam bam and you got it working, one of the reasons why I chose Redis over Tokyo Cabinet (What a name!). More about the differences between Redis and Tokyo Cabinet here.

There is an issue with NLB search result, it does not return ISBN and some other information BookJetty needs to perform the matching and to display the information nicely. Thus, it needs a second call, and it is expensive. A fast database is required to cache this kind of information, and Redis is the answer.

Previously on BookJetty, you can only search Amazon catalog, and BookJetty will find matches in NLB catalog based on the book ISBNs. But due to data discrepancies, some books found in Amazon are not found in NLB.

As a library user myself, I had always wanted to search the other way round. And today, I’m glad to announce to you, and I hope you are as excited as me. We can now do the other way round; search NLB catalog, and BookJetty is smart enough to find matches in Amazon and probably from other sources in the future. I dreamt about this, and today that dream is fulfilled. Click image or here for a sample search.

NLB Search

There is one limitation though, the search API does not sort by the newest books as in NLB online catalog. Hopefully there will be an upgrade to the API soon, and we would be close in our quest to find the holy grail for our local library search. Meanwhile, let’s cherish what we have.

May the books be with you.

Apple Worlwide Developers Conference 2007 has passed for almost two months by now, and all the huzz and buzz of iPhone has started to calm down.

But, time-travelling to about a month ago, the day when I met Joe Goh, one of the very few Mac developers we have in Singapore. It was over a-cup-of-coffee talk, a nasi-briyani and roti-prata meal at Ang Mo Kio (AMK) Hub, he shared his experience at the conference, and one thing that caught my attention was The Bay Area Rapid Transit (BART) Widget, the winner of 2007 Apple Design Award (Dashboard Widget Category).

BART_widgetBART widget is small swiss-army tool that allows commuters to plan trips on the BART subway system in the San Francisco Bay Area.

When he showed me the widget, I was fast to be impressed at the amount of information packed nicely into such a small widget, and its intuitive design that delves with immediate feedback and speech synthesis. The best of all, that widget was all done basically with HTML, CSS and Javascript!!

The BART Widget proved to us, that given enough thoughts and creativitity, much we can do to replace the simple and traditional web interfaces that we all have been familiar with.

Finding out more about Bret Victor, the guy behind BART Widget, I found a paper he has written on User Interface (UI) design, named ‘Magic Ink‘. If you are a software developer or a UI designer, nothing beats bumping into a resource as delicious as this.

Bret stresses that information software design can be seen as the design of context-senstive information graphics, which he shows clearly through his widget, and he steps through the process and throughts behind the creation of BART widget, which I think is an invaluable information.

In the paper, he also shows other great examples on how a typical information-rich page, can be redesigned into a context-sensitive information graphic. An example shown below:

Flight Original

Consider the re-design:

Flight Redesign

Music The Way You Love It

FRI, 8 SEP 2006

logo_pandora.gifI’m not sure about you, but I always listen to music when I work. It creates the mood.

If you and I alike, can’t afford to buy songs that last you a week without repeating “Superman” for at least 20 times (additional 1 more time if you watch Paul Twohill last night on TV), listening to radio is one option, it’s free anyway. :)

But when things get serious, and you need to crack your head for your one-million project, you wouldn’t want to listen to DJ’s jokes, song dedication messages, or some ads about big sales in town. I love DJ’s jokes btw, Daniel Ong is my favourite, but not when doing really serious stuff.

The alternative will be Pandora (I love this name). If you have not heard of it, it is okay, that is the reason why I am writing about this anyway. It was released some months back, and it has been indespensable for me.

Using Pandora is like playing your own radio station, you start creating a new station by entering an artist name or a song title (the one that you love). Then using a smart algorithm, it will play songs similar in tune, rythm, and groove with the artist/song title that you have just entered.

You can even vote if you like or hate the songs suggested, and it will remember, and the algorithm gets smarter I presume, coz I just fall in love with the station each day. And some unheard artists with songs of your taste may also pop up. Smart! Isn’t it?

If you have not tried it, go and check it out, start creating your own radio stations, the way you love it. And big thanks PANDORA!!

CodeJamYesterday, I met Casey Chiang and Kang Ngee, founders of CodeJam Pte Ltd, known for their flagship product, MemoriesOnTV, a friendly application that allows you to create photo slides playable on CD/DVD. CodeJam has been around for 4 years, and MemoriesOnTV has been downloaded over 700,000 times on download.com; and they are growing, they just moved to a new office. It has a meeting room!! :)

They bumped into BookJetty through a link that I unashamely posted on a dicussion forum. They think that what I have done for the community through BookJetty is a nice gesture, so they invited me for a friendly visit and a chat.

We shared our lows and highs, our pains and struggles as software startups, and we had a good laugh and an enjoyable session. They gave me some invaluable advices and about the plans I have for Pluit Solutions, and encourage me not to let the flame in me being put off. We parted with a promise that we will keep in touch.

I think CodeJam can be a good inspiration for the software startups in Singapore; to be creative, let loose, and fulfill the core value of programming, to improve the quality of life. Let that spirit lives within us, and let’s help each other out, if not money, let it be an encouragement.

15 Sep 06 - CodeJam is looking for a good C++ developer, if you are one, find out more here.

RSS Auto-Discovery Howto

MON, 17 JUL 2006

rssRSS feed has been the blood vessel for bloggers. But sadly many blog sites that I bumped into still do not have the RSS feed auto-discovery feature.

This simple feature allows RSS feed reader to auto-discover your feed link by just entering your website url. Isn’t it very convenient? Instead of having to skim through your page layout for the tiny RSS button, the extra click to load your feed link and manual copy and paste the URL to the feed reader.

So how can you do that? Very easy. Edit your page layout, and insert the following tag under the <head> tag, as such:

<head>
    ...
    <link rel="alternate" type="application/rss+xml" 
title="[Your Feed Title]" href="[Your RSS Feed link]" />
</head>

Do You Need RAID?

WED, 5 JUL 2006

The short and sweet answer is Yes, because you will never know when your hard disk will fail.

I just got my server up last Friday (brand new server). On monday the hard disk failed, no offense to Dell, I have used Dell desktop for years and my hard disk has never failed. You just never know.

So my first setup was without RAID and I had to spend half a day in the data center recovering my server. Isn’t it wonderful if there is RAID? You just have to swap the failed hard disk with a new hard disk. And the best part is you don’t even get a down time.

So RAID it!! No question asked. Your server downtime and the time spent recovering your server is worth the extra hard disk.

DellThis week has been full with activities involving Linux, Linux and Linux. And the Dell server for BookJetty is finally up, loaded with LAMP (Linux, Apache, My SQL, and PHP), Tomcat and also the new vBulletin based BookJetty forum. Now it’s just pending the green light from the webhost, Qala.com, to move the server there.

Having lived and breathed Windows, switching to Linux was a bit daunting initially, but having played with it for a week, I started to fall in love; at least my typing speed has improved!!

LinuxLinux (also known as GNU/Linux) is the obvious choice if you are a start up or you just want to save some money to buy iPod. Linux is free, it is licensed under GNU General Public License (GPL), but what the @#$%, why Dell is charging me a couple of hundred bucks for Red Hat Enterprise Linux (RHEL).

Well, before answering that, the Linux here means the Linux kernel, the basic libraries that form an operating system. Since it is licensed under GPL, which in layman terms, it means you can use it, modify it, repackage it with other software, do whatever you want, but you have to give your version for free too. So pretty fair, isn’t it?

And the different repackaged versions of Linux kernel are commonly known as Linux distributions, the cool jargon is Linux Distro. So you may have heard of Red Hat Enterprise Linux, Fedora Core, SUSE Linux, CentOS, Debian, Ubuntu, Knoppix, and others; those are the different distributions of Linux.

So each distribution is different, though all of them are using the Linux kernel for the core. As for the RHEL history, it is a bit tricky. It was started as Red Hat Linux (without the Enterprise word), but in late 2003, Red Hat Linux was merged with Fedora Linux (another distro), and born out of that is the commercial version (RHEL), and the free version is known as Fedora Core.

But wait, how could they charge the RHEL, isn’t it still under GPL license? Oh hell ya…it is, RHEL source codes are still free, you can still download it from Red Hat Inc. web site. What they are charging you is for the binaries they have compiled in a CD, for support, for software update subscription. Smart move! And it makes sense for the ENTERPRISE, there’s someone to call now if anything goes wrong.

If you are a start-up like me, that is what we call luxury, and that, is a deadly sin. But no worries, there are other free distributions available. Fedora Core is one of them, but it is not as stable as RHEL, as new libraries for RHEL are first relased in Fedora Core, which then moved to RHEL after they are more stable.

But again, worry not, thanks to another open source community, they downloaded RHEL source codes (well, they are free right?), and create a final distro which is very similar to RHEL, called CentOS (Community ENTerprise Operating System). Halleluja!!

Another disto will be SUSE Linux (I’ll leave it to you to figure out how to pronounce). It’s by Novell, similar with RHEL, it has commercial and free version available. Free version is also known as SUSE Linux OSS (what a name).

Now you know why Linux is still not gaining as much adoption as Windows, though it has been gaining a lot of mementum lately. Just to understand the distros can be stressful enough. But, don’t you feel a little smarter if you know other OS other than Windows?

And the recent popularity of Linux was partly contributed by the latest very -user-friendly distro known as Ubuntu (it means ‘humanity towards others’). It is a spin off from Debian Linux project, which simply a more user friendly version. Ubuntu as two editions, the desktop edition and server edition.

And I have to stop now, or you will never visit my blog again. At the end, I chose Ubuntu for my server. It just took me a couple clicks and minimum inputs to setup a basic running LAMP server. But of course there are other things to work on after that.

So Linux for you? And which distro? :)

I have always been very irritated with the default search in Firefox address bar. If you enter “Singapore”, it will redirect to the closest matched page without showing the search list, but most of the times I want the search list!

I did a quick search in Mozilla site, and found out that you can easily customise the default search behaviour, and here are the steps:

  1. Type "about:config" in the address bar and press <Enter>
  2. The config page will show up, type "keyword" in the filter input box to filter the list
  3. Double click on "keyword.URL" to change its value to "http://www.google.com/search?btnG=Google+Search&q=".
  4. And hooola… you have successfully hacked your Firefox address bar

When Creativity Runs Wild

TUE, 2 MAY 2006

Firefox browser is getting more and more popular these days. One very good initiative to promote Firefox is through firefoxflicks.com. The site allows Firefox fans to upload a short 30-second Firefox ad.

This is hot

And a fan has created this very creative and impressive Pixar-quality 3D ad. That’s what happens if we let our creativity runs wild. Check out this flick now, and the other flicks are pretty cool and entertaining as well.

Bookjetty.comBookjetty.com is my first initiative to release an application for the public. I found myself doing repetitive tasks of finding good books in Amazon, and checking each book if they are available in Singapore National Library (NLB).

The chore was quite time consuming, so I decided to create a search engine that combines both results under one roof. The concept is not new, but lately famously known as Mashup, a website that combines the result from multiple sources seamlessly. A9.com search engine is an example of that, Bezurk.com, a travel search engine, is another example; and one of awes me is Trulia.com, it combines the search results from real estate sites and merged them into Google Map.

Stunning, isnt’ it? Thanks to the advancement in Javascript lately, the introduction of AJAX and browser suport for DOM document manipulations, all these Web 2.0 experience are made possible.

The site was designed from library user perspective. It aims to help user to find good books as fast as possible in the library.

  • Popup is  used to avoid unnecessary clicking.
  • Catalogue location is grouped for easy visibility.
  • Sorted by “Not On Loan” groups on the top, as that group matters most.
  • Book locations are grouped for easy readability.
  • Total books, Total Available books, Total Not On Loan books in the listing, for a quick view of book availability.
  • Short description for each book on mouse over for those who don’t have time to read too much.
  • Print catalogue to bring it as a reference to the library.
  • Sales ranking and customer average reviews for quick assesment of the book quality.

Bookjetty.com is still at its infancy, sometimes the listing by amazon only shows the latest edition of a book, and the latest edition may not be found in the library, but other editions may be available. This was due to the Amazon webservices Application Programming Interface (API) does not provide other editions information. But thanks to another online book service, called xISBN service, which provides other book editions list. The list will then be matched back to retrieve book information from Amazon and NLB.

I will be working on this feature this week. So stay tune. Thanks to those who have find this site useful and thanks to many who have sent in their feedback too. Please help to spread it to your friends, family or your kids too.

Note that currently the site is hosted on a shared server in the States, so the response maybe a bit slow at night.