Author: jonathanb

  • The Maritimes

    The lighthouse at Peggy’s Cove.

    On the theme of traveling with M&J, upon return of my Magdeburg trip, S and I traveled to the Canadian Maritimes with another M&J couple for a vacation. TLDR/W: Nova Scotia is oddly like Minnesota, with better accents and a bigger lake, and Prince Edward Island was idyllic, if cold.

  • Magdeburg

    I’m back from a quick trip to Germany. M&J had to visit an ophthalmologist in Magdeburg, and the destination seemed like a stretch for them. Worse, yet, there’s no commercial airport in Magdeburg, so we sequenced planes, trains, and automobiles from Arizona to erstwhile East Germany. The response I’ve learned for the question of “Where is Magdeburg?” is that is the birthplace of Georg Telemann, about a 90-minute train ride west of Berlin.

    M&J await their train at Berlin Hauptbahnhof station.

    Adding to the level of travel difficulty, M booked our stay with Airbnb in Neustadt. In the flurry of emails and confusion preceding departure, we misplaced the check-in instructions. Adding insult to injury, we struggled with German telephone numbers, an unfamiliar American iPhone, spotty Internet, forgotten passwords, unseasonal heat, and cranky taxi drivers, so after 18 hours of travel and another 2 waiting outside our apartment, we gave up. Luckily, S saved the day in a pinch, booking our evening at the Maritim downtown, so that we could gather ourselves and leverage reliable Internet to message our host.

    Magdeburg is a lovely town. There are lots of restaurants downtown and a wide variety of architectural styles. There are walking and biking paths up the river providing views of the city’s parks and cathedral.

    One restaurant worth mentioning is Hyaku Mizu in the Pink Palace. Mildly, M&J can be difficult customers, frequently ordering off the menu, always making special requests. Our inability to speak German and scarcity of English-language proficiency in Saxony-Anholt, added additional hurdles. The Hyaku Mizu staff, however, rolled with the punches. For example, when M asked if the curried tofu could be softer, our waitress accommodated, directing the chef to substitute tofu from the miso for wok-fried….

    We spent the next few days settling in, learning how to use the Magdeburg tram system, exploring grocery stores, and shopping for transit services. The latter stemmed from my worries that M&J could not manage to get their bags to the train station, to the bus, to the airport…. so I spent a few hours scouring the Internet for reviews and visiting travel agencies before settling on a booking from Sachsen-Anhalt Tours, where Pfau graciously arranged for someone to take M&J to Tegel Airport.

    The Berlin Cathedral and I crossed paths during my wandering of the city prior to my flight out.

    I left to overnight in Berlin the afternoon before my flight home. Being my father’s son, I’m always a bit nervous getting to the airport and would rather have a short morning trip than a trek to the airport….

    I stayed in Alexanderplatz, which looked like the Times Square equivalent for East Berlin. Everything there is big — the buildings, restaurants, even the radio tower which is still the second tallest structure in the EU. I headed over to Checkpoint Charlie to see the murals and wall remains. On the way back I passed by lovely cathedrals and concert halls in the dusk, ending the night at Hofbrau Wirtshaus for some brew and the grand bierhaus experience.

  • File Editing, Chromebooks, and Development

    Continuing on a tilt from my previous post on developing from a Chromebook, there are still lots of rough edges, even for developing toy projects, primarily stemming from file-system access. A simple rule has kept me out the weeds: for Node.js projects develop only from Android apps using Android app-private storage.

    The File System

    The Termux documentation partitions storage into three categories: private-app, shared-internal, and external. You won’t see the shared-internal storage from Termux until you run termux-setup-storage.

    It appears that under Chrome OS, all Android apps have the same file permissions, which will allow you to edit source files using vim to be read by Node.js, for example. There are, however, lots of operations from Android that fail with shared-internal storage. Creating symbolic links (ln) and updating permissions fail (chmod). Running npm from the shared-internal storage results in lots of errors of the form “Error: EPERM: operation not permitted…”

    The default Chrome OS document root used for file selection runs on top of the Storage Access Framework, but the default root only provides access to video, music, and SD-card, not to the private Android emulator storage. Here lies the obstacle between using Chrome apps to build executables for Termux or Crouton.

    Editors

    Given the rift between Android app-private and shared storage, I find it’s easiest to edit files using Android apps. There are several editors available within a few keystrokes of Termux, e.g. vim, though I wish I knew how to have multiple Termux windows open at once.

    A work around to multiple windows is to use another Android app as an editor. Turbo Editor can access Termux private data once you enable the storage-access-framework option under settings. It provides syntax highlighting for HTML and JavaScript files. Under my installation, it periodically pauses, sometimes forgetting to remove the dialog box announcing the pause.

    Other Directions

    I’ve been scurrying about today looking for alternative methods of editing source code and general file-system access from Chromebooks:

    • Use window.webkitRequestFileSystem() Chrome has supported HTML5 file-system operations for several years now. File access is partitioned by the requesting website and stored locally in Chrome private storage.
    • Chrome app file storage. Google has discontinued support for Chrome apps outside of Chrome OS. Will they do the same within Chrome OS? chrome.fileSystem is not available to Chrome extensions.
    • Chrome storage. Chrome provides a key-value service similar to window.localStorage, except that the data are synced with the user across machines.
    • Expose file-operations to a web client. noide is an Node.js application that provides a web interface to edit source files. It has gyp dependencies that are broken from Chrome OS. There are a couple of projects that provide web-client editor widgets, one could leverage to present a front-end for a file server build with Express.
    • Use Eclipse Che or Cloud 9, but that’s not really developing on a Chromebook….
    • Switch to developer mode and replace Termux with Crouton, which reportedly yields a more faithful Linux experience, including running Electron.
    • Drop any notion of keeping local files.