Linux Productivity Tools (2019) [pdf]

  • I do my development work and run most of my agency (with multiple employees) with Linux. For some of the business things that most people don't assume Linux can do, I use:

    1. Xournal to annotate PDFs (aka sign contracts without printing them and scanning them back).

    2. LibreOffice of course for most document related work

    3. OBS Studio for recording webcam videos along with screen sharing

    4. Audacity for audio editing (heck, I used this even when I was on Mac OS X)

    5. Technically I've tried video editing with OpenShot, but do find myself back at Final Cut Pro X on my now 6 year old Macbook Pro for that for now

    6. pdfsandwich and Tesseract OCR for OCR/turning PDFs into searchable files

    7. Chrome/Firefox are both first class and run all the modern day web application stuff

    8. Tons and tons and tons of command line stuff that Linux is well known for

    9. QEMU/KVM for hosting arbitrary virtual machines with almost native performance

    10. GnuCash for double entry accounting for personal and volunteer society finances. I used GnuCash for a while to run the S Corp accounting when we were on Freshbooks and Harvest, but we've since graduated to QuickBooks Online for better invoicing and CPA office professional services support.

    11. GIMP for photo editing

    12. Inkscape for messing around with vector graphics

    Once you get past locating the tools to do your job. Linux has everything.

  • Its table of contents doesn't do it justice. this is a great deck! super dense and straightforward.

    my tiny tip to contribute:

    for those who could never be bothered to remember the ctrl-commands for traversing words, but are familiar with `vi`-style movements: you can go one step above the suggestion in this deck with `set -o vi`.

  • locate is not mentioned -- two orders of magnitude faster than find for searches from '/' on my laptop, e.g.

      find / -name \*bashrc\*
    
      locate bashrc
    
    Faster because reading from a single binary cache file, updated nightly, rather than opening every directory inode under /. To force an immediate synchronous update of the cache:

      sudo updatedb

  • Nice slides. I missed him covering ripgrep and friends, which is very useful to avoid slower find-grep queries.

    Along with ripgrep, I think GNU Parallel (covered in the slides) and htop (briefly discussed) are great additions to any Unix development environment.

    The rest of the standard utilities have stood the test of time surprisingly well. But top is a bit wonky, xargs has many pitfalls and, as I said, ripgrep is great for speeding up some find-grep workflows.

  • Here's my non-cli list of to me usefuly software on linux (working as freelancer since 2010):

    - Webstorm + Phpstorm: Amazing tools for web development

    - Sublime text for simple text editing

    - Meld for graphical diffs between files and directories. Very useful.

    - Signal client: Using it more and more recently

    - Spotify: That's not productivity though :)

    - Joplin for markdown formatted note taking

    - KeepassCX + FF extension: Works decently for password management. Though there's no solution for FF mobile as far as I know.

    - Reaper for professional audio production (never liked audacity and ardour). There's also Bitwig which is more like Ableton live but quite expensive.

    - Gimp: I use it but I don't like the user experience.

    - Inkscape works pretty well for anything vector based

    - Libreoffice: I tend to use calc regularly

    - Darktable for raw image editing

    - Arduino

    - Figma for digital design (web-based, so not really linux)

    - Nextcloud as file storage and for synching contacts and calendars.

    - Zoom for video conferencing (need to try jitsi again though)

  • One useful thing when managing one's time is to know when a command will complete. I have a habit of using "pv" anywhere I wait for a result so that I know how long it takes:

    http://www.ivarch.com/programs/pv.shtml

    It's basically "cat", but with a progress bar. Also useful for measuring IO speed and volume (e.g. decompression: `pv -c largefile | gzip | pv -c > /dev/null` )

  • This is an awesome deck. I'll be bookmarking this as a great resource to pass along.

    Tangent: although the portability and consistency of PDFs is nice, I'd love a browser extension that gave me a nicer view of slides that were exported as a PDF. I find there's something more satisfying about discrete pagination vs continuous scroll for these types of things.

  • The python utils section missed the very cool json.tool that can pretty print JSON files (and exists on your OS if it includes Python):

    cat /tmp/foo.json | python -m json.tool

    https://docs.python.org/3/library/json.html#module-json.tool

  • Some distros don't install lsb_release by default. It might be better to consult the /etc/os-release file instead.

    https://www.freedesktop.org/software/systemd/man/os-release....

    http://0pointer.de/blog/projects/os-release.html

  • These lists always delight and frustrate me at the same time. Every piece of software seems to have a lot of those useful, little tricks, shortcuts and functionalities but discovering them is always so difficult.

    Biggest problem is that you don't even know they're there. You don't even know to look, what to look for. I seem to always stumble my way ass backwards into them, and then, be somewhat irritated that I didn't know them before.

  • I like to use systemd timers rather than cronjobs nowadays.

  • feedgnuplot [1] is wonderful for quick visualizations of data from the shell. Also great for decoupling visualization from CLI programs.

    [1]: https://github.com/dkogan/feedgnuplot

  • How in the world did I go this long without using the "at" command? (slide 69)

    Thanks for the deck, OP.

  • Wow. Well, I wish I would have known abut GNU parallel before I wrote that massive bash script a few years ago. Thanks for posting this.

  • In native Mac text editors, you can use e.g. SHIFT + ALT + LEFT to select the whole word on the left of the cursor. Is there a way to get a Mac terminal that uses similar shortcuts? For copy/paste also?

    Related, but I found https://micro-editor.github.io/ which tries to use shortcuts you'd expect in native Mac apps.

  • slides 14 and 15 - terminals have emacs shortcuts??!

    EDIT: I am god now

  • The main thing I miss from OS X is Droplr (pain free sharing of annotated screenshots) and Jumpcut (pastebuffer history tool). Can't find anything on Linux for either of those that works nearly as well. I can still go to an old Mac for occasional needs like Final Cut Pro but those are tools I used several/dozen of times every day before.

    I'm on PopOS.

  • Not exactly linux but the Speedcrunch calculator is really good.

  • Another good productivity hack is having a good clipboard manager.

    I highly recommend Green Clip: https://github.com/erebe/greenclip

    You can assign custom shortcut keys to pull it up and it can fuzzy search through your clipboard items.

  • This is great! I might add a slide or two about Makefiles. Probably the topic is too big and out of scope, but inexperienced Unix users may not realize that they are useful for so much more than compiling multi-file C programs.

  • Other useful tools include mosh or EternalTerminal to handle either low bandwidth or spotty network when you need to remote into a server, as well as VNC for when you need a GUI on the server but X-forwarding is too slow.

  • I expected something more of a traditional set of "productivity tools".

    Eg. a tool like "PDF Mod" is a gem I struggle to remember the name of when I set up a new computer — quick and easy way to assemble/extract PDF pages :) It's long unmaintained it seems, though.

    For those expecting the same, this is mostly "GNU terminal tools" (+ python, tmux and a few other tidbits), so applies to pretty much any modern GNU system (including non-Linux systems, and I am pretty sure homebrew on Mac has all of these).

  • Thanks, these look great. Is there a recorded talk for these slides?

  • > cmd #tag to tag a hard to remember command

    Command tagging wasn't really explained in the deck. I had to read this archived web page for an explanation:

    https://web.archive.org/web/20191216131445/https://www.ostec...

  • This is an awesome intro, thanks! Will definitely share.

    I can't recommend fish-shell highly enough for anyone spending significant time in the CLI. It can't completely replace bash et al, but it's not really meant to. Just install it and give it a try and you'll get addicted pretty quickly.

  • The only thing that I miss in linux is a pdf viewer that can show inline animations (like those produced by LaTeX's "animate" package). I am still forced to run adobe's 32 bit pdf viewer because it is the only viewer available in linux that supports this kind of pdf.

  • I guess this is not the place to discuss about how to change all of computing and how it should be done better and that Linux is a distraction?

    https://www.youtube.com/watch?v=rmsIZUuBoQs

  • I absolutely love this sort of thing. I am a sysadmin with something like 30 years experience. I am as passionate about the subject as anyone but I lack some presentation skills and possibly imagination. I'm also old enough to know what I lack!

    Why not give open source stuff a go?

  • If you want to know which cli tools you can expect on every *nix machine, I can recommend this page [1] which gives a nice overview of the POSIX shell standard.

    [1] https://shellhaters.org

  • Some essential stuff lacking here (unless I missed it): pushd, popd, dirs, jobs, and fg.

  • Awesome! Thank you for sharing this. I've been trying to get better with my Linux CLI knowledge, and this will really help.

  • Is the presentation this was delivered to recorded? I'd watch whatever lecture this was from.

  • As a wsl user I miss all this tools.

  • undefined

  • Is there any link to the actual video presentation of this?!

  • my list visual stuff:

    - xournal - pdf editor

    - calibre - epub

    - keybase - slack replacement

    - cherrytree - notes

    - anki - study

    - shutter - screenshots

    - zoiper - voip calls

    - kazam - video snippets (screen recording)

    - remmina

    - vsc

    command line

    grep -nr, locate, ncdu, htop, ipython, vim, ssh, tsp, tail, less, youtube-dl ;-)

  • Great compilation

  • tmux ftw!

  • My poor brain corrected the url to “unisex.org” on first glance.

  • Otoh facilities like Oak Ridge can be expected to be conservative in their tech, otoh sed and awk should be declared as a threat to national security.

  • How much of these is really still relevant with now Python quickly becoming new scripting language across all platforms? I now tend to prefer 3 lines of Python vs 1 line of cryptic unmaintanable Linux-only bash. With new great subprocess module in Python, I feel bash scripting is really unnecessary except in few situations like .bashrc or really quick onliners.

  • I feel that most of the tools mentioned here are quite outdated already and in 2019 alternatives should be recommended.

    find -> fd

    grep -> ripgrep

    wget/curl -> httpie

    awk/sed are just horrible to learn for beginners, would advise to just pick up python instead via xonsh[1] or pyp[2]

    How about we don't teach new users these legacy tools and we can finally progress a little?

    1 - http://xon.sh

    2 - https://github.com/hauntsaninja/pyp