Jonathan. Frech’s WebBlog

A Month of Pining (#237)

Jonathan Frech,

Precisely one month ago, I opened a long awaited parcel shipped di­rect­ly from Hong Kong: my very own Pinebook Pro had arrived. Eager to further my grasp on both soft­ware and hard­ware freedom, I unwrapped my mail and began to incorporate pine64’s flag­ship lap­top into my workflow. Accompanying this journey, I wrote a diary which I share in this post.

Whilst a Pinebook may not boast with specs of per­for­mance, novel input methods or included licenses, it is part of a niche com­put­ing sector which values and upholds principal human rights even in the alien realm of microprocessor-based tech­nol­o­gy. Following my steadily growing discomfort re­gard­ing my com­put­ing equipment over the past months, I hoped for the Pinebook Pro to in­tro­duce me to a world of productive, in part minimalist and most importantly truly free com­put­ing ex­pe­ri­ence. After a month of usage, I can confidently proclaim it to have delivered on this front more sat­is­fac­to­ry than any oth­er of my multitude of com­put­ing devices I have amassed over the years.

Especially in cur­rent times, it is calming to interact with an in­tri­cate­ly mingled system of phys­i­cal machinery and abstract commandments in which I can at least to a certain ex­tent trust, lifting an ever-pre­sent veil of fear cloaking most boxes of bits. A Pinebook comes with soft­ware switches to turn off the built-in camera, microphone and WiFi card as well as Manjaro KDE Plasma run­ning out of the box. Whilst I would prefer not having a camera or microphone built into my device at all and have a real phys­i­cal switch to turn both off, as well as a more minimalist desktop en­vi­ron­ment, I am ca­pa­ble to entrust it my presence infront of it; in contrast to e. g. a proprietary phone lying on a tabletop nearby.

I am unaffiliated with pine64⁠¹ and purchased my Pinebook Pro myself. I wrote the entirety of this blog post including the diary seen below using my Pinebook⁠².

A detailed account of my ex­pe­ri­ence with my Pinebook is given by a diary I wrote over the course of November 2020:

-=-

Pinebook Pro — a diary of usage

2020-10-28. I am now a piner. Whilst I bought a Pinebook a good while back, I had to wait for it shipping from Hong Kong, going through customs and shipping lo­cal­ly. On 2020-10-28, 20:00, how­ev­er, I fi­nal­ly opened my pack­age after a few hours of deliberation.

Having opened the box, a short letter thanked me for my purchase and welcomed me into the world of pine. Further examining the ma­chine, a slick logoless black slate, I was sur­prised by its weight dis­tri­bu­tion. With a metallic top housing the screen, its center of mass is located far back, allowing it to tip back a bit. Overall build quality is comfortingly robust, though.
Pressing the power button located in the upper right corner of the keyboard, my Pinebook started up with­out problems (I mistakenly plugged the power cable into the headphone jack; fortunately nothing caught flames).
I was unsure if the trackpad had a protective layer or if its glossy appearance was part of its de­sign — it was a protective film but I on­ly confidently removed it a few hours later; with­out a flap as the screen had, peeling it off was finnicky.
An initial sudo pacman -Syu took its sweet time — it could not have been updated for over a month whilst being in transit!
When ordering, the pine folks warn about dead pixels. Whilst I do have a small amount of dead pixels a bit left of the upper-right corner of the screen, the overall screen ex­pe­ri­ence is stunningly sharp as well as thoughtfully matte though the viewing angle very narrow.

Imprecisions re­gard­ing the trackpad make KDE Plasma cumbersome to use — especially with the preset small UI size. I see this as a positive: nudgingly making the user aware of the in­her­ent bloatiness of a mouse leads to quick configuration of es­sen­tial key bindings. As I ran my Manjaro first-install script (I frequently wipe my var­i­ous installations, making such a script handy to have), it crashed left and right before letting pacman update (I suspect some mirrors had to have changed). After letting pacman update, on­ly two packages could not be installed: ghc and brave; turns out a niche ar­chi­tec­ture has its drawbacks.
Soft­ware-hard­ware switches ap­pear to work; I accidently disabled WiFi and then tried to find out why I could not connect my network … I ques­tion why the camera and microphone are not disabled by default (Pine+F10, Pine+F12, not Pine+F11; see the doc­u­men­ta­tion on Privacy Switches).
Un­for­tu­nate­ly, the ISO US keyboard I chose is incompatible with stan­dard German QWERTZ: a missing key left of y (or z on QWERTY, i. e. the key twice left of x) on which LESS-THAN, GREATER-THAN and PIPE are positioned on the German layout (as I am writ­ing this at 2020-10-29 01:00, I still do not know how to type these three characters) and an oddly positioned #-key (being swapped with the upper L-shape of the enter key). The overall typing ex­pe­ri­ence is pleasant; a trackpad is mostly bloat anyways.
The lack of GHC and Brave are unfortunate. Overcoming the lack of my default choice for a browser is easy enough: just use Firefox. To still be able to compile Haskell source, I plan to rent a Debian Intel VPS and ssh into it. For now, I simply have to be content with less niche languages.

2020-10-30. Since I do want to use my Pinebook productively, yet not switch to the US keyboard layout, I needed to find a way around the missing key twice left of x. After some searching, I came across Karol Stasiak’s blog post which promisingly showed how to create a custom layout. After a few hours of tinkering and with­out success, I decided to hard-overwrite the stan­dard German keyboard layout, i. e. edited /usr/share/X11/xkb/symbols/de’s 24th line:

    ...
    // 2020-10-30, Jonathan Frech's Pinebook Pro physical keyboard adjustment
    key <AC06>  { [ h, H, less, U00AB ] };
    key <AC07>  { [ j, J, U007C, U2193 ] };
    key <AC08>  { [ k, K, U005E, U2191 ] };
    key <AC09>  { [ l, L, greater, U00BB ] };
    //key <AC07>  { [ j, J, dead_belowdot, dead_abovedot ] };
    ...

I decided to overload the right part of the home row: hjkl. Since < and > have a meaningful directional in­ter­pre­ta­tion, less so | yet definitely ^, I think it is a rea­son­able layout. Adding the abil­i­ty to type «↓↑» will hopefully turn out to be useful (I had to associate a symbol with Alt+Shift+{hjkl}, so I experimentally chose those four).
Some­thing odd I noticed is that the Pinebook’s keyboard labels both keys left and right of the spacebar as “Alt” — they still have dif­fer­ent meanings, though. Accessing @, for example, is on­ly possible with the right “Alt” key, on oth­er keyboards labeled “AltGr”.

I gen­er­ated the en­tire imagery of jblog post 236 on my Pinebook. While run­ning ImageMagick takes a few seconds, developing is perfectly possible and comfortingly free. Switching keyboards frequently causes mistypes, both my above described custom layout as well as the non-L-shaped enter key are minor hinderances.

2020-11-02. One use case I envision for my new Pinebook is to be able to ef­fec­tive­ly read PDFs. Whilst I enjoy zathura, I might for now use Firefox to view online PDFs (one may think about writ­ing a web-zathura adaptor script). Ei­ther way, read­ing PDFs on a Pinebook is a pleasant ex­pe­ri­ence.
On­ly when looking up some­thing on the web, one notices a slight slow-down compared to more powerful ma­chines. It gives one time to think.

2020-11-04. I now acquired a VPS (virtual private server) — hopefully I will manage to significantly stream-line my com­put­ing processes.
Especially when writ­ing an ‘@’ symbol, e. g. to log in ssh root@213.160.73.165, I mistype Ctrl+q in­stead of AltGr+q. Because of this reason, I disabled the window-closing shortcut.

Useful commands to configure a (Debian-based) VPS:

% ssh root@213.160.73.165
# apt update && apt upgrade
# apt install vim curl git make ghc golang zsh htop gcc clang
# reboot
...

Note that ssh-copy-id apparently has some issues on Arch; it did not work for me. So in­stead of

% ssh-copy-id root@213.160.73.165
... password ...

I used

% scp ~/.ssh/id_rsa.pub root@213.160.73.165:
... password ...
% ssh root@213.160.73.165
... password ...
# cat id_rsa.pub >> .ssh/authorized_keys

which I hope to be the correct way to add an SSH key. Then I enabled SSH login server-side:

% ssh root@213.160.73.165
... password ...
# vim /etc/ssh/sshd_config
... set `PubkeyAuthentication yes` ...
# systemctl restart sshd
# logout

I want to not have be root all the time, so

# apt install sudo
# useradd -m j
# passwd j
... set password for new user 'j' ...
# EDITOR=vim visudo
... add `j ALL=(ALL:ALL) ALL` below root to
    give this new user all privileges ...

Since it can be quite confusing to know if one is logged in or local, I intend to mod my zsh prompt to reflect my cur­rent “position”. (Which led to the im­ple­men­ta­tion of jt zsh-prompt --cloud.)

2020-11-05. Removing my Pinebook’s local re­pos­i­to­ries; intending to primarily use my Pinebook as a terminal to my server. Un­for­tu­nate­ly, pacman -Syu did not yet change the ssh-copy-id shell script bug (apparently caused by a mistyped parenthesis).
One must be careful about quickly moving their Pinebook vertically; the heavy metallic screen enclosure might else rip from its hinges.
On full screen brightness, the battery holds charge on­ly for a few hours; leaving my Pinebook asleep overnight (approx. eight hours) drains around half of a fully charged battery.
All in all I am getting more familiar with the keyboard and achieve to setup and taylor my server-Pinebook in­ter­ac­tion more to my liking.

2020-11-06. I began to write a .tex doc­u­ment through SSH. Installing texlive-full is fast on the download (intra-cloud data flow) yet slow on the install (my virtual ma­chine on­ly runs at 1 GHz). Whilst tunneling zathura through SSH via X11 sounds viable on paper, in my ex­pe­ri­ence it was laggy and pixelated. As such, I opted to use sshfs and mount my en­tire server-side home directory on my Pinebook, opening server-com­piled PDFs in zathura client-side. One fea­ture of zathura which is also documented in their man page: R reloads a doc­u­ment (zathura did not reload automatically for me when viewing changing documents on an sshfs mount).

Overall happy with my cur­rent server setup, yet intrinsically paranoid, I set PermitRootLogin prohibit-password in /etc/ssh/sshd_config (fol­low­ed by systemctl restart sshd), try to monitor authentication log files via sudo grep -i 'accepted' /var/log/auth.log and hope for my user password to be adequately strong to fend off any unwanted visitors. It is scary to see the traffic to my server with­out a domain (sudo grep -i 'failed' /var/log/auth.log). I mainly interface with my server through my Pinebook, turning it into a por­ta­ble terminal.
To avoid permanent (external) tampering with my git re­pos­i­to­ries, I intend to regularly make hard local copies of all my work.

2020-11-14. Still a happy piner. Whilst my VPS plan works in principle and after changing my sources to Debian unstable, I was able to use dvisvgm version 2.10 in­stead of 2.6 which has a severe bug rendering it useless to me, ssh does bring with it some sluggishness, especially when using a fullscreen terminal emulator. Fur­ther­more, when staying connected over ssh and letting my Pinebook sleep, the connection gets broken yet I have to wait a few seconds for it to truly give up. Jerky wireless per­for­mance can irritate when working on a doc­u­ment or even the prompt.

Yesterday, I used my Pinebook as a torch since it was the on­ly illuminating ob­ject at hand.

2020-11-21. Oddly enough, Manjaro hang on startup. After forcing a restart, my Pinebook hang even earlier. Doubts about power availability crept up and as the screen turned black, I knew the prob­lem: Having let the Pinbook turned off for a few days, its battery must have fully drained. Even after writ­ing these words, my battery is re­port­ed to be on 0% charge.

2020-11-22. I have started de­vel­op­ment on a new esoteric lan­guage — ifi⁠³ — on my Pinbook, writ­ten entirely in C++.

Want­ing to write a miniKanren logic gate builder⁠⁴, I noticed not to easily be able to install Racket on my ARM ar­chi­tec­ture. Thus, I will develop miniKanren on my cloud server for the moment.

2020-11-26. Once again I came back to a dead Pinbook. Its battery does not ap­pear to be suited for long periods of standby op­er­a­tion.

2020-11-27. Friday afternoon, I decided to properly format and proofread my diary telling my story of the first month as a piner and create a standalone blog post out of it. Naturally, this process is per­form­ed exclusively using my Pinebook.
Whilst the short power cord and in­her­ent network sluggishness do to some part impede the ex­pe­ri­ence, overall I am glad to have found pine64 and their Pinebook Pro, making me see a faint shimmer of light in the midst of an all-encompassing, overwhelmingly depressing com­put­ing infrastructure. I wholeheartedly wish for free hard­ware to es­tab­lish itself as a permanent, strong and es­sen­tial pillar of modern com­put­ing.

May freedom be a guiding principle.


[1]For their web presence, see pine64.org.
[2]Run­ning soft­ware which in­cludes but is not limited to vim, ghc, go, Konsole, KDE Plasma, Firefox, zsh, LaTeX and dvisvgm, at times interfacing with a VPS run­ning Debian GNU/Linux Bullseye/Sid.
[3]An example ifi pro­gram which calculates the sum of two and three: ((lambda . ((add . (add . ((('nil . 'nil) . 'nil) . ((('nil . 'nil) . 'nil) . 'nil)))) . 'failure-main)) . (lambda . ((('nil . y) . y) . (lambda . ((((x . 'nil) . y) . ((add . (x . y)) . 'nil)) . 'failure-add)))))
[4]See 2020-11-22_logic-gate-builder.rkt; a miniKanren pro­gram em­bed­ded in Racket.