Zocoi Vietnamese /ʒoʊ kɔɪ/: (informal) Let's watch/read together

New features and Flash book reader

Another release is here! This time we have enabled a lot of new features and modifications for the Flash book reader. Things are getting better and better as we come up with new features each day to make reading online books, comics and magazines more fun and convenient.

You can now add other users as friends, put comments in their profiles and subscribe to others' bookshelves to receive notification each time they upload a new book. You'll have to watch your own account page for the notifications, though. Later you will be able to receive emails whenever your friends upload new books, so you can be sure that you won't miss any interesting stuff.

Also, uploading books is a lot faster now, as you can save template of the book's descriptions before pressing "Upload book" button to publish a book. This feature is super useful for anyone who wants to upload multiple books with the same description (most likely chapters from the same series).

Save template

Last but not least, did you notice that our Flash reader has changed a lot? Take a look at this screen-shot:

Flash reader screen shot

See the loading icon besides the full-screen button? It indicates that the other pages are being loaded so that after you finish with the current page, next pages are ready for you to read. After all pages of the book have been loaded, that icon will disappear. Neat, huh? Just wait, there will be more coming up next week; probably something you can embed into your own sites or blogs.

Summer is coming. Have fun people!


Update: Book options

Hello! You can now select the following options for your books before uploading them as well as modifying later in ‘My account’ page:

  • Set as "private" : private books cannot be found by other users through any search result, related book suggestion or the Bookshelf (Profile) of the users who uploaded those contents. If you want to read a private book, you'll have to know the link of it. If you have uploaded some books that you only want to share with certain people, set them as "private".
  • Set as "not suitable for everyone" : if you have uploaded some books that have certain amount of mature content or might offense someone (but are not really violating MahShelf terms of use)...  set them as "not suitable for everyone". When other users open these books, they will be notified with a warning message and required to Confirm that they really want to read the books regardless of the consequences.
  • Disable commenting : Don't want others commenting on your books? Chose this option.
  • Disable rating : Don't want others rating your books? Choose this option.

Some of you might have noticed the change of our 'Flash reader' recently. Indeed, we are testing the new reading application, which will make it most pleasant for you to read digital comics and books online. Summer is here! Have fun everybody :D


An draft entry for MahShelf.com

Dear users, enjoy the weekend with out new flash reader. Hopefully it will bring the easiness of reading and page navigating.

Beyond the basic features, there are some new features that worths mentioning:

Auto-hide menubar: not satisfy with the reading area why dont you increase it by hiding the menu bar?

In fullscreen mode, you can use mouse scroll to navigate to either the next page or previous page. It rocks!

A new brand new look and feel of the reader, no more I have to look at the old ugly reader.

There are much more hidden features in the flash reader and I let you figure out yourself.

Posting comments is more interesting with emoticons. Here is a list of all available emoticons (including hidden ones)


The 5 Stages of a Consumer Web Startup

This is a collected article from GigaOM,  so please remember the copyright belongs to them:

In my years covering technology, I’ve gotten more than my fair share of pitches related to the latest consumer Internet startup. Thanks to this I’ve been able to witness what amounts to be a near-familiar life cycle for these companies. Not every company hits every step, but most of these will be familiar to those of you in the Silicon Valley Social Media/Web 2.0-Something trenches.



One day an entrepreneur is chatting with his friends, gets an idea, writes about the idea on his or her blog, and then starts coding. A few weeks or possibly days, a beta — increasingly a euphemism for a not-fully-thought-out-product — emerges.



Then the buzz builds and the company opens up the beta far and wide. Maybe TechCrunch, ReadWriteWeb, WebWorkerDaily or WebWare write about the product. Either way, this is the first traffic spike and the entrepreneur rejoices. The VCs come calling. If they don’t, the angels will certainly do a fly-by.

But eight weeks later reality sets in. The traffic stops growing or — worse yet– dives. The VCs stop calling and blogs start posting Alexa charts that look like ski slopes or tabletops. But as an ever-optimistic entrepreneur it’s time to regroup, gather your programmers, toss back some Red Bull and…



If the user adoption press releases, the widget and subsequent coverage can’t get your site growing again, it’s time for the big guns...the open API. Now you’re a platform! The startup gets a fresh round of publicity, maybe more exposure to new users, and the founder rejoices again. This time the money men get serious because you have shown them you can survive the Silicon Valley jungle and you have a Facebook strategy.



Maybe the media is getting too insistent with their questions about how this service is supposed to make money. Maybe the bills from Amazon Web Services are getting too high, or the VCs are getting impatient. The blogs are back to posting unflattering Alexa numbers. Compete data backs those charts up! So it’s time for advertising.

If the startup is well-funded or has a famous founder, the ad unit might be something novel like awidgetpre-roll voice ads on a mobile phone, or Beacon. Otherwise it’s generally based on banners and Google AdWords with promises of more to come.



But selling online advertising is hard. If Google, Yahoo, AOL or Microsoft haven’t stopped by with a buyout, it’s time to consider reality. You could always try your hand as an ad network or merge with a competitor, but more than likely it’s time to sell that domain name and user base on eBay or quietly shut your doors. Better luck next time.

A week of Memphis #2 (28 April 2008 -> 4 May 2008)


  • Refactor the code and delete image preview feature
  • Study for exams
  • Synchronize my calendar and todo list between google calendar and Rainlendar
  • Make some hotfixes in the server
  • Start reading the book: The Art of Agile Development

Am I not skillful enough?

This is a post expressing my thought and criticism on myself.

After attending the arctic startup event in Helsinki, I have seen lots of cool company and noticed what is their development stage, what is the development method and how talented they are ... I also realized that our team is at the very beginning stage and indeed we are not cool. And if we can not survive or evolve, we are doomed.

A serious start-up company will not take normal people, in fact the company decreases the failure risk percentage by hiring (extremely) talented people. However, I am more or less a normal person, I did go to school every day, did play games every week, and programmed as a hobby... Sometimes, I ask myself how serious I am in this project, and what is the situation I am facing now if I continue living like I did before. Will I fail ?

I am facing a chance, yes it is a chance to completely change my life. Never before have I realized that I almost catch up with the web 2.0 trends, and if I do not do anything, I am losing it. Never before have I realized that this is the only chance to be popular and rich and to let my beloved mom know that she can be proud of her son. Yes, by the time I left that bar, I realized it well and suddenly I knew that my team was far behind race, we are somehow losing the battle because of the development process is too slow.

A friend made a joke that he definitely will not work for a start-up company like us because of the risk. However, I did take it seriously, I know that we are bearing the risk but in order to minimize it, we should change the way we work. In my point of view, if we do not change then we will certainly fail. Don't be too optimistic.

I spent so much time on trivial thing, I should stop surfing non-sense or unrelated websites. I should focus on coding and do not afraid of refactoring or modifying to improve code quality, do not afraid of applying new features.

I should narrow down what I should learn, and hire other persons to handle with their profession instead of trying to do it myself. I admit that I can not handle a real production server and my knowledge on Linux is limited . I admit that I am not a web designer. In the future I only want to be a pure web developer. And that will be my only focus.

PS: Like scred team, I will try to work 12 hours a day.

Almost every application is now available on the web, how about mobile phone?

I write this post with a Nokia 9300i and its default browser. Basically I just fired up the browser with the link m.wordpress.com but I was disappointed because of the limitation given by wordpress. All I got is a text input and text area for the post's subject and content, i cant even write an url or insert my images. Then I googled for a blogging client and found a tool from telewaving but it s not available for my phone. Hope someone will write a similar tool in Java.

Silently a new flash reader has come

This evening I went to mahshelf.com to read my favorite books and immediately I was surprised by the new fancy flash reader. It looks neat and some features have been added to make it more convenient for the users, i think. I really like the new one and perhaps the quality of images has been improved too, or something happens to my eyes :p

Meanwhile, I am speding time developing some new features and reading more books. I just can't help reading books, I am so addicted. Hope I one day will come up with the best and most optimized algorithm to serve PDF file in the system.

A week of Memphis #1 (13->20 April 2008)

Yeah, this type of blogging is copied from other blog but I think it's cool to remind what I have done or at least my friends can keep up to my work. Make a comment if anything went wrong here :P . Ok, in the previous week, I did:

  1. Deploy a new production server.
  2. Write a php script to clean redundant files on that server.
  3. Solve DNS problem with the domain.
  4. Install memcache on my test server.
  5. Convert real link from text in the book description, for example: mahshelf.com now becomes http://mahshelf.com.
  6. Change page title dynamically to improve page SEO.
  7. Make a presentation about Web 2.0 user interface at EVTEK school and receive lots of criticisms about that :( .
  8. Think about my mom, forex rates showed 1 Euro = 26,058.5 Vietnamese Dong yesterday, my currency lost its value for the last 5 years. Being a Vietnamese is tough.

Moreover, I also write a quick note here as a to-do list, if you find sth missing, inform me through the comment.

  • Make a good benchmark on how memcache can really save the day.
  • Although the link is automatically linked, it still breaks the layout if the URL is too long, need to truncate the URL (not easy with those php preg_replace functions :( )
  • Need to add dynamic meta keywords to improve page SEO as well.
  • Improve URL routing system.
  • Fix current CSS tooltip, an alternative is using an AJAXed one to save bandwidth.

Some tips to improve the performance of a web app

Before writing anything about this, I would like to apologize Odin Chen because I did not fulfill my exaggeration that I will make my web app run 500 times faster than before. After the most recent benchmark, it probably runs only 10 times faster :P

Here is the list I have applied to my app, hope it helps someone

  • Compress web files such as javascript and css files, that saves both web traffic and loading time.
  • Add an expires header to web files and images, it is only necessary when those files are not changed before they expire (I am still finding the best way to do it)
  • Choose a small footprint server, I know Ubuntu 7.10 is great but you do not need the latest PHP 5.2.5, why dont you consider Debian?
  • Compile your own package with your own configuration, or at least install only the essential packages from the repos, not all of them :P
  • Use a caching engine such as APC, eAccelerator, Zend Optimizer, or memcached ...
  • Use your skill in programming, yes by that I mean code efficiency : do not forget to join foreign table, that saves many time in database querying, and unset the variables or objects that used in actions file that are no longer needed in template file

In the future, if I read or think of some other tips I will blog about it, if you have any advice, do not hesitate do leave a comment here. :D