minh kính

Bồ đề bản vô thụ, Minh kính diệc phi đài…
菩提本無樹,明鏡亦非臺。。。

Hiểu theo một nghĩa nào đó, sách là một tấm gương, người ta đọc sách chẳng qua là một hình thức tự phản chiếu tâm hồn mình! Cách nói: “một tấm gương để noi theo” là sai hoàn toàn về ngữ nghĩa, vì khi soi gương, người ta chỉ thấy chính mình trong đó mà thôi! Có nhiều người cũng có đọc, có soi đấy, nhưng không có sự vận động, biến đổi nội tâm, rút cuộc cũng chỉ trở thành một dạng máy photocopy! Nếu hiểu theo nghĩa đó, soi một tấm gương xấu, gương méo có thể gây ảo giác, loạn thị, loạn thần! Và khoe nhà có hàng ngàn cuốn sách cũng giống như kiểu nói rằng: tôi đẹp là vì trong nhà có hàng ngàn cái gương vậy!

Thực chất, bạn chỉ cần 1, 2 cái mà thôi, có khi chả cần cái nào! Ấy nhưng thời buổi tiêu dùng, chúng nó cố gắng bơm vào đầu bạn cái suy nghĩ rằng mua càng nhiều gương càng tốt! Đã có rất nhiều người mua thật nhiều gương và sau đó tìm cách… chịu đựng nó, tìm cách vẽ nên vô số khuôn mặt biến ảo và phản chiếu lấp lánh trong những cái gương đó! Đến lúc chịu đựng hết nổi rồi thì sẽ biết là… đập mịa nó gương đi sẽ tốt hơn, nhất là tình trạng hàm lởm, hàng chợ, hàng độc hại, nhảm nhí tràn lan như hiện nay! Ảnh: đến tận giờ tôi vẫn đọc, chủ yếu là trên Kindle cho đỡ hại mắt, và mỗi năm chỉ đọc 1, 2 cuốn thôi, không nhiều hơn!

kindle touch

Well, having played with this “irresistible” Kindle Touch for almost two weeks. The good thing is that I can now continue with my favorite readings on e – ink display like before. The even better thing is that there’s no more clumsy buttons, only “touches”. I’m trying to keep my habit of reserving 4 ~ 6 hours a week for reading, and reading only, no email, no web surf meanwhile, just to be a little bit calm, slow and undistracted. The device now is smaller and fits into my jacket’s pocket so that I can carry it anywhere, just like a small notebook. Image on the left: Kindle Touch, next to an iPad 2 to compare the form – factors.

Updated, Jan 8th

A perfect complement for Kindle touch would be this SolarKindle, a cover and solar charger which would be available on the market next January to eliminate your need for charging a Kindle ever again!

kindle – the verb

Kindle, I’m using it extensively for the time being, my reading list is growing huge with so much books, documents to be read. Kindle suits my needs very well, you can make side notes along the lines, like writing on the margins (similar to the layout of this website with notes putting on the left). These notes can later be synchronised to your laptop so that you can re – organise your random thoughts into systematic thinking and schedule. You can also use dictionaries without having to leave your reading. I’m still getting surprises on Kindle’s audio quality and its battery time, you can read, listen to music for weeks before having to recharge.

Xa cách – Tuấn Ngọc 

While I’m trying to develop some home – brew softwares for Kindle (including an email client), I’m also getting sympathised to Amazon’s designs. You would only got a special – purpose machine by removing odd features, confiding yourself to very specific needs, anything rather than reading is strictly restricted. Reading, taking notes, making investigations and drawing out plans are real pleasures, at least for the time being. Just want to discover what I wanna want to do until the time of vanishing out of this earthy world!

I used to criticise reading a lot, and I still do. We’d had generations of parrot – repeating readers already. You don’t have to read (at all), but whatever you read, do it thoroughly. I have to speak straight out, as many of our fellows pretend to read something other reads, listen to music other likes. But the cassock doesn’t make the priest, literature, music… are of personal values. Whatever you read or listen does not matter, it does only matter if you can discover new things out of the contents. I apologise the true readers and listeners, this is specific to my environment only, I get disgusted with all those “fashionable things” going on around down town!

kindle and feeds

After years in IT career facing monitors, it’s now time to care a little about your eyes, and I’m now using my Kindle for reading news, documents everyday! However web browsing on Kindle is quite inconvenient, there’s of course no touch screen (imagine how touch would look like with a 3fps responsiveness display), and the 5-ways button make web pages’ navigation a kind of clumsiness! I was thinking about some form of automation, basically we would need to convert some news-feeds into Kindle’s native format (mobi) for the ease of our reading, the steps below:

We’re going to use Calibre, the famous ebook-converting tool: sudo apt-get install calibre. Or you can install it (binary or source from) on Linux as guided here. The very nice feature of Calibre is that it can fetch news-feeds, parse and format them following a pre-defined rule-set called “recipe”, there’re hundreds of built-in recipes as well (“recipes” are actually python scripts used to parse and layout the data in html and some css). Below is how I fetch feeds from Engadget and VnExpress and convert them to .mobi, the native format that layouts very well on your Kindle:

$ ebook-convert /opt/calibre/resources/recipes/endgadget.recipe endgadget.mobi –output-profile=kindle
$ ebook-convert /opt/calibre/resources/recipes/vnexpress.recipe vnexpress.mobi –output-profile=kindle

Copy the files over your Kindle, the news feeds read out very very nice! (images on the left, click to enlarge). The next step is of course some further automation, you don’t want to do the whole thing manually everyday, do you!? All these works can be accomplished by a shell script, scheduled by crontab! Just have your home server prepare the documents and sync it to you via Dropbox, from which you can download and view on the device (Kindle naturally permits downloading .mobi documents). I’m using this way to serve myself latest news with coffee every morning!

kindle development without kdk

KDK, the Kindle’s Software Development Kit has been released for quite some times but Amazon still strictly restrict accessing to it, many many software developers (like me) have registered and received no reply. It is understandable that Amazon could be skeptical on what to put on Kindle’s app store, but it should not be that conservative toward the developing community. KDK is basically just a PBP (Personal Basic Profile) J2ME (Java Micro Edition) with Amazon’s extension, a Kindle emulator, and some tools…

Having no KDK doesn’t mean that we can not develop software for Kindle! Below are my notes on building, deploying an example application for Kindle. This would make cleared the steps needed to write applications for Kindle without the KDK. Please notes: the information is collected from many different sources, jailbreaking could be considered “illegal” according to some Term Of Use. Use the information at your own risk!

1.   Jailbreaking and usbnetwork

Download kindle-jailbreak and kindle-usbnetwork from here. Choose the files that is suitable for your device, e.g: for my Kindle 3 (wifi + 3G), it would be the jailbreak_0.4.N_k3g and usbnetwork_0.27.N_k3g. Copy the jailbreak_0.4.N_k3g file to your Kindle, then proceed to updating the system. The jailbreak exploits a hole in Busybox implementation to gain root access. Next, do the same thing with usbnetwork_0.27.N_k3g, which provides a secure shell via USB connection.

Launch the Search box on our Kindle, type ;debugOn, press enter to execute the command, then do the same thing with ~usbNetwork to start the sshd daemon. The default configuration would set Kindle to 192.168.2.2 and expect the connected PC to be 192.168.2.1. Now we’ve got root access and the entire FS (file system) in the palms of our hands. Spend some times exploring it, when done, put the Kindle back to normal use by issuing ~usbNetwork again, then ;debugOff.

2.   Key and file signing

This is the most important part! Kindle’s “kindlets” are exactly Java’s jar file with .azw2 extension, however, we can’t just simply copy and run it. The applet is linked against several system libraries located at: /opt/amazon/ebook/lib/Kindlet-1.1.jar and /opt/amazon/ebook/sdk/lib/*.jar (copy these files to your PC for local jar building in place of those provided by the KDK).

The .azw2 file must also be signed with 3 different keys located at: /var/local/java/keystore/developer.keystore and the security policy is defined at: /opt/amazon/ebook/security/. For more information on signing, please refer to this post. If you’re tweaking your Kindle and writing apps for it, I suggest that we would just use the signing key of Andrew de Quincey, the first one to figure out about this, so that free softwares can be easily shared among Kindle’s users.

Configure the usbnetwork interface and access Kindle via sshd. Image below: the command htop running on Kindle’s ssh console.

When finished with hacking, we can un – install these two exploits to restore Kindle back to original state (and receive official updates from Amazon), but that would be after the next section, when we’d been able to deploy our own software on it!

3.   KindleGoban – an example app

I’m going to deploy KindleGoban, a Go (weiqi) game viewer, as an example app. Adrian Petrescu, the man behind this open source game, is perhaps, an insider of Amazon’s KDK project. But technically he’s under a NDA (non disclosure agreement) and won’t be able to say anything except the publicly available information. However, he did indirectly provide valuable resources.

First, copy the developer_keystore (mentioned in #2) to your PC & Kindle (at /var/local/java/keystore/developer.keystore). Then download KindleGoban (and its dependency library KWT. Make some changes to the build.xml to include KWT (adding several widgets) and get rid of the KDK’s stuffs (which we don’t have). Then build, sign and deploy the .azw2 file to your Kindle. And there you are, a nice Go game viewer!

# first, build and sign the jar file
$ ant build.xml
$ jar cvfm KindleGoban.azw2 KindleGoban.mf bin/*
$ ./signkindlet developer_keystore KindleGoban.azw2
# copy the file over to your Kindle, also need
# to copy an example .sgf file for testing
$ scp KindleGoban.azw2 root@192.168.2.2:/mnt/us/documents

4.   Resources

This section gonna be regularly updated on the availability of documents, tools.. for development on Kindle. Please note most of these are from third – parties rather than Amazon, which are the results of hacking, reverse – engineering… and some other information indirectly available from the KDK. At the moment, we only have this official javadoc from Amazon which describes the KDK’s APIs.

  • Savory: a native ebook converting daemon for Kindle.
  • Kindle emulator: need to double check this.
  • KWT: Kindle Widget Toolkit.
  • Mangle: a manga viewer for Kindle.
  • Qindle: a Qt port for Kindle.

KindleGoban screenshots, this is, like most Kindle projects at the moment, is just starting, would expect more features in the time coming.

vietnamese dictionaries for kindle


The dictionaries’ screen-shots

Kindle in my idea, is a very promising device, and I’m compiling, for the purposes of reading, some Vietnamese dictionaries for it. For the Chinese language, there’s no non – trivial solution at the moment, but it’s simple for the cases of English and French. Below are the steps I note down for remembering, it’s just a matter of data conversion and packaging. Non – technical readers can skip directly to step #5 below to download and use the dictionaries.

Dictionaries on Kindle have Mobipocket’s format (Amazon bought Mobipocket in 2005). The data set we’re going to use is available on StarDict in which the English ↔ Vietnamese and French ↔ Vietnamese data was originally created by the author Hồ Ngọc Đức. The data set has some minor holes and errors, but it’s the most usable set for Vietnamese at the moment (many Vietnamese softwares, websites… use this data).

1.   Download the data from StarDict, e.g: stardict-dictd_anh-viet-2.4.2.bz2. Extract it, there will be a .ifo (info) file, a .idx (index) file, and a .dz file which actually has .gz format, rename to .gz and unzip to get the real data file (.dict).

2.   Convert the data to an intermediate format, we’re going to make a tab – delimiter file. Fire – up StarDict utility: stardict-editor, jump to the 2nd tab (Decrypt), browse to the .ifo file and have it convert the data to something like: dictd_anh-viet.txt.

3.   Convert to Mobilepocket format: python tab2opt.py -utf dictd_anh-viet.txt. The python script used to convert data is available at this site and would produce a file like: dictd_anh-viet.opf.

4.   Package the final .mobi file: wine mobigen.exe dictd_anh-viet.opf. The mobigen utility is available from here, for convenient reason, I would just use this Windows’ binary via wine.

5.   Connect your Kindle using USB cable and copy the anh_viet.mobi or phap_viet.mobi files over to the ‘documents’ directory. The dictionaries should be available for use right now on Kindle’s home page. We can also set one of these to be Kindle’s default dictionary so that we can lookup words’ meanings without leaving the document we’re on!

kindle 3


Can not resist to this temptation anymore. Kindle price dropped significantly lately and it’s time to pick a e-ink display book reader for myself. I’ve been curious about electronic paper display, the alternative to LCD or OLED displays widely used on hand – held. Actually there’s been various devices (phone, watch…) which make use of electronic paper, but none has the success like Kindle.

The first impression is that the display, which is 16 gray – scale colors, really looks like traditional paper, and reading on it is an actual pleasure. The screen refresh rate is quite low (maybe less then 6 fps), which means video would never be an option on Kindle. To my surprise, sound is extremely good, the external speaker produces stereo which may be far better than on my laptop. Wifi works fine and the experimental browser (which only supports JavaScript, no Flash, no Java) is enough for basic email and web surfing.

Connecting to my Linux box, the device appears as a normal USB mount to easily copy files over. I find Kindle very suitable for my needs: document reading, a bit of music, and casual web & email. Moreover, Kindle does not create the impression that it is an electronic device. The battery is advertised to last about 10 days (with wifi on, and even more with wifi off), so we don’t have to care about recharging very often. It simply boots up and runs, and displays nice pictures in screen – saver mode.

Amazon recently released Kindle’s SDK beta (Software Development Kit) with Java as the primary language (J2ME), and maybe C/C++ for system development. The machine’s GUI proposes to me a lot of interesting ideas on usabilities and UI design!