I first started using the vi editor more than ten years ago while in college. However, I only mastered the very tip of the iceberg (moving around, searching, saving, etc) and never used it as my primary editor. As I started my software development career, my interests in vi all but vanished as I generally used the text editor that was part of an integrated development environment (IDE).

Now, however, I'm experiencing a resurgence of my own interest in mastering vi for two reasons. First, I found myself having the need to traverse through server-side configuration or log files more. Vi, coupled with proven command line tools such as grep and sed, etc, is almost universally available on any server and very powerful for this need. Second, I have increasingly found that my wrist and arm feel a slight discomfort when reaching for the mouse, one of the many early warning signs of repetitive strain injuries (RSI). Using a text editor fully enabled for keyboard navigation allows me to keep my hands on the keyboard at all times, vastly improving my posture.
_My inner geekiness was calling when I saw the recent surge in popularity of mechanical keyboards. What's so unique about them that warrants a 5x to 10x price premium over a regular, rubber-dome (99% of keyboards out there) one?

I had to find out, so I purchased one myself. I couldn't stop typing on the thing!

For some reason, typing on a mechanical keyboard is immensely satisfying, hearing that clicky sound and feeling the tactile feedback through my fingers.  On the other hand, it could also be due to post-purchase rationalization. :) Either way, it's a treat to my fingers as they spend more than eight hours a day typing away. They warrant the best keyboard the world has to offer. OK, maybe not the best, but darn close.

I may be moving ningtan.com yet again. Thinking about using a VPS at linode.com. This way I can have complete freedom to experiment with the site.
Enterprise software: built to be infinitely customizable using massive amounts of work to just short of your actual needs but no farther, and filled full of sharp edges to cut yourself on.
-- Anonymous
Amazon recently introduced native PDF support for the Kindle 2 e-reader and dropped its price to $259. I have a fair number of programming PDFs and always avoided reading them systematically because of the eye strains associated with staring at a computer screen for a long time. E-readers, on the other hand, do not suffer from this problem as they use e-ink and do not require back light.

My Kindle 2 arrived last weekend. I played with it for several days and unfortunately decided to return it.

First, I actually liked the Kindle 2 a lot and really tried hard to keep it. The Kindle 2 has an excellent form factor and feels great in hand. Text was crisp, and the unit generally had good response. It's great for reading novels that do not need sophisticated formatting, On the other hand, PDF support, which is the main reason I bought it in the first place, was not entirely satisfactory. I was hoping for the contrary, but it turns out that the 6" screen was hardly enough to support a pleasant PDF reading experience. You can't resize, zoom, or reflow PDF documents. You can't change font sizes. The only option for larger fonts is to switch to landscape mode. It was a bit better that way, but I had to hit "Next Page" repeatedly to see the remaining portions of the page. It got tiring pretty quickly. Also if you have a two-column scientific paper, imagine how many "Previous Page" and "Next Page" clicks you have to endure. Ugh...

You do have the option to convert PDFs to a more Amazon-friendly format that supports larger font sizes:
  • you can e-mail the PDF to yourname@kindle.com or yourname@free.kindle.com to convert it to Amazon's native format (AZW). The former automatically pushes the converted document wirelessly to your kindle for $0.10 each. The latter e-mails back a link to download the document yourself for free; then you can drag it onto the Kindle via its USB interface.
  • you can use free software to convert the PDF yourself. I tried both MobiPocket Creator and Stanza. Both work similarly, but MobiPocket Creator is a bit more complex to use.
At the end of the day, however, none of the above was 100% satisfactory. It turns out that nobody was able to convert one of the technical PDFs I had with acceptable results. An entire family of fonts that was used to display source code could not be converted; therefore, all source code disappeared from the output, unacceptable for a programming book. Formatting such as tables and quotes was routinely converted to plain text and hard to understand. By the way, the same PDF displayed beautifully in Kindle's native PDF mode, all formatting preserved. That is, if you don't mind holding a magnifying glass to read it.

After my little experiment with the Kindle 2, I did learn some valuable lessons though. I didn't realize how important and convenient it was to be able to read one whole PDF page without back-and-forth "scrolling". That tells me that none of the 6" e-readers will give me a satisfactory experience even if they support  PDF reflowing (essentially reformatting the PDF with a larger font size but significantly altering the layout of the book in the process). Therefore, I've given up trying the Nook or any of the Sony readers similar in size.

It seems that after the Kindle 2, the only e-reader I'm currently interested in is its big brother--the 9.7" Kindle DX. I've seen several youtube videos that examine its PDF displaying capabilities. It seems promising. On the other hand, the DX still retails for $489, primarily for the lack of competition in its size range, I assume. You can buy a lot of books with that money.

So here goes my mini Kindle 2 review, primarily focused on its PDF capabilities. I hope the review's been helpful for somebody out there with similar requirements.

Overall, I remain very enthusiastic about the prospect of my owning a e-reader sooner rather than later. Don't take this review as a completely negative experience. Please see past the shortcomings of one particular offering for my needs. I'll report back when and if I muster enough courage up to get the DX.

P.S. The Kindle 2 does natively display PDFs with Chinese characters, therefore rendering things like the Unicode font hack partially obsolete--I say partially because I don't think Unicode support is enabled for the native Kindle format (AZW). Also I assume that Unicode PDF support is generic, and that other major languages are supported as well. I have not verified the assumption.

My wife and I do read a fair amount of Chinese content, so it was a huge plus for us. I'm sure there are a number of working workflows for getting a Chinese novel onto the Kindle 2; mine is as follows:
  • Start with a document in a common format. You can download a lot of novels in plain text nowadays. I assume HTML or Word docs should also work but didn't try one myself.
  • Make sure the encoding is UTF-8. If not, it's likely either GB or Big5 and needs to be converted to UTF-8. I only tried a GB document myself and assume a Big5 one should work similarly.
  • I used Office 2007 to load the txt file and reformatted it using the SimHei font with a size of 20 (because you can't change font size in the Kindle 2, you need to do it now to get a comfortable size. If 20 doesn't work for you, just rinse and repeat :)
  • I save the document as PDF (Office 2007 has a PDF writer!).
  • Drag and drop to the Kindle 2 via USB.
That's it! Enjoy reading on the Kindle in your favorite language. No scary hack required.
Back then I wanted to pick up a rapid prototyping language and couldn't decide between Python and Ruby. I asked wife for her expert opinion. She picked Ruby: python is a snake and ruby sounds much more exquisite.

Sounds good to me.

It's a pretty exciting time for people that enjoy writing software.

First, we see a proliferation of new, specialized programming languages that may be more suitable for a particular need than (relatively) "boring" languages of yesteryear. For years, OOP with C++ and Java seemed to be 95% of what people used and needed. Anything else looked less "enterprise-worthy". Today we see large software being built using dynamic languages such as JavaScript, Python, and Ruby. Consider Erlang if high concurrency is required of your application. Maybe try Scala to see whether its scalability claims are true. Feel free to mix (or replace) OOP with functional programming if the latter is more suitable to the task at hand; I've seen some extremely elegant Clojure code.

Application developers now enjoy an explosion of free frameworks and software packages. Need a messaging system? How about RabbitMQ? High performance cache? You have memcached. Developed a SQL allergy after many years of relational (and object-relational) torture? Try CouchDB, MongoDB, Voldemort, Redis, and <insert your favorite document database or key/value store here>. Like modular Java offered by OSGi but have to code in Flex? Take a look at Potomac.

At the end of the day, none of the above exciting choices really matters, of course, unless the language, framework, and tools chosen are appropriate for the software you are writing. It makes little sense to use a new language or framework for a production system only to experiment with it. A good developer also more than likely has a certain comfort zone in which s/he is most productive. But what happens when the most suitable choices are outside of my comfort zone? I promise to keep an open mind and jump out of the zone if required. Hey, I might learn a thing or two.




    December 2011
    July 2010
    December 2009
    November 2009