24 September 2023

Chromebook and Linux for Travel and Photography

I enjoy making the most of lower-end devices and appreciate economy, portability, and ruggedness. For a travel computer, I want something that I can throw into a bag without much worry about cushioning, that I wouldn’t have spent so much on that I’d feel far out of pocket if it were lost, and that I might even be able to unfold on an airplane seat. Long battery life is another desirable attribute. So, I bought a new 11” Chromebook, of the sort designed to be handled roughly by school kids, a Dell Chrome 3110 2-in-1. It has 64GB of storage and 8GB of RAM, with a Celeron N4500 processor. (Note: there’s also a 32GB/4GB version of the same model, which seems to have better availability. I didn’t want or select that one.) The keyboard has a good feel and a comfortable amount of travel. As a significant extra bonus for me, it includes native Linux support, which fits many of my preferences and application needs.

I attempted some photography and photo processing through it before traveling:

  1. Take RAW photos in rather dim weather.
  2. Extract memory card, plug into Chromebook via USB card reader.
  3. Select-all of RAW files on memory card, copy to folder on Google Drive. I was interested to see that it copies many files in parallel with individual completion indicators, maximizing use of available bandwidth. I subsequently found that it’s not necessary to do the manual select-all, and can instead just copy a folder. Nonetheless, it still takes a while to push many RAW files through the 12Mb upload speed of a cable Internet connection.
  4. Find that Google Photos doesn't support Canon CR3 RAW format.
  5. Enable the Chromebook’s Linux development environment, which I believe is included on at least most fairly recent Chromebooks, obtaining a shell in a Debian instance.
  6. In a spirit of "why not?", install Darktable as a Linux app on the Chromebook, via Flatpak to get a more current version than the older one in the Debian repository. Icons for Linux GUI apps appear alongside other Chrome apps in a folder named "Linux apps" so you can launch them alongside anything else you run in a Chromebook like the native apps or Android apps. Clever.
  7. Launch Darktable and import photos from Google Drive. This creates references only, not retaining the raw files themselves within limited Chromebook storage. From the ChromeOS environment, it’s necessary to use a menu option to grant folder access to Linux. Darktable’s sidecar files appear alongside in the Google Drive folder and can be accessed later to preserve edits made when mobile. Some patience is required as new photos are imported and thumbnails are generated.
  8. Raw-develop and edit with Darktable, as if on a more powerful computer though slower and obviously with a tiny screen; raw development takes a few seconds on a 32 MP RAW file, but works.
  9. Export generated jpg back into Google Drive.

I'm impressed that this is possible and, after a trip where I shot about 1400 photos, found that it offered a useful travel capability for archiving and for developing, editing, and posting a few shots while on the move like this Sandhill Crane:

I imported daily folders with a few hunderd RAW images into Google Drive and watched them synchronize through hotel WiFi into the cloud in under an hour, but the actual elapsed time depends critically on tha available upload data rate. (Warning about hotel WiFi, BTW: if a Chromebook is freshly started, it may have trouble launching a new Linux container instance until normal Internet access is available; a captive hotel login page may not suffice. This didn’t seem to be a concern if the Chromebook already had a live container and was just being resumed after suspension.) If the Chromebook went idle, the sync paused, but it resumed in place once the machine was awake again. It was notable how Google's integration between the Drive file system and the Linux container "just worked", and that the Darktable instance was able to find a folder there via its chooser.

A few things I’d like to improve for a next round:

  • Automate extraction of images from a camera memory card into folders organized by days, keeping accumulated images on the card but also copying each into Google Drive once and only once. It may also be useful to explore camera options for folder placement and photo numbering to better facilitate this.
  • Figure out how to keep Google Drive’s cloud sync uploading actively even when the Chromebook is otherwise idle. (There may be an obvious configuration option somewhere that does this, but I haven’t yet stumbled on it.)