Dear e-Reader Producers and Engineers

As an avid reader, here is what I expect to find in an e-reader.

Media support

The more the better, as long as it is a text media file. I do not need image support (as in galleries, photos), I do not need audio support (as in mp3, ogg), I do not need movie support (as in avi, mpg)! I want to store many books (pdfs, plain text, html, latex, man-pages), and read them. That’s it… Seriously… I really just want your e-reader for, you know, reading!

Fonts

Independent of media format, I want to be able to select my favorite font for reading. That also means, unless you have licensed every existing font and ship it with your device, I can drop a TTF (or some such) onto the reader and select it. I want to freely change the font size. Not between tiny and extremely large, but in 0 – ∞ points/pixels.

Text Flow

Again, independent of media format, I want the best possible text flow on the display. I don’t care about the layouter’s fancy ideas regarding paragraph length, indentation, margins and paper size. I’m not reading text on a letter-sized, A2, A3, A4, A5, whatever-size sheet of paper, I’m reading text on an e-ink display with a 5-10″ diagonal and X by Y pixels. So whatever text I’m reading, better be perfectly reflowed for the e-reader’s display.

Software Usability

I don’t need or want your super-special online bookstore, or super-special, super-wonderful synchronization crapware that only works on Windows 7. I want to drag-n-drop the files in my file explorer, HID USB Mass Storage Style that works anywhere, anytime, on any OS.

Since I want to read HTML documents, you’ll need to include a decent HTML render and browse component (hint: webkit). But stop right there, I do not want a full online browser, e-ink display refresh rates don’t make this a very usable or enjoyable experience.

Make it easy to search for a book title, really easy! Modern storage media will let me store thousands of books, a fact you so readily advertise. Showing me thousand books, ten books a page isn’t usable, it’s a cruel joke! I don’t need book covers or icons, I need titles, authors, categories, tags, bookmarks! I need a search that lets me find a certain book about ip_filter and nat setup on linux, a search that lets me find that fantastic recipe for chocolate macadamia cookies, as search that lets me find the one passage with that funny quote in that one book I can always only remember half of.

Don’t impose your tags and categories on me, let me use mine instead. I know much better than you, how I want organize my books (alphabetically by title? by date of release? by count of words? by file size?), so make as much information about a media file available as possible and let me decide what I want to see, when and where I want to see it.

Some bonus thoughts and tech tips on that: use a database like sqlite for metadata storage, add new documents and media info as discovered, scan in reasonable (or even better configurable) intervals for changes (some file systems have journals, if you used that, no need for intervals), create a GUI from browser component, render database information as HTML, make this easily customizable (use lighttpd and lua for scripting this and let us hackers access it).

Hardware Usability

While I do like the thought of note taking on such a device, any input method has so far appeared to be cumbersome. Tiny, cheap unresponsive alphanumeric keypads waste space, are uncomfortable and frustrating to use. Stylus input is laggy due to slow refresh rates and the reflective screen covering nullifies the readability comfort of e-ink displays. Touch displays have much the same problems as the Stylus based displays and add fingerprints and smudges to it. Thus your e-reader should not include note taking, unless you come up with a much better alternative to Touch and Stylus displays.

I do not need or want WiFi, 3G or some other wireless connection in my e-reader. I’m going to drop several hundred books on it, and not bother with it, until I’m through with most of them. If I need any more books or am out of battery, I’ll grab the micro USB cable and hook up the e-reader to my PC or laptop. Those people with social network dependency or constantly-online ADD are most likely not your target group, these people want “flash-n-bang” iPads, not “blink-blank-refresh” e-readers.

The less buttons, the better. By no means does this mean no buttons what-so-ever, though. It means some navigational buttons like a d-pad, and at-most one previous page button and one next-page button.

The casing should be made only from very durable and forgiving off-white plastic. Not black, not pink, not puce, not lime. And leave off any cheap chrome trimming, this only creates reflections and glares. I’m reading lots of text and I don’t want any distractions like absurd contrasts between the display area and casing. If you must absolutely add your device name, company logo and other silly stuff, put it on the back. I do not need to constantly see the name of the device or your company, I already chose and bought it. If you want others to see that stuff, the back is probably the perfect place, too. You know, because since most of the time the front with the display will be facing me, the back will be facing everything and everyone else.

Summary

Make me an e-reader that is only good for reading, storing and organizing lots of books in any form and nothing else. But make it do that extremely well.

Thank you!

Require, Include, Once, Autoload?

I have seen a few PHP performance tips lately that have me worried. A common tip found, is something along the lines of “Don’t use require_once/include_once” and also “Don’t use autoload.” The implications of following these tips are troublesome to say the least.
Read more of this post

Code Stutter

In all my experience as programmer (~9 years) I have contemplated, seen and created a few coding and naming conventions. But there was one kind of convention that always struck me as odd and lately as extremely annoying.
Read more of this post

PHP and PDO – Use it!

A lot of novice programmers exploring object orientation get their feet wet by implementing a database abstraction class. It’s a good learning assignment, but has no more use in production code ever since PHP introduced PDO.
Read more of this post

I want LISP but I don’t want LISP

LISP basically has everything I as a developer want. But somehow I just can’t bring myself to touch it with a ten-foot-pole. Maybe it’s the parenthesis ridden syntax, maybe it’s the functional paradigm, maybe it’s its mostly academic nature. Maybe it’s my preference for curly-brace languages, or my preference for object orientation. Maybe it’s those weird cons data structures and the equally weird car, cdr functions. Like LISP, Haskell and Erlang scare me. They have awesome concepts, programs can be mathematically proven to be correct, support parallel computing and more. Yet it’s that very mathematical nature that makes me uneasy. Math never held much fun or interest for me. It has always been a chore, a means to an end.
Read more of this post