reMarkable e-Ink Tablet Review

I’ve long fantasized about an e-Ink tablet: something I could use for writing, sketching, and reading. The battery life, the “flat” appearance, etc all seemed perfect. Up until now I’ve settled for a Kindle for reading, chaffing against the Amazon ecosystem. I periodically look for Arduino or Raspberry Pi compatible e-ink displays (larger than 4”) that I might be able to hack into something larger, but always come to the conclusion that I don’t have the bandwidth for a project of that size. Back in December I came across the reMarkable, which promised a “paper-like” e-ink experience. No app store, no browser, just a pad of paper and document viewer.

My reMarkable arrived a few weeks ago, and I’ve been carrying it with me to work and to coffee shops since. Overall I’m impressed with the hardware and the writing experience. I suppose this shouldn’t be a surprise given their stated goal: a paper tablet. But I am surprised: the latency of the stylus and tactile feel against the “canvas” display is excellent. It’s by far my favorite part of the reMarkable experience.

Even though I pre-ordered, I was skeptical of how low the latency of a stylus on e-Ink could be. That bar was further raised when I started using an iPad Pro with the Apple Pencil for drawing. After using the reMarkable for a few days to journal, take notes, and doodle, it was clear that it’s a completely different animal than the iPad + Pencil. The friction between the tablet and the stylus brings a tactile feel to writing that a glass display just doesn’t have. Quite simply, the reMarkable team has done a better job transposing the paper experience to something electronic than I expected.

So if I was skeptical and still pre-ordered, why? I assumed that even if (when) the writing/drawing experience fell short, I’d still have a “big Kindle”, something of a dream. I had been reading more on my iPad when I ordered, and while I liked the bigger display, I wished it was e-ink display. Turns out my expectations were completely wrong: as good as the writing experience is, the ePub reading experience is bad.

Specifically, the ePub reading experience is bad. It’s slow to render, and frequently skips pages, mis-renders them, or gets stuck with strange page or column breaks. It’s simply not usable with ePub documents at this point. The reMarkable does much better with PDFs: in my experience thus far they render accurately and reliably, and it’s easy/natural to make notes or annotate them.

I think this reveals the reMarkable’s strength and technical approach: it’s a hardware PDF reader and annotation device. And in that capacity it’s very good.

Luckily the hardware feels more mature than the software package. I have found that the three buttons — previous, home, next — aren’t positioned great for writing full pages: my palm occasionally presses one, jumping me to the next page. I’ve taken to rotating it 180 degrees while writing to keep the buttons out of the way. It’s also not clear to me what sort of life I should expect from the stylus nibs: they’re clearly replaceable, as the device comes with 10 replacements. After I’d used the reMarkable daily for a couple of weeks I found the digitizer had started missing strokes on occasion. As an experiment I replaced the nib, and the problem went away. I’m going to stretch this second one as far as I can to see what sort of life I can expect.

Finally, the reMarkable has the best free software compliance of any hardware device I’ve seen: the settings dialog clearly lists every piece of open source software used, along with its license. Because some of the software is GPLv3 licensed, they also provide root access to the device over SSH. Poking around it appears that it’s running a QT Embedded application on Linux. I’m planning to try some other experiments when I have a moment (can I write a piece of software that uses the e-ink via frame buffer?).

Overall the reMarkable has been a fun device to play with. It’s replaced my paper journal for the last three weeks, and I’m experimenting with how it might replace other paper that remains in my life. I haven’t quite figured out how it complements or meshes with my iPad Pro, but it definitely doesn’t replace it: the Pro is (ironically?) a much more general purpose computer than the reMarkable.

Galaxy S (“T-Mobile Vibrant”) Tethering

Seeing Tim Bray’s post on how much he loves tethering his Nexus One reminded me that I wanted to document that this does, indeed, work on a rooted Galaxy S. The day after I wrote up my experience with [STRIKEOUT:hacking]fixing my Galaxy S, I left for a four day trip to Washington, DC. The trip was great, but the best part was not paying for wifi at Washington Dulles while I waited for my return flight. Because I had rooted my phone (ridiculously easy these days; go, do it, even if you don’t apply the other fixes), I was able to install android-wifi-tether (2.0.5-pre8, to be specific). For some reason the Galaxy S doesn’t work in infrastructure mode yet, but after setting up a connection profile with a static IP in the correct range (192.168.2.x, by default), setting the gateway (, by default) and Google’s DNS servers (they’re easy to remember), I was able to get right online.

I love the graph of the stock price of navigation companies when Google announced they were doing turn by turn navigation for free. I wonder if we’ll ever have the joy of seeing a similar graph for Boingo, et al. Probably not — there will still be lots of people with devices that only have a wifi chipset — but a guy can dream.

date:2010-08-29 15:56:18
tags:android, galaxy s, tether, wifi

Improving a Samsung Galaxy S

I stood in line almost two years ago for the G1. And earlier this year I finally got around to rooting it and experimenting with custom ROMs. The G1 served me well for a long time, but last month I decided it was time for an upgrade, and picked up the “Samsung Vibrant”, T-Mobile’s version of the Galaxy S.

I love the display on the Vibrant, but Samsung’s custom skin — TouchWiz, or “iPhone for Android”, as I think of it — leaves a lot to be desired. AWN.Launcher goes a long way, but the presence of an icon to watch the included version of Avatar — an icon you can’t remove — continued to gall me every time I opened the application list. The real problem, though, is the lag issue. According to the specifications, there’s no reason this phone shouldn’t hum along without complaint. But I was consistently seeing lags, pauses, and stutters when opening or switching applications. Samsung’s “online support” wasn’t exactly helpful — “why don’t you wipe the phone clean?” Ridiculous.

Ridiculous, yes, but that is what I did yesterday afternoon. Of course, I wiped it in preparation for rooting, applying a “lag fix”, and generally ripping pieces out. While there’s not a Cyanogen ROM for the Galaxy S yet, the community has been industrious. In the end I followed a couple of different guides on the path to fixing my phone:

  1. I rooted the phone using theinstructions in the Cyanogen wiki
  2. I followed most of the “How to make the Vibrant software not suck” tutorial (in a slightly different order — I rooted and installed Clockwork Mod Recovery first). This included fixing GPS. (Guess I won’t have to wait until September to use Maps effectively.)
  3. I applied this experimental lag fix (more on that below).
  4. I ripped out lots of the bundled crap, including Telenav, Avatar, Layar, and the TouchWiz widgets
  5. I installed the Desk Clock, Calendar, and Music applications from the Nexus One. As someone pointed out, the included Desk Clock doesn’t even have a clock. And the bundled Calendar is just a little to, uh, vibrant for my taste.

So far everything seems to be working fine. The lag fix, in particular, makes the phone seem to live up to its promise. According to the xda forums, it would appear that the issue has to do with the filesystem Samsung is using for the internal storage, RFS. In particular the fact that it doesn’t do write buffering. The fix creates an EXT-2 formatted loopback device and moves much of the important bits onto it. With all the caveats about benchmarks, Quadrant showed nearly a 3 times improvement in performance, and it feels like it, too.

Thanks to @GalaxySsupport for suggesting I wipe the phone: it was indeed the first step to massive improvements. And while I may no longer have a warranty, I now have a phone that works great.

The funny thing about that icon is that it’s apparently just a symlink to the included microSD card; replace the card with a larger one (like I did), and the icon just pops up a “file not found” message when you click it.

Samsung should be particularly embarrassed by the TouchWiz Dual Clock widget. Yes, you can show two clocks. And yes, even though you tell it what time zone to display (and it knows the date), you have to manually adjust for Daylight Saving Time. Do I have to wind it daily, too?

date:2010-08-22 14:45:51
tags:android, cyanogen, galaxy s, samsung, vibrant

Batteries Included (or, Maildir to mbox, again)

UPDATE 7 June 2010: Added usage information to docstring.

UPDATE 30 January 2012: Frédéric Grosshans has provided an updated version that supports nested maildirs; you can find it at github. YMMV.

My script for converting maildir to mbox continues to be one of the most popular pages on (according to Google Analytics). Of course, even after I updated it slightly in February, it still had a couple of bugs, likely introduced when I converted the page from MoinMoin to WordPress. This afternoon I finally decided to clear out the pending comments about those bugs, and update it.

While looking at the Python documentation for the `mailbox <>`_ package included in the standard library, I realized it could probably be simplified even further by using the library’s native `mbox <>`_ support. I’m also more comfortable using the standard library’s implementation of mbox rather than my hacked up raw file implementation (who knows, the standard library may do exactly what my script did: I’m not an mbox expert by any stretch of the imagination).

The new script is below. I should note that it’s received very little testing, and I make no guarantees. I also should note that there is nothing creative or original about this. It just uses Python’s excellent standard library. As they say, “batteries included”.

    /del> coding: utf-8

“”“maildir2mbox.pyNathan R. Yergler, 6 June 2010

This file does not contain sufficient creative expression to invokeassertion of copyright.  No warranty is expressed or implied; use atyour own risk.


Uses Python’s included mailbox library to convert mail archives frommaildir [] to mbox [] format.

See for full documentation on this library.


To run, save as and run:

$ python [maildir_path] [mbox_filename]

[maildir_path] should be the the path to the actual maildir (containing new, cur, tmp);

[mbox_filename] will be newly created.“”“

import mailboximport sysimport email

    open the existing maildir and the target mbox file
maildir = mailbox.Maildir(sys.argv [-2], email.message_from_file)mbox = mailbox.mbox(sys.argv[-1])

    lock the mbox

    iterate over messages in the maildir and add to the mbox
for msg in maildir:

    close and unlock
date:2010-06-06 13:04:29
tags:maildir, mbox, python


People put a lot of time and effort into reading the Apple (and Steve J.) tea leaves: what will be announced, when, and will there be “one more thing”? I’ve put next to no time into this, but wanted to document my WAG — wild ass guess — for WWDC this year. I should note: I use a Macbook, but these days Mac OS X is basically a run-time for Firefox for me (my primary machine these days is a Thinkpad running Ubuntu). I use an iPod Color 60GB, and haven’t seen the need to upgrade yet. I haven’t seen an iPad in person. In short, I’m hardly qualified to make predictions about Apple corporate strategy. But that doesn’t seem to stop anyone else.

I believe Apple will announce that you’ll be able to run iPhone OS applications on Mac OS X. Why? Well, it just seems like it fits.

  • Apple is obviously investing heavily in iPhone OS. One indication of its importance is that the Apple Design Awards are limited to iPhone OS applications this year.
  • As the iPad has launched, and developers have been crafting applications to watch video, read news, and listen to public radio, the question has been raised: why weren’t people creating applications that looked this good for laptops? I’m sure people using Macbooks would love to have some of those apps. (I really don’t believe iPhone OS has any secret ingredient that suddenly enables ABC to create a video player.)
  • Apple’s restrictions to the iPhone SDK agreement, prohibiting the use of third party development tools, will allow Apple to easily switch hardware platforms, ala PPC to x86 — or support an additional architecture if needed. You know, an additional architecture like x86.
  • Apple has experience with compatibility virtual machines (see: Rosetta), as well as LLVM. You can imagine these experiences informing support for running iPhone OS applications in a sandbox on Mac OS X, or re-targeting the application at compilation time.
  • Finally, and perhaps most importantly, it inserts Apple into the middle of additional software purchases, enables them to leverage the App Store further, and exert additional control.

So that’s my WAG for WWDC. I think it’ll be sold to developers as a way to reach new users, and provide an end-to-end, mobile to desktop experience (I won’t be surprised if they launch improved, wireless sync between your iPad and Mac at the same time — syncing documents between iWork for iPad and your Mac sounds like hell). I think it’ll be sold to users on security and stability: iPhone OS applications would almost certainly have limited privileges on the desktop, and if you replace your laptop, logging into your iTunes account would sync your apps back to the machine.

If I’m right, users will undoubtedly begin to see [beautiful] software stream onto their desktops from a single, tightly controlled pool, and developers will devote hours crafting tools with the hope they’ll pass muster, and make it into that pool. If I’m wrong, well, I’ve been wrong before. And this is just a wild ass guess.

date:2010-05-08 23:33:20
tags:apple, iphone, wag, wwdc

Remembering with org-mode and Ubiquity

Yesterday evening I published my second set of Ubiquity commands which provide a Ubiquity interface between Firefox and Emacs — specifically org-mode — using org-protocol. Ubiquity is an experimental extension from Mozilla Labs that lets you interact with the browser by giving it short, plain text commands. For example, “share” to post a bookmark to Delicious, or “map” to open a map of the selected address.

Org-Mode is an Emacs mode that can be used to keep track of notes, agendas and task lists. I use it to maintain my task list for various projects and take notes when I’m in a meeting. I really like that while it’s an outline editor at heart, it lets me write lots of text and go back later and figure out what’s actually actionable, as opposed to maintaining separate notes and task lists. org-protocol is included in recent releases and lets you launch an instance of emacsclient with some additional information (i.e., the URL and title of a web page, etc) and take some action on it. One of the built in “protocols” is sending that information to remember mode, which org-mode augments.

The main command is simply remember. Invoking it will send the current URL and document title to org-mode’s Remember buffer. You can optionally type a note or select text in the page to be captured along with the link.

Once you’re in the buffer you can make any changes needed and then simply C-c C-c to save the note, or C-1 C-c C-c to interactively file the note someplace else. I’m using this command to quickly store links with some notes to project files. I hope this will be particularly useful when I run across something for a project I’m not actually able to spend time on at the moment.

Note that before using the commands you need to configure Firefox to understand org-protocol:// links, and need to configure a remember template. The template I use looks like:

(?w "* %?\n\n  Source: %u, %c\n\n  %i" nil "Notes")

This store the information in the Notes section of my org-default-notes-file and positions the cursor ready to type a heading.

To install, visit the command page and click “Subscribe”in the upper right hand corner when prompted (this assumes you have Ubiquity already installed). You can find the Javascript source on gitorious; I’ll be adding my RDFa commands to that repository as well.

date:2009-10-07 12:52:04
category:development, geek
tags:emacs, firefox, mozilla, orgmode, ubiquity

RDFa Bookmarklets for Ubiquity

I’ve been aware of Ubiquity since it launched and have meant to dig in and play with it for a while. I’m becoming increasingly reliant on my keyboard for fast interaction with the computer; I blame gnome-do. So using the keyboard to interact more quickly with my browser had a lot of appeal.

Today I finally installed Ubiquity 0.5 and looked at converting the RDFa bookmarklets to Ubiquity commands. The bookmarklets are invaluable for debugging and exploring RDFa, but I don’t use them often enough to feel like I want them on my bookmark bar all the time.

Turns out that Ubiquity makes it really easy to convert a bookmarklet to a command. I’ve converted the Get N3 and RDFa Highlight bookmarklets and made them available. I’d like to convert the fragment parser as well but I think that’ll be a little more involved.

To use the commands, just install Ubiquity 0.5 (or later for you visitors from the future) and visit the commands page. You’ll see a notification at the top of the browser window asking if you’d like to install the commands.

date:2009-07-11 09:58:28
category:development, geek, projects
tags:firefox, javascript, rdfa, ubiquity

Open Access and Linked Data

I traveled to the midwest late last month and made a few stops, including PyCon and a brief visit with my parents. In between those two bookends I spoke at University of Michigan’s Open Access Week and had a few meetings with various parties. My topic was pretty broad — CC and Open Access — but I was [personally] pleased with how the talk came together. I’d like to re-create it for the purpose of creating a slidecast; maybe sometime soon.

In putting together the content I realized that while I had this gut level, assumed knowledge about what Open Access is, I hadn’t ever read a definition or really delved into it. When I read the Budapest Open Access Initiative, one part stood out to me.

By “open access” to this literature, we mean its free availability on the public internet, permitting any users to read, download, copy, distribute, print, search, or link to the full texts of these articles, crawl them for indexing, pass them as data to software, or use them for any other lawful purpose, without financial, legal, or technical barriers other than those inseparable from gaining access to the internet itself.

Well of course it stood out to me, it’s a core descriptive sentence. But in particular, “availability on the public internet, permitting any users to read, download, copy, distribute, print, search, or link to the full texts of these articles, crawl them for indexing, [or] pass them as data to software.” Interestingly this sentence ties right into the other meetings I was having that week which all seemed to come back to linked data (in particular RDFa). If you think about it, this sentence has implications that make OA materials perfect for linked data integration. It implies:

  • you have a stable, unique URL for the work
  • there isn’t a paywall or login requirement in front of the actual work
  • there isn’t any user agent discrimination — text in a Flash viewer need not apply (I’m looking at you, Scribd)
  • they’re in a format that’s useful as data; maybe [X]HTML?

So we have a growing corpus of information that’s ripe for markup with structured data. We’re doing a lot with embedded, structured [,linked] data right now at CC (things we need to do a better job talking about). I find it reassuring that the principles other efforts value mesh so well with what we’re doing.

date:2009-04-20 18:06:50
category:cc, geek
tags:cc, linked data, oa, open access, rdfa

Slides For All Audiences

Tufte tells us that filling our slides with reading material is bad form. I try to keep this in mind when putting together talks (with varying degrees of success), and am reminded of it when I attend a conference. Usually there’s at least one presenter who has really compelling material, but terrible slides. The thing is, they’re probably great slides for certain audiences; namely, the audience not in the room. If you’re reading them after the fact, text heavy slides can give you the full picture, where arguably Lessig-style slides (on their own) can not.

Slideshare, an online site for publishing your slides, has a feature that’s new to me: “slidecasting”.

Slidecasting 101

Slidecasting involves taking an audio track and syncing it with your slides, giving you the best of both worlds. Right now it requires uploading an separate MP3 file and manually syncing it with your slides. Extra effort on the presenter’s part, but arguably worth it if you’re trying to reach the broadest possible audience with the greatest efficacy.

It’d be great if Slideshare supported some standard [“SMIL?” he asks with no real insight into the specification] that allowed you to upload the synchronization information without using their web-based tool. You can imagine an application or plugin that records during a presentation, noting timestamps for slide changes, and generates a set of files immediately suitable for upload.

date:2009-02-18 10:13:34
tags:presentation, slides, spoken word

Upgrading WordPress

WordPress 2.6.1 is out. Reading feeds on my flight from IND to PHX this afternoon I ran across the WordPress Automatic Upgrade Plugin (shouldn’t that be the Automattic?). Nice, but I’d like to plug my approach to managing WordPress upgrades, which I think is even easier, assuming you’re OK with minimal command-line interaction.

First, install WordPress from a Subversion checkout; do: “ $ svn co“ instead of downloading the .zip or .tar.gz file. Configure as directed.

Then, when a new version is available, log into your webhost and run: “ $ svn switch“ from your install directory.


Note that you can also do something similar (but an order of magnitude more complex, at least for my brain) using git and git-svn if you want to version your local settings as well. Perhaps one day Asheesh or I will get that written up.

date:2008-08-21 17:33:19
tags:git, subversion, upgrade, version control, wordpres