Skip to content

Instantly share code, notes, and snippets.

@JJGO
Last active January 13, 2019 23:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JJGO/45d9ce8f19dc169dfcab01fe5c93a280 to your computer and use it in GitHub Desktop.
Save JJGO/45d9ce8f19dc169dfcab01fe5c93a280 to your computer and use it in GitHub Desktop.

Under Construction

Things to add to other sections

Course Overview

Virtual Machines

  • Add QEMU+LVM with virt-manager as Linux virtualization option

Exercises

  • Run a fork bomb (explained ) in a VM and check that the hardware isolation is working
  • Install OpenSSH server in VM to ssh in your VM

Dotfiles

To Cover:

  • bashrc/zshrc
  • SSH config
  • Alias, Functions
  • GNU stow

Exercises

  • Write a .ssh/config entry for Athena
  • Run cat .bash_history | sort | uniq -c | sort -rn | head -n 10 (or the equivalent for zsh using .zhistory) to get top 10 most used commands and consider writing sorter aliases for them

Shell and scripting

To Cover:

  • stuff like mv myfile{.txt, .md}, ls *.png
  • File redirect, <(), <{}
  • PATH
  • zsh, fish,
  • QoL stuff: fasd/autojump, fzf, rg, mosh

Exercises

  • Implement an interactive Ctrl+R with fzf and zsh keybindings

Reference

Terminal emulators and multiplexers

Data wrangling

To Cover:

  • grep, sed, find, tee, less, tail, head, rename
  • Regular expressions
  • terminal escape sequences

Exercises:

  • Implement a rudimentary grep using regex & terminal color escape sequences

References:

Editors

IDEs

To cover:

  • Syntax linting
  • Style linting

Exercises:

  • Install a linter (e.g. pyflakes for python) link it to your IDE and test it is working

Version Control

To cover

  • Git Reflog

Exercises

  • Explore git-extras like git ignore

Reference

Backups

To cover:

  • 3,2,1 Rule
  • Github is not enough (i.e. your taxes can't go there)
  • Difference between backups and mirrors (i.e. why gdrive/dropbox can be dangerous)
  • Versioned, Deduplicated, compressed backup options: (borg, tarsnap, rsync.net)
  • Backing up webservices (i.e. spotify playlists)

Exercises

  • Choose a webservice you use often (Spotify, Google Music, &c) and figure out what options for backing up your data are. Often people have already made solutions based on available APIs

Debuggers, logging, profilers and monitoring

Package management

OS customization

To Cover

  • Clipboard Manager (stack/searchable/history)
  • Keyboard remapping / shortcuts
  • Tiling Window Managers

Exercises

  • Look for a searchable clipboard manager for your OS
  • Remap Caps Lock to some other key you use more ofter like ESC, Ctrl or Backspace
  • Make a custom keyboard shorcut to open a new terminal window or new browser window

References

  • reddit.com/r/unixporn

OS automation

To cover:

  • cron/anacron would be quite useful too
  • automator, applescript
  • GUI automation (pyautogui)

Exercises:

  • Implement "when a file is added to the Downloads folder that matches a regex move it to folder X"
  • Use pyautogui to draw a square spiral in Paint/GIMP/&c

References

Web and browsers

To cover:

  • The web console: html, css, js, network tab, cookies, &c
  • Adblockers: Having one to avoid not only ads but also most malicious websites
  • Custom CSS: Stylish
  • Notion of web API, IFTTT
  • Archive.org

Exercises

  • Write Custom CSS to disable StackOverflow sidebar
  • Use web api to fetch current public IP (ipinfo.io)
  • Look some webpage you have visited over the years on archive.org to see archived versions

Security and privacy

To cover:

  • Encrypting files, disks
  • What are SSH Keys
  • Password managers
  • Two factor authentication, paper keys
  • HTTPS
  • VPNs 1

Exercises

  • Encrypt a file using PGP
  • Use veracrypt to create a simple encrypted volume
  • Use ssh-copy-id to access VM without a password
  • Get 2FA for your most data sensitive accounts i.e. GMail, Dropbox, Github, &c

References

Footnotes

  1. A simple comparison chart of VPNs can be found here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment