ASCIIMath creating images

Sunday, October 5, 2014

Using an ARM Chromebook for Scientific (and Academic) Computing

Samsung ARM Chromebook
A couple of months ago, I decided to get myself a Chromebook. The Samsung ARM Chromebook is cheap (to the point of being almost disposable) and it's got an ARM CPU - and for performance at the least possible amount of juice it's hard to beat. I really like the fact that this thing emits no noise that I can detect even in a very quiet room.

But how useful is it, for someone in a standard engineering/academic setting? The answer is that it works well, for me at least - with some special considerations. Especially for the last few weeks, it has been my primary laptop, having been dragged to research cluster meetings and one conference. I will explain the details of a few typical things I do, such as (LaTeX) document editing, intensive numerical computation, etc. Read below the break for details.  
First off, the Chromebook is NOT - and probably will never be - my primary computer.  This is a big part of how I'm doing my work with the Chromebook, that is, it is primarily a remote access device for my desktop at work, a nice 8-core i7 box with 16G of RAM.  (If I do want to work offline, I have an SD card with Arch Linux for ARM, and a Crouton chroot - but that's beyond the scope of this post).

Remote Access

If you're old-school, the only thing you really need is a shell.  For me, mosh is the best thing since sliced bread, and it's available as a Chrome extension. It handles disconnects and network changes without sweat - very important so you can just close the lid and not worry about logging off.  The alternative is ssh (available as a Chrome extension as well, or using the developer console) with GNU Screen or tmux on the other end.  Not nearly as convenient though.  mosh with tmux is where it's at.

If I do need graphics (say for running MATLAB on my desktop), I use VNC via ssh.  I start ssh with a port redirect from localhost to the remote, tightvnc on my desktop and the RealVNC VNC viewer on the Chromebook.  It does suffer from lag, and recently the tightvnc server has been giving me grief. I'm eagerly awaiting Chrome Remote Desktop to become usable on Linux (remoting a session or being a "pure" login session). I'm already using Chrome Remote Desktop to talk to Windows if I have to.

The real killer app is iPython. To be exact, the iPython Notebook server, running on my desktop computer.  With nothing more than the Chrome browser running natively on the Chromebook, I can edit and run Python code (and Matlab code!) on my main box, so I don't need to worry about lugging big datasets around, backups (happen automatically), or my laptop falling under the bus or getting stolen.  Besides, once you get used to the notebook workflow, it's a very efficient way of creating research code.

LaTeX. Still the best way to create scientific documents where it is necessary to discuss math. On the one hand, it is easy enough to use the above-mentioned remote shell methods (again: yay mosh!) to login to the mothership and then use vim (or Emacs, pick your poison) to edit the source text. That works OK, but I'm not that stuck in the 90's that I prefer to work that way - I appreciate the ability to be able to hit "recompile" and see my changes instantly so at home I have TeXShop, and if I'm at my desk I have Texmaker. On the Chromebook? I have started using ShareLaTeX, which basically is Texmaker in the browser. It's been working fine for me, with some issues: I'd like to be able to sync with files on my desktop and it doesn't handle disconnections very well yet.

Cloud Storage and Editing: The University of Oldenburg runs OwnCloud and Gitlab servers. I could actually edit my LaTeX source files via the Gitlab web interface - but then I'd have unverified source in the repo. I prefer sticking with vim.

The Google Apps. Yes, I do use them. GMail and Google calendar extensively, Google Docs quite a bit. This all ties well together with my Android Phone (Galaxy S3, if you care - these things go cheap second hand these days). These things are what the Chromebooks are made for, unsurprisingly they work well - within their limits. I use Google Docs for notes and other things where high-quality typesetting is not needed.

The things that don't work. There are a few things I can't (yet?) do well on the Chromebook. One of these is my work e-mail, sitting on an Exchange server.  The webmail interface sucks. Hard. The University doesn't want me to forward my mail to Gmail (and I actually agree, wanting to keep my work and personal mail separate, also; privacy). There is no good IMAP mail reader as a Chrome extension so for now, I'm using mutt on my desktop computer (and did I mention mush yet???). I'm considering Mailpile, which looks really cool, GMail-like, keeps all the mail on my desktop yet should let me read it from anywhere.

Privacy and security concerns. This is where many people (including myself) have misgivings about the Chromebook. The Chromebook, unless repurposed by loading regular Linux on it, is chained to the Google ecosystem. If you don't want to interact with Google, do not get a Chromebook. That being said, I could actually create a "burner" Google account, and just use it to log into the Chromebook, then let everything just go through my desktop machine. I'm just not that paranoid, and tolerate Google analysing my data - within reason. Besides, this blog is hosted by Blogger (thus, Google) so the very act of reading this, you are using (and being analysed by) the Goog.

Conclusion

I like my Chromebook. But I'm not attached to it, and that's kinda the point. If a better one comes along (and I'm already considering the Tegra based ones as a soonish replacement), there will be absolutely no need to change any of my workflow.
What would be even better would be a "Firefoxbook" - a browser-only laptop that would be - if one chose to work that way - be completely controlled not by Google's servers but your own. It shouldn't be too hard to roll one's own Linux (or *BSD) distro to do exactly that if one can get a cheap laptop with really good open-source supported hardware.  Oh, if I had an infinite supply of round tuits...