Potpourri
-
Keyboard remapping, e.g:
- Remap
Caps LocktoCtrlorEscape. - Remapping
PrtSctoPlay/Pausemusic. - Swapping
Ctrland theMeta(Windows or Command) key. - Map keys to arbitrary commands of your choosing, e.g:
- Open a new terminal or browser window.
- Inserting some specific text, e.g. your long email address or your MIT ID number.
- Sleeping the computer or the displays.
- Software resources:
- macOS - karabiner-elements, skhd or BetterTouchTool
- Linux - xmodmap or Autokey
- Windows - Builtin in Control Panel, AutoHotkey or SharpKeys
- QMK - If your keyboard supports custom firmware you can use QMK to configure the hardware device itself so the remaps works for any machine you use the keyboard with.
- Remap
-
Daemons
- These processes are called daemons and the programs that run as daemons often end with a
dto indicate so. - Systemd can be interacted with the
systemctlcommand in order toenable,disable,start,stop,restartor check thestatusof services - use
cron, a daemon your system already runs to perform scheduled tasks.
- These processes are called daemons and the programs that run as daemons often end with a
-
FUSE
- FUSE (Filesystem in User Space) allows filesystems to be implemented by a user program.
- Examples:
- sshfs - Open locally remote files/folder through an SSH connection.
- rclone - Mount cloud storage services like Dropbox, GDrive, Amazon S3 or Google Cloud Storage and open data locally.
- gocryptfs - Encrypted overlay system. Files are stored encrypted but once the FS is mounted they appear as plaintext in the mountpoint.
- kbfs - Distributed filesystem with end-to-end encryption. You can have private, shared and public folders.
- borgbackup - Mount your deduplicated, compressed and encrypted backups for ease of browsing.
-
Backups
-
Synchronization solutions are not backups.
-
-
APIs
-
Common command-line flags/patterns
- Most tools support some kind of
--helpflag to display brief usage instructions for the tool. - Many tools that can cause irrevocable change support the notion of a “dry run” in which they only print what they would have done, but do not actually perform the change. Similarly, they often have an “interactive” flag that will prompt you for each destructive action.
- You can usually use
--versionor-Vto have the program print its own version (handy for reporting bugs!). - Almost all tools have a
--verboseor-vflag to produce more verbose output. You can usually include the flag multiple times (-vvv) to get more verbose output, which can be handy for debugging. Similarly, many tools have a--quietflag for making it only print something on error. - In many tools,
-in place of a file name means “standard input” or “standard output”, depending on the argument. - Possibly destructive tools are generally not recursive by default, but support a “recursive” flag (often
-r) to make them recurse. - Sometimes, you want to pass something that looks like a flag as a normal argument. For example, imagine you wanted to remove a file called
-r. Or you want to run one program “through” another, likessh machine foo, and you want to pass a flag to the “inner” program (foo). The special argument--makes a program stop processing flags and options (things starting with-) in what follows, letting you pass things that look like flags without them being interpreted as such:rm -- -rorssh machine --for-ssh -- foo --for-foo.
- Most tools support some kind of
-
Window managers
- My option: Magnet.
-
VPNs
- Considerations:Don't use VPN services.
-
Markdown
- Instead of pulling out a heavy tool like Word or LaTeX, you may want to consider using the lightweight markup language Markdown.
-
Hammerspoon (desktop automation on macOS)
- Hammerspoon is a desktop automation framework for macOS.
- Examples:
- Bind hotkeys to move windows to specific locations
- Create a menu bar button that automatically lays out windows in a specific layout
- Mute your speaker when you arrive in lab (by detecting the WiFi network)
- Show you a warning if you’ve accidentally taken your friend’s power supply
-
Booting + Live USBs
- Live USBs are USB flash drives containing an operating system.
- There are tools like UNetbootin to help you create live USBs.
- Live USBs are USB flash drives containing an operating system.
-
Docker, Vagrant, VMs, Cloud, OpenStack
- Vagrant is a tool that lets you describe machine configurations
- Docker is conceptually similar but it uses containers instead.
- Virtual Machines on the cloud:
- Popular services include Amazon AWS, Google Cloud, Microsoft Azure, DigitalOcean.
-
Notebook programming
- Notebook programming environments can be really handy for doing certain types of interactive or exploratory development.
- Jupyter, for Python
- Wolfram Mathematica is another notebook programming environment that’s great for doing math-oriented programming.
-
GitHub
- There are two primary ways in which people contribute to projects on GitHub:
- Creating an issue.
- Contribute code through a pull request.
- There are two primary ways in which people contribute to projects on GitHub: