Posts I Read This Week #1

Docker vs. Singularity for data processing: UIDs and filesystem access by Itamar Turner-Trauring.

Docker is widely used and deployed, but some of its features make data science harder. You need to pass the same flags over and over to actually make Docker usable: pass the -u flag so Docker doesn't create files as root, but instead as you; and pass -v flags so that no directories are mounted by default. An alternative is Singularity which has more reasonable defaults.

A couple of interesting things: * singularity images are just files/executables. Instead of docker run imagename, you do ./imagename.sif. * singularity mounts $PWD, $HOME, and /tmp automatically * singularity can load Docker images directly


For Better D&D Fights, Use This 1 Simple Trick That the Designers Won’t Tell You by David Hartlage

When you map a location for a likely battle, think of the monsters, and then favor the home team.


Emacs Tramp tricks \ Replacing terminals with emacs by Will Schenk

I used to use Emacs a lot and this post reminded me of one thing I've been missing. tmux + vim doesn't exactly replace Emacs.

This post also had a snippet to examine or execute things inside of Docker, which I've reproduced here.

;; Open files in Docker containers like so: /docker:drunk_bardeen:/etc/passwd
(push
 (cons
  "docker"
  '((tramp-login-program "docker")
    (tramp-login-args (("exec" "-it") ("%h") ("/bin/bash")))
    (tramp-remote-shell "/bin/sh")
    (tramp-remote-shell-args ("-i") ("-c"))))
 tramp-methods)

(defadvice tramp-completion-handle-file-name-all-completions
  (around dotemacs-completion-docker activate)
  "(tramp-completion-handle-file-name-all-completions \"\" \"/docker:\" returns
    a list of active Docker container names, followed by colons."
  (if (equal (ad-get-arg 1) "/docker:")
      (let* ((dockernames-raw (shell-command-to-string "docker ps | awk '$NF != \"NAMES\" { print $NF \":\" }'"))
             (dockernames (cl-remove-if-not
                           #'(lambda (dockerline) (string-match ":$" dockerline))
                           (split-string dockernames-raw "\n"))))
        (setq ad-return-value dockernames))
    ad-do-it))

Equipping a home office for your new remote job by Colin Dean

The things this post covers, in order:

  1. Have good lighting, especially that changes as the day goes on.
  2. Either have a good standing desk, or a good chair with lumbar support. They also recommend a brace to improve posture.
  3. Have good headphones.
  4. Always do video calls. Have a good monitor.
  5. Have a good network connection.
  6. Make use of social coworking spaces.

The most surprising Unix programs by Doug McIlroy

This is a list of interesting or surprising programs in Unix. Of these, I learned about parts(1) from the Writer's WorkBench which labels parts of speech in a sentence. I also learned about typo(1) by Bob Morris. From the Lobsters thread, I found tsort(1) cool.